diff --git a/spec/app/edit-session-spec.coffee b/spec/app/edit-session-spec.coffee index 6092dd662..c1f791dc7 100644 --- a/spec/app/edit-session-spec.coffee +++ b/spec/app/edit-session-spec.coffee @@ -769,6 +769,22 @@ describe "EditSession", -> [[6, 36], [6, 36]] ] + it "skips empty lines when the column is non-zero", -> + editSession.setCursorBufferPosition([9, 4]) + editSession.addSelectionBelow() + expect(editSession.getSelectedBufferRanges()).toEqual [ + [[9, 4], [9, 4]] + [[11, 4], [11, 4]] + ] + + it "does not skip empty lines when the column is zero", -> + editSession.setCursorBufferPosition([9, 0]) + editSession.addSelectionBelow() + expect(editSession.getSelectedBufferRanges()).toEqual [ + [[9, 0], [9, 0]] + [[10, 0], [10, 0]] + ] + describe "when the cursor is moved while there is a selection", -> makeSelection = -> selection.setBufferRange [[1, 2], [1, 5]] diff --git a/src/app/selection.coffee b/src/app/selection.coffee index 6c37b2291..844ee0242 100644 --- a/src/app/selection.coffee +++ b/src/app/selection.coffee @@ -156,17 +156,18 @@ class Selection range = (@goalBufferRange ? @getBufferRange()).copy() nextRow = range.end.row + 1 - if range.isEmpty() - range.start.row = nextRow - range.end.row = nextRow + for row in [nextRow..@editSession.getLastBufferRow()] + range.start.row = row + range.end.row = row + clippedRange = @editSession.clipBufferRange(range) + + if range.isEmpty() + continue if range.end.column > 0 and clippedRange.end.column is 0 + else + continue if clippedRange.isEmpty() + @editSession.addSelectionForBufferRange(range, goalBufferRange: range, suppressMerge: true) - else - for row in [nextRow..@editSession.getLastBufferRow()] - range.start.row = row - range.end.row = row - unless @editSession.clipBufferRange(range).isEmpty() - @editSession.addSelectionForBufferRange(range, goalBufferRange: range, suppressMerge: true) - break + break insertText: (text, options={}) -> oldBufferRange = @getBufferRange()