fix bug in line_gap.sml: when we convert a line number to an absolute index and travel leftwards, make sure we continue travelling leftwards when the current node is at the correct line number but the line number does not start at this node.

This commit is contained in:
2026-02-07 03:04:49 +00:00
parent e7a08e27af
commit fd96032949

View File

@@ -3308,8 +3308,16 @@ struct
val prevIdx = curIdx - String.size shd
in
if findLine >= prevLine then
let val relativeLine = findLine - prevLine - 1
in Vector.sub (lhd, relativeLine) + prevIdx
let
val relativeLine = findLine - prevLine - 1
in
if relativeLine < 0 then
(* the line start is not at this node,
* so we need to continue going left
* to find what index the line start corresponds to *)
lineNumberToIdxLeft (findLine, prevIdx, prevLine, stl, ltl)
else
Vector.sub (lhd, relativeLine) + prevIdx
end
else
lineNumberToIdxLeft (findLine, prevIdx, prevLine, stl, ltl)