From f473bfdb951820a965b305041874e24ecd0608bd Mon Sep 17 00:00:00 2001 From: probablycorey Date: Thu, 13 Feb 2014 10:52:07 -0800 Subject: [PATCH] Move actual opener logic back to project. Not all specs create a workspace and workspaceView, so there were failures. They probably SHOULD all have workspace and workspaceView but that is beyond the scope of this PR. --- src/project.coffee | 23 ++++++++++++++++++----- src/workspace.coffee | 17 +++++++++-------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/project.coffee b/src/project.coffee index 048222f4b..435ed994b 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -30,6 +30,8 @@ class Project extends Model constructor: ({path, @buffers}={}) -> @buffers ?= [] + @openers = [] + for buffer in @buffers do (buffer) => buffer.once 'destroyed', => @removeBuffer(buffer) @@ -309,8 +311,19 @@ class Project extends Model else @on 'buffer-created', (buffer) -> callback(buffer) - # Deprecated: delegates - registerOpener: -> atom.workspaceView.model.registerOpener(arguments...) - unregisterOpener: -> atom.workspaceView.model.unregisterOpener(arguments...) - eachEditor: -> atom.workspaceView.model.eachEditor(arguments...) - getEditors: -> atom.workspaceView.model.getEditors(arguments...) + # Deprecated: delegate + registerOpener: (opener) -> + @openers.push(opener) + + # Deprecated: delegate + unregisterOpener: (opener) -> + _.remove(@openers, opener) + + # Deprecated: delegate + eachEditor: (callback) -> + callback(editor) for editor in @getEditors() + @on 'editor-created', (editor) -> callback(editor) + + # Deprecated: delegate + getEditors: -> + new Array(@editors...) diff --git a/src/workspace.coffee b/src/workspace.coffee index 14396531e..79b0df1ad 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -26,7 +26,6 @@ class Workspace extends Model constructor: -> super - @openers = [] @subscribe @paneContainer, 'item-destroyed', @onPaneItemDestroyed @registerOpener (filePath) => switch filePath @@ -54,12 +53,11 @@ class Workspace extends Model # # callback - A {Function} with an {Editor} as its only argument eachEditor: (callback) -> - callback(editor) for editor in @getEditors() - @on 'editor-created', (editor) -> callback(editor) + atom.project.eachEditor(callback) # Public: Returns an {Array} of all open {Editor}s. getEditors: -> - new Array(atom.project.editors...) + atom.project.getEditors() # Public: Asynchronously opens a given a filepath in Atom. # @@ -100,7 +98,7 @@ class Workspace extends Model uri = atom.project.relativize(uri) ? '' if uri? - item = opener(uri, options) for opener in @openers when !item + item = opener(atom.project.resolve(uri), options) for opener in @getOpeners() when !item editor = item ? @activePane.itemForUri(uri) ? atom.project.openSync(uri, {initialLine}) else editor = atom.project.openSync() @@ -112,7 +110,7 @@ class Workspace extends Model openUriInPane: (uri, pane, options={}) -> changeFocus = options.changeFocus ? true - item = opener(uri, options) for opener in @openers when !item + item = opener(atom.project.resolve(uri), options) for opener in @getOpeners() when !item promise = Q(item ? pane.itemForUri(uri) ? atom.project.open(uri, options)) promise @@ -146,11 +144,14 @@ class Workspace extends Model # # opener - A {Function} to be called when a path is being opened. registerOpener: (opener) -> - @openers.push(opener) + atom.project.registerOpener(opener) # Public: Remove a registered opener. unregisterOpener: (opener) -> - _.remove(@openers, opener) + atom.project.unregisterOpener(opener) + + getOpeners: -> + atom.project.openers # Public: save the active item. saveActivePaneItem: ->