Adding Injection Queries
-Writing language injection queries allows one to highlight a specific node as a different language. -In addition to the standard language injection options used by tree-sitter, there -are a few Helix specific extensions that allow for more control.
-And example of a simple query that would highlight all strings as bash in Nix:
-((string_expression (string_fragment) @injection.content)
- (#set! injection.language "bash"))
-
-Capture Types
--
-
-
-
-@injection.language
(standard): -The captured node may contain the language name used to highlight the node captured by -@injection.content
.
- -
-
-@injection.content
(standard): -Marks the content to be highlighted as the language captured with@injection.language
et al.
- -
-
-@injection.filename
(extension): -The captured node may contain a filename with a file-extension known to Helix, -highlighting@injection.content
as that language. This uses the language extensions defined in -both the default languages.toml distributed with Helix, as well as user defined languages.
- -
-
-@injection.shebang
(extension): -The captured node may contain a shebang used to choose a language to highlight as. This also uses -the shebangs defined in the default and userlanguages.toml
.
-
Settings
--
-
-
-
-injection.combined
(standard): -Indicates that all the matching nodes in the tree should have their content parsed as one -nested document.
- -
-
-injection.language
(standard): -Forces the captured content to be highlighted as the given language
- -
-
-injection.include-children
(standard): -Indicates that the content node’s entire text should be re-parsed, including the text of its child -nodes. By default, child nodes’ text will be excluded from the injected document.
- -
-
-injection.include-unnamed-children
(extension): -Same asinjection.include-children
but only for unnamed child nodes.
-
Predicates
--
-
-
-
-#eq?
(standard): -The first argument (a capture) must be equal to the second argument -(a capture or a string).
- -
-
-#match?
(standard): -The first argument (a capture) must match the regex given in the -second argument (a string).
- -
-
-#any-of?
(standard): -The first argument (a capture) must be one of the other arguments (strings).
-