diff --git a/src/line_gap.sml b/src/line_gap.sml index 4cf301d..418e409 100644 --- a/src/line_gap.sml +++ b/src/line_gap.sml @@ -39,6 +39,7 @@ sig val makeStringIterator: t -> string_iterator val moveIteratorToIdx: int * string_iterator -> string_iterator + val subIterator: int * string_iterator -> char (* for testing *) val verifyIndex: t -> unit @@ -3381,6 +3382,16 @@ struct else moveIteratorRight (findIdx, idx, leftStrings, rightStrings) + fun subIterator (findIdx, {idx, leftStrings, rightStrings}) = + if findIdx >= idx then + case rightStrings of + hd :: tl => subRight (findIdx, idx, hd, tl) + | [] => raise Fail "not found" + else + case leftStrings of + hd :: tl => subLeft (findIdx, idx, hd, tl) + | [] => raise Fail "not found" + (* TEST CODE *) local fun lineBreaksToString vec =