From a0c208974b21d5c9f1fedbc7ad46da5fee865750 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 10 Nov 2015 13:07:02 -0800 Subject: [PATCH 1/2] Add failing spec --- spec/package-manager-spec.coffee | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/package-manager-spec.coffee b/spec/package-manager-spec.coffee index 88e730d44..391c63dc7 100644 --- a/spec/package-manager-spec.coffee +++ b/spec/package-manager-spec.coffee @@ -433,6 +433,13 @@ describe "PackageManager", -> runs -> expect(atom.keymaps.findKeyBindings(keystrokes: 'ctrl-z', target: element1)).toHaveLength 0 + describe "when setting core.packagesWithKeymapsDisabled", -> + it "ignores package names in the array that aren't loaded", -> + atom.packages.observePackagesWithKeymapsDisabled() + + expect(-> atom.config.set("core.packagesWithKeymapsDisabled", ["package-does-not-exist"])).not.toThrow() + expect(-> atom.config.set("core.packagesWithKeymapsDisabled", [])).not.toThrow() + describe "when the package's keymaps are disabled and re-enabled after it is activated", -> it "removes and re-adds the keymaps", -> element1 = createTestElement('test-1') From 4692ca9702210c0c25118a08deaee67f848afbc8 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 10 Nov 2015 13:07:58 -0800 Subject: [PATCH 2/2] Guard against package not being loaded --- src/package-manager.coffee | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 5c0df4b70..215ddefcd 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -336,8 +336,10 @@ class PackageManager keymapsToEnable = _.difference(oldValue, newValue) keymapsToDisable = _.difference(newValue, oldValue) - @getLoadedPackage(packageName).deactivateKeymaps() for packageName in keymapsToDisable when not @isPackageDisabled(packageName) - @getLoadedPackage(packageName).activateKeymaps() for packageName in keymapsToEnable when not @isPackageDisabled(packageName) + for packageName in keymapsToDisable when not @isPackageDisabled(packageName) + @getLoadedPackage(packageName)?.deactivateKeymaps() + for packageName in keymapsToEnable when not @isPackageDisabled(packageName) + @getLoadedPackage(packageName)?.activateKeymaps() null loadPackages: ->