我目前正在尝试为一种新的文件类型(ANTLR)编写一个扩展,并想知道如何在Visual Studio代码中更改用于语法突出显示的颜色。对我来说,这似乎不是在扩展中定义的,而是在其他地方。没有关于颜色的首选项条目,我也没有找到定义它的CSS文件(这是我所期望的,因为vscode使用的是Electron)。我还查看了vscode生成的设置文件和附带的文件,但也没有任何线索。网络搜索也没有帮助。所以,我现在有点迷茫了。
有人可以给我一些提示或指出我相关的文档吗?
这里有两个概念:
如果您正在编写自己的语法,或者从 TextMate 等转换,则有可能您使用的范围与主题定义的范围不同。在这种情况下,您定义的令牌之间不会有明显的区别,即使它们实际上是定义的。
有两种方法可以解决这个问题。第一个是,使用自定义范围扩展主题并根据需要为其着色。这不是一个好方法,除非每个使用你的语言的人也喜欢你的配色方案。另一种是,使用VSCode和主题作者已经定义和着色的(有限的一组)范围。很有可能,你的语言在你选择的主题中看起来不错,在其他主题中看起来足够好。
举个例子,下面是默认深色 VSCode 主题定义的注释
范围。
"name": "Dark Visual Studio",
"settings": [
{
"scope": "comment",
"settings": {
"foreground": "#608b4e"
}
},
这是C语法中的等效语言片段:
"comments": {
"patterns": [
{
"captures": {
"0": {
"name": "punctuation.definition.comment.java"
}
},
"match": "/\\*\\*/",
"name": "comment.block.empty.java"
},
基本上,该语言根据需要在注释下定义多个标记,并且由于主题说
注释.*
将为绿色,因此它们的颜色都相同。
无需从官方文档中修补主题:
若要调整编辑器的语法突出显示颜色,请使用用户设置settings.json文件中的editor . token color customizations
除了简单的令牌自定义之外,您还可以使用稍微复杂一点的设置完全覆盖TextMate规则,例如:
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": "keyword.control.ref.latex",
"settings": {
"foreground": "#FF0000"
}
}
]
}
语法突出显示规则存储在< code >中。plist文件(或者在< code >中)。tmLanguage文件)。在这些文件中,为突出显示语法声明了不同的标记类型:
查看此处以获取更多信息:https://code.visualstudio.com/Docs/customization/colorizer
您没有在 .plist
文件中定义颜色!
标记类型和颜色之间的关系在颜色主题声明中完成。
了解更多关于它在这里https://code.visualstudio.com/Docs/customization/themes和这里如何在Visual Studio代码中添加主题?
通常,当您尝试扩展 VSCode: https://code.visualstudio.com/docs/extensionAPI/overview