Применить свертывание к последовательности блоков 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