diff --git a/nvim/.config/nvim/lua/lsp-utils.lua b/nvim/.config/nvim/lua/lsp-utils.lua index 47dc9be..996eafd 100644 --- a/nvim/.config/nvim/lua/lsp-utils.lua +++ b/nvim/.config/nvim/lua/lsp-utils.lua @@ -70,12 +70,15 @@ local get_root_directory = function(root_files) return vim.fs.dirname(path[1]) end +local default_capabilities = vim.lsp.protocol.make_client_capabilities() + function M.bashls_config() local root_directory = vim.fn.getcwd() return { name = "bashls", cmd = { 'bash-language-server', 'start' }, + capabilities = default_capabilities, root_dir = root_directory, filetypes = { 'sh' }, single_file_support = true, @@ -90,14 +93,6 @@ function M.bashls_config() end function M.clangd_config() - local default_capabilities = { - textDocument = { - completion = { - editsNearCursor = true, - }, - }, - offsetEncoding = { 'utf-8', 'utf-16' }, - } local root_files = { '.clangd', '.clang-tidy', '.clang-format', 'compile_commands.json', 'compile_flags.txt' } local clangd_cmd = { "clangd", "--background-index", "--pch-storage=memory", "--clang-tidy", "--header-insertion=never" } local root_directory = get_root_directory(root_files) @@ -105,10 +100,10 @@ function M.clangd_config() return { name = "clangd", cmd = clangd_cmd, + capabilities = default_capabilities, root_dir = root_directory, filetypes = { 'c', 'cpp' }, single_file_support = true, - capabilities = default_capabilities, } end @@ -120,6 +115,7 @@ function M.deno_config() return { cmd = { 'deno', 'lsp' }, + capabilities = default_capabilities, filetypes = file_types, root_dir = root_directory, init_options = { @@ -160,10 +156,11 @@ function M.gopls_config() local root_directory = get_root_directory(root_files) return { - name = "gopls", - cmd = { "gopls" }, - root_dir = root_directory, - filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' }, + name = "gopls", + cmd = { "gopls" }, + capabilities = default_capabilities, + root_dir = root_directory, + filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' }, } end @@ -174,6 +171,7 @@ function M.hls_config() return { name = "hls", cmd = { 'haskell-language-server-wrapper', '--lsp' }, + capabilities = default_capabilities, root_dir = root_directory, filetypes = { 'haskell' }, single_file_support = true, @@ -186,10 +184,11 @@ function M.jedi_config() local root_directory = get_root_directory(root_files) return { - name = "jedi-language-server", - cmd = { "jedi-language-server" }, - filetypes = { 'python' }, - root_dir = root_directory, + name = "jedi-language-server", + cmd = { "jedi-language-server" }, + capabilities = default_capabilities, + filetypes = { 'python' }, + root_dir = root_directory, init_options = { completion = { resolveEagerly = true, @@ -213,6 +212,7 @@ function M.pursls_config() return { name = "purescriptls", cmd = { 'purescript-language-server', '--stdio' }, + capabilities = default_capabilities, root_dir = root_directory, filetypes = { 'purescript' }, single_file_support = false, @@ -229,9 +229,10 @@ function M.ra_config() local root_directory = get_root_directory(root_files) return { - name = "rust-analyzer", - cmd = { "rust-analyzer" }, - root_dir = root_directory, + name = "rust-analyzer", + cmd = { "rust-analyzer" }, + capabilities = default_capabilities, + root_dir = root_directory, settings = { ["rust-analyzer"] = { procMacro = { @@ -252,6 +253,7 @@ function M.scheme_config() return { name = "racket-langserver", cmd = { 'racket', '--lib', 'racket-langserver' }, + capabilities = default_capabilities, filetypes = { 'scheme', 'racket' }, root_dir = root_directory, single_file_support = true, @@ -264,10 +266,11 @@ function M.tsserver_config() local root_directory = get_root_directory(root_files) return { - name = "tsserver", - cmd = { "typescript-language-server", "--stdio" }, - root_dir = root_directory, - filetypes = file_types, + name = "tsserver", + cmd = { "typescript-language-server", "--stdio" }, + capabilities = default_capabilities, + root_dir = root_directory, + filetypes = file_types, settings = { typescript = { inlayHints = {