From 999a35cb8be3112273c1efb9d23be62e211ec305 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Tue, 14 Oct 2025 12:31:18 +0100 Subject: [PATCH] fix failing test for 'dge' motion: if the deletion takes us to a newliune that follows a non-newline-character, we should decrement the cursor to be on the non-newline-character --- fcore/normal-mode/make-normal-delete.sml | 22 ++++++++++++++++++++-- temp.txt | 2 +- test/normal-delete.sml | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/fcore/normal-mode/make-normal-delete.sml b/fcore/normal-mode/make-normal-delete.sml index 86ccadb..2995250 100644 --- a/fcore/normal-mode/make-normal-delete.sml +++ b/fcore/normal-mode/make-normal-delete.sml @@ -383,8 +383,17 @@ struct val low = Cursor.endOfPrevWord (buffer, cursorIdx, count) val length = (cursorIdx + 1) - low + + val buffer = LineGap.goToIdx (cursorIdx + 1, buffer) + val initialMsg = Fn.initMsgs (low, length, buffer) + val buffer = LineGap.delete (low, length, buffer) + + val buffer = LineGap.goToIdx (low, buffer) + val newCursorIdx = + if Cursor.isOnNewlineAfterChr (buffer, low) then Int.max (low - 1, 0) + else low in - deleteAndFinish (app, low, length, buffer, time) + finishAfterDeletingBuffer (app, newCursorIdx, buffer, time, initialMsg) end fun deleteToEndOfPrevWORD (app: app_type, count, time) = @@ -398,8 +407,17 @@ struct val low = Cursor.endOfPrevWORD (buffer, cursorIdx, count) val length = (cursorIdx + 1) - low + + val buffer = LineGap.goToIdx (cursorIdx + 1, buffer) + val initialMsg = Fn.initMsgs (low, length, buffer) + val buffer = LineGap.delete (low, length, buffer) + + val buffer = LineGap.goToIdx (low, buffer) + val newCursorIdx = + if Cursor.isOnNewlineAfterChr (buffer, low) then Int.max (low - 1, 0) + else low in - deleteAndFinish (app, low, length, buffer, time) + finishAfterDeletingBuffer (app, newCursorIdx, buffer, time, initialMsg) end fun deleteToEndOfLine (app: app_type, time) = diff --git a/temp.txt b/temp.txt index c90c515..3b18e51 100644 --- a/temp.txt +++ b/temp.txt @@ -1 +1 @@ -hello world again +hello world diff --git a/test/normal-delete.sml b/test/normal-delete.sml index dd8a7eb..b5699ab 100644 --- a/test/normal-delete.sml +++ b/test/normal-delete.sml @@ -2387,7 +2387,7 @@ struct (* assert *) val actualString = LineGap.toString buffer - val expectedString = "hell world\n" + val expectedString = "hell\n" val expectedCursorIdx = String.size expectedString - 2 in Expect.isTrue