diff -r a40be2f10ca9 -r c0f776b661fa src/Pure/System/session.scala --- a/src/Pure/System/session.scala Thu Mar 15 10:16:21 2012 +0100 +++ b/src/Pure/System/session.scala Thu Mar 15 11:37:56 2012 +0100 @@ -86,7 +86,6 @@ //{{{ private case class Text_Edits( - syntax: Outer_Syntax, name: Document.Node.Name, previous: Future[Document.Version], text_edits: List[Document.Edit_Text], @@ -99,8 +98,9 @@ receive { case Stop => finished = true; reply(()) - case Text_Edits(syntax, name, previous, text_edits, version_result) => + case Text_Edits(name, previous, text_edits, version_result) => val prev = previous.get_finished + val syntax = if (prev.is_init) prover_syntax else prev.syntax val (doc_edits, version) = Thy_Syntax.text_edits(syntax, prev, text_edits) version_result.fulfill(version) sender ! Change_Node(name, doc_edits, prev, version) @@ -118,8 +118,11 @@ @volatile var verbose: Boolean = false - @volatile private var syntax = Outer_Syntax.init() - def current_syntax(): Outer_Syntax = syntax + @volatile private var prover_syntax = + Outer_Syntax.init() + + // FIXME avoid hardwired stuff!? + ("hence", Keyword.PRF_ASM_GOAL, "then have") + + ("thus", Keyword.PRF_ASM_GOAL, "then show") private val syslog = Volatile(Queue.empty[XML.Elem]) def current_syslog(): String = cat_lines(syslog().iterator.map(msg => XML.content(msg).mkString)) @@ -135,6 +138,7 @@ private val global_state = Volatile(Document.State.init) def current_state(): Document.State = global_state() + def recent_syntax(): Outer_Syntax = current_state().recent_stable.version.get_finished.syntax def snapshot(name: Document.Node.Name = Document.Node.Name.empty, pending_edits: List[Text.Edit] = Nil): Document.Snapshot = @@ -279,7 +283,6 @@ header: Document.Node_Header, edits: List[Document.Node.Edit[Text.Edit, Text.Perspective]]) //{{{ { - val syntax = current_syntax() val previous = global_state().history.tip.version prover.get.cancel_execution() @@ -288,7 +291,7 @@ val version = Future.promise[Document.Version] val change = global_state >>> (_.continue_history(previous, text_edits, version)) - change_parser ! Text_Edits(syntax, name, previous, text_edits, version) + change_parser ! Text_Edits(name, previous, text_edits, version) } //}}} @@ -398,19 +401,16 @@ System.err.println("cancel_scala " + id) // FIXME actually cancel JVM task case Isabelle_Markup.Ready if output.is_protocol => - // FIXME move to ML side (!?) - syntax += ("hence", Keyword.PRF_ASM_GOAL, "then have") - syntax += ("thus", Keyword.PRF_ASM_GOAL, "then show") phase = Session.Ready case Isabelle_Markup.Loaded_Theory(name) if output.is_protocol => thy_load.register_thy(name) case Isabelle_Markup.Command_Decl(name, kind) if output.is_protocol => - syntax += (name, kind) + prover_syntax += (name, kind) case Isabelle_Markup.Keyword_Decl(name) if output.is_protocol => - syntax += name + prover_syntax += name case _ => if (output.is_exit && phase == Session.Startup) phase = Session.Failed