2017-09-27 15 views
1

Eclipse 플러그인에서 현재 마커 위로 마우스를 가져 가면 Eclipse (Luna)가 맞춤 텍스트를 표시하려고합니다. 나는 마커 인수를 지정하여이를 달성 할 수 있다는 것을 알고 있지만, 나는 예를 들어 텍스트 동적, 변경해야Eclipse - 마커 위로 마우스를 가져 가면 사용자 정의 텍스트

:

Use case

가 이미 성공하지 않고 이러한 접근 방식을 을 시도를

public class MyEditor extends TextEditor { 

    public MyEditor() { 
     setSourceViewerConfiguration(new SourceViewerConfiguration() { 
      @Override 
      public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) { 
       return new IAnnotationHover() { 
        @Override 
        public String getHoverInfo(ISourceViewer sv, int ln) { 
         return "Hello world!"; 
        } 
       }; 
      } 
     }); 
    } 
} 

과 : 1) 사용자 정의 SourceViewerConfiguration와 사용자 정의 TextEditor를 갖는 이 같은 plugin.xml에 :

<extension 
     point="org.eclipse.ui.editors"> 
    <editor 
      id="test" 
      name="MyEditor" 
      extensions="c" 
      class="foo.bar.editors.MyEditor"> 
    </editor> 
</extension> 

내 방법 getHoverInfo가 호출되지 않습니다. 대신 * .c 파일을 열고 표식 위에 마우스를 올리면 getHoverInfoDefaultAnnotationHover이 호출됩니다. Eclipse-> Preferences-> General-> Editors를 통해 사용 가능한 편집기를 확인했고 MyEditor이 있습니다.

2) 맞춤 주석 달기를 동적으로 추가. 가능하다면 here 정보를 찾았습니다. 그래서 나는 "*이 .c"파일을 열 때마다, 나는이 코드를 가지고 :

IPartListener2 partListener2 = new IPartListener2() { 
    @Override 
    public void partOpened(IWorkbenchPartReference partRef) { 
      if ("org.eclipse.cdt.ui.editor.CEditor".equals(((EditorReference) partRef).getDescriptor().getId())) { 
       CEditor currentCFileEditor = ((CEditor)((EditorReference) partRef).getEditor(false)); 
       currentCFileEditor.getViewer().setAnnotationHover(new IAnnotationHover() { 
        @Override 
        public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) { 
         return "Hello world"; 
        } 
       }); 
      } 
     } 

을 그러나 다시, 나는 성공하지 못한 - 내는 getHoverInfo는 전혀 호출되지 않습니다.

내가 뭘 잘못하고 있는지 알기!

답변

0

비슷한 문제가있는 사람들에게 - 나는 "해킹"솔루션을 발견했습니다. 나는 내 자신의 클래스 MyAwesomeHover 만들었습니다

public class MyAwesomeHover implements IAnnotationHover { 
    @Override 
    public String getHoverInfo(ISourceViewer sw, int ln) { 
     return "Hey hoo" 
    } 
} 

을 그리고 나는 표시 AnnotationHoverMyAweseomeHover을 설정하는 반사를 사용합니다.

+0

Eclipse Neon3에서이 수정본을 사용하려면 환경 설정에서 "호버링 할 때 세로 눈금자 아이콘 확장 (열린 편집기에 영향을주지 않음)"옵션을 비활성화해야합니다. – napets