Grammar Reference

Separators

A line of 10 or more = or - characters.

KindCharacterMinimum lengthLineKind
Major=10Separator(SepKind::Major)
Minor-10Separator(SepKind::Minor)
================================================================================
--------------------------------------------------------------------------------

The formatter normalizes separators to line_width (default 78).

Tags

Pattern: *name*

*my-plugin*   *my-plugin-intro*

Pattern: |name|

See |my-plugin| for details.

Code Blocks

Content is verbatim: no tag scanning, no reformatting.

Inline fence

A prose line whose trimmed content ends with >, but not ->.

The following example: >
    some_function()
<

Named fence

A line whose trimmed content matches >lang, where lang is one or more characters from [A-Za-z0-9_+-].

>lua
    vim.fn.input()
<

Termination

A block ends at the first of:

  1. A < alone on a line.
  2. A non-blank line beginning at column 0.

Blank lines do not terminate a block.

List Items

List items are preserved as-is and never reflowed with adjacent prose.

PrefixKind
- Unordered (dash)
* Unordered (asterisk)
Unordered (Unicode bullet U+2022)
N. Ordered (N = one or more digits)

* and N. are list items only where the line defines no tag, so *my-tag* Introduction and 1. Introduction *intro* are Text.

Backtick Spans

Pattern: `content`

Content between backticks is skipped during tag scanning.

Pipe Tables

Lines that start and end with |, after trailing whitespace is trimmed, are preserved verbatim.

| Command  | List           |
| -------- | -------------- |
| `files`  | find or fd     |
|Prefix     |Behavior       |
|-----------|---------------|
|`no prefix`|Files          |

Rows are never reflowed, merged with prose, or read as taglinks. Tab-aligned tables with ~ headers are preserved by the tab rule.

Blank Lines

An empty or whitespace-only line is Blank.