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