src/Tools/jEdit/src/jedit/document_model.scala
changeset 34827 69852bd3c4c4
parent 34825 7f72547f9b12
child 34828 c2308b317244
equal deleted inserted replaced
34826:6b38fc0b3406 34827:69852bd3c4c4
    58 {
    58 {
    59   /* changes vs. edits */
    59   /* changes vs. edits */
    60 
    60 
    61   private val document_0 = session.begin_document(buffer.getName)
    61   private val document_0 = session.begin_document(buffer.getName)
    62 
    62 
    63   private val change_0 = new Change(document_0.id, None, Nil, Future.value(document_0, Nil))
    63   private val change_0 = new Change(None, Nil, Future.value(document_0, Nil))
    64   private var _changes = List(change_0)   // owned by Swing thread
    64   private var _changes = List(change_0)   // owned by Swing thread
    65   def changes = _changes
    65   def changes = _changes
    66   private var current_change = change_0
    66   private var current_change = change_0
    67 
    67 
    68   private val edits = new mutable.ListBuffer[Edit]   // owned by Swing thread
    68   private val edits = new mutable.ListBuffer[Edit]   // owned by Swing thread
    74       val change1 = current_change
    74       val change1 = current_change
    75       val result: Future[Document.Result] = Future.fork {
    75       val result: Future[Document.Result] = Future.fork {
    76         val old_doc = change1.document
    76         val old_doc = change1.document
    77         Document.text_edits(session, old_doc, new_id, eds)
    77         Document.text_edits(session, old_doc, new_id, eds)
    78       }
    78       }
    79       val change2 = new Change(new_id, Some(change1), eds, result)
    79       val change2 = new Change(Some(change1), eds, result)
    80       _changes ::= change2
    80       _changes ::= change2
    81       session.input(change2)
    81       session.input(change2)
    82       current_change = change2
    82       current_change = change2
    83       edits.clear
    83       edits.clear
    84     }
    84     }
   117 
   117 
   118 
   118 
   119   /* transforming offsets */
   119   /* transforming offsets */
   120 
   120 
   121   private def changes_from(doc: Document): List[Edit] =
   121   private def changes_from(doc: Document): List[Edit] =
   122     List.flatten(current_change.ancestors(_.id == doc.id).reverse.map(_.edits)) :::
   122     List.flatten(current_change.ancestors(_.document.id == doc.id).reverse.map(_.edits)) :::
   123       edits.toList
   123       edits.toList
   124 
   124 
   125   def from_current(doc: Document, offset: Int): Int =
   125   def from_current(doc: Document, offset: Int): Int =
   126     (offset /: changes_from(doc).reverse) ((i, change) => change before i)
   126     (offset /: changes_from(doc).reverse) ((i, change) => change before i)
   127 
   127