![]() |
|
Модераторы: Vitalik |
![]()
|
|
| Sep. |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 22.7.2004 Репутация: 6 Всего: 6 |
Тема определения в подсветке для каждого стиля, является ли он строкой или комментарием, уже была затронута Seldon. Добавлю лишь, что если сделать это по намеченному пути - с доступом через GetHighlighterAttriAtRowCol возможны проблемы с расстановкой FoldRanges.
Я реализовал проверку строка/комметарий при определении CodeFolding.FoldRanges и для типа токена Character работает еще более-менее, но для Keyword - уже слишком медленно. (Загрузка файла SynEdit.pas 400кб при подсветке delphi.hgl занимает около 5 секунд!) В данный момент проверка осуществляется через имя стиля, так же как уже реализовано в MatchBracket.
Т.е. через смещение от начала файла высчитывается положение токена, потом берутся его аттрибуты, потом pos'ы вносят свой вклад. Если добавить еще какую нибудь переменную в аттрибут, которая будет задаваться в подсветке и показывать тип токена, то pos'ов конечно не станет. Но все равно не очень рационально. Для этого уже есть встроенный более быстрый механизм SkipRegions, но к нему нет доступа в SynUniHL и дизайнере. Можно только задать самому программно:
Но тогда получается, что надо дорабатывать дизайнер, и нет никакой связи со строками/коментариями которые уже определены в подсветке. Есть и еще один минус, сейчас при закрытии SynEdit при использовании SkipRegions выдает exception. Скорее всего перестарались с модом на освобождение памяти. Так как вообще порациональней бы придумать определение строка/комментарий с быстрым доступом? Есть ли возможность обойти CharIndexToRowCol? В TSynTokenMatch вообще используется некий GetTokenKind который есть в стандарных подсветках SynEdit. --------------------
Syn - TotalCommander lister plugin | SynTree - coders sourcebook |
||||
|
|||||
| Seldon |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 23.12.2005 Где: Minsk Репутация: 2 Всего: 2 |
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор |
||||||
|
|||||||
| Sep. |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 22.7.2004 Репутация: 6 Всего: 6 |
ага, мне нужно пересчитывать позицию от начала файла в позицию колонка:строка для обращения к GetHighlighterAttriAtRowCol, лишнее действие.
я получаю аттрибуты когда найден открывающий или закрывающий токен для foldrange и смотрю можно ли его использовать или нет
Дак это он и есть, можешь скачать сегодняшний SynMix и раскоментировать строки для //###mod CF-range in comments в ScanUsingFoldRegions.
ага, но он хоть без pos'ов =) --------------------
Syn - TotalCommander lister plugin | SynTree - coders sourcebook |
||||||||
|
|||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |