jint

Grammar directives

GENERATED — do not edit. Regenerate with bun run schema (scripts/generate-schema.ts). The rows come from the directive vocabulary the loader validates against (packages/sdk/src/core/grammars/query.ts); a directive not listed here fails at load.

A directive rides a pattern in queries.scm: (pattern) @capture (#set! "<name>" "<value>"). One name, one setting per file. A capture.<name>.* directive must ride a pattern that binds @<name>. How captures become elements, and how to check them: docs/captures.md.

directive values what it does declared in
selfNesting (none) Every capture’s same-capture candidates nest (the grammar-wide form). —
attach.gap a whole number A comment run attaches to the next definition across at most this many blank rows; 0 means the capture takes no attached run. Default 1. —
docstring.owner next | enclosing Who a docstring documents: the definition that follows it, or the one that contains it. Default enclosing. —
capture.<name>.definition true | false The capture is an element rules can target. A grammar’s own capture must declare it; shared captures are definitions by default. typescript (statement_group), tsx (statement_group), markdown (section, list_item, list, paragraph)
capture.<name>.opaque true | false A different-capture candidate strictly inside is implementation and produces no element. typescript (statement_group), tsx (statement_group)
capture.<name>.selfNesting true | false Same-capture candidates nest: a nested one is an element of its own. markdown (section, list)
capture.<name>.absorbTail a whole number The largest same-capture wrapper tail, in bytes, that still reads as one element (a trailing ;). —
capture.<name>.merge contiguous | adjacent | none A run of same-capture nodes is one element. contiguous: a blank row or another element ends the run; adjacent: only another element ends it; none: no merging. typescript (import, statement_group), tsx (import, statement_group), python (import), cpp (import), c (import)