首页 > 解决方案 > 在 Eclipse 中以特定行号打开 XML 文件

问题描述

我正在编写一个 Eclipse 插件,我需要在特定行号(错误所在)处打开一个 XML 文件。

我已经按照这个问题的公认答案,它实际上有效......在我的听众中生成resourceChanged()事件的不良副作用。FileSystemChangesListener

有没有办法跳转到特定行而不产生文件更改?这些事件触发插件中的其他执行。

我尝试添加TRANSIENT参数true无济于事,如下所示:

HashMap<String, Object> map = new HashMap<String, Object>();
map.put(IMarker.LINE_NUMBER, lineNumber);
map.put(IMarker.TRANSIENT, true); // doesn't make any difference.
marker.setAttributes(map);
IDE.openEditor(page, marker);

仍然会生成resourceChanged()事件。

标签: javaeclipseeclipse-pluginjface

解决方案


IFile.createMarker调用正在生成资源更改事件,您无法阻止这一点。

但是,您可以确定这是IResourceData您收到的创建标记事件 - 该getFlags()方法将IResourceData.MARKERS设置标志。

请注意,资源增量可以合并,因此可能设置了几个标志 - 例如,如果IResourceDelta.CONTENT设置了文件的内容也已更改。


推荐阅读