Спасибо! Сегодня плотно поэкспериментирую со скобками и деревом кода.main Alexey wrote:!!
теперь, если group_index=21, то проверка на скобки пропустится. если 20, то как и раньше
открывающая скобка начинает блок?
-
- Posts: 21
- Joined: 05.05.2022 18:52
-
- Posts: 2245
- Joined: 25.08.2021 18:15
-
- Posts: 21
- Joined: 05.05.2022 18:52
1.
2. появились вопросы по TreeHelper
а. можно ли назначить TreeHelper на лексер (none)? Пробовал использовать дефис: "lexers=-,myparser" но это не сработало
б. как сохранять настройки для TreeHelper? Сделал класс Command, которые читает и сохраняет настройки. Но метод get_headers() находится не в классе. Значит нужно его или в класс Command поместить (но сможет ли он тогда вызываться), или нужно получить каким-то образом из get_headers() ссылку на Command, чтобы читать его состояние.
Сам поковыряюсь, но не эксперт в Python, может есть заранее очевидное решение, чтобы время не убивать. Глобальные переменные какие-то в файле и т.п.?
Посидел как следует вечерком. На мой взгляд в бете с GroupIndex = 21 все работает вполне предсказуемо, незакрытые скобки не ломают формирование блоков. Я бы очень хотел видет эту возможность когда-нибудь в релизе.main Alexey wrote:!!
делаю вам ПОБЛАЖКУ. теперь, если group_index=21, то проверка на скобки пропустится. если 20, то как и раньше.
это group index для Block Rule в св-вах лексера.
проверьте бету - http://uvviewsoft.com/c/
2. появились вопросы по TreeHelper
а. можно ли назначить TreeHelper на лексер (none)? Пробовал использовать дефис: "lexers=-,myparser" но это не сработало
б. как сохранять настройки для TreeHelper? Сделал класс Command, которые читает и сохраняет настройки. Но метод get_headers() находится не в классе. Значит нужно его или в класс Command поместить (но сможет ли он тогда вызываться), или нужно получить каким-то образом из get_headers() ссылку на Command, чтобы читать его состояние.
Сам поковыряюсь, но не эксперт в Python, может есть заранее очевидное решение, чтобы время не убивать. Глобальные переменные какие-то в файле и т.п.?
-
- Posts: 2245
- Joined: 25.08.2021 18:15
>>можно ли назначить TreeHelper на лексер (none)?
такого не было нужно, так что нет.
вы можете сделать почти пустой лексер - в Synwrite накидать 1-2 правил и все.
>>Сам поковыряюсь, но не эксперт в Python, может есть заранее очевидное решение
пока вы в treehelper, никакого класса у вас нету. есть корневая ф-ция get_headers.
значит и опции нужны в корне модуля.
так что можете импортировать 'cudatext' и этим АПИ читать-писать опции
https://wiki.freepascal.org/CudaText_AP ... Fini_write
такого не было нужно, так что нет.
вы можете сделать почти пустой лексер - в Synwrite накидать 1-2 правил и все.
>>Сам поковыряюсь, но не эксперт в Python, может есть заранее очевидное решение
пока вы в treehelper, никакого класса у вас нету. есть корневая ф-ция get_headers.
значит и опции нужны в корне модуля.
так что можете импортировать 'cudatext' и этим АПИ читать-писать опции
https://wiki.freepascal.org/CudaText_AP ... Fini_write
-
- Posts: 21
- Joined: 05.05.2022 18:52
Ясно. Ну, это не критичная проблема.main Alexey wrote:>>можно ли назначить TreeHelper на лексер (none)?
такого не было нужно, так что нет.
вы можете сделать почти пустой лексер - в Synwrite накидать 1-2 правил и все.
А лексер для новых файлов по умолчанию можно назначить? Или это overkill? Или новые файлы всегда будут открыты с лексером (none)?
Да, я так и понял, что пока в tree helper - класс Command будет недоступенmain Alexey wrote: так что можете импортировать 'cudatext' и этим АПИ читать-писать опции
Через API я так и сделал, да. Мне не нравится то, что в таком случае будет постоянно происходить чтение и запись настроек, как я понимаю (т.к. каждое обновление дерева будет "дергать" чтение-запись настроек, которые я пропишу в get_headers().
Но в принцие тоже понял. Есть Workaround. Т.е. get_headers() я сделал так, что он только читает настройки через ini_read(). И есть класс Command и пункт в меню, который позволяет настройки и открыть и сохранить в файл. Небольшое дублирование кода получается, но это не страшно.
-
- Posts: 2245
- Joined: 25.08.2021 18:15
>>А лексер для новых файлов по умолчанию можно назначить?
Опции newdoc_XXXX, 3 штуки
>>Мне не нравится то, что в таком случае будет постоянно происходить чтение и запись настроек
так можно закешировать настройки. дать переменную cached=None (или False), и ставить ее в True.
переменную в вашем модуле cuda_tree_xxx.
Опции newdoc_XXXX, 3 штуки
>>Мне не нравится то, что в таком случае будет постоянно происходить чтение и запись настроек
так можно закешировать настройки. дать переменную cached=None (или False), и ставить ее в True.
переменную в вашем модуле cuda_tree_xxx.
-
- Posts: 21
- Joined: 05.05.2022 18:52
Начал новую тему про новый лексер.
Вот что получилось в итоге:
viewtopic.php?f=6&t=2822
Code Tree Helper пока в процессе. В планах добавить возможность настроек (выбор иконки для элементов дерева), поддержка абзацев в стиле Markdown. В черновом варианте уже работает, но пока не готов выкладывать.
Вот что получилось в итоге:
viewtopic.php?f=6&t=2822
Code Tree Helper пока в процессе. В планах добавить возможность настроек (выбор иконки для элементов дерева), поддержка абзацев в стиле Markdown. В черновом варианте уже работает, но пока не готов выкладывать.