如何在我自己的RCP-Application编辑器中突出显示所有相似的单词?

时间:2017-08-09 08:33:56

标签: java eclipse rcp

我使用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);
         }
     }
}

1 个答案:

答案 0 :(得分:0)

如果启用"标记出现" ,然后突出显示与您标记的单词相同的所有单词。

您可以通过以下两种方式启用它

  1. Alt + Shift + O
  2. Preferences > Java > Editor > Mark Occurrences
  3. 你应该看看这个 - https://stackoverflow.com/a/13450719/8029887

    这里还有一些可能有帮助的插件

    1. http://ystrot.github.io/glance/

    2. https://github.com/ajermakovics/eclipse-instasearch