我想在此处突出显示的是使用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
机制或管道注入...自定义突出显示规则将覆盖默认设置(如果有冲突)。
我希望我可能会错过一些正确执行此操作的事情,而不必仅仅因为高亮显示规则而自己实施所有默认设置。