fix(text-buffer): correct word deletion logic for trailing spaces (Ctrl+Backspace) (#131)

## Description
This fix resolves a bug where Ctrl+Backspace (hex 0x17) deletes the
entire line when the cursor is positioned after a trailing space.

## Problem
When the user has a line like "I want you to refactor my view " (with a
space at the end) and the cursor is after that space, Ctrl+Backspace
deletes the entire line instead of just removing the word "view".

## Solution
- Added a check to detect if the cursor is after spaces
- Modified the logic to delete only one space at a time in this case
- Added a unit test to verify this behavior

## Tests
All tests pass, including the new test that verifies the corrected
behavior.

---------

Signed-off-by: Alpha Diop <alphakhoss@gmail.com>
Co-authored-by: Thibault Sottiaux <tibo@openai.com>
This commit is contained in:
Alpha Diop
2025-04-16 23:25:08 +00:00
committed by GitHub
parent a39396d5c9
commit 6829a5a012
2 changed files with 28 additions and 7 deletions

View File

@@ -84,6 +84,15 @@ describe("TextBuffer wordwise navigation & deletion", () => {
expect(col).toBe(11);
});
test("deleteWordLeft after trailing space only deletes the last word, not the whole line", () => {
const tb = new TextBuffer("I want you to refactor my view ");
tb.move("end"); // Place caret after the space
tb.deleteWordLeft();
expect(tb.getText()).toBe("I want you to refactor my ");
const [, col] = tb.getCursor();
expect(col).toBe("I want you to refactor my ".length);
});
test("deleteWordLeft removes the previous word and positions the caret correctly", () => {
const tb = new TextBuffer("hello world");