Make marks and counts work, and the completion popup a setting

Marks: the engine read `ma` and `'a`, but the canvas example only said
they'd come later. It now sets and jumps to marks, and `''` goes back to
where the cursor was before the last jump (a mark, gg, G or :find).
Which-key lists `'` after `'`.

Counts on operators now mean something on nodes: `3dd` deletes this node
and the next two siblings, with their branches, the way vim's `3dd`
deletes three lines (Document::siblings_from). Counts before the operator
and before the target still multiply, and which-key now says what they
add up to: after `2d3`, the `d` entry reads "6 nodes: this one and the
next 5 siblings, with their branches".

The completion popup can now wait for Tab, like vim's wildmenu: the
`completion_popup` setting is "as-you-type" (the default) or "on-tab".
The config file comes with the app core; until then the example takes
`:set completion_popup=on-tab`.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
skkeyeandClaude Opus 5.5 committed 2026-10-01 04:17:41 -04:00
1 parent bfc184f5ef
commit 57ba2c275d
6 files changed
+199 -35

No files matched your search

+4
View File
@@ -87,6 +87,9 @@ lines.
- Tab and `Ctrl-i` jump forward, as in vim, so `a` adds a child.
- `dd` deletes a node with its branch; `x` deletes just the node, and its
children move up.
- A count on `dd`, `yy`, `>>` or `<<` takes in the next siblings: `3dd`
deletes this node and the next two, with their branches, as vim's `3dd`
takes three lines. Which-key says how many as you type (`2d3`: 6 nodes).
- Rapid entry is what happens after `o`, `O` or `a`: Enter starts the next
sibling, Tab / Shift-Tab indent and outdent it, Enter on an empty line stops.
Esc switches to vim motions inside the text; a second Esc leaves.
@@ -334,6 +337,7 @@ which_key = true
which_key_delay = "300ms"
max_node_width = 30
glyphs = "unicode" # "ascii" for fonts without box-drawing characters
completion_popup = "as-you-type" # "on-tab": only after Tab, like vim's wildmenu
# keys.toml: sections motions, normal, canvas, outline, note, visual, move,
# connect, list; commands by name (src/input/command.rs); "nothing" unbinds