KEEL · YARD v0.10.0

The editor

The editor — the Helm — is not a borrowed widget. It was built for prose, fenced to exactly six requirements, and nothing more. Anything harder than the six belongs to your own editor via the ^e handoff. When it is on screen, the content pane wears a thick ✎ border — you always know when you are holding the pen.

The session

Entering the Write view checks the leaf out: an exclusive lock in the store, and a plain-text working file in checked-out/ — so in-flight work survives any crash of anything. If a working file already exists you resume it; if someone else holds the lock you get a read-only view with the holder's name in the title. All editor keys are disabled in read-only; everything else works.

The six requirements

1 · Soft wrap on the printed measure. Lines wrap at the same ~62-character measure the printed page uses, centred in the pane — what you see approximates the typeset width.

2 · Typewriter scrolling. The cursor stays pinned near 45% of the pane height; the document moves, your eyes don't.

3 · Focus dimming. ^f dims everything except the paragraph you are in. Toggle it back off the same way.

4 · Decoration spans. Layers painted over the text without touching it: misspellings (red underline), AI suggestions (amber tint), continuity flags, Plank directive tokens (dim purple), block interiors (faint tint). This is the requirement no off-the-shelf widget had — and the reason the Helm exists.

5 · Vim-lite modal keys. Three modes, one yank buffer, no counts, no macros, no ex. The exact bindings:

h j k l · arrowsmove (j/k follow display rows over soft wrap, with a sticky goal column)
w · b · eword forward · back · end of word
0 · $start · end of line
{ · }paragraph back · forward
i · a · Ainsert here · after cursor · at end of line
o · Oopen a line below · above
xdelete the character
vvisual selection (motions extend; d/y/c act on it; Esc leaves)
ppaste — linewise yanks paste as a line, charwise at the cursor
u · ^rundo · redo
/incremental search — type to jump live, Enter keeps it, Esc restores where you were, n finds next

The operators d (delete), c (change), y (yank) take a motion:

dd · yywhole line (linewise)
dw · cw · ywto the next word
db · cb / de · ceback a word / through end of word
d$ · c$ / d0 · c0to end of line / to start of line
d{ · c{ / d} · c}to previous / next paragraph edge

Insert mode takes printable characters, Enter, Backspace, Delete and arrows; Esc returns to Normal.

6 · Undo/redo. A flat edit journal over the rope; consecutive single-character insertions in the same word coalesce, so u steps back by intention, not by keystroke.

Saving and leaving

^ssave the working file (the foot shows ●unsaved until you do)
qquit — but a dirty leaf refuses: "unsaved — ^s saves · ^q discards and quits"
^qdiscard and quit, explicitly

Saving writes the file; checking in (:ci -m "…" from the console, or keel ci) turns it into a permanent revision, runs the Plank gate, and releases the lock.

^m — the markup palette

Contextual on your selection. With text selected it offers the inline directives and wraps the selection — select a phrase, choose think, get @think{…}. With no selection it offers the block directives and inserts the frame — choose quote, get the open and @end quote with your cursor on the empty interior line. Type-ahead filters; a live preview shows what Enter will produce. The full vocabulary is in Plank markup.

^e — your own editor

Long session, heavy surgery, or just homesickness for nvim: ^e saves, suspends the TUI, opens the working file in $VISUAL / $EDITOR (notepad if neither is set), and on exit reloads the result with decorations refreshed. Keel owns structure and review; your editor is welcome to the typing.

Spellcheck

A bundled English dictionary plus your project's proper nouns — every entity name and alias lands in .keel/dict.txt automatically whenever the loft changes, so Kael and Hollow Gate are never flagged. Checks run in idle moments, only on changed text; misspellings get the red underline decoration. If the dictionary ever fails to load you get a visible notice, not silent nothing.

Davy is one keystroke away

^g opens the AI writing partner against the full context of your beat — see Davy. Nothing it writes enters your prose except through your explicit accept.