           keyword: keyword
           searchUrl: url
           description: description
+          searchUrlPrefix: url.split("%s")[0]
 
       callback engines
 

    CompletionSearch.cancel()

  # This looks up the custom search engine and, if one is found, notes it and removes its keyword from the
  # query terms.  It also sets request.completers to indicate that only this completer should run (but only if
  # it finds a completion engine).
  triageRequest: (request) ->
    @searchEngines.use (engines) =>
      { queryTerms, query } = request
      keyword = queryTerms[0]
      # Note. For a keyword "w", we match "w search terms" and "w ", but not "w" on its own.
      if keyword and engines[keyword] and (1 < queryTerms.length or /\s$/.test query)
        # This is a query for a custom search engine.  If we have a completion engine, then we *only* want
        # suggestions from SearchEngineCompleter.
        request.completers = [ this ] if CompletionSearch.haveCompletionEngine engines[keyword].searchUrl
        extend request,
          queryTerms: queryTerms[1..]
          keyword: keyword

    [ suggestions, continuations, filters ] = [ [], [], [] ]

    # Run each of the completers (asynchronously).
    jobs = new JobRunner @completers.map (completer) ->
      (callback) ->
        completer.filter request, (newSuggestions = [], { continuation, filter } = {}) ->
          suggestions.push newSuggestions...
