diff --git a/extensions/filefinder/filefinder.coffee b/extensions/filefinder/filefinder.coffee index 82aecbe8b..30eab6816 100644 --- a/extensions/filefinder/filefinder.coffee +++ b/extensions/filefinder/filefinder.coffee @@ -1,13 +1,11 @@ Extension = require 'extension' -KeyBinder = require 'key-binder' -Event = require 'event' FilefinderPane = require 'filefinder/filefinder-pane' module.exports = class Filefinder extends Extension constructor: -> - KeyBinder.register "filefinder", @ - KeyBinder.load require.resolve "filefinder/key-bindings.coffee" + atom.keybinder.register "filefinder", @ + atom.keybinder.load require.resolve "filefinder/key-bindings.coffee" @pane = new FilefinderPane @ diff --git a/extensions/tabs/tabs.coffee b/extensions/tabs/tabs.coffee index c7b50592e..925be2503 100644 --- a/extensions/tabs/tabs.coffee +++ b/extensions/tabs/tabs.coffee @@ -1,7 +1,6 @@ $ = require 'jquery' Extension = require 'extension' -KeyBinder = require 'key-binder' TabsPane = require 'tabs/tabs-pane' fs = require 'fs' @@ -9,8 +8,8 @@ fs = require 'fs' module.exports = class Tabs extends Extension constructor: () -> - KeyBinder.register "tabs", @ - KeyBinder.load require.resolve "tabs/key-bindings.coffee" + atom.keybinder.register "tabs", @ + atom.keybinder.load require.resolve "tabs/key-bindings.coffee" @pane = new TabsPane @ diff --git a/extensions/tree/tree.coffee b/extensions/tree/tree.coffee index d2233aa2e..4b50e2575 100644 --- a/extensions/tree/tree.coffee +++ b/extensions/tree/tree.coffee @@ -1,8 +1,6 @@ _ = require 'underscore' -Event = require 'event' Extension = require 'extension' -KeyBinder = require 'key-binder' Storage = require 'storage' TreePane = require 'tree/tree-pane' Watcher = require 'watcher' @@ -18,8 +16,8 @@ class Tree extends Extension paths: [] constructor: -> - KeyBinder.register "tree", @ - KeyBinder.load require.resolve "tree/key-bindings.coffee" + atom.keybinder.register "tree", @ + atom.keybinder.load require.resolve "tree/key-bindings.coffee" # watch the root dir Watcher.watch window.path, @watchDir diff --git a/src/app.coffee b/src/app.coffee index 00675c610..da23d1fe3 100644 --- a/src/app.coffee +++ b/src/app.coffee @@ -1,11 +1,10 @@ -KeyBinder = require 'key-binder' fs = require 'fs' require 'window' module.exports = class App constructor: -> - KeyBinder.register "app", @ + atom.keybinder.register "app", @ window.startup() open: (path) -> diff --git a/src/editor.coffee b/src/editor.coffee index 8a8fb690e..643d0418d 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -3,7 +3,6 @@ _ = require 'underscore' fs = require 'fs' ace = require 'ace/ace' -KeyBinder = require 'key-binder' Storage = require 'storage' Pane = require 'pane' @@ -25,7 +24,7 @@ class Editor extends Pane position: "main" constructor: -> - KeyBinder.register "editor", @ + atom.keybinder.register "editor", @ @show() diff --git a/src/key-binder.coffee b/src/key-binder.coffee index 4d76f5694..a2096d7e5 100644 --- a/src/key-binder.coffee +++ b/src/key-binder.coffee @@ -5,14 +5,14 @@ Watcher = require 'watcher' module.exports = class KeyBinder - @bindings: {} + bindings: {} - @scopes: {} + scopes: {} - @register: (name, scope) -> + register: (name, scope) -> @scopes[name] = scope - @load: (path) -> + load: (path) -> try Watcher.watch path, => # Should we keep track of which file bindings are associated with? That @@ -27,7 +27,7 @@ class KeyBinder catch error console.error "#{@name}: Could not load key bindings at `#{path}`. #{error}" - @create: (scope, binding, method) -> + create: (scope, binding, method) -> if typeof scope is "string" throw "#{@name}: Unknown scope `#{scope}`" unless @scopes[scope] scope = @scopes[scope] @@ -43,7 +43,7 @@ class KeyBinder callbacks.push callback - @handleEvent: (event) -> + handleEvent: (event) -> keys = [] keys.push @modifierKeys.command if event.modifierFlags & OSX.NSCommandKeyMask keys.push @modifierKeys.shift if event.modifierFlags & OSX.NSShiftKeyMask @@ -67,7 +67,7 @@ class KeyBinder true - @bindingParser: (binding) -> + bindingParser: (binding) -> keys = binding.trim().split '-' modifiers = [] @@ -88,7 +88,7 @@ class KeyBinder modifiers.concat(key).sort().join "-" - @bindingFromAscii: (binding) -> + bindingFromAscii: (binding) -> inverseModifierKeys = {} inverseModifierKeys[number] = label for label, number of @modifierKeys @@ -106,7 +106,7 @@ class KeyBinder keys.join '-' - @modifierKeys: + modifierKeys: '⇧': 16 '⌘': 91 '⌥': 18 @@ -118,7 +118,7 @@ class KeyBinder command: 91 cmd: 91 - @namedKeys: + namedKeys: backspace: 8 tab: 9 clear: 12 diff --git a/src/startup.coffee b/src/startup.coffee index d95a9288d..747477122 100644 --- a/src/startup.coffee +++ b/src/startup.coffee @@ -3,8 +3,11 @@ App = require 'app' Event = require 'event' Native = require 'native' +KeyBinder = require 'key-binder' window.atom = {} window.atom.native = new Native window.atom.event = new Event +window.atom.keybinder = new KeyBinder + window.atom.app = new App diff --git a/src/window.coffee b/src/window.coffee index dbdd6b89f..74c5dc878 100644 --- a/src/window.coffee +++ b/src/window.coffee @@ -1,8 +1,6 @@ Browser = require 'browser' Editor = require 'editor' Extension = require 'extension' -KeyBinder = require 'key-binder' -Native = require 'native' Storage = require 'storage' fs = require 'fs' @@ -22,7 +20,7 @@ windowAdditions = path: null startup: () -> - KeyBinder.register "window", window + atom.keybinder.register "window", window @path = $atomController.path @setTitle _.last @path.split '/' @@ -79,9 +77,9 @@ windowAdditions = atom.event.trigger 'extensions:loaded' loadKeyBindings: -> - KeyBinder.load "#{@appRoot}/static/key-bindings.coffee" + atom.keybinder.load "#{@appRoot}/static/key-bindings.coffee" if fs.isFile "~/.atomicity/key-bindings.coffee" - KeyBinder.load "~/.atomicity/key-bindings.coffee" + atom.keybinder.load "~/.atomicity/key-bindings.coffee" loadSettings: -> if fs.isFile "~/.atomicity/settings.coffee" @@ -108,7 +106,7 @@ windowAdditions = atom.event.trigger 'window:close', path handleKeyEvent: -> - KeyBinder.handleEvent.apply KeyBinder, arguments + atom.keybinder.handleEvent.apply atom.keybinder, arguments triggerEvent: -> atom.event.trigger arguments...