【问题标题】:Open an XML file in Eclipse at a specific line number在 Eclipse 中以特定行号打开 XML 文件
【发布时间】:2018-10-08 12:57:41
【问题描述】:

我正在编写一个 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() 事件。

【问题讨论】:

  • IResourceDelta getFlags 调用将为 IResourceDelta.MARKERS 调用设置 IResourceDelta.MARKERS 标志 - 因此您可以识别并忽略它。
  • 太棒了!谢谢,谢谢,谢谢,谢谢。我花了一整天的时间试图弄清楚这一点。

标签: java eclipse eclipse-plugin jface


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2013-05-06
    相关资源
    最近更新 更多