我正在编写一个eclipse插件,我需要在特定的行号(错误所在的位置)打开一个XML文件。
我已经按照question上接受的答案进行了操作,它确实有效......在我的FileSystemChangesListener
侦听器中生成 resourceChanged()事件会产生不良副作用。
有没有办法跳转到特定行而不会产生文件更改?这些事件会触发插件中的其他执行。
我尝试将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()事件。
答案 0 :(得分:1)
IFile.createMarker
来电正在生成资源更改事件,您无法阻止此事。
但是,您可以确定这是您收到的IResourceData
中的创建标记事件 - getFlags()
方法将设置IResourceData.MARKERS
标记。
请注意,资源增量可以合并,因此可能设置了多个标志 - 例如,如果设置了IResourceDelta.CONTENT
,文件的内容也会发生变化。