diff --git a/nvim/.config/nvim/lua/lsp.lua b/nvim/.config/nvim/lua/lsp.lua index ce73104..6171317 100644 --- a/nvim/.config/nvim/lua/lsp.lua +++ b/nvim/.config/nvim/lua/lsp.lua @@ -199,58 +199,49 @@ local rust_tool_opts = { }, } -nvim_lsp.clangd.setup { - on_init = on_init, - on_attach = on_attach, - capabilities = capabilities, - default_config = { - cmd = { "clangd", "--background-index", "--pch-storage=memory", "--clang-tidy", "--suggest-missing-includes", "--header-insertion=never" }, - filetypes = { 'c', 'cpp' }, - root_dir = function(fname) - -- We specify build/compile_commands.json as that is where the compile_commands.json - -- gets generated automatically for meson projects. - local root_pattern = util.root_pattern('build/compile_commands.json', 'compile_commands.json', 'compile_flags.txt', '.git') - local filename = util.path.is_absolute(fname) and fname or util.path.join(vim.loop.cwd(), fname) - return root_pattern(filename) or util.path.dirname(filename) - end, - } -} +require('rust-tools').setup(rust_tool_opts) -nvim_lsp.hls.setup { - on_init = on_init, - on_attach = on_attach, - capabilities = capabilities -} - -nvim_lsp.jedi_language_server.setup { - on_init = on_init, - on_attach = on_attach, - capabilities = capabilities, - init_options = { - completion = { - resolveEagerly = true, - }, - jediSettings = { - caseInsensitiveCompletion = false, - }, - workspace = { - symbols = { - maxSymbols = 50 +local servers = { + clangd = { + default_config = { + cmd = { "clangd", "--background-index", "--pch-storage=memory", "--clang-tidy", "--suggest-missing-includes", "--header-insertion=never" }, + filetypes = { 'c', 'cpp' }, + root_dir = function(fname) + -- We specify build/compile_commands.json as that is where the compile_commands.json + -- gets generated automatically for meson projects. + local root_pattern = util.root_pattern('build/compile_commands.json', 'compile_commands.json', 'compile_flags.txt', '.git') + local filename = util.path.is_absolute(fname) and fname or util.path.join(vim.loop.cwd(), fname) + return root_pattern(filename) or util.path.dirname(filename) + end, + } + }, + eslint = {}, + hls = {}, + jedi_language_server = { + init_options = { + completion = { + resolveEagerly = true, + }, + jediSettings = { + caseInsensitiveCompletion = false, + }, + workspace = { + symbols = { + maxSymbols = 50 + }, }, }, }, + tsserver = {}, } -require('rust-tools').setup(rust_tool_opts) - -nvim_lsp.tsserver.setup { - on_init = on_init, - on_attach = on_attach, - capabilities = capabilities, -} - -nvim_lsp.eslint.setup { - on_init = on_init, - on_attach = on_attach, - capabilities = capabilities -} +for client, config in pairs(servers) do + config.on_init = on_init + config.on_attach = on_attach + config.capabilities = vim.tbl_deep_extend( + 'keep', + config.capabilities or {}, + capabilities + ) + nvim_lsp[client].setup(config) +end