如何在Scintilla中突出显示文本?
时间:2020-03-06 14:21:19 来源:igfitidea点击:
我正在使用Scintilla编写编辑器。
我已经在使用词法分析器来自动突出显示语法,但是现在我想标记搜索结果。如果我只想标记一个匹配项,可以在此处设置选择,但是,我想标记(例如黄色背景)所有匹配项。
我是用Perl编写的,但是如果我们有其他语言的建议也很不错。
解决方案
"样本"编辑器站点使用书签功能为所有与搜索结果匹配的行添加书签。
我们是否已阅读Scintilla文档中的"标记"参考?
该参考可能有点晦涩,因此我建议我们也查看SciTE的源代码。该文本编辑器最初是Scintilla的测试平台。它成长为成熟的编辑器,但对于Scintilla的所有方面仍然是不错的实现参考。
在我们的特定情况下,"查找"对话框中有一个"全部标记"按钮。我们可以在SciTEBase :: MarkAll()方法中找到其实现。此方法仅在搜索结果上循环(直到在第一个搜索结果上循环(如果有)),并在找到的行上放置书签(并可以选择在找到的项目上设置指示器)。
找到的行是使用SCI_LINEFROMPOSITION(posFound)获得的,书签只是对SCI_MARKERADD(lineno,markerBookmark)的调用。
请注意,标记可以是空白符号,或者如果不与空白关联,它将突出显示整行。
HTH。