src/Tools/jEdit/src/proofdocument/change.scala
author wenzelm
Tue, 05 Jan 2010 18:23:39 +0100
changeset 34838 08a72dc4868e
parent 34833 683ddf358698
child 34853 32b49207ca20
permissions -rw-r--r--
use Text_Edit provided by Isabelle;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
     1
/*
34703
ff037c17332a minor tuning;
wenzelm
parents: 34695
diff changeset
     2
 * Changes of plain text
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
     3
 *
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
     4
 * @author Fabian Immler, TU Munich
34838
08a72dc4868e use Text_Edit provided by Isabelle;
wenzelm
parents: 34833
diff changeset
     5
 * @author Makarius
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
     6
 */
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
     7
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
     8
package isabelle.proofdocument
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
     9
34703
ff037c17332a minor tuning;
wenzelm
parents: 34695
diff changeset
    10
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
    11
class Change(
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
    12
  val parent: Option[Change],
34838
08a72dc4868e use Text_Edit provided by Isabelle;
wenzelm
parents: 34833
diff changeset
    13
  val edits: List[Text_Edit],
34833
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    14
  val id: Isar_Document.Document_ID,
34824
ac35eee85f5c renamed current_document to recent_document (might be a bit older than current_change);
wenzelm
parents: 34759
diff changeset
    15
  val result: Future[Document.Result])
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
    16
{
34833
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    17
  def ancestors: Iterator[Change] = new Iterator[Change]
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    18
  {
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    19
    private var state: Option[Change] = Some(Change.this)
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    20
    def hasNext = state.isDefined
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    21
    def next =
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    22
      state match {
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    23
        case Some(change) => state = change.parent; change
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    24
        case None => throw new NoSuchElementException("next on empty iterator")
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    25
      }
683ddf358698 recovered explicit Changed.id (copy of future document) -- avoids premature joining of result;
wenzelm
parents: 34827
diff changeset
    26
  }
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
    27
34825
7f72547f9b12 use isabelle.Future;
wenzelm
parents: 34824
diff changeset
    28
  def document: Document = result.join._1
7f72547f9b12 use isabelle.Future;
wenzelm
parents: 34824
diff changeset
    29
  def document_edits: List[Document.Structure_Edit] = result.join._2
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents:
diff changeset
    30
}