diff options
| author | 2026-04-17 10:53:11 +0100 | |
|---|---|---|
| committer | 2026-04-17 10:53:11 +0100 | |
| commit | 3e3d394d014dded76e3aac9a615f5efa93dd1c59 (patch) | |
| tree | 785c6480bb96b6fe1c2e5f6018e15eda2f5407c7 | |
| parent | fcab70e06325f123030a9442aef001707a603950 (diff) | |
| download | dotfiles-3e3d394d014dded76e3aac9a615f5efa93dd1c59.tar.gz dotfiles-3e3d394d014dded76e3aac9a615f5efa93dd1c59.tar.bz2 dotfiles-3e3d394d014dded76e3aac9a615f5efa93dd1c59.zip | |
refactor: consolidate LspAttach handlers into single callback
Two separate LspAttach handlers existed in autocmds.lua and search.lua,
fragmenting LSP behavior across files. Merge fzf-lua LSP navigation
mappings into the main LspAttach handler in autocmds.lua using lazy
require('fzf-lua'). This makes all LSP-on-attach behavior visible in one
place.
| -rw-r--r-- | home/.config/nvim/after/plugin/autocmds.lua | 41 | ||||
| -rw-r--r-- | home/.config/nvim/lua/plugins/search.lua | 64 |
2 files changed, 40 insertions, 65 deletions
diff --git a/home/.config/nvim/after/plugin/autocmds.lua b/home/.config/nvim/after/plugin/autocmds.lua index 1db318d..c97389f 100644 --- a/home/.config/nvim/after/plugin/autocmds.lua +++ b/home/.config/nvim/after/plugin/autocmds.lua @@ -128,7 +128,7 @@ autocmd("LspAttach", { local bufnr = event.buf local function map(mode, l, r, desc) - vim.keymap.set(mode, l, r, { buffer = bufnr, desc = desc }) + vim.keymap.set(mode, l, r, { buffer = bufnr, desc = "LSP: " .. desc }) end local function nmap(l, r, desc) map("n", l, r, desc) @@ -136,6 +136,45 @@ autocmd("LspAttach", { nmap("<c-]>", vim.lsp.buf.definition, "Goto definition") nmap("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") + -- fzf-lua LSP navigation + local fzf = require("fzf-lua") + nmap("gd", fzf.lsp_definitions, "[G]oto [D]efinition") + nmap("gvd", function() + fzf.lsp_definitions({ jump1_action = fzf.actions.file_vsplit }) + end, "[G]oto in a [V]ertical split to [D]efinition") + nmap("gxd", function() + fzf.lsp_definitions({ jump1_action = fzf.actions.file_split }) + end, "[G]oto in a [X]horizontal split to [D]efinition") + nmap("gtd", function() + fzf.lsp_definitions({ jump1_action = fzf.actions.file_tabedit }) + end, "[G]oto in a [T]ab to [D]efinition") + nmap("<leader>D", fzf.lsp_typedefs, "Type [D]efinition") + nmap("<leader>vD", function() + fzf.lsp_typedefs({ jump1_action = fzf.actions.file_vsplit }) + end, "Open in a [V]ertical split Type [D]efinition") + nmap("<leader>xD", function() + fzf.lsp_typedefs({ jump1_action = fzf.actions.file_split }) + end, "Open in a [X]horizontal split Type [D]efinition") + nmap("<leader>tD", function() + fzf.lsp_typedefs({ jump1_action = fzf.actions.file_tabedit }) + end, "Open in a [T]ab Type [D]efinition") + nmap("gri", fzf.lsp_implementations, "[G]oto [I]mplementation") + nmap("grvi", function() + fzf.lsp_implementations({ jump1_action = fzf.actions.file_vsplit }) + end, "[G]oto in a [V]ertical split to [I]mplementation") + nmap("grxi", function() + fzf.lsp_implementations({ jump1_action = fzf.actions.file_split }) + end, "[G]oto in a [X]horizontal split to [I]mplementation") + nmap("grti", function() + fzf.lsp_implementations({ jump1_action = fzf.actions.file_tabedit }) + end, "[G]oto in a [T]ab to [I]mplementation") + nmap("grr", fzf.lsp_references, "[G]oto [R]eferences") + nmap("<leader>ic", fzf.lsp_incoming_calls, "[I]ncoming [C]alls") + nmap("<leader>oc", fzf.lsp_outgoing_calls, "[O]utgoing [C]alls") + nmap("gO", fzf.lsp_document_symbols, "d[O]ocument symbols") + nmap("<leader>ws", fzf.lsp_live_workspace_symbols, "[W]orkspace [S]ymbols") + nmap("<leader>wd", fzf.diagnostics_workspace, "[W]orkspace [D]iagnostics") + -- Highlight references under cursor local client = vim.lsp.get_client_by_id(event.data.client_id) if diff --git a/home/.config/nvim/lua/plugins/search.lua b/home/.config/nvim/lua/plugins/search.lua index 40d8395..814cfef 100644 --- a/home/.config/nvim/lua/plugins/search.lua +++ b/home/.config/nvim/lua/plugins/search.lua @@ -113,70 +113,6 @@ return { }, }, }) - vim.api.nvim_create_autocmd("LspAttach", { - callback = function(event) - local bnmap = function(keys, func, desc) - vim.keymap.set( - "n", - keys, - func, - { buffer = event.buf, desc = "LSP: " .. desc } - ) - end - bnmap("gd", fzflua.lsp_definitions, "[G]oto [D]efinition") - bnmap("gvd", function() - fzflua.lsp_definitions({ jump1_action = fzflua.actions.file_vsplit }) - end, "[G]oto in a [V]ertical split to [D]efinition") - bnmap("gxd", function() - fzflua.lsp_definitions({ jump1_action = fzflua.actions.file_split }) - end, "[G]oto in a [X]horizontal split to [D]efinition") - bnmap("gtd", function() - fzflua.lsp_definitions({ - jump1_action = fzflua.actions.file_tabedit, - }) - end, "[G]oto in a [T]ab to [D]efinition") - bnmap("<leader>D", fzflua.lsp_typedefs, "Type [D]efinition") - bnmap("<leader>vD", function() - fzflua.lsp_typedefs({ jump1_action = fzflua.actions.file_vsplit }) - end, "Open in a [V]ertical split Type [D]efinition") - bnmap("<leader>xD", function() - fzflua.lsp_typedefs({ jump1_action = fzflua.actions.file_split }) - end, "Open in a [X]horizontal split Type [D]efinition") - bnmap("<leader>tD", function() - fzflua.lsp_typedefs({ jump1_action = fzflua.actions.file_tabedit }) - end, "Open in a [T]ab Type [D]efinition") - bnmap("gri", fzflua.lsp_implementations, "[G]oto [I]mplementation") - bnmap("grvi", function() - fzflua.lsp_implementations({ - jump1_action = fzflua.actions.file_vsplit, - }) - end, "[G]oto in a [V]ertical split to [I]mplementation") - bnmap("grxi", function() - fzflua.lsp_implementations({ - jump1_action = fzflua.actions.file_split, - }) - end, "[G]oto in a [X]horizontal split to [I]mplementation") - bnmap("grti", function() - fzflua.lsp_implementations({ - jump1_action = fzflua.actions.file_tabedit, - }) - end, "[G]oto in a [T]ab to [I]mplementation") - bnmap("grr", fzflua.lsp_references, "[G]oto [R]eferences") - bnmap("<leader>ic", fzflua.lsp_incoming_calls, "[I]ncoming [C]alls") - bnmap("<leader>oc", fzflua.lsp_outgoing_calls, "[O]utgoing [C]alls") - bnmap("gO", fzflua.lsp_document_symbols, "d[O]ocument symbols") - bnmap( - "<leader>ws", - fzflua.lsp_live_workspace_symbols, - "[W]orkspace [S]ymbols" - ) - bnmap( - "<leader>wd", - fzflua.diagnostics_workspace, - "[W]orkspace [D]iagnostics" - ) - end, - }) fzflua.register_ui_select() end, }, |
