     callback ?= (suggestions) -> suggestions
 
     # We don't complete queries which are too short: the results are usually useless.
-    return callback [] unless 3 < query.length
+    return callback [] unless query.length >= 3
 
     # We don't complete regular URLs or Javascript URLs.
-    return callback [] if 1 == queryTerms.length and Utils.isUrl query
-    return callback [] if Utils.hasJavascriptPrefix query
+    if queryTerms.length == 1 and Utils.isUrl query
+      return callback []
+    if Utils.hasJavascriptPrefix query
+      return callback []
 
     completionCacheKey = JSON.stringify [ searchUrl, queryTerms ]
     if @completionCache.has completionCacheKey
-      console.log "hit", completionCacheKey if @debug
+      if @debug
+        console.log "hit", completionCacheKey
       return callback @completionCache.get completionCacheKey
 
     # If the user appears to be typing a continuation of the characters of the most recent query, then we can

          # previous queries with no suggestions suppress subsequent no-hope HTTP requests as the user continues
          # to type.
          for suggestion in @mostRecentSuggestions
            return false unless 0 <= suggestion.indexOf query
          # Ok. Re-use the suggestion.
          true


      queryTerms = [ terms.split(" ")..., queryTerms... ]
      prefix = "#{terms} "

      @postprocessSuggestions = (suggestions) ->
        suggestions.filter((s) => s.startsWith(prefix)).map((s) => s[prefix.length..])

    @engine.getUrl queryTerms

