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 | ||||
| .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/` | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										98
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										98
									
								
								init.lua
								
								
								
								
							|  | @ -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, | ||||
| } | ||||
| 
 | ||||
| -- 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 | ||||
| --  Feel free to add/remove any LSPs that you want here. They will automatically be installed. | ||||
| -- | ||||
| -- 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') | ||||
| --  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 = {}, | ||||
| 
 | ||||
| require('lspconfig').sumneko_lua.setup { | ||||
|   on_attach = on_attach, | ||||
|   capabilities = capabilities, | ||||
|   settings = { | ||||
|   sumneko_lua = { | ||||
|     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 | ||||
|       workspace = { checkThirdParty = 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 | ||||
| local cmp = require 'cmp' | ||||
| local luasnip = require 'luasnip' | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 TJ DeVries
						TJ DeVries