Restore closed tab at previous index

This commit is contained in:
Kevin Sawicki 2013-02-12 09:41:32 -08:00
parent fb9451556d
commit 5ecbda0aac
2 changed files with 26 additions and 9 deletions

View File

@ -2673,13 +2673,23 @@ describe "Editor", ->
expect(rightEditor.editSessions[1].getPath()).toBe txtPath
describe "when editor:undo-close-session is triggered", ->
it "opens the closed session back up", ->
describe "when an edit session is opened back up after it is closed", ->
it "is removed from the undo stack and not reopened when the event is triggered", ->
rootView.open('sample.txt')
expect(editor.getPath()).toBe fixturesProject.resolve('sample.txt')
editor.trigger "core:close"
expect(editor.closedEditSessions.length).toBe 1
rootView.open('sample.txt')
expect(editor.closedEditSessions.length).toBe 0
editor.trigger 'editor:undo-close-session'
expect(editor.getPath()).toBe fixturesProject.resolve('sample.txt')
it "opens the closed session back up at the previous index", ->
rootView.open('sample.txt')
expect(editor.getPath()).toBe require.resolve('fixtures/sample.txt')
expect(editor.closedEditSessions.length).toBe 0
editor.loadPreviousEditSession()
expect(editor.getPath()).toBe fixturesProject.resolve('sample.js')
editor.trigger "core:close"
expect(editor.getPath()).toBe require.resolve('fixtures/sample.js')
expect(editor.closedEditSessions.length).toBe 1
expect(editor.getPath()).toBe fixturesProject.resolve('sample.txt')
editor.trigger 'editor:undo-close-session'
expect(editor.getPath()).toBe require.resolve('fixtures/sample.txt')
expect(editor.closedEditSessions.length).toBe 0
expect(editor.getPath()).toBe fixturesProject.resolve('sample.js')
expect(editor.getActiveEditSessionIndex()).toBe 0

View File

@ -467,6 +467,8 @@ class Editor extends View
pushEditSession: (editSession) ->
index = @editSessions.length
@editSessions.push(editSession)
@closedEditSessions = @closedEditSessions.filter ({path})->
path isnt editSession.getPath()
editSession.on 'destroyed', => @editSessionDestroyed(editSession)
@trigger 'editor:edit-session-added', [editSession, index]
index
@ -474,7 +476,12 @@ class Editor extends View
getBuffer: -> @activeEditSession.buffer
undoDestroySession: ->
@rootView().open(@closedEditSessions.pop(), true) unless @closedEditSessions.length == 0
return unless @closedEditSessions.length > 0
{path, index} = @closedEditSessions.pop()
@rootView().open(path)
activeIndex = @getActiveEditSessionIndex()
@moveEditSessionToIndex(activeIndex, index) if index < activeIndex
destroyActiveEditSession: ->
@destroyEditSessionIndex(@getActiveEditSessionIndex())
@ -485,7 +492,7 @@ class Editor extends View
editSession = @editSessions[index]
destroySession = =>
path = editSession.getPath()
@closedEditSessions.push(path) unless @closedEditSessions.indexOf(path) > -1
@closedEditSessions.push({path, index})
editSession.destroy()
callback?(index)