aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/home/.config/nvim/after/plugin/autocmds.lua
diff options
context:
space:
mode:
Diffstat (limited to 'home/.config/nvim/after/plugin/autocmds.lua')
-rw-r--r--home/.config/nvim/after/plugin/autocmds.lua41
1 files changed, 40 insertions, 1 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