Page 1 of 2
Markdown code-tree, неверное дерево в данном примере
Posted: 02.12.2025 12:58
by dimon40001
Насчет подсветки, поиска и фильтрации - это пока для меня из области "nice to have".
А вот насчет неправильного отображения дерева - болезненная тема.
Вот еще раз пример Markdown. Синий блок в редакторе - это то, что реально является одним блоком (уровни 3, 2, 4 должны быть в вложены в блок уровня 1). Но в дереве и в свертке это сейчас не так.
Как я понимаю, при отрисовке дерева нужно использовать что-то типа стека, чтобы помнить глубину всех уровней от корня.
Re: Cudatext Code tree
Posted: 02.12.2025 13:10
by main Alexey
вот код markdown treehelper:
https://github.com/Alexey-T/CudaText/bl ... rkdown.pas
видимо на вашем примере сбивается.
может сможете поправить?
записал в гитхаб
https://github.com/Alexey-T/CudaText/issues/6131
Re: Cudatext Code tree
Posted: 02.12.2025 13:27
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 или внутренние средства.
Re: Cudatext Code tree
Posted: 02.12.2025 13:31
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
Re: Cudatext Code tree
Posted: 02.12.2025 13:34
by main Alexey
понятно что сбивается. может сможете скомпилировать Куду и поправить указаный файл?
Re: Markdown code-tree, неверное дерево в данном примере
Posted: 02.12.2025 13:45
by main Alexey
не путать отчет Паскаль-хелпера и Питон-хелпера.
насколько я понял сбивается именно Паскаль-хелпер. он для каждого узла дерева отдает range:
x1, y1 -- x2, y2.
и вот этот диапазон неверный для некоторых узлов.
Re: Markdown code-tree, неверное дерево в данном примере
Posted: 02.12.2025 14:01
by main Alexey
для тестирования паскаль-хелперов в Гитхабе есть отдельная программка (чтоб не собирать редактор).
testapps/test_treehelpers/app.lpi
запускаем, она показывает простой редактор и простое дерево для него, можно выбрать любой *.md file.
Re: Markdown code-tree, неверное дерево в данном примере
Posted: 02.12.2025 14:02
by dimon40001
main Alexey wrote: ↑02.12.2025 13:45
не путать отчет Паскаль-хелпера и Питон-хелпера.
насколько я понял сбивается именно Паскаль-хелпер.
Сбивается любой хелпер, не только Паскаль.
Делаю tree helper, который выдает фиксированую структуру дерева. Без логики. Чисто заготовку.
Привязываю helper, например, к CSS лексеру. И открываю пустой файл с этим лексером.
Результат - неправильное дерево.
Поэтому я пытаюсь объяснить, что вряд ли дело в хелпере. Дело в том, как полученные от хелпера
правильные tupples переводятся в реальное
неправильное дерево.
Re: Markdown code-tree, неверное дерево в данном примере
Posted: 02.12.2025 14:11
by main Alexey
ой, кажись я нащупал проблему. она не в отчете treehelper а в TfmMain.DoCodetree_ApplyTreeHelperInPascal.
Re: Markdown code-tree, неверное дерево в данном примере
Posted: 02.12.2025 14:12
by main Alexey
и еще повторяется в TfmMain.DoCodetree_ApplyTreeHelperResults.