Implement setSelectedBufferRange w/ setSelectedBufferRanges

Also add the preserveFolds option, which doesn't destroy folds containing the selected ranges – mainly for specs right now
This commit is contained in:
Nathan Sobo
2012-07-12 18:57:12 -06:00
parent f99146b42f
commit a4db677979
5 changed files with 41 additions and 23 deletions

View File

@@ -306,17 +306,17 @@ class EditSession
@addCursor().selection.setBufferRange(bufferRange, options)
setSelectedBufferRange: (bufferRange, options) ->
@clearSelections()
@getLastSelection().setBufferRange(bufferRange, options)
@setSelectedBufferRanges([bufferRange], options)
setSelectedBufferRanges: (bufferRanges, options) ->
setSelectedBufferRanges: (bufferRanges, options={}) ->
throw new Error("Passed an empty array to setSelectedBufferRanges") unless bufferRanges.length
selection.destroy() for selection in @getSelections()
for bufferRange, i in bufferRanges
bufferRange = Range.fromObject(bufferRange)
for row in [bufferRange.start.row..bufferRange.end.row]
@destroyFoldsContainingBufferRow(row)
@addSelectionForBufferRange(bufferRange, options)
unless options.preserveFolds
for row in [bufferRange.start.row..bufferRange.end.row]
@destroyFoldsContainingBufferRow(row)
@addSelectionForBufferRange(bufferRange, options)
@mergeIntersectingSelections(options)
removeSelection: (selection) ->

View File

@@ -21,6 +21,7 @@ class Selection
if @cursor
@cursor.off('.selection')
@cursor.destroy()
@anchor?.destroy()
@editSession.removeSelection(this)
@trigger 'destroy'