From 3291fb81117695ef5863428a3cb76451805c94ca Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Thu, 29 May 2025 21:13:04 +0200 Subject: [PATCH] Adjusted lsp based keymaps --- nvim/dot-config/nvim/lua/autocmds.lua | 74 +++++++++---------- .../dot-config/nvim/lua/plugins/which-key.lua | 1 + 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/nvim/dot-config/nvim/lua/autocmds.lua b/nvim/dot-config/nvim/lua/autocmds.lua index b70d6dc..2e02da0 100644 --- a/nvim/dot-config/nvim/lua/autocmds.lua +++ b/nvim/dot-config/nvim/lua/autocmds.lua @@ -1,5 +1,3 @@ -local window = require("symbols.window") - -- Highlight on yank vim.api.nvim_create_autocmd("TextYankPost", { callback = function() @@ -27,63 +25,58 @@ vim.api.nvim_create_autocmd({ "InsertEnter", "WinLeave" }, { end, }) +local group = vim.api.nvim_create_augroup("lsp-attach", { clear = true }) -- Setup lsp keybindings vim.api.nvim_create_autocmd("LspAttach", { + group = group, callback = function(event) - -- Symbols - vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Goto definition" }) - vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { desc = "Goto declaration" }) - vim.keymap.set("n", "D", vim.lsp.buf.type_definition, { desc = "Type definition" }) + local map = function(keys, func, desc, mode) + mode = mode or "n" + vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = desc }) + end - if pcall(require, "telescope") then - vim.keymap.set("n", "gr", require("telescope.builtin").lsp_references, { desc = "Goto references" }) - vim.keymap.set( - "n", - "gI", - require("telescope.builtin").lsp_implementations, - { desc = "Goto implementation" } - ) - vim.keymap.set( - "n", - "ds", - require("telescope.builtin").lsp_document_symbols, - { desc = "Document symbols" } - ) - vim.keymap.set( - "n", - "ws", - require("telescope.builtin").lsp_dynamic_workspace_symbols, - { desc = "Workspace symbols" } - ) + -- Symbols + map("grD", vim.lsp.buf.declaration, "Goto declaration") + + local has_telescope, telescope = pcall(require, "telescope.builtin") + if has_telescope then + map("grd", telescope.lsp_definitions, "Goto definition") + + map("grt", telescope.lsp_type_definitions, "Type definition") + + map("grr", telescope.lsp_references, "Goto references") + map("gri", telescope.lsp_implementations, "Goto implementation") + map("gO", telescope.lsp_document_symbols, "Document symbols") + map("gW", telescope.lsp_dynamic_workspace_symbols, "Workspace symbols") end -- Diagnostics - vim.keymap.set("n", "[d", function() + map("[d", function() vim.diagnostic.jump({ count = -1 }) - end, { desc = "Go to previous diagnostic message" }) - vim.keymap.set("n", "]d", function() + end, "Go to previous diagnostic message") + map("]d", function() vim.diagnostic.jump({ count = 1 }) - end, { desc = "Go to next diagnostic message" }) - vim.keymap.set("n", "e", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" }) + end, "Go to next diagnostic message") + map("e", vim.diagnostic.open_float, "Open floating diagnostic message") -- Helpers - vim.keymap.set("n", "rn", function() + vim.keymap.set("n", "grn", function() return ":IncRename " .. vim.fn.expand("") end, { buffer = event.buf, expr = true, desc = "Rename" }) - vim.keymap.set( - "n", - "ca", - vim.lsp.buf.code_action, - { buffer = event.buf, desc = "Code actions", remap = true } - ) + map("gra", vim.lsp.buf.code_action, "Code actions", { "n", "x" }) - -- Documentation - -- vim.keymap.set("n", "", vim.lsp.buf.signature_help, { desc = "Signature Documentation" }) + local client = vim.lsp.get_client_by_id(event.data.client_id) + 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") + end end, }) -- Setup cursor hover symbol highlight vim.api.nvim_create_autocmd("LspAttach", { + group = group, callback = function(event) local client = vim.lsp.get_client_by_id(event.data.client_id) if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then @@ -113,6 +106,7 @@ vim.api.nvim_create_autocmd("LspAttach", { -- Disable lsp based syntax highlighting vim.api.nvim_create_autocmd("LspAttach", { + group = group, callback = function(event) local client = vim.lsp.get_client_by_id(event.data.client_id) if client and client.server_capabilities.semanticTokensProvider then diff --git a/nvim/dot-config/nvim/lua/plugins/which-key.lua b/nvim/dot-config/nvim/lua/plugins/which-key.lua index 35bd3a1..25f031c 100644 --- a/nvim/dot-config/nvim/lua/plugins/which-key.lua +++ b/nvim/dot-config/nvim/lua/plugins/which-key.lua @@ -51,6 +51,7 @@ return { { "d", group = "Document" }, { "g", group = "Git" }, { "s", group = "Search" }, + { "gr", group = "LSP" }, }) end, }