src/Pure/PIDE/document.scala
changeset 44543 ba8f24f7156e
parent 44484 470f2ee5950e
child 44580 3bc9a215a56d
equal deleted inserted replaced
44542:3f5fd3635281 44543:ba8f24f7156e
   294     def assign(id: Version_ID, arg: Assign): (List[Command], State) =
   294     def assign(id: Version_ID, arg: Assign): (List[Command], State) =
   295     {
   295     {
   296       val version = the_version(id)
   296       val version = the_version(id)
   297       val (command_execs, last_execs) = arg
   297       val (command_execs, last_execs) = arg
   298 
   298 
   299       val (commands, new_execs) =
   299       val (changed_commands, new_execs) =
   300         ((Nil: List[Command], execs) /: command_execs) {
   300         ((Nil: List[Command], execs) /: command_execs) {
   301           case ((commands1, execs1), (cmd_id, Some(exec_id))) =>
   301           case ((commands1, execs1), (cmd_id, exec)) =>
   302             val st = the_command(cmd_id)
   302             val st = the_command(cmd_id)
   303             (st.command :: commands1, execs1 + (exec_id -> st))
   303             val commands2 = st.command :: commands1
   304           case (res, (_, None)) => res
   304             val execs2 =
       
   305               exec match {
       
   306                 case None => execs1
       
   307                 case Some(exec_id) => execs1 + (exec_id -> st)
       
   308               }
       
   309             (commands2, execs2)
   305         }
   310         }
   306       val new_assignment = the_assignment(version).assign(command_execs, last_execs)
   311       val new_assignment = the_assignment(version).assign(command_execs, last_execs)
   307       val new_state = copy(assignments = assignments + (id -> new_assignment), execs = new_execs)
   312       val new_state = copy(assignments = assignments + (id -> new_assignment), execs = new_execs)
   308 
   313 
   309       (commands, new_state)
   314       (changed_commands, new_state)
   310     }
   315     }
   311 
   316 
   312     def is_assigned(version: Version): Boolean =
   317     def is_assigned(version: Version): Boolean =
   313       assignments.get(version.id) match {
   318       assignments.get(version.id) match {
   314         case Some(assgn) => assgn.is_finished
   319         case Some(assgn) => assgn.is_finished