VS Code - 使用 TextMate 突出显示一些变量

VS Code - highlight some variables with TextMate

VS Code 1.15 添加了对 TextMate 语法规则的支持。我想用这些规则突出显示 JavaScript 中的一些变量:self,me。我该怎么做?

简答:你不能。

我假设您指的是 new editor.tokenColorCustomizations setting。此设置仅允许您更改与 TextMate 语法 已经 定义的特定范围关联的颜色。 selfme 没有被 JS 语法特殊对待,它们使用与任何其他变量相同的 variable.other.readwrite.js 作用域:

将此与 this 关键字进行对比:它有自己独特的 variable.language.this.js 范围,因此我们可以使用该设置将 this 颜色设置为红色:

"editor.tokenColorCustomizations": {
    "textMateRules": [
        {
            "scope": "variable.language.this.js",
            "settings": {
                "foreground": "#FF0000"
            }
        }
    ]
}

正如@Gama11 所说,你不能用 editor.tokenColorCustomizations 来做到这一点,但你可以用扩展名 TODO Highlight 来做到这一点。这不是预期用途,但它可以轻松满足您的需求。唯一的问题是 'self' 和 'me' 如果它们出现在任何文本中以及默认实现中,它们将被突出显示,但这可以使用带有单词边界的正则表达式来修复。这是一个示例实现:

"todohighlight.keywords": [
    "DEBUG:",
    "REVIEW:",
    {
        "text": "NOTE:",
        "color": "#ff0000",
        "backgroundColor": "yellow",
        "overviewRulerColor": "grey"
    },
    {
        "text": "HACK:",
        "color": "#000",
        "isWholeLine": false
    },
    {
        "text": "TODO:",
        "color": "red",
        "borderRadius":"0px",
        "backgroundColor": "rgba(0,0,0,.2)"
    }
],

您可以直接替换为您的 'self' 和 'me'。我使用了一个有趣的模式:

  //  highlight `TODO:`,`FIXME:` and 'HACK:' and content between parentheses

  // "todohighlight.keywordsPattern": "((\s\sTODO\s*:\s{0,5})|(\s\sFIXME\s*:\s{0,5})|(\s\sHACK\s*:\s{0,5}))(\(.*\)\s)*",

它突出显示 TODO:、FIXME: 和 HACK: 如果它们前面有一些 spaces 以及后面的任何内容,则在括号中。

但我不明白为什么不能使用此扩展来突出显示您想要的任何特定文本,但您可能希望在 'me' 之前和之后添加 space 和'self' 以防它们也可能嵌入其他文本中,例如 'varmetoo'。