【发布时间】:2022-01-15 14:32:58
【问题描述】:
我正在尝试让 VSCode 在我正在编写的扩展程序中使用嵌入式语言的语法突出显示。
很像 Razor,我希望在 @{ 和 } 之间突出显示 c# 代码。
在我的package.json 中,contributes 部分有以下内容:
"languages": [
{
"id": "csasm",
"aliases": ["CS Asm", "csasm"],
"extensions": [".csasm"],
"configuration": "./language-configuration.csasm.json"
}],
"grammars": [
{
"language": "csasm",
"scopeName": "source.csasm",
"path": "./syntaxes/csasm.tmLanguage.json",
"embeddedLanguages": {
"meta.embedded.block.csharp" : "csharp"
}
}]
还有csasm.tmLanguage.json 文件:
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "CS Asm",
"patterns": [
{
"include":"#csasm"
}
],
"repository": {
"csasm" :{
"patterns": [{
"name" : "meta.embedded.block.csharp",
"begin": "@{",
"end": "}",
}]
}
},
"scopeName": "source.csasm"
}
我的理解是@{ 和} 的匹配将用meta.embedded.block.csharp 标记这些行,它链接到project.json 中的embeddedLanguages,但情况似乎并非如此。
我找不到embeddedLanguages 标记的任何示例。 (我试过搜索 Razor 是如何实现这一点的,但他们似乎有一个合适的语言服务器?)
我什至找不到调试问题的方法。
如何让embeddedLanguages 工作?或者失败了,我该如何调试?
编辑:
更改了语言文件,使csasm 如下所示,并删除了embeddedLanguages 部分。
"patterns": [{
"name" : "meta.embedded.block.csharp",
"begin": "@{",
"end": "}",
"patterns" : [{
"include" : "source.csharp"
}]
},
仍然没有使用 c# 的乐趣。我将打开另一个问题。
【问题讨论】:
标签: visual-studio-code vscode-extensions