From ab2021bdd8225d320f35e126700192070229f2ff Mon Sep 17 00:00:00 2001 From: Robert Krahn Date: Sun, 26 May 2013 21:03:12 -0700 Subject: [PATCH] emacs: fix handling of universalArgument, it sets data.count to 4 --- lib/ace/keyboard/emacs.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/ace/keyboard/emacs.js b/lib/ace/keyboard/emacs.js index bb688868..4cb0e2f6 100644 --- a/lib/ace/keyboard/emacs.js +++ b/lib/ace/keyboard/emacs.js @@ -231,6 +231,10 @@ exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { if (count) { data.count = count; return {command: "null"}; + } else if (data.universalArgument) { + // if no number pressed use emacs defaults for universalArgument + // which is 4 + data.count = 4; } } data.universalArgument = false; @@ -288,15 +292,20 @@ exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { if (data.count) { var count = data.count; data.count = 0; - return { - args: args, - command: { - exec: function(editor, args) { - for (var i = 0; i < count; i++) - command.exec(editor, args); + if (!command || !command.handlesCount) { + return { + args: args, + command: { + exec: function(editor, args) { + for (var i = 0; i < count; i++) + command.exec(editor, args); + } } - } - }; + }; + } else { + if (!args) args = {} + if (typeof args === 'object') args.count = count; + } } return {command: command, args: args};