aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/link_hints.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'content_scripts/link_hints.coffee')
-rw-r--r--content_scripts/link_hints.coffee56
1 files changed, 29 insertions, 27 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee
index 5c7f6510..9b381a9c 100644
--- a/content_scripts/link_hints.coffee
+++ b/content_scripts/link_hints.coffee
@@ -281,11 +281,11 @@ alphabetHints =
if (digitsNeeded > 1)
for i in [0...shortHintCount]
- hintStrings.push(@numberToHintString(i, digitsNeeded - 1, linkHintCharacters))
+ hintStrings.push(numberToHintString(i, linkHintCharacters, digitsNeeded - 1))
start = shortHintCount * linkHintCharacters.length
for i in [start...(start + longHintCount)]
- hintStrings.push(@numberToHintString(i, digitsNeeded, linkHintCharacters))
+ hintStrings.push(numberToHintString(i, linkHintCharacters, digitsNeeded))
@shuffleHints(hintStrings, linkHintCharacters.length)
@@ -302,29 +302,6 @@ alphabetHints =
result = result.concat(bucket)
result
- #
- # Converts a number like "8" into a hint string like "JK". This is used to sequentially generate all of the
- # hint text. The hint string will be "padded with zeroes" to ensure its length is equal to numHintDigits.
- #
- numberToHintString: (number, numHintDigits, characterSet) ->
- base = characterSet.length
- hintString = []
- remainder = 0
- loop
- remainder = number % base
- hintString.unshift(characterSet[remainder])
- number -= remainder
- number /= Math.floor(base)
- break unless number > 0
-
- # Pad the hint string we're returning so that it matches numHintDigits.
- # Note: the loop body changes hintString.length, so the original length must be cached!
- hintStringLength = hintString.length
- for i in [0...(numHintDigits - hintStringLength)] by 1
- hintString.unshift(characterSet[0])
-
- hintString.join("")
-
matchHintsByKey: (hintMarkers, event) ->
# If a shifted-character is typed, treat it as lowerase for the purposes of matching hints.
keyChar = KeyboardUtils.getKeyChar(event).toLowerCase()
@@ -360,7 +337,8 @@ filterHints =
labelText = labelText.substr(0, labelText.length-1)
@labelMap[forElement] = labelText
- generateHintString: (linkHintNumber) -> (linkHintNumber + 1).toString()
+ generateHintString: (linkHintNumber) ->
+ (numberToHintString linkHintNumber + 1, settings.get "linkHintNumbers").toUpperCase()
generateLinkText: (element) ->
linkText = ""
@@ -416,7 +394,7 @@ filterHints =
if (!@hintKeystrokeQueue.pop() && !@linkTextKeystrokeQueue.pop())
return { linksMatched: [] }
else if (keyChar)
- if (/[0-9]/.test(keyChar))
+ if (settings.get("linkHintNumbers").indexOf(keyChar) >= 0)
@hintKeystrokeQueue.push(keyChar)
else
# since we might renumber the hints, the current hintKeyStrokeQueue
@@ -476,5 +454,29 @@ spanWrap = (hintString) ->
innerHTML.push("<span class='vimiumReset'>" + char + "</span>")
innerHTML.join("")
+#
+# Converts a number like "8" into a hint string like "JK". This is used to sequentially generate all of the
+# hint text. The hint string will be "padded with zeroes" to ensure its length is >= numHintDigits.
+#
+numberToHintString = (number, characterSet, numHintDigits = 0) ->
+ base = characterSet.length
+ hintString = []
+ remainder = 0
+ loop
+ remainder = number % base
+ hintString.unshift(characterSet[remainder])
+ number -= remainder
+ number /= Math.floor(base)
+ break unless number > 0
+
+ # Pad the hint string we're returning so that it matches numHintDigits.
+ # Note: the loop body changes hintString.length, so the original length must be cached!
+ hintStringLength = hintString.length
+ for i in [0...(numHintDigits - hintStringLength)] by 1
+ hintString.unshift(characterSet[0])
+
+ hintString.join("")
+
+
root = exports ? window
root.LinkHints = LinkHints