diff options
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 1 | ||||
| -rw-r--r-- | content_scripts/vomnibar.coffee | 30 | ||||
| -rw-r--r-- | lib/utils.coffee | 10 | ||||
| -rw-r--r-- | tests/dom_tests/vomnibar_test.coffee | 1 | 
4 files changed, 27 insertions, 15 deletions
| diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 8c6dd374..005412e5 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -62,6 +62,7 @@ settings =      helpDialog_showAdvancedCommands: null      smoothScroll: null      grabBackFocus: null +    searchEngines: null    init: ->      @port = chrome.runtime.connect name: "settings" diff --git a/content_scripts/vomnibar.coffee b/content_scripts/vomnibar.coffee index d46b2daf..06b546a6 100644 --- a/content_scripts/vomnibar.coffee +++ b/content_scripts/vomnibar.coffee @@ -4,21 +4,35 @@  Vomnibar =    vomnibarUI: null -  getOptions: (registryEntry = { extras: [] }) -> -    extras = {} -    for extra in registryEntry.extras -      [ key, value ] = extra.split "=" -      extras.keyword = value if key? and key == "keyword" and value? and 0 < value.length -    extras +  # Parse any additional options from the command's registry entry.  Currently, this only includes a flag of +  # the form "keyword=X", for direct activation of a custom search engine. +  parseRegistryEntry: (registryEntry = { extras: [] }, callback = null) -> +    options = {} +    searchEngines = settings.get("searchEngines") ? "" +    SearchEngines.refreshAndUse searchEngines, (engines) -> +      for extra in registryEntry.extras +        [ key, value ] = extra.split "=" +        switch key +          when "keyword" +            if value? and engines[value]? +              options.keyword = value +            else +              console.log "Vimium configuration error: no such custom search engine: #{extra}." +          else +              console.log "Vimium configuration error: unused flag: #{extra}." + +      callback? options    # sourceFrameId here (and below) is the ID of the frame from which this request originates, which may be different    # from the current frame.    activate: (sourceFrameId, registryEntry) -> -    @open sourceFrameId, extend @getOptions(registryEntry), completer:"omni" +    @parseRegistryEntry registryEntry, (options) => +      @open sourceFrameId, extend options, completer:"omni"    activateInNewTab: (sourceFrameId, registryEntry) -> -    @open sourceFrameId, extend @getOptions(registryEntry), completer: "omni", newTab: true +    @parseRegistryEntry registryEntry, (options) => +      @open sourceFrameId, extend options, completer:"omni", newTab: true    activateTabSelection: (sourceFrameId) -> @open sourceFrameId, {      completer: "tabs" diff --git a/lib/utils.coffee b/lib/utils.coffee index cb7b4d5c..77e2b68d 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -245,14 +245,10 @@ SearchEngines =            tokens = line.split /\s+/            continue unless 2 <= tokens.length            keyword = tokens[0].split(":")[0] -          url = tokens[1] +          searchUrl = tokens[1]            description = tokens[2..].join(" ") || "search (#{keyword})" -          continue unless Utils.hasFullUrlPrefix url -          engines[keyword] = -            keyword: keyword -            searchUrl: url -            description: description -            searchUrlPrefix: url.split("%s")[0] +          continue unless Utils.hasFullUrlPrefix searchUrl +          engines[keyword] = { keyword, searchUrl, description }          callback engines diff --git a/tests/dom_tests/vomnibar_test.coffee b/tests/dom_tests/vomnibar_test.coffee index 380175f3..3eda6234 100644 --- a/tests/dom_tests/vomnibar_test.coffee +++ b/tests/dom_tests/vomnibar_test.coffee @@ -1,4 +1,5 @@  vomnibarFrame = null +SearchEngines.refresh ""  context "Keep selection within bounds", | 
