Change: eliminated id, which is merely the resulting document id and is only required in joined state anyway;
authorwenzelm
Thu, 12 Aug 2010 16:01:44 +0200
changeset 38364 827b90f18ff4
parent 38363 af7f41a8a0a8
child 38365 7c6254a9c432
Change: eliminated id, which is merely the resulting document id and is only required in joined state anyway; Document.edit_text: create new document id here;
src/Pure/PIDE/document.scala
src/Pure/System/session.scala
--- a/src/Pure/PIDE/document.scala	Thu Aug 12 15:19:11 2010 +0200
+++ b/src/Pure/PIDE/document.scala	Thu Aug 12 16:01:44 2010 +0200
@@ -107,11 +107,10 @@
 
   object Change
   {
-    val init = new Change(NO_ID, None, Nil, Future.value(Nil, Document.init))
+    val init = new Change(None, Nil, Future.value(Nil, Document.init))
   }
 
   class Change(
-    val id: Version_ID,
     val parent: Option[Change],
     val edits: List[Node_Text_Edit],
     val result: Future[(List[Edit[Command]], Document)])
@@ -156,8 +155,8 @@
 
   /** editing **/
 
-  def text_edits(session: Session, old_doc: Document, new_id: Version_ID,
-      edits: List[Node_Text_Edit]): (List[Edit[Command]], Document) =
+  def text_edits(session: Session, old_doc: Document, edits: List[Node_Text_Edit])
+      : (List[Edit[Command]], Document) =
   {
     require(old_doc.assignment.is_finished)
 
@@ -258,7 +257,7 @@
         nodes += (name -> new Node(commands2))
         former_assignment --= removed_commands
       }
-      (doc_edits.toList, new Document(new_id, nodes, former_assignment))
+      (doc_edits.toList, new Document(session.create_id(), nodes, former_assignment))
     }
   }
 }
--- a/src/Pure/System/session.scala	Thu Aug 12 15:19:11 2010 +0200
+++ b/src/Pure/System/session.scala	Thu Aug 12 16:01:44 2010 +0200
@@ -125,7 +125,7 @@
             (name -> Some(chs))
         }
       register_document(doc)
-      prover.edit_document(change.parent.get.id, doc.id, id_edits)
+      prover.edit_document(change.parent.get.join_document.id, doc.id, id_edits)
     }
     //}}}
 
@@ -328,14 +328,13 @@
         react {
           case Edit_Document(edits) =>
             val old_change = history
-            val new_id = create_id()
             val result: isabelle.Future[(List[Document.Edit[Command]], Document)] =
               isabelle.Future.fork {
                 val old_doc = old_change.join_document
                 old_doc.await_assignment
-                Document.text_edits(Session.this, old_doc, new_id, edits)
+                Document.text_edits(Session.this, old_doc, edits)
               }
-            val new_change = new Document.Change(new_id, Some(old_change), edits, result)
+            val new_change = new Document.Change(Some(old_change), edits, result)
             history = new_change
             new_change.result.map(_ => session_actor ! new_change)
             reply(())