【问题标题】:Sublime coloring everything between brackets different color than outside崇高着色括号之间的所有内容与外部颜色不同
【发布时间】:2018-12-15 00:51:06
【问题描述】:

在 Sublime 语法文件中,我可以使用如下命令为所有硬括号和里面的所有内容着色:

- match: '\[.*?\]'
  scope: keyword.control  

如果我想为括号内的所有内容涂上不同的颜色,我尝试了这样的方法:

- match: '\['
  scope: variable.function
  comment: Images
  push:
    - meta_scope: constant.numeric
    - match: \]
      pop: true

问题是它会将最后一个括号着色为与内部相同的颜色。知道如何使最后一个括号与起始括号的颜色相同吗?

【问题讨论】:

    标签: sublimetext3 syntax-highlighting


    【解决方案1】:

    Syntax documentation 中,它这样说(强调我的):

    • 元范围。这会将给定范围分配给此上下文中的所有文本,包括将上下文推入堆栈并将其弹出的模式。
    • meta_content_scope。如上所述,但 不适用于触发上下文的文本(例如,在上面的字符串示例中,内容范围不会应用于引号字符)。

    在您的第二个示例中,您使用meta_scope,这会导致将上下文弹出堆栈的匹配也应用此范围。如果您将其交换为meta_content_scope,则不会发生这种情况。但是,在这种情况下,] 字符根本没有应用特定范围,因此它看起来与标准文本颜色相同。

    为了解决这个问题,您还可以对它应用与最初推送上下文的范围相同的范围。例如:

    - match: '\['
      scope: variable.function
      comment: Images
      push:
        - meta_content_scope: constant.numeric
        - match: \]
          scope: variable.function
          pop: true
    

    从技术上讲,如果您所追求的只是颜色,那么只需 scope 并且可能会满足您的需求。然而,使用meta_content_scope 也更“干净”,以避免它仍然可能基于错误的范围着色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-29
      • 2018-10-12
      • 2016-06-05
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多