From 7a600411cfb62218704472df71bfa54361728728 Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Fri, 9 Aug 2024 09:16:48 +0200 Subject: [PATCH] Add injections for tagged template literals (#15984) 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: image After this change: image /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)) --- .../languages/src/javascript/injections.scm | 43 +++++++++++++++++++ crates/languages/src/tsx/injections.scm | 43 +++++++++++++++++++ .../languages/src/typescript/injections.scm | 43 +++++++++++++++++++ 3 files changed, 129 insertions(+) diff --git a/crates/languages/src/javascript/injections.scm b/crates/languages/src/javascript/injections.scm index 5ac7186f94e3db6067e0fed3fe599d1b49243217..681e476b181f5357003f6935888d10e9d85358c3 100644 --- a/crates/languages/src/javascript/injections.scm +++ b/crates/languages/src/javascript/injections.scm @@ -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")) +) + diff --git a/crates/languages/src/tsx/injections.scm b/crates/languages/src/tsx/injections.scm index 5ac7186f94e3db6067e0fed3fe599d1b49243217..681e476b181f5357003f6935888d10e9d85358c3 100644 --- a/crates/languages/src/tsx/injections.scm +++ b/crates/languages/src/tsx/injections.scm @@ -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")) +) + diff --git a/crates/languages/src/typescript/injections.scm b/crates/languages/src/typescript/injections.scm index 6f270c010c06e38955f4f00b7d7666d3b71fe5e8..46d60254ce81c11232415ac4966fde3404396430 100644 --- a/crates/languages/src/typescript/injections.scm +++ b/crates/languages/src/typescript/injections.scm @@ -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")) +) +