|
Модераторы: Vitalik |
|
ta2i4 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.12.2008 Репутация: 1 Всего: 1 |
Здравствуйте!
Я в своем текстовом редакторе юзаю Unicode SynEdit 2008/10/03 на Delphi 2009: http://mh-nexus.de/downloads/UniSynEdit.zip или http://biredit.googlecode.com/files/unisynedit-20081003.zip Недавно обнаружил проблему со встроенными идущими в комплекте с компонентом подсветками. Если кликнуть двойным щелчком на английском слове, то оно выделяется. Если же на русском - не выделяется. Если отключить подсветку - русское слово выделяется. Более того, перед вызовом окна поиска я выделяю слово, на котором стоит каретка, функцией
Без использования подсветок русские и английские слова выделяются нормально, а вот с использованием подсветок та же проблема. Есть ли какие-либо способы решения проблемы? И подойдет ли в качестве решения данной проблемы портированный UniHighlighter на Delphi 2009 для UniSynEdit отсюда: http://forum.vingrad.ru/index.php?showtopi...t&p=1808675 PS: На днях в качестве варианта стал подумывать о следующем способе решения проблемы со стандартной подсветкой:
Пока его приводить в действие не пробовал, да и не нравится он мне. Это сообщение отредактировал(а) ta2i4 - 1.8.2009, 06:30 |
||||
|
|||||
ta2i4 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.12.2008 Репутация: 1 Всего: 1 |
Так, Unihighlighter - та же проблема. Видимо, что-то таится в SynEditHighlighter.pas, потому что UniHighlighter кажется тоже его юзает. |
|||
|
||||
Krott |
|
||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 14.3.2005 Репутация: нет Всего: нет |
ta2i4, проблема именно в нём.
Загляните в этот файл. Там вы обнаружите следующий код:
Заметьте, среди символов нет русских. Исправим:
Пересобираем и проверяем результат. |
||||
|
|||||
ta2i4 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.12.2008 Репутация: 1 Всего: 1 |
Спасибо!
|
|||
|
||||
ta2i4 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.12.2008 Репутация: 1 Всего: 1 |
Krott, вот ответ разработчика UniSynEdit:
Что-то мне подсказывает, что это не очень хорошее решение. |
|||
|
||||
Krott |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 14.3.2005 Репутация: нет Всего: нет |
Вы правы. Но что поделать, если в ядре SynEdit для определения границ СЛОВА во всех функциях вида SetWordXXX, GetWordXXX, NextWordXXX и проч. используется функция IsIdentChar? Это, конечно, просчёт в логике, причём трудноисправимый.
В моём случае изменение этой функции было самым лёгким и, к тому же, некритичным способом - надо было подсвечивать HTML, CSS и проч, а там все ключевые слова фиксированы и отступление от них - синтаксическая ошибка. Альтернативой может быть только изменение всех функций определения слова, а их приличное количество (SetWordBlock, NextWordPosEx, PrevWordPosEx, GetWordAtRowCol). Удачи! |
|||
|
||||
ta2i4 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.12.2008 Репутация: 1 Всего: 1 |
Разработчик UniSynEdit предложил подобное решение:
|
|||
|
||||
Krott |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 14.3.2005 Репутация: нет Всего: нет |
Вот об этом я и говорил) Разработчик UniSynEdit лишь подтвердил мои слова. Надеюсь, что функций, использующих IsIdentChar всё-таки не так много, в этом случае исправление не займёт много времени. |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |