Функция подсветки Scintilla .NET имеет очень плохой дизайн или я что-то здесь упускаю?
Что я хочу с выделением здесь, это добавить немного пользовательских правил к существующим Lexer.Sql
с помощью Regular Expression
, Однако похоже, что нам нужно установить Lexer
в Lexer.Container
и обработать событие StyleNeeded
, Поэтому я должен реализовать все стандартные правила подсветки для Lexer.Sql
без возможности унаследовать от Scintilla
, Это требует довольно много работы (и тестирование для этого).
В основном код выглядит так:
txtScintilla.Lexer = Lexer.Container;
txtScintilla.StyleNeeded += (s,e) => {
//here we use the pair of 2 methods:
//txtScintilla.StartStyling and
//txtScintilla.SetStyling
//But there will be fairly many Regular expressions
//involved here to RE-implement all.
};
Хороший дизайн здесь должен быть обеспечен overriding
механизм или конвейерная инъекция... Пользовательское правило подсветки переопределяет значение по умолчанию (если есть конфликт).
Я надеюсь, что я могу что-то упустить, чтобы сделать это правильно, не выполняя все настройки по умолчанию самостоятельно, только из-за одного дополнительного бита правила подсветки.