Files
typewriter/docs/v0.2-navigation.md
Julien Calixte 55a8d21e0f docs(macroplan): split each version into its own page
Move each version's scope checklist and status out of the monolithic
macroplan into a dedicated docs/vX.Y-<slug>.md page; macroplan keeps the
source block, the rollup status, and a one-line summary + link per
version. v0.1 reuses its existing product/technical pages.

Also drop the "Optional column ruler at 80" requirement from v0.6.
2026-07-12 02:10:29 +02:00

2.4 KiB

v0.2 — Vim navigation

Part of the Typoena macro plan. Requirements and targets: qfd.md. Load-bearing decisions: adr.md.

Status: COMPLETE 2026-07-11. Navigation done in core; the UTF-8-correct buffer and Ctrl-d/u half-page scroll landed and are hardware-verified, and the absolute line-number gutter is built, host-tested, and confirmed on the panel (Spike 13) 2026-07-11 — a single-line edit repaints only the rows at/below the change and forces no extra full refresh. Shipped early beyond scope: a read-only View mode and the full d/c operator + text-object grammar (see v0.3 / v0.4).

  • Mode state machine (Normal / Insert / View), mode indicator in the status strip
  • Movement: h j k l, w b e, 0 $, gg G, Ctrl-d Ctrl-u. Ctrl-d/u step display (soft-wrapped) rows, not logical lines — half a page is half the visible window however prose wraps; decoded as HalfPageDown/Up intents in the keymap, caret moves and the viewport follows.
  • i a o O A to enter Insert
  • Esc returns to Normal
  • Line numbers in the left gutter: absolute, built + host-tested 2026-07-11, confirmed on the panel (Spike 13) 2026-07-11 — numbered on a logical line's first display row, blank on wrapped continuation rows; the gutter width tracks the buffer's line count (2 digits + separator, widening past 99 lines) and steals its columns from the soft-wrap. Always on in v0.2; the on/off toggle rides the v0.5 .typoena.toml prefs. Relative numbering was dropped (2026-07-11): renumbering the whole gutter on every j/k burns the e-ink ghosting budget for no proportionate gain, whereas absolute renumbers only the rows below an edit — the on-panel check confirmed a single-line edit repaints only rows at/below it with no extra full refresh.
  • Groundwork — UTF-8-correct buffer: caret motions and edits step by character, not byte (dropped the ASCII == byte-offset assumption), so every motion stays correct with accented input. Done 2026-07-11 alongside extracting the editor into a host-testable crate — char-step motions/deletes, byte-vs-char split in layout/caret_rc, word_end/de fixed; 15 host tests. Render font is ISO-8859-15 (Latin-9), so accented glyphs display.