diff options
| author | Pham Huy Hoang <hoangtun0810@gmail.com> | 2023-05-03 19:07:59 +0900 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2023-08-12 17:34:15 +0200 |
| commit | 78b54eb7f6a9956d25a3911fa0dfd0cabfe2a4c5 (patch) | |
| tree | 87bc9ffd574b406ceaeb4ea4c32290e66145f587 | |
| parent | feat!: bump required Nvim version to 0.9.1 (diff) | |
| download | nvim-treesitter-78b54eb7f6a9956d25a3911fa0dfd0cabfe2a4c5.tar nvim-treesitter-78b54eb7f6a9956d25a3911fa0dfd0cabfe2a4c5.tar.gz nvim-treesitter-78b54eb7f6a9956d25a3911fa0dfd0cabfe2a4c5.tar.bz2 nvim-treesitter-78b54eb7f6a9956d25a3911fa0dfd0cabfe2a4c5.tar.lz nvim-treesitter-78b54eb7f6a9956d25a3911fa0dfd0cabfe2a4c5.tar.xz nvim-treesitter-78b54eb7f6a9956d25a3911fa0dfd0cabfe2a4c5.tar.zst nvim-treesitter-78b54eb7f6a9956d25a3911fa0dfd0cabfe2a4c5.zip | |
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
140 files changed, 1082 insertions, 664 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2d06c3525..cc0a385d4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 +@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 -@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 +```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 diff --git a/lua/nvim-treesitter/query_predicates.lua b/lua/nvim-treesitter/query_predicates.lua index ff0e9999a..7f2b73c54 100644 --- a/lua/nvim-treesitter/query_predicates.lua +++ b/lua/nvim-treesitter/query_predicates.lua @@ -153,10 +153,10 @@ query.add_directive("set-lang-from-mimetype!", function(match, _, bufnr, pred, m local type_attr_value = vim.treesitter.get_node_text(node, bufnr) local configured = html_script_type_languages[type_attr_value] if configured then - metadata.language = configured + metadata["injection.language"] = configured else local parts = vim.split(type_attr_value, "/", {}) - metadata.language = parts[#parts] + metadata["injection.language"] = parts[#parts] end end, true) @@ -172,7 +172,7 @@ query.add_directive("set-lang-from-info-string!", function(match, _, bufnr, pred return end local injection_alias = vim.treesitter.get_node_text(node, bufnr) - metadata.language = get_parser_from_markdown_info_string(injection_alias) + metadata["injection.language"] = get_parser_from_markdown_info_string(injection_alias) end, true) -- Just avoid some annoying warnings for this directive @@ -211,37 +211,6 @@ query.add_directive("downcase!", function(match, _, bufnr, pred, metadata) end end, true) ----@param match (TSNode|nil)[] ----@param _pattern string ----@param _bufnr integer ----@param pred string[] ----@param metadata table ----@return boolean|nil -query.add_directive("exclude_children!", function(match, _pattern, _bufnr, pred, metadata) - local capture_id = pred[2] - local node = match[capture_id] - local start_row, start_col, end_row, end_col = node:range() - local ranges = {} - for i = 0, node:named_child_count() - 1 do - local child = node:named_child(i) ---@type TSNode - local child_start_row, child_start_col, child_end_row, child_end_col = child:range() - if child_start_row > start_row or child_start_col > start_col then - table.insert(ranges, { - start_row, - start_col, - child_start_row, - child_start_col, - }) - end - start_row = child_end_row - start_col = child_end_col - end - if end_row > start_row or end_col > start_col then - table.insert(ranges, { start_row, start_col, end_row, end_col }) - end - metadata.content = ranges -end, true) - -- Trim blank lines from end of the region -- Arguments are the captures to trim. ---@param match (TSNode|nil)[] diff --git a/queries/arduino/injections.scm b/queries/arduino/injections.scm index 240162b9b..15d3b1670 100644 --- a/queries/arduino/injections.scm +++ b/queries/arduino/injections.scm @@ -1,6 +1,15 @@ -((preproc_def (preproc_arg) @arduino) - (#lua-match? @arduino "\n")) -(preproc_function_def (preproc_arg) @arduino) -(preproc_call (preproc_arg) @arduino) +((preproc_def + (preproc_arg) @injection.content) + (#lua-match? @injection.content "\n") + (#set! injection.language "arduino")) -(comment) @comment +(preproc_function_def + (preproc_arg) @injection.content + (#set! injection.language "arduino")) + +(preproc_call + (preproc_arg) @injection.content + (#set! injection.language "arduino")) + +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/astro/injections.scm b/queries/astro/injections.scm index 60ea3f5c6..b8f1ccefc 100644 --- a/queries/astro/injections.scm +++ b/queries/astro/injections.scm @@ -1,19 +1,23 @@ -; inherits: html +; inherits: html_tags -((frontmatter - (raw_text) @typescript)) +(frontmatter + (raw_text) @injection.content + (#set! injection.language "typescript")) -((interpolation - (raw_text) @tsx)) +(interpolation + (raw_text) @injection.content + (#set! injection.language "tsx")) -((script_element - (raw_text) @typescript)) +(script_element + (raw_text) @injection.content + (#set! injection.language "typescript")) -((style_element - (start_tag - (attribute - (attribute_name) @_lang_attr - (quoted_attribute_value (attribute_value) @_lang_value))) - (raw_text) @scss) +(style_element + (start_tag + (attribute + (attribute_name) @_lang_attr + (quoted_attribute_value (attribute_value) @_lang_value))) + (raw_text) @injection.content (#eq? @_lang_attr "lang") - (#eq? @_lang_value "scss")) + (#eq? @_lang_value "scss") + (#set! injection.language "scss")) diff --git a/queries/awk/injections.scm b/queries/awk/injections.scm index 8cbffc623..e5e2b4d02 100644 --- a/queries/awk/injections.scm +++ b/queries/awk/injections.scm @@ -1,2 +1,5 @@ -(comment) @comment -(regex) @regex +((comment) @injection.content + (#set! injection.language "comment")) + +((regex) @injection.content + (#set! injection.language "regex")) diff --git a/queries/bash/injections.scm b/queries/bash/injections.scm index 86371b905..e5e2b4d02 100644 --- a/queries/bash/injections.scm +++ b/queries/bash/injections.scm @@ -1,3 +1,5 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) -(regex) @regex +((regex) @injection.content + (#set! injection.language "regex")) diff --git a/queries/bass/injections.scm b/queries/bass/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/bass/injections.scm +++ b/queries/bass/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/bicep/injections.scm b/queries/bicep/injections.scm index c85cfe3b6..d3ff30b60 100644 --- a/queries/bicep/injections.scm +++ b/queries/bicep/injections.scm @@ -1,4 +1,5 @@ -[ - (comment) - (diagnostic_comment) -] @comment +([ + (comment) + (diagnostic_comment) + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/c/injections.scm b/queries/c/injections.scm index 2ef8f85c1..a1913e664 100644 --- a/queries/c/injections.scm +++ b/queries/c/injections.scm @@ -1,10 +1,21 @@ -((preproc_def (preproc_arg) @c) - (#lua-match? @c "\n")) -(preproc_function_def (preproc_arg) @c) -(preproc_call (preproc_arg) @c) +((preproc_def + (preproc_arg) @injection.content) + (#lua-match? @injection.content "\n") + (#set! injection.language "c")) -(comment) @comment +(preproc_function_def + (preproc_arg) @injection.content + (#set! injection.language "c")) + +(preproc_call + (preproc_arg) @injection.content + (#set! injection.language "c")) + +((comment) @injection.content + (#set! injection.language "comment")) ; TODO: add when asm is added -; (gnu_asm_expression assembly_code: (string_literal) @asm) -; (gnu_asm_expression assembly_code: (concatenated_string (string_literal) @asm)) +; (gnu_asm_expression assembly_code: (string_literal) @injection.content +; (#set! injection.language "asm")) +; (gnu_asm_expression assembly_code: (concatenated_string (string_literal) @injection.content) +; (#set! injection.language "asm")) diff --git a/queries/c_sharp/injections.scm b/queries/c_sharp/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/c_sharp/injections.scm +++ b/queries/c_sharp/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/capnp/injections.scm b/queries/capnp/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/capnp/injections.scm +++ b/queries/capnp/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/chatito/injections.scm b/queries/chatito/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/chatito/injections.scm +++ b/queries/chatito/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/clojure/injections.scm b/queries/clojure/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/clojure/injections.scm +++ b/queries/clojure/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/cpon/injections.scm b/queries/cpon/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/cpon/injections.scm +++ b/queries/cpon/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/cpp/injections.scm b/queries/cpp/injections.scm index 1d8e11cb3..2349c92bf 100644 --- a/queries/cpp/injections.scm +++ b/queries/cpp/injections.scm @@ -1,10 +1,19 @@ -((preproc_def (preproc_arg) @cpp) - (#lua-match? @cpp "\n")) -(preproc_function_def (preproc_arg) @cpp) -(preproc_call (preproc_arg) @cpp) +((preproc_def + (preproc_arg) @injection.content) + (#lua-match? @injection.content "\n") + (#set! injection.language "cpp")) -(comment) @comment +(preproc_function_def + (preproc_arg) @injection.content + (#set! injection.language "cpp")) + +(preproc_call + (preproc_arg) @injection.content + (#set! injection.language "cpp")) + +((comment) @injection.content + (#set! injection.language "comment")) (raw_string_literal - delimiter: (raw_string_delimiter) @language - (raw_string_content) @content) + delimiter: (raw_string_delimiter) @injection.language + (raw_string_content) @injection.content) diff --git a/queries/css/injections.scm b/queries/css/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/css/injections.scm +++ b/queries/css/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/cuda/injections.scm b/queries/cuda/injections.scm index 09deac468..bb37accb1 100644 --- a/queries/cuda/injections.scm +++ b/queries/cuda/injections.scm @@ -1,6 +1,15 @@ -((preproc_def (preproc_arg) @cuda) - (#lua-match? @cuda "\n")) -(preproc_function_def (preproc_arg) @cuda) -(preproc_call (preproc_arg) @cuda) +((preproc_def + (preproc_arg) @injection.content) + (#lua-match? @injection.content "\n") + (#set! injection.language "cuda")) -(comment) @comment +(preproc_function_def + (preproc_arg) @injection.content + (#set! injection.language "cuda")) + +(preproc_call + (preproc_arg) @injection.content + (#set! injection.language "cuda")) + +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/cue/injections.scm b/queries/cue/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/cue/injections.scm +++ b/queries/cue/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/d/injections.scm b/queries/d/injections.scm index d95514370..6dd8aeacf 100644 --- a/queries/d/injections.scm +++ b/queries/d/injections.scm @@ -1,7 +1,9 @@ -[ +([ (line_comment) (block_comment) (nesting_block_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) -(token_string_tokens) @d +((token_string_tokens) @injection.content + (#set! injection.language "d")) diff --git a/queries/dart/injections.scm b/queries/dart/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/dart/injections.scm +++ b/queries/dart/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/devicetree/injections.scm b/queries/devicetree/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/devicetree/injections.scm +++ b/queries/devicetree/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/dhall/injections.scm b/queries/dhall/injections.scm index e48ce9af3..43ae7287b 100644 --- a/queries/dhall/injections.scm +++ b/queries/dhall/injections.scm @@ -1,4 +1,5 @@ -[ +([ (line_comment) (block_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/dockerfile/injections.scm b/queries/dockerfile/injections.scm index c1fdd3f99..2a48ec4f6 100644 --- a/queries/dockerfile/injections.scm +++ b/queries/dockerfile/injections.scm @@ -1,3 +1,5 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) -(shell_command) @bash +((shell_command) @injection.content + (#set! injection.language "bash")) diff --git a/queries/dot/injections.scm b/queries/dot/injections.scm index 529d04d4a..ac41393ab 100644 --- a/queries/dot/injections.scm +++ b/queries/dot/injections.scm @@ -1,2 +1,5 @@ -(html_internal) @html -(comment) @comment +((html_internal) @injection.content + (#set! injection.language "html")) + +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/ecma/injections.scm b/queries/ecma/injections.scm index ba0ea4fa1..3b55295ce 100644 --- a/queries/ecma/injections.scm +++ b/queries/ecma/injections.scm @@ -1,59 +1,67 @@ (((comment) @_jsdoc_comment - (#lua-match? @_jsdoc_comment "^/[*][*][^*].*[*]/$")) @jsdoc) + (#lua-match? @_jsdoc_comment "^/[*][*][^*].*[*]/$")) @injection.content + (#set! injection.language "jsdoc")) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) ; html(`...`), html`...`, sql(...) etc (call_expression - function: ((identifier) @language) + function: ((identifier) @injection.language) arguments: [ (arguments - (template_string) @content) - (template_string) @content + (template_string) @injection.content) + (template_string) @injection.content ] - (#offset! @content 0 1 0 -1) - (#not-eq? @content "svg")) + (#offset! @injection.content 0 1 0 -1) + (#not-eq? @injection.language "svg")) ; svg`...` or svg(`...`), which uses the html parser, so is not included in the previous query (call_expression function: ((identifier) @_name (#eq? @_name "svg")) arguments: [ (arguments - (template_string) @html) - (template_string) @html + (template_string) @injection.content) + (template_string) @injection.content ] - (#offset! @html 0 1 0 -1)) + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "html")) (call_expression function: ((identifier) @_name (#eq? @_name "gql")) - arguments: ((template_string) @graphql - (#offset! @graphql 0 1 0 -1))) + arguments: ((template_string) @injection.content + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "graphql"))) (call_expression function: ((identifier) @_name (#eq? @_name "hbs")) - arguments: ((template_string) @glimmer - (#offset! @glimmer 0 1 0 -1))) + arguments: ((template_string) @injection.content + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "glimmer"))) -((glimmer_template) @glimmer) +((glimmer_template) @injection.content + (#set! injection.language "glimmer")) ; styled.div`<css>` (call_expression function: (member_expression object: (identifier) @_name (#eq? @_name "styled")) - arguments: ((template_string) @css - (#offset! @css 0 1 0 -1))) + arguments: ((template_string) @injection.content + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "css"))) ; styled(Component)`<css>` (call_expression function: (call_expression function: (identifier) @_name (#eq? @_name "styled")) - arguments: ((template_string) @css - (#offset! @css 0 1 0 -1))) + arguments: ((template_string) @injection.content + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "css"))) ; styled.div.attrs({ prop: "foo" })`<css>` (call_expression @@ -62,8 +70,9 @@ object: (member_expression object: (identifier) @_name (#eq? @_name "styled")))) - arguments: ((template_string) @css - (#offset! @css 0 1 0 -1))) + arguments: ((template_string) @injection.content + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "css"))) ; styled(Component).attrs({ prop: "foo" })`<css>` @@ -73,31 +82,34 @@ object: (call_expression function: (identifier) @_name (#eq? @_name "styled")))) - arguments: ((template_string) @css - (#offset! @css 0 1 0 -1))) + arguments: ((template_string) @injection.content + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "css"))) -(regex_pattern) @regex +((regex_pattern) @injection.content + (#set! injection.language "regex")) ; ((comment) @_gql_comment ; (#eq? @_gql_comment "/* GraphQL */") -; (template_string) @graphql) +; (template_string) @injection.content +; (#set! injection.language "graphql")) -((template_string) @graphql - (#lua-match? @graphql "^`#graphql") - (#offset! @graphql 0 1 0 -1)) +((template_string) @injection.content + (#lua-match? @injection.content "^`#graphql") + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "graphql")) ; el.innerHTML = `<html>` -(assignment_expression - left: (member_expression - property: (property_identifier) @_prop - (#any-of? @_prop "innerHTML" "outerHTML")) - right: (template_string) @html - (#offset! @html 0 1 0 -1)) - ; el.innerHTML = '<html>' (assignment_expression - left: (member_expression - property: (property_identifier) @_prop - (#any-of? @_prop "innerHTML" "outerHTML")) - right: (string) @html - (#offset! @html 0 1 0 -1)) + left: + (member_expression + property: (property_identifier) @_prop + (#any-of? @_prop "outerHTML" "innerHTML")) + right: + [ + (template_string) + (string) + ] @injection.content + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "html")) diff --git a/queries/eex/injections.scm b/queries/eex/injections.scm index f43206f55..9331f5925 100644 --- a/queries/eex/injections.scm +++ b/queries/eex/injections.scm @@ -1,5 +1,8 @@ ; EEx expressions are Elixir -(expression) @elixir +((expression) @injection.content + (#set! injection.language "elixir")) ; EEx expressions can span multiple interpolated lines -(partial_expression) @elixir @combined +((partial_expression) @injection.content + (#set! injection.language "elixir") + (#set! injection.combined)) diff --git a/queries/elixir/injections.scm b/queries/elixir/injections.scm index 423fddea7..1f0b31f07 100644 --- a/queries/elixir/injections.scm +++ b/queries/elixir/injections.scm @@ -1,5 +1,6 @@ ; Comments -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) ; Documentation (unary_operator @@ -7,42 +8,49 @@ operand: (call target: ((identifier) @_identifier (#any-of? @_identifier "moduledoc" "typedoc" "shortdoc" "doc")) (arguments [ - (string (quoted_content) @markdown) - (sigil (quoted_content) @markdown) - ]))) + (string (quoted_content) @injection.content) + (sigil (quoted_content) @injection.content) + ]) + (#set! injection.language "markdown"))) ; HEEx (sigil (sigil_name) @_sigil_name - (quoted_content) @heex -(#eq? @_sigil_name "H")) + (quoted_content) @injection.content + (#eq? @_sigil_name "H") + (#set! injection.language "heex")) ; Surface (sigil (sigil_name) @_sigil_name - (quoted_content) @surface -(#eq? @_sigil_name "F")) + (quoted_content) @injection.content + (#eq? @_sigil_name "F") + (#set! injection.language "surface")) ; Zigler (sigil (sigil_name) @_sigil_name - (quoted_content) @eex -(#any-of? @_sigil_name "E" "L")) + (quoted_content) @injection.content + (#any-of? @_sigil_name "E" "L") + (#set! injection.language "eex")) (sigil (sigil_name) @_sigil_name - (quoted_content) @zig -(#any-of? @_sigil_name "z" "Z")) + (quoted_content) @injection.content + (#any-of? @_sigil_name "z" "Z") + (#set! injection.language "zig")) ; Regex (sigil (sigil_name) @_sigil_name - (quoted_content) @regex -(#any-of? @_sigil_name "r" "R")) + (quoted_content) @injection.content + (#any-of? @_sigil_name "r" "R") + (#set! injection.language "regex")) -; Jason +; Json (sigil (sigil_name) @_sigil_name - (quoted_content) @json -(#any-of? @_sigil_name "j" "J")) + (quoted_content) @injection.content + (#any-of? @_sigil_name "j" "J") + (#set! injection.language "json")) diff --git a/queries/elm/injections.scm b/queries/elm/injections.scm index 6395776e1..b8b3e9943 100644 --- a/queries/elm/injections.scm +++ b/queries/elm/injections.scm @@ -1,3 +1,8 @@ -[(line_comment) (block_comment)] @comment +([ + (line_comment) + (block_comment) + ] @injection.content + (#set! injection.language "comment")) -(glsl_content) @glsl +((glsl_content) @injection.content + (#set! injection.language "glsl")) diff --git a/queries/elsa/injections.scm b/queries/elsa/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/elsa/injections.scm +++ b/queries/elsa/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/elvish/injections.scm b/queries/elvish/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/elvish/injections.scm +++ b/queries/elvish/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/embedded_template/injections.scm b/queries/embedded_template/injections.scm index d55c87e09..2824f7a00 100644 --- a/queries/embedded_template/injections.scm +++ b/queries/embedded_template/injections.scm @@ -1,2 +1,7 @@ -(content) @html @combined -(code) @ruby @combined +((content) @injection.content + (#set! injection.language "html") + (#set! injection.combined)) + +((code) @injection.content + (#set! injection.language "ruby") + (#set! injection.combined)) diff --git a/queries/fennel/injections.scm b/queries/fennel/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/fennel/injections.scm +++ b/queries/fennel/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/firrtl/injections.scm b/queries/firrtl/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/firrtl/injections.scm +++ b/queries/firrtl/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/fish/injections.scm b/queries/fish/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/fish/injections.scm +++ b/queries/fish/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/foam/injections.scm b/queries/foam/injections.scm index 4afdb63b0..2d744f6af 100644 --- a/queries/foam/injections.scm +++ b/queries/foam/injections.scm @@ -1,12 +1,20 @@ ;; Pass code blocks to Cpp highlighter -(code (code_body) @cpp) +(code + (code_body) @injection.content + (#set! injection.language "cpp")) ;; Pass identifiers to Go highlighter (Cheating I know) -;;((identifier) @lua) +;; ((identifier) @injection.content +;; (#set! injection.language "lua") ;; Highlight regex syntax inside literal strings -((string_literal) @regex) +((string_literal) @injection.content + (#set! injection.language "regex")) ;; Highlight PyFoam syntax as Python statements -(pyfoam_variable code_body: (_) @python) -(pyfoam_expression code_body: (_) @python) +(pyfoam_variable + code_body: (_) @injection.content + (#set! injection.language "python")) +(pyfoam_expression + code_body: (_) @injection.content + (#set! injection.language "python")) diff --git a/queries/gdscript/injections.scm b/queries/gdscript/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/gdscript/injections.scm +++ b/queries/gdscript/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/git_rebase/injections.scm b/queries/git_rebase/injections.scm index 27388618e..8e6815a68 100644 --- a/queries/git_rebase/injections.scm +++ b/queries/git_rebase/injections.scm @@ -1,5 +1,6 @@ ((operation (command) @_command - (message) @bash) + (message) @injection.content) +(#set! injection.language "bash") (#any-of? @_command "exec" "x")) diff --git a/queries/gitattributes/injections.scm b/queries/gitattributes/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/gitattributes/injections.scm +++ b/queries/gitattributes/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/gitcommit/injections.scm b/queries/gitcommit/injections.scm index eecdeee47..5e56dfa5f 100644 --- a/queries/gitcommit/injections.scm +++ b/queries/gitcommit/injections.scm @@ -1,2 +1,5 @@ -((diff) @diff (#exclude_children! @diff)) -(rebase_command) @git_rebase +((diff) @injection.content + (#set! injection.language "diff")) + +((rebase_command) @injection.content + (#set! injection.language "git_rebase")) diff --git a/queries/gleam/injections.scm b/queries/gleam/injections.scm index ed4c2de91..378240e38 100644 --- a/queries/gleam/injections.scm +++ b/queries/gleam/injections.scm @@ -1,6 +1,7 @@ ; Comments -[ +([ (module_comment) (statement_comment) (comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/glsl/injections.scm b/queries/glsl/injections.scm index 6d022021d..f9061052c 100644 --- a/queries/glsl/injections.scm +++ b/queries/glsl/injections.scm @@ -1,6 +1,15 @@ -((preproc_def (preproc_arg) @glsl) - (#lua-match? @glsl "\n")) -(preproc_function_def (preproc_arg) @glsl) -(preproc_call (preproc_arg) @glsl) +((preproc_def + (preproc_arg) @injection.content) + (#lua-match? @injection.content "\n") + (#set! injection.language "glsl")) -(comment) @comment +(preproc_function_def + (preproc_arg) @injection.content + (#set! injection.language "glsl")) + +(preproc_call + (preproc_arg) @injection.content + (#set! injection.language "glsl")) + +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/go/injections.scm b/queries/go/injections.scm index e0bdc99b9..68aa552cd 100644 --- a/queries/go/injections.scm +++ b/queries/go/injections.scm @@ -1,4 +1,5 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) (call_expression (selector_expression) @_function (#any-of? @_function @@ -10,4 +11,10 @@ "regexp.MustCompile" "regexp.MustCompilePOSIX") (argument_list - . [(raw_string_literal) (interpreted_string_literal)] @regex (#offset! @regex 0 1 0 -1))) + . + [ + (raw_string_literal) + (interpreted_string_literal) + ] @injection.content + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "regex"))) diff --git a/queries/gomod/injections.scm b/queries/gomod/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/gomod/injections.scm +++ b/queries/gomod/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/gowork/injections.scm b/queries/gowork/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/gowork/injections.scm +++ b/queries/gowork/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/graphql/injections.scm b/queries/graphql/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/graphql/injections.scm +++ b/queries/graphql/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/groovy/injections.scm b/queries/groovy/injections.scm index 0a63c9bfe..0f3127b6b 100644 --- a/queries/groovy/injections.scm +++ b/queries/groovy/injections.scm @@ -1,4 +1,5 @@ -[ - (block_comment) - (line_comment) -] @comment +((line_comment) @injection.content + (#set! injection.language "comment")) + +((block_comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/hare/injections.scm b/queries/hare/injections.scm index 2992a948d..d3befb39b 100644 --- a/queries/hare/injections.scm +++ b/queries/hare/injections.scm @@ -1,8 +1,10 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) ((call_expression . (_) @_fnname . "(" - . (_ [(string_content) (raw_string_content)] @regex) + . (_ [(string_content) (raw_string_content)] @injection.content) . ")") - (#any-of? @_fnname "compile" "regex::compile")) + (#any-of? @_fnname "compile" "regex::compile") + (#set! injection.language "regex")) diff --git a/queries/haskell/injections.scm b/queries/haskell/injections.scm index f210566c4..bc70e012f 100644 --- a/queries/haskell/injections.scm +++ b/queries/haskell/injections.scm @@ -2,11 +2,12 @@ ;; General language injection (quasiquote - ((quoter) @language) - ((quasiquote_body) @content) + ((quoter) @injection.language) + ((quasiquote_body) @injection.content) ) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) ;; ----------------------------------------------------------------------------- ;; shakespeare library @@ -17,35 +18,36 @@ ; (quasiquote ; (quoter) @_name ; (#eq? @_name "coffee") -; ((quasiquote_body) @coffeescript) +; ((quasiquote_body) @injection.content +; (#set! injection.language "coffeescript"))) ; CSS: Text.Cassius, Text.Lucius (quasiquote (quoter) @_name (#any-of? @_name "cassius" "lucius") - ((quasiquote_body) @css) -) + ((quasiquote_body) @injection.content) + (#set! injection.language "css")) ; HTML: Text.Hamlet (quasiquote (quoter) @_name (#any-of? @_name "shamlet" "xshamlet" "hamlet" "xhamlet" "ihamlet") - ((quasiquote_body) @html) -) + ((quasiquote_body) @injection.content) + (#set! injection.language "html")) ; JS: Text.Julius (quasiquote (quoter) @_name (#any-of? @_name "js" "julius") - ((quasiquote_body) @javascript) -) + ((quasiquote_body) @injection.content) + (#set! injection.language "javascript")) ; TS: Text.TypeScript (quasiquote (quoter) @_name (#any-of? @_name "tsc" "tscJSX") - ((quasiquote_body) @typescript) -) + ((quasiquote_body) @injection.content) + (#set! injection.language "typescript")) ;; ----------------------------------------------------------------------------- @@ -54,8 +56,8 @@ (quasiquote (quoter) @_name (#eq? @_name "hsx") - ((quasiquote_body) @html) -) + ((quasiquote_body) @injection.content) + (#set! injection.language "html")) ;; ----------------------------------------------------------------------------- ;; Inline JSON from aeson @@ -63,8 +65,8 @@ (quasiquote (quoter) @_name (#eq? @_name "aesonQQ") - ((quasiquote_body) @json) -) + ((quasiquote_body) @injection.content) + (#set! injection.language "json")) ;; ----------------------------------------------------------------------------- @@ -72,14 +74,12 @@ ; postgresql-simple (quasiquote - (quoter) @_name - (#eq? @_name "sql") - ((quasiquote_body) @sql) -) + (quoter) @injection.language + (#eq? @injection.language "sql") + ((quasiquote_body) @injection.content)) -; persistent (quasiquote - (quoter) @_name - (#any-of? @_name "persistUpperCase" "persistLowerCase" "persistWith") - ((quasiquote_body) @haskell_persistent) -) + (quoter) @_name + (#any-of? @_name "persistUpperCase" "persistLowerCase" "persistWith") + ((quasiquote_body) @injection.content) + (#set! injection.language "haskell_persistent")) diff --git a/queries/hcl/injections.scm b/queries/hcl/injections.scm index 94451beb4..fd881d503 100644 --- a/queries/hcl/injections.scm +++ b/queries/hcl/injections.scm @@ -1,7 +1,7 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) (heredoc_template - (template_literal) @content - (heredoc_identifier) @language - (#set! "language" @language) - (#downcase! "language")) + (template_literal) @injection.content + (heredoc_identifier) @injection.language + (#downcase! @injection.language)) diff --git a/queries/heex/injections.scm b/queries/heex/injections.scm index fffd1dc53..1aa822197 100644 --- a/queries/heex/injections.scm +++ b/queries/heex/injections.scm @@ -2,10 +2,15 @@ (directive [ (expression_value) (partial_expression_value) -] @elixir @combined) +] @injection.content + (#set! injection.language "elixir") + (#set! injection.combined)) ; HEEx Elixir expressions are always within a tag or component -(expression (expression_value) @elixir) +(expression + (expression_value) @injection.content + (#set! injection.language "elixir")) ; HEEx comments -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/hjson/injections.scm b/queries/hjson/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/hjson/injections.scm +++ b/queries/hjson/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/hlsl/injections.scm b/queries/hlsl/injections.scm index 52e88686c..9a9fcd6e8 100644 --- a/queries/hlsl/injections.scm +++ b/queries/hlsl/injections.scm @@ -1,6 +1,15 @@ -((preproc_def (preproc_arg) @hlsl) - (#lua-match? @hlsl "\n")) -(preproc_function_def (preproc_arg) @hlsl) -(preproc_call (preproc_arg) @hlsl) +((preproc_def + (preproc_arg) @injection.content) + (#lua-match? @injection.content "\n") + (#set! injection.language "hlsl")) -(comment) @comment +(preproc_function_def + (preproc_arg) @injection.content + (#set! injection.language "hlsl")) + +(preproc_call + (preproc_arg) @injection.content + (#set! injection.language "hlsl")) + +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/hocon/injections.scm b/queries/hocon/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/hocon/injections.scm +++ b/queries/hocon/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/html/injections.scm b/queries/html/injections.scm index 23981018c..eba8395a4 100644 --- a/queries/html/injections.scm +++ b/queries/html/injections.scm @@ -3,8 +3,10 @@ (element (start_tag (tag_name) @_py_script) - (text) @python - (#any-of? @_py_script "py-script" "py-repl")) + (text) @injection.content + (#any-of? @_py_script "py-script" "py-repl") + (#set! injection.language "python") + (#set! injection.include-children)) (script_element (start_tag @@ -12,13 +14,17 @@ (attribute_name) @_attr (quoted_attribute_value (attribute_value) @_type))) - (raw_text) @python + (raw_text) @injection.content (#eq? @_attr "type") ; not adding type="py" here as it's handled by html_tags - (#any-of? @_type "pyscript" "py-script")) + (#any-of? @_type "pyscript" "py-script") + (#set! injection.language "python") + (#set! injection.include-children)) (element (start_tag (tag_name) @_py_config) - (text) @toml - (#eq? @_py_config "py-config")) + (text) @injection.content + (#eq? @_py_config "py-config") + (#set! injection.language "toml") + (#set! injection.include-children)) diff --git a/queries/html_tags/injections.scm b/queries/html_tags/injections.scm index 29608a5a4..5b9e5350f 100644 --- a/queries/html_tags/injections.scm +++ b/queries/html_tags/injections.scm @@ -2,73 +2,84 @@ ; <style blocking> ...</style> ; Add "lang" to predicate check so that vue/svelte can inherit this ; without having this element being captured twice -( - (style_element +((style_element (start_tag) @_no_type_lang - (#not-lua-match? @_no_type_lang "%slang%s*=") - (#not-lua-match? @_no_type_lang "%stype%s*=") - (raw_text) @css)) + (raw_text) @injection.content) + (#not-lua-match? @_no_type_lang "%slang%s*=") + (#not-lua-match? @_no_type_lang "%stype%s*=") + (#set! injection.language "css") + (#set! injection.include-children)) -( - (style_element - (start_tag - (attribute - (attribute_name) @_type - (quoted_attribute_value (attribute_value) @_css))) - (raw_text) @css) - (#eq? @_type "type") - (#eq? @_css "text/css") -) +((style_element + (start_tag + (attribute + (attribute_name) @_type + (quoted_attribute_value (attribute_value) @_css))) + (raw_text) @injection.content) + (#eq? @_type "type") + (#eq? @_css "text/css") + (#set! injection.language "css") + (#set! injection.include-children)) ; <script>...</script> ; <script defer>...</script> -( - (script_element - (start_tag) @_no_type_lang - (#not-lua-match? @_no_type_lang "%slang%s*=") - (#not-lua-match? @_no_type_lang "%stype%s*=") - (raw_text) @javascript)) +((script_element + (start_tag) @_no_type_lang + (raw_text) @injection.content) + (#not-lua-match? @_no_type_lang "%slang%s*=") + (#not-lua-match? @_no_type_lang "%stype%s*=") + (#set! injection.language "javascript") + (#set! injection.include-children)) ; <script type="mimetype-or-well-known-script-type"> (script_element - (start_tag - ((attribute - (attribute_name) @_attr (#eq? @_attr "type") - (quoted_attribute_value (attribute_value) @_type)))) - (raw_text) @content (#set-lang-from-mimetype! @_type)) + (start_tag + ((attribute + (attribute_name) @_attr (#eq? @_attr "type") + (quoted_attribute_value (attribute_value) @_type)))) + (raw_text) @injection.content (#set-lang-from-mimetype! @_type) + (#set! injection.include-children)) ; <a style="/* css */"> ((attribute (attribute_name) @_attr - (quoted_attribute_value (attribute_value) @css)) - (#eq? @_attr "style")) + (quoted_attribute_value (attribute_value) @injection.content)) + (#eq? @_attr "style") + (#set! injection.language "css") + (#set! injection.include-children)) ; lit-html style template interpolation ; <a @click=${e => console.log(e)}> ; <a @click="${e => console.log(e)}"> ((attribute - (quoted_attribute_value (attribute_value) @javascript)) - (#lua-match? @javascript "%${") - (#offset! @javascript 0 2 0 -1)) -((attribute - (attribute_value) @javascript) - (#lua-match? @javascript "%${") - (#offset! @javascript 0 2 0 -2)) + (quoted_attribute_value (attribute_value) @injection.content)) + (#lua-match? @injection.content "%${") + (#offset! @injection.content 0 2 0 -1) + (#set! injection.language "javascript") + (#set! injection.include-children)) -(comment) @comment +((attribute + (attribute_value) @injection.content) + (#lua-match? @injection.content "%${") + (#offset! @injection.content 0 2 0 -2) + (#set! injection.language "javascript") + (#set! injection.include-children)) ; <input pattern="[0-9]"> or <input pattern=[0-9]> (element (_ (tag_name) @_tagname (#eq? @_tagname "input") ((attribute (attribute_name) @_attr [ - (quoted_attribute_value (attribute_value) @regex) - (attribute_value) @regex + (quoted_attribute_value (attribute_value) @injection.content) + (attribute_value) @injection.content ] (#eq? @_attr "pattern"))) -)) + (#set! injection.language "regex") + (#set! injection.include-children))) ; <input type="checkbox" onchange="this.closest('form').elements.output.value = this.checked"> (attribute (attribute_name) @_name (#lua-match? @_name "^on[a-z]+$") - (quoted_attribute_value (attribute_value) @javascript)) + (quoted_attribute_value (attribute_value) @injection.content) + (#set! injection.language "javascript") + (#set! injection.include-children)) diff --git a/queries/htmldjango/injections.scm b/queries/htmldjango/injections.scm index 6e49e8dcd..f08227342 100644 --- a/queries/htmldjango/injections.scm +++ b/queries/htmldjango/injections.scm @@ -1 +1,3 @@ -(content) @html @combined +((content) @injection.content + (#set! injection.language "html") + (#set! injection.combined)) diff --git a/queries/http/injections.scm b/queries/http/injections.scm index db35379f7..7f06e336d 100644 --- a/queries/http/injections.scm +++ b/queries/http/injections.scm @@ -1,7 +1,11 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) -(json_body) @json +((json_body) @injection.content + (#set! injection.language "json")) -; (xml_body) @xml +; ((xml_body) @injection.content +; (#set! injection.language "xml")) -; (graphql_body) @graphql Not used as of now.. +; ((graphql_body) @injection.content +; (#set! injection.language "graphql")) ; Not used as of now.. diff --git a/queries/hurl/injections.scm b/queries/hurl/injections.scm index 933633e03..3d961258f 100644 --- a/queries/hurl/injections.scm +++ b/queries/hurl/injections.scm @@ -1,7 +1,11 @@ ; injections.scm -(json_value) @json -(xml) @html +((json_value) @injection.content + (#set! injection.language "json")) + +((xml) @injection.content + (#set! injection.language "html")) (multiline_string - (multiline_string_type) @language - (multiline_string_content) @content) + (multiline_string_type) @_lang + (multiline_string_content) @injection.content + (#inject-language! @_lang)) diff --git a/queries/janet_simple/injections.scm b/queries/janet_simple/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/janet_simple/injections.scm +++ b/queries/janet_simple/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/java/injections.scm b/queries/java/injections.scm index 0a63c9bfe..988d370f0 100644 --- a/queries/java/injections.scm +++ b/queries/java/injections.scm @@ -1,4 +1,5 @@ -[ +([ (block_comment) (line_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/jq/injections.scm b/queries/jq/injections.scm index 5b3913967..072d38e24 100644 --- a/queries/jq/injections.scm +++ b/queries/jq/injections.scm @@ -1,4 +1,4 @@ -(comment) @comment +((comment) @injection.content (#set! injection.language "comment")) ; test(val) (query @@ -12,7 +12,10 @@ "splits" "sub" "gsub")) - (args . (query (string) @regex))) + (args . + (query + (string) @injection.content + (#set! injection.language "regex")))) ; test(regex; flags) @@ -28,4 +31,6 @@ "sub" "gsub")) (args . (args - (query (string) @regex)))) + (query + (string) @injection.content + (#set! injection.language "regex"))))) diff --git a/queries/json5/injections.scm b/queries/json5/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/json5/injections.scm +++ b/queries/json5/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/jsonc/injections.scm b/queries/jsonc/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/jsonc/injections.scm +++ b/queries/jsonc/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/jsx/injections.scm b/queries/jsx/injections.scm index 3a96931b0..e20408a66 100644 --- a/queries/jsx/injections.scm +++ b/queries/jsx/injections.scm @@ -3,6 +3,7 @@ (jsx_opening_element (identifier) @_name (#eq? @_name "style") (jsx_attribute) @_attr (#eq? @_attr "jsx")) - (jsx_expression (template_string) @css - (#offset! @css 0 1 0 -1)) -) + (jsx_expression + ((template_string) @injection.content + (#set! injection.language "css")) + (#offset! @injection.content 0 1 0 -1))) diff --git a/queries/julia/injections.scm b/queries/julia/injections.scm index 0dfd323ff..82e1503fc 100644 --- a/queries/julia/injections.scm +++ b/queries/julia/injections.scm @@ -1,5 +1,5 @@ ;; Inject markdown in docstrings -((string_literal) @markdown +((string_literal) @injection.content . [ (module_definition) (abstract_definition) @@ -9,15 +9,18 @@ (assignment) (const_statement) ] - (#lua-match? @markdown "^\"\"\"") - (#offset! @markdown 0 3 0 -3)) + (#lua-match? @injection.content "^\"\"\"") + (#set! injection.language "markdown") + (#offset! @injection.content 0 3 0 -3)) -[ +([ (line_comment) (block_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) ((prefixed_string_literal - prefix: (identifier) @_prefix) @regex + prefix: (identifier) @_prefix) @injection.content (#eq? @_prefix "r") - (#offset! @regex 0 2 0 -1)) + (#set! injection.language "regex") + (#offset! @injection.content 0 2 0 -1)) diff --git a/queries/kdl/injections.scm b/queries/kdl/injections.scm index e8f3c2ea7..46674768d 100644 --- a/queries/kdl/injections.scm +++ b/queries/kdl/injections.scm @@ -1,4 +1,5 @@ -[ +([ (single_line_comment) (multi_line_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/kotlin/injections.scm b/queries/kotlin/injections.scm index 7ba4d9494..757259d10 100644 --- a/queries/kotlin/injections.scm +++ b/queries/kotlin/injections.scm @@ -1,35 +1,36 @@ -[ +([ (line_comment) (multiline_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) ; There are 3 ways to define a regex ; - "[abc]?".toRegex() (call_expression - (navigation_expression - ((string_literal) @regex) - (navigation_suffix - ((simple_identifier) @_function - (#eq? @_function "toRegex"))))) + (navigation_expression + ((string_literal) @injection.content (#set! injection.language "regex")) + (navigation_suffix + ((simple_identifier) @_function + (#eq? @_function "toRegex"))))) ; - Regex("[abc]?") (call_expression - ((simple_identifier) @_function - (#eq? @_function "Regex")) - (call_suffix - (value_arguments - (value_argument - (string_literal) @regex)))) + ((simple_identifier) @_function + (#eq? @_function "Regex")) + (call_suffix + (value_arguments + (value_argument + (string_literal) @injection.content (#set! injection.language "regex"))))) ; - Regex.fromLiteral("[abc]?") (call_expression - (navigation_expression - ((simple_identifier) @_class - (#eq? @_class "Regex")) - (navigation_suffix - ((simple_identifier) @_function - (#eq? @_function "fromLiteral")))) - (call_suffix - (value_arguments - (value_argument - (string_literal) @regex)))) + (navigation_expression + ((simple_identifier) @_class + (#eq? @_class "Regex")) + (navigation_suffix + ((simple_identifier) @_function + (#eq? @_function "fromLiteral")))) + (call_suffix + (value_arguments + (value_argument + (string_literal) @injection.content (#set! injection.language "regex"))))) diff --git a/queries/lalrpop/injections.scm b/queries/lalrpop/injections.scm index e328af0cd..41bde7e39 100644 --- a/queries/lalrpop/injections.scm +++ b/queries/lalrpop/injections.scm @@ -1,9 +1,11 @@ -[ - (normal_action) - (failible_action) -] @rust +([ + (normal_action) + (failible_action) + ] @injection.content + (#set! injection.language "rust")) -(use) @rust +((use) @injection.content (#set! injection.language "rust")) -((regex_literal) @regex - (#offset! @regex 0 2 0 -1)) +((regex_literal) @injection.content + (#set! injection.language "regex") + (#offset! @injection.content 0 2 0 -1)) diff --git a/queries/latex/injections.scm b/queries/latex/injections.scm index e68c6d938..85417104a 100644 --- a/queries/latex/injections.scm +++ b/queries/latex/injections.scm @@ -1,22 +1,25 @@ -[ - (line_comment) - (block_comment) - (comment_environment) -] @comment +([ + (line_comment) + (block_comment) + (comment_environment) + ] @injection.content + (#set! injection.language "comment")) (pycode_environment - code: (source_code) @python -) + code: + (source_code) @injection.content + (#set! injection.language "python")) (minted_environment (begin language: (curly_group_text - (text) @language)) - (source_code) @content) + (text) @injection.language)) + (source_code) @injection.content) ((generic_environment (begin name: (curly_group_text - (text) @_env))) @c + (text) @_env))) @injection.content + (#set! injection.language "c") (#any-of? @_env "asy" "asydef")) diff --git a/queries/ledger/injections.scm b/queries/ledger/injections.scm index 2d9481414..ad62013f5 100644 --- a/queries/ledger/injections.scm +++ b/queries/ledger/injections.scm @@ -1,2 +1,5 @@ -(comment) @comment -(note) @comment +((comment) @injection.content + (#set! injection.language "comment")) + +((note) @injection.content + (#set! injection.language "comment")) diff --git a/queries/lua/highlights.scm b/queries/lua/highlights.scm index bdc2ae52c..7608da57a 100644 --- a/queries/lua/highlights.scm +++ b/queries/lua/highlights.scm @@ -243,5 +243,7 @@ (string) @string +(escape_sequence) @string.escape + ;; Error (ERROR) @error diff --git a/queries/lua/injections.scm b/queries/lua/injections.scm index da3107b0e..bdb460895 100644 --- a/queries/lua/injections.scm +++ b/queries/lua/injections.scm @@ -3,57 +3,65 @@ (identifier) @_cdef_identifier (_ _ (identifier) @_cdef_identifier) ] - arguments: (arguments (string content: _ @c))) + arguments: + (arguments + (string content: _ @injection.content))) + (#set! injection.language "c") (#eq? @_cdef_identifier "cdef")) ((function_call name: (_) @_vimcmd_identifier - arguments: (arguments . (string content: _ @vim))) - (#any-of? @_vimcmd_identifier "vim.cmd" "vim.api.nvim_command" "vim.api.nvim_exec" "vim.api.nvim_exec2")) + arguments: (arguments (string content: _ @injection.content))) + (#set! injection.language "vim") + (#any-of? @_vimcmd_identifier "vim.cmd" "vim.api.nvim_command" "vim.api.nvim_command" "vim.api.nvim_exec2")) ((function_call name: (_) @_vimcmd_identifier - arguments: (arguments (string content: _ @query) .)) - (#any-of? @_vimcmd_identifier "vim.treesitter.query.set" "vim.treesitter.query.parse_query" "vim.treesitter.query.parse")) + arguments: (arguments (string content: _ @injection.content) .)) + (#set! injection.language "query") + (#any-of? @_vimcmd_identifier "vim.treesitter.query.set" "vim.treesitter.query.parse")) -; vim.rcprequest(123, "nvim_exec_lua", "return vim.api.nvim_buf_get_lines(0, 0, -1, false)", false) ((function_call name: (_) @_vimcmd_identifier - arguments: (arguments . (_) . (string content: _ @_method) . (string content: _ @lua))) + arguments: (arguments . (_) . (string content: _ @_method) . (string content: _ @injection.content))) (#any-of? @_vimcmd_identifier "vim.rpcrequest" "vim.rpcnotify") - (#eq? @_method "nvim_exec_lua")) + (#eq? @_method "nvim_exec_lua") + (#set! injection.language "lua")) -; highlight string as query if starts with `;; query` -(string content: _ @query (#lua-match? @query "^%s*;+%s?query")) +;; highlight string as query if starts with `;; query` +(string content: _ @injection.content + (#lua-match? @injection.content "^%s*;+%s?query") + (#set! injection.language "query")) -((comment) @luadoc - (#lua-match? @luadoc "[-][-][-][%s]*@") - (#offset! @luadoc 0 3 0 0)) +((comment) @injection.content + (#lua-match? @injection.content "[-][-][-][%s]*@") + (#set! injection.language "luadoc") + (#offset! @injection.content 0 3 0 0)) ; string.match("123", "%d+") (function_call (dot_index_expression field: (identifier) @_method (#any-of? @_method "find" "match")) - arguments: (arguments (_) . (string content: _ @luap))) + arguments: (arguments (_) . (string content: _ @injection.content (#set! injection.language "luap")))) (function_call (dot_index_expression field: (identifier) @_method (#any-of? @_method "gmatch" "gsub")) - arguments: (arguments (_) (string content: _ @luap))) + arguments: (arguments (_) (string content: _ @injection.content (#set! injection.language "luap")))) ; ("123"):match("%d+") (function_call (method_index_expression method: (identifier) @_method (#any-of? @_method "find" "match")) - arguments: (arguments . (string content: _ @luap))) + arguments: (arguments . (string content: _ @injection.content (#set! injection.language "luap")))) (function_call (method_index_expression method: (identifier) @_method (#any-of? @_method "gmatch" "gsub")) - arguments: (arguments (string content: _ @luap))) + arguments: (arguments (string content: _ @injection.content (#set! injection.language "luap")))) -(comment) @comment +((comment) @injection.content (#set! injection.language "comment")) diff --git a/queries/luau/injections.scm b/queries/luau/injections.scm index b24330f31..e70e0274b 100644 --- a/queries/luau/injections.scm +++ b/queries/luau/injections.scm @@ -3,37 +3,44 @@ (identifier) @_cdef_identifier (_ _ (identifier) @_cdef_identifier) ] - arguments: (arguments (string content: _ @c))) - (#eq? @_cdef_identifier "cdef")) + arguments: (arguments (string content: _ @injection.content))) + (#eq? @_cdef_identifier "cdef") + (#set! injection.language "c")) -((comment) @luadoc - (#lua-match? @luadoc "[-][-][-][%s]*@") - (#offset! @luadoc 0 3 0 0)) +((comment) @injection.content + (#lua-match? @injection.content "[-][-][-][%s]*@") + (#offset! @injection.content 0 3 0 0) + (#set! injection.language "luadoc")) ; string.match("123", "%d+") (function_call (dot_index_expression field: (identifier) @_method (#any-of? @_method "find" "format" "match")) - arguments: (arguments (_) . (string content: _ @luap))) + arguments: (arguments (_) . (string content: _ @injection.content)) + (#set! injection.language "luap")) (function_call (dot_index_expression field: (identifier) @_method (#any-of? @_method "gmatch" "gsub")) - arguments: (arguments (_) (string content: _ @luap))) + arguments: (arguments (_) (string content: _ @injection.content)) + (#set! injection.language "luap")) ; ("123"):match("%d+") (function_call (method_index_expression method: (identifier) @_method (#any-of? @_method "find" "format" "match")) - arguments: (arguments . (string content: _ @luap))) + arguments: (arguments . (string content: _ @injection.content)) + (#set! injection.language "luap")) (function_call (method_index_expression method: (identifier) @_method (#any-of? @_method "gmatch" "gsub")) - arguments: (arguments (string content: _ @luap))) + arguments: (arguments (string content: _ @injection.content)) + (#set! injection.language "luap")) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/m68k/injections.scm b/queries/m68k/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/m68k/injections.scm +++ b/queries/m68k/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/make/injections.scm b/queries/make/injections.scm index 3add7f494..646daadd0 100644 --- a/queries/make/injections.scm +++ b/queries/make/injections.scm @@ -1,4 +1,7 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) -(shell_text) @bash -(shell_command) @bash +((shell_text) @injection.content + (#set! injection.language "bash")) +((shell_command) @injection.content + (#set! injection.language "bash")) diff --git a/queries/markdown/injections.scm b/queries/markdown/injections.scm index b1795e713..735189db1 100644 --- a/queries/markdown/injections.scm +++ b/queries/markdown/injections.scm @@ -1,17 +1,26 @@ (fenced_code_block (info_string (language) @_lang) - (code_fence_content) - @content - (#set-lang-from-info-string! @_lang) - (#exclude_children! @content)) + (code_fence_content) @injection.content + (#set-lang-from-info-string! @_lang)) -((html_block) @html @combined) +((html_block) @injection.content + (#set! injection.language "html") + (#set! injection.combined) + (#set! injection.include-children)) -((minus_metadata) @yaml (#offset! @yaml 1 0 -1 0)) -((plus_metadata) @toml (#offset! @toml 1 0 -1 0)) +((minus_metadata) @injection.content + (#set! injection.language "yaml") + (#offset! @injection.content 1 0 -1 0) + (#set! injection.include-children)) + +((plus_metadata) @injection.content + (#set! injection.language "toml") + (#offset! @injection.content 1 0 -1 0) + (#set! injection.include-children)) ([ (inline) (pipe_table_cell) - ] @markdown_inline (#exclude_children! @markdown_inline)) + ] @injection.content + (#set! injection.language "markdown_inline")) diff --git a/queries/markdown_inline/injections.scm b/queries/markdown_inline/injections.scm index 3e46a283b..f7aa19caf 100644 --- a/queries/markdown_inline/injections.scm +++ b/queries/markdown_inline/injections.scm @@ -1,2 +1,8 @@ -((html_tag) @html @combined) -((latex_block) @latex) +((html_tag) @injection.content + (#set! injection.language "html") + (#set! injection.combined) + (#set! injection.include-children)) + +((latex_block) @injection.content + (#set! injection.language "latex") + (#set! injection.include-children)) diff --git a/queries/matlab/injections.scm b/queries/matlab/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/matlab/injections.scm +++ b/queries/matlab/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/menhir/injections.scm b/queries/menhir/injections.scm index 7a31dd50c..f209dd139 100644 --- a/queries/menhir/injections.scm +++ b/queries/menhir/injections.scm @@ -1 +1,2 @@ -(ocaml) @ocaml +((ocaml) @injection.content + (#set! injection.language "ocaml")) diff --git a/queries/meson/injections.scm b/queries/meson/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/meson/injections.scm +++ b/queries/meson/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/nix/injections.scm b/queries/nix/injections.scm index 671f93185..2b5d55ec1 100644 --- a/queries/nix/injections.scm +++ b/queries/nix/injections.scm @@ -1,19 +1,24 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) (apply_expression function: (_) @_func argument: [ - (string_expression (string_fragment) @regex) - (indented_string_expression (string_fragment) @regex) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "regex"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "regex"))) ] - (#match? @_func "(^|\\.)match$")) - @combined + (#match? @_func "(^|\\.)match$") + (#set! injection.combined)) (binding attrpath: (attrpath (identifier) @_path) expression: [ - (string_expression (string_fragment) @bash) - (indented_string_expression (string_fragment) @bash) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "bash"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "bash"))) ] (#match? @_path "(^\\w+(Phase|Hook)|(pre|post)[A-Z]\\w+|script)$")) @@ -22,87 +27,105 @@ argument: (_ (_)* (_ (_)* (binding attrpath: (attrpath (identifier) @_path) expression: [ - (string_expression (string_fragment) @bash) - (indented_string_expression (string_fragment) @bash) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "bash"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "bash"))) ]))) (#match? @_func "(^|\\.)writeShellApplication$") - (#match? @_path "^text$")) - @combined + (#match? @_path "^text$") + (#set! injection.combined)) (apply_expression function: (apply_expression function: (apply_expression function: (_) @_func)) argument: [ - (string_expression (string_fragment) @bash) - (indented_string_expression (string_fragment) @bash) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "bash"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "bash"))) ] - (#match? @_func "(^|\\.)runCommand((No)?CC)?(Local)?$")) - @combined + (#match? @_func "(^|\\.)runCommand((No)?CC)?(Local)?$") + (#set! injection.combined)) ((apply_expression function: (apply_expression function: (_) @_func) argument: [ - (string_expression (string_fragment) @bash) - (indented_string_expression (string_fragment) @bash) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "bash"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "bash"))) ]) - (#match? @_func "(^|\\.)write(Bash|Dash|ShellScript)(Bin)?$")) - @combined + (#match? @_func "(^|\\.)write(Bash|Dash|ShellScript)(Bin)?$") + (#set! injection.combined)) ((apply_expression function: (apply_expression function: (_) @_func) argument: [ - (string_expression (string_fragment) @fish) - (indented_string_expression (string_fragment) @fish) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "fish"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "fish"))) ]) - (#match? @_func "(^|\\.)writeFish(Bin)?$")) - @combined + (#match? @_func "(^|\\.)writeFish(Bin)?$") + (#set! injection.combined)) ((apply_expression function: (apply_expression function: (apply_expression function: (_) @_func)) argument: [ - (string_expression (string_fragment) @haskell) - (indented_string_expression (string_fragment) @haskell) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "haskell"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "haskell"))) ]) - (#match? @_func "(^|\\.)writeHaskell(Bin)?$")) - @combined + (#match? @_func "(^|\\.)writeHaskell(Bin)?$") + (#set! injection.combined)) ((apply_expression function: (apply_expression function: (apply_expression function: (_) @_func)) argument: [ - (string_expression (string_fragment) @javascript) - (indented_string_expression (string_fragment) @javascript) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "javascript"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "javascript"))) ]) - (#match? @_func "(^|\\.)writeJS(Bin)?$")) - @combined + (#match? @_func "(^|\\.)writeJS(Bin)?$") + (#set! injection.combined)) ((apply_expression function: (apply_expression function: (apply_expression function: (_) @_func)) argument: [ - (string_expression (string_fragment) @perl) - (indented_string_expression (string_fragment) @perl) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "perl"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "perl"))) ]) - (#match? @_func "(^|\\.)writePerl(Bin)?$")) - @combined + (#match? @_func "(^|\\.)writePerl(Bin)?$") + (#set! injection.combined)) ((apply_expression function: (apply_expression function: (apply_expression function: (_) @_func)) argument: [ - (string_expression (string_fragment) @python) - (indented_string_expression (string_fragment) @python) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "python"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "python"))) ]) - (#match? @_func "(^|\\.)write(PyPy|Python)[23](Bin)?$")) - @combined + (#match? @_func "(^|\\.)write(PyPy|Python)[23](Bin)?$") + (#set! injection.combined)) ((apply_expression function: (apply_expression function: (apply_expression function: (_) @_func)) argument: [ - (string_expression (string_fragment) @rust) - (indented_string_expression (string_fragment) @rust) + (string_expression + ((string_fragment) @injection.content (#set! injection.language "rust"))) + (indented_string_expression + ((string_fragment) @injection.content (#set! injection.language "rust"))) ]) - (#match? @_func "(^|\\.)writeRust(Bin)?$")) - @combined + (#match? @_func "(^|\\.)writeRust(Bin)?$") + (#set! injection.combined)) diff --git a/queries/ocaml/injections.scm b/queries/ocaml/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/ocaml/injections.scm +++ b/queries/ocaml/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/ocamllex/injections.scm b/queries/ocamllex/injections.scm index 337d8073e..ed1d9302a 100644 --- a/queries/ocamllex/injections.scm +++ b/queries/ocamllex/injections.scm @@ -1,3 +1,5 @@ -(ocaml) @ocaml +((ocaml) @injection.content + (#set! injection.language "ocaml")) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/odin/injections.scm b/queries/odin/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/odin/injections.scm +++ b/queries/odin/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/pascal/injections.scm b/queries/pascal/injections.scm index c410fbb41..9832973b6 100644 --- a/queries/pascal/injections.scm +++ b/queries/pascal/injections.scm @@ -1,4 +1,7 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) + ; There is no parser for assembly language yet. Add an injection here when we ; have a parser. -; (asmBody) @asm +; ((asmBody) @injection.content +; (#set! injection.language "asm")) diff --git a/queries/pem/injections.scm b/queries/pem/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/pem/injections.scm +++ b/queries/pem/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/perl/injections.scm b/queries/perl/injections.scm index 78162bdba..cab5f53d5 100644 --- a/queries/perl/injections.scm +++ b/queries/perl/injections.scm @@ -1 +1,2 @@ -(comments) @comment +((comments) @injection.content + (#set! injection.language "comment")) diff --git a/queries/php/injections.scm b/queries/php/injections.scm index 9e243259d..0022459f7 100644 --- a/queries/php/injections.scm +++ b/queries/php/injections.scm @@ -1,20 +1,34 @@ -(text) @html @combined +((text) @injection.content + (#set! injection.language "html") + (#set! injection.combined)) -(comment) @phpdoc +((comment) @injection.content + (#set! injection.language "phpdoc")) ;; regex ((function_call_expression function: (_) @_preg_func_identifier - arguments: (arguments . (argument (_ (string_value) @regex)))) + arguments: + (arguments . + (argument + (_ (string_value) @injection.content)))) + (#set! injection.language "regex") (#lua-match? @_preg_func_identifier "^preg_")) ;; bash ((function_call_expression function: (_) @_shell_func_identifier - arguments: (arguments . (argument (_ (string_value) @bash)))) + arguments: + (arguments . + (argument + (_ (string_value) @injection.content)))) + (#set! injection.language "bash") (#any-of? @_shell_func_identifier "shell_exec" "escapeshellarg" "escapeshellcmd" "exec" "passthru" "proc_open" "shell_exec" "system")) -((expression_statement (shell_command_expression (string_value) @bash))) +(expression_statement + (shell_command_expression + (string_value) @injection.content) + (#set! injection.language "bash")) diff --git a/queries/pioasm/injections.scm b/queries/pioasm/injections.scm index a8a0cf49e..854886c65 100644 --- a/queries/pioasm/injections.scm +++ b/queries/pioasm/injections.scm @@ -1,10 +1,15 @@ - [ (line_comment) (block_comment) ] @comment +([ + (line_comment) + (block_comment) + ] @injection.content + (#set! injection.language "comment")) ((code_block (code_block_language) @_language - (code_block_body) @c) - (#eq? @_language "c-sdk")) + (code_block_body) @injection.content) + (#eq? @_language "c-sdk") + (#set! injection.language "c")) (code_block - (code_block_language) @language - (code_block_body) @content) + (code_block_language) @injection.language + (code_block_body) @injection.content) diff --git a/queries/po/injections.scm b/queries/po/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/po/injections.scm +++ b/queries/po/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/poe_filter/injections.scm b/queries/poe_filter/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/poe_filter/injections.scm +++ b/queries/poe_filter/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/pony/injections.scm b/queries/pony/injections.scm index e48ce9af3..43ae7287b 100644 --- a/queries/pony/injections.scm +++ b/queries/pony/injections.scm @@ -1,4 +1,5 @@ -[ +([ (line_comment) (block_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/promql/injections.scm b/queries/promql/injections.scm index ffdf4f8e6..408b1c7b5 100644 --- a/queries/promql/injections.scm +++ b/queries/promql/injections.scm @@ -1 +1,3 @@ -((label_value) @regex (#offset! @regex 0 1 0 -1)) +((label_value) @injection.content + (#set! injection.language "regex") + (#offset! @injection.content 0 1 0 -1)) diff --git a/queries/prql/injections.scm b/queries/prql/injections.scm index a6d4ccb12..ac266cc2d 100644 --- a/queries/prql/injections.scm +++ b/queries/prql/injections.scm @@ -1,13 +1,13 @@ -( - (s_string) @sql - (#offset! @sql 0 2 0 -1) -) +((s_string) @injection.content + (#set! injection.language "sql") + (#offset! @injection.content 0 2 0 -1)) (from_text (keyword_from_text) (keyword_json) - (literal) @json - (#offset! @json 0 3 0 -3) -) + (literal) @injection.content + (#set! injection.language "json") + (#offset! @injection.content 0 3 0 -3)) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/pug/injections.scm b/queries/pug/injections.scm index 027744402..a307a4eb2 100644 --- a/queries/pug/injections.scm +++ b/queries/pug/injections.scm @@ -1,7 +1,8 @@ -(javascript) @javascript +((javascript) @injection.content + (#set! injection.language "javascript")) -( - (attribute_name) @_attribute_name - (quoted_attribute_value (attribute_value ) @javascript) - (#match? @_attribute_name "^(:|v-bind|v-|\\@)") -) +((attribute_name) @_attribute_name + (quoted_attribute_value + (attribute_value) @injection.content + (#set! injection.language "javascript")) + (#match? @_attribute_name "^(:|v-bind|v-|\\@)")) diff --git a/queries/puppet/injections.scm b/queries/puppet/injections.scm index a81069600..caa10a2b0 100644 --- a/queries/puppet/injections.scm +++ b/queries/puppet/injections.scm @@ -1,4 +1,6 @@ -((regex) @regex - (#offset! @regex 0 1 0 -1)) +((regex) @injection.content + (#set! injection.language "regex") + (#offset! @injection.content 0 1 0 -1)) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/python/injections.scm b/queries/python/injections.scm index 04d0eed1f..effe2ecc7 100644 --- a/queries/python/injections.scm +++ b/queries/python/injections.scm @@ -1,8 +1,10 @@ ((call function: (attribute object: (identifier) @_re) - arguments: (argument_list (string) @regex)) + arguments: (argument_list (string) @injection.content)) (#eq? @_re "re") - (#lua-match? @regex "^r.*")) + (#lua-match? @injection.content "^r.*") + (#set! injection.language "regex")) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/ql/injections.scm b/queries/ql/injections.scm index 88d49d424..baed9196d 100644 --- a/queries/ql/injections.scm +++ b/queries/ql/injections.scm @@ -1,5 +1,6 @@ -[ +([ (line_comment) (block_comment) (qldoc) -] @comment + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/qmldir/injections.scm b/queries/qmldir/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/qmldir/injections.scm +++ b/queries/qmldir/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/query/injections.scm b/queries/query/injections.scm index c4b877d0b..6bde865d0 100644 --- a/queries/query/injections.scm +++ b/queries/query/injections.scm @@ -1,13 +1,16 @@ ((predicate name: (identifier) @_name - parameters: (parameters (string) @regex)) + parameters: (parameters (string) @injection.content)) (#match? @_name "^#?(not-)?(match|vim-match)$") - (#offset! @regex 0 1 0 -1)) + (#set! injection.language "regex") + (#offset! @injection.content 0 1 0 -1)) ((predicate name: (identifier) @_name - parameters: (parameters (string) @luap)) + parameters: (parameters (string) @injection.content)) (#match? @_name "^#?(not-)?lua-match$") - (#offset! @luap 0 1 0 -1)) + (#set! injection.language "luap") + (#offset! @injection.content 0 1 0 -1)) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/r/injections.scm b/queries/r/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/r/injections.scm +++ b/queries/r/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/racket/injections.scm b/queries/racket/injections.scm index 496286d3f..b90c418a4 100644 --- a/queries/racket/injections.scm +++ b/queries/racket/injections.scm @@ -1,2 +1,5 @@ -[(comment) - (block_comment)] @comment +([ + (comment) + (block_comment) + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/rego/injections.scm b/queries/rego/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/rego/injections.scm +++ b/queries/rego/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/requirements/injections.scm b/queries/requirements/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/requirements/injections.scm +++ b/queries/requirements/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/rnoweb/injections.scm b/queries/rnoweb/injections.scm index 2f7ec8a91..6b07ccdc4 100644 --- a/queries/rnoweb/injections.scm +++ b/queries/rnoweb/injections.scm @@ -1,7 +1,12 @@ -(latex) @latex @combined +((latex) @injection.content + (#set! injection.language "latex") + (#set! injection.combined)) + (rchunk - (renv_content) @r @combined -) + (renv_content) @injection.content + (#set! injection.language "r") + (#set! injection.combined)) + (rinline - (renv_content) @r -) + (renv_content) @injection.content + (#set! injection.language "r")) diff --git a/queries/ron/injections.scm b/queries/ron/injections.scm index e48ce9af3..c3522f945 100644 --- a/queries/ron/injections.scm +++ b/queries/ron/injections.scm @@ -1,4 +1,5 @@ -[ +([ (line_comment) (block_comment) -] @comment +] @injection.content + (#set! injection.language "comment")) diff --git a/queries/rst/injections.scm b/queries/rst/injections.scm index 97bd0628a..4fc27225a 100644 --- a/queries/rst/injections.scm +++ b/queries/rst/injections.scm @@ -1,9 +1,11 @@ -(doctest_block) @python +((doctest_block) @injection.content + (#set! injection.language "python")) ;; Directives with nested content without arguments nor options ((directive name: (type) @_type - body: (body) @rst) + body: (body) @injection.content) + (#set! injection.language "rst") (#any-of? @_type "attention" "caution" "danger" "error" "hint" "important" "note" "tip" "warning" "admonition" @@ -15,7 +17,8 @@ ;; Directives with nested content without arguments, but with options ((directive name: (type) @_type - body: (body (options) (content) @rst)) + body: (body (options) (content) @injection.content)) + (#set! injection.language "rst") (#any-of? @_type "attention" "caution" "danger" "error" "hint" "important" "note" "tip" "warning" "admonition" @@ -24,7 +27,8 @@ ;; Directives with nested content with arguments and options ((directive name: (type) @_type - body: (body (content) @rst)) + body: (body (content) @injection.content)) + (#set! injection.language "rst") (#any-of? @_type "figure" @@ -35,37 +39,42 @@ ;; Special directives ((directive name: (type) @_type - body: (body (arguments) @language (content) @content)) + body: (body (arguments) @injection.language (content) @injection.content)) (#any-of? @_type "code" "code-block" "sourcecode")) ((directive name: (type) @_type - body: (body (arguments) @language (content) @content)) + body: (body (arguments) @injection.language (content) @injection.content)) (#eq? @_type "raw")) ((directive name: (type) @_type - body: (body (content) @latex)) + body: (body (content) @injection.content)) + (#set! injection.language "latex") (#eq? @_type "math")) ; TODO: re-add when a parser for csv is added. ; ((directive ; name: (type) @_type -; body: (body (content) @csv)) +; body: (body (content) @injection.content)) +; (#set! injection.language "csv") ; (#eq? @_type "csv-table")) ;; Special roles - prefix ((interpreted_text (role) @_role - "interpreted_text" @latex) - (#eq? @_role ":math:")) + "interpreted_text" @injection.content) + (#eq? @_role ":math:") + (#set! injection.language "latex")) ;; Special roles - suffix ((interpreted_text - "interpreted_text" @latex + "interpreted_text" @injection.content (role) @_role) - (#eq? @_role ":math:")) + (#eq? @_role ":math:") + (#set! injection.language "latex")) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/ruby/injections.scm b/queries/ruby/injections.scm index 8e2456b39..6981808c5 100644 --- a/queries/ruby/injections.scm +++ b/queries/ruby/injections.scm @@ -1,9 +1,12 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) (heredoc_body - (heredoc_content) @content - (heredoc_end) @language - (#set! "language" @language) + (heredoc_content) @injection.content + (heredoc_end) @injection.language + (#set! "language" @injection.language) (#downcase! "language")) -(regex (string_content) @regex) +(regex + (string_content) @injection.content + (#set! injection.language "regex")) diff --git a/queries/rust/injections.scm b/queries/rust/injections.scm index fd19fbec2..5dead8564 100644 --- a/queries/rust/injections.scm +++ b/queries/rust/injections.scm @@ -1,34 +1,39 @@ (macro_invocation - (token_tree) @rust) + (token_tree) @injection.content (#set! injection.language "rust")) (macro_definition (macro_rule - left: (token_tree_pattern) @rust - right: (token_tree) @rust)) + left: (token_tree_pattern) @injection.content + (#set! injection.language "rust"))) -[ +(macro_definition + (macro_rule + right: (token_tree) @injection.content + (#set! injection.language "rust"))) + +([ (line_comment) (block_comment) -] @comment - -( - (macro_invocation - macro: ((identifier) @_html_def) - (token_tree) @html) +] @injection.content + (#set! injection.language "comment")) - (#eq? @_html_def "html") -) +((macro_invocation + macro: ((identifier) @injection.language) + (token_tree) @injection.content) + (#eq? @injection.language "html")) (call_expression function: (scoped_identifier path: (identifier) @_regex (#eq? @_regex "Regex") name: (identifier) @_new (#eq? @_new "new")) arguments: (arguments - (raw_string_literal) @regex)) + (raw_string_literal) @injection.content) + (#set! injection.language "regex")) (call_expression function: (scoped_identifier path: (scoped_identifier (identifier) @_regex (#eq? @_regex "Regex").) name: (identifier) @_new (#eq? @_new "new")) arguments: (arguments - (raw_string_literal) @regex)) + (raw_string_literal) @injection.content) + (#set! injection.language "regex")) diff --git a/queries/scala/injections.scm b/queries/scala/injections.scm index 521ca7a67..aebb54d93 100644 --- a/queries/scala/injections.scm +++ b/queries/scala/injections.scm @@ -1,4 +1,5 @@ -[ - (comment) - (block_comment) -] @comment +((comment) @injection.content + (#set! injection.language "comment")) + +((block_comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/scfg/injections.scm b/queries/scfg/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/scfg/injections.scm +++ b/queries/scfg/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/scheme/injections.scm b/queries/scheme/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/scheme/injections.scm +++ b/queries/scheme/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/smali/injections.scm b/queries/smali/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/smali/injections.scm +++ b/queries/smali/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/sparql/injections.scm b/queries/sparql/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/sparql/injections.scm +++ b/queries/sparql/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/sql/injections.scm b/queries/sql/injections.scm index 2157ceb1d..b298ff22f 100644 --- a/queries/sql/injections.scm +++ b/queries/sql/injections.scm @@ -1,3 +1,6 @@ -(comment) @comment -(marginalia) @comment +((comment) @injection.content + (#set! injection.language "comment")) + +((marginalia) @injection.content + (#set! injection.language "comment")) diff --git a/queries/squirrel/injections.scm b/queries/squirrel/injections.scm index 97cd40350..34a0fce8b 100644 --- a/queries/squirrel/injections.scm +++ b/queries/squirrel/injections.scm @@ -1,9 +1,12 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) -((verbatim_string) @html - (#lua-match? @html "^@\"<html") - (#offset! @html 0 2 0 -1)) +((verbatim_string) @injection.content + (#lua-match? @injection.content "^@\"<html") + (#set! injection.language "html") + (#offset! @injection.content 0 2 0 -1)) -((verbatim_string) @html - (#lua-match? @html "@\"<!DOCTYPE html>") - (#offset! @html 0 2 0 -1)) +((verbatim_string) @injection.content + (#lua-match? @injection.content "@\"<!DOCTYPE html>") + (#set! injection.languge "html") + (#offset! @injection.content 0 2 0 -1)) diff --git a/queries/supercollider/injections.scm b/queries/supercollider/injections.scm index e48ce9af3..43ae7287b 100644 --- a/queries/supercollider/injections.scm +++ b/queries/supercollider/injections.scm @@ -1,4 +1,5 @@ -[ +([ (line_comment) (block_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/surface/injections.scm b/queries/surface/injections.scm index 928977a34..0ee100999 100644 --- a/queries/surface/injections.scm +++ b/queries/surface/injections.scm @@ -1,8 +1,10 @@ ; Surface expressions and components are Elixir code -[ +([ (expression_value) (component_name) -] @elixir +] @injection.content + (#set! injection.language "elixir")) ; Surface comments are nvim-treesitter comments -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/svelte/injections.scm b/queries/svelte/injections.scm index dec2772f8..679919dc6 100644 --- a/queries/svelte/injections.scm +++ b/queries/svelte/injections.scm @@ -1,40 +1,41 @@ ; inherits: html_tags -( - (style_element +((style_element (start_tag (attribute (attribute_name) @_attr (quoted_attribute_value (attribute_value) @_lang))) - (raw_text) @scss) + (raw_text) @injection.content) (#eq? @_attr "lang") (#any-of? @_lang "scss" "postcss" "less") -) + (#set! injection.language "scss") + (#set! injection.include-children)) -[ +([ (raw_text_expr) (raw_text_each) -] @javascript +] @injection.content + (#set! injection.language "javascript") + (#set! injection.include-children)) -( - (script_element +((script_element (start_tag (attribute (attribute_name) @_attr (quoted_attribute_value (attribute_value) @_lang))) - (raw_text) @typescript) - (#eq? @_attr "lang") - (#any-of? @_lang "ts" "typescript") -) + (raw_text) @injection.content) + (#eq? @_attr "lang") + (#any-of? @_lang "ts" "typescript") + (#set! injection.language "typescript") + (#set! injection.include-children)) -( - (element - (start_tag - (attribute - (attribute_name) @_attr - (quoted_attribute_value - (attribute_value) @_lang))) - (text) @pug) - (#eq? @_attr "lang") - (#eq? @_lang "pug") -) +((element + (start_tag + (attribute + (attribute_name) @_attr + (quoted_attribute_value + (attribute_value) @injection.language))) + (text) @injection.content) + (#eq? @_attr "lang") + (#eq? @injection.language "pug") + (#set! injection.include-children)) diff --git a/queries/sxhkdrc/injections.scm b/queries/sxhkdrc/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/sxhkdrc/injections.scm +++ b/queries/sxhkdrc/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/systemtap/injections.scm b/queries/systemtap/injections.scm index 1dd86c9f3..9a1099d6d 100644 --- a/queries/systemtap/injections.scm +++ b/queries/systemtap/injections.scm @@ -1,2 +1,5 @@ -(comment) @comment -(embedded_code) @c +((comment) @injection.content + (#set! injection.language "comment")) + +((embedded_code) @injection.content + (#set! injection.language "c")) diff --git a/queries/t32/injections.scm b/queries/t32/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/t32/injections.scm +++ b/queries/t32/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/tablegen/injections.scm b/queries/tablegen/injections.scm index b137e472c..08390aaa1 100644 --- a/queries/tablegen/injections.scm +++ b/queries/tablegen/injections.scm @@ -1,7 +1,9 @@ -((code) @cpp - (#offset! @cpp 0 2 0 -2)) +((code) @injection.content + (#set! injection.language "cpp") + (#offset! @injection.content 0 2 0 -2)) ((tablegen_file - (comment) @bash) - (#lua-match? @bash "^.*RUN") - (#offset! @bash 0 8)) + (comment) @injection.content) + (#lua-match? @injection.content "^.*RUN") + (#set! injection.language "bash") + (#offset! @injection.content 0 8)) diff --git a/queries/teal/injections.scm b/queries/teal/injections.scm index f37f4d747..5eef08702 100644 --- a/queries/teal/injections.scm +++ b/queries/teal/injections.scm @@ -3,12 +3,13 @@ (index (identifier) @_cdef_identifier) (arguments - (string) @c) + (string) @injection.content) ) (#eq? @_cdef_identifier "cdef") - (#lua-match? @c "^[\"']") - (#offset! @c 0 1 0 -1) + (#lua-match? @injection.content "^[\"']") + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "c") ) ( @@ -16,12 +17,14 @@ (index (identifier) @_cdef_identifier) (arguments - (string) @c) + (string) @injection.content) ) (#eq? @_cdef_identifier "cdef") - (#lua-match? @c "^%[%[") - (#offset! @c 0 2 0 -2) + (#lua-match? @injection.content "^%[%[") + (#offset! @injection.content 0 2 0 -2) + (#set! injection.language "c") ) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/thrift/injections.scm b/queries/thrift/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/thrift/injections.scm +++ b/queries/thrift/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/tiger/injections.scm b/queries/tiger/injections.scm index 21350312a..b0063012c 100644 --- a/queries/tiger/injections.scm +++ b/queries/tiger/injections.scm @@ -1,3 +1,4 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) ; vim: sw=2 foldmethod=marker diff --git a/queries/tlaplus/injections.scm b/queries/tlaplus/injections.scm index 4d0833e1b..b88c1facb 100644 --- a/queries/tlaplus/injections.scm +++ b/queries/tlaplus/injections.scm @@ -1,4 +1,5 @@ -[ +([ (comment) (block_comment_text) -] @comment + ] @injection.content + (#set! injection.language "comment")) diff --git a/queries/toml/injections.scm b/queries/toml/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/toml/injections.scm +++ b/queries/toml/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/turtle/injections.scm b/queries/turtle/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/turtle/injections.scm +++ b/queries/turtle/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/twig/injections.scm b/queries/twig/injections.scm index 97f84c16c..663dc3b6c 100644 --- a/queries/twig/injections.scm +++ b/queries/twig/injections.scm @@ -1,2 +1,3 @@ -(content) @html +((content) @injection.content + (#set! injection.language "html")) diff --git a/queries/ungrammar/injections.scm b/queries/ungrammar/injections.scm index 35c0af746..ac82a3e5f 100644 --- a/queries/ungrammar/injections.scm +++ b/queries/ungrammar/injections.scm @@ -1,2 +1,3 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/uxntal/injections.scm b/queries/uxntal/injections.scm index 4bb7d675d..6adae45a2 100644 --- a/queries/uxntal/injections.scm +++ b/queries/uxntal/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/v/injections.scm b/queries/v/injections.scm index b39a5ef44..9fa581377 100644 --- a/queries/v/injections.scm +++ b/queries/v/injections.scm @@ -1,13 +1,17 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) ;; asm_statement if asm ever highlighted :) ;; #include <...> -(hash_statement) @c +((hash_statement) @injection.content + (#set! injection.language "c")) ;; regex for the methods defined in `re` module ((call_expression name: (selector_expression field: (reference_expression (identifier) @_re)) arguments: (argument_list - (argument (literal (raw_string_literal) @regex (#offset! @regex 0 2 0 -1))))) - (#any-of? @_re "regex_base" "regex_opt" "compile_opt")) + (argument (literal (raw_string_literal) @injection.content + (#offset! @injection.content 0 2 0 -1))))) + (#any-of? @_re "regex_base" "regex_opt" "compile_opt") + (#set! injection.language "regex")) diff --git a/queries/verilog/injections.scm b/queries/verilog/injections.scm index 4bb7d675d..321c90add 100644 --- a/queries/verilog/injections.scm +++ b/queries/verilog/injections.scm @@ -1 +1,2 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/vim/injections.scm b/queries/vim/injections.scm index cddcbe418..553ac5e6a 100644 --- a/queries/vim/injections.scm +++ b/queries/vim/injections.scm @@ -1,18 +1,35 @@ -(lua_statement (script (body) @lua)) -(lua_statement (chunk) @lua) -(ruby_statement (script (body) @ruby)) -(ruby_statement (chunk) @ruby) -(python_statement (script (body) @python)) -(python_statement (chunk) @python) +(lua_statement + (script + (body) @injection.content + (#set! injection.language "lua"))) +(lua_statement + (chunk) @injection.content + (#set! injection.language "lua")) +(ruby_statement + (script + (body) @injection.content + (#set! injection.language "ruby"))) +(ruby_statement + (chunk) @injection.content + (#set! injection.language "ruby")) +(python_statement + (script + (body) @injection.content + (#set! injection.language "python"))) +(python_statement + (chunk) @injection.content + (#set! injection.language "python")) ;; If we support perl at some point... ;; (perl_statement (script (body) @perl)) ;; (perl_statement (chunk) @perl) -(autocmd_statement (pattern) @regex) +(autocmd_statement + (pattern) @injection.content + (#set! injection.language "regex")) ((set_item option: (option_name) @_option - value: (set_value) @vim) + value: (set_value) @injection.content) (#any-of? @_option "includeexpr" "inex" "printexpr" "pexpr" @@ -22,6 +39,8 @@ "foldexpr" "fde" "diffexpr" "dex" "patchexpr" "pex" - "charconvert" "ccv")) + "charconvert" "ccv") + (#set! injection.language "vim")) -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/vimdoc/injections.scm b/queries/vimdoc/injections.scm index 09bbe44e8..4ae65e19e 100644 --- a/queries/vimdoc/injections.scm +++ b/queries/vimdoc/injections.scm @@ -1,3 +1,4 @@ -(codeblock - (language) @language - (code) @content) +((codeblock + (language) @injection.language + (code) @injection.content) + (#set! injection.include-children)) diff --git a/queries/vue/injections.scm b/queries/vue/injections.scm index ffbc00bfc..215fe1081 100644 --- a/queries/vue/injections.scm +++ b/queries/vue/injections.scm @@ -5,30 +5,36 @@ (start_tag (attribute (attribute_name) @_lang - (quoted_attribute_value (attribute_value) @_css))) + (quoted_attribute_value (attribute_value) @injection.language))) + (raw_text) @injection.content) (#eq? @_lang "lang") - (#eq? @_css "css") - (raw_text) @css)) + (#any-of? @injection.language "css" "scss") + (#set! injection.include-children)) -; TODO: When nvim-treesitter have postcss and less parser, use @language and @content instead +; TODO: When nvim-treesitter has postcss and less parsers, use @injection.language and @injection.content instead ; <script lang="scss"> ((style_element (start_tag (attribute (attribute_name) @_lang (quoted_attribute_value (attribute_value) @_scss))) + (raw_text) @injection.content (#eq? @_lang "lang") - (#any-of? @_scss "scss" "less" "postcss") - (raw_text) @scss)) + (#any-of? @_scss "less" "postcss") + (#set! injection.language "scss") + (#set! injection.include-children))) + ; <script lang="js"> ((script_element (start_tag (attribute (attribute_name) @_lang (quoted_attribute_value (attribute_value) @_js))) + (raw_text) @injection.content) (#eq? @_lang "lang") (#eq? @_js "js") - (raw_text) @javascript)) + (#set! injection.language "javascript") + (#set! injection.include-children)) ; <script lang="ts"> ((script_element @@ -36,9 +42,11 @@ (attribute (attribute_name) @_lang (quoted_attribute_value (attribute_value) @_ts))) + (raw_text) @injection.content) (#eq? @_lang "lang") (#eq? @_ts "ts") - (raw_text) @typescript)) + (#set! injection.language "typescript") + (#set! injection.include-children)) ; <script lang="tsx"> ; <script lang="jsx"> @@ -46,21 +54,27 @@ (start_tag (attribute (attribute_name) @_attr - (quoted_attribute_value (attribute_value) @language))) + (quoted_attribute_value (attribute_value) @injection.language))) (#eq? @_attr "lang") - (#any-of? @language "tsx" "jsx") - (raw_text) @content)) + (#any-of? @injection.language "tsx" "jsx") + (raw_text) @injection.content) + (#set! injection.include-children)) ((interpolation - (raw_text) @javascript)) + (raw_text) @injection.content) + (#set! injection.language "javascript") + (#set! injection.include-children)) -((directive_attribute - (quoted_attribute_value - (attribute_value) @javascript))) +(directive_attribute + (quoted_attribute_value + (attribute_value) @injection.content + (#set! injection.language "javascript") + (#set! injection.include-children))) -((template_element +(template_element (start_tag (attribute - (quoted_attribute_value (attribute_value) @_lang))) - (#eq? @_lang "pug") - (text) @pug)) + (quoted_attribute_value (attribute_value) @injection.language))) + (text) @injection.content + (#eq? @injection.language "pug") + (#set! injection.include-children)) diff --git a/queries/yaml/injections.scm b/queries/yaml/injections.scm index ba6d0aa06..fd4685bb7 100644 --- a/queries/yaml/injections.scm +++ b/queries/yaml/injections.scm @@ -1,22 +1,30 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) ;; Github actions ("run") / Gitlab CI ("scripts") (block_mapping_pair key: (flow_node) @_run (#any-of? @_run "run" "script" "before_script" "after_script") value: (flow_node - (plain_scalar) @bash)) + (plain_scalar + (string_scalar) @injection.content) + (#set! injection.language "bash"))) (block_mapping_pair key: (flow_node) @_run (#any-of? @_run "run" "script" "before_script" "after_script") value: (block_node - (block_scalar) @bash (#offset! @bash 0 1 0 0))) + (block_scalar) @injection.content + (#set! injection.language "bash") + (#offset! @injection.content 0 1 0 0))) (block_mapping_pair key: (flow_node) @_run (#any-of? @_run "run" "script" "before_script" "after_script") value: (block_node (block_sequence (block_sequence_item - (flow_node) @bash)))) + (flow_node + (plain_scalar + (string_scalar) @injection.content)) + (#set! injection.language "bash"))))) (block_mapping_pair key: (flow_node) @_run (#any-of? @_run "script" "before_script" "after_script") @@ -24,25 +32,34 @@ (block_sequence (block_sequence_item (block_node - (block_scalar) @bash (#offset! @bash 0 1 0 0)))))) + (block_scalar) @injection.content + (#set! injection.language "bash") + (#offset! @injection.content 0 1 0 0)))))) ;; Prometheus Alertmanager ("expr") (block_mapping_pair key: (flow_node) @_expr (#eq? @_expr "expr") value: (flow_node - (plain_scalar) @promql)) + (plain_scalar + (string_scalar) @injection.content) + (#set! injection.language "promql"))) (block_mapping_pair key: (flow_node) @_expr (#eq? @_expr "expr") value: (block_node - (block_scalar) @promql (#offset! @promql 0 2 0 0))) + (block_scalar) @injection.content + (#set! injection.language "promql") + (#offset! @injection.content 0 2 0 0))) (block_mapping_pair key: (flow_node) @_expr (#eq? @_expr "expr") value: (block_node (block_sequence (block_sequence_item - (flow_node) @promql)))) + (flow_node + (plain_scalar + (string_scalar) @injection.content)) + (#set! injection.language "promql"))))) (block_mapping_pair key: (flow_node) @_expr (#eq? @_expr "expr") @@ -50,4 +67,6 @@ (block_sequence (block_sequence_item (block_node - (block_scalar) @promql (#offset! @promql 0 2 0 0)))))) + (block_scalar) @injection.content + (#set! injection.language "promql") + (#offset! @injection.content 0 2 0 0)))))) diff --git a/queries/yang/injections.scm b/queries/yang/injections.scm index a1d9482b7..44b0e44e9 100644 --- a/queries/yang/injections.scm +++ b/queries/yang/injections.scm @@ -1,6 +1,8 @@ -(comment) @comment +((comment) @injection.content + (#set! injection.language "comment")) ((statement (statement_keyword "pattern") - (argument (string) @regex)) - (#offset! @regex 0 1 0 -1)) + (argument (string) @injection.content)) + (#set! injection.language "regex") + (#offset! @injection.content 0 1 0 -1)) diff --git a/queries/zig/injections.scm b/queries/zig/injections.scm index e3ff406d3..31e15a328 100644 --- a/queries/zig/injections.scm +++ b/queries/zig/injections.scm @@ -1,5 +1,7 @@ -[ +([ (container_doc_comment) (doc_comment) (line_comment) -] @comment + ] @injection.content + (#set! injection.language "comment")) + |
