mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-02 03:26:52 -04:00
**Problem:** Rust's regex injections were not applied since the string content is behind a `(string_content)` node, and the injections were applied to the parent node without the `include-children` directive. **Solution:** Apply the injections to the string content. Also highlight them accordingly.
95 lines
2.5 KiB
Scheme
95 lines
2.5 KiB
Scheme
(macro_invocation
|
|
macro: [
|
|
(scoped_identifier
|
|
name: (_) @_macro_name)
|
|
(identifier) @_macro_name
|
|
]
|
|
(token_tree) @injection.content
|
|
(#not-eq? @_macro_name "slint")
|
|
(#set! injection.language "rust")
|
|
(#set! injection.include-children))
|
|
|
|
(macro_invocation
|
|
macro: [
|
|
(scoped_identifier
|
|
name: (_) @_macro_name)
|
|
(identifier) @_macro_name
|
|
]
|
|
(token_tree) @injection.content
|
|
(#eq? @_macro_name "slint")
|
|
(#offset! @injection.content 0 1 0 -1)
|
|
(#set! injection.language "slint")
|
|
(#set! injection.include-children))
|
|
|
|
(macro_definition
|
|
(macro_rule
|
|
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)
|
|
] @injection.content
|
|
(#set! injection.language "comment"))
|
|
|
|
((macro_invocation
|
|
macro: (identifier) @injection.language
|
|
(token_tree) @injection.content)
|
|
(#any-of? @injection.language "html" "json"))
|
|
|
|
(call_expression
|
|
function: (scoped_identifier
|
|
path: (identifier) @_regex
|
|
(#any-of? @_regex "Regex" "ByteRegexBuilder")
|
|
name: (identifier) @_new
|
|
(#eq? @_new "new"))
|
|
arguments: (arguments
|
|
(raw_string_literal
|
|
(string_content) @injection.content))
|
|
(#set! injection.language "regex"))
|
|
|
|
(call_expression
|
|
function: (scoped_identifier
|
|
path: (scoped_identifier
|
|
(identifier) @_regex
|
|
(#any-of? @_regex "Regex" "ByteRegexBuilder") .)
|
|
name: (identifier) @_new
|
|
(#eq? @_new "new"))
|
|
arguments: (arguments
|
|
(raw_string_literal
|
|
(string_content) @injection.content))
|
|
(#set! injection.language "regex"))
|
|
|
|
(call_expression
|
|
function: (scoped_identifier
|
|
path: (identifier) @_regex
|
|
(#any-of? @_regex "RegexSet" "RegexSetBuilder")
|
|
name: (identifier) @_new
|
|
(#eq? @_new "new"))
|
|
arguments: (arguments
|
|
(array_expression
|
|
(raw_string_literal
|
|
(string_content) @injection.content)))
|
|
(#set! injection.language "regex"))
|
|
|
|
(call_expression
|
|
function: (scoped_identifier
|
|
path: (scoped_identifier
|
|
(identifier) @_regex
|
|
(#any-of? @_regex "RegexSet" "RegexSetBuilder") .)
|
|
name: (identifier) @_new
|
|
(#eq? @_new "new"))
|
|
arguments: (arguments
|
|
(array_expression
|
|
(raw_string_literal
|
|
(string_content) @injection.content)))
|
|
(#set! injection.language "regex"))
|
|
|
|
((block_comment) @injection.content
|
|
(#match? @injection.content "/\\*!([a-zA-Z]+:)?re2c")
|
|
(#set! injection.language "re2c"))
|