aboutsummaryrefslogtreecommitdiffstats
path: root/lua/simenandre/plugins/lsp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/simenandre/plugins/lsp.lua')
-rw-r--r--lua/simenandre/plugins/lsp.lua46
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")