diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2026-08-21 13:42:17 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-21 13:42:17 -0400 |
| commit | 64236573525c257ecd7e268b255571328d4871c8 (patch) | |
| tree | b780316877b48bddd47a17849e00a489bd8b1c1e /runtime/lua/vim/range.lua | |
| parent | 8e0e19c08bdb6ca7cf6f4062d55510b0272592cc (diff) | |
| download | rneovim-64236573525c257ecd7e268b255571328d4871c8.tar.gz rneovim-64236573525c257ecd7e268b255571328d4871c8.tar.bz2 rneovim-64236573525c257ecd7e268b255571328d4871c8.zip | |
feat(cmdatom)!: eliminate the need for vim-repeat #41414
Problem:
- `lhs` is not fully realized. E.g. for a "payload" mapping
`lhs` omits the `getchar()` payload during a mapping (vim-surround
`ds'` reports `lhs="ds"`). This means plugins like vim-repeat are
still needed...
- The "delta" fields of a CmdAtom are calculated too late.
- `<abuf>` and `changed` check whatever (wrong) buffer a command
(":bnext") might land in.
- CTRL-W_w between two windows on the same buffer reports type="motion".
Solution:
- `CmdOrigin` samples (buf/win/cursor/changedtick) at each "scope" entry
(CmdFrame, composite, Visual session, insert session).
- `dd<C-w>l` reports `changed=true` for the buffer it edited, regardless
of where the cursor ends up.
- New fields:
- `pos`: cursor position at command start.
- `moved`: indicates whether the cursor moved (in same buffer).
- `undoseq`: undo state at settlement.
- lhs now includes the payload: "ds)" reports lhs="ds)" instead of "ds".
- Easy for users to "replay" any atom.
- Rename: type "command" => "normal", "ex" => "excmd"; `arg` => `cmdarg`
- Drop `cascade` field (no reason to expose it)
Diffstat (limited to 'runtime/lua/vim/range.lua')
0 files changed, 0 insertions, 0 deletions