move server config to easy to extend style ()

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.
master
TJ DeVries committed by GitHub
parent aa660e64ce
commit 521940693e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

1
.gitignore vendored

@ -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/`

@ -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' } --
-- Add any additional override configuration in the following tables. They will be passed to
-- Ensure the servers above are installed -- the `settings` field of the server config. You must look up that documentation yourself.
require('mason-lspconfig').setup { local servers = {
ensure_installed = 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() local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
for _, lsp in ipairs(servers) do -- Setup mason so it can manage external tooling
require('lspconfig')[lsp].setup { require('mason').setup()
on_attach = on_attach,
capabilities = capabilities,
}
end
-- Turn on lsp status information -- Ensure the servers above are installed
require('fidget').setup() local mason_lspconfig = require 'mason-lspconfig'
-- Example custom configuration for lua mason_lspconfig.setup {
-- ensure_installed = vim.tbl_keys(servers),
-- Make runtime files discoverable to the server }
local runtime_path = vim.split(package.path, ';')
table.insert(runtime_path, 'lua/?.lua') mason_lspconfig.setup_handlers {
table.insert(runtime_path, 'lua/?/init.lua') function(server_name)
require('lspconfig')[server_name].setup {
require('lspconfig').sumneko_lua.setup { capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
capabilities = capabilities, settings = servers[server_name],
settings = { }
Lua = { end,
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 },
},
},
} }
-- 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…
Cancel
Save