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)