aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLibravatar sommerfeld <[email protected]>2026-04-17 10:53:11 +0100
committerLibravatar sommerfeld <[email protected]>2026-04-17 10:53:11 +0100
commit3e3d394d014dded76e3aac9a615f5efa93dd1c59 (patch)
tree785c6480bb96b6fe1c2e5f6018e15eda2f5407c7
parentfcab70e06325f123030a9442aef001707a603950 (diff)
downloaddotfiles-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.lua41
-rw-r--r--home/.config/nvim/lua/plugins/search.lua64
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,
},