Eclipse custom texteditor - 标记注释表示问题

时间:2013-04-14 12:35:28

标签: java eclipse annotations markers text-editor

我想为我的计算机科学讲师写一个eclipse插件。它是一个基于xml的文件格式的自定义编辑器。 我已经实现了语法高亮和其他东西。但是当我使用注释/标记显示无效内容时,我坚持不懈。

如果内容有效,这就是它的样子:

image of valid conent http://image-upload.de/image/aPcsaa/6c799a671c.png

如果内容无效,这就是它的样子:

image of invalid conent http://image-upload.de/image/4TdooQ/04d662f397.png

正如您所看到的,无效属性将被标记,但问题是,这些注释之间似乎丢失了整个格式。

我使用org.eclipse.jface.text.reconciler.Reconciler来延迟解析内容以创建文档模型。该模型用于格式化文本和显示注释。所有这些都发生在void process(DirtyRegion dirtyRegion)

的void Reconciler方法中

对于文本格式,我使用<ITextViewer>.changeTextPresentation(textAttributes, false),对于注释处理,我使用

IAnnotationModel annotationModel = <ISourceViewer>.getAnnotationModel();
IAnnotationModelExtension annotationModelExtension = (IAnnotationModelExtension) annotationModel;
annotationModelExtension.replaceAnnotations(oldAnnotations, newAnnotations);

由于Reconciler不使用swt线程,我必须使用此构造来避免异常:

<ITextViewer>.getTextWidget().getDisplay().asyncExec(new Runnable() {
  @Override
  public void run() {

    <ITextViewer>.changeTextPresentation(textAttributes, false);
    updateAnnotations(nodes);
  }
});

顺便说一下,ITextViewerISourceViewer表示相同的查看器对象

作为注释类型我测试:org.eclipse.ui.workbench.texteditor.spelling和其他一些,也是自定义类型,但都具有相同的结果。

我不太确定,我做错了什么,可能是因为它只是一次通话?

我希望有人可以帮我解决这个问题。

提前谢谢。

0 个答案:

没有答案