chore(injections)!: update injection syntax to 0.9

Since 0.9, @lang syntax is still available as fallback but will soon be deprecated.
Because of that, new syntax should be adopted once 0.9 becomes the
baseline requirements for nvim-treesitter

- update health check
- update doc
This commit is contained in:
Pham Huy Hoang 2023-05-03 19:07:59 +09:00 committed by Christian Clason
parent 2aa9e9b0e6
commit 78b54eb7f6
140 changed files with 1083 additions and 665 deletions

View file

@ -318,19 +318,32 @@ query.
### Injections
Some captures are related to language injection (like markdown code blocks). They are used in `injections.scm`.
You can directly use the name of the language that you want to inject (e.g. `@html` to inject html).
If you want to dynamically detect the language (e.g. for Markdown blocks) use the `@language` to capture
the node describing the language and `@content` to describe the injection region.
If you want to dynamically detect the language (e.g. for Markdown blocks) use the `@injection.language` to capture
the node describing the language and `@injection.content` to describe the injection region.
```scheme
@{lang} ; e.g. @html to describe a html region
@language ; dynamic detection of the injection language (i.e. the text of the captured node describes the language)
@content ; region for the dynamically detected language
@combined ; combine all matches of a pattern as one single block of content
@injection.language ; dynamic detection of the injection language (i.e. the text of the captured node describes the language)
@injection.content ; region for the dynamically detected language
```
For example, to inject javascript into HTML's `<script>` tag
```html
<script>someJsCode();</script>
```
```query
(script_element
(raw_text) @injection.content
(#set! injection.language "javascript")) ; set the parser language for @injection.content region to javascript
```
For regions that don't have a corresponding `@injection.language`, you need to manually set the language
through `(#set injection.language "lang_name")`
To combine all matches of a pattern as one single block of content, add `(#set! injection.combined)` to such pattern
### Indents
```scheme