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

Can I extend VS Code TextMate Language Grammars?

有没有办法用一些额外的规则来扩展默认的csharp.tmLanguage?参考现有范围?

您可以包含语法,就像:

{ "include": "source.cs" }

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

Visual Studio代码支持grammar injection,喜欢:

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

令人惊讶的是,记录不足。它有效,但您可以注入现有范围,顶级 source 范围除外。另外,在我看来你只能注入 additions,而不是覆盖规则。同样,我不能以这种方式扩展语法。


现在我使用一个解决方法,我贡献了 2 个语法。一种是带有假名称的原始 C# 语法,第二种是覆盖 C# 语法,包括通过假作用域的所有原始规则。我希望有没有这个的方法。

这样我可以添加一些规则"before"我包含了原始语法。但是,这些都是补充,我不能真正扩展现有规则。