src/Pure/PIDE/session.scala
changeset 69640 af09cc4792dc
parent 69492 b4b4d3ec55b3
child 70284 3e17c3a5fd39
equal deleted inserted replaced
69639:091f57432f05 69640:af09cc4792dc
     7 
     7 
     8 package isabelle
     8 package isabelle
     9 
     9 
    10 
    10 
    11 import scala.collection.immutable.Queue
    11 import scala.collection.immutable.Queue
       
    12 import scala.annotation.tailrec
    12 
    13 
    13 
    14 
    14 object Session
    15 object Session
    15 {
    16 {
    16   /* outlets */
    17   /* outlets */
   638 
   639 
   639   def snapshot(name: Document.Node.Name = Document.Node.Name.empty,
   640   def snapshot(name: Document.Node.Name = Document.Node.Name.empty,
   640       pending_edits: List[Text.Edit] = Nil): Document.Snapshot =
   641       pending_edits: List[Text.Edit] = Nil): Document.Snapshot =
   641     global_state.value.snapshot(name, pending_edits)
   642     global_state.value.snapshot(name, pending_edits)
   642 
   643 
       
   644   @tailrec final def await_stable_snapshot(): Document.Snapshot =
       
   645   {
       
   646     val snapshot = this.snapshot()
       
   647     if (snapshot.is_outdated) {
       
   648       Thread.sleep(output_delay.ms)
       
   649       await_stable_snapshot()
       
   650     }
       
   651     else snapshot
       
   652   }
       
   653 
   643   def start(start_prover: Prover.Receiver => Prover)
   654   def start(start_prover: Prover.Receiver => Prover)
   644   {
   655   {
   645     file_formats
   656     file_formats
   646     _phase.change(
   657     _phase.change(
   647       {
   658       {