Add PackageManager::onDidDeactivatePackage

This commit is contained in:
Nathan Sobo
2015-01-08 15:52:46 -08:00
parent 6dd9834ae1
commit 7acf3d4d6b
2 changed files with 20 additions and 0 deletions

View File

@@ -538,6 +538,16 @@ describe "PackageManager", ->
atom.packages.deactivatePackage("package-with-settings")
expect(atom.config.get 'editor.increaseIndentPattern', scope: ['.source.omg']).toBeUndefined()
it "invokes ::onDidDeactivatePackage listeners with the deactivated package", ->
waitsForPromise ->
atom.packages.activatePackage("package-with-main")
runs ->
deactivatedPackage = null
atom.packages.onDidDeactivatePackage (pack) -> deactivatedPackage = pack
atom.packages.deactivatePackage("package-with-main")
expect(deactivatedPackage.name).toBe "package-with-main"
describe "::activate()", ->
beforeEach ->
jasmine.snapshotDeprecations()

View File

@@ -81,6 +81,15 @@ class PackageManager
onDidActivatePackage: (callback) ->
@emitter.on 'did-activate-package', callback
# Public: Invoke the given callback when a package is deactivated.
#
# * `callback` A {Function} to be invoked when a package is deactivated.
# * `package` The {Package} that was deactivated.
#
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidDeactivatePackage: (callback) ->
@emitter.on 'did-deactivate-package', callback
on: (eventName) ->
switch eventName
when 'loaded'
@@ -381,3 +390,4 @@ class PackageManager
@setPackageState(pack.name, state) if state = pack.serialize?()
pack.deactivate()
delete @activePackages[pack.name]
@emitter.emit 'did-deactivate-package', pack