【问题标题】:Apply folding to block sequence of YAML in Notepad++在 Notepad++ 中将折叠应用于 YAML 的块序列
【发布时间】:2016-11-01 18:11:43
【问题描述】:

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

地形几何图: - - [G, W] - [G,G] - [G,G] - - [G, G] - [G,G] - [G,G]

我想折叠整个TerrainGeometryMap 映射。如果 YAML 映射使用额外的缩进格式化,Notepad++ 会执行我想要的操作,即

地形几何图: - - [D, G] - [D,G] - [K] - - [D, G] - [D,G] - [D,G]

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

【问题讨论】:

    标签: notepad++ yaml folding


    【解决方案1】:

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

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

    Scintilla 编辑器(在其上构建 Notepad++)没有正确折叠 YAML 块序列

    你可以

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

    更新:我将错误注册为#1847。您可以在那里查看它的状态。

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

    【讨论】:

    • 我认为问题是我上面给出的示例在浏览器中正确显示,但是在复制/粘贴到 Notepad++ 时有额外的空白。我添加了一个在浏览器中看起来错误的示例,但会以重现问题的方式复制/粘贴。
    • 我并不是说 Notepad++ YAML 词法分析器有问题,而是我想知道是否可以调整它以根据需要显示。如果没有,我会将其标记为答案。有问题的 YAML 来自 SnakeYAML 发射器,但正如您所建议的,从那一端解决问题可能更容易。
    • 经过进一步研究,我不同意您关于所有三个要素处于同一水平的说法。根据YAML specSince people perceive the “-” indicator as indentation, nested block sequences may be indented by one less space to compensate
    • @Pikalek – 似乎我们同时在做同样的研究。 :) 查看更新的答案。我还检查了 YAML 1.0 以了解这是否在 1.0 和 1.1 之间发生了变化。它没有。
    猜你喜欢
    • 1970-01-01
    • 2019-04-16
    • 2017-08-28
    • 2013-10-08
    • 2013-10-29
    • 1970-01-01
    • 2017-01-11
    • 2019-04-01
    • 2011-08-27
    相关资源
    最近更新 更多