在 VS Code 中使用 textMateRules 覆盖主题

问题描述 投票:0回答:1

如何在 VS Code 中覆盖主题的子范围? 我想为不同的 Markdown 标题级别设置不同的颜色。

我当前的主题 (Bluloco Light) 在其 json 中有以下规则:

    {
      "name": "Headings",
      "scope": [
        "markup.heading", //my comment: bottom scope
        // my comment: in between are heading.* scopes
        "punctuation.definition.heading", // my comment: same level as entity...
        "entity.name.section",  //my comment: top scope, if I comment it out it works
        "markup.heading.setext" //my comment: no idea 
      ],
      "settings": {
        "fontStyle": "",
        "foreground": "#c5a332"
      }
    },

如果我在我的

settings.json
中添加一个textMateRule:

"textMateRules": [
      {
        "scope": "heading.2.markdown",
        "settings": {
          "foreground": "#1E90FF",
        },
      },
    ]

颜色保持不变

#c5a332

如果我将范围更改为

#1E90FF
(标题的顶部范围),它会更改为
"entity.name.section"
。 如果我在主题 json 中注释掉
"entity.name.section"
它也有效。

我认为主题会覆盖

"heading.2"
修改,因为主题挂钩在最上面的范围
"entity.name.section"

有没有办法不用修改主题的json文件就可以实现?

visual-studio-code syntax-highlighting
1个回答
0
投票

您可以使用

editor.action.inspectTMScopes
检查标记上的 TextMate 范围堆栈

您想要将范围分开

textMateRules

"editor.tokenColorCustomizations": {
    "textMateRules": [
        {
            "scope": "heading.2.markdown entity.name.section",
            "settings": {
                "foreground": "#1E90FF",
            },
        },
    ]
},

settings and inspect scope

© www.soinside.com 2019 - 2024. All rights reserved.