mirror of
https://github.com/atom/atom.git
synced 2026-02-15 17:15:24 -05:00
Ensure non-async deactivate is run syncronously without await
This commit is contained in:
@@ -506,18 +506,30 @@ class Package
|
||||
@configSchemaRegisteredOnActivate = false
|
||||
@deactivateResources()
|
||||
@deactivateKeymaps()
|
||||
result = Promise.resolve()
|
||||
if @mainActivated
|
||||
try
|
||||
result = Promise.resolve(@mainModule?.deactivate?()).then =>
|
||||
@mainModule?.deactivateConfig?()
|
||||
@mainActivated = false
|
||||
@mainInitialized = false
|
||||
catch e
|
||||
console.error "Error deactivating package '#{@name}'", e.stack
|
||||
result = result.then =>
|
||||
|
||||
unless @mainActivated
|
||||
@emitter.emit 'did-deactivate'
|
||||
result
|
||||
return
|
||||
|
||||
try
|
||||
deactivationResult = @mainModule?.deactivate?()
|
||||
catch e
|
||||
console.error "Error deactivating package '#{@name}'", e.stack
|
||||
|
||||
# We support then-able async promises as well as sync ones from deactivate
|
||||
if deactivationResult?.then is 'function'
|
||||
deactivationResult.then => @afterDeactivation()
|
||||
else
|
||||
@afterDeactivation()
|
||||
|
||||
afterDeactivation: ->
|
||||
try
|
||||
@mainModule?.deactivateConfig?()
|
||||
catch e
|
||||
console.error "Error deactivating package '#{@name}'", e.stack
|
||||
@mainActivated = false
|
||||
@mainInitialized = false
|
||||
@emitter.emit 'did-deactivate'
|
||||
|
||||
deactivateResources: ->
|
||||
grammar.deactivate() for grammar in @grammars
|
||||
|
||||
Reference in New Issue
Block a user