diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index ce5d57ad..93859a61 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -46,8 +46,6 @@ var theme = require("ace/theme/textmate"); var EditSession = require("ace/edit_session").EditSession; var UndoManager = require("ace/undomanager").UndoManager; -var vim = require("ace/keyboard/vim").handler; -var emacs = require("ace/keyboard/emacs").handler; var HashHandler = require("ace/keyboard/hash_handler").HashHandler; var Renderer = require("ace/virtual_renderer").VirtualRenderer; @@ -162,11 +160,10 @@ commands.addCommand({ exec: function() {alert("Fake Save File");} }); -var keybindings = { - // Null = use "default" keymapping - ace: null, - vim: vim, - emacs: emacs, +var keybindings = { + ace: null, // Null = use "default" keymapping + vim: require("ace/keyboard/vim").handler, + emacs: "ace/keyboard/emacs", // This is a way to define simple keyboard remappings custom: new HashHandler({ "gotoright": "Tab", diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 865de51f..44bfb36a 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -46,6 +46,7 @@ var Range = require("./range").Range; var EventEmitter = require("./lib/event_emitter").EventEmitter; var CommandManager = require("./commands/command_manager").CommandManager; var defaultCommands = require("./commands/default_commands").commands; +var config = require("./config"); /** * @@ -100,7 +101,17 @@ var Editor = function(renderer, session) { * **/ this.setKeyboardHandler = function(keyboardHandler) { - this.keyBinding.setKeyboardHandler(keyboardHandler); + if (typeof keyboardHandler == "string" && keyboardHandler) { + this.$keybindingId = keyboardHandler; + var _self = this; + config.loadModule(["keybinding", keyboardHandler], function(module) { + if (_self.$keybindingId == keyboardHandler) + _self.keyBinding.setKeyboardHandler(module && module.handler); + }); + } else { + delete this.$keybindingId; + this.keyBinding.setKeyboardHandler(keyboardHandler); + } }; /** @@ -2149,4 +2160,4 @@ var Editor = function(renderer, session) { exports.Editor = Editor; -}); \ No newline at end of file +});