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