Add PackageManager::onDidActivateAll()

This commit is contained in:
Ben Ogle
2014-09-09 15:03:45 -07:00
parent af1b0b5736
commit 229277f764
3 changed files with 29 additions and 5 deletions

View File

@@ -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'

View File

@@ -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.
#

View File

@@ -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