equal
deleted
inserted
replaced
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 |