Editor toggle-fold event toggles the largest fold at the cursor position

This commit is contained in:
Corey Johnson
2012-06-04 09:44:20 -07:00
parent 86316c2115
commit 2f6dd085ee
2 changed files with 20 additions and 1 deletions

View File

@@ -2457,6 +2457,19 @@ describe "Editor", ->
editor.trigger "toggle-fold"
expect(editor.screenLineForRow(1).fold).toBeUndefined()
it "creates/destroys the largest fold containing the cursor position", ->
editor.trigger "fold-all"
editor.setCursorBufferPosition([5,1])
editor.trigger "toggle-fold"
expect(editor.screenLineForRow(0).fold).toBeUndefined()
expect(editor.screenLineForRow(1).fold).toBeDefined()
editor.trigger "toggle-fold"
expect(editor.screenLineForRow(0).fold).toBeUndefined()
expect(editor.screenLineForRow(1).fold).toBeUndefined()
expect(editor.screenLineForRow(4).fold).toBeDefined()
describe "when a fold-all event is triggered", ->
it "creates folds on every line that can be folded", ->
editor.setCursorBufferPosition([5,13])
@@ -2465,6 +2478,11 @@ describe "Editor", ->
expect(editor.screenLineForRow(0).fold).toBeDefined()
expect(editor.screenLineForRow(1)).toBeUndefined()
it "maintains cursor buffer position when buffer is created/destroyed", ->
editor.setCursorBufferPosition([5,5])
editor.trigger "fold-all"
expect(editor.getCursorBufferPosition()).toEqual([5,5])
describe "primitive folding", ->
beforeEach ->
editor.setBuffer(new Buffer(require.resolve('fixtures/two-hundred.txt')))

View File

@@ -810,7 +810,8 @@ class Editor extends View
@renderer.foldAll()
toggleFold: ->
@renderer.toggleFoldAtBufferRow(@getCursorBufferPosition().row)
row = @renderer.bufferPositionForScreenPosition(@getCursorScreenPosition()).row
@renderer.toggleFoldAtBufferRow(row)
foldSelection: -> @getSelection().fold()