Markdown code-tree, неверное дерево в данном примере

Solved bugs are moved into this topic...
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Markdown code-tree, неверное дерево в данном примере

Post by dimon40001 »

Насчет подсветки, поиска и фильтрации - это пока для меня из области "nice to have".

А вот насчет неправильного отображения дерева - болезненная тема.

Вот еще раз пример Markdown. Синий блок в редакторе - это то, что реально является одним блоком (уровни 3, 2, 4 должны быть в вложены в блок уровня 1). Но в дереве и в свертке это сейчас не так.

Как я понимаю, при отрисовке дерева нужно использовать что-то типа стека, чтобы помнить глубину всех уровней от корня.
2025-12-02 14_52_32.png
main Alexey
Posts: 2773
Joined: 25.08.2021 18:15

Re: Cudatext Code tree

Post by main Alexey »

вот код markdown treehelper:
https://github.com/Alexey-T/CudaText/bl ... rkdown.pas

видимо на вашем примере сбивается.
может сможете поправить?

записал в гитхаб
https://github.com/Alexey-T/CudaText/issues/6131
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Re: Cudatext Code tree

Post by dimon40001 »

Мне кажется, дело не в самом хелпере. Код хелпера скорее всего правильный.

Я пробовал делать свой хелпер, который просто фиксированно отдает уровни. И парсится неправильно

https://github.com/CudaText-addons/cuda_tree_markdown
- это старый плагин, заменен на Паскаль, как я понимаю

https://github.com/CudaText-addons/cuda ... _code_tree
- сторонний старый плагин, но это не TreeHelper, а именно плагин, который строит дерево самостоятельно через tree_proc, и строит правильно.

Проблема возникает в том месте Паскалевского кода, который из правильно сформированного get_headers() строит дерево используя tree_proc или внутренние средства.
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Re: Cudatext Code tree

Post by dimon40001 »

get_headers (на псевдокоде)

pos=(0, 1, 0, 2)
icon = -1
res = []
res.append( (pos, 1, "Level 1", icon) )
res.append( (pos, 3, "Level 3", icon) )
res.append( (pos, 6, "Level 6", icon) )
res.append( (pos, 2, "Level 2", icon) ) # expected: уровень вложен внутрь Level 1. Actual result: Level 2 идет в корне дерева
res.append( (pos, 1, "Level 1 one more...", icon) )
return res
main Alexey
Posts: 2773
Joined: 25.08.2021 18:15

Re: Cudatext Code tree

Post by main Alexey »

понятно что сбивается. может сможете скомпилировать Куду и поправить указаный файл?
main Alexey
Posts: 2773
Joined: 25.08.2021 18:15

Re: Markdown code-tree, неверное дерево в данном примере

Post by main Alexey »

не путать отчет Паскаль-хелпера и Питон-хелпера.
насколько я понял сбивается именно Паскаль-хелпер. он для каждого узла дерева отдает range:
x1, y1 -- x2, y2.
и вот этот диапазон неверный для некоторых узлов.
main Alexey
Posts: 2773
Joined: 25.08.2021 18:15

Re: Markdown code-tree, неверное дерево в данном примере

Post by main Alexey »

для тестирования паскаль-хелперов в Гитхабе есть отдельная программка (чтоб не собирать редактор).
testapps/test_treehelpers/app.lpi
запускаем, она показывает простой редактор и простое дерево для него, можно выбрать любой *.md file.
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Re: Markdown code-tree, неверное дерево в данном примере

Post by dimon40001 »

main Alexey wrote: 02.12.2025 13:45 не путать отчет Паскаль-хелпера и Питон-хелпера.
насколько я понял сбивается именно Паскаль-хелпер.
Сбивается любой хелпер, не только Паскаль.

Делаю tree helper, который выдает фиксированую структуру дерева. Без логики. Чисто заготовку.

Привязываю helper, например, к CSS лексеру. И открываю пустой файл с этим лексером.

Результат - неправильное дерево.

Поэтому я пытаюсь объяснить, что вряд ли дело в хелпере. Дело в том, как полученные от хелпера правильные tupples переводятся в реальное неправильное дерево.
main Alexey
Posts: 2773
Joined: 25.08.2021 18:15

Re: Markdown code-tree, неверное дерево в данном примере

Post by main Alexey »

ой, кажись я нащупал проблему. она не в отчете treehelper а в TfmMain.DoCodetree_ApplyTreeHelperInPascal.
main Alexey
Posts: 2773
Joined: 25.08.2021 18:15

Re: Markdown code-tree, неверное дерево в данном примере

Post by main Alexey »

и еще повторяется в TfmMain.DoCodetree_ApplyTreeHelperResults.
Post Reply