Sublime Text 4:特定 YAML 属性名称的自定义语法突出显示

Sublime Text 4: custom syntax highlight for specific YAML property names

提问人:sebeiron 提问时间:10/25/2023 更新时间:10/28/2023 访问量:36

问:

我正在用YAML编写很多OPEN API规范,其中包含一些自定义属性。这些属性由从规范生成文档的脚本使用。 无论如何,我希望为这些属性使用特定的颜色,以便更轻松地在代码中发现它们。

这是我想要实现的目标:

结果预览

我试图扩展 Sublime Text YAML 语法突出显示以包含这些属性名称,但到目前为止我没有成功:没有颜色变化。 请看下面我到目前为止所做的事情,希望有人能发现我的错误。

自定义 YAML .sublime-syntax 文件:

%YAML 1.2
---
name: YAML custom
scope: source.yaml
version: 2.1

file_extensions:
  - yaml
  - yml

extends: Packages/YAML/YAML.sublime-syntax

contexts:
  custom-xtra:
    - match: '(\@xtra(\w)*)'
      scope: custom.extra.yaml
    - match: '(\@template_(\w)*)'
      scope: custom.extra.yaml

.sublime-color-scheme 文件中的颜色设置:

{
    "name": "YAML custom",
    "scope": "custom.extra.yaml",
    "foreground": "Turquoise"
},
语法高亮 SublimeText SublimeText4

评论


答:

1赞 Keith Hall 10/28/2023 #1

这不起作用的原因是,您引入了一个新的上下文,该上下文在任何地方都没有引用,因此它永远不会被使用。custom-xtra

通常,使用自定义范围扩展语法定义的方法是打开文件并使用原始语法定义突出显示它,然后将文本插入符号放在要以不同方式突出显示的某个标记上。就您而言,在文本中的某个地方。'@template_resp'

然后,从“工具”菜单 -> “开发人员”-> “显示范围名称”。您将看到一个弹出窗口,按插入符号显示当前范围,在其下方是上下文回溯。这会告诉您文件中该点的作用域堆栈。

在这里,我们可以看到突出显示该文本的规则来自文件中调用的上下文。flow-scalar-single-quoted-bodyPackages/YAML/YAML.sublime-syntax

因此,包含上下文将有助于确保您的匹配模式生效。custom-xtraflow-scalar-single-quoted-body

%YAML 1.2
---
name: YAML custom
scope: source.yaml.custom
version: 2

file_extensions:
  - yaml
  - yml

extends: Packages/YAML/YAML.sublime-syntax

contexts:
  custom-xtra:
    - match: '\@xtra\w*'
      scope: custom.extra.yaml
    - match: '\@template_\w*'
      scope: custom.extra.yaml

  flow-scalar-single-quoted-body:
    - meta_prepend: true
    - include: custom-xtra

评论

0赞 sebeiron 10/29/2023
它就像一个魅力,谢谢@keith!也感谢您的详细说明,提供了有关如何设置类似扩展的清晰指南。