Функция подсветки 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 механизм или конвейерная инъекция... Пользовательское правило подсветки переопределяет значение по умолчанию (если есть конфликт).

Я надеюсь, что я могу что-то упустить, чтобы сделать это правильно, не выполняя все настройки по умолчанию самостоятельно, только из-за одного дополнительного бита правила подсветки.

0 ответов

Другие вопросы по тегам