mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Add support for activating and deactivating package-specific keymaps
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user