diff options
| author | Phil Crosby | 2010-01-18 00:24:18 -0800 |
|---|---|---|
| committer | Phil Crosby | 2010-01-18 00:24:18 -0800 |
| commit | 3f1cdef638d5a0fdf832788fc90776d571d47fb8 (patch) | |
| tree | c52fad803afd0dc72cab2937e14c216d019fdc3e | |
| parent | f0358dad04862e00452bfcb987d222a934e32c69 (diff) | |
| download | vimium-3f1cdef638d5a0fdf832788fc90776d571d47fb8.tar.bz2 | |
Make the characters used in link hints a user-configurable option. Fixes #66.
I'll clean up the way we store and handle default options shortly.
| -rw-r--r-- | background_page.html | 6 | ||||
| -rw-r--r-- | linkHints.js | 13 | ||||
| -rw-r--r-- | options.html | 6 | ||||
| -rw-r--r-- | vimiumFrontend.js | 2 |
4 files changed, 17 insertions, 10 deletions
diff --git a/background_page.html b/background_page.html index 1c326cba..5399c51f 100644 --- a/background_page.html +++ b/background_page.html @@ -6,7 +6,11 @@ var validFirstKeys = {}; var singleKeyCommands = []; - var defaultSettings = { scrollStepSize: 60 }; + var defaultSettings = { + scrollStepSize: 60, + defaultZoomLevel: 100, + linkHintCharacters: "sadfjklewcmp" + }; // Port handler mapping var portHandlers = { diff --git a/linkHints.js b/linkHints.js index 0d16bab1..864ee23a 100644 --- a/linkHints.js +++ b/linkHints.js @@ -2,6 +2,8 @@ * This implements link hinting. Typing "F" will enter link-hinting mode, where all clickable items on * the page have a hint marker displayed containing a sequence of letters. Typing those letters will select * a link. + * + * The characters we use to show link hints are a user-configurable option. By default they're the home row. */ var linkHintsCss = '.vimiumHintMarker {' + @@ -22,7 +24,6 @@ var linkHintsCss = '}'; var hintMarkers = []; -var hintCharacters = "sadfjklewcmp"; // The characters that were typed in while in "link hints" mode. var hintKeystrokeQueue = []; var linkHintsModeActivated = false; @@ -54,7 +55,7 @@ function buildLinkHints() { // Initialize the number used to generate the character hints to be as many digits as we need to // highlight all the links on the page; we don't want some link hints to have more chars than others. - var digitsNeeded = Math.ceil(logXOfBase(visibleElements.length, hintCharacters.length)); + var digitsNeeded = Math.ceil(logXOfBase(visibleElements.length, settings.linkHintCharacters.length)); var linkHintNumber = 0; for (var i = 0; i < visibleElements.length; i++) { hintMarkers.push(addMarkerFor(visibleElements[i], linkHintNumber, digitsNeeded)); @@ -139,7 +140,7 @@ function onKeyDownInLinkHintsMode(event) { hintKeystrokeQueue.pop(); updateLinkHints(); } - } else if (hintCharacters.indexOf(keyChar) >= 0) { + } else if (settings.linkHintCharacters.indexOf(keyChar) >= 0) { hintKeystrokeQueue.push(keyChar); updateLinkHints(); } else { @@ -213,12 +214,12 @@ function highlightLinkMatches(searchString) { * the hint text. The hint string will be "padded with zeroes" to ensure its length is equal to numHintDigits. */ function numberToHintString(number, numHintDigits) { - var base = hintCharacters.length; + var base = settings.linkHintCharacters.length; var hintString = []; var remainder = 0; do { remainder = number % base; - hintString.unshift(hintCharacters[remainder]); + hintString.unshift(settings.linkHintCharacters[remainder]); number -= remainder; number /= Math.floor(base); } while (number > 0); @@ -226,7 +227,7 @@ function numberToHintString(number, numHintDigits) { // Pad the hint string we're returning so that it matches numHintDigits. var hintStringLength = hintString.length; for (var i = 0; i < numHintDigits - hintStringLength; i++) - hintString.unshift(hintCharacters[0]); + hintString.unshift(settings.linkHintCharacters[0]); return hintString.join(""); } diff --git a/options.html b/options.html index 06c8cb05..d5cab9c8 100644 --- a/options.html +++ b/options.html @@ -58,7 +58,7 @@ function initializeOptions() { populateOptions(); - var elements = ["scrollStepSize", "defaultZoomLevel", "excludedUrls"]; + var elements = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters"]; for (var i = 0; i < elements.length; i++) $(elements[i]).addEventListener("change", enableSaveButton, false); $("advancedOptions").addEventListener("click", openAdvancedOptions, false); @@ -71,6 +71,7 @@ localStorage["scrollStepSize"] = $("scrollStepSize").value localStorage["defaultZoomLevel"] = $("defaultZoomLevel").value localStorage["excludedUrls"] = $("excludedUrls").value; + localStorage["linkHintCharacters"] = $("linkHintCharacters").value; $("saveOptions").disabled = true; } @@ -90,6 +91,7 @@ scrollStepSize.value = "60"; defaultZoomLevel.value = "100"; excludedUrls.value = ""; + linkHintCharacters.value = "sadfjklewcmp"; $("saveOptions").disabled = true; } @@ -147,7 +149,7 @@ The characters placed next to each link after typing "F" to enter link hinting mode. </div> </div> - <input id="characterLinkHints" type="text" style="width:150px" /> + <input id="linkHintCharacters" type="text" style="width:150px" /> </td> </tr> </table> diff --git a/vimiumFrontend.js b/vimiumFrontend.js index fef755e4..6f417f88 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -5,7 +5,7 @@ * commands by connectiong to a port named "domReady". */ var settings = {}; -var settingsToLoad = ["scrollStepSize"]; +var settingsToLoad = ["scrollStepSize", "linkHintCharacters"]; var getCurrentUrlHandlers = []; // function(url) |
