From a9bbd7995aec0f6d0dc22091b55aceb58d5fd350 Mon Sep 17 00:00:00 2001 From: Joe Cheng Date: Tue, 8 Feb 2011 08:58:34 +0800 Subject: [PATCH 1/2] PageUp/Down behavior that is more consistent with native OS --- lib/ace/keyboard/keybinding/default_mac.js | 2 ++ lib/ace/keyboard/keybinding/default_win.js | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/ace/keyboard/keybinding/default_mac.js b/lib/ace/keyboard/keybinding/default_mac.js index 778ecc65..37bcdda2 100644 --- a/lib/ace/keyboard/keybinding/default_mac.js +++ b/lib/ace/keyboard/keybinding/default_mac.js @@ -75,8 +75,10 @@ exports.bindings = { "gotoright": "Right", "selectpagedown": "Shift-PageDown", "pagedown": "PageDown", + "gotopagedown": "Option-PageDown", "selectpageup": "Shift-PageUp", "pageup": "PageUp", + "gotopageup": "Option-PageUp", "selectlinestart": "Shift-Home", "selectlineend": "Shift-End", "del": "Delete", diff --git a/lib/ace/keyboard/keybinding/default_win.js b/lib/ace/keyboard/keybinding/default_win.js index 507fb517..e673e656 100644 --- a/lib/ace/keyboard/keybinding/default_win.js +++ b/lib/ace/keyboard/keybinding/default_win.js @@ -74,9 +74,9 @@ exports.bindings = { "selectright": "Shift-Right", "gotoright": "Right", "selectpagedown": "Shift-PageDown", - "pagedown": "PageDown", + "gotopagedown": "PageDown", "selectpageup": "Shift-PageUp", - "pageup": "PageUp", + "gotopageup": "PageUp", "selectlinestart": "Shift-Home", "selectlineend": "Shift-End", "del": "Delete", From ae4b171065f1a7a6a3f926842cb36a5eb319db5f Mon Sep 17 00:00:00 2001 From: Daniel Krech Date: Sun, 6 Feb 2011 23:53:02 +0800 Subject: [PATCH 2/2] Fixed to allow tokenizing of an empty line. eg. a rule with a regex of ^$ --- lib/ace/tokenizer.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/ace/tokenizer.js b/lib/ace/tokenizer.js index a5f847ff..fa70e2d5 100644 --- a/lib/ace/tokenizer.js +++ b/lib/ace/tokenizer.js @@ -74,11 +74,8 @@ var Tokenizer = function(rules) { var type = "text"; var value = match[0]; - if (re.lastIndex == lastIndex) { throw new Error("tokenizer error"); } - lastIndex = re.lastIndex; - for ( var i = 0; i < state.length; i++) { - if (match[i + 1]) { + if (match[i + 1] !== undefined) { if (typeof state[i].token == "function") { type = state[i].token(match[0]); } @@ -110,6 +107,10 @@ var Tokenizer = function(rules) { } else { token.value += value; } + if (lastIndex == line.length) { + break; + } + lastIndex = re.lastIndex; }; if (token.type) {