From 737e8695e72b4984e8cc78b7d667cf86528c1b74 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Sat, 13 Sep 2025 04:55:27 +0100 Subject: [PATCH] fix bugs in helper functions for 'LineGap.getLineNumberOfIdx'. Main bug was that we were passing 'curLine' to 'getLineNumberRight' twice, instead of first passing 'curIdx' and then 'curLine' afterwards. --- src/line_gap.sml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/line_gap.sml b/src/line_gap.sml index c1054a5..25bf9fd 100644 --- a/src/line_gap.sml +++ b/src/line_gap.sml @@ -2663,10 +2663,10 @@ struct else let val prevLine = curLine - Vector.length lhd - val relativeIdx = findIdx - prevIdx - val relativeLine = binSearch (relativeIdx, lhd) + val relativeIdx = findIdx - prevIdx - 1 + val relativeLine = binSearch (relativeIdx, lhd) + 1 in - if relativeLine < 0 then prevLine else prevLine + relativeLine + prevLine + relativeLine end else let val prevLine = curLine - Vector.length lhd @@ -2688,10 +2688,10 @@ struct curLine else let - val relativeIdx = findIdx - curIdx - val relativeLine = binSearch (relativeIdx, lhd) + val relativeIdx = findIdx - curIdx - 1 + val relativeLine = binSearch (relativeIdx, lhd) + 1 in - if relativeLine < 0 then curLine else curLine + relativeLine + curLine + relativeLine end else let val nextLine = curLine + Vector.length lhd @@ -2713,8 +2713,10 @@ struct in if findIdx < curIdx then getLineNumberLeft (findIdx, curIdx, curLine, leftStrings, leftLines) + else if findIdx > curIdx then + getLineNumberRight (findIdx, curIdx, curLine, rightStrings, rightLines) else - getLineNumberRight (findIdx, curLine, curLine, rightStrings, rightLines) + curLine end (* TEST CODE *)