aboutsummaryrefslogtreecommitdiff
path: root/runtime/syntax/cpp.vim
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2026-09-21 08:04:55 -0400
committerGitHub <noreply@github.com>2026-09-21 08:04:55 -0400
commit8894b96ec8ea893bc0f9620c99b06070bca4efdb (patch)
treea8ea34e4eb5090295d5072b699f552b87114cb28 /runtime/syntax/cpp.vim
parent222c615c8a4be896e93db576b2103c33683a07e2 (diff)
downloadrneovim-8894b96ec8ea893bc0f9620c99b06070bca4efdb.tar.gz
rneovim-8894b96ec8ea893bc0f9620c99b06070bca4efdb.tar.bz2
rneovim-8894b96ec8ea893bc0f9620c99b06070bca4efdb.zip
fix(cmdatom): capture <Cmd>, not its subatoms #42020
Problem: A command's `:norm` children are captured as Visual subatoms: `v<Cmd>normal! e<CR>d` is "decomposed" to `ved`. That is a cosmetic, nice-to-have feature, which greatly complicates the cmdatom logic: it must detect "lossy" cases (API moves, "gv" on marks the command set, a session ended and restarted). Solution: Drop the nice-to-have. - A command is captured as itself, never its `:norm` children. - While a child frame runs, a pending Visual session is kept open until the enclosing frame resolves. - `:`/`<Cmd>` no longer decline to be a Visual subatom. - Stuffed keys ("." replay, "x" => "dl") and K_EVENT children (RPC, timer), are still captured as their translation. - `mc_add()` discards any pending Visual session, so `{Visual}Q` does not cascade recursively to the cursors it just created.
Diffstat (limited to 'runtime/syntax/cpp.vim')
0 files changed, 0 insertions, 0 deletions