From 2f6dd085ee377517b7cd7b9e32ae94aebf8c5709 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Mon, 4 Jun 2012 09:44:20 -0700 Subject: [PATCH] Editor toggle-fold event toggles the largest fold at the cursor position --- spec/app/editor-spec.coffee | 18 ++++++++++++++++++ src/app/editor.coffee | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index 726e19abd..aa2a32c36 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -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'))) diff --git a/src/app/editor.coffee b/src/app/editor.coffee index ce2f02ee8..8446ad716 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -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()