我有一个 Eclipse 自定义编辑器,并且我实现了“在您键入时报告错误”,但是我的错误曲线(使用 JFace 注释)不时显示或在它们应该被删除后徘徊。
我正在使用MonoReconciler
我的IReconcilingStrategy
. 在此reconcile
步骤中,我调用annotationModel.replaceAnnotations
以删除旧错误并添加新错误。大多数时候这工作正常。时不时会丢失更新,我注意到以下内容:
- 左侧标尺上的红色印记消失,但红色下划线保留
- 在我输入的下一个字符上,下划线消失
我在调试器中验证了注释是正确计算的。下划线在输入字符后立即消失,而不是在协调器延迟 500 毫秒后消失。它看起来像丢失的 UI 更新/重绘。
某处必须存在竞争条件(协调器在自己的线程中运行)。我究竟做错了什么?我找不到有关此用例的任何文档。
编辑:要重现,请检查scala-worksheet并创建一个新的。类型
object Test {
val m = Map( 't' -> 1 )
}
现在编辑箭头:删除>
. 下划线不见了。键入一个空格,它会返回。添加回来,下划线仍然存在,直到您键入另一个空格。
我通过拜访下属来解决它,但在我看来这应该没有必要。我想了解使用编辑器注释的正确方法是什么。invalidateTextPresentation
SourceViewer
PS。在此截屏视频中也可以看到丢失的更新。