What it is
The language has ten commands and the editor never makes you remember them. Type . at the start of a line and a menu lists every command with a one-line description; keep typing to filter. The same menu becomes a reference completer when a command needs a target.
How it works
The menu opens when the text before the caret is only a dot-prefix and nothing follows on the line. It lists .if, .then, .go, .do, .input, .wait, .back, .note, .fail and .end. Picking .if inserts a scaffold with .then Yes and .then No and puts the caret after .if . Picking .end inserts the line and opens a fresh one.
After .go or .do the menu lists your other processes, up to eight, prefix matches first, with each one’s line count. Once the target exactly matches a process the menu closes so Enter opens a new line as usual.
After .back it lists the plain steps and .input lines of the current document, deduplicated, captions stripped, the caret’s own line excluded, each marked “line N · above” or “below”, because a return arrow can point either way.
Esc dismisses the menu for the current prefix; it returns when the prefix changes. Any Ctrl, ⌘ or Alt combination closes it and passes through, so ⌘+Down still means end of document.
Why it matters
References match by exact name, so one mistyped character is a broken link. Picking from a list removes that failure mode instead of flagging it later.
Ghost suggestions
Signed in, a second completion appears: after 700ms idle at the end of a line, a gray continuation may show with a TAB chip. Tab accepts it; Esc or any keystroke dismisses it. The “✦ Suggest on/off” chip in the footer turns it off and remembers the choice. Tab prefers a visible ghost over indenting.
How to use it
- Open the command menuAt the start of a line type
.. The “Commands” menu lists each command with its description. Keep typing to filter, for example.ileaves.ifand.input. - Pick oneUse ↑ and ↓ to move, then Enter or Tab to insert. The footer reminds you: “↑↓ navigate · ↵ insert · esc dismiss”.
- Complete a process nameType
.doand the menu switches to your processes. Type part of a name to filter; Enter inserts the exact name. - Complete a .back targetType
.backand the menu lists this document’s steps with their line numbers and whether they sit above or below the caret. - DismissPress Esc. The menu stays away until you change what you typed, then offers again.
Commands & shortcuts
| . | At line start: open the Commands menu |
| ↑ / ↓ | Move the highlight |
| Enter / Tab | Insert the highlighted item |
| Esc | Dismiss for the current prefix |
| .go / .do | Then a space: your other processes, up to 8 |
| .back | Then a space: this document’s steps and .input lines, up to 8 |
| Tab | Accept a gray ghost suggestion (signed in) |
| ✦ Suggest on/off | Footer chip that disables ghost suggestions |
Tips
- Pressing Enter on a bare
.without moving the highlight closes the menu and opens a new line instead of inserting.if; keep typing after the dot when you want a command by hand. - Pick
.iffrom the menu to get both branches scaffolded. Pressing Enter at the end of a typed.ifline does the same. - The .do list shows how many non-empty lines each process has, so an empty stub reads “0 lines”.
- Sequence diagrams have their own menu with .actor, .alt, .loop and actor-name completion after
->.
Questions
Why does the process menu not show the document I am in?
A process calling itself is rarely what you want, so the current document is excluded. Use .back for loops inside a document.
Why did the menu close while I was typing a name?
Your text now matches a process exactly, so there is nothing left to suggest. Enter opens a new line.
Does the menu need the AI?
No. Command and reference completion run locally in the editor. Only the gray ghost suggestions call the AI, so they need a signed-in account.