src/Pure/PIDE/text.scala
changeset 46712 8650d9a95736
parent 46576 ae9286f64574
child 47542 26d0a76fef0a
equal deleted inserted replaced
46711:f745bcc4a1e5 46712:8650d9a95736
    96       ship(None)
    96       ship(None)
    97       new Perspective(result.toList)
    97       new Perspective(result.toList)
    98     }
    98     }
    99   }
    99   }
   100 
   100 
   101   class Perspective private(val ranges: List[Range]) // visible text partitioning in canonical order
   101   final class Perspective private(
       
   102     val ranges: List[Range]) // visible text partitioning in canonical order
   102   {
   103   {
   103     def is_empty: Boolean = ranges.isEmpty
   104     def is_empty: Boolean = ranges.isEmpty
   104     def range: Range =
   105     def range: Range =
   105       if (is_empty) Range(0)
   106       if (is_empty) Range(0)
   106       else Range(ranges.head.start, ranges.last.stop)
   107       else Range(ranges.head.start, ranges.last.stop)
   132   {
   133   {
   133     def insert(start: Offset, text: String): Edit = new Edit(true, start, text)
   134     def insert(start: Offset, text: String): Edit = new Edit(true, start, text)
   134     def remove(start: Offset, text: String): Edit = new Edit(false, start, text)
   135     def remove(start: Offset, text: String): Edit = new Edit(false, start, text)
   135   }
   136   }
   136 
   137 
   137   class Edit private(val is_insert: Boolean, val start: Offset, val text: String)
   138   final class Edit private(val is_insert: Boolean, val start: Offset, val text: String)
   138   {
   139   {
   139     override def toString =
   140     override def toString =
   140       (if (is_insert) "Insert(" else "Remove(") + (start, text).toString + ")"
   141       (if (is_insert) "Insert(" else "Remove(") + (start, text).toString + ")"
   141 
   142 
   142 
   143