summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Hall2022-09-02 22:26:42 +0000
committerGitHub2022-09-02 22:26:42 +0000
commitb3b164f0d5decd02a02d7c3b571749fac47d7005 (patch)
tree9e21196a95af07718fc3ddabf729191121612563
parent6e5e38c2ba3a99d1827fa53851b88a50055f744a (diff)
Highlight SQL in `sqlx::{query,query_as}!()` in Rust (#3647)
-rw-r--r--runtime/queries/rust/injections.scm27
1 files changed, 27 insertions, 0 deletions
diff --git a/runtime/queries/rust/injections.scm b/runtime/queries/rust/injections.scm
index 77c70805..704d8494 100644
--- a/runtime/queries/rust/injections.scm
+++ b/runtime/queries/rust/injections.scm
@@ -24,3 +24,30 @@
name: (identifier) @_new (#eq? @_new "new"))
arguments: (arguments (raw_string_literal) @injection.content)
(#set! injection.language "regex"))
+
+; Highlight SQL in `sqlx::query!()`
+(macro_invocation
+ macro: (scoped_identifier
+ path: (identifier) @_sqlx (#eq? @_sqlx "sqlx")
+ name: (identifier) @_query (#eq? @_query "query"))
+ (token_tree
+ ; Only the first argument is SQL
+ .
+ [(string_literal) (raw_string_literal)] @injection.content
+ )
+ (#set! injection.language "sql"))
+
+; Highlight SQL in `sqlx::query_as!()`
+(macro_invocation
+ macro: (scoped_identifier
+ path: (identifier) @_sqlx (#eq? @_sqlx "sqlx")
+ 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) (raw_string_literal)] @injection.content
+ )
+ (#set! injection.language "sql"))