aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Crosby2009-11-29 01:16:32 -0800
committerPhil Crosby2009-11-29 01:16:32 -0800
commitfe86709787870d37c3efc6933f8c429f1f46cc38 (patch)
treebf449a0bdbbbca5e1a864d7fa65cd4763918c62c
parentb04b0320cbeca73d5fac88b1c84f3c666cd2e6c4 (diff)
parent44a63c99a86032c0a73abb86fc2cb763bcd00a98 (diff)
downloadvimium-fe86709787870d37c3efc6933f8c429f1f46cc38.tar.bz2
Merge branch 'master' of github.com:philc/vimium
-rw-r--r--background_page.html6
-rw-r--r--settings.html4
-rw-r--r--vimiumFrontend.js60
3 files changed, 65 insertions, 5 deletions
diff --git a/background_page.html b/background_page.html
index 81e4c4a6..a370ec2e 100644
--- a/background_page.html
+++ b/background_page.html
@@ -200,10 +200,14 @@
keyToCommandRegistry['L'] = 'goForward';
keyToCommandRegistry['zi'] = 'zoomIn';
- keyToCommandRegistry['zo'] = 'zoomOut';
+ keyToCommandRegistry['zo'] = 'zoomOut';
keyToCommandRegistry['f'] = 'activateLinkHintsMode';
+ keyToCommandRegistry['/'] = 'enterFindMode';
+ keyToCommandRegistry['n'] = 'performFind';
+ keyToCommandRegistry['N'] = 'performBackwardsFind';
+
keyToCommandRegistry['J'] = nextTab;
keyToCommandRegistry['K'] = previousTab;
diff --git a/settings.html b/settings.html
index f0cb87f5..004d3e11 100644
--- a/settings.html
+++ b/settings.html
@@ -23,10 +23,10 @@
function restoreOptions() {
// TODO(ilya): Create a single option list with defaults somewhere to share across various scripts.
var scrollStepSize = localStorage["scrollStepSize"] || 60;
- var defaultZoomLvel = localStorage["defaultZoomLevel"] || 100;
+ var defaultZoomLevel = localStorage["defaultZoomLevel"] || 100;
document.getElementById("scrollStepSize").value = scrollStepSize;
- document.getElementById("defaultZoomLevel").value = defaultZoomLvel
+ document.getElementById("defaultZoomLevel").value = defaultZoomLevel;
}
</script>
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index 735267e7..a743ec39 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, false, false, true, false, true, false);
+}
+
+function performBackwardsFind() {
+ window.find(findModeQuery, false, 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;