v0.4.3 — finish the textarea
v0.4.3 — finish the textarea
Closes the gaps v0.4.2 shipped with. No new widgets, and the routed-message
contract is unchanged.
Added:
- Goal-column memory for
textareavertical motion. Moving down through a
short line and back returns to the column you started in; previously each
motion re-derived the column, so one short row truncated it permanently.
The column is runtime state, keyed by focus — it never enters the public
message contract.Harlock.TextArea.apply_key/6threads it. Harlock.TextArea.expand_tabs/2. A tab is zero-width toHarlock.Width,
so a\tin a value holds a cursor index while consuming no display cell.
Tabs can only arrive from bracketed paste or an app assigning:value,
both app-side, so this is a helper rather than enforcement at insert.Alt-Backspacekills the word backward intext_inputandtextarea.examples/notes.exs— the first runnable demo of the widget.
Changed:
- Widget key routing carries runtime state back to the caller, so a key that
changes interaction state without changing value or cursor records it and
still falls through toupdate/2. Internal; no app-visible change beyond
goal columns.
Fixed:
- ROADMAP no longer lists a missing
row.exhelper.Element.Columnis a
table-column spec, not a layout container.
Full notes in CHANGELOG.md.