diff -r 091f57432f05 -r af09cc4792dc src/Pure/PIDE/session.scala --- a/src/Pure/PIDE/session.scala Sat Jan 12 19:53:57 2019 +0100 +++ b/src/Pure/PIDE/session.scala Sat Jan 12 20:14:05 2019 +0100 @@ -9,6 +9,7 @@ import scala.collection.immutable.Queue +import scala.annotation.tailrec object Session @@ -640,6 +641,16 @@ pending_edits: List[Text.Edit] = Nil): Document.Snapshot = global_state.value.snapshot(name, pending_edits) + @tailrec final def await_stable_snapshot(): Document.Snapshot = + { + val snapshot = this.snapshot() + if (snapshot.is_outdated) { + Thread.sleep(output_delay.ms) + await_stable_snapshot() + } + else snapshot + } + def start(start_prover: Prover.Receiver => Prover) { file_formats