aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nvim
diff options
context:
space:
mode:
Diffstat (limited to 'nvim')
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp.lua18
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua10
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/configs.lua7
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua24
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