From 63be776837d66c1c19ce94347a5776f16991e30f Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 24 Feb 2012 14:18:55 -0700 Subject: [PATCH] LineFolder emits 'fold' and 'unfold' events --- spec/atom/line-folder-spec.coffee | 19 +++++++++++++++++++ src/atom/line-folder.coffee | 2 ++ 2 files changed, 21 insertions(+) diff --git a/spec/atom/line-folder-spec.coffee b/spec/atom/line-folder-spec.coffee index 89c27db71..7a7f2703e 100644 --- a/spec/atom/line-folder-spec.coffee +++ b/spec/atom/line-folder-spec.coffee @@ -14,6 +14,25 @@ describe "LineFolder", -> folder.on 'change', changeHandler describe "when folds are created and removed", -> + it "emits 'fold' and 'unfold' events", -> + foldHandler = jasmine.createSpy 'foldHandler' + unfoldHandler = jasmine.createSpy 'unfoldHandler' + folder.on 'fold', foldHandler + folder.on 'unfold', unfoldHandler + + foldRange = new Range([4, 29], [7, 4]) + fold = folder.createFold(foldRange) + + expect(foldHandler).toHaveBeenCalled() + [[range]] = foldHandler.argsForCall + expect(range).toEqual foldRange + + fold.destroy() + expect(unfoldHandler).toHaveBeenCalled() + [[range]] = unfoldHandler.argsForCall + expect(range).toEqual foldRange + + describe "when there is a single fold spanning multiple lines", -> it "replaces folded lines with a single line containing a placeholder and emits a change event", -> [line4, line5] = folder.linesForScreenRows(4, 5) diff --git a/src/atom/line-folder.coffee b/src/atom/line-folder.coffee index 98df6c1e1..bda1a3979 100644 --- a/src/atom/line-folder.coffee +++ b/src/atom/line-folder.coffee @@ -39,6 +39,7 @@ class LineFolder newScreenRange.end.column += fragment.text.length @trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange + @trigger 'fold', bufferRange fold destroyFold: (fold) -> @@ -56,6 +57,7 @@ class LineFolder newScreenRange = @expandScreenRangeToLineEnds(@screenRangeForBufferRange(bufferRange)) @trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange + @trigger 'unfold', fold.getRange() registerFold: (bufferRow, fold) -> @activeFolds[bufferRow] ?= []