diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2026-09-21 08:04:55 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-21 08:04:55 -0400 |
| commit | 8894b96ec8ea893bc0f9620c99b06070bca4efdb (patch) | |
| tree | a8ea34e4eb5090295d5072b699f552b87114cb28 /runtime/syntax/cpp.vim | |
| parent | 222c615c8a4be896e93db576b2103c33683a07e2 (diff) | |
| download | rneovim-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