我可以扩展VS Code TextMate语言语法吗?

时间:2017-03-30 17:53:50

标签: c# visual-studio-code textmate

有没有办法扩展默认csharp.tmLanguage 并增加一些额外规则?参考现有范围?

1 个答案:

答案 0 :(得分:5)

您可以包含语法,就像:

{ "include": "source.cs" }

但是如果你用你自己的语法替换语法(定义你自己的source.cs范围),那么你就不能再将原始的source.cs范围包含在其中(VS代码报告它无法将文件标记化)。

Visual Studio Code支持 grammar injection ,例如:

"grammars": [
            {
                "scopeName": "source.todo",
                "path": "./syntaxes/todo.json",
                "injectTo": [  "source.js", "source.ts" ]
            },

令人惊讶的是,记录在案。它可以工作,但您可以注入现有范围,但顶级source范围除外。此外,在我看来,您只能注入添加,而是覆盖规则。所以,我不能用这种方式扩展语法。

现在我选择解决方法,我贡献2个语法。一个是带有假名的原始C#语法,第二个是覆盖C#语法,包括通过伪范围的所有原始规则。我希望没有这个方法。

这样我可以在"之前添加一些规则"我包括原始语法。但是,这些都是补充,我无法真正扩展现有规则。