открывающая скобка начинает блок?

dimon40001
Posts: 21
Joined: 05.05.2022 18:52

Post by dimon40001 »

main Alexey wrote:!!
теперь, если group_index=21, то проверка на скобки пропустится. если 20, то как и раньше
Спасибо! Сегодня плотно поэкспериментирую со скобками и деревом кода.
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

codetree строится из ranges которые помечены в лексере как "show in code tree". если таких нету- дерева нету. а tree helper вообще все перебивает и тянет на себя.
dimon40001
Posts: 21
Joined: 05.05.2022 18:52

Post by dimon40001 »

1.
main Alexey wrote:!!
делаю вам ПОБЛАЖКУ. теперь, если group_index=21, то проверка на скобки пропустится. если 20, то как и раньше.
это group index для Block Rule в св-вах лексера.
проверьте бету - http://uvviewsoft.com/c/
Посидел как следует вечерком. На мой взгляд в бете с GroupIndex = 21 все работает вполне предсказуемо, незакрытые скобки не ломают формирование блоков. Я бы очень хотел видет эту возможность когда-нибудь в релизе.

2. появились вопросы по TreeHelper

а. можно ли назначить TreeHelper на лексер (none)? Пробовал использовать дефис: "lexers=-,myparser" но это не сработало

б. как сохранять настройки для TreeHelper? Сделал класс Command, которые читает и сохраняет настройки. Но метод get_headers() находится не в классе. Значит нужно его или в класс Command поместить (но сможет ли он тогда вызываться), или нужно получить каким-то образом из get_headers() ссылку на Command, чтобы читать его состояние.
Сам поковыряюсь, но не эксперт в Python, может есть заранее очевидное решение, чтобы время не убивать. Глобальные переменные какие-то в файле и т.п.?
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

>>можно ли назначить TreeHelper на лексер (none)?
такого не было нужно, так что нет.
вы можете сделать почти пустой лексер - в Synwrite накидать 1-2 правил и все.

>>Сам поковыряюсь, но не эксперт в Python, может есть заранее очевидное решение
пока вы в treehelper, никакого класса у вас нету. есть корневая ф-ция get_headers.
значит и опции нужны в корне модуля.
так что можете импортировать 'cudatext' и этим АПИ читать-писать опции
https://wiki.freepascal.org/CudaText_AP ... Fini_write
dimon40001
Posts: 21
Joined: 05.05.2022 18:52

Post by dimon40001 »

main Alexey wrote:>>можно ли назначить TreeHelper на лексер (none)?
такого не было нужно, так что нет.
вы можете сделать почти пустой лексер - в Synwrite накидать 1-2 правил и все.
Ясно. Ну, это не критичная проблема.
А лексер для новых файлов по умолчанию можно назначить? Или это overkill? Или новые файлы всегда будут открыты с лексером (none)?
main Alexey wrote: так что можете импортировать 'cudatext' и этим АПИ читать-писать опции
Да, я так и понял, что пока в tree helper - класс Command будет недоступен

Через API я так и сделал, да. Мне не нравится то, что в таком случае будет постоянно происходить чтение и запись настроек, как я понимаю (т.к. каждое обновление дерева будет "дергать" чтение-запись настроек, которые я пропишу в get_headers().

Но в принцие тоже понял. Есть Workaround. Т.е. get_headers() я сделал так, что он только читает настройки через ini_read(). И есть класс Command и пункт в меню, который позволяет настройки и открыть и сохранить в файл. Небольшое дублирование кода получается, но это не страшно.
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

>>А лексер для новых файлов по умолчанию можно назначить?
Опции newdoc_XXXX, 3 штуки

>>Мне не нравится то, что в таком случае будет постоянно происходить чтение и запись настроек
так можно закешировать настройки. дать переменную cached=None (или False), и ставить ее в True.
переменную в вашем модуле cuda_tree_xxx.
dimon40001
Posts: 21
Joined: 05.05.2022 18:52

Post by dimon40001 »

Начал новую тему про новый лексер.

Вот что получилось в итоге:
viewtopic.php?f=6&t=2822

Code Tree Helper пока в процессе. В планах добавить возможность настроек (выбор иконки для элементов дерева), поддержка абзацев в стиле Markdown. В черновом варианте уже работает, но пока не готов выкладывать.
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

Хорошая работа.
Post Reply