Сейчас опишу и прикреплю лексер сюда
Обращаю внимание что сообщения из Темы
viewtopic.php?f=6&t=2282
лучше перенести сюда. Это одна и таже проблема с неверными интерпретациями условий лексера ,
а еще лучше удалить ту тему, так как ниже она включена в описание.
Для разбора берем такой пример (он же для удобства внутри лексера уже есть):
Code: Select all
Установить курсор в пределах Блока
{ Внешний блок фигруных скобок
подсветка всей строки
подсвечен весь этот блок от начала до конца
остальные блоки не подсвечены
{ Внутрений блок фигруных скобок
подсвечен только внутрений блок
остальные не подсвечены
}
(блок круглых скобок подсвечен голубым, а внешний фигурный весь серым)
[блок квадратных скобок подсвечен красным, а внешний фигурный весь серым]
Ниже строчка комбинация, каждый вложенный слой, должен иметь свой цвет
тут серый цвет ( голубой блок [ внутри красный блок (перехват голубого) все еще красный ] )
}
Как видно из примера, каждый блок должен иметь свою динамическую подсветку.
Условия созданы так, что бы каждый одинаковый блок внутри перехватывал правило подсветки на себя.
Так получается что при:
- при помещении курсора во внешний фигурный блок, он должен весь окраситься в серый цвет.
- при помещении курсора во ВНУТРЕННИЙ фигурный блок, произойдет перехват серого цвета и серым останеться только внутренний блок.
- при помещении курсора в блок круглых скобок, он окрашивается в голубой цвет, но так как курсор по прежнему внутри серого блока,
то он тоже по прежнему окрашен в серый цвет.
- при помещении курсора в блок квадратных скобок, он краситься в красный, и остается серый.
ну и так далее
в редакторе КудаТекст обработка правил и построение подсветки создано с ошибками.
На скриншотах ниже можно видеть что
проблема 1: Серый фигурный блок с инструкцией
"красить ВСЮ строку" не красит всю строку, а
красит только между границами блока.
проблема 2: В случае перехвата цвета правилом
"выделять наименьший блок" красится от начала блока до начала следующего блока.
проблема 3: В случае нескольких вложений,
правила работают только на первое вложение и не распространяются дальше по циклу.