mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
If the cursor is at any buffer position inside a fold, backspace deletes the folded text
This commit is contained in:
@@ -129,6 +129,13 @@ class DisplayBuffer
|
||||
largestFoldStartingAtScreenRow: (screenRow) ->
|
||||
@largestFoldStartingAtBufferRow(@bufferRowForScreenRow(screenRow))
|
||||
|
||||
largestFoldContainingBufferRow: (bufferRow) ->
|
||||
largestFold = null
|
||||
for currentBufferRow in [bufferRow..0]
|
||||
if fold = @largestFoldStartingAtBufferRow(currentBufferRow)
|
||||
largestFold = fold if fold.endRow >= bufferRow
|
||||
largestFold
|
||||
|
||||
screenLineRangeForBufferRange: (bufferRange) ->
|
||||
@expandScreenRangeToLineEnds(
|
||||
@lineMap.screenRangeForBufferRange(
|
||||
|
||||
@@ -207,6 +207,9 @@ class EditSession
|
||||
largestFoldStartingAtBufferRow: (bufferRow) ->
|
||||
@displayBuffer.largestFoldStartingAtBufferRow(bufferRow)
|
||||
|
||||
largestFoldContainingBufferRow: (bufferRow) ->
|
||||
@displayBuffer.largestFoldContainingBufferRow(bufferRow)
|
||||
|
||||
largestFoldStartingAtScreenRow: (screenRow) ->
|
||||
@displayBuffer.largestFoldStartingAtScreenRow(screenRow)
|
||||
|
||||
|
||||
@@ -145,21 +145,23 @@ class Selection
|
||||
@deleteSelectedText()
|
||||
|
||||
delete: ->
|
||||
deleteNewlinesAfterFolds = true
|
||||
if @isEmpty()
|
||||
if @cursor.isAtEndOfLine() and fold = @editSession.largestFoldStartingAtScreenRow(@cursor.getCurrentScreenRow() + 1)
|
||||
@selectToBufferPosition(fold.getBufferRange().end)
|
||||
deleteNewlinesAfterFolds = false
|
||||
else
|
||||
@selectRight()
|
||||
@deleteSelectedText()
|
||||
@deleteSelectedText({ deleteNewlinesAfterFolds })
|
||||
|
||||
deleteToEndOfWord: ->
|
||||
@selectToEndOfWord() if @isEmpty()
|
||||
@deleteSelectedText()
|
||||
|
||||
deleteSelectedText: ->
|
||||
deleteSelectedText: (options = {}) ->
|
||||
bufferRange = @getBufferRange()
|
||||
if fold = @editSession.largestFoldStartingAtBufferRow(bufferRange.end.row)
|
||||
bufferRange = bufferRange.union(fold.getBufferRange(includeNewline: true))
|
||||
if fold = @editSession.largestFoldContainingBufferRow(bufferRange.end.row)
|
||||
bufferRange = bufferRange.union(fold.getBufferRange(includeNewline: options.deleteNewlinesAfterFolds ? true))
|
||||
|
||||
@editSession.buffer.delete(bufferRange) unless bufferRange.isEmpty()
|
||||
if @cursor
|
||||
|
||||
Reference in New Issue
Block a user