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