From 69ec6b5441bd3e2c27b2b62dbc0ffbb60f5d7dac Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 20 Nov 2012 16:03:11 -0700 Subject: [PATCH] Add the 'editor:edit-session-removed' event to `Editor` --- spec/app/editor-spec.coffee | 15 ++++++++++++++- src/app/editor.coffee | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index 46b69d36d..8f7f6f7d9 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -152,7 +152,7 @@ describe "Editor", -> expect(otherEditSession.buffer.subscriptionCount()).toBe 0 describe "when 'close' is triggered", -> - it "closes active edit session and loads next edit session", -> + it "closes the active edit session and loads next edit session", -> editor.edit(rootView.project.buildEditSessionForPath()) editSession = editor.activeEditSession spyOn(editSession.buffer, 'isModified').andReturn false @@ -163,6 +163,19 @@ describe "Editor", -> expect(editor.remove).not.toHaveBeenCalled() expect(editor.getBuffer()).toBe buffer + it "triggers the 'editor:edit-session-removed' event with the edit session and its former index", -> + editor.edit(rootView.project.buildEditSessionForPath()) + editSession = editor.activeEditSession + index = editor.getActiveEditSessionIndex() + spyOn(editSession.buffer, 'isModified').andReturn false + + editSessionRemovedHandler = jasmine.createSpy('editSessionRemovedHandler') + editor.on 'editor:edit-session-removed', editSessionRemovedHandler + editor.trigger "core:close" + + expect(editSessionRemovedHandler).toHaveBeenCalled() + expect(editSessionRemovedHandler.argsForCall[0][1..2]).toEqual [editSession, index] + it "calls remove on the editor if there is one edit session and mini is false", -> editSession = editor.activeEditSession expect(editor.mini).toBeFalsy() diff --git a/src/app/editor.coffee b/src/app/editor.coffee index ef7206e09..9d0c08fbe 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -399,9 +399,11 @@ class Editor extends View @remove() else editSession = @activeEditSession + index = @getActiveEditSessionIndex() @loadPreviousEditSession() _.remove(@editSessions, editSession) editSession.destroy() + @trigger 'editor:edit-session-removed', [editSession, index] loadNextEditSession: -> nextIndex = (@getActiveEditSessionIndex() + 1) % @editSessions.length