diff options
| author | Simen A. W. Olsen <hello@simenandre.no> | 2026-03-21 13:45:43 +0100 |
|---|---|---|
| committer | Simen A. W. Olsen <hello@simenandre.no> | 2026-03-21 13:45:43 +0100 |
| commit | 83cd13c60ba2b8de7b5a50affa0e110c2a608cd6 (patch) | |
| tree | 017261999153c8621d17c4bcefaa894a34084f22 /lua/simenandre/plugins/lsp.lua | |
| parent | dfb342da4ebee21f29fa0713be5e61123a0cf36f (diff) | |
| download | config.nvim-83cd13c60ba2b8de7b5a50affa0e110c2a608cd6.tar.gz config.nvim-83cd13c60ba2b8de7b5a50affa0e110c2a608cd6.zip | |
refactor: modernize plugins and reorganize LSP configuration
Diffstat (limited to 'lua/simenandre/plugins/lsp.lua')
| -rw-r--r-- | lua/simenandre/plugins/lsp.lua | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/lua/simenandre/plugins/lsp.lua b/lua/simenandre/plugins/lsp.lua index 1f87bb6..4161489 100644 --- a/lua/simenandre/plugins/lsp.lua +++ b/lua/simenandre/plugins/lsp.lua @@ -11,14 +11,14 @@ return { }, { -- Mason for installing LSP servers and tools - "williamboman/mason.nvim", + "mason-org/mason.nvim", config = function() require("mason").setup() end, }, { "WhoIsSethDaniel/mason-tool-installer.nvim", - dependencies = { "williamboman/mason.nvim" }, + dependencies = { "mason-org/mason.nvim" }, opts = { ensure_installed = { "gopls", @@ -35,7 +35,7 @@ return { "neovim/nvim-lspconfig", event = { "BufReadPre", "BufNewFile" }, dependencies = { - "williamboman/mason.nvim", + "mason-org/mason.nvim", "WhoIsSethDaniel/mason-tool-installer.nvim", "saghen/blink.cmp", }, @@ -54,6 +54,24 @@ return { "lua_ls", }) + vim.diagnostic.config({ + severity_sort = true, + float = { border = "rounded", source = "if_many" }, + underline = { severity = vim.diagnostic.severity.ERROR }, + signs = vim.g.have_nerd_font and { + text = { + [vim.diagnostic.severity.ERROR] = " ", + [vim.diagnostic.severity.WARN] = " ", + [vim.diagnostic.severity.INFO] = " ", + [vim.diagnostic.severity.HINT] = " ", + }, + } or {}, + virtual_text = { + source = "if_many", + spacing = 2, + }, + }) + vim.api.nvim_create_autocmd("LspAttach", { group = vim.api.nvim_create_augroup("lsp-attach", { clear = true }), callback = function(event) @@ -62,20 +80,20 @@ return { vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) end - map("gd", vim.lsp.buf.definition, "Goto Definition") - map("gr", vim.lsp.buf.references, "Goto References") - map("gI", vim.lsp.buf.implementation, "Goto Implementation") - map("gD", vim.lsp.buf.declaration, "Goto Declaration") - map("<leader>D", vim.lsp.buf.type_definition, "Type Definition") - map("<leader>ds", require("telescope.builtin").lsp_document_symbols, "Document Symbols") - map("<leader>ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "Workspace Symbols") - map("<leader>rn", vim.lsp.buf.rename, "Rename") - map("<leader>ca", vim.lsp.buf.code_action, "Code Action", { "n", "x" }) + map("grn", vim.lsp.buf.rename, "Rename") + map("gra", vim.lsp.buf.code_action, "Code Action", { "n", "x" }) + map("grr", require("telescope.builtin").lsp_references, "Goto References") + map("gri", require("telescope.builtin").lsp_implementations, "Goto Implementation") + map("grd", require("telescope.builtin").lsp_definitions, "Goto Definition") + map("grD", vim.lsp.buf.declaration, "Goto Declaration") + map("grt", require("telescope.builtin").lsp_type_definitions, "Goto Type Definition") + map("gO", require("telescope.builtin").lsp_document_symbols, "Document Symbols") + map("gW", require("telescope.builtin").lsp_dynamic_workspace_symbols, "Workspace Symbols") local client = vim.lsp.get_client_by_id(event.data.client_id) -- Highlight references on cursor hold - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then + if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then local highlight_augroup = vim.api.nvim_create_augroup("lsp-highlight", { clear = false }) vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { buffer = event.buf, @@ -97,7 +115,7 @@ return { end -- Toggle inlay hints - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then + if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then map("<leader>th", function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf })) end, "Toggle Inlay Hints") |
