aboutsummaryrefslogtreecommitdiffstats
path: root/vimiumFrontend.js
diff options
context:
space:
mode:
authorilya2009-11-28 21:46:51 -0800
committerilya2009-11-28 21:46:51 -0800
commitaddba68648a20435a5dc68274229cf1661c7edfe (patch)
treeab6cc3f262a4d0af05d3215314bcec29c0523d92 /vimiumFrontend.js
parent0c841e613bb0ecdbb367a630e7ed88b6dd7a85e6 (diff)
downloadvimium-addba68648a20435a5dc68274229cf1661c7edfe.tar.bz2
First pass at find interface. Still needs some UI love and a highlight-all feature (maybe).
Diffstat (limited to 'vimiumFrontend.js')
-rw-r--r--vimiumFrontend.js60
1 files changed, 58 insertions, 2 deletions
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index 735267e7..59fb9841 100644
--- a/vimiumFrontend.js
+++ b/vimiumFrontend.js
@@ -9,8 +9,10 @@ var settingsToLoad = ["scrollStepSize"];
var getCurrentUrlHandlers = []; // function(url)
-var keyCodes = { ESC: 27, backspace: 8, deleteKey: 46 };
+var keyCodes = { ESC: 27, backspace: 8, deleteKey: 46, enter: 13 };
var insertMode = false;
+var findMode = false;
+var findModeQuery = "";
var keyPort;
var settingPort;
var saveZoomLevelPort;
@@ -166,13 +168,31 @@ function onKeydown(event) {
keyChar = "<c-" + keyChar + ">";
}
+ // NOTE(ilya): Not really sure why yet but / yields 191 (¿) on my mac.
+ if (event.keyCode == 191) { keyChar = "/"; }
+
if (insertMode && event.keyCode == keyCodes.ESC)
{
// Remove focus so the user can't just get himself back into insert mode by typing in the same input box.
if (isInputOrText(event.srcElement)) { event.srcElement.blur(); }
exitInsertMode();
}
- else if (!insertMode && keyChar)
+ else if (findMode && event.keyCode == keyCodes.ESC)
+ exitFindMode();
+ else if (findMode)
+ {
+ if (keyChar)
+ handleKeyCharForFindMode(keyChar);
+ // Don't let backspace take us back in history.
+ else if (event.keyCode == keyCodes.backspace || event.keyCode == keyCodes.deleteKey)
+ {
+ handleDeleteForFindMode();
+ event.preventDefault();
+ }
+ else if (event.keyCode == keyCodes.enter)
+ handleEnterForFindMode();
+ }
+ else if (!insertMode && !findMode && keyChar)
keyPort.postMessage(keyChar);
}
@@ -201,6 +221,42 @@ function exitInsertMode() {
HUD.hide();
}
+function handleKeyCharForFindMode(keyChar) {
+ findModeQuery = findModeQuery + keyChar;
+ HUD.show("/" + findModeQuery);
+ performFind();
+}
+
+function handleDeleteForFindMode() {
+ findModeQuery = findModeQuery.substring(0, findModeQuery.length - 1);
+ HUD.show("/" + findModeQuery);
+ performFind();
+}
+
+function handleEnterForFindMode() {
+ exitFindMode();
+ performFind();
+}
+
+function performFind(backwards) {
+ window.find(findModeQuery, true, false, true, false, true, false);
+}
+
+function performBackwardsFind() {
+ window.find(findModeQuery, true, true, true, false, true, false);
+}
+
+function enterFindMode() {
+ findModeQuery = "";
+ findMode = true;
+ HUD.show("/");
+}
+
+function exitFindMode() {
+ findMode = false;
+ HUD.hide();
+}
+
HUD = {
show:function(text) {
HUD.displayElement().innerHTML = text;