【发布时间】:2017-08-09 20:13:19
【问题描述】:
我使用 RCP 3.x 开发了一个 RCP 应用程序,其中包含用于我自己的文本编辑器的语法着色、格式设置、自动完成、错误标记。
现在,我想实现Mark Occurrences。如果我在我的编辑器中单击一个单词,所有相似的单词都会突出显示 - 类似于 Java 编辑器。
有人有想法吗? 提前致谢。
这是我的代码的一部分:
public class MyEditor extends TextEditor {
String clickedWord = "";
@Override
protected void handleCursorPositionChanged() {
super.handleCursorPositionChanged();
try {
ISourceViewer viewer = getSourceViewer();
int caret = viewer.getTextWidget().getCaretOffset();
clickedWord = Utils.readWordAt(viewer, caret);
if (!clickedWord.trim().isEmpty()) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
highlightSimilarWords();
}
});
}
} catch (Exception e) {
}
}
private void highlightSimilarWords() {
ISourceViewer viewer = getSourceViewer();
IDocument document = viewer.getDocument();
String content = document.get();
Pattern p = Pattern.compile(clickedWord);
Matcher m = p.matcher(content);
while (m.find()) {
int offset = m.start();
int length = m.end() - m.start();
viewer.setSelectedRange(offset, length, false);
}
}
}
【问题讨论】:
-
这不是提供代码的网站。请向我们展示您到目前为止所做的尝试以及您遇到的问题。
-
Java 编辑器为此在注解模型中使用注解。