From cf850b8e7e3fd3e1d9bfe9f461d6bdfce3b1d1c2 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 28 Feb 2012 19:53:02 -0700 Subject: [PATCH] Move the cursor to start of folded range on unfold --- spec/atom/editor-spec.coffee | 4 +++- src/atom/editor.coffee | 7 ++++++- src/atom/line-folder.coffee | 3 --- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/spec/atom/editor-spec.coffee b/spec/atom/editor-spec.coffee index 90e0cf6c3..433fbb0f2 100644 --- a/spec/atom/editor-spec.coffee +++ b/spec/atom/editor-spec.coffee @@ -780,7 +780,7 @@ describe "Editor", -> expect(editor.getCursorScreenPosition()).toEqual [4, 32] describe "when a fold placeholder is clicked", -> - it "removes the associated fold", -> + it "removes the associated fold and places the cursor at its beginning", -> editor.selection.setBufferRange(new Range([4, 29], [7, 4])) editor.trigger 'fold-selection' @@ -789,4 +789,6 @@ describe "Editor", -> expect(editor.find('.fold-placeholder')).not.toExist() expect(editor.lines.find('.line:eq(5)').text()).toBe ' current = items.shift();' + expect(editor.getCursorBufferPosition()).toEqual [4, 29] + diff --git a/src/atom/editor.coffee b/src/atom/editor.coffee index cbdaecddf..0ce14e4bf 100644 --- a/src/atom/editor.coffee +++ b/src/atom/editor.coffee @@ -93,7 +93,7 @@ class Editor extends View false @on 'mousedown', '.fold-placeholder', (e) => - @lineFolder.destroyFoldById($(e.currentTarget).attr('foldId')) + @destroyFold($(e.currentTarget).attr('foldId')) false @on 'mousedown', (e) => @@ -324,3 +324,8 @@ class Editor extends View redo: -> @undoManager.redo() + + destroyFold: (foldId) -> + fold = @lineFolder.foldsById[foldId] + fold.destroy() + @setCursorBufferPosition(fold.start) diff --git a/src/atom/line-folder.coffee b/src/atom/line-folder.coffee index 9e26b600b..9e47064b4 100644 --- a/src/atom/line-folder.coffee +++ b/src/atom/line-folder.coffee @@ -60,9 +60,6 @@ class LineFolder @trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange @trigger 'unfold', fold.getRange() - destroyFoldById: (foldId) -> - @foldsById[foldId]?.destroy() - registerFold: (bufferRow, fold) -> @activeFolds[bufferRow] ?= [] @activeFolds[bufferRow].push(fold)