自定义Eclipse文本编辑器中的注释不会显示

时间:2016-04-07 21:28:59

标签: eclipse eclipse-plugin

我正在尝试使用协调程序编写自定义文本编辑器,该协调程序将更新AST并为错误创建标记(如果有)。我设法添加了显示在编辑器左侧标尺和问题视图中的标记。但是,我也希望在文本中强调这些错误。这不起作用。没有任何文字加下划线。但是,如果我双击问题视图中的一个错误,则会选择文本编辑器中的相应文本。据我了解,除了标记之外,我还需要添加注释。这是我到目前为止所尝试的:

final IResource resource = ResourceUtil.getResource(getEditorInput());
final IMarker marker = resource.createMarker("com.test.myproblemmarker");
marker.setAttribute(IMarker.MESSAGE, "hello");
marker.setAttribute(IMarker.CHAR_START, 2);
marker.setAttribute(IMarker.CHAR_END, 10);
marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);

final IDocumentProvider idp = getDocumentProvider();
final IDocument document = idp.getDocument(getEditorInput());
final IAnnotationModel iamf = idp.getAnnotationModel(getEditorInput());

final SimpleMarkerAnnotation ma = new SimpleMarkerAnnotation("org.eclipse.ui.workbench.texteditor.error", marker);
ma.setText("hello");

iamf.connect(document);
iamf.addAnnotation(ma, new Position(2, 8));
ma.update();
iamf.disconnect(document);
ma.update();

plugin.xml的相关部分:

<extension id="com.test.problemmarker" point="org.eclipse.core.resources.markers" name="A Problem">
    <super type="org.eclipse.core.resources.problemmarker"/>
    <super type="org.eclipse.core.resources.textmarker"/>
    <persistent value="true"/>
</extension>

<extension point="org.eclipse.ui.editors.markerAnnotationSpecification" id="myannotationspecification" name="MyAnnotation">
    <specification
      annotationType="com.test.problemannotation"
      label="MyAnnotation"
      icon="icons/icon16x16.png"
      overviewRulerPreferenceKey="clruler"
      overviewRulerPreferenceValue="true"
      colorPreferenceKey="clcolor"
      colorPreferenceValue="255,0,0"
      textPreferenceKey="cltext"
      textPreferenceValue="true"
      verticalRulerPreferenceKey="clvertical"
      verticalRulerPreferenceValue="true"
      textStylePreferenceKey="clstyle"
      textStylePreferenceValue="UNDERLINE"
      presentationLayer="4">
    </specification>
</extension>

<extension point="org.eclipse.ui.editors.annotationTypes">
    <type
        markerSeverity="2"
        super="org.eclipse.ui.workbench.texteditor.error"
        name="com.test.problemannotation"
        markerType="com.test.problemmarker"/>
</extension>

自定义文本编辑器继承自TextEditor,协调程序为MonoReconciler。当我查看现有的编辑器/协调器实现时,看起来像一个非常标准的设置。我感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

好的,我能够自己修复它。问题是,我在TextEditor子类的构造函数中设置了我自己的首选项存储:

setPreferenceStore(MyPlugin.getDefault().getPreferenceStore());

我在AnnotationPainter课程中设置了一些断点,并意识到了这一切 注释被禁用。当我从编辑器中删除此行时,会出现注释。

我还注意到只需创建一个标记就足够了。将自动添加相应的注释。