mirror of
https://github.com/atom/atom.git
synced 2026-01-23 05:48:10 -05:00
Destroy editSession by calling a method on the project instead of triggering a destroy event that the project listens to.
This commit is contained in:
@@ -30,7 +30,7 @@ class EditSession
|
||||
softTabs: true
|
||||
softWrap: false
|
||||
|
||||
constructor: ({@buffer, @tabText, @autoIndent, @softTabs, @softWrap}) ->
|
||||
constructor: ({@project, @buffer, @tabText, @autoIndent, @softTabs, @softWrap}) ->
|
||||
@id = @constructor.idCounter++
|
||||
@softTabs ?= true
|
||||
@displayBuffer = new DisplayBuffer(@buffer, { @tabText })
|
||||
@@ -54,7 +54,7 @@ class EditSession
|
||||
@buffer.off ".edit-session-#{@id}"
|
||||
@displayBuffer.off ".edit-session-#{@id}"
|
||||
@displayBuffer.destroy()
|
||||
@trigger "destroy"
|
||||
@project.removeEditSession(this)
|
||||
|
||||
serialize: ->
|
||||
buffer: @buffer.getPath()
|
||||
|
||||
@@ -83,21 +83,25 @@ class Project
|
||||
buffer = @buildBuffer()
|
||||
|
||||
editSession = new EditSession
|
||||
project: this
|
||||
buffer: buffer
|
||||
tabText: @getTabText()
|
||||
autoIndent: @getAutoIndent()
|
||||
softTabs: @getSoftTabs()
|
||||
softWrap: @getSoftWrap()
|
||||
|
||||
editSession.on 'destroy', =>
|
||||
@editSessions = _.without(@editSessions, editSession)
|
||||
bufferIsOrphaned = not _.find @editSessions, (e) -> e.buffer == editSession.buffer
|
||||
editSession.buffer.destroy() if bufferIsOrphaned
|
||||
|
||||
@editSessions.push editSession
|
||||
@trigger 'new-edit-session', editSession
|
||||
editSession
|
||||
|
||||
removeEditSession: (editSession) ->
|
||||
_.remove(@editSessions, editSession)
|
||||
@destroyBufferIfOrphaned(editSession.buffer)
|
||||
|
||||
destroyBufferIfOrphaned: (buffer) ->
|
||||
unless _.find(@editSessions, (editSession) -> editSession.buffer == buffer)
|
||||
buffer.destroy()
|
||||
|
||||
buildBuffer: (filePath) ->
|
||||
buffer = new Buffer(filePath)
|
||||
@trigger 'new-buffer', buffer
|
||||
|
||||
Reference in New Issue
Block a user