Markdown code-tree, неверное дерево в данном примере
-
dimon40001
- Posts: 41
- Joined: 05.05.2022 18:52
Markdown code-tree, неверное дерево в данном примере
Насчет подсветки, поиска и фильтрации - это пока для меня из области "nice to have".
А вот насчет неправильного отображения дерева - болезненная тема.
Вот еще раз пример Markdown. Синий блок в редакторе - это то, что реально является одним блоком (уровни 3, 2, 4 должны быть в вложены в блок уровня 1). Но в дереве и в свертке это сейчас не так.
Как я понимаю, при отрисовке дерева нужно использовать что-то типа стека, чтобы помнить глубину всех уровней от корня.
А вот насчет неправильного отображения дерева - болезненная тема.
Вот еще раз пример Markdown. Синий блок в редакторе - это то, что реально является одним блоком (уровни 3, 2, 4 должны быть в вложены в блок уровня 1). Но в дереве и в свертке это сейчас не так.
Как я понимаю, при отрисовке дерева нужно использовать что-то типа стека, чтобы помнить глубину всех уровней от корня.
-
main Alexey
- Posts: 2773
- Joined: 25.08.2021 18:15
Re: Cudatext Code tree
вот код markdown treehelper:
https://github.com/Alexey-T/CudaText/bl ... rkdown.pas
видимо на вашем примере сбивается.
может сможете поправить?
записал в гитхаб
https://github.com/Alexey-T/CudaText/issues/6131
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
Мне кажется, дело не в самом хелпере. Код хелпера скорее всего правильный.
Я пробовал делать свой хелпер, который просто фиксированно отдает уровни. И парсится неправильно
https://github.com/CudaText-addons/cuda_tree_markdown
- это старый плагин, заменен на Паскаль, как я понимаю
https://github.com/CudaText-addons/cuda ... _code_tree
- сторонний старый плагин, но это не TreeHelper, а именно плагин, который строит дерево самостоятельно через tree_proc, и строит правильно.
Проблема возникает в том месте Паскалевского кода, который из правильно сформированного get_headers() строит дерево используя tree_proc или внутренние средства.
Я пробовал делать свой хелпер, который просто фиксированно отдает уровни. И парсится неправильно
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
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
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
понятно что сбивается. может сможете скомпилировать Куду и поправить указаный файл?
-
main Alexey
- Posts: 2773
- Joined: 25.08.2021 18:15
Re: Markdown code-tree, неверное дерево в данном примере
не путать отчет Паскаль-хелпера и Питон-хелпера.
насколько я понял сбивается именно Паскаль-хелпер. он для каждого узла дерева отдает range:
x1, y1 -- x2, y2.
и вот этот диапазон неверный для некоторых узлов.
насколько я понял сбивается именно Паскаль-хелпер. он для каждого узла дерева отдает range:
x1, y1 -- x2, y2.
и вот этот диапазон неверный для некоторых узлов.
-
main Alexey
- Posts: 2773
- Joined: 25.08.2021 18:15
Re: Markdown code-tree, неверное дерево в данном примере
для тестирования паскаль-хелперов в Гитхабе есть отдельная программка (чтоб не собирать редактор).
testapps/test_treehelpers/app.lpi
запускаем, она показывает простой редактор и простое дерево для него, можно выбрать любой *.md file.
testapps/test_treehelpers/app.lpi
запускаем, она показывает простой редактор и простое дерево для него, можно выбрать любой *.md file.
-
dimon40001
- Posts: 41
- Joined: 05.05.2022 18:52
Re: Markdown code-tree, неверное дерево в данном примере
Сбивается любой хелпер, не только Паскаль.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, неверное дерево в данном примере
ой, кажись я нащупал проблему. она не в отчете treehelper а в TfmMain.DoCodetree_ApplyTreeHelperInPascal.
-
main Alexey
- Posts: 2773
- Joined: 25.08.2021 18:15
Re: Markdown code-tree, неверное дерево в данном примере
и еще повторяется в TfmMain.DoCodetree_ApplyTreeHelperResults.