From 229277f764c1e9c35206eaf5d2cc63ea98e60006 Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Tue, 9 Sep 2014 15:03:45 -0700 Subject: [PATCH] Add PackageManager::onDidActivateAll() --- src/atom.coffee | 2 +- src/menu-manager.coffee | 2 +- src/package-manager.coffee | 30 +++++++++++++++++++++++++++--- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index 4fb113302..697a92c4b 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -187,7 +187,7 @@ class Atom extends Model @syntax = @deserializers.deserialize(@state.syntax) ? new Syntax() - @subscribe @packages, 'activated', => @watchThemes() + @subscribe @packages.onDidActivateAll => @watchThemes() Project = require './project' TextBuffer = require 'text-buffer' diff --git a/src/menu-manager.coffee b/src/menu-manager.coffee index b9f64a2fc..5c7d955d0 100644 --- a/src/menu-manager.coffee +++ b/src/menu-manager.coffee @@ -15,7 +15,7 @@ class MenuManager @pendingUpdateOperation = null @template = [] atom.keymaps.on 'bundled-keymaps-loaded', => @loadPlatformItems() - atom.packages.on 'activated', => @sortPackagesMenu() + atom.packages.onDidActivateAll => @sortPackagesMenu() # Public: Adds the given items to the application menu. # diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 14da123a7..98416806f 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -1,14 +1,16 @@ path = require 'path' _ = require 'underscore-plus' -{Emitter} = require 'emissary' +EmitterMixin = require('emissary').Emitter +{Emitter} = require 'event-kit' fs = require 'fs-plus' Q = require 'q' +{deprecate} = require 'grim' Package = require './package' ThemePackage = require './theme-package' -# Public: Package manager for coordinating the lifecycle of Atom packages. +# Extended: Package manager for coordinating the lifecycle of Atom packages. # # An instance of this class is always available as the `atom.packages` global. # @@ -25,9 +27,10 @@ ThemePackage = require './theme-package' # settings and also by calling `enablePackage()/disablePackage()`. module.exports = class PackageManager - Emitter.includeInto(this) + EmitterMixin.includeInto(this) constructor: ({configDirPath, devMode, safeMode, @resourcePath}) -> + @emitter = new Emitter @packageDirPaths = [] unless safeMode if devMode @@ -41,6 +44,26 @@ class PackageManager @packageActivators = [] @registerPackageActivator(this, ['atom', 'textmate']) + # Essential: Invoke the given callback when all packages have been activated. + # + # * `callback` {Function} + onDidActivateAll: (callback) -> + @emitter.on 'did-activate-all', callback + + on: (eventName) -> + switch eventName + when 'loaded' + deprecate 'Use PackageManager::onDidLoadAll instead' + when 'activated' + deprecate 'Use PackageManager::onDidActivateAll instead' + else + deprecate 'PackageManager::on is deprecated. Use event subscription methods instead.' + EmitterMixin::on.apply(this, arguments) + + ### + Section: Methods + ### + # Extended: Get the path to the apm command. # # Return a {String} file path to apm. @@ -83,6 +106,7 @@ class PackageManager packages = @getLoadedPackagesForTypes(types) activator.activatePackages(packages) @emit 'activated' + @emitter.emit 'did-activate-all' # another type of package manager can handle other package types. # See ThemeManager