有没有办法用一些额外的规则来扩展默认csharp.tmLanguage
?引用现有范围?
您可以包含语法,如下所示:
{ "include": "source.cs" }
但是,如果将语法替换为自己的语法(定义自己的source.cs
范围),则无法再将原始source.cs
范围包含在其中(VS Code 报告它未能标记文件)。
Visual Studio Code支持语法注入,例如:
"grammars": [
{
"scopeName": "source.todo",
"path": "./syntaxes/todo.json",
"injectTo": [ "source.js", "source.ts" ]
},
令人惊讶的是,记录不足。它可以工作,但您可以注入到现有作用域中,但顶级作用域除外source
作用域除外。另外,在我看来,您只能注入添加,而不是覆盖规则。所以再说一次,我不能以这种方式扩展语法。
现在我采用一种解决方法,其中我贡献了 2 种语法。一个是带有假名称的原始 C# 语法,第二个是覆盖 C# 语法,包括通过假范围的所有原始规则。我希望有没有这个的方法。
这样,我可以在"包含原始语法之前"添加一些规则。但是,这些仍然是补充,我无法真正扩展现有规则。