![]() |
|
Модераторы: Vitalik |
![]()
|
|
| Vvoland |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 30.11.2004 Репутация: нет Всего: нет |
Как сделать выцвечивание 16-х и 8-х чисел, но только с тем отличием, что если в них находятся запрещенные цифры то они выцвечивались как не легальные тобишь для 16-х: все буквы после F, для 8-х: цифры после 7-ки ивсе буквы.
|
|||
|
||||
| Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 9 Всего: 12 |
На сколько я понял, тебе нужно добиться следующего эффекта:
С существующей идеологией такого эффекта нормально добиться нельзя. Значит нужно что-нибудь придумать/додумать... У меня были некоторые соображения по этому поводу. Например, можно расширить правило SymbolSet еще парой параметров: From и To на манер правил Range. Таким образом после открытия правила на символы From будут проверяться последующие символы на соответствие списку допустимых символов и если всё ок, то будет подсвечиваться. Иначе - возврат к символам From и поиск другого подходящего правила... Правда когда я думал на эту тему, то обнаружил ряд подводных камней. Поэтому эту идею нужно еще хорошенько обдумать... и не только саму идею, но и реализацию... Если кому-нибудь это интересно, напишите, что вы думаете по этому поводу! Может быть будут еще какие-нибудь предложения? |
|||
|
||||
| Vvoland |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 30.11.2004 Репутация: нет Всего: нет |
Я еще хуже хочу:
HexValue := $123ABC; // Подсветка шестнадцатиричного числа BadHexValue := $123ABCK ; // Неправильное шестнадцатиричное число Согласен что с существующими идеалогией, как ты имел место выразиться Вариант: Может завести какой-нить преоритет для правил, чтобы одно не накрыволо другое? ;) |
|||
|
||||
| Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 9 Всего: 12 |
Хм... Та нет, это не хуже
В любом случае нужно кардинально пересмотреть работу правил... Особенно правила SymbolSet... Интересно, есть ли желающие помочь мне в этом? |
|||
|
||||
| jasny |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.11.2004 Репутация: нет Всего: нет |
позвольте и мне поучастовать.
я считаю, что если число правильное, то оно должно подсвечиваться (это ежели диапазон правильно определен) а вот ежели число не правильное, то его подсвечивать вовсе не надо не хватало чтобы еще компонент, заместо человека разбирался в тексте не знаю до конца всю идеологию (Виталик ее постоянно правит), но данная промблема решилась бы легко так: для этого диапазоно надо определять не только границами, но и содержимым т.е. определяем 2 диапазона: 1. Первый диапазон - хекс-число, оно считается правильным, ежели начинается с $ и заканчивается разделителем и содержит только определенные символы (цифры + A+ B+C+) подсвечивать зеленым 2. Второй диапазон - не хекс-число, ежели начинается с $ и заканчивается разделителем и содержит все что угодно подсвечивать красным При этом важен порядок проверки правил (т.е. еще и надо и устанавливать и порядок) и все, ТЕЛЕМАРКЕТ |
|||
|
||||
| Vvoland |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 30.11.2004 Репутация: нет Всего: нет |
2jasny
Я вот так и пытался сделать: Сначала завел(он был) диапазон - хекс-число, оно считается правильным, ежели начинается с $ и заканчивается разделителем, внутри него завел последовательность из неправильных букв и зделал ее другого цвета, но такая фишка не проходит. Вроде по логтке должно все работать |
|||
|
||||
| Vitalik |
|
||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 9 Всего: 12 |
2jasny
Конечно же позволяем
Так-то оно так, но мы ведь должны сделать компонент "на все случаи жизни"
Хм... А вот это интересная идея!.. Я до этого хотел расширить немного SymbolSet до правила Range, а вот объединение этих правил - это дейтсвительно интресеная мысль!.. По крайней мере до тех пор, пока не лезть в исходники Хм... Вот только интересно, не усложнит ли это идеологию правил подсветок?.. Или может наоборот?
Да... Надо, надо будеть как-нибудь добавить что-то вроде Drag&Drop в дерево правил... 2Vvoland
Так-то оно так, но не совсем... Дело в том, что сейчас правило SymbolSet (например, цифры или твои "неправильные буквы"), подсвечивается только если составляющие его символы отделяются слева и справа разделителями, которые в свою очередь берутся у родительского диапазона A. Эти же разделители используются для определения закрытия нашего диапазона A при выборе галочки "Закрывать после разделителя", поэтому получается небольшая нестыковка... Мысль ясна? Частичным решением может быть задание для правила SymbolSet (или его мутанта с правилом Range) нового свойства: могут ли составляющие его символы быть всередине слова (то есть не отделяться разделителями). Например, как сейчас:
Нуна это делать, и если делать, то как лучше? Я об этом уже много дум передумал... Слишком много... Нужен свежий взгляд на проблему |
||||||||||||||
|
|||||||||||||||
| jasny |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.11.2004 Репутация: нет Всего: нет |
с этим я не совсем согласен. надо сделать достаточно гибкий компонент. т.е. не надо напрягаться на предмет всех всевозможных случАев - это приведет к усложнению работы компонента и заодно к замедлению работы. достаточно - как бы в математическом смысле (см. определение "необхомого" и "достаточного"), чтобы хватало только на те случаи, на которые мы рассчитываем. если в какой-то момент разработку не остановить, то она пеерйдет в постоянное состояние. это как ремонт, котрорый нельзя закончить, а можно только остановить. эк меня расколбасило, хватит философии теперь к делу. внутренняя логика компонента мне видится так. сокращаем количество видов правил до 2-х: Keyword, Range Keyword определятеся заранее заданным списком в большинстве случаев открывается и закрывается разделителями но может потребовать и набор выражений для открытия/закрытия Range определяется выражениями для открытия/закрытия и списком символов (SymbolSet), которые находятся внутри Range список символом может и быть не задан (яркий пример строка в кавычках) Что такое выражение открытия/закрытия? Набор выражений для открытия/закрытия, например - Выражение1: открывается - символом @ и закрывается - разделителем или переводом строки или символом $ - Выражение 2: открывается - символом # и закрывается - разделителем или символом $ Выражение1 от Выражения2 отличается порядком применения сначало всегда проверяется Выражение1, а затем Выражение2 приведу более понятный пример выражения открытия/закрытия для определения Range-"Строка" 1. Выражение1: - открывается ' - закрывается ' или переводом строки 1. Выражение2: - открывается " - закрывается " или переводом строки или вот еще еще пример выражения открытия/закрытия для определения Range-"Строчный Комментарий" 1. Выражение1: - открывается // - закрывается переводом строки =============================== теперь насчет 123 123text Label1 123 - надо подсвечивать (это Range-Цифры, обрамленный разделителями) 123text и Label1 - не надо подсвечивать, так как список символов для Range-Цифры не удовлетворяет хотя если изменить правило Range-Цифры, что выражение открытия/закрытия содержит не только разделители, но и буквы, тогда получится: 123tex2t |
|||
|
||||
| Ciber SLasH |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Напорлся на одни грабли, по ходу они не разрешимы... а очень хотелось бы их разрешить
Есть некий ini-файл, в нём содержатся такие настройки (и соответственно сама подсветка): Temp.ini: (текущая подсветка)
А это правильная подсветка: Temp.ini: (как должно быть)
Подсветка тут: >>> Какие будут мысли ? |
||||
|
|||||
| Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 9 Всего: 12 |
Ciber SLasH, а по какому принципу нужно отличать точку с запятой в строках F12 (коментарий) и 15 (не коментарий)?..
Один из вариантов (не очень хороший может быть) это после знака равно коментарий начинать не только с символа точки запятой, а еще и с предшествующим ему пробелом, то есть открывающими символами сделать " ;". |
|||
|
||||
| Ciber SLasH |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Да, но если вместо первого пробела стоит табуляция, то уже не подсвечивается Возникла ещё одна проблема с другой подсветкой. Есть подсветка для M-файлов (Matlab), в них существует строки начинающиеся и заканчивающиеся на одинарную кавычку ( ' ), но в Matlab'e также могут одинарной кавычой после переменной обозначаться транспонированные матрицы. Вот тут то и начинаются траблы Test.m: (текущая подсветка)
Test.m: (правильная подсветка)
Подсветка тут Как побороть ? Это сообщение отредактировал(а) Ciber SLasH - 28.12.2004, 05:52 |
||||||
|
|||||||
| Vitalik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 9 Всего: 12 |
Да, действительно... Ведь получается пока что нет никакой возможности ввести куда-нибудь в правило символ табуляции! Создал по этому поводу отдельную тему: Использование в правилах символа табуляции... Давай попробуем найти хорошее решение этой проблемы
Пока что эту "проблему" можно решить следующим образом. У корневого разделя нужно убрать из разделителей символ одинарной кавычки ( ' ), чтобы парсер считал эту кавычку частью слова и смог её найти только после раздедителя. Таким образом если кавычка будет после буквы, цифры и любого другого символа, не считающимся разделителем, то парсер её пропустит и не откроет диапазон 'строка'. Также не помешает убрать из разделителей символы закрывающих скобок ( [color=blue]] } )[color] ), потому как одинарная кавычка (апостроф) обозначает транспонирование и после скобок Точно такая же проблема была и у Ильи Папиашвили. И я ему посоветовал такое же решение проблемы. Ниже выкладываю его изменённую подсветку. Присоединённый файл ( Кол-во скачиваний: 6 )
Matlab.hgl |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |