提问者:小点点

自定义 Visual Studio Code 中的语法突出显示


我目前正在尝试为一种新的文件类型(ANTLR)编写一个扩展,并想知道如何在Visual Studio代码中更改用于语法突出显示的颜色。对我来说,这似乎不是在扩展中定义的,而是在其他地方。没有关于颜色的首选项条目,我也没有找到定义它的CSS文件(这是我所期望的,因为vscode使用的是Electron)。我还查看了vscode生成的设置文件和附带的文件,但也没有任何线索。网络搜索也没有帮助。所以,我现在有点迷茫了。

有人可以给我一些提示或指出我相关的文档吗?


共3个答案

匿名用户

这里有两个概念:

  • 语言语法,将文本文件转换为具有不同作用域的标记,以及
  • 主题,以(希望)令人赏心悦目的方式为这些范围着色

如果您正在编写自己的语法,或者从 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文件)。在这些文件中,为突出显示语法声明了不同的标记类型:

    < li >什么是关键字? < li >什么是字符串文字? < li >什么是注释? <李>等。

查看此处以获取更多信息: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