What it is
Structure in Runic is indentation, so moving a step means moving a run of lines and fixing their indent. The editor does both: block drag for reordering, block indent for nesting. No boxes to re-align and no arrows to re-route, because the diagram is rebuilt from the text.
How it works
A block is a line plus every deeper-indented line under it; for an .if it includes the matching .end. Hover a line and the ⋮⋮ handle appears with the tooltip “Drag to move this block”, while the block tints faintly. Drag: a card reads “Moving N lines” and a violet insertion line shows the drop point. Dropping inside the block itself does nothing.
On drop, the block re-indents to match the line it lands in front of. When it lands after the last line, it takes the indent of the line above, two spaces deeper if that line is a .then or .if. Relative indentation inside the block is kept and the moved lines flash green. With a live multi-line selection, grabbing any handle inside it moves the whole selection, expanded so no decision is split; rubber-band cards in the diagram to build that selection visually.
Tab indents, Shift+Tab outdents. A multi-line selection shifts every touched line by one level (two spaces), skipping whitespace-only lines, and the selection follows the text. A selection ending exactly at a line start leaves that line out. A lone caret indents its own line, even an empty one.
Why it matters
Moving a decision with two branches on a canvas is several boxes, several arrows and a realignment. Here it is one drag that cannot orphan a .then or leave an .end behind, and one Tab to change which branch a step belongs to.
Limits
Handles are hidden in the folded view. On a view-only team document a drop changes nothing. When a ghost suggestion is showing, Tab accepts it first; press Esc, then Tab to indent.
How to use it
- Hover a lineThe ⋮⋮ handle appears at the left edge of the editor and the block that would move tints light violet.
- DragHold the handle and move. A card reads “Moving N lines” and a violet insertion line tracks the drop point between lines.
- DropRelease. The block moves, re-indents to its new neighbor, and flashes green. The diagram reflows.
- Move a selectionSelect several lines (in the text, or by dragging a box over cards in the diagram), then drag the handle of any line inside it. The whole selection moves together.
- Indent a blockSelect the lines and press Tab to nest them one level deeper, or Shift+Tab to pull them out. The selection stays on the same lines.
Commands & shortcuts
| ⋮⋮ handle | Hover a line; drag to move the block (line + children + matching .end) |
| Tab | Indent the line or every selected line by two spaces |
| Shift+Tab | Outdent by up to two spaces |
| Enter | New line at the same indent; deeper after .then or .if |
| ⌘Z / ⇧⌘Z | Undo / redo the move or indent |
Tips
- Grab the
.ifline to move the whole decision; the.endcomes along. - Rubber-band cards in the diagram, then drag one handle: the picture is often the easier place to see what belongs together.
- Use Shift+Tab on a step to pull it out of a branch and back onto the main path.
- The footer reminds you: “Drag the ⋮⋮ handle to move a block · hover to locate”.
Questions
Why did the block change indentation when I dropped it?
It matched the line it landed in front of, so it joins that level. Inside a .then it nests; on the main path it flattens. Relative indentation inside the block is kept.
Can I drop a block inside itself?
No. Drop points inside the dragged range are ignored and the block stays where it was.
Does Tab insert a tab character?
No. Runic indents with two spaces per level; Tab adds two spaces and Shift+Tab removes up to two.