diff --git a/src/text-editor.coffee b/src/text-editor.coffee index e858d8c80..7d8d955e9 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -88,8 +88,9 @@ class TextEditor extends Model state.assert = atomEnvironment.assert.bind(atomEnvironment) state.applicationDelegate = atomEnvironment.applicationDelegate editor = new this(state) - disposable = atomEnvironment.textEditors.add(editor) - editor.onDidDestroy -> disposable.dispose() + if state.registered + disposable = atomEnvironment.textEditors.add(editor) + editor.onDidDestroy -> disposable.dispose() editor constructor: (params={}) -> @@ -167,6 +168,7 @@ class TextEditor extends Model firstVisibleScreenColumn: @getFirstVisibleScreenColumn() displayBuffer: @displayBuffer.serialize() selectionsMarkerLayerId: @selectionsMarkerLayer.id + registered: atom.textEditors.editors.has this subscribeToBuffer: -> @buffer.retain() diff --git a/src/workspace.coffee b/src/workspace.coffee index 9b1bf14fc..b8ed79fd6 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -548,7 +548,10 @@ class Workspace extends Model throw error @project.bufferForPath(filePath, options).then (buffer) => - @buildTextEditor(_.extend({buffer, largeFileMode}, options)) + editor = @buildTextEditor(_.extend({buffer, largeFileMode}, options)) + disposable = atom.textEditors.add(editor) + editor.onDidDestroy -> disposable.dispose() + editor # Public: Returns a {Boolean} that is `true` if `object` is a `TextEditor`. # @@ -564,10 +567,7 @@ class Workspace extends Model @config, @notificationManager, @packageManager, @clipboard, @viewRegistry, @grammarRegistry, @project, @assert, @applicationDelegate }, params) - editor = new TextEditor(params) - disposable = atom.textEditors.add(editor) - editor.onDidDestroy -> disposable.dispose() - editor + new TextEditor(params) # Public: Asynchronously reopens the last-closed item's URI if it hasn't already been # reopened.