diff options
author | TJ DeVries <devries.timothyj@gmail.com> | 2022-12-20 22:12:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-20 22:12:39 -0500 |
commit | 521940693e10eee57f4e67dce960d2229c1441d3 (patch) | |
tree | 9f5d1b7c893bbf1fa2d1314d7b9e4f22045219c8 | |
parent | aa660e64cea945e7ee4b0ede2475e1ac49e1f592 (diff) |
move server config to easy to extend style (#71)
Move servers to new configuration style.
I will probably cover this in a new shorter video, or maybe in combination with something else.
This should hopefully remove getting so many people making issues about LSPs that they don't want to.
I can update documentation if what is happening is not clear.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | README.md | 5 | ||||
-rw-r--r-- | init.lua | 96 |
3 files changed, 48 insertions, 54 deletions
@@ -2,3 +2,4 @@ tags test.sh .luarc.json nvim +plugin/packer_compiled.lua @@ -9,7 +9,7 @@ A starting point for Neovim that is: Kickstart.nvim targets *only* the latest ['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest ['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim. If you are experiencing issues, please make sure you have the latest versions. -This repo is meant to be used as a starting point for a user's own configuration; remove the things you don't use and add what you miss. This configuration serves as the reference configuration for the [lspconfig wiki](https://github.com/neovim/nvim-lspconfig/wiki). +This repo is meant to be used as a starting point for a user's own configuration; remove the things you don't use and add what you miss. Please refrain from leaving comments about enabling / disabling particular languages out of the box. ### Installation @@ -65,5 +65,6 @@ Each PR, especially those which increase the line count, should have a descripti ### FAQ * What should I do if I already have a pre-existing neovim configuration? - * You should back it up, then delete all files associated with it. This includes your existing init.lua and the neovim files in .local which can be deleted with `rm -rf ~/.local/share/nvim/` + * You should back it up, then delete all files associated with it. + * This includes your existing init.lua and the neovim files in `.local` which can be deleted with `rm -rf ~/.local/share/nvim/` @@ -20,6 +20,9 @@ require('packer').startup(function(use) -- Useful status updates for LSP 'j-hui/fidget.nvim', + + -- Additional lua configuration, makes nvim stuff amazing + 'folke/neodev.nvim', }, } @@ -324,71 +327,60 @@ local on_attach = function(_, bufnr) -- Create a command `:Format` local to the LSP buffer vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) - if vim.lsp.buf.format then - vim.lsp.buf.format() - elseif vim.lsp.buf.formatting then - vim.lsp.buf.formatting() - end + vim.lsp.buf.format() end, { desc = 'Format current buffer with LSP' }) end --- Setup mason so it can manage external tooling -require('mason').setup() - -- Enable the following language servers --- Feel free to add/remove any LSPs that you want here. They will automatically be installed -local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver', 'sumneko_lua', 'gopls' } - --- Ensure the servers above are installed -require('mason-lspconfig').setup { - ensure_installed = servers, +-- Feel free to add/remove any LSPs that you want here. They will automatically be installed. +-- +-- Add any additional override configuration in the following tables. They will be passed to +-- the `settings` field of the server config. You must look up that documentation yourself. +local servers = { + -- clangd = {}, + -- gopls = {}, + -- pyright = {}, + -- rust_analyzer = {}, + -- tsserver = {}, + + sumneko_lua = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + }, } --- nvim-cmp supports additional completion capabilities +-- Setup neovim lua configuration +require('neodev').setup() +-- +-- nvim-cmp supports additional completion capabilities, so broadcast that to servers local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) -for _, lsp in ipairs(servers) do - require('lspconfig')[lsp].setup { - on_attach = on_attach, - capabilities = capabilities, - } -end +-- Setup mason so it can manage external tooling +require('mason').setup() --- Turn on lsp status information -require('fidget').setup() +-- Ensure the servers above are installed +local mason_lspconfig = require 'mason-lspconfig' --- Example custom configuration for lua --- --- Make runtime files discoverable to the server -local runtime_path = vim.split(package.path, ';') -table.insert(runtime_path, 'lua/?.lua') -table.insert(runtime_path, 'lua/?/init.lua') - -require('lspconfig').sumneko_lua.setup { - on_attach = on_attach, - capabilities = capabilities, - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT) - version = 'LuaJIT', - -- Setup your lua path - path = runtime_path, - }, - diagnostics = { - globals = { 'vim' }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file('', true), - checkThirdParty = false, - }, - -- Do not send telemetry data containing a randomized but unique identifier - telemetry = { enable = false }, - }, - }, +mason_lspconfig.setup { + ensure_installed = vim.tbl_keys(servers), +} + +mason_lspconfig.setup_handlers { + function(server_name) + require('lspconfig')[server_name].setup { + capabilities = capabilities, + on_attach = on_attach, + settings = servers[server_name], + } + end, } +-- Turn on lsp status information +require('fidget').setup() + -- nvim-cmp setup local cmp = require 'cmp' local luasnip = require 'luasnip' |