AvalonEdit: Каскадирование HighlightingColorizers

Я хочу каскадировать механизм SyntaxHighlighting Engine AvalonEdit. Имею 2 HighlightingDefinitions . Первый - это основной синтаксис. Второй - сложный многострочный язык разметки препроцессора. По этой причине встраивать вторую грамматику в первую слишком сложно. Более простой способ - отобразить первый синтаксис и впоследствии изменить затронутые части строки (на основе второго синтаксиса).

Итак, я создал новый HighlightingColorizer со вторым языком и добавил его в LineTransformers . Но второй язык окрашивает весь документ, а не только отдельные части с помощью директив препроцессора: код, не являющийся препроцессором, является черным.

Когда я отлаживал метод ColorizeLine второго преобразователя строк, строки невыделенного кода (= без кода препроцессора) не раскрашивались, как ожидалось. Но цвет линий черный.

Так HighlightingColorizer сбрасывает все предыдущие выделения всего документа до того, как он начинает раскрашивать?

Или в чем еще может быть проблема? Как правильно каскадировать 2 HighlightingColorizers ?

67
задан Lorenz Lo Sauer 24 September 2012 в 10:30
поделиться