From 3f1cdef638d5a0fdf832788fc90776d571d47fb8 Mon Sep 17 00:00:00 2001
From: Phil Crosby
Date: Mon, 18 Jan 2010 00:24:18 -0800
Subject: 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.---
background_page.html | 6 +++++-
linkHints.js | 13 +++++++------
options.html | 6 ++++--
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.
-
+
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)
--
cgit v1.2.3