Расширение подсветки синтаксиса вложенного JS в YAML
Пытаюсь реализовать подсветку JS блоков внутри строк с YAML синтаксисом.
Создал расширение по шаблону нового языка. В package.json указал сам язык и scope для использования js:
"contributes": {
"languages": [{
"id": "extended-yaml",
"aliases": ["Extended YAML", "extended-yaml"],
"extensions": [".e.yaml",".e.yml"],
"configuration": "./language-configuration.json"
}],
"grammars": [{
"language": "extended-yaml",
"scopeName": "source.extended-yaml",
"path": "./syntaxes/extended-yaml.tmLanguage.json",
"embeddedLanguages": {
"meta.embedded.block.javascript": "javascript"
}
}],
}
В файле с грамматикой вставил source.yaml, и попытался обработать шаблонную строку на js, но она не отображается в инспекторе токенов.
{
"scopeName": "source.extended-yaml",
"name": "Extended YAML",
"patterns": [
{
"include": "source.yaml"
},
{
"scopeName": "meta.embedded.block.javascript",
"injectionSelector": "L:string.quoted.double.yaml",
"patterns": [
{ "include": "#inline-template" }
]
}
],
"repository": {
"inline-template": {
"begin": "(?<=\\${)",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.yaml"
}
},
"end": "(?=})",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.yaml"
}
},
"name": "meta.embedded.block.javascript"
}
}
}
Пытался и другими регулярками и для других скопов, но всё равно никак.
Подскажите, как можно такое провернуть и желательно для всех возможных YAML строк и строк с конкретным ключом