Cudatext Code tree
-
main Alexey
- Posts: 2790
- Joined: 25.08.2021 18:15
Re: Cudatext Code tree
различие в уровне фолдинга никак не учитывается. учитывается только заголовок (который очищен от +++).
Re: Cudatext Code tree
Code tree и фолдинг во вкладке никак не связаны?
Заметил, что сворачивание/разворачивание ветки не синхронизируется с фолдингом во вкладке.
> различие в уровне фолдинга никак не учитывается
заголовки в Code tree не "знают" о своем уровне?
Code tree строится просто как одностороннее бинарное дерево?
Заметил, что сворачивание/разворачивание ветки не синхронизируется с фолдингом во вкладке.
> различие в уровне фолдинга никак не учитывается
заголовки в Code tree не "знают" о своем уровне?
Code tree строится просто как одностороннее бинарное дерево?
-
main Alexey
- Posts: 2790
- Joined: 25.08.2021 18:15
Re: Cudatext Code tree
>Code tree и фолдинг во вкладке никак не связаны?
нет конечно.
>заголовки в Code tree не "знают" о своем уровне?
это зависит от того как ищется заголовок. с символами +++ или без них. в моем коде - символы +++ убираются. но можешь поправить паскаль-код чтобы оставить +++.
>Code tree строится просто как одностороннее бинарное дерево?
не знаю что такое "односторонее" и "бинарное".
нет конечно.
>заголовки в Code tree не "знают" о своем уровне?
это зависит от того как ищется заголовок. с символами +++ или без них. в моем коде - символы +++ убираются. но можешь поправить паскаль-код чтобы оставить +++.
>Code tree строится просто как одностороннее бинарное дерево?
не знаю что такое "односторонее" и "бинарное".
-
dimon40001
- Posts: 41
- Joined: 05.05.2022 18:52
Re: Cudatext Code tree
Решил новую тему не создавать, т.к. вопросы по Code Tree.
Вопросы такие:
1. есть ли возможность средствами API создать окно визуально как Command Palette, но наполнять его своим содержимым (например, своими командами или содержимым Code Tree).
dlg_proc / dlg_custom справятся с этим? Как вариант - наполнять Command Palette какими-то скрытыми командами, или использовать юзер-префикс, команды с которым не будут попадать в дефолтное окно.
UPD: ответ самому себе.
Это делается через API dlg_menu() одну строчку.
dlg_menu(DMENU_LIST+DMENU_CENTERED+DMENU_EDITORFONT, f'# aaa\taa\n b\tbbbb\n# ccc\tcc', focused=0, caption="ABC")
2. в Code Tree есть поиск, который ищет по узлам дерева, отфильтровывая элементы.
Можно ли сделать опционально вместо фильтрации - подсветку элементов?
(Вместо подсветки как в MS Word было бы на самом деле достаточно выставленной иконки у ноды)
3. в Code Tree есть поиск, который ищет по узлам дерева.
Реализуемо ли внутренними средствами или плагинами, чтобы поиск шел не только по именам узлов, но и по их содержимому (см. пример во вложении).
4. API tree_proc - зачем он нужен, если есть TreeHelper. Есть реальные примеры практического использования? Или, по-другому, зачем нужен API Tree Helper, если можно было оперировать деревом через tree_proc?
5. из документации к TreeHelper. С чем связана такая такая логика? Как я понимаю, это приводит к неправильному изображению дерева (например, markdown) и к неправильному же свертыванию, если уровни "плавают".
Причем это не проблема логики TreeHelper, который потенциально мог бы неправильно определять уровни, а именно проблема логики отрисовки средствами CudaText уровней, которые получены из TreeHelper.
(Пример следующим комментарием, в одном сообщении больше 3 файлов не получается отправить).
Вопросы такие:
1. есть ли возможность средствами API создать окно визуально как Command Palette, но наполнять его своим содержимым (например, своими командами или содержимым Code Tree).
dlg_proc / dlg_custom справятся с этим? Как вариант - наполнять Command Palette какими-то скрытыми командами, или использовать юзер-префикс, команды с которым не будут попадать в дефолтное окно.
UPD: ответ самому себе.
Это делается через API dlg_menu() одну строчку.
dlg_menu(DMENU_LIST+DMENU_CENTERED+DMENU_EDITORFONT, f'# aaa\taa\n b\tbbbb\n# ccc\tcc', focused=0, caption="ABC")
2. в Code Tree есть поиск, который ищет по узлам дерева, отфильтровывая элементы.
Можно ли сделать опционально вместо фильтрации - подсветку элементов?
(Вместо подсветки как в MS Word было бы на самом деле достаточно выставленной иконки у ноды)
3. в Code Tree есть поиск, который ищет по узлам дерева.
Реализуемо ли внутренними средствами или плагинами, чтобы поиск шел не только по именам узлов, но и по их содержимому (см. пример во вложении).
4. API tree_proc - зачем он нужен, если есть TreeHelper. Есть реальные примеры практического использования? Или, по-другому, зачем нужен API Tree Helper, если можно было оперировать деревом через tree_proc?
5. из документации к TreeHelper. С чем связана такая такая логика? Как я понимаю, это приводит к неправильному изображению дерева (например, markdown) и к неправильному же свертыванию, если уровни "плавают".
Причем это не проблема логики TreeHelper, который потенциально мог бы неправильно определять уровни, а именно проблема логики отрисовки средствами CudaText уровней, которые получены из TreeHelper.
(Пример следующим комментарием, в одном сообщении больше 3 файлов не получается отправить).
Code: Select all
Getter must return list of tuples: (pos, level, caption, icon).
...
field "level": 1-based level of node, node of level K+1 is nested into (nearest upper) node of level K.
...
Last edited by dimon40001 on 02.12.2025 13:55, edited 3 times in total.
-
main Alexey
- Posts: 2790
- Joined: 25.08.2021 18:15
Re: Cudatext Code tree
dlg_proc справится (dlg_custom устарело).>1. есть ли возможность средствами API создать окно визуально как Command Palette
нельзя, code-tree filter только фильтрует.>2. в Code Tree есть поиск.. Можно ли сделать опционально вместо фильтрации - подсветку элементов?
можно подумать как расширить АПИ в этом месте.
пока нельзя.>Реализуемо ли внутренними средствами или плагинами, чтобы поиск шел не только по именам узлов, но и по их содержимому
есть. пример плагин Code-Tree Bookmarks.>4. API tree_proc - зачем он нужен, если есть TreeHelper. Есть реальные примеры
интересно. treehelper - для быстрого написания парсеров дерева. tree_proc - для любых tree control. не только в code-tree.>по-другому, зачем нужен API Tree Helper, если можно было оперировать деревом через tree_proc?
логика из-за того что так просто писать treehelper. надо конечно чтобы уровни были согласованы. а если соседние уровни например 2 и 6 то уровень 6 вложится в уровень 2. в чем проблема. разве markdown с таким случаем дает сбой code tree?>5. .. С чем связана такая такая логика? Как я понимаю, это приводит к неправильному изображению дерева (например, markdown) и к неправильному же свертыванию, если уровни "плавают".
-
main Alexey
- Posts: 2790
- Joined: 25.08.2021 18:15
Re: Cudatext Code tree
расширил АПИ. переделал после последнего поста, пост удалил.
вот такой плагин ловит изменение фильтра, и если оставить 'return False' то филтрация дефолтная блокируется.
будет в обновлении.
как еще расширить АПИ?
вот такой плагин ловит изменение фильтра, и если оставить 'return False' то филтрация дефолтная блокируется.
Code: Select all
from cudatext import *
e = Editor(app_proc(PROC_GET_CODETREE_FILTER, ''))
class Command:
def on_state(self, ed_self, val):
if val == APPSTATE_CODETREE_FILTER_CHANGE:
print('filter:', e.get_text_all())
return False # block default filtering, test only
как еще расширить АПИ?
Re: Cudatext Code tree
Есть ли возможность для split tab сделать отдельные Code tree со своими независимыми фильтрами?
(Вкладку разделяем пополам, в одной половине в ее Code tree ищем по одному контексту, в другой по другому)
Было бы удобно.
(Вкладку разделяем пополам, в одной половине в ее Code tree ищем по одному контексту, в другой по другому)
Было бы удобно.
-
main Alexey
- Posts: 2790
- Joined: 25.08.2021 18:15
Re: Cudatext Code tree
возможности нет. прога имеет только один code-tree. а на 3...6 разделенных редакторов пришлось бы делать 3...6 дерева.
Re: Cudatext Code tree
> . а на 3...6 разделенных редакторов
тогда есть возможность запустить еще один инстанс CudaText?
и две вкладки с одним и тем же файлом?
тогда есть возможность запустить еще один инстанс CudaText?
и две вкладки с одним и тем же файлом?