2017-08-09 21 views
0

我使用RCP 3.x開發了一個RCP應用程序,其中包含用於我自己的文本編輯器的語法着色,格式化,自動完成,錯誤標記。我想實現Mark Occurrences。如果我在編輯器中單擊某個單詞,所有類似的單詞都將突出顯示 - 與Java編輯器類似。如何在我自己的編輯器中突出顯示RCP-Application中的所有相似單詞?

有沒有人有想法? 在此先感謝。

這是我的代碼的一部分:

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

Java編輯器在此註釋模型中使用Annotations。 –

+0

請參閱[Java編輯器的源代碼](http://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/tree/org.eclipse.jdt.junit/) – howlger

回答

相關問題