如何“覆盖”VSCode 主题的语义标记类型

Gui*_*tta 6 visual-studio-code vscode-extensions

我想知道如何调整我的 VSCode 主题 (One Dark Pro),这是一个带有语义突出显示的主题。

我无法覆盖它的一些语义标记类型。

对于大多数主题,我会在 settings.json 中写入以下内容:

{
  "editor.tokenColorCustomizations": {
    "textMateRules": [
      {
        "name": "Javascript - Variable/object",
        "scope": [
          "variable.other.object.js"
        ],
        "settings": {
          "foreground": "#c7452e",
          "fontStyle": "bold italic"
        }
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

但是对于这个主题(以及其他具有语义意见的主题),我无法覆盖它,就好像我需要!important在 CSS 中使用一样。

所以这是我的规则之后我的令牌和范围检查的结果。

在此输入图像描述

正如您所看到的,我的设置确实被读取,但显然不够“具体”,无法击败语义解释或被它覆盖,并且被忽略(最后三行),而是修改语义标记类型盛行。

有没有办法在每个单独的文本范围内执行此操作(即不丢失该精彩主题的其余语义),就像我只想更改该特定项目的颜色一样?

JΛY*_*ÐΞV 0

因此,当主题突出显示语法时,settings.json文件优先于您设置的主题实现的语法突出显示,但是,如果您激活语义突出显示,则主题突出显示您的语法,您的 settings.json 文件优先并覆盖主题,并且那么语言服务器的优先级高于主题以及本地用户、工作区、settings.json文件。换句话说,您无法覆盖该令牌,因为该令牌已被优先级高于您的配置文件的范围覆盖。话虽如此,如果您不喜欢它,只需关闭语义突出显示(下面的代码片段显示了关闭语义突出显示的配置)。

    /** @file "./.vscode/settings.json" */

    {
        "editor.semanticHighlighting.enabled": false
    }

Run Code Online (Sandbox Code Playgroud)