Document state assignment indicates command change;
authorwenzelm
Tue, 31 Aug 2010 17:35:41 +0200
changeset 39208e1fb3bbc22ab
parent 39207 c8123e77acc5
child 39209 0998a635684a
Document state assignment indicates command change;
src/Pure/PIDE/document.scala
src/Pure/System/session.scala
     1.1 --- a/src/Pure/PIDE/document.scala	Tue Aug 31 16:07:25 2010 +0200
     1.2 +++ b/src/Pure/PIDE/document.scala	Tue Aug 31 17:35:41 2010 +0200
     1.3 @@ -180,7 +180,7 @@
     1.4    {
     1.5      class Fail(state: State) extends Exception
     1.6  
     1.7 -    val init = State().define_version(Version.init, Map()).assign(Version.init.id, Nil)
     1.8 +    val init = State().define_version(Version.init, Map()).assign(Version.init.id, Nil)._2
     1.9  
    1.10      class Assignment(former_assignment: Map[Command, Exec_ID])
    1.11      {
    1.12 @@ -243,7 +243,7 @@
    1.13            }
    1.14        }
    1.15  
    1.16 -    def assign(id: Version_ID, edits: List[(Command_ID, Exec_ID)]): State =
    1.17 +    def assign(id: Version_ID, edits: List[(Command_ID, Exec_ID)]): (List[Command], State) =
    1.18      {
    1.19        val version = the_version(id)
    1.20        val occs = Set(version)  // FIXME unused (!?)
    1.21 @@ -257,7 +257,7 @@
    1.22            (st.command, exec_id)
    1.23          }
    1.24        the_assignment(version).assign(assigned_execs)  // FIXME explicit value instead of promise (!?)
    1.25 -      copy(execs = new_execs)
    1.26 +      (assigned_execs.map(_._1), copy(execs = new_execs))
    1.27      }
    1.28  
    1.29      def is_assigned(version: Version): Boolean =
     2.1 --- a/src/Pure/System/session.scala	Tue Aug 31 16:07:25 2010 +0200
     2.2 +++ b/src/Pure/System/session.scala	Tue Aug 31 17:35:41 2010 +0200
     2.3 @@ -190,7 +190,8 @@
     2.4              result.body match {
     2.5                case List(Isar_Document.Assign(id, edits)) =>
     2.6                  try {
     2.7 -                  global_state.change(_.assign(id, edits))
     2.8 +                  val cmds: List[Command] = global_state.change_yield(_.assign(id, edits))
     2.9 +                  for (cmd <- cmds) command_change_buffer ! cmd
    2.10                    assignments.event(Session.Assignment)
    2.11                  }
    2.12                  catch { case _: Document.State.Fail => bad_result(result) }