aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-05-11 09:17:45 +0100
committerStephen Blott2015-05-11 09:17:45 +0100
commit9ea1dc3a69180ffa7778c7f2cf1879f22fe60a92 (patch)
tree3eea8e0152b80f3a7dadd649ccc12d090c7a7fef
parentee418ed5a03eaeaf591ebcdf748dd07534a9bc85 (diff)
downloadvimium-9ea1dc3a69180ffa7778c7f2cf1879f22fe60a92.tar.bz2
Search completion; more efficient filtering.
-rw-r--r--background_scripts/completion.coffee12
1 files changed, 8 insertions, 4 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee
index a12f1bcf..175bc27d 100644
--- a/background_scripts/completion.coffee
+++ b/background_scripts/completion.coffee
@@ -365,6 +365,7 @@ class SearchEngineCompleter
{ queryTerms, query } = request
keyword = queryTerms[0]
if keyword and engines[keyword] and (1 < queryTerms.length or /\s$/.test query)
+ request.completers = [ this ]
extend request,
queryTerms: queryTerms[1..]
keyword: keyword
@@ -501,9 +502,12 @@ class MultiCompleter
return @mostRecentQuery = arguments if @filterInProgress
# Provide each completer with an opportunity to see (and possibly alter) the request before it is
- # launched.
- for completer in @completers
- completer.triageRequest? request
+ # launched. The completer is provided with a list of the completers we're using (request.completers), and
+ # may change that list to override the default.
+ request.completers = @completers
+ completer.triageRequest? request for completer in @completers
+ completers = request.completers
+ delete request.completers
RegexpCache.clear()
{ queryTerms } = request
@@ -512,7 +516,7 @@ class MultiCompleter
[ suggestions, continuations, filters ] = [ [], [], [] ]
# Run each of the completers (asynchronously).
- jobs = new JobRunner @completers.map (completer) ->
+ jobs = new JobRunner completers.map (completer) ->
(callback) ->
completer.filter request, (newSuggestions = [], { continuation, filter } = {}) ->
suggestions.push newSuggestions...