2

我需要编写一个文本编辑器,它可以使用 SWT StyledText 合并来自多个来源的任意文本样式(在我的例子中:拼写检查器、重复单词、链接和其他标记等样式提示)。我检查了执行此操作的标准方法:

  1. 我可以安装一个修改监听器并为每次修改创建整个文本的样式。这很慢但很准确。

  2. 我可以使用LineStyleListener. 这意味着我必须自己重绘文本(例如在重复单词的情况下,因为其中一些将超出当前编辑范围)加上编辑器不缓存样式,所以这个 API 被更频繁地调用那么人们会期望。

  3. 我可以像 IDE 一样使用后台协调器。这意味着样式滞后于编辑,从用户的角度来看这是不好的。

锦上添花的是我需要分层样式,所以我必须重新实现StyleRangeAPI。

有没有人看到更好的解决方案?有人可以指导我一些不只是突出关键字的例子吗?

4

1 回答 1

2

我使用这个例子作为一个相当先进的编辑器的起点。它帮助我理解了多行样式,并为我的编辑器实现了一个基于正则表达式的样式引擎。

StyleRange API 并没有真正提供一种进行交叉的方法,例如合并从索引 1 到索引 20 的样式 1 和从 10 到 14 的样式 2。这样的东西

如果这就是您对“分层样式”的意思,那么 JFace 中有一个解决方案:org.eclipse.jface.text.TextPresentation

您可以使用 , 添加所有样式mergeStyleRange(.),并使用getAllStyleRangeIterator()来获得结果。很有用。

于 2010-01-16T22:28:30.177 回答