additional progress with delete

This commit is contained in:
2024-07-14 16:39:44 +01:00
parent 30cee61f94
commit cf18916d00

View File

@@ -1609,17 +1609,61 @@ struct
)
end
else if prevIdx < start then
(* Equivalent in gap_buffer.sml is line 350. *)
(* We want to delete in the middle of lefStringsHd. *)
(* We want to delete in the middle of leftStringsHd.
* We also have to delete in the middle of leftLinesHd in order to
* do this. *)
let
val sub1Length = start - prevIdx
val sub1 = String.substring (leftStringsHd, 0, sub1Length)
val sub2Start = finish - prevIdx
val sub2 = String.substring (leftStringsHd, sub2Start,
String.size leftStringsHd - sub2Start)
val sub2 = String.substring
( leftStringsHd
, sub2Start
, String.size leftStringsHd - sub2Start
)
val sub1Lines =
let
val midpoint = binSearch (String.size sub1 - 1, leftLinesHd)
in
if midpoint >= 0 then
let
val slice = VectorSlice.slice
(leftLinesHd, 0, SOME (midpoint + 1))
in
VectorSlice.vector slice
end
else
Vector.fromList []
end
val sub2Lines =
let
val midpoint = forwardBinSearch (sub2Start, leftLinesHd)
in
if midpoint < Vector.length leftLinesHd then
Vector.tabulate
( Vector.length leftLinesHd - midpoint
, fn idx =>
Vector.sub (leftLinesHd, idx + midpoint) - sub2Start
)
else
Vector.fromList []
end
in
0
{ idx = prevIdx + String.size sub1
, line =
(curLine - Vector.length leftLinesHd)
+ Vector.length sub1Lines
, leftStrings = sub1 :: leftStringsTl
, leftLines = sub1Lines :: leftLinesTl
, rightStrings = sub2 :: rightStrings
, rightLines = sub2Lines :: rightLines
}
end
else
(* Equivalent in gap_buffer.sml is line 365. *)
0
else
0
end