--- LSP and function navigation keymaps. --- Uses fzf-lua pickers for go-to-definition, implementation, references, --- type definitions, symbol search, code actions, rename, hover docs, --- and diagnostic navigation. --- @module keymaps.lsp local keymap = vim.keymap -- ============================================================================= -- LSP NAVIGATION (FUNCTION NAVIGATION) - Using fzf-lua -- ============================================================================= --- Primary LSP navigation — definition, implementation, references, type def. keymap.set("n", "gd", "FzfLua lsp_definitions", { desc = "Go to definition" }) keymap.set("n", "gi", "FzfLua lsp_implementations", { desc = "Go to implementation" }) keymap.set("n", "gr", "FzfLua lsp_references", { desc = "Show references" }) keymap.set("n", "gt", "FzfLua lsp_typedefs", { desc = "Go to type definition" }) --- Symbol search — document and workspace symbols via fzf-lua. keymap.set("n", "ds", "FzfLua lsp_document_symbols", { desc = "Document symbols" }) keymap.set("n", "lw", "FzfLua lsp_workspace_symbols", { desc = "LSP: Workspace symbols" }) --- Code actions, rename, and hover documentation. keymap.set("n", "ca", "FzfLua lsp_code_actions", { desc = "Code actions" }) keymap.set("n", "rn", "lua vim.lsp.buf.rename()", { desc = "Rename" }) keymap.set("n", "H", "lua vim.lsp.buf.hover()", { desc = "Hover documentation" }) --- Diagnostics — workspace list, line float, and prev/next navigation. keymap.set("n", "D", "FzfLua diagnostics_workspace", { desc = "Show diagnostics" }) keymap.set("n", "dd", "lua vim.diagnostic.open_float()", { desc = "Line diagnostics" }) keymap.set("n", "[d", "lua vim.diagnostic.goto_prev()", { desc = "Previous diagnostic" }) keymap.set("n", "]d", "lua vim.diagnostic.goto_next()", { desc = "Next diagnostic" })