diff --git a/syntaxes/javascript.injection.json.mts b/syntaxes/javascript.injection.json.mts index 19ec2e8..0f24bb0 100644 --- a/syntaxes/javascript.injection.json.mts +++ b/syntaxes/javascript.injection.json.mts @@ -1,5 +1,5 @@ import embeddedLanguages from '../embeddedLanguages.mjs'; -import {merge} from '../util.mjs'; +import {merge, scopes} from '../util.mjs'; const elements = merge(embeddedLanguages.map(embeddedLanguage => ({ [`tagged-template-literal-block-${embeddedLanguage.id}`]: { @@ -7,18 +7,26 @@ const elements = merge(embeddedLanguages.map(embeddedLanguage => ({ end: '`', beginCaptures: { 1: { - name: - 'entity.name.function.tagged-template.js entity.name.embedded-language', + name: scopes( + 'entity.name.function.tagged-template.js', + 'entity.name.embedded-source', + ), }, 2: { - name: - 'string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin', + name: scopes( + 'string.template.js', + 'punctuation.definition.string.template.begin.js', + 'punctuation.definition.embedded-source.begin', + ), }, }, endCaptures: { 0: { - name: - 'string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end', + name: scopes( + 'string.template.js', + 'punctuation.definition.string.template.end.js', + 'punctuation.definition.embedded-source.end', + ), }, }, contentName: embeddedLanguage.embedScopeBlock, diff --git a/util.mts b/util.mts index e067173..6dc9277 100644 --- a/util.mts +++ b/util.mts @@ -4,7 +4,7 @@ export type Overwrite<T, U> = { : never; }; -export type AllMerged<Objects extends any[]> = Objects extends +type AllMerged<Objects extends any[]> = Objects extends [infer T, infer U, ...infer Rest] ? AllMerged<[Overwrite<T, U>, ...Rest]> : Objects extends [infer T, ...infer Rest] ? T : Objects extends (infer Rest)[] ? Rest @@ -12,3 +12,5 @@ export type AllMerged<Objects extends any[]> = Objects extends export const merge = <T extends any[]>(objects: T): AllMerged<T> => Object.assign(Object.create(null), ...objects); + +export const scopes = (...scopes: string[]) => scopes.join(' ');