Don't repeat yourself in custom lspconfigs
This commit is contained in:
parent
6affd78df7
commit
a365bcb6b5
@ -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,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user