私は Eclipse カスタム エディターを持っており、「入力時にエラーを報告する」を実装しましたが、(JFace 注釈を使用して) エラーの波線が表示されないか、削除する必要がある後も残ります。
MonoReconciler
の実装で使用していますIReconcilingStrategy
。ステップ中に、古いエラーを削除して新しいエラーを追加するためreconcile
に呼び出します。annotationModel.replaceAnnotations
ほとんどの場合、これでうまくいきます。ときどき更新が失われ、次のことに気付きます。
- 左ルーラーの赤いスタンプは消えますが、赤い下線は残ります
- 次に入力する文字で、下線が消えます
アノテーションが正しく計算されていることをデバッガーで確認しました。下線は文字を入力するとすぐに消えますが、リコンサイラーの 500 ミリ秒の遅延の後ではありません。UI の更新/再描画が失われたようです。
どこかに競合状態があるはずです (リコンサイラーは独自のスレッドで実行されます)。私は何を間違っていますか?このユースケースに関するドキュメントは見つかりませんでした。
編集: 再現するには、scala-worksheetをチェックアウトして、新しいものを作成します。タイプ
object Test {
val m = Map( 't' -> 1 )
}
矢印を編集します: を削除し>
ます。下線がありません。スペースを入力すると、戻ってきます。もう一度追加します。別のスペースを入力するまで、下線はそのままです。
アンダーリングを呼び出して修正しましたが、必要ないように思えます。エディターの注釈を使用する正しい方法を理解したいと思います。invalidateTextPresentation
SourceViewer
PS。失われた更新は、このスクリーンキャストでも確認できます。