diff options
| author | Stephen Blott | 2014-12-29 16:33:23 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2014-12-29 16:45:34 +0000 | 
| commit | c52c0ea57f86c1c5a132819fe85e763db84ce712 (patch) | |
| tree | 4e46ddbc9b5e338843ee6a465ad68d3e15920efb /background_scripts | |
| parent | ba743054dcd26b225db407db261e480ab485e2d0 (diff) | |
| download | vimium-c52c0ea57f86c1c5a132819fe85e763db84ce712.tar.bz2 | |
Descriptions for custom search engines.
Diffstat (limited to 'background_scripts')
| -rw-r--r-- | background_scripts/completion.coffee | 16 | ||||
| -rw-r--r-- | background_scripts/settings.coffee | 16 | 
2 files changed, 22 insertions, 10 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee index d62f82fe..4e570313 100644 --- a/background_scripts/completion.coffee +++ b/background_scripts/completion.coffee @@ -324,11 +324,17 @@ class SearchEngineCompleter    searchEngines: {}    filter: (queryTerms, onComplete) -> -    searchEngineMatch = this.getSearchEngineMatches(queryTerms[0]) +    {url: url, description: description} = this.getSearchEngineMatches(queryTerms[0])      suggestions = [] -    if searchEngineMatch -      searchEngineMatch = searchEngineMatch.replace(/%s/g, Utils.createSearchQuery queryTerms[1..]) -      suggestion = new Suggestion(queryTerms, "search", searchEngineMatch, queryTerms[0] + ": " + queryTerms[1..].join(" "), @computeRelevancy) +    if url +      url = url.replace(/%s/g, Utils.createSearchQuery queryTerms[1..]) +      if description +        type = description +        query = queryTerms[1..].join " " +      else +        type = "search" +        query = queryTerms[0] + ": " + queryTerms[1..].join(" ") +      suggestion = new Suggestion(queryTerms, type, url, query, @computeRelevancy)        suggestions.push(suggestion)      onComplete(suggestions) @@ -338,7 +344,7 @@ class SearchEngineCompleter      this.searchEngines = root.Settings.getSearchEngines()    getSearchEngineMatches: (queryTerm) -> -    this.searchEngines[queryTerm] +    this.searchEngines[queryTerm] || {}  # A completer which calls filter() on many completers, aggregates the results, ranks them, and returns the top  # 10. Queries from the vomnibar frontend script come through a multi completer. diff --git a/background_scripts/settings.coffee b/background_scripts/settings.coffee index e90bc1f8..3ff74749 100644 --- a/background_scripts/settings.coffee +++ b/background_scripts/settings.coffee @@ -46,13 +46,19 @@ root.Settings = Settings =    # this is a map that we use to store our search engines for use.    searchEnginesMap: {} -  # this parses the search engines settings and clears the old searchEngines and sets the new one +  # Parse the custom search engines setting and cache it.    parseSearchEngines: (searchEnginesText) ->      @searchEnginesMap = {} -    # find the split pairs by first splitting by line then splitting on the first `: ` -    split_pairs = ( pair.split( /: (.+)/, 2) for pair in searchEnginesText.split( /\n/ ) when pair[0] != "#" ) -    @searchEnginesMap[a[0]] = a[1] for a in split_pairs -    @searchEnginesMap +    for line in searchEnginesText.split /\n/ +      tokens = line.trim().split /\s+/ +      continue if tokens.length < 2 or tokens[0].startsWith('"') or tokens[0].startsWith("#") +      keywords = tokens[0].split ":" +      continue unless keywords.length == 2 and not keywords[1] # So, like: [ "w", "" ]. +      @searchEnginesMap[keywords[0]] = +        url: tokens[1] +        description: tokens[2..].join(" ") + +  # Fetch the search-engine map, building it if necessary.    getSearchEngines: ->      this.parseSearchEngines(@get("searchEngines") || "") if Object.keys(@searchEnginesMap).length == 0      @searchEnginesMap  | 
