我需要编写一个文本编辑器,它可以使用SWT StyledText从多个来源(在我的例子中:拼写检查,样式提示,如重复的单词,链接和其他标记)合并任意文本样式。我检查了标准的方法:
我可以安装修改监听器并为每个修改创建整个文本的样式。这很慢但很准确。
我可以使用LineStyleListener
。这意味着我必须自己重新绘制文本(例如,在重复的单词的情况下,因为其中一些将在当前编辑范围之外)加上编辑器不缓存样式,因此更频繁地调用此API人们会期待。
我可以像IDE那样使用后台协调程序。这意味着样式落后于编辑,这从用户的角度来看是不好的。
锦上添花的是我需要分层样式,所以我必须重新实现StyleRange
API。
有没有人见过更好的解决方案?有人可以指导我一些不仅突出显示关键词的例子吗?
答案 0 :(得分:2)
我使用这个example作为一个相当先进的编辑器的起点。它帮助我理解了多线样式,并为我的编辑器实现了一个基于reg-ex的样式引擎。
StyleRange API并没有真正提供一种交叉方式,例如合并样式1,从索引1到索引20,样式2从10到14。某些喜欢这个强>
如果这是“层次样式”的意思,那么JFace就有一个解决方案:org.eclipse.jface.text.TextPresentation
您可以使用mergeStyleRange(.)
添加所有样式,并使用getAllStyleRangeIterator()
获取结果。非常有用。