我可以扩展 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"我包含了原始语法。但是,这些都是补充,我不能真正扩展现有规则。
有没有办法用一些额外的规则来扩展默认的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"我包含了原始语法。但是,这些都是补充,我不能真正扩展现有规则。