| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > SynUniHighlighter и SynEdit > Подсветка ключевых слов в диапазонах |
| Автор: Kibab 3.12.2004, 18:55 |
| Я поднял этот вопрос в комментариях о SynPlus на wincmd.ru, и теперь по просьбе авторов создаю и здесь. Итак, суть проблемы: Хотелось бы, чтоб можно было не отменять действие подсветки ключевых слов в диапазонах... Вот я для схемы PHP хотел сделать подсветку блока try{..} и catch{...}. Однако, чтобы все было корректно, приходится ВСЕ узлы в Root (Control, Numbers, Functions и т.д.) копировать в узел Exceptions (=диапазон), чтобы подсветка работала как надо. Это, конечно, выход, однако не очень красивый... Если можно, предусмотрите, пожалуйста, в дочерних диапазонах возможность применения правил для ключевых слов родительского узла! Vitalik, напиши, пожалуйста, здесь, как ты хочешь выйти из ситуации? |
| Автор: Vitalik 7.12.2004, 12:10 |
| Kibab, спасибо, что создал эту тему. Извини, что так задержался с ответом. У меня скоро сессия и поэтому сейчас совсем мало времени Подобная тема немного обсуждалась в http://www.fforum.ru/index.php?showtopic=4688&view=findpost&p=138595 (страницы 35 и 36). Тогда я предложил следующее: сделать новый вид правил: так называемые правила-ссылки. Их идея заключается в том, что правило-ссылка является не отдельным правилом, я ссылкой на уже существующее (и таким образом является его точной "копией"). Разработку этих правил-ссылок остановил один неприятный баг, проявляющийся при создании правила-ссылки внутри правила на которое оно ссылается... Если их реализовать, то такие правила-ссылки на твои ключевые слова можно было бы тогда повставлять внутрь твоих диапазонов try и catch. И всё было бы замечательно. Хотя вот возник вопрос: может быть и стоит сделать что-то вроде галочки или пункта меню: "Копировать ВСЕ правила из родительского диапазона"? Не усложнит ли это интерфейс? Kibab, что ты думаешь по всему этому? |
| Автор: Kibab 9.12.2004, 21:21 |
| Vitalik, та же фигня с сессией, поэтому торможу немного... Сильно затрудняюсь с ответом, поскольку не знаю, как ты работаешь с правилами. НО: суть бага я представляю так: ссылка ведет на родительское правило, в котором при перечислении (enumetating) правил при применении их к тексту находится в т.ч. и правило-ссылка, которую пытаются применить.... далее stack overflow. Предлагаю: каждому правилу назначить уникальный ID, по которому в том числе прерывать применение правила, если оно было инициировано внутри этого правила. Иными словами, прерывать злобную рекурсию по совпадению ID обрабатываемого в данный момент правила и правила, которое только собираются применить. Наверняка у тебя правило задается как тип запись (говорю как програмист Delphi в его терминах) Извини если идея не в кассу - я не знаю, как на самом деле работает твоя система правил, и строю методы исключительно из своих предположений. Насчет усложнения интерфейса лишней кнопкой - думаю, если версию обозвать "beta", это снимет часть претензий. В принципе, это нормальный выход, наверное... К тому же, где гарантия, что не скопируется то самое правило-ссылка и при применении не будет опять Stack overflow? |
| Автор: Vitalik 9.12.2004, 23:43 | ||||
Kibab, если тебе интересно, я могу подробно и как можно более понятно описать здесь идеи реализации нашего парсинга У тебя есть желание (хотя бы небольшое |
| Автор: Гость_Kibab 26.9.2005, 21:36 |
| Vitalik Нифига себе, как я задержал ответ прошу прощения... За темой не следил, и вот такая фигня Плз давай переписываться не в форуме по поводу принять участие в разработке, что я хочу сделать, потому что использую сей плагин как основной рабочий инструмент. Мыло webmaster[собака]kibab[точка]com |