diff --git a/src/vs/editor/contrib/linesOperations/linesOperations.ts b/src/vs/editor/contrib/linesOperations/linesOperations.ts index 6fbd9de47dd541c6d56599ea5d41370d1ffb2deb..0e2e13b66b6e14bff6bb135a1c4253a2be97730b 100644 --- a/src/vs/editor/contrib/linesOperations/linesOperations.ts +++ b/src/vs/editor/contrib/linesOperations/linesOperations.ts @@ -595,9 +595,9 @@ export class JoinLinesAction extends EditorAction { let selection = reducedSelections[i]; let startLineNumber = selection.startLineNumber; let startColumn = 1; + let columnDeltaOffset = 0; let endLineNumber: number, - endColumn: number, - columnDeltaOffset: number; + endColumn: number; let selectionEndPositionOffset = model.getLineContent(selection.endLineNumber).length - selection.endColumn; diff --git a/src/vs/editor/contrib/linesOperations/test/linesOperations.test.ts b/src/vs/editor/contrib/linesOperations/test/linesOperations.test.ts index d7ed7bcbf60d159e229920333c527cad218b6f7e..ae01a2682eb91677fbc3189e5775e43cc223a22d 100644 --- a/src/vs/editor/contrib/linesOperations/test/linesOperations.test.ts +++ b/src/vs/editor/contrib/linesOperations/test/linesOperations.test.ts @@ -265,6 +265,23 @@ suite('Editor Contrib - Line Operations', () => { }); }); + test('#50471 Join lines at the end of document', function () { + withTestCodeEditor( + [ + 'hello', + 'world' + ], {}, (editor, cursor) => { + let model = editor.getModel(); + let joinLinesAction = new JoinLinesAction(); + + editor.setSelection(new Selection(2, 1, 2, 1)); + joinLinesAction.run(null, editor); + assert.equal(model.getLineContent(1), 'hello', '001'); + assert.equal(model.getLineContent(2), 'world', '002'); + assert.deepEqual(editor.getSelection().toString(), new Selection(2, 6, 2, 6).toString(), '003'); + }); + }); + test('should work in multi cursor mode', function () { withTestCodeEditor( [