Add support for activating and deactivating package-specific keymaps

This commit is contained in:
Tom Munro
2015-07-28 19:27:22 -07:00
parent e187e4bf53
commit b9c12857fb
2 changed files with 65 additions and 1 deletions

View File

@@ -200,7 +200,13 @@ class Package
activateResources: ->
@activationDisposables = new CompositeDisposable
@activationDisposables.add(atom.keymaps.add(keymapPath, map)) for [keymapPath, map] in @keymaps
@activationDisposables.add atom.config.observe "core.disabledKeymaps", {}, (map) =>
value = not _.include(map ? [], @name)
if value
@activateKeymaps()
else if not value
@deactivateKeymaps()
for [menuPath, map] in @menus when map['context-menu']?
try
@@ -232,6 +238,31 @@ class Package
settings.activate() for settings in @settings
@settingsActivated = true
activateKeymaps: ->
return if @keymapActivated
@keymapDisposables = new CompositeDisposable()
@keymapDisposables.add(atom.keymaps.add(keymapPath, map)) for [keymapPath, map] in @keymaps
atom.menu.update()
@keymapActivated = true
deactivateKeymaps: ->
return if not @keymapActivated
@keymapDisposables?.dispose()
atom.menu.update()
@keymapActivated = false
hasKeymaps: ->
for [path, map] in @keymaps
if map.length > 0
return true
false
activateServices: ->
for name, {versions} of @metadata.providedServices
servicesByVersion = {}
@@ -399,6 +430,7 @@ class Package
settings.deactivate() for settings in @settings
@stylesheetDisposables?.dispose()
@activationDisposables?.dispose()
@keymapDisposables?.dispose()
@stylesheetsActivated = false
@grammarsActivated = false
@settingsActivated = false