From 2dcbf7f7511e20ab1f79d1e19c983d5797e02aa0 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 14 Mar 2014 14:55:10 -0600 Subject: [PATCH] Replace Keymap subclass with keymap-extensions --- spec/keymap-spec.coffee | 12 ++++++++--- spec/spec-helper.coffee | 3 ++- src/atom.coffee | 7 ++++-- src/keymap-extensions.coffee | 19 +++++++++++++++++ src/keymap.coffee | 41 ------------------------------------ 5 files changed, 35 insertions(+), 47 deletions(-) create mode 100644 src/keymap-extensions.coffee delete mode 100644 src/keymap.coffee diff --git a/spec/keymap-spec.coffee b/spec/keymap-spec.coffee index f4c726f89..07d4282c4 100644 --- a/spec/keymap-spec.coffee +++ b/spec/keymap-spec.coffee @@ -1,7 +1,8 @@ fs = require 'fs-plus' path = require 'path' temp = require 'temp' -Keymap = require '../src/keymap' +Keymap = require 'atom-keymap' +require '../src/keymap-extensions' {$, $$, WorkspaceView} = require 'atom' describe "Keymap", -> @@ -12,7 +13,10 @@ describe "Keymap", -> beforeEach -> configDirPath = temp.mkdirSync('atom') - keymap = new Keymap({configDirPath, resourcePath}) + keymap = new Keymap + keymap.configDirPath = configDirPath + keymap.resourcePath = resourcePath + fragment = $ """
@@ -386,7 +390,9 @@ describe "Keymap", -> beforeEach -> resourcePath = temp.mkdirSync('atom') - customKeymap = new Keymap({configDirPath, resourcePath}) + customKeymap = new Keymap + customKeymap.configDirPath = configDirPath + customKeymap.resourcePath = resourcePath afterEach -> customKeymap.destroy() diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 1a5e26359..cc77bf244 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -6,8 +6,9 @@ require '../vendor/jasmine-jquery' path = require 'path' _ = require 'underscore-plus' fs = require 'fs-plus' +Keymap = require 'atom-keymap' {$, WorkspaceView} = require 'atom' -Keymap = require '../src/keymap' +require '../src/keymap-extensions' Config = require '../src/config' {Point} = require 'text-buffer' Project = require '../src/project' diff --git a/src/atom.coffee b/src/atom.coffee index 68de0ccf3..a785151dd 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -138,7 +138,8 @@ class Atom extends Model @loadTime = null Config = require './config' - Keymap = require './keymap' + Keymap = require 'atom-keymap' + require './keymap-extensions' PackageManager = require './package-manager' Clipboard = require './clipboard' Syntax = require './syntax' @@ -149,7 +150,9 @@ class Atom extends Model configDirPath = @getConfigDirPath() @config = new Config({configDirPath, resourcePath}) - @keymap = new Keymap({configDirPath, resourcePath}) + @keymap = new Keymap + @keymap.configDirPath = configDirPath + @keymap.resourcePath = resourcePath @packages = new PackageManager({devMode, configDirPath, resourcePath}) @themes = new ThemeManager({packageManager: @packages, configDirPath, resourcePath}) @contextMenu = new ContextMenuManager(devMode) diff --git a/src/keymap-extensions.coffee b/src/keymap-extensions.coffee new file mode 100644 index 000000000..30d7cc1b9 --- /dev/null +++ b/src/keymap-extensions.coffee @@ -0,0 +1,19 @@ +fs = require 'fs-plus' +path = require 'path' +Keymap = require 'atom-keymap' +season = require 'season' + +Keymap::loadBundledKeymaps = -> + @loadKeyBindings(path.join(@resourcePath, 'keymaps')) + @emit('bundled-keymaps-loaded') + +Keymap::getUserKeymapPath = -> + if userKeymapPath = season.resolve(path.join(@configDirPath, 'keymap')) + userKeymapPath + else + path.join(@configDirPath, 'keymap.cson') + +Keymap::loadUserKeymap = -> + userKeymapPath = @getUserKeymapPath() + if fs.isFileSync(userKeymapPath) + @loadKeyBindings(userKeymapPath, watch: true, suppressErrors: true) diff --git a/src/keymap.coffee b/src/keymap.coffee deleted file mode 100644 index b99bfb95e..000000000 --- a/src/keymap.coffee +++ /dev/null @@ -1,41 +0,0 @@ -path = require 'path' -AtomKeymap = require 'atom-keymap' -season = require 'season' -fs = require 'fs-plus' - -# Public: Associates keybindings with commands. -# -# An instance of this class is always available as the `atom.keymap` global. -# -# Keymaps are defined in a CSON/JSON format. A typical keymap looks something -# like this: -# -# ```cson -# 'body': -# 'ctrl-l': 'package:do-something' -# '.someClass': -# 'enter': 'package:confirm' -# ``` -# -# As a key, you define the DOM element you want to work on, using CSS notation. -# For that key, you define one or more key:value pairs, associating keystrokes -# with a command to execute. -module.exports = -class Keymap extends AtomKeymap - constructor: ({@resourcePath, @configDirPath}) -> - super - - loadBundledKeymaps: -> - @loadKeyBindings(path.join(@resourcePath, 'keymaps')) - @emit('bundled-keymaps-loaded') - - getUserKeymapPath: -> - if userKeymapPath = season.resolve(path.join(@configDirPath, 'keymap')) - userKeymapPath - else - path.join(@configDirPath, 'keymap.cson') - - loadUserKeymap: -> - userKeymapPath = @getUserKeymapPath() - if fs.isFileSync(userKeymapPath) - @loadKeyBindings(userKeymapPath, watch: true, suppressErrors: true)