src/Tools/jEdit/src/jedit/document_model.scala
changeset 34838 08a72dc4868e
parent 34835 67733fd0e3fa
child 34840 6c5560d48561
equal deleted inserted replaced
34837:aa73039d5d14 34838:08a72dc4868e
     6  */
     6  */
     7 
     7 
     8 package isabelle.jedit
     8 package isabelle.jedit
     9 
     9 
    10 
    10 
    11 import isabelle.proofdocument.{Change, Command, Edit, Insert, Remove, Document, Session}
    11 import isabelle.proofdocument.{Change, Command, Document, Session}
    12 
    12 
    13 import scala.actors.Actor, Actor._
    13 import scala.actors.Actor, Actor._
    14 import scala.collection.mutable
    14 import scala.collection.mutable
    15 
    15 
    16 import org.gjt.sp.jedit.Buffer
    16 import org.gjt.sp.jedit.Buffer
    75   }
    75   }
    76 
    76 
    77 
    77 
    78   /* transforming offsets */
    78   /* transforming offsets */
    79 
    79 
    80   private def changes_from(doc: Document): List[Edit] =
    80   private def changes_from(doc: Document): List[Text_Edit] =
    81   {
    81   {
    82     Swing_Thread.assert()
    82     Swing_Thread.assert()
    83     (edits_buffer.toList /:
    83     (edits_buffer.toList /:
    84       current_change.ancestors.takeWhile(_.id != doc.id))((edits, change) => change.edits ::: edits)
    84       current_change.ancestors.takeWhile(_.id != doc.id))((edits, change) => change.edits ::: edits)
    85   }
    85   }
    97   }
    97   }
    98 
    98 
    99 
    99 
   100   /* text edits */
   100   /* text edits */
   101 
   101 
   102   private val edits_buffer = new mutable.ListBuffer[Edit]   // owned by Swing thread
   102   private val edits_buffer = new mutable.ListBuffer[Text_Edit]   // owned by Swing thread
   103 
   103 
   104   private val edits_delay = Swing_Thread.delay_last(300) {
   104   private val edits_delay = Swing_Thread.delay_last(300) {
   105     if (!edits_buffer.isEmpty) {
   105     if (!edits_buffer.isEmpty) {
   106       val edits = edits_buffer.toList
   106       val edits = edits_buffer.toList
   107       val change1 = current_change()
   107       val change1 = current_change()
   122   private val buffer_listener: BufferListener = new BufferAdapter
   122   private val buffer_listener: BufferListener = new BufferAdapter
   123   {
   123   {
   124     override def contentInserted(buffer: JEditBuffer,
   124     override def contentInserted(buffer: JEditBuffer,
   125       start_line: Int, offset: Int, num_lines: Int, length: Int)
   125       start_line: Int, offset: Int, num_lines: Int, length: Int)
   126     {
   126     {
   127       edits_buffer += Insert(offset, buffer.getText(offset, length))
   127       edits_buffer += Text_Edit.Insert(offset, buffer.getText(offset, length))
   128       edits_delay()
   128       edits_delay()
   129     }
   129     }
   130 
   130 
   131     override def preContentRemoved(buffer: JEditBuffer,
   131     override def preContentRemoved(buffer: JEditBuffer,
   132       start_line: Int, start: Int, num_lines: Int, removed_length: Int)
   132       start_line: Int, start: Int, num_lines: Int, removed_length: Int)
   133     {
   133     {
   134       edits_buffer += Remove(start, buffer.getText(start, removed_length))
   134       edits_buffer += Text_Edit.Remove(start, buffer.getText(start, removed_length))
   135       edits_delay()
   135       edits_delay()
   136     }
   136     }
   137   }
   137   }
   138 
   138 
   139 
   139 
   143   {
   143   {
   144     buffer.setTokenMarker(new Isabelle_Token_Marker(this))
   144     buffer.setTokenMarker(new Isabelle_Token_Marker(this))
   145     buffer.addBufferListener(buffer_listener)
   145     buffer.addBufferListener(buffer_listener)
   146     buffer.propertiesChanged()
   146     buffer.propertiesChanged()
   147 
   147 
   148     edits_buffer += Insert(0, buffer.getText(0, buffer.getLength))
   148     edits_buffer += Text_Edit.Insert(0, buffer.getText(0, buffer.getLength))
   149     edits_delay()
   149     edits_delay()
   150   }
   150   }
   151 
   151 
   152   def deactivate()
   152   def deactivate()
   153   {
   153   {