From 95393e1e136958cfbbea14d2c7f2fe97f9ea4c3e Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Wed, 24 Sep 2025 09:02:33 +0100 Subject: [PATCH] amand MakeNormalDelete.removeChr function (which is used by 'x' and 'dh' commands) to pass test, which checks that cursorIdx does not fall on newline-after-chr after deletion --- fcore/normal-mode/make-normal-delete.sml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fcore/normal-mode/make-normal-delete.sml b/fcore/normal-mode/make-normal-delete.sml index 237a75d..5eb7667 100644 --- a/fcore/normal-mode/make-normal-delete.sml +++ b/fcore/normal-mode/make-normal-delete.sml @@ -62,9 +62,12 @@ struct val lineEndAfterDelete = Cursor.viDlr (buffer, lineStart, 1) val cursorIdx = Int.min (lineEndAfterDelete, cursorIdx) + + val buffer = LineGap.goToIdx (cursorIdx, buffer) val cursorIdx = - if cursorIdx >= #textLength buffer - 2 then - Int.max (0, #textLength buffer - 2) + if Cursor.isOnNewlineAfterChr (buffer, cursorIdx) then + if cursorIdx < #textLength buffer - 1 then cursorIdx + 1 + else cursorIdx - 1 else cursorIdx in