Don't repeat yourself in custom lspconfigs

This commit is contained in:
Kenneth Benzie 2024-05-25 13:14:05 +01:00
parent 6affd78df7
commit a365bcb6b5

View File

@ -72,57 +72,48 @@ return {
}, },
config = function() config = function()
local capabilities = vim.lsp.protocol.make_client_capabilities() local lspconfig_default_opts = {
-- Broadcast full client capabilities to language servers
capabilities = vim.tbl_deep_extend( capabilities = vim.tbl_deep_extend(
'force', capabilities, require('cmp_nvim_lsp').default_capabilities()) 'force', vim.lsp.protocol.make_client_capabilities(),
require('cmp_nvim_lsp').default_capabilities()),
}
require('mason').setup() local lspconfig_custom_opts = {
require('mason-lspconfig').setup({ clangd = {
automatic_installation = false, cmd = { 'clangd', '--completion-style=detailed' },
ensure_installed = ensure_installed, },
handlers = { lua_ls = {
-- Default handler, sets up everything unless a custom language server
-- setup handler is defined below
function(server_name)
require('lspconfig')[server_name].setup({
capabilities = capabilities,
})
end,
['clangd'] = function()
require('lspconfig').clangd.setup({
capabilities = capabilities,
cmd = { 'clangd', '--completion-style=detailed' }
})
end,
['lua_ls'] = function()
require('neodev').setup()
require('lspconfig').lua_ls.setup({
capabilities = capabilities,
settings = { settings = {
Lua = { Lua = {
diagnostics = { diagnostics = {
disable = { 'missing-fields', }, disable = { 'missing-fields', },
globals = { 'vim', }, globals = { 'vim', },
} },
} },
} },
}) },
end,
['pyright'] = function() pyright = {
require('lspconfig').pyright.setup({
capabilities = capabilities,
settings = { settings = {
pyright = { pyright = {
disableOrganizeImports = true, -- Use ruff import sorter instead disableOrganizeImports = true,
},
},
}, },
} }
})
end,
require('mason').setup()
require('mason-lspconfig').setup({
automatic_installation = false,
ensure_installed = ensure_installed,
handlers = {
function(server_name)
local opts = vim.tbl_deep_extend("force",
lspconfig_default_opts, lspconfig_custom_opts[server_name] or {})
require('lspconfig')[server_name].setup(opts)
end,
}, },
}) })