src/Tools/jEdit/src/document_model.scala
changeset 59078 cf255dc2b48f
parent 59077 7e0d3da6e6d8
child 59079 12a689755c3d
equal deleted inserted replaced
59077:7e0d3da6e6d8 59078:cf255dc2b48f
    13 
    13 
    14 import scala.collection.mutable
    14 import scala.collection.mutable
    15 
    15 
    16 import org.gjt.sp.jedit.jEdit
    16 import org.gjt.sp.jedit.jEdit
    17 import org.gjt.sp.jedit.Buffer
    17 import org.gjt.sp.jedit.Buffer
    18 import org.gjt.sp.jedit.buffer.{BufferAdapter, BufferListener, JEditBuffer}
    18 import org.gjt.sp.jedit.buffer.{BufferAdapter, BufferListener, JEditBuffer, LineManager}
    19 
    19 
    20 
    20 
    21 object Document_Model
    21 object Document_Model
    22 {
    22 {
    23   /* document model of buffer */
    23   /* document model of buffer */
   282         pending_edits.edit(false, Text.Edit.remove(offset, buffer.getText(offset, removed_length)))
   282         pending_edits.edit(false, Text.Edit.remove(offset, buffer.getText(offset, removed_length)))
   283     }
   283     }
   284   }
   284   }
   285 
   285 
   286 
   286 
   287   /* activation */
   287   /* syntax */
   288 
   288 
   289   private def refresh_token_marker()
   289   def syntax_changed()
       
   290   {
       
   291     Untyped.get(buffer, "lineMgr").asInstanceOf[LineManager].setFirstInvalidLineContext(0)
       
   292     for (text_area <- JEdit_Lib.jedit_text_areas(buffer)) {
       
   293       val c = Class.forName("org.gjt.sp.jedit.textarea.TextArea")
       
   294       val m = c.getDeclaredMethod("foldStructureChanged")
       
   295       m.setAccessible(true)
       
   296       m.invoke(text_area)
       
   297     }
       
   298   }
       
   299 
       
   300   private def init_token_marker()
   290   {
   301   {
   291     Isabelle.buffer_token_marker(buffer) match {
   302     Isabelle.buffer_token_marker(buffer) match {
   292       case Some(marker) if marker != buffer.getTokenMarker =>
   303       case Some(marker) if marker != buffer.getTokenMarker =>
   293         buffer.setTokenMarker(jEdit.getMode("text").getTokenMarker)
       
   294         buffer.setTokenMarker(marker)
   304         buffer.setTokenMarker(marker)
       
   305         syntax_changed()
   295       case _ =>
   306       case _ =>
   296     }
   307     }
   297   }
   308   }
       
   309 
       
   310 
       
   311   /* activation */
   298 
   312 
   299   private def activate()
   313   private def activate()
   300   {
   314   {
   301     pending_edits.edit(true, Text.Edit.insert(0, JEdit_Lib.buffer_text(buffer)))
   315     pending_edits.edit(true, Text.Edit.insert(0, JEdit_Lib.buffer_text(buffer)))
   302     buffer.addBufferListener(buffer_listener)
   316     buffer.addBufferListener(buffer_listener)
   303     refresh_token_marker()
   317     init_token_marker()
   304   }
   318   }
   305 
   319 
   306   private def deactivate()
   320   private def deactivate()
   307   {
   321   {
   308     buffer.removeBufferListener(buffer_listener)
   322     buffer.removeBufferListener(buffer_listener)
   309     refresh_token_marker()
   323     init_token_marker()
   310   }
   324   }
   311 }
   325 }