From abb585fbf6b8f128ae1fa26e13f5dfdcb08c8d6e Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Fri, 30 Mar 2012 15:14:59 -0700 Subject: [PATCH] Editor emits buffer-changed-event --- spec/atom/editor-spec.coffee | 31 +++++++++++++++++++++++++++++++ src/atom/editor.coffee | 2 ++ 2 files changed, 33 insertions(+) diff --git a/spec/atom/editor-spec.coffee b/spec/atom/editor-spec.coffee index 3b39485ad..e54f270eb 100644 --- a/spec/atom/editor-spec.coffee +++ b/spec/atom/editor-spec.coffee @@ -1863,3 +1863,34 @@ describe "Editor", -> expect(editor.lines.find('.line:eq(13)').text()).toBe 'A' expect(editor.lines.find('.line:eq(14)').text()).toBe 'B' expect(editor.lines.find('.line:eq(15)')).not.toExist() + + + describe "path-change event", -> + it "emits event when buffer's path is changed", -> + editor = new Editor() + + eventHandler = jasmine.createSpy('eventHandler') + editor.on 'buffer-path-change', eventHandler + editor.buffer.setPath("moo.text") + + it "emits event when editor receives a new buffer", -> + eventHandler = jasmine.createSpy('eventHandler') + editor.on 'buffer-path-change', eventHandler + editor.setBuffer(new Buffer("something.txt")) + expect(eventHandler).toHaveBeenCalled() + + it "stops listening to events on previously set buffers", -> + eventHandler = jasmine.createSpy('eventHandler') + oldBuffer = editor.buffer + editor.on 'buffer-path-change', eventHandler + + editor.setBuffer(new Buffer("something.txt")) + expect(eventHandler).toHaveBeenCalled() + + eventHandler.reset() + oldBuffer.setPath("bad.txt") + expect(eventHandler).not.toHaveBeenCalled() + + eventHandler.reset() + editor.buffer.setPath("new.txt") + expect(eventHandler).toHaveBeenCalled() \ No newline at end of file diff --git a/src/atom/editor.coffee b/src/atom/editor.coffee index 5f5b0574e..24a9e8f63 100644 --- a/src/atom/editor.coffee +++ b/src/atom/editor.coffee @@ -217,6 +217,8 @@ class Editor extends View @unsubscribeFromBuffer() @buffer = buffer + @trigger 'buffer-path-change' + @buffer.on "path-change.editor#{@id}", => @trigger 'buffer-path-change' document.title = @buffer.getPath() @renderer = new Renderer(@buffer)