From ca49d0714c0ded1ccad3ff6775fff2792981ce30 Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Tue, 16 Apr 2013 14:06:34 -0700 Subject: [PATCH] Restore previous selections after tailing newlines are added Closes #496 --- src/packages/whitespace/lib/whitespace.coffee | 7 +++++-- src/packages/whitespace/spec/whitespace-spec.coffee | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) 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])