From dcbbeb7e228e707d711807a280fff48fa5d58cc3 Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 6 Dec 2012 15:54:42 +0400 Subject: [PATCH] enable seting keybindings by name --- demo/kitchen-sink/demo.js | 11 ++++------- lib/ace/editor.js | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 9 deletions(-) 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 +});