为了账号安全,请及时绑定邮箱和手机立即绑定

编辑器关闭后如何删除 IMarkers(或者为什么 IMarker.TRANSIENT )?

编辑器关闭后如何删除 IMarkers(或者为什么 IMarker.TRANSIENT )?

素胚勾勒不出你 2022-11-02 10:51:38
我正在 Eclipse 中编写一个自定义编辑器,并且只是集成了自定义错误识别。现在我面临一个奇怪的问题:我可以将标记添加到我的编辑器中,这些标记可以很好地显示,我也可以在编辑器运行时删除它们。什么不起作用:当我关闭我的编辑器时,我希望标记消失/被删除。我现在正在做的是使用像这样设置的瞬态属性创建标记:marker.setAttribute(IMarker.TRANSIENT, true);但这似乎并没有改变任何东西。试图通过源查看器 annotation-model删除所有注释。这不起作用,因为当我尝试挂钩到我的 editorsdispose()方法或将 a 添加DisposeListener到我的sourceviewers textwidget时, sourceviewer 已经被处理并getSourceViewer().getAnnotationModel();返回null。我的deleteMarkers方法:private void deleteMarkers() {        IAnnotationModel anmod = getSourceViewer().getAnnotationModel();        Iterator<Annotation> it = anmod.getAnnotationIterator();        while (it.hasNext()) {            SimpleMarkerAnnotation a = (SimpleMarkerAnnotation) it.next();            anmod.removeAnnotation(a);            try {                a.getMarker().delete();            } catch (CoreException e) {                e.printStackTrace();            }        }    }任何帮助表示赞赏^^
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

挂钩到您的编辑器关闭事件,获取对编辑器 IResource 的引用(我相信您可以在 IEditorInput 上获得该引用)并在相关资源上调用 IResource#deleteMarkers(),这将在您关闭编辑器时删除它们。按照设计,当编辑器关闭时,eclipse 不会删除标记。

这里有一些参考: http ://help.eclipse.org/kepler/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html#deleteMarkers(java.lang .字符串,布尔值,整数)


查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信