From 8d212b10d497ef96c4b199ffaa175aca6898c63e Mon Sep 17 00:00:00 2001 From: Ian Olsen Date: Thu, 5 Jan 2017 10:49:09 -0800 Subject: [PATCH 1/2] Add an event for after the user keymap has loaded. --- src/keymap-extensions.coffee | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/keymap-extensions.coffee b/src/keymap-extensions.coffee index b5c3964f9..665e59bee 100644 --- a/src/keymap-extensions.coffee +++ b/src/keymap-extensions.coffee @@ -8,6 +8,9 @@ bundledKeymaps = require('../package.json')?._atomKeymaps KeymapManager::onDidLoadBundledKeymaps = (callback) -> @emitter.on 'did-load-bundled-keymaps', callback +KeymapManager::onDidLoadUserKeymap = (callback) -> + @emitter.on 'did-load-user-keymap', callback + KeymapManager::loadBundledKeymaps = -> keymapsPath = path.join(@resourcePath, 'keymaps') if bundledKeymaps? @@ -32,8 +35,10 @@ KeymapManager::loadUserKeymap = -> return unless fs.isFileSync(userKeymapPath) try + errorLoading = false @loadKeymap(userKeymapPath, watch: true, suppressErrors: true, priority: 100) catch error + errorLoading = true if error.message.indexOf('Unable to watch path') > -1 message = """ Unable to watch path: `#{path.basename(userKeymapPath)}`. Make sure you @@ -49,6 +54,9 @@ KeymapManager::loadUserKeymap = -> stack = error.stack @notificationManager.addFatalError(error.message, {detail, stack, dismissable: true}) + @emitter.emit 'did-load-user-keymap' unless errorLoading + + KeymapManager::subscribeToFileReadFailure = -> @onDidFailToReadFile (error) => userKeymapPath = @getUserKeymapPath() From d35a63aa6a739b05644849353f2d6e98a8aef664 Mon Sep 17 00:00:00 2001 From: Ian Olsen Date: Thu, 5 Jan 2017 17:12:02 -0800 Subject: [PATCH 2/2] Basic test for user keymap loaded event --- spec/keymap-extensions-spec.coffee | 23 +++++++++++++++++++++++ src/keymap-extensions.coffee | 4 +--- 2 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 spec/keymap-extensions-spec.coffee diff --git a/spec/keymap-extensions-spec.coffee b/spec/keymap-extensions-spec.coffee new file mode 100644 index 000000000..784764036 --- /dev/null +++ b/spec/keymap-extensions-spec.coffee @@ -0,0 +1,23 @@ +path = require 'path' +temp = require('temp').track() +CSON = require 'season' +fs = require 'fs-plus' + +describe "keymap-extensions", -> + + beforeEach -> + atom.keymaps.configDirPath = temp.path('atom-spec-keymap-ext') + fs.writeFileSync(atom.keymaps.getUserKeymapPath(), '#') + @userKeymapLoaded = -> + atom.keymaps.onDidLoadUserKeymap => @userKeymapLoaded() + + afterEach -> + fs.removeSync(atom.keymaps.configDirPath) + atom.keymaps.destroy() + + describe "did-load-user-keymap", -> + + it "fires when user keymap is loaded", -> + spyOn(this, 'userKeymapLoaded') + atom.keymaps.loadUserKeymap() + expect(@userKeymapLoaded).toHaveBeenCalled() diff --git a/src/keymap-extensions.coffee b/src/keymap-extensions.coffee index 665e59bee..bf8302f4c 100644 --- a/src/keymap-extensions.coffee +++ b/src/keymap-extensions.coffee @@ -35,10 +35,8 @@ KeymapManager::loadUserKeymap = -> return unless fs.isFileSync(userKeymapPath) try - errorLoading = false @loadKeymap(userKeymapPath, watch: true, suppressErrors: true, priority: 100) catch error - errorLoading = true if error.message.indexOf('Unable to watch path') > -1 message = """ Unable to watch path: `#{path.basename(userKeymapPath)}`. Make sure you @@ -54,7 +52,7 @@ KeymapManager::loadUserKeymap = -> stack = error.stack @notificationManager.addFatalError(error.message, {detail, stack, dismissable: true}) - @emitter.emit 'did-load-user-keymap' unless errorLoading + @emitter.emit 'did-load-user-keymap' KeymapManager::subscribeToFileReadFailure = ->