--- a/src/Pure/PIDE/document.scala Fri Jun 17 14:35:24 2011 +0200
+++ b/src/Pure/PIDE/document.scala Fri Jun 17 23:18:22 2011 +0200
@@ -307,20 +307,8 @@
def convert(offset: Text.Offset) = (offset /: edits)((i, edit) => edit.convert(i))
def revert(offset: Text.Offset) = (offset /: reverse_edits)((i, edit) => edit.revert(i))
-
- def convert(range: Text.Range): Text.Range =
- try { if (edits.isEmpty) range else range.map(convert(_)) }
- catch { // FIXME tmp
- case e: IllegalArgumentException =>
- System.err.println((true, range, edits)); throw(e)
- }
-
- def revert(range: Text.Range): Text.Range =
- try { if (edits.isEmpty) range else range.map(revert(_)) }
- catch { // FIXME tmp
- case e: IllegalArgumentException =>
- System.err.println((false, range, reverse_edits)); throw(e)
- }
+ def convert(range: Text.Range) = (range /: edits)((r, edit) => edit.convert(r))
+ def revert(range: Text.Range) = (range /: reverse_edits)((r, edit) => edit.revert(r))
def select_markup[A](range: Text.Range)(result: Markup_Tree.Select[A])
: Stream[Text.Info[Option[A]]] =
--- a/src/Pure/PIDE/text.scala Fri Jun 17 14:35:24 2011 +0200
+++ b/src/Pure/PIDE/text.scala Fri Jun 17 23:18:22 2011 +0200
@@ -25,7 +25,8 @@
sealed case class Range(val start: Offset, val stop: Offset)
{
// denotation: {start} Un {i. start < i & i < stop}
- require(start <= stop)
+ if (start > stop)
+ error("Bad range: [" + start.toString + ":" + stop.toString + "]")
override def toString = "[" + start.toString + ":" + stop.toString + "]"
@@ -71,11 +72,13 @@
private def transform(do_insert: Boolean, i: Offset): Offset =
if (i < start) i
- else if (is_insert == do_insert) i + text.length
+ else if (do_insert) i + text.length
else (i - text.length) max start
- def convert(i: Offset): Offset = transform(true, i)
- def revert(i: Offset): Offset = transform(false, i)
+ def convert(i: Offset): Offset = transform(is_insert, i)
+ def revert(i: Offset): Offset = transform(!is_insert, i)
+ def convert(range: Range): Range = range.map(convert)
+ def revert(range: Range): Range = range.map(revert)
/* edit strings */