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.
This commit is contained in:
		
							parent
							
								
									aa660e64ce
								
							
						
					
					
						commit
						521940693e
					
				|  | @ -2,3 +2,4 @@ tags | ||||||
| test.sh | test.sh | ||||||
| .luarc.json | .luarc.json | ||||||
| nvim | 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. | 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 | ### Installation | ||||||
| 
 | 
 | ||||||
|  | @ -65,5 +65,6 @@ Each PR, especially those which increase the line count, should have a descripti | ||||||
| ### FAQ | ### FAQ | ||||||
| 
 | 
 | ||||||
|  * What should I do if I already have a pre-existing neovim configuration? |  * 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/` | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										96
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										96
									
								
								init.lua
								
								
								
								
							|  | @ -20,6 +20,9 @@ require('packer').startup(function(use) | ||||||
| 
 | 
 | ||||||
|       -- Useful status updates for LSP |       -- Useful status updates for LSP | ||||||
|       'j-hui/fidget.nvim', |       '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 |   -- Create a command `:Format` local to the LSP buffer | ||||||
|   vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) |   vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) | ||||||
|     if vim.lsp.buf.format then |  | ||||||
|     vim.lsp.buf.format() |     vim.lsp.buf.format() | ||||||
|     elseif vim.lsp.buf.formatting then |  | ||||||
|       vim.lsp.buf.formatting() |  | ||||||
|     end |  | ||||||
|   end, { desc = 'Format current buffer with LSP' }) |   end, { desc = 'Format current buffer with LSP' }) | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| -- Setup mason so it can manage external tooling |  | ||||||
| require('mason').setup() |  | ||||||
| 
 |  | ||||||
| -- Enable the following language servers | -- Enable the following language servers | ||||||
| -- Feel free to add/remove any LSPs that you want here. They will automatically be installed | --  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, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| -- nvim-cmp supports additional completion capabilities |  | ||||||
| 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 |  | ||||||
| 
 |  | ||||||
| -- Turn on lsp status information |  | ||||||
| require('fidget').setup() |  | ||||||
| 
 |  | ||||||
| -- Example custom configuration for lua |  | ||||||
| -- | -- | ||||||
| -- Make runtime files discoverable to the server | --  Add any additional override configuration in the following tables. They will be passed to | ||||||
| local runtime_path = vim.split(package.path, ';') | --  the `settings` field of the server config. You must look up that documentation yourself. | ||||||
| table.insert(runtime_path, 'lua/?.lua') | local servers = { | ||||||
| table.insert(runtime_path, 'lua/?/init.lua') |   -- clangd = {}, | ||||||
|  |   -- gopls = {}, | ||||||
|  |   -- pyright = {}, | ||||||
|  |   -- rust_analyzer = {}, | ||||||
|  |   -- tsserver = {}, | ||||||
| 
 | 
 | ||||||
| require('lspconfig').sumneko_lua.setup { |   sumneko_lua = { | ||||||
|   on_attach = on_attach, |  | ||||||
|   capabilities = capabilities, |  | ||||||
|   settings = { |  | ||||||
|     Lua = { |     Lua = { | ||||||
|       runtime = { |       workspace = { checkThirdParty = false }, | ||||||
|         -- 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 }, |       telemetry = { enable = false }, | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | -- 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) | ||||||
|  | 
 | ||||||
|  | -- Setup mason so it can manage external tooling | ||||||
|  | require('mason').setup() | ||||||
|  | 
 | ||||||
|  | -- Ensure the servers above are installed | ||||||
|  | local mason_lspconfig = require 'mason-lspconfig' | ||||||
|  | 
 | ||||||
|  | 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 | -- nvim-cmp setup | ||||||
| local cmp = require 'cmp' | local cmp = require 'cmp' | ||||||
| local luasnip = require 'luasnip' | local luasnip = require 'luasnip' | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 TJ DeVries
						TJ DeVries