From fc76bed81e2c25d859deec8d3ed57486fa55a60c Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 29 Mar 2012 11:46:56 -0700 Subject: [PATCH] x/$/ places cursors at end of lines in current selection Editor addSelectionForBufferRange no longer attempts to recycle an existing empty selection, because this was interfering with x selecting zero-width matches. It always adds a new selection, and tools must take care to use it correctly. --- spec/atom/command-interpreter-spec.coffee | 11 +++++++++++ .../command-interpreter/select-all-matches.coffee | 3 ++- src/atom/composite-selection.coffee | 7 +------ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/spec/atom/command-interpreter-spec.coffee b/spec/atom/command-interpreter-spec.coffee index 2311be2df..7a912c3ca 100644 --- a/spec/atom/command-interpreter-spec.coffee +++ b/spec/atom/command-interpreter-spec.coffee @@ -123,6 +123,17 @@ describe "CommandInterpreter", -> expect(selections[2].getBufferRange()).toEqual [[6,34], [6,41]] expect(selections[3].getBufferRange()).toEqual [[6,56], [6,63]] + describe "when matching /$/", -> + it "matches the end of each line in the selected region", -> + interpreter.eval(editor, '6,8 x/$/') + + cursors = editor.getCursors() + expect(cursors.length).toBe 3 + + expect(cursors[0].getBufferPosition()).toEqual [5, 30] + expect(cursors[1].getBufferPosition()).toEqual [6, 65] + expect(cursors[2].getBufferPosition()).toEqual [7, 5] + it "loops through current selections and selects text matching the regex", -> editor.setSelectionBufferRange [[3,0], [3,62]] editor.addSelectionForBufferRange [[6,0], [6,65]] diff --git a/src/atom/command-interpreter/select-all-matches.coffee b/src/atom/command-interpreter/select-all-matches.coffee index b1d246cd5..3bc28f2e6 100644 --- a/src/atom/command-interpreter/select-all-matches.coffee +++ b/src/atom/command-interpreter/select-all-matches.coffee @@ -15,4 +15,5 @@ class SelectAllMatches extends Command rangesToSelect.push(range) editor.clearSelections() - editor.addSelectionForBufferRange(range) for range in rangesToSelect + editor.setSelectionBufferRange(rangesToSelect[0]) + editor.addSelectionForBufferRange(range) for range in rangesToSelect[1..] diff --git a/src/atom/composite-selection.coffee b/src/atom/composite-selection.coffee index 938c1c0ef..19f1c8979 100644 --- a/src/atom/composite-selection.coffee +++ b/src/atom/composite-selection.coffee @@ -30,12 +30,7 @@ class CompositeSeleciton @editor.lines.append(selection) addSelectionForBufferRange: (bufferRange, options) -> - selections = @getSelections() - cursor = if selections.length == 1 and selections[0].isEmpty() - selections[0].cursor - else - @editor.compositeCursor.addCursor() - + cursor = @editor.compositeCursor.addCursor() @selectionForCursor(cursor).setBufferRange(bufferRange, options) removeSelectionForCursor: (cursor) ->