Skip to content

Commit 6b09a95

Browse files
committed
trimming whitespace after deleting newline character + tests -- feature request microsoft#134898
1 parent 835e71c commit 6b09a95

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

src/vs/editor/common/cursor/cursorDeleteOperations.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,15 +177,16 @@ export class DeleteOperations {
177177
const endLineNumber = Math.max(startPosition.lineNumber, position.lineNumber);
178178
let startColumn = position.column;
179179
let endColumn = startPosition.column;
180-
if (startLineNumber == startPosition.lineNumber) {
180+
if (startLineNumber === startPosition.lineNumber) {
181181
//top down deletion
182182
startColumn = startPosition.column;
183183
endColumn = position.column;
184184
}
185185
let firstNonWhiteSpaceColumn = model.getLineFirstNonWhitespaceColumn(endLineNumber);
186186
let lastNonWhiteSpaceColumn = model.getLineLastNonWhitespaceColumn(startLineNumber);
187-
if (startLineNumber != endLineNumber && model.getLineContent(startLineNumber).length > 0) {
188-
//deleting new line character + trimming white space
187+
//deleting new line character + trimming white space
188+
if (startLineNumber !== endLineNumber && model.getLineContent(startLineNumber).length > 0) {
189+
//expand delete range to include extra white space (last non whitespace char to first non white char on following line)
189190
if (startColumn < lastNonWhiteSpaceColumn) {
190191
lastNonWhiteSpaceColumn = startColumn;
191192
}

src/vs/editor/test/browser/controller/cursor.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5570,6 +5570,30 @@ suite('Editor Controller', () => {
55705570
});
55715571
});
55725572

5573+
test('feature request - #134898: Trimming whitespace when deleting newline character', () => {
5574+
const model = createTextModel(
5575+
[
5576+
'Hello world!',
5577+
' ',
5578+
' another line'
5579+
].join('\n'),
5580+
undefined,
5581+
{
5582+
insertSpaces: false
5583+
},
5584+
);
5585+
withTestCodeEditor(model, {}, (editor, viewModel) => {
5586+
viewModel.setSelections('test', [new Selection(2, 5, 3, 1)]);
5587+
//when deleting middle empty line -- no text present so left spaces/tabs preserved
5588+
CoreEditingCommands.DeleteLeft.runEditorCommand(null, editor, null);
5589+
assert.strictEqual(model.getLineContent(2), ' another line');
5590+
//removes the extra white space in front of line 2 when deleting new line character
5591+
viewModel.setSelections('test', [new Selection(1, 13, 2, 1)]);
5592+
CoreEditingCommands.DeleteLeft.runEditorCommand(null, editor, null);
5593+
assert.strictEqual(model.getLineContent(1), 'Hello world!another line');
5594+
});
5595+
});
5596+
55735597
test('issue #78527 - does not close quote on odd count', () => {
55745598
usingCursor({
55755599
text: [

0 commit comments

Comments
 (0)