aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts
diff options
context:
space:
mode:
authorStephen Blott2016-04-08 09:42:22 +0100
committerStephen Blott2016-04-08 09:45:22 +0100
commit1a71dc6c8f323cef31eb006a8a6299b4dfe71332 (patch)
tree0fd8812199921216658e58fc0b6689a354c618e8 /content_scripts
parentbee5ee8416be776f379beb1bf772665a19cd3fa4 (diff)
downloadvimium-1a71dc6c8f323cef31eb006a8a6299b4dfe71332.tar.bz2
Filtered hints; ignore unmatched text.
When the user is typing a link's text, any mistyped character exits link hints mode. This makes little sense. In practice, this usually happens because the user mis-typed something. Here, we ignore typed characters which do not match any hints. (Also, add a test for this.)
Diffstat (limited to 'content_scripts')
-rw-r--r--content_scripts/link_hints.coffee20
1 files changed, 13 insertions, 7 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee
index 56cea78d..56edf22f 100644
--- a/content_scripts/link_hints.coffee
+++ b/content_scripts/link_hints.coffee
@@ -465,15 +465,21 @@ class FilterHints
linkSearchString = @linkTextKeystrokeQueue.join("").trim().toLowerCase()
do (scoreFunction = @scoreLinkHint linkSearchString) ->
linkMarker.score = scoreFunction linkMarker for linkMarker in hintMarkers
- hintMarkers = hintMarkers[..].sort (a,b) ->
+ matchingHintMarkers = hintMarkers[..].sort (a,b) ->
if b.score == a.score then b.stableSortCount - a.stableSortCount else b.score - a.score
- linkHintNumber = 1
- for linkMarker in hintMarkers
- continue unless 0 < linkMarker.score
- linkMarker.hintString = @generateHintString linkHintNumber++
- @renderMarker linkMarker
- linkMarker
+ matchingHintMarkers = (linkMarker for linkMarker in matchingHintMarkers when 0 < linkMarker.score)
+
+ if matchingHintMarkers.length == 0 and @hintKeystrokeQueue.length == 0 and 0 < @linkTextKeystrokeQueue.length
+ # We don't accept typed text which doesn't match any hints.
+ @linkTextKeystrokeQueue.pop()
+ @filterLinkHints hintMarkers
+ else
+ linkHintNumber = 1
+ for linkMarker in matchingHintMarkers
+ linkMarker.hintString = @generateHintString linkHintNumber++
+ @renderMarker linkMarker
+ linkMarker
# Assign a score to a filter match (higher is better). We assign a higher score for matches at the start of
# a word, and a considerably higher score still for matches which are whole words.