additional functorisation progress

This commit is contained in:
2025-08-04 04:14:17 +01:00
parent 55e5778ff7
commit 895c286b4b

View File

@@ -826,35 +826,42 @@ struct
fun toNextChr (lineGap, cursorIdx, chr) = fun toNextChr (lineGap, cursorIdx, chr) =
nextChr (lineGap, cursorIdx, chr, startToNextChr) nextChr (lineGap, cursorIdx, chr, startToNextChr)
fun helpToPrevChr (strPos, str, absIdx, stl, ltl, origIdx, findChr) = structure ToPrevChr =
if strPos < 0 then MakeIfCharFolderPrev
case (stl, ltl) of (struct
(shd :: stl, lhd :: ltl) => type env = char
helpToPrevChr
(String.size shd - 1, shd, absIdx, stl, ltl, origIdx, findChr)
| (_, _) => origIdx
else if String.sub (str, strPos) = findChr then
absIdx
else
helpToPrevChr (strPos - 1, str, absIdx - 1, stl, ltl, origIdx, findChr)
fun startToPrevChr (shd, strIdx, absIdx, stl, ltl, findChr) = fun helpToPrevChr (strPos, str, absIdx, stl, origIdx, findChr) =
(* we want to start iterating from Prev char after strIdx *) if strPos < 0 then
if strIdx > 0 then case stl of
helpToPrevChr (strIdx - 1, shd, absIdx - 1, stl, ltl, absIdx, findChr) shd :: stl =>
else helpToPrevChr
case (stl, ltl) of (String.size shd - 1, shd, absIdx, stl, origIdx, findChr)
(stlhd :: stltl, ltlhd :: ltltl) => | [] => origIdx
helpToPrevChr else if String.sub (str, strPos) = findChr then
( String.size stlhd - 1 absIdx
, stlhd else
, absIdx - 1 helpToPrevChr (strPos - 1, str, absIdx - 1, stl, origIdx, findChr)
, stltl
, ltltl fun fStart (strIdx, shd, _, absIdx, stl, _, findChr) =
, absIdx (* we want to start iterating from Prev char after strIdx *)
, findChr if strIdx > 0 then
) helpToPrevChr (strIdx - 1, shd, absIdx - 1, stl, absIdx, findChr)
| (_, _) => (* tl is empty; return 0 for lineGap start *) 0 else
case stl of
stlhd :: stltl =>
helpToPrevChr
( String.size stlhd - 1
, stlhd
, absIdx - 1
, stltl
, absIdx
, findChr
)
| [] => (* tl is empty; return 0 for lineGap start *) 0
end)
val toPrevChr = ToPrevChr.foldPrev
fun helpTillPrevChr fun helpTillPrevChr
( strPos ( strPos
@@ -994,9 +1001,6 @@ struct
| (_, _) => cursorIdx | (_, _) => cursorIdx
end end
fun toPrevChr (lineGap, cursorIdx, chr) =
prevChr (lineGap, cursorIdx, chr, startToPrevChr)
fun tillPrevChr (lineGap, cursorIdx, chr) = fun tillPrevChr (lineGap, cursorIdx, chr) =
prevChr (lineGap, cursorIdx, chr, startTillPrevChr) prevChr (lineGap, cursorIdx, chr, startTillPrevChr)