Runic
COMMANDS

The command menu, in both editors

A dot opens it, a prefix filters it, Enter inserts a scaffold. It sits under your line, flips above it when the window ends, and never covers what you are typing.

Try it free →Read the docs

When it opens

The menu opens when everything before the caret on the current line is indentation plus a dot and letters, and nothing follows the caret on that line. . alone lists every command; .i leaves .if and .input; a prefix that matches nothing shows no menu. Esc dismisses it for that exact prefix; the next letter is a new prefix and the menu offers again. The textarea’s placeholder says it: “Describe each step on its own line. Type . for commands.” In the folded view the menu does not open.

The same trigger works in the sequence editor with its own list. After .go or .do , .back , or an actor’s first letters, the menu turns into a name completer; that side of it is on the autocomplete page.

What is in it

Process documents: .if Branch on a condition · .then Define a branch path · .go Jump to another process · .do Run another process, then return · .input A step that collects user input · .wait Pause for a time or event · .back Arrow to any other step — “: label” captions it · .note Pin a note to the previous step · .fail Mark a failure outcome — the flow continues · .end Close a branch · or end the flow.

Sequence diagrams: .actor Declare an actor · .loop Repeat the indented messages · .alt Alternative paths · .else Next path of the current .alt · .opt Optional block · .par Parallel blocks · .and Next parallel block · .break Leave the enclosing flow when… · .critical A block that must not be interrupted · .group A labelled box · .note A note, “over A”, “A, B”, “left of A” · .do Reference another document, then continue · .go Hand off to another document · .activate and .deactivate for explicit activation bars · .autonumber Number every message · .end Close the current fragment.

Scaffolds

Most picks insert the command and a space. A few write more. In a process, .if inserts .if followed by .then Yes, an indented empty line, .then No and another, all relative to the current indent, with the caret after .if so you type the question next; .end inserts the line and opens a fresh one at the same indent. In a sequence diagram, .alt inserts .alt , an indented blank line, .else and another indented line; .par does the same with .and ; .loop, .opt, .break, .critical and .group insert the opener plus one indented line; .autonumber inserts itself with no trailing space.

Enter continues the structure without the menu: a new line keeps the current indent, goes two spaces deeper after a .then or .if line in a process, and after any fragment opener, .else or .and in a sequence diagram. Enter at the end of a bare .if line whose next line is not a .then writes the Yes/No scaffold with the caret inside the first branch.

Keys

↑ and ↓ move the highlight and wrap at both ends; the highlighted row scrolls into view when the list is taller than the 254-pixel window. Enter or Tab inserts. Esc dismisses. Enter on a bare . with no arrow-key navigation just closes the menu and opens a new line, so a dot you typed by reflex costs nothing. A bare modifier — ⌘, Ctrl, Alt, AltGr or Shift on its own — leaves the menu exactly where it is, which is what makes ⌘⇧4 for a screenshot safe; in the process editor a modifier combination such as ⌘+Down closes the menu and passes through to the editor, while the sequence editor keeps the menu open (⌘+Down there moves the highlight). ⌘Z and ⌘Y are intercepted before the menu and undo or redo as usual.

Hovering a row with the mouse selects it; when the list scrolls under a resting pointer during keyboard navigation, the row sliding beneath it does not steal the selection.

Where it sits

The menu is a fixed 286-pixel-wide box titled “Commands” with a footer reading “↑↓ navigate · ↵ insert · esc dismiss”. It is placed just under the caret line, at the editor’s left edge plus the gutter. When the menu would run past the bottom of the window it flips to sit above the line’s first row instead, so it never covers the line you are typing; with no room on either side it takes the larger side and its list scrolls. The row arithmetic follows the editor pane’s real width, so a wrapped long line still puts the menu under its last row after you resize the pane. Scroll the editor and the menu follows its line; scroll the line out of view and the menu hides until it returns. It is clamped inside the window so the flow pane can never hide it.

How to use it

  1. Type a dot
    At the start of an empty line, or after indentation, type .. The menu lists every command with its description.
  2. Filter
    Keep typing: .in leaves .input. Press Esc if you would rather finish the word yourself; the menu stays away for that prefix.
  3. Insert a scaffold
    Highlight .if and press Enter. Runic writes .if , .then Yes and .then No with empty branch lines and leaves the caret after .if for the question.
  4. Close a decision
    On a new line at the .if’s indent type . and pick .end. The line is written and the caret lands on a fresh line below it.
  5. In a sequence diagram
    Type . and pick .alt. You get .alt , an indented line, .else and another indented line. Fill the labels, then the messages; Enter after any opener indents for you.

Commands & shortcuts

. (line start)Open the menu; letters after the dot filter it
↑ / ↓Move the highlight, wrapping at both ends
Enter / TabInsert the highlighted command (or scaffold)
Enter on a bare “.”Close the menu and open a new line (unless you navigated)
EscDismiss for this exact prefix
⌘ / Ctrl / Alt / Shift aloneMenu stays open
⌘+key, Ctrl+key, Alt+keyProcess editor: menu closes and the editor shortcut runs; sequence editor: menu stays open
.if (process)Scaffolds .then Yes / .then No with empty branches
.alt · .par (sequence)Scaffold the .else / .and section too
.end (process)Inserts the line and a fresh line under it

Tips

  • Type . and Enter twice in a row and nothing happens but a new line; the menu only inserts a command after you navigated or typed more than the dot.
  • The menu is 286 px wide and clamped to the window, so on a narrow layout it may overlap the flow pane rather than be cut off.
  • Filtering is by prefix on the command word, so .d shows .do in a process and .do and .deactivate in a sequence diagram.
  • Everything the menu inserts is plain text. If you prefer to type commands by hand, the parser accepts them the same way.

Questions

Why did the menu not open?

Either there is text after the caret on that line, the prefix matches no command, or you dismissed the menu for this exact prefix with Esc. Change the prefix and it offers again. In the folded view it stays closed until the folds expand.

Why did it appear above my line?

There was no room below it in the window. The menu never covers the line you are typing, so it moves above the line’s first row instead.

Is the list the same in both editors?

No. A process lists its ten commands; a sequence diagram lists its seventeen, and its scaffolds write fragment sections instead of decision branches.