From 1000e741830ccf4eadf709ef79894e86ef1172dc Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Thu, 25 Sep 2025 06:34:08 +0100 Subject: [PATCH] pass failing test for 'dj' motion through a different startLine calculation depending on whether cursor is already on a newline or not --- fcore/normal-mode/make-normal-delete.sml | 12 ++++++++++-- test/normal-delete.sml | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/fcore/normal-mode/make-normal-delete.sml b/fcore/normal-mode/make-normal-delete.sml index fdf1bc4..a8d7209 100644 --- a/fcore/normal-mode/make-normal-delete.sml +++ b/fcore/normal-mode/make-normal-delete.sml @@ -391,7 +391,11 @@ struct val startIdx = Cursor.vi0 (buffer, cursorIdx) val buffer = LineGap.goToIdx (startIdx, buffer) - val startLine = LineGap.idxToLineNumber (cursorIdx + 1, buffer) + val startLine = + if Cursor.isCursorAtStartOfLine (buffer, startIdx) then + LineGap.idxToLineNumber (startIdx, buffer) + else + LineGap.idxToLineNumber (startIdx + 1, buffer) val endLine = startLine + count val buffer = LineGap.goToLine (endLine, buffer) @@ -417,7 +421,11 @@ struct val startIdx = Cursor.vi0 (buffer, cursorIdx) val buffer = LineGap.goToIdx (startIdx, buffer) - val startLine = LineGap.idxToLineNumber (cursorIdx + 1, buffer) + val startLine = + if Cursor.isCursorAtStartOfLine (buffer, startIdx) then + LineGap.idxToLineNumber (startIdx, buffer) + else + LineGap.idxToLineNumber (startIdx + 1, buffer) val endLine = startLine + count + 1 val buffer = LineGap.goToLine (endLine, buffer) diff --git a/test/normal-delete.sml b/test/normal-delete.sml index d2c5896..5571047 100644 --- a/test/normal-delete.sml +++ b/test/normal-delete.sml @@ -439,7 +439,7 @@ struct , test "deletes two lines when cursor is on a newline" (fn _ => let (* arrange *) - val originalString = "\nhello\nworld\ntrello\brillo\n" + val originalString = "\nhello\nworld\ntrello\nbrillo\n" val originalIdx = 0 val app = TestUtils.init originalString