From 9ea1dc3a69180ffa7778c7f2cf1879f22fe60a92 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 11 May 2015 09:17:45 +0100 Subject: Search completion; more efficient filtering. --- background_scripts/completion.coffee | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'background_scripts') 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... -- cgit v1.2.3