From 304b9a413ad2685793095a2ba2803a979fa6e9e0 Mon Sep 17 00:00:00 2001 From: Emma Thorpe Date: Tue, 23 Jun 2026 16:17:05 +0100 Subject: [PATCH 1/2] feat(editor): add nvim-cmp completion keymaps nvim-cmp ships no default mappings, so the completion menu (including the path source) appeared but nothing could navigate or accept it. Bind the usual set: C-n/C-p and Tab/S-Tab to move, C-Space to open, C-e to abort, and to confirm with select=false so a bare Enter stays a newline unless an entry is explicitly highlighted. Co-Authored-By: Claude Opus 4.8 (1M context) --- lyrathorpe/home/editor.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lyrathorpe/home/editor.nix b/lyrathorpe/home/editor.nix index a6569cc..23f37e7 100644 --- a/lyrathorpe/home/editor.nix +++ b/lyrathorpe/home/editor.nix @@ -89,6 +89,18 @@ enable = true; autoEnableSources = true; settings = { + # nvim-cmp ships no default keymaps; without these the menu shows but + # nothing accepts it. confirm uses select=false so a bare stays a + # newline unless an entry is explicitly highlighted. + mapping = { + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.confirm({ select = false })"; + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.abort()"; + }; snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; sources = [ { name = "nvim_lsp"; } -- 2.52.0 From 781c45a47c94b40eabd7b19ce931f5bd138c6d19 Mon Sep 17 00:00:00 2001 From: Emma Thorpe Date: Tue, 23 Jun 2026 16:20:03 +0100 Subject: [PATCH 2/2] docs(editor): document nvim-cmp completion menu keybindings Add a completion-menu table to KEYBINDINGS.md covering the new cmp mappings (Tab/S-Tab and C-n/C-p to move, C-Space to open, Enter to confirm, C-e to dismiss), and reword the Neovim summary accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) --- lyrathorpe/home/KEYBINDINGS.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lyrathorpe/home/KEYBINDINGS.md b/lyrathorpe/home/KEYBINDINGS.md index a64d2f1..fb6a2fd 100644 --- a/lyrathorpe/home/KEYBINDINGS.md +++ b/lyrathorpe/home/KEYBINDINGS.md @@ -188,10 +188,22 @@ across vim splits and tmux panes seamlessly. Everything else is stock vim, plus: | `rn` | Rename symbol (LSP; `` is `Space`) | | `ca` | Code action (LSP) | -LSP covers Nix, Lua, Python and Terraform (the work box adds C# and Helm); -completion (nvim-cmp) appears as you type. Files are formatted on save -(conform-nvim). `:Git` opens fugitive; gitsigns shows gutter signs. which-key -pops up after `` to show the rest. +### Completion menu (nvim-cmp) + +Active only while the completion popup is open (it appears as you type, e.g. +file paths): + +| Shortcut | Action | +| ----------------------- | ------------------------------------------------------------------ | +| `Tab` / `Shift`+`Tab` | Select next / previous item | +| `Ctrl`+`n` / `Ctrl`+`p` | Select next / previous item | +| `Ctrl`+`Space` | Open the completion menu | +| `Enter` | Confirm the highlighted item (no auto-select; otherwise a newline) | +| `Ctrl`+`e` | Dismiss the menu | + +LSP covers Nix, Lua, Python and Terraform (the work box adds C# and Helm). +Files are formatted on save (conform-nvim). `:Git` opens fugitive; gitsigns +shows gutter signs. which-key pops up after `` to show the rest. --- -- 2.52.0