diff options
| author | Phil Crosby | 2009-11-29 01:16:32 -0800 |
|---|---|---|
| committer | Phil Crosby | 2009-11-29 01:16:32 -0800 |
| commit | fe86709787870d37c3efc6933f8c429f1f46cc38 (patch) | |
| tree | bf449a0bdbbbca5e1a864d7fa65cd4763918c62c | |
| parent | b04b0320cbeca73d5fac88b1c84f3c666cd2e6c4 (diff) | |
| parent | 44a63c99a86032c0a73abb86fc2cb763bcd00a98 (diff) | |
| download | vimium-fe86709787870d37c3efc6933f8c429f1f46cc38.tar.bz2 | |
Merge branch 'master' of github.com:philc/vimium
| -rw-r--r-- | background_page.html | 6 | ||||
| -rw-r--r-- | settings.html | 4 | ||||
| -rw-r--r-- | vimiumFrontend.js | 60 |
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; |
