Page 7 of 13

Re: Cudatext Code tree

Posted: 29.04.2025 13:14
by mix-7
Еще раз поясню, зачем нужно "замораживаеть" обновление Code tree.
Пусть у вас файл-календарь:
+ годы
++ месяцы
+++ даты
Вы работаете с 2-3 разными месяцами и вам нужно, чтобы работать с январем и сентябрем,
а иногда и заглядывать в март.
Т.е. три узла второго нужно держать открытым.
Code tree обновляет фолдинг после перемещения в другой узел, свораяивая остальные узлы.
Запоминать программно состояние дерева программно сложно, хотя есть программы, которые это делают.
Возможно, есть какие-то простые алгоритмы или API для запоминания дерева.
CherryTree помнит все состояние дерева, но где хранит, я не нашел!
GitHub - giuspen/cherrytree: cherrytree
https://github.com/giuspen/cherrytree

В xml-файле нет (или я не увидел) параметра свернтутости узла.

Возникла идея "заморозить" обновление Code tree.
Для этого подходит параметр
//Delay after text change (in milliseconds), after which code-tree
//starts to fill.
"ui_tree_time_fill": 2000,

По умолчанию дерево обновляется через 2 сеунды после измениия состояния или текста заголовка/заголовков, перемещения каретки в другой блок.
Если установить параметр "ui_tree_time_fill": 2000000,
с помощью app_proc(PROC_CONFIG_READ, '{"ui_tree_time_fill": 2000000}')
то фолдинг будет возможен вручную, но его обновление происходить не будет,
вернее, через 2000 секунд.
К сожалению, макроса для app_proc нет, поэтому делаем простенький плагин для этой функции.
Идеи и вопросы по нему в теме Вопросы по плагинам, начиная с 3 страницы.
(259) CudaText. Вопросы по плагинам - Страница 3 - UVviewsoft forums
https://synwrite.sourceforge.net/forums ... 2&start=20

Сам текст плагина я размещу после здесь и, думаю, на Гитхабе.

Re: Cudatext Code tree

Posted: 30.04.2025 10:14
by mix-7
mix-7 wrote: 29.04.2025 13:32 <...>
(И как CherryTree запоминает конфигурацию дерева?
здесь ссылки https://synwrite.sourceforge.net/forums ... 0&start=60
Куда копать?)
вся "магия" ("рисунок" ветвей дерева, их состояние свернуто/развернуто) хранится в
~/.var/app/net.giuspen.cherrytree/config/cherrytree/config.cfg

Re: Cudatext Code tree

Posted: 30.04.2025 10:23
by mix-7
А как перейти в поле ввода фильтра Code tree не мышкой, а клавиатурой?
Для поиска есть Ctrl-F, а для Code tree?

Re: Cudatext Code tree

Posted: 30.04.2025 10:35
by mix-7
"Все уже украдено до нас" (с) (Если вам что-то надо от CudaText, это уже реализовано.)
Не надо никакого замораживания дерева и плагина для этого, чтобы структура дерева сохранялась (не сворачивались в Code tree развернутые узлы)!

Если мы не переключаем вкладку, не переименовываем заголовок, блоки остаются в том же состоянии.
И может быть развернуто больше одного узла.
Но стоит нам переключить вкладку, добавить или переименовать блок, как все блоки, кроме текущего, сворачиваются.
При переключении вкладок не нужно перерисовывать Code tree.
Ведь изменений Code tree не было, просто посмотрели другой файл.

Поэтому просьба - не перерисовывать Code tree после переключения вкладок.
Спасибо!

Re: Cudatext Code tree

Posted: 30.04.2025 11:57
by main Alexey
> как перейти в поле ввода фильтра Code tree не мышкой, а клавиатурой?

Cmd palette: "code tree: focus filter".
повесить хоткей на эту кмд.

Re: Cudatext Code tree

Posted: 30.04.2025 12:00
by main Alexey
>просьба - не перерисовывать Code tree после переключения вкладок.

дерево хранится в "буфере" ввнутри своего таба. перерисовывать конечно надо, т к мы копируем данные из этого "буфера" в контрол дерева (после переключания таба). может еще и сохранять свернутость узлов. надо подумать, это не просто сделать.

Re: Cudatext Code tree

Posted: 30.04.2025 13:16
by mix-7
> перерисовывать конечно надо,

Жалко, что нельзя оставить.

А нельзя ли перед переключением вкладки контрол ее дерева сохранять? Сильно ли это замедлит переключение, если возможно.
Ведь контрол дерева построен, отображается, имеет где-то свое записанное состояние. Вот его бы зафиксировать!

ОК, еще может для последних двух - n вкладок хранить буферы дерева и восстанавливать.

Или - более простое и универсальное решение - ставить пины (по аналогии с маркерами, закладками) на те блоки, которые хотелось бы иметь открытыми.
Как очки на книжке, чтобы страницы не листались от сквозняка.

Это, правда, новая сущность.
Но зато не надо запоминать то, что, возможно, не надо запоминать.

Если не плодить сущности, то маркеры красные по умолчанию, а маркеры-"грузики" пусть будут синими.

Да, не очень идея с маркерами...

А было бы здорово при переключении оставаться с теми же открытыми нодами, с той же "картинкой".
Удобно. Стабильно. Надежно. Т.е. лояльность бренду повышается из-за такого удобства. позволю себе представить.

Re: Cudatext Code tree

Posted: 30.04.2025 13:16
by mix-7
> Cmd palette: "code tree: focus filter".

ЗдОрово! Все уже реализовано!

Re: Cudatext Code tree

Posted: 30.04.2025 14:34
by main Alexey
я и говорю что надо посмотреть, как сохранять свернутость узлов codetree при переключении табов. уже и так сохраняется содержимое дерева. но не свернутость узлов. пишется в "буфер" внутри таба. после возврата на старый таб "буфер" копируется в один общий контрол codetree.
но свернутость пока НЕ восстанавливается AFAIR.

Re: Cudatext Code tree

Posted: 30.04.2025 17:34
by main Alexey
как времяное решение, опция "ui_tree_unfold":true вам пригодится?