What
The config wires up LSP in LspAttach (plugin_config.lua:110-121) but only maps two actions: gd (definition) and <leader>la (code action). Three standard LSP interactions have no keymaps at all:
| Missing keymap |
API |
What it does |
K |
vim.lsp.buf.hover() |
Hover documentation float |
<leader>rn |
vim.lsp.buf.rename() |
Rename symbol across workspace |
]d / [d |
vim.diagnostic.jump({ count = 1 }) |
Jump to next/prev diagnostic |
Where
lua/config/plugin_config.lua — the LspAttach autocmd callback, lines 110–121.
lua/config/options.lua — the <leader>d keymap (line 13) that opens the loclist is the only diagnostic navigation currently configured.
Why it matters
All three are part of the standard LSP workflow and are present in virtually every config:
-
K hover — Without this, reading API docs requires leaving the editor. The config already enables noice.nvim with lsp_doc_border = false and vim.o.winborder = "single", so the hover float is already styled; it just has no trigger. In Neovim 0.10+, K is mapped to vim.lsp.buf.hover() by default only if keywordprg is not overriding it — worth verifying that the default is active, or making it explicit.
-
<leader>rn rename — The config has code actions (<leader>la) but rename is a separate, higher-frequency action (refactoring). Without a keymap it requires :lua vim.lsp.buf.rename() each time.
-
]d / [d diagnostic jump — <leader>d opens the location list (vim.diagnostic.setloclist()), which is useful for a full overview. But for jumping to the next error inline, ]d/[d is faster. vim.diagnostic.jump() was added in Neovim 0.10 and replaces the deprecated goto_next/goto_prev. The count-based API ({ count = 1 }, { count = -1 }) integrates with vim's [count]]d motion naturally.
Recommended implementation
In the LspAttach callback in lua/config/plugin_config.lua:
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(ev)
local client = vim.lsp.get_client_by_id(ev.data.client_id)
if client and client:supports_method("textDocument/completion") then
pcall(function()
vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true })
end)
end
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = ev.buf })
vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action, { buffer = ev.buf, desc = "LSP code action" })
-- add these:
vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = ev.buf, desc = "LSP hover" })
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { buffer = ev.buf, desc = "LSP rename" })
end,
})
For diagnostic jump, add globally (not buffer-local, since diagnostics work without LSP too):
-- in options.lua, near the existing <leader>d keymap
vim.keymap.set("n", "]d", function() vim.diagnostic.jump({ count = 1 }) end, { desc = "Next diagnostic" })
vim.keymap.set("n", "[d", function() vim.diagnostic.jump({ count = -1 }) end, { desc = "Prev diagnostic" })
-- jump to error-only (skip warnings/hints):
vim.keymap.set("n", "]e", function() vim.diagnostic.jump({ count = 1, severity = vim.diagnostic.severity.ERROR }) end, { desc = "Next error" })
vim.keymap.set("n", "[e", function() vim.diagnostic.jump({ count = -1, severity = vim.diagnostic.severity.ERROR }) end, { desc = "Prev error" })
Notes
vim.diagnostic.jump() requires Neovim 0.10+. The config already uses several 0.10+ APIs, so this is safe.
K in Neovim defaults to :Man unless overridden. Setting it explicitly in LspAttach (buffer-local) means it shows hover docs in LSP-attached buffers and falls back to :Man elsewhere — the right behavior.
vim.lsp.buf.rename() opens an inline rename prompt in Neovim 0.10+ (no extra plugin needed). With noice.nvim active, the prompt is routed through noice's cmdline UI.
https://claude.ai/code/session_01MgvadYi8hXsguSRvg4ahtC
What
The config wires up LSP in
LspAttach(plugin_config.lua:110-121) but only maps two actions:gd(definition) and<leader>la(code action). Three standard LSP interactions have no keymaps at all:Kvim.lsp.buf.hover()<leader>rnvim.lsp.buf.rename()]d/[dvim.diagnostic.jump({ count = 1 })Where
lua/config/plugin_config.lua— theLspAttachautocmd callback, lines 110–121.lua/config/options.lua— the<leader>dkeymap (line 13) that opens the loclist is the only diagnostic navigation currently configured.Why it matters
All three are part of the standard LSP workflow and are present in virtually every config:
Khover — Without this, reading API docs requires leaving the editor. The config already enablesnoice.nvimwithlsp_doc_border = falseandvim.o.winborder = "single", so the hover float is already styled; it just has no trigger. In Neovim 0.10+,Kis mapped tovim.lsp.buf.hover()by default only ifkeywordprgis not overriding it — worth verifying that the default is active, or making it explicit.<leader>rnrename — The config has code actions (<leader>la) but rename is a separate, higher-frequency action (refactoring). Without a keymap it requires:lua vim.lsp.buf.rename()each time.]d/[ddiagnostic jump —<leader>dopens the location list (vim.diagnostic.setloclist()), which is useful for a full overview. But for jumping to the next error inline,]d/[dis faster.vim.diagnostic.jump()was added in Neovim 0.10 and replaces the deprecatedgoto_next/goto_prev. The count-based API ({ count = 1 },{ count = -1 }) integrates with vim's[count]]dmotion naturally.Recommended implementation
In the
LspAttachcallback inlua/config/plugin_config.lua:For diagnostic jump, add globally (not buffer-local, since diagnostics work without LSP too):
Notes
vim.diagnostic.jump()requires Neovim 0.10+. The config already uses several 0.10+ APIs, so this is safe.Kin Neovim defaults to:Manunless overridden. Setting it explicitly inLspAttach(buffer-local) means it shows hover docs in LSP-attached buffers and falls back to:Manelsewhere — the right behavior.vim.lsp.buf.rename()opens an inline rename prompt in Neovim 0.10+ (no extra plugin needed). Withnoice.nvimactive, the prompt is routed through noice's cmdline UI.https://claude.ai/code/session_01MgvadYi8hXsguSRvg4ahtC