diff options
Diffstat (limited to 'nvim/.config')
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp.lua | 18 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua | 10 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/configs.lua | 7 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua | 24 |
4 files changed, 40 insertions, 19 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp.lua b/nvim/.config/nvim/lua/tobyvin/lsp.lua index 1b96855..0f44026 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp.lua @@ -1,12 +1,22 @@ local augroup = vim.api.nvim_create_augroup("lsp", { clear = true }) -for method, handler in pairs(require("tobyvin.lsp.handlers")) do - vim.lsp.handlers[method] = handler -end +vim.api.nvim_create_autocmd("LspAttach", { + group = augroup, + desc = "setup lsp handlers", + callback = function() + for method, handler in pairs(require("tobyvin.lsp.handlers")) do + if type(handler) == "table" then + handler = vim.lsp.with(vim.lsp.handlers[method], handler) --[[@as table]] + end + vim.lsp.handlers[method] = handler --[[@as function]] + end + return true + end, +}) vim.api.nvim_create_autocmd("LspAttach", { group = augroup, - desc = "setup lsp", + desc = "setup lsp capabilities", callback = function(args) local client = vim.lsp.get_client_by_id(args.data.client_id) if not client then diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua b/nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua index 0be149a..035fb69 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua @@ -19,8 +19,14 @@ local M = { desc = "signature help", }) end, + [ms.textDocument_documentSymbol] = function(bufnr) + vim.keymap.set("n", "gO", vim.lsp.buf.document_symbol, { + buffer = bufnr, + desc = "definition", + }) + end, [ms.textDocument_declaration] = function(bufnr) - vim.keymap.set("n", "gd", vim.lsp.buf.declaration, { + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = bufnr, desc = "declaration", }) @@ -57,7 +63,7 @@ local M = { }) end, [ms.textDocument_codeAction] = function(bufnr) - vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action, { + vim.keymap.set({ "n", "v" }, "<leader>la", vim.lsp.buf.code_action, { buffer = bufnr, desc = "code action", }) diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua b/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua index 3ee378a..9174117 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua @@ -14,7 +14,12 @@ local M = { }, -- biome = {}, clangd = {}, - cssls = {}, + cssls = { + handlers = { + -- TODO: Find out why html ls is missing diagnostic handler without this. + [ms.textDocument_diagnostic] = vim.lsp.diagnostic.on_diagnostic, + }, + }, cssmodules_ls = {}, dockerls = {}, gopls = { diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua index d119f46..fe7620b 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua @@ -6,24 +6,24 @@ local on_list = function(what) end local M = { - [ms.textDocument_hover] = vim.lsp.with(vim.lsp.handlers[ms.textDocument_hover], { + [ms.textDocument_hover] = { border = "single", - }), - [ms.textDocument_signatureHelp] = vim.lsp.with(vim.lsp.handlers[ms.textDocument_signatureHelp], { + }, + [ms.textDocument_signatureHelp] = { border = "single", - }), - [ms.textDocument_definition] = vim.lsp.with(vim.lsp.handlers[ms.textDocument_definition], { + }, + [ms.textDocument_definition] = { on_list = on_list, - }), - [ms.textDocument_references] = vim.lsp.with(vim.lsp.handlers[ms.textDocument_references], { + }, + [ms.textDocument_references] = { on_list = on_list, - }), - [ms.textDocument_typeDefinition] = vim.lsp.with(vim.lsp.handlers[ms.textDocument_typeDefinition], { + }, + [ms.textDocument_typeDefinition] = { on_list = on_list, - }), - [ms.textDocument_implementation] = vim.lsp.with(vim.lsp.handlers[ms.textDocument_implementation], { + }, + [ms.textDocument_implementation] = { on_list = on_list, - }), + }, } return M |