305 try { the_exec_state(the_assignment(version).get_finished.getOrElse(command, fail)) } |
305 try { the_exec_state(the_assignment(version).get_finished.getOrElse(command, fail)) } |
306 catch { case _: State.Fail => command.empty_state } |
306 catch { case _: State.Fail => command.empty_state } |
307 |
307 |
308 def convert(offset: Text.Offset) = (offset /: edits)((i, edit) => edit.convert(i)) |
308 def convert(offset: Text.Offset) = (offset /: edits)((i, edit) => edit.convert(i)) |
309 def revert(offset: Text.Offset) = (offset /: reverse_edits)((i, edit) => edit.revert(i)) |
309 def revert(offset: Text.Offset) = (offset /: reverse_edits)((i, edit) => edit.revert(i)) |
310 |
310 def convert(range: Text.Range) = (range /: edits)((r, edit) => edit.convert(r)) |
311 def convert(range: Text.Range): Text.Range = |
311 def revert(range: Text.Range) = (range /: reverse_edits)((r, edit) => edit.revert(r)) |
312 try { if (edits.isEmpty) range else range.map(convert(_)) } |
|
313 catch { // FIXME tmp |
|
314 case e: IllegalArgumentException => |
|
315 System.err.println((true, range, edits)); throw(e) |
|
316 } |
|
317 |
|
318 def revert(range: Text.Range): Text.Range = |
|
319 try { if (edits.isEmpty) range else range.map(revert(_)) } |
|
320 catch { // FIXME tmp |
|
321 case e: IllegalArgumentException => |
|
322 System.err.println((false, range, reverse_edits)); throw(e) |
|
323 } |
|
324 |
312 |
325 def select_markup[A](range: Text.Range)(result: Markup_Tree.Select[A]) |
313 def select_markup[A](range: Text.Range)(result: Markup_Tree.Select[A]) |
326 : Stream[Text.Info[Option[A]]] = |
314 : Stream[Text.Info[Option[A]]] = |
327 { |
315 { |
328 val former_range = revert(range) |
316 val former_range = revert(range) |