Swe*_*ers 6 c++ textmate syntax-highlighting visual-studio-code
我想制作一个小型 VS Code 扩展,为 C/C++ 代码中的少数自定义关键字添加语法突出显示。
我正在尝试按照VS Code 语法突出显示指南,将语法注入到source.c和语言范围中来做到这一点。根据指南,为注入选择器范围添加前缀意味着“注入的语法规则将在任何现有语法规则之前应用”。这似乎适用于 C 代码,但在 C++ 中,一些(但不是全部)语法规则会覆盖我注入的语法。source.cppL:
对于 MWE,假设我想par_for为并行循环添加关键字。
我在中定义扩展名package.json:
{
...
"contributes": {
"grammars": [{
"scopeName": "parfor.injection",
"path": "./syntaxes/parfor.injection.json",
"injectTo": ["source.c", "source.cpp"]
}]
}
}
Run Code Online (Sandbox Code Playgroud)
以及注入的语法,syntaxes/parfor.injection.json将我的新范围应用keyword.control.parfor到所有实例par_for(字符串和注释除外):
{
"scopeName": "parfor.injection",
"injectionSelector": [
"L:source.c -string -comment",
"L:source.cpp -string -comment"
],
"patterns": [
{ "include": "#parfor-keyword" }
],
"repository": {
"parfor-keyword": {
"name": "keyword.control.parfor",
"match": "\\bpar_for\\b"
}
}
}
Run Code Online (Sandbox Code Playgroud)
屏幕截图取自禁用所有扩展的 VS Code 测试实例。
C++ 中的问题显然是由下面的括号触发的par_for;如果我写,例如,,par_for foo那么范围将按预期keyword.control.parfor应用。par_for
有没有办法确保我注入的语法模式优先于 C++ 语法正在执行的任何操作?
| 归档时间: |
|
| 查看次数: |
942 次 |
| 最近记录: |