more robust update_perspective, e.g. required after reload of buffer that is not at start position;
authorwenzelm
Sat, 07 Apr 2012 17:55:35 +0200
changeset 48268d760049b2d18
parent 48267 6a08fd7a6071
child 48269 a360406f1fcb
more robust update_perspective, e.g. required after reload of buffer that is not at start position;
src/Tools/jEdit/src/document_model.scala
     1.1 --- a/src/Tools/jEdit/src/document_model.scala	Sat Apr 07 17:49:20 2012 +0200
     1.2 +++ b/src/Tools/jEdit/src/document_model.scala	Sat Apr 07 17:55:35 2012 +0200
     1.3 @@ -95,7 +95,6 @@
     1.4    private object pending_edits  // owned by Swing thread
     1.5    {
     1.6      private val pending = new mutable.ListBuffer[Text.Edit]
     1.7 -    private var pending_perspective = false
     1.8      private var last_perspective: Text.Perspective = Text.Perspective.empty
     1.9  
    1.10      def snapshot(): List[Text.Edit] = pending.toList
    1.11 @@ -104,16 +103,12 @@
    1.12      {
    1.13        Swing_Thread.require()
    1.14  
    1.15 -      val new_perspective =
    1.16 -        if (pending_perspective) { pending_perspective = false; perspective() }
    1.17 -        else last_perspective
    1.18 -
    1.19 -      snapshot() match {
    1.20 -        case Nil if last_perspective == new_perspective =>
    1.21 -        case edits =>
    1.22 -          pending.clear
    1.23 -          last_perspective = new_perspective
    1.24 -          session.edit_node(name, node_header(), new_perspective, edits)
    1.25 +      val edits = snapshot()
    1.26 +      val new_perspective = perspective()
    1.27 +      if (!edits.isEmpty || last_perspective != new_perspective) {
    1.28 +        pending.clear
    1.29 +        last_perspective = new_perspective
    1.30 +        session.edit_node(name, node_header(), new_perspective, edits)
    1.31        }
    1.32      }
    1.33  
    1.34 @@ -129,7 +124,6 @@
    1.35  
    1.36      def update_perspective()
    1.37      {
    1.38 -      pending_perspective = true
    1.39        delay_flush(true)
    1.40      }
    1.41