Skip empty lines when adding selections below empty selections

Unless the selection's column is 0
This commit is contained in:
Nathan Sobo
2013-04-05 11:55:51 -06:00
parent 393cba4d42
commit be009e87c2
2 changed files with 27 additions and 10 deletions

View File

@@ -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]]

View File

@@ -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()