Don't destroy folds that are completely contained within a selection

This commit is contained in:
Nathan Sobo
2017-10-25 12:15:33 -06:00
parent 622589f4f7
commit 00242541ae
4 changed files with 12 additions and 4 deletions

View File

@@ -87,7 +87,7 @@ class Selection extends Model
setBufferRange: (bufferRange, options={}) ->
bufferRange = Range.fromObject(bufferRange)
options.reversed ?= @isReversed()
@editor.destroyFoldsIntersectingBufferRange(bufferRange) unless options.preserveFolds
@editor.destroyFoldsContainingBufferPositions([bufferRange.start, bufferRange.end]) unless options.preserveFolds
@modifySelection =>
needsFlash = options.flash
delete options.flash if options.flash?

View File

@@ -2495,8 +2495,9 @@ class TextEditor extends Model
#
# Returns the added {Selection}.
addSelectionForBufferRange: (bufferRange, options={}) ->
bufferRange = Range.fromObject(bufferRange)
unless options.preserveFolds
@destroyFoldsIntersectingBufferRange(bufferRange)
@displayLayer.destroyFoldsContainingBufferPositions([bufferRange.start, bufferRange.end])
@selectionsMarkerLayer.markBufferRange(bufferRange, {invalidate: 'never', reversed: options.reversed ? false})
@getLastSelection().autoscroll() unless options.autoscroll is false
@getLastSelection()
@@ -3446,6 +3447,10 @@ class TextEditor extends Model
destroyFoldsIntersectingBufferRange: (bufferRange) ->
@displayLayer.destroyFoldsIntersectingBufferRange(bufferRange)
# Remove any {Fold}s found that intersect the given array of buffer positions.
destroyFoldsContainingBufferPositions: (bufferPositions) ->
@displayLayer.destroyFoldsContainingBufferPositions(bufferPositions)
###
Section: Gutters
###