Применить свертывание к последовательности блоков YAML в Notepad++

У меня есть несколько файлов YAML, и я хочу, чтобы Notepad++ кодировал отображение (в YAML это последовательность блоков). Например, в этом примере:

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

Я хочу сложить весь TerrainGeometryMap отображение. Notepad++ делает то, что я хочу, если отображение YAML отформатировано с дополнительным отступом, т.е.

TerrainGeometryMap:
  - - [D, G]
    - [D, G]
    - [K]
  - - [D, G]
    - [D, G]
    - [D, G]

Есть ли способ полностью сложить первую карту?

1 ответ

Решение

Вы нашли ошибку лексера YAML.

Как уже говорилось, я первоначально думал, что ваш первый случай не должен приводить к тому же сворачиванию, что и второй, но затем я проверил Пример 10.4 в спецификации YAML 1.1 (реализованный SnakeYAML) и Пример 4.19 в спецификации YAML 1.0 и обнаружил, что ваши ожидания при сворачивании действительны,

Scintilla редактор (на котором построен Notepad++) неправильно складывает последовательности блоков YAML.

Вы можете

  • сообщить о проблеме в багтрекере Notepad++ (я пока не смог найти его в списке)
    • может быть, еще лучше можно сообщить о проблеме в багтрекер Scintilla, потому что именно они фактически поддерживают лексеры (не Notepad++). Надеемся, что это исправление вскоре будет распространено в Notepad++

ОБНОВЛЕНИЕ: я зарегистрировал ошибку как # 1847. Вы можете проверить там, чтобы увидеть его статус.

  • устранить проблему самостоятельно, отредактировав метод FoldYAMLDoc() в модуле scintilla\lexers\LexYAML.cxx который вы можете найти в файле исходного архива Notepad++. Если вы можете затем восстановить ваши двоичные файлы Notepad++, вы должны заставить его работать
  • найдите какой-нибудь другой редактор с поддержкой свертывания кода, в котором есть лексер YAML
Другие вопросы по тегам