EditSession.setSelectedBufferRanges destroys folds

It also clears all existing selections and makes new ones.
This commit is contained in:
Nathan Sobo
2012-07-12 18:40:34 -06:00
parent f02e724606
commit f99146b42f
2 changed files with 37 additions and 13 deletions

View File

@@ -5,6 +5,7 @@ DisplayBuffer = require 'display-buffer'
Cursor = require 'cursor'
Selection = require 'selection'
EventEmitter = require 'event-emitter'
Range = require 'range'
AnchorRange = require 'anchor-range'
_ = require 'underscore'
@@ -309,13 +310,14 @@ class EditSession
@getLastSelection().setBufferRange(bufferRange, options)
setSelectedBufferRanges: (bufferRanges, options) ->
selections = @getSelections()
throw new Error("Passed an empty array to setSelectedBufferRanges") unless bufferRanges.length
selection.destroy() for selection in @getSelections()
for bufferRange, i in bufferRanges
if selections[i]
selections[i].setBufferRange(bufferRange, options)
else
bufferRange = Range.fromObject(bufferRange)
for row in [bufferRange.start.row..bufferRange.end.row]
@destroyFoldsContainingBufferRow(row)
@addSelectionForBufferRange(bufferRange, options)
@mergeIntersectingSelections()
@mergeIntersectingSelections(options)
removeSelection: (selection) ->
_.remove(@selections, selection)