diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee
index d352f9388..61ef5f380 100644
--- a/build/Gruntfile.coffee
+++ b/build/Gruntfile.coffee
@@ -146,7 +146,7 @@ module.exports = (grunt) ->
csonConfig =
options:
- rootObject: true
+ rootObject: false
cachePath: path.join(home, '.nylas', 'compile-cache', 'grunt-cson')
glob_to_multiple:
@@ -154,6 +154,7 @@ module.exports = (grunt) ->
src: [
'menus/*.cson'
'keymaps/*.cson'
+ 'keymaps/templates/*.cson'
'static/**/*.cson'
]
dest: appDir
diff --git a/internal_packages/preferences/lib/tabs/preferences-keymaps.cjsx b/internal_packages/preferences/lib/tabs/preferences-keymaps.cjsx
index a0db6c508..9c702ae8e 100644
--- a/internal_packages/preferences/lib/tabs/preferences-keymaps.cjsx
+++ b/internal_packages/preferences/lib/tabs/preferences-keymaps.cjsx
@@ -36,7 +36,9 @@ class PreferencesKeymaps extends React.Component
fs.readdir templatesDir, (err, files) =>
return unless files and files instanceof Array
templates = files.filter (filename) =>
- path.extname(filename) is '.cson'
+ path.extname(filename) is '.cson' or path.extname(filename) is '.json'
+ templates = templates.map (filename) =>
+ path.parse(filename).name
@setState(templates: templates)
_getStateFromKeymaps: =>
@@ -55,7 +57,7 @@ class PreferencesKeymaps extends React.Component
value={@props.config.get('core.keymapTemplate')}
onChange={ (event) => @props.config.set('core.keymapTemplate', event.target.value) }>
{ @state.templates.map (template) =>
-
+
}
diff --git a/keymaps/base.darwin.cson b/keymaps/base-darwin.cson
similarity index 100%
rename from keymaps/base.darwin.cson
rename to keymaps/base-darwin.cson
diff --git a/keymaps/base.linux.cson b/keymaps/base-linux.cson
similarity index 100%
rename from keymaps/base.linux.cson
rename to keymaps/base-linux.cson
diff --git a/keymaps/base.win32.cson b/keymaps/base-win32.cson
similarity index 100%
rename from keymaps/base.win32.cson
rename to keymaps/base-win32.cson
diff --git a/src/config-schema.coffee b/src/config-schema.coffee
index 553aba2a4..9db26d4b6 100644
--- a/src/config-schema.coffee
+++ b/src/config-schema.coffee
@@ -22,7 +22,7 @@ module.exports =
type: 'string'
keymapTemplate:
type: 'string'
- default: 'Gmail.cson'
+ default: 'Gmail'
attachments:
type: 'object'
properties:
diff --git a/src/keymap-extensions.coffee b/src/keymap-extensions.coffee
index 3dffc79cf..3995c2422 100644
--- a/src/keymap-extensions.coffee
+++ b/src/keymap-extensions.coffee
@@ -10,8 +10,8 @@ KeymapManager::onDidLoadBundledKeymaps = (callback) ->
KeymapManager::loadBundledKeymaps = ->
# Load the base keymap and the base.platform keymap
- baseKeymap = path.join(@resourcePath, 'keymaps', 'base.cson')
- basePlatformKeymap = path.join(@resourcePath, 'keymaps', "base.#{process.platform}.cson")
+ baseKeymap = fs.resolve(path.join(@resourcePath, 'keymaps'), 'base', ['cson', 'json'])
+ basePlatformKeymap = fs.resolve(path.join(@resourcePath, 'keymaps'), "base-#{process.platform}", ['cson', 'json'])
@loadKeymap(baseKeymap)
@loadKeymap(basePlatformKeymap)
@@ -22,9 +22,12 @@ KeymapManager::loadBundledKeymaps = ->
@removeBindingsFromSource(templateKeymapPath) if templateKeymapPath
templateFile = atom.config.get(templateConfigKey)
if templateFile
- templateKeymapPath = path.join(@resourcePath, 'keymaps', 'templates', templateFile)
- @loadKeymap(templateKeymapPath)
- @emitter.emit('did-reload-keymap', {path: templateKeymapPath})
+ templateKeymapPath = fs.resolve(path.join(@resourcePath, 'keymaps', 'templates'), templateFile, ['cson', 'json'])
+ if fs.existsSync(templateKeymapPath)
+ @loadKeymap(templateKeymapPath)
+ @emitter.emit('did-reload-keymap', {path: templateKeymapPath})
+ else
+ console.warn("Could not find #{templateKeymapPath}")
atom.config.observe(templateConfigKey, reloadTemplateKeymap)
reloadTemplateKeymap()