gpt4 book ai didi

eclipse-plugin - AnnotationModel 中的竞争条件? Reconciler 中的错误注释丢失

转载 作者:行者123 更新时间:2023-12-04 06:46:55 24 4
gpt4 key购买 nike

我有一个 Eclipse 自定义编辑器,我实现了“键入时报告错误”,但我的错误波浪线(使用 JFace 注释)不时显示或在删除后仍然存在。

我将 MonoReconciler 与我的 IReconcilingStrategy 实现一起使用。在 reconcile 步骤中,我调用 annotationModel.replaceAnnotations 来删除旧错误并添加新错误。大多数时候这工作正常。更新时不时会丢失,我注意到以下几点:

  • 左侧标尺上的红色标记消失,但红色下划线保留
  • 在我输入的下一个字符上,下划线消失

  • 我在调试器中验证了注释计算正确。下划线在输入字符后立即消失,而不是在协调器的 500 毫秒延迟后消失。看起来像是丢失了 UI 更新/重绘。

    某处必须存在竞争条件(协调器在其自己的线程中运行)。我究竟做错了什么?我找不到有关此用例的任何文档。

    编辑:要重现,请检查 scala-worksheet 并创建一个新的。类型
     object Test {
    val m = Map( 't' -> 1 )
    }

    现在编辑箭头:删除 > 。下划线不见了。输入一个空格,它会回来。添加回来,下划线仍然存在,直到您键入另一个空格。

    我通过在底层 invalidateTextPresentation 上调用 SourceViewer 来修复它,但在我看来这应该没有必要。我想了解使用编辑器注释的正确方法是什么。

    附注。丢失的更新也可以在这个 screencast 中看到。

    最佳答案

    从远处很难分辨,通常在 eclipse 中,任何影响 ui 的更改都应该在 ui 线程上执行(并且 eclipse 不会总是对此发出警告)。
    通常,您使用 Display.getDefault().asyncExec(...) 在 ui 线程上执行某些操作,但您可能已经知道这一点。可能会发生 2 个排队更改导致竞争的情况。

    (我已经为我工作的公司 Sigasi 多次实现了语义突出显示、错误突出显示等。如果你能指出我的实现,我也许能够弄清楚出了什么问题。)

    关于eclipse-plugin - AnnotationModel 中的竞争条件? Reconciler 中的错误注释丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12507620/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com