Я создаю расширение языка в vscode для себя. Поскольку он будет ассоциироваться с разными типами файлов, я планирую создавать разные файлы tmlanguge для определенных правил. Согласно this , я мог бы расширить scopeName
для достижения этого.
Итак, я создал в моих ./package.json
файлах что-то вроде этого:
{
"name": "tst",
"displayName": "Test Language",
"description": "A test for language extension",
"version": "0.0.1",
"engines": {
"vscode": "^1.34.0"
},
"contributes": {
"languages": [{
"id": "tst",
"aliases": ["Test", "tst"],
"extensions": [".tst",".type1",".type2"],
"configuration": "./language-configuration.json"
}],
"grammars": [{
"language": "tst",
"scopeName": "source.tst",
"path": "./syntaxes/tst.tmLanguage.json"
},
{
"scopeName": "source.tst.type1",
"path": "./syntaxes/type1.tmLanguage.json"
},
{
"scopeName": "source.tst.type2",
"path": "./syntaxes/type2.tmLanguage.json"
}]
}
}
Затем я создаю базовые правила в ./syntaxes/tst.tmLanguage.json
, и оба .type1
и .type2
были применены к моим грамматикам.
{
"name": "Test",
"patterns": [
{
"match": "test",
"name": "constant.character"
}
],
"scopeName": "source.tst"
}
После этого я также делаю ./syntaxes/type1.tmLanguage.json
что-то вроде этого:
{
"name": "type1",
"patterns": [
{
"match": "type1",
"name": "constant.language"
}
],
"scopeName": "source.tst.type1"
}
Ничего не работает для любых правил в .type1
.
Я надеюсь, что оба файла на картинке могут распознавать test
и type1
.
Я проверил предустановленное расширение языка cpp для vscode.
Они также используют scopeName для source.c
и source.c.platform
.
Я предполагаю, что это для аналогичной цели?
Я что-то упустил?
Спасибо за помощь.