我使用RCP 3.x开发了一个RCP-Application,其中包含我自己的文本编辑器的语法着色,格式化,自动完成,错误标记。
现在,我想实施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);
}
}
}
答案 0 :(得分:0)
如果启用"标记出现" ,然后突出显示与您标记的单词相同的所有单词。
您可以通过以下两种方式启用它
Alt + Shift + O
Preferences > Java > Editor > Mark Occurrences
你应该看看这个 - https://stackoverflow.com/a/13450719/8029887
这里还有一些可能有帮助的插件