From 83cd13c60ba2b8de7b5a50affa0e110c2a608cd6 Mon Sep 17 00:00:00 2001 From: "Simen A. W. Olsen" Date: Sat, 21 Mar 2026 13:45:43 +0100 Subject: refactor: modernize plugins and reorganize LSP configuration --- lua/simenandre/plugins/lsp.lua | 46 +++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 14 deletions(-) (limited to 'lua/simenandre/plugins/lsp.lua') 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("D", vim.lsp.buf.type_definition, "Type Definition") - map("ds", require("telescope.builtin").lsp_document_symbols, "Document Symbols") - map("ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "Workspace Symbols") - map("rn", vim.lsp.buf.rename, "Rename") - map("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("th", function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf })) end, "Toggle Inlay Hints") -- cgit v1.3.1