You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让VS Code语言扩展中文档注释内的括号生效括号对着色?

如何让VS Code对自定义语言文档注释中的@link大括号应用括号对颜色化?

我正在为Pawn语言制作TextMate语法以实现语法高亮,以下是文档注释中@link标签的规则代码:

{
  "scopeName": "source.amx.pawn",
  "patterns": [
    {
      "name": "comment.block.documentation.amx.pawn",
      "begin": "/\\*\\*(?!/)",
      "end": "\\*/",
      "patterns": [{ "include": "#docblock" }]
    },
    // more patterns...
  ],
  "repository": {
    "docblock": {
      "patterns": [
        {
          "match": "({)(@)(link|linkcode|linkplain)\\s+(\\w+)\\s+(.*)(})",
          "captures": {
            "1": { "name": "punctuation.definition.bracket.amx.pawn" },
            "2": { "name": "punctuation.docblock.at.amx.pawn" },
            "3": { "name": "storage.type.class.docblock.tag.amx.pawn" },
            "4": { "name": "variable.other.docblock.link.amx.pawn" },
            "5": { "name": "entity.name.type.instance.docblock.amx.pawn" },
            "6": { "name": "punctuation.definition.bracket.amx.pawn" }
          }
        }
      ]
    },
    // more stuff...
  }
}

目前除大括号外,其他元素着色均正常,大括号仅显示指定的标点颜色。我期望VS Code能像处理TypeScript那样对其应用括号对颜色化,对比两者的TextMate作用域后未发现关键差异,请问如何实现相同效果?


解决方案

VS Code的括号对颜色化不仅依赖TextMate作用域,还需要确保括号被识别为配对符号,而非普通标点。以下是具体调整步骤:

  • 调整大括号的作用域名称
    VS Code优先识别通用的punctuation.definition.bracket作用域来启用括号对颜色化,而非带语言后缀的特定作用域。修改大括号的作用域,保留通用作用域作为主作用域,语言后缀作为次要作用域:

    "captures": {
      "1": { "name": "punctuation.definition.bracket punctuation.definition.bracket.amx.pawn" },
      // ... 其他捕获项不变
      "6": { "name": "punctuation.definition.bracket punctuation.definition.bracket.amx.pawn" }
    }
    
  • 单独匹配大括号,明确标记为配对项
    若当前通过match匹配整个@link标签,VS Code可能无法单独识别大括号为配对结构。可以在docblock的patterns中添加单独的大括号匹配规则,放在@link规则之前:

    "docblock": {
      "patterns": [
        {
          "match": "\\{|\\}",
          "name": "punctuation.definition.bracket punctuation.definition.bracket.amx.pawn"
        },
        // 原有的@link匹配规则
        {
          "match": "({)(@)(link|linkcode|linkplain)\\s+(\\w+)\\s+(.*)(})",
          "captures": { /* ... 原有配置 ... */ }
        }
      ]
    }
    

    这样能让VS Code更清晰地识别这是一对可配对的括号。

  • 确认VS Code的括号配置
    确保用户设置中editor.bracketPairColorization.enabled为true,同时在语言配置文件中明确指定该语言的括号对:

    "bracketPairs": [["{", "}"]]
    

内容的提问来源于stack exchange,提问作者Mis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:53:11