diff -r 6a4498b048b7 -r 1baa5d19ac44 src/Pure/System/session.scala --- a/src/Pure/System/session.scala Tue Jul 30 19:53:06 2013 +0200 +++ b/src/Pure/System/session.scala Tue Jul 30 21:22:37 2013 +0200 @@ -119,7 +119,7 @@ /* tuning parameters */ def output_delay: Time = Time.seconds(0.1) // prover output (markup, common messages) - def message_delay: Time = Time.seconds(0.01) // incoming prover messages + def message_delay: Time = Time.seconds(0.1) // prover input/output messages def prune_delay: Time = Time.seconds(60.0) // prune history -- delete old versions def prune_size: Int = 0 // size of retained history def syslog_limit: Int = 100 @@ -260,7 +260,7 @@ { private var buffer = new mutable.ListBuffer[Isabelle_Process.Message] - def flush(): Unit = synchronized { + private def flush(): Unit = synchronized { if (!buffer.isEmpty) { val msgs = buffer.toList this_actor ! Messages(msgs) @@ -268,17 +268,20 @@ } } def invoke(msg: Isabelle_Process.Message): Unit = synchronized { - buffer += msg msg match { + case _: Isabelle_Process.Input => + buffer += msg case output: Isabelle_Process.Output => - if (output.is_syslog) - syslog >> (queue => - { - val queue1 = queue.enqueue(output.message) - if (queue1.length > syslog_limit) queue1.dequeue._2 else queue1 - }) - if (output.is_protocol) flush() - case _ => + if (output.is_protocol && output.properties == Markup.Flush) flush() + else { + buffer += msg + if (output.is_syslog) + syslog >> (queue => + { + val queue1 = queue.enqueue(output.message) + if (queue1.length > syslog_limit) queue1.dequeue._2 else queue1 + }) + } } }