如何在 vscode 中正确注入语法扩展(这样就可以了)?
How to properly inject grammar extension in vscode (so it works)?
我很难想扩展 shell-script 语法,因为它只突出显示 bash-builtin 命令。我想基本上突出显示 shell 命令,而不仅仅是内置命令。为此,我尝试通过注入来扩展语法,但这没有很好的记录,所以我 运行 一遍又一遍地陷入同样的问题,不管我在做什么。
如果我注入一些命令被识别为函数(因此突出显示)它们是,但它们也在注释中突出显示,这非常烦人。无论我尝试了哪种组合,我都不会摆脱它。由于 support.function.extended.shell 令牌始终是注入的最高值,因此它始终是彩色的。有什么解决办法吗???
正如您在图片中看到的,像 "echo" 这样的内置命令在评论中没有着色,就像它应该是的那样
{
"scopeName": "shellcommand.injection",
"injectionSelector": "L:source.shell -support.function.builtin.shell",
"patterns": [{
"include": "#shell-commands"
}],
"repository": {
"shell-commands": {
"patterns": [{
"match": "(?<=^|;|&|\s)(systemctl|cp|sed|awk)(?=\s|;|&|$)",
"name": "support.function.extended.shell"
}]
}
}
}
输出看起来像这样...
您可能需要更具体的注入选择器。尝试定位更具体的范围(不包含评论的范围)或从选择器中排除评论。我认为第二个更适合您的示例。为此只需使用 -
否定选择器:
"injectionSelector": "L:source.shell -support.function.builtin.shell -comment"
我很难想扩展 shell-script 语法,因为它只突出显示 bash-builtin 命令。我想基本上突出显示 shell 命令,而不仅仅是内置命令。为此,我尝试通过注入来扩展语法,但这没有很好的记录,所以我 运行 一遍又一遍地陷入同样的问题,不管我在做什么。 如果我注入一些命令被识别为函数(因此突出显示)它们是,但它们也在注释中突出显示,这非常烦人。无论我尝试了哪种组合,我都不会摆脱它。由于 support.function.extended.shell 令牌始终是注入的最高值,因此它始终是彩色的。有什么解决办法吗???
正如您在图片中看到的,像 "echo" 这样的内置命令在评论中没有着色,就像它应该是的那样
{
"scopeName": "shellcommand.injection",
"injectionSelector": "L:source.shell -support.function.builtin.shell",
"patterns": [{
"include": "#shell-commands"
}],
"repository": {
"shell-commands": {
"patterns": [{
"match": "(?<=^|;|&|\s)(systemctl|cp|sed|awk)(?=\s|;|&|$)",
"name": "support.function.extended.shell"
}]
}
}
}
输出看起来像这样...
您可能需要更具体的注入选择器。尝试定位更具体的范围(不包含评论的范围)或从选择器中排除评论。我认为第二个更适合您的示例。为此只需使用 -
否定选择器:
"injectionSelector": "L:source.shell -support.function.builtin.shell -comment"