mirror of
https://github.com/atom/atom.git
synced 2026-02-07 13:14:55 -05:00
Renderer.toggleFold works for folded, foldable and non-foldable lines
When a line is not foldable, we search upward for a suggested fold that contains it and apply that fold instead. If called with a row that is already folded, it unfolds it.
This commit is contained in:
@@ -27,7 +27,8 @@ window.keymap.bindKeys '.editor',
|
||||
'meta-z': 'undo'
|
||||
'meta-Z': 'redo'
|
||||
'alt-meta-w': 'toggle-soft-wrap'
|
||||
'alt-meta-f': 'fold-selection'
|
||||
'alt-meta-f': 'toggle-fold'
|
||||
'alt-meta-ctrl-f': 'fold-selection'
|
||||
'alt-meta-u': 'unfold'
|
||||
'alt-meta-left': 'split-left'
|
||||
'alt-meta-right': 'split-right'
|
||||
|
||||
@@ -57,11 +57,18 @@ class Renderer
|
||||
if fold = @largestFoldForBufferRow(bufferRow)
|
||||
fold.destroy()
|
||||
else
|
||||
@createFoldAtBufferRow(bufferRow)
|
||||
rowToFold = bufferRow
|
||||
while rowToFold >= 0
|
||||
rowRange = @foldSuggester.rowRangeForFoldAtBufferRow(rowToFold)
|
||||
if rowRange and (rowRange[0] - 1) <= bufferRow <= rowRange[1]
|
||||
if fold = @largestFoldForBufferRow(rowRange[0])
|
||||
fold.destroy()
|
||||
else
|
||||
@createFold(rowRange...)
|
||||
|
||||
createFoldAtBufferRow: (bufferRow) ->
|
||||
[startRow, endRow] = @foldSuggester.rowRangeForFoldAtBufferRow(bufferRow)
|
||||
@createFold(startRow, endRow)
|
||||
return
|
||||
else
|
||||
rowToFold--
|
||||
|
||||
createFold: (startRow, endRow) ->
|
||||
fold = new Fold(this, startRow, endRow)
|
||||
|
||||
Reference in New Issue
Block a user