Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/rust/injections.scm')
| -rw-r--r-- | runtime/queries/rust/injections.scm | 139 |
1 files changed, 11 insertions, 128 deletions
diff --git a/runtime/queries/rust/injections.scm b/runtime/queries/rust/injections.scm index 0c7cc350..704d8494 100644 --- a/runtime/queries/rust/injections.scm +++ b/runtime/queries/rust/injections.scm @@ -1,10 +1,6 @@ -([(line_comment !doc) (block_comment !doc)] @injection.content +([(line_comment) (block_comment)] @injection.content (#set! injection.language "comment")) -((doc_comment) @injection.content - (#set! injection.language "markdown-rustdoc") - (#set! injection.combined)) - ((macro_invocation (token_tree) @injection.content) (#set! injection.language "rust") @@ -15,156 +11,43 @@ (#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 "html") - (#set! injection.language "html") - (#set! injection.include-children)) - -((macro_invocation - macro: - [ - (scoped_identifier - name: (_) @_macro_name) - (identifier) @_macro_name - ] - (token_tree) @injection.content) - (#eq? @_macro_name "slint") - (#set! injection.language "slint") - (#set! injection.include-children)) - -((macro_invocation - macro: - [ - (scoped_identifier name: (_) @_macro_name) - (identifier) @_macro_name - ] - (token_tree - (token_tree . "{" "}" .) @injection.content)) - (#eq? @_macro_name "json") - (#set! injection.language "json") - (#set! injection.include-children)) - (call_expression function: (scoped_identifier - path: (identifier) @_regex (#any-of? @_regex "Regex" "RegexBuilder") + path: (identifier) @_regex (#eq? @_regex "Regex") name: (identifier) @_new (#eq? @_new "new")) - arguments: - (arguments - [ - (string_literal (string_content) @injection.content) - (raw_string_literal (string_content) @injection.content) - ]) + arguments: (arguments (raw_string_literal) @injection.content) (#set! injection.language "regex")) (call_expression function: (scoped_identifier - path: (scoped_identifier (identifier) @_regex (#any-of? @_regex "Regex" "RegexBuilder") .) + path: (scoped_identifier (identifier) @_regex (#eq? @_regex "Regex") .) name: (identifier) @_new (#eq? @_new "new")) - arguments: - (arguments - [ - (string_literal (string_content) @injection.content) - (raw_string_literal (string_content) @injection.content) - ]) + arguments: (arguments (raw_string_literal) @injection.content) (#set! injection.language "regex")) -; Highlight SQL in `sqlx::query!()`, `sqlx::query_scalar!()`, and `sqlx::query_scalar_unchecked!()` +; Highlight SQL in `sqlx::query!()` (macro_invocation macro: (scoped_identifier path: (identifier) @_sqlx (#eq? @_sqlx "sqlx") - name: (identifier) @_query (#match? @_query "^query(_scalar|_scalar_unchecked)?$")) + name: (identifier) @_query (#eq? @_query "query")) (token_tree ; Only the first argument is SQL . - [ - (string_literal (string_content) @injection.content) - (raw_string_literal (string_content) @injection.content) - ] + [(string_literal) (raw_string_literal)] @injection.content ) (#set! injection.language "sql")) -; Highlight SQL in `sqlx::query_as!()` and `sqlx::query_as_unchecked!()` +; Highlight SQL in `sqlx::query_as!()` (macro_invocation macro: (scoped_identifier path: (identifier) @_sqlx (#eq? @_sqlx "sqlx") - name: (identifier) @_query_as (#match? @_query_as "^query_as(_unchecked)?$")) + name: (identifier) @_query_as (#eq? @_query_as "query_as")) (token_tree ; Only the second argument is SQL . ; Allow anything as the first argument in case the user has lower case type ; names for some reason (_) - [ - (string_literal (string_content) @injection.content) - (raw_string_literal (string_content) @injection.content) - ] + [(string_literal) (raw_string_literal)] @injection.content ) (#set! injection.language "sql")) - -; Special language `tree-sitter-rust-format-args` for Rust macros, -; which use `format_args!` under the hood and therefore have -; the `format_args!` syntax. -; -; This language is injected into a hard-coded set of macros. -( - (macro_invocation - macro: - [ - (scoped_identifier - name: (_) @_macro_name) - (identifier) @_macro_name - ] - (token_tree) @injection.content - ) - (#any-of? @_macro_name - ; 1st argument is `format_args!` - - ; std - "print" "println" "eprint" "eprintln" - "format" "format_args" "todo" "panic" - "unreachable" "unimplemented" "compile_error" - ; log - "crit" "trace" "debug" "info" "warn" "error" - ; anyhow - "anyhow" "bail" - ; syn - "format_ident" - ; indoc - "formatdoc" "printdoc" "eprintdoc" "writedoc" - ; iced - "text" - ; ratatui - "span" - ; eyre - "eyre" - ; miette - "miette" - - ; 2nd argument is `format_args!` - - ; std - "write" "writeln" "assert" "debug_assert" - ; defmt - "expect" "unwrap" - ; ratatui - "span" - - ; 3rd argument is `format_args!` - - ; std - "assert_eq" "debug_assert_eq" "assert_ne" "debug_assert_ne" - - ; Dioxus's rsx! macro accepts string interpolation in all - ; strings, across the entire token tree - "rsx" - ) - (#set! injection.language "rust-format-args-macro") - (#set! injection.include-children) -) |