summaryrefslogtreecommitdiff
path: root/runtime/queries/ecma/injections.scm
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/ecma/injections.scm')
-rw-r--r--runtime/queries/ecma/injections.scm36
1 files changed, 36 insertions, 0 deletions
diff --git a/runtime/queries/ecma/injections.scm b/runtime/queries/ecma/injections.scm
new file mode 100644
index 00000000..af3aef10
--- /dev/null
+++ b/runtime/queries/ecma/injections.scm
@@ -0,0 +1,36 @@
+; Parse the contents of tagged template literals using
+; a language inferred from the tag.
+
+(call_expression
+ function: [
+ (identifier) @injection.language
+ (member_expression
+ property: (property_identifier) @injection.language)
+ ]
+ arguments: (template_string) @injection.content)
+
+; Parse the contents of gql template literals
+
+((call_expression
+ function: (identifier) @_template_function_name
+ arguments: (template_string) @injection.content)
+ (#eq? @_template_function_name "gql")
+ (#set! injection.language "graphql"))
+
+; Parse regex syntax within regex literals
+
+((regex_pattern) @injection.content
+ (#set! injection.language "regex"))
+
+; Parse JSDoc annotations in multiline comments
+
+((comment) @injection.content
+ (#set! injection.language "jsdoc")
+ (#match? @injection.content "^/\\*+"))
+
+; Parse general tags in single line comments
+
+((comment) @injection.content
+ (#set! injection.language "comment")
+ (#match? @injection.content "^//"))
+