Add injections for tagged template literals (#15984)
Robin Malfait
created 1 year ago
This PR adds syntax highlighting support for `css`, `html`, `js`,
`json`, `sql`, `ts`, `yaml` and `yml` in `javascript`, `typescript` and
`tsx` languages where the contents of tagged template literals are now
highlighted.
This does not actually enable language features (like LSP support), it
only does syntax highlighting.
Before this change:
<img width="561" alt="image"
src="https://github.com/user-attachments/assets/74bace1b-5ce1-4b17-8a97-035bba152d9c">
After this change:
<img width="607" alt="image"
src="https://github.com/user-attachments/assets/f227145b-3f4a-4c27-b14f-7143bb19b4cf">
/cc @mrnugget
Release Notes:
- Added syntax highlighting for tagged template literals in
`javascript`, `typescript` and `tsx` languages for `css`, `html`, `js`,
`json`, `sql`, `ts`, `yaml` and `yml`.
([#15984](https://github.com/zed-industries/zed/issues/15984))
Change summary
crates/languages/src/javascript/injections.scm | 43 ++++++++++++++++++++
crates/languages/src/tsx/injections.scm | 43 ++++++++++++++++++++
crates/languages/src/typescript/injections.scm | 43 ++++++++++++++++++++
3 files changed, 129 insertions(+)
Detailed changes
@@ -4,3 +4,46 @@
((regex) @content
(#set! "language" "regex"))
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "css")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "css"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "html")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "html"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "js")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "javascript"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "json")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "json"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "sql")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "sql"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "ts")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "typescript"))
+)
+
+(call_expression
+ function: (identifier) @_name (#match? @_name "^ya?ml$")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "yaml"))
+)
+
@@ -4,3 +4,46 @@
((regex) @content
(#set! "language" "regex"))
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "css")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "css"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "html")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "html"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "js")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "javascript"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "json")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "json"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "sql")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "sql"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "ts")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "typescript"))
+)
+
+(call_expression
+ function: (identifier) @_name (#match? @_name "^ya?ml$")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "yaml"))
+)
+
@@ -8,3 +8,46 @@
((regex) @content
(#set! "language" "regex"))
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "css")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "css"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "html")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "html"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "js")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "javascript"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "json")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "json"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "sql")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "sql"))
+)
+
+(call_expression
+ function: (identifier) @_name (#eq? @_name "ts")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "typescript"))
+)
+
+(call_expression
+ function: (identifier) @_name (#match? @_name "^ya?ml$")
+ arguments: (template_string (string_fragment) @content
+ (#set! "language" "yaml"))
+)
+