src/Pure/System/session.scala
changeset 44385 e7fdb008aa7d
parent 44384 8f6054a63f96
child 44436 546adfa8a6fc
equal deleted inserted replaced
44384:8f6054a63f96 44385:e7fdb008aa7d
   162 
   162 
   163   /* actor messages */
   163   /* actor messages */
   164 
   164 
   165   private case class Start(timeout: Time, args: List[String])
   165   private case class Start(timeout: Time, args: List[String])
   166   private case object Interrupt
   166   private case object Interrupt
   167   private case class Init_Node(
   167   private case class Init_Node(name: String, master_dir: String,
   168     name: String, master_dir: String, header: Document.Node_Header, text: String)
   168     header: Document.Node_Header, perspective: Text.Perspective, text: String)
   169   private case class Edit_Node(
   169   private case class Edit_Node(name: String, master_dir: String,
   170     name: String, master_dir: String, header: Document.Node_Header, edits: List[Text.Edit])
   170     header: Document.Node_Header, perspective: Text.Perspective, edits: List[Text.Edit])
   171   private case class Change_Node(
   171   private case class Change_Node(
   172     name: String,
   172     name: String,
   173     doc_edits: List[Document.Edit_Command],
   173     doc_edits: List[Document.Edit_Command],
   174     previous: Document.Version,
   174     previous: Document.Version,
   175     version: Document.Version)
   175     version: Document.Version)
   334           reply(())
   334           reply(())
   335 
   335 
   336         case Interrupt if prover.isDefined =>
   336         case Interrupt if prover.isDefined =>
   337           prover.get.interrupt
   337           prover.get.interrupt
   338 
   338 
   339         case Init_Node(name, master_dir, header, text) if prover.isDefined =>
   339         case Init_Node(name, master_dir, header, perspective, text) if prover.isDefined =>
   340           // FIXME compare with existing node
   340           // FIXME compare with existing node
   341           handle_edits(name, master_dir, header,
   341           handle_edits(name, master_dir, header,
   342             List(Document.Node.Clear(), Document.Node.Edits(List(Text.Edit.insert(0, text)))))
   342             List(Document.Node.Clear(),
       
   343               Document.Node.Edits(List(Text.Edit.insert(0, text))),
       
   344               Document.Node.Perspective(perspective)))
   343           reply(())
   345           reply(())
   344 
   346 
   345         case Edit_Node(name, master_dir, header, text_edits) if prover.isDefined =>
   347         case Edit_Node(name, master_dir, header, perspective, text_edits) if prover.isDefined =>
   346           handle_edits(name, master_dir, header, List(Document.Node.Edits(text_edits)))
   348           handle_edits(name, master_dir, header,
       
   349             List(Document.Node.Edits(text_edits),
       
   350               Document.Node.Perspective(perspective)))
   347           reply(())
   351           reply(())
   348 
   352 
   349         case change: Change_Node if prover.isDefined =>
   353         case change: Change_Node if prover.isDefined =>
   350           handle_change(change)
   354           handle_change(change)
   351 
   355 
   369 
   373 
   370   def stop() { command_change_buffer !? Stop; session_actor !? Stop }
   374   def stop() { command_change_buffer !? Stop; session_actor !? Stop }
   371 
   375 
   372   def interrupt() { session_actor ! Interrupt }
   376   def interrupt() { session_actor ! Interrupt }
   373 
   377 
   374   def init_node(name: String, master_dir: String, header: Document.Node_Header, text: String)
   378   // FIXME simplify signature
   375   { session_actor !? Init_Node(name, master_dir, header, text) }
   379   def init_node(name: String, master_dir: String,
   376 
   380     header: Document.Node_Header, perspective: Text.Perspective, text: String)
   377   def edit_node(name: String, master_dir: String, header: Document.Node_Header, edits: List[Text.Edit])
   381   { session_actor !? Init_Node(name, master_dir, header, perspective, text) }
   378   { session_actor !? Edit_Node(name, master_dir, header, edits) }
   382 
       
   383   // FIXME simplify signature
       
   384   def edit_node(name: String, master_dir: String, header: Document.Node_Header,
       
   385     perspective: Text.Perspective, edits: List[Text.Edit])
       
   386   { session_actor !? Edit_Node(name, master_dir, header, perspective, edits) }
   379 }
   387 }