在 Eclipse 中的特定行号处打开一个 XML 文件
Open an XML file in Eclipse at a specific line number
我正在编写一个 eclipse 插件,我需要在特定行号(错误所在)处打开一个 XML 文件。
我已经遵循了关于这个 question 的公认答案,它确实有效......在我的 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() 事件。
IFile.createMarker
调用正在生成资源更改事件,您无法阻止它。
但是您可以在收到的 IResourceData
中识别出这是一个创建标记事件 - getFlags()
方法将设置 IResourceData.MARKERS
标志。
请注意,资源增量可以合并,因此可能会设置多个标志 - 例如,如果设置了 IResourceDelta.CONTENT
,则文件的内容也会更改。
我正在编写一个 eclipse 插件,我需要在特定行号(错误所在)处打开一个 XML 文件。
我已经遵循了关于这个 question 的公认答案,它确实有效......在我的 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() 事件。
IFile.createMarker
调用正在生成资源更改事件,您无法阻止它。
但是您可以在收到的 IResourceData
中识别出这是一个创建标记事件 - getFlags()
方法将设置 IResourceData.MARKERS
标志。
请注意,资源增量可以合并,因此可能会设置多个标志 - 例如,如果设置了 IResourceDelta.CONTENT
,则文件的内容也会更改。