А если просто не перестраивать дерево при сохранении?
Если заголовки не менялись.
Еще идея - (принцип CudaText: "если вам что-то нужно, то это уже реализовано!" )
ставить в нужных ветвях в заголовках теги, а в поле поиска фильтры, и тогда эти блоки будут развернуты.
1. самый простой и красивый.
CudaText помнит последний и предпоследний блок, где была каретка.
Состояние фолдинга этих блоков тоже запоминать и не менять.
2. Есть маркеры. Где стоят маркеры, там состояние фолдинга этих блоков тоже запоминать и не менять.
3. Самое некрасивое (потому что громоздкое) решение - добавить пины в Code tree для закрепления состояния фолдинга.
Вот что еще заметил.
Code tree ПКМ - можно сортировать - ПКМ на tree, чекбокс Sorted
Очень удобно для нужных случаев, спасибо!
А когда снимаешь галочку, Code tree не обновляется, не возвращается к порядку последовательности.