diff --git a/src/packages/whitespace/lib/whitespace.coffee b/src/packages/whitespace/lib/whitespace.coffee index f5c954ba5..a16f9877b 100644 --- a/src/packages/whitespace/lib/whitespace.coffee +++ b/src/packages/whitespace/lib/whitespace.coffee @@ -1,11 +1,12 @@ module.exports = activate: -> - rootView.eachBuffer (buffer) => @whitespaceBeforeSave(buffer) + rootView.eachEditSession (editSession) => @whitespaceBeforeSave(editSession) configDefaults: ensureSingleTrailingNewline: true - whitespaceBeforeSave: (buffer) -> + whitespaceBeforeSave: (editSession) -> + buffer = editSession.buffer buffer.on 'will-be-saved', -> buffer.transact -> buffer.scan /[ \t]+$/g, ({replace}) -> replace('') @@ -16,4 +17,6 @@ module.exports = while row and buffer.lineForRow(row) is '' buffer.deleteRow(row--) else + selectedBufferRanges = editSession.getSelectedBufferRanges() buffer.append('\n') + editSession.setSelectedBufferRanges(selectedBufferRanges) diff --git a/src/packages/whitespace/spec/whitespace-spec.coffee b/src/packages/whitespace/spec/whitespace-spec.coffee index 1a0e54f44..35fe6a8ee 100644 --- a/src/packages/whitespace/spec/whitespace-spec.coffee +++ b/src/packages/whitespace/spec/whitespace-spec.coffee @@ -79,3 +79,10 @@ describe "Whitespace", -> editor.insertText "no trailing newline" editor.getBuffer().save() expect(editor.getText()).toBe "no trailing newline" + + it "does not move the cursor when the new line is added", -> + editor.insertText "foo" + expect(editor.getCursorBufferPosition()).toEqual([0,3]) + editor.getBuffer().save() + expect(editor.getText()).toBe "foo\n" + expect(editor.getCursorBufferPosition()).toEqual([0,3])