keywords modifying other constructs (e.g. `const`, `static`, `public`)
@keyword.repeat keywords related to loops (e.g. `for`, `while`)
@keyword.return keywords like `return` and `yield`
@keyword.debug keywords related to debugging
@keyword.exception keywords related to exceptions (e.g. `throw`, `catch`)
@keyword.conditional keywords related to conditionals (e.g. `if`, `else`)
@keyword.conditional.ternary ternary operator (e.g. `?`, `:`)
@keyword.directive various preprocessor directives and shebangs
@keyword.directive.define preprocessor definition directives
@punctuation.delimiter delimiters (e.g. `;`, `.`, `,`)
@punctuation.bracket brackets (e.g. `()`, `{}`, `[]`)
@punctuation.special special symbols (e.g. `{}` in string interpolation)
@comment line and block comments
@comment.documentation comments documenting code
@comment.error error-type comments (e.g. `ERROR`, `FIXME`, `DEPRECATED`)
@comment.warning warning-type comments (e.g. `WARNING`, `FIX`, `HACK`)
@comment.todo todo-type comments (e.g. `TODO`, `WIP`)
@comment.note note-type comments (e.g. `NOTE`, `INFO`, `XXX`)
@markup.strong bold text
@markup.italic italic text
@markup.strikethrough struck-through text
@markup.underline underlined text (only for literal underline markup!)
@markup.heading headings, titles (including markers)
@markup.heading.1 top-level heading
@markup.heading.2 section heading
@markup.heading.3 subsection heading
@markup.heading.4 and so on
@markup.heading.5 and so forth
@markup.heading.6 six levels ought to be enough for anybody
@markup.quote block quotes
@markup.math math environments (e.g. `$ ... $` in LaTeX)
@markup.link text references, footnotes, citations, etc.
@markup.link.label link, reference descriptions
@markup.link.url URL-style links
@markup.raw literal or verbatim text (e.g. inline code)
@markup.raw.block literal or verbatim text as a stand-alone block
@markup.list list markers
@markup.list.checked checked todo-style list markers
@markup.list.unchecked unchecked todo-style list markers
@diff.plus added text (for diff files)
@diff.minus deleted text (for diff files)
@diff.delta changed text (for diff files)
@tag XML-style tag names (e.g. in XML, HTML, etc.)
@tag.builtin builtin tag names (e.g. HTML5 tags)
@tag.attribute XML-style tag attributes
@tag.delimiter XML-style tag delimiters
*treesitter-highlight-spell*
The special `@spell` capture can be used to indicate that a node should be
spell checked by Nvim's builtin |spell| checker. For example, the following
capture marks comments as to be checked: >query
(comment) @spell
<
There is also `@nospell` which disables spellchecking regions with `@spell`.
*treesitter-highlight-conceal*
Treesitter highlighting supports |conceal| via the `conceal` and `conceal_lines`
metadata. By convention, nodes to be concealed are captured as `@conceal`, but
any capture can be used. For example, the following query can be used to hide
code block delimiters in Markdown: >query
((fenced_code_block_delimiter) @conceal (#set! conceal ""))
<
It is also possible to replace a node with a single character, which (unlike
legacy syntax) can be given a custom highlight. For example, the following
(ill-advised) query replaces the `!=` operator by a Unicode glyph, which is
still highlighted the same as other operators: >query
"!=" @operator (#set! conceal "≠")
<
To conceal an entire line (do not draw it at all), a query with `conceal_lines`
metadata can be used: >query
((comment) @comment @spell
(#set! conceal_lines ""))
<
Conceals specified in