vscode-embedded-string-high.../syntaxes/javascript.injection.json.mts

49 lines
1.1 KiB
TypeScript

import embeddedLanguages from '../embeddedLanguages.mjs';
import {merge, scopes} from '../util.mjs';
const elements = merge(embeddedLanguages.map(embeddedLanguage => ({
[`tagged-template-literal-block-${embeddedLanguage.id}`]: {
begin: `(${embeddedLanguage.tags.join('|')})(\`)`,
end: '`',
beginCaptures: {
1: {
name: scopes(
'entity.name.function.tagged-template.js',
'entity.name.embedded-source',
),
},
2: {
name: scopes(
'string.template.js',
'punctuation.definition.string.template.begin.js',
'punctuation.definition.embedded-source.begin',
),
},
},
endCaptures: {
0: {
name: scopes(
'string.template.js',
'punctuation.definition.string.template.end.js',
'punctuation.definition.embedded-source.end',
),
},
},
contentName: embeddedLanguage.embedScopeBlock,
patterns: [
{
include: embeddedLanguage.sourceScope,
},
],
},
})));
export default {
scopeName: 'embedded-string-highlighting.injection',
injectionSelector: 'L:source.js -string -comment',
repository: elements,
patterns: Object.keys(elements).map(ruleKey => ({
include: `#${ruleKey}`,
})),
};