From afee6991374c2f3ed60ee63b3296140a0310b207 Mon Sep 17 00:00:00 2001 From: Daniel Hengeveld Date: Wed, 8 Jul 2015 17:07:26 -0700 Subject: [PATCH 1/2] Move view registration for Pane & Gutter related views earlier Registering them in pane-container led to packages deserializing before e.g. Gutter was available. --- src/atom.coffee | 25 +++++++++++++++++++++++++ src/pane-container.coffee | 20 -------------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index d50c49a30..8f195e899 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -265,6 +265,7 @@ class Atom extends Model @notifications = new NotificationManager @commands = new CommandRegistry @views = new ViewRegistry + @registerViewProviders() @packages = new PackageManager({devMode, configDirPath, resourcePath, safeMode}) @styles = new StyleManager document.head.appendChild(new StylesElement) @@ -291,6 +292,30 @@ class Atom extends Model @windowEventHandler = new WindowEventHandler + # Register the core views as early as possible in case they are needed for + # package deserialization. + registerViewProviders: -> + Gutter = require './gutter' + Pane = require './pane' + PaneElement = require './pane-element' + PaneContainer = require './pane-container' + PaneContainerElement = require './pane-container-element' + PaneAxis = require './pane-axis' + PaneAxisElement = require './pane-axis-element' + TextEditor = require './text-editor' + TextEditorElement = require './text-editor-element' + {createGutterView} = require './gutter-component-helpers' + + atom.views.addViewProvider PaneContainer, (model) -> + new PaneContainerElement().initialize(model) + atom.views.addViewProvider PaneAxis, (model) -> + new PaneAxisElement().initialize(model) + atom.views.addViewProvider Pane, (model) -> + new PaneElement().initialize(model) + atom.views.addViewProvider TextEditor, (model) -> + new TextEditorElement().initialize(model) + atom.views.addViewProvider(Gutter, createGutterView) + ### Section: Event Subscription ### diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 26ef22cac..5e8fe926a 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -2,16 +2,8 @@ Grim = require 'grim' {Emitter, CompositeDisposable} = require 'event-kit' Serializable = require 'serializable' -{createGutterView} = require './gutter-component-helpers' Gutter = require './gutter' Model = require './model' -Pane = require './pane' -PaneElement = require './pane-element' -PaneContainerElement = require './pane-container-element' -PaneAxisElement = require './pane-axis-element' -PaneAxis = require './pane-axis' -TextEditor = require './text-editor' -TextEditorElement = require './text-editor-element' ItemRegistry = require './item-registry' module.exports = @@ -33,7 +25,6 @@ class PaneContainer extends Model @subscriptions = new CompositeDisposable @itemRegistry = new ItemRegistry - @registerViewProviders() @setRoot(params?.root ? new Pane) @setActivePane(@getPanes()[0]) unless @getActivePane() @@ -53,17 +44,6 @@ class PaneContainer extends Model root: @root?.serialize() activePaneId: @activePane.id - registerViewProviders: -> - atom.views.addViewProvider PaneContainer, (model) -> - new PaneContainerElement().initialize(model) - atom.views.addViewProvider PaneAxis, (model) -> - new PaneAxisElement().initialize(model) - atom.views.addViewProvider Pane, (model) -> - new PaneElement().initialize(model) - atom.views.addViewProvider TextEditor, (model) -> - new TextEditorElement().initialize(model) - atom.views.addViewProvider(Gutter, createGutterView) - onDidChangeRoot: (fn) -> @emitter.on 'did-change-root', fn From b13ee1c9cb61a3969a0d6aad06ae38287c23f6d1 Mon Sep 17 00:00:00 2001 From: Daniel Hengeveld Date: Wed, 8 Jul 2015 17:21:39 -0700 Subject: [PATCH 2/2] re-add Pane require --- src/pane-container.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 5e8fe926a..325ccfc37 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -4,6 +4,7 @@ Grim = require 'grim' Serializable = require 'serializable' Gutter = require './gutter' Model = require './model' +Pane = require './pane' ItemRegistry = require './item-registry' module.exports =