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..325ccfc37 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -2,16 +2,9 @@ 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 +26,6 @@ class PaneContainer extends Model @subscriptions = new CompositeDisposable @itemRegistry = new ItemRegistry - @registerViewProviders() @setRoot(params?.root ? new Pane) @setActivePane(@getPanes()[0]) unless @getActivePane() @@ -53,17 +45,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