Я хочу, чтобы vscode понимал, что язык между <go>
тегами в файле html должен быть проверен как golang код.
Так дано:
<go>
// I want to get intellisense and syntax highlighting for golang here
</go>
В настоящее время у меня есть следующие внутренности grammars
в package.json
:
{
"scopeName": "go.html.injection",
"path": "./syntaxes/go.tmLanguage.json",
"injectTo": [
"text.html"
],
"embeddedLanguages": {
"source.go": "go"
}
}
и в syntaxes/go.tmLanguage.json
:
{
"scopeName": "go.html.injection",
"injectionSelector": "L:text.html",
"patterns": [
{
"include": "#go-tag"
}
],
"repository": {
"go-tag": {
"begin": "<go>",
"end": "<\/go>",
"name": "go"
}
}
}
При проверке с использованием отладки дается имя go как текстовая область, но язык по-прежнему установлен на html. Как установить язык соответствия на golang:
При проверке содержимого тегов сценария отобразится язык, установленный на javascript, поэтому это должно быть возможно? Я также понимаю, что тогда совпадение включает тег <go>
, поэтому я понимаю, что теперь мне нужно добавить сопоставление с образцом и оценку для этого.
Обновление 20/02/20:
После обращения к расширение vscode svelte Я понял, как получить подсветку синтаксиса для тега и внутреннего HTML, используя это внутри syntaxes/go.tmLanguage.json
(то же самое package.json
):
{
"scopeName": "go.html.injection",
"injectionSelector": "L:text.html",
"patterns": [
{
"include": "#go-tag"
}
],
"repository": {
"go-tag": {
"begin": "(<)(go)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.begin.html"
},
"2": {
"name": "entity.name.tag.html"
},
"3": {
"name": "punctuation.definition.tag.end.html"
}
},
"end": "(<\/)(go)(>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.begin.html"
},
"2": {
"name": "entity.name.tag.html"
},
"3": {
"name": "punctuation.definition.tag.end.html"
}
},
"patterns": [
{
"contentName": "source.go",
"begin": "(>)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.end.html"
}
},
"end": "(?=</go>)",
"patterns": [
{
"include": "source.go"
}
]
}
]
}
}
}
Я могу Теперь убедитесь, что vscode правильно выделяет синтаксис для тега и использует импортированные токены синтаксиса golang. Однако по-прежнему отображает язык как "html".