通过键入来编辑文件时,如何调整自定义Eclipse标记的位置属性?

通过键入来编辑文件时,如何调整自定义Eclipse标记的位置属性?,eclipse,eclipse-cdt,markers,Eclipse,Eclipse Cdt,Markers,在编辑文件时,Eclipse是否调整自定义标记的位置属性 我有许多Eclipse插件,在这些插件中我成功地创建和删除了标记,创建了快速修复程序,并以编程方式将编辑应用于活动编辑器。当文本从缓冲区中插入或删除时,编辑器中的所有文本都会移动,当然,Eclipse的标记和我的自定义标记会与文本保持同步 问题在于,在编辑文件时,无论是通过常规键入还是通过更改IBuffer以编程方式进行编辑,属性(例如CHAR_START)都不会被修改—它们会在创建标记并首次使其可见时报告值。因此,当一个人去做一个快速修

在编辑文件时,Eclipse是否调整自定义标记的位置属性

我有许多Eclipse插件,在这些插件中我成功地创建和删除了标记,创建了快速修复程序,并以编程方式将编辑应用于活动编辑器。当文本从缓冲区中插入或删除时,编辑器中的所有文本都会移动,当然,Eclipse的标记和我的自定义标记会与文本保持同步

问题在于,在编辑文件时,无论是通过常规键入还是通过更改IBuffer以编程方式进行编辑,属性(例如CHAR_START)都不会被修改—它们会在创建标记并首次使其可见时报告值。因此,当一个人去做一个快速修复的标记,例如,报告的位置是不正确的。(这是一个信息标记,在CDT中,如果有必要的话。)

在进行编辑时,这些标记位置应该如何更新? 有没有一种Eclipse方法可以做到这一点,但我需要实现一些设置、通知或侦听器

一种可能是实现ResourceChangeReporter,但当文本编辑发生时,我不会触发它,例如,当调用save时。如果是的话,我看不到关于文件实际上是如何被修改的信息


我想我可以要求在应用快速修复之前保存一个脏文件,但我仍然不知道从哪里获取有关文件编辑的信息。如果我以编程方式应用编辑,我知道这些信息,但是当通过键入进行编辑时它没有帮助。

标记位置可以在编辑期间使用使用使用
org.eclipse.ui.editors.markerUpdaters
扩展点声明的更新程序进行更新,并实现
IMarkerUpdater
接口


但是,有一个默认的更新程序
org.eclipse.ui.texteditor.BasicMarkerUpdater
,它已经为所有应该为您进行基本位置更新的标记激活

多谢各位。我发现问题在于我的不耐烦:标记更新(至少使用BasicMarkerUpdater)是在保存脏编辑器时发生的,但在编辑器脏时,不会在每次编辑时更新。这也是您所期望的吗?这取决于编辑器何时更新标记注释模型,基本文本编辑器仅在保存时执行此操作。Java编辑器看起来更经常这样做。