Я хочу каскадировать механизм SyntaxHighlighting Engine AvalonEdit. Имею 2 HighlightingDefinitions
. Первый - это основной синтаксис. Второй - сложный многострочный язык разметки препроцессора. По этой причине встраивать вторую грамматику в первую слишком сложно. Более простой способ - отобразить первый синтаксис и впоследствии изменить затронутые части строки (на основе второго синтаксиса).
Итак, я создал новый HighlightingColorizer
со вторым языком и добавил его в LineTransformers
. Но второй язык окрашивает весь документ, а не только отдельные части с помощью директив препроцессора: код, не являющийся препроцессором, является черным.
Когда я отлаживал метод ColorizeLine
второго преобразователя строк, строки невыделенного кода (= без кода препроцессора) не раскрашивались, как ожидалось. Но цвет линий черный.
Так HighlightingColorizer
сбрасывает все предыдущие выделения всего документа до того, как он начинает раскрашивать?
Или в чем еще может быть проблема? Как правильно каскадировать 2 HighlightingColorizers
?