From 220044c8bde971afd51f36de4e237f8a7e9ccba1 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 12 Oct 2012 09:16:46 -0700 Subject: [PATCH] Add eachBuffer helper to RootView This allows extensions to bind a callback to all current and future buffers. --- spec/app/root-view-spec.coffee | 28 +++++++++++++++++++ src/app/root-view.coffee | 7 +++++ .../strip-trailing-whitespace.coffee | 14 +++------- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/spec/app/root-view-spec.coffee b/spec/app/root-view-spec.coffee index bc0d1ec14..6cb214e3f 100644 --- a/spec/app/root-view-spec.coffee +++ b/spec/app/root-view-spec.coffee @@ -718,3 +718,31 @@ describe "RootView", -> rootView.getActiveEditor().splitRight() expect(count).toBe 1 expect(callbackEditor).toBe rootView.getActiveEditor() + + describe ".eachBuffer(callback)", -> + beforeEach -> + rootView.attachToDom() + + it "invokes the callback for existing buffer", -> + count = 0 + callbackBuffer = null + callback = (buffer) -> + callbackBuffer = buffer + count++ + rootView.eachBuffer(callback) + expect(count).toBe 1 + expect(callbackBuffer).toBe rootView.getActiveEditor().getBuffer() + + it "invokes the callback for new buffer", -> + count = 0 + callbackBuffer = null + callback = (buffer) -> + callbackBuffer = buffer + count++ + + rootView.eachBuffer(callback) + count = 0 + callbackBuffer = null + rootView.open(require.resolve('fixtures/sample.txt')) + expect(count).toBe 1 + expect(callbackBuffer).toBe rootView.getActiveEditor().getBuffer() diff --git a/src/app/root-view.coffee b/src/app/root-view.coffee index 4b9479329..32a29702c 100644 --- a/src/app/root-view.coffee +++ b/src/app/root-view.coffee @@ -239,3 +239,10 @@ class RootView extends View @on 'editor-open', (e, editor) -> callback(editor) + + eachBuffer: (callback) -> + for buffer in @project.getBuffers() + callback(buffer) + + @project.on 'new-buffer', (buffer) -> + callback(buffer) diff --git a/src/extensions/strip-trailing-whitespace.coffee b/src/extensions/strip-trailing-whitespace.coffee index d33eafe87..cb27068c0 100644 --- a/src/extensions/strip-trailing-whitespace.coffee +++ b/src/extensions/strip-trailing-whitespace.coffee @@ -2,13 +2,7 @@ module.exports = name: "strip trailing whitespace" activate: (rootView) -> - for buffer in rootView.project.getBuffers() - @stripTrailingWhitespaceBeforeSave(buffer) - - rootView.project.on 'new-buffer', (buffer) => - @stripTrailingWhitespaceBeforeSave(buffer) - - stripTrailingWhitespaceBeforeSave: (buffer) -> - buffer.on 'before-save', -> - buffer.scan /[ \t]+$/g, (match, range, { replace }) -> - replace('') + rootView.eachBuffer (buffer) -> + buffer.on 'before-save', -> + buffer.scan /[ \t]+$/g, (match, range, { replace }) -> + replace('')