From bd58834e7d1589be4ba6174db1e227f68212f056 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 5 Apr 2013 12:15:21 -0600 Subject: [PATCH] Merge goal ranges when merging selections --- spec/app/edit-session-spec.coffee | 9 ++++++++- src/app/selection.coffee | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/spec/app/edit-session-spec.coffee b/spec/app/edit-session-spec.coffee index c1f791dc7..e5bd91b82 100644 --- a/spec/app/edit-session-spec.coffee +++ b/spec/app/edit-session-spec.coffee @@ -748,11 +748,18 @@ describe "EditSession", -> editSession.addSelectionBelow() editSession.selectLeft() editSession.addSelectionBelow() + expect(editSession.getSelectedBufferRanges()).toEqual [ + [[3, 22], [3, 37]] + [[4, 22], [4, 29]] + [[5, 22], [5, 28]] + ] + + # goal range from previous add selection is honored next time editSession.addSelectionBelow() expect(editSession.getSelectedBufferRanges()).toEqual [ [[3, 22], [3, 37]] [[4, 22], [4, 29]] - [[5, 22], [5, 29]] + [[5, 22], [5, 30]] # select to end of line 5 because line 4's goal range was reset by line 3 previously [[6, 22], [6, 28]] ] diff --git a/src/app/selection.coffee b/src/app/selection.coffee index 844ee0242..5d6e06f2e 100644 --- a/src/app/selection.coffee +++ b/src/app/selection.coffee @@ -394,6 +394,10 @@ class Selection merge: (otherSelection, options) -> @setBufferRange(@getBufferRange().union(otherSelection.getBufferRange()), options) + if @goalBufferRange and otherSelection.goalBufferRange + @goalBufferRange = @goalBufferRange.union(otherSelection.goalBufferRange) + else if otherSelection.goalBufferRange + @goalBufferRange = otherSelection.goalBufferRange otherSelection.destroy() _.extend Selection.prototype, EventEmitter