在 Notepad++ 中将折叠应用于 YAML 的块序列

Apply folding to block sequence of YAML in Notepad++

我有一些 YAML 文件,我希望 Notepad++ 编码折叠映射(在 YAML 中它是一个块序列)。例如在这个例子中:

TerrainGeometryMap:
- - [G, W]
  - [G, G]
  - [G, G]
- - [G, G]
  - [G, G]
  - [G, G]

我想折叠整个 TerrainGeometryMap 映射。如果 YAML 映射的格式带有额外的缩进,即

,Notepad++ 会执行我想要的操作
TerrainGeometryMap:
  - - [D, G]
    - [D, G]
    - [K]
  - - [D, G]
    - [D, G]
    - [D, G]

有没有办法完全折叠第一张地图?

您发现了一个 YAML 词法分析器错误。

如前所述,我最初认为您的第一种情况不应导致与第二种情况相同的折叠,但后来我检查了 Example 10.4 in YAML 1.1 specification (implemented by SnakeYAML) and Example 4.19 in YAML 1.0 specification 并发现您的对折叠的期望是有效的。

Scintilla 编辑器(构建 Notepad++ 的基础)未正确折叠 YAML 块序列

你可以

  • Notepad++ bugtracker 中报告问题(我还没有在列表中找到它)
    • 也许更好的方法是在 Scintilla bugtracker 中报告问题,因为实际上是他们在维护词法分析器(而不是 Notepad++)。 希望修复会得到解决很快传播到 Notepad++

UPDATE: I registered the bug as #1847. You can check there to see its status.

  • 通过编辑模块 scintilla\lexers\LexYAML.cxx 中的方法 FoldYAMLDoc() 自行解决问题,您可以在 Notepad++ 源存档文件中找到该模块。如果你可以重建你的 Notepad++ 二进制文件,你应该让它工作
  • 找到具有 YAML 词法分析器的 some other editor with code folding support