diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua index f57bd8a..e1bb749 100644 --- a/after/plugin/lsp.lua +++ b/after/plugin/lsp.lua @@ -2,11 +2,17 @@ require("lspkind").init({ mode = "symbol_text", }) -local capabilities = require("cmp_nvim_lsp").default_capabilities() +local lsp_capabilities = vim.tbl_deep_extend( + "force", + require("cmp_nvim_lsp").default_capabilities(), + vim.lsp.protocol.make_client_capabilities(), + { workspace = { didChangeConfiguration = { dynamicRegistration = true } } } +) + local lspconfig = require("lspconfig") lspconfig.lua_ls.setup({ - capabilities = capabilities, + capabilities = lsp_capabilities, on_init = function(client) local path = client.workspace_folders[1].name if not vim.loop.fs_stat(path .. "/.luarc.json") and not vim.loop.fs_stat(path .. "/.luarc.jsonc") then @@ -30,5 +36,25 @@ lspconfig.lua_ls.setup({ }) lspconfig.nixd.setup({ - capabilities = capabilities, + capabilities = lsp_capabilities, +}) + +lspconfig.gopls.setup({ + capabilities = lsp_capabilities, +}) + +vim.keymap.set("n", "", vim.diagnostic.goto_prev) +vim.keymap.set("n", "", vim.diagnostic.goto_next) + +vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc" + + local opts = { buffer = ev.vuf } + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) + vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) + vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) + vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) + end, })