diff options
| author | Stephen Blott | 2015-05-31 09:52:50 +0100 | 
|---|---|---|
| committer | Stephen Blott | 2015-05-31 09:52:50 +0100 | 
| commit | bd07321766056cccd083aa69254abc8146bd5266 (patch) | |
| tree | 59a9300cd4a0806f2f6072db406e00edf80674b4 /background_scripts | |
| parent | 8b0c610fb68573dbd839133fbc315521db6161f6 (diff) | |
| parent | 5930a6e3510f2bd052771601581aa410728d68e3 (diff) | |
| download | vimium-bd07321766056cccd083aa69254abc8146bd5266.tar.bz2 | |
Merge pull request #1697 from smblott-github/vomnibar-map-with-prepopulated-text
Direct keyboard access to custom-search engines via keyword flag
Diffstat (limited to 'background_scripts')
| -rw-r--r-- | background_scripts/commands.coffee | 64 | ||||
| -rw-r--r-- | background_scripts/completion.coffee | 24 | ||||
| -rw-r--r-- | background_scripts/main.coffee | 14 | 
3 files changed, 33 insertions, 69 deletions
| diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee index 5857665c..bf892c1a 100644 --- a/background_scripts/commands.coffee +++ b/background_scripts/commands.coffee @@ -24,21 +24,13 @@ Commands =        noRepeat: options.noRepeat        repeatLimit: options.repeatLimit -  mapKeyToCommand: (key, command) -> +  mapKeyToCommand: ({ key, command, options }) ->      unless @availableCommands[command] -      console.log(command, "doesn't exist!") +      console.log command, "doesn't exist!"        return -    commandDetails = @availableCommands[command] - -    @keyToCommandRegistry[key] = -      command: command -      isBackgroundCommand: commandDetails.isBackgroundCommand -      passCountToFunction: commandDetails.passCountToFunction -      noRepeat: commandDetails.noRepeat -      repeatLimit: commandDetails.repeatLimit - -  unmapKey: (key) -> delete @keyToCommandRegistry[key] +    options ?= [] +    @keyToCommandRegistry[key] = extend { command, options }, @availableCommands[command]    # Lower-case the appropriate portions of named keys.    # @@ -54,37 +46,29 @@ Commands =            "<" + (if optionalPrefix then optionalPrefix else "") + keyName.toLowerCase() + ">")    parseCustomKeyMappings: (customKeyMappings) -> -    lines = customKeyMappings.split("\n") - -    for line in lines -      continue if (line[0] == "\"" || line[0] == "#") -      splitLine = line.replace(/\s+$/, "").split(/\s+/) - -      lineCommand = splitLine[0] - -      if (lineCommand == "map") -        continue if (splitLine.length != 3) -        key = @normalizeKey(splitLine[1]) -        vimiumCommand = splitLine[2] - -        continue unless @availableCommands[vimiumCommand] - -        console.log("Mapping", key, "to", vimiumCommand) -        @mapKeyToCommand(key, vimiumCommand) -      else if (lineCommand == "unmap") -        continue if (splitLine.length != 2) - -        key = @normalizeKey(splitLine[1]) -        console.log("Unmapping", key) -        @unmapKey(key) -      else if (lineCommand == "unmapAll") -        @keyToCommandRegistry = {} +    for line in customKeyMappings.split "\n" +      unless  line[0] == "\"" or line[0] == "#" +        tokens = line.replace(/\s+$/, "").split /\s+/ +        switch tokens[0] +          when "map" +            [ _, key, command, options... ] = tokens +            if command? and @availableCommands[command] +              key = @normalizeKey key +              console.log "Mapping", key, "to", command +              @mapKeyToCommand { key, command, options } + +          when "unmap" +            if tokens.length == 2 +              key = @normalizeKey tokens[1] +              console.log "Unmapping", key +              delete @keyToCommandRegistry[key] + +          when "unmapAll" +            @keyToCommandRegistry = {}    clearKeyMappingsAndSetDefaults: ->      @keyToCommandRegistry = {} - -    for key of defaultKeyMappings -      @mapKeyToCommand(key, defaultKeyMappings[key]) +    @mapKeyToCommand { key, command } for key, command of defaultKeyMappings    # An ordered listing of all available commands, grouped by type. This is the order they will    # be shown in the help page. diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee index bae73b8d..c83066a6 100644 --- a/background_scripts/completion.coffee +++ b/background_scripts/completion.coffee @@ -413,7 +413,6 @@ class TabCompleter  class SearchEngineCompleter    @debug: false -  searchEngines: null    previousSuggestions: null    cancel: -> @@ -422,7 +421,7 @@ class SearchEngineCompleter    # This looks up the custom search engine and, if one is found, notes it and removes its keyword from the    # query terms.    preprocessRequest: (request) -> -    @searchEngines.use (engines) => +    SearchEngines.use (engines) =>        { queryTerms, query } = request        extend request, searchEngines: engines, keywords: key for own key of engines        keyword = queryTerms[0] @@ -436,26 +435,7 @@ class SearchEngineCompleter    refresh: (port) ->      @previousSuggestions = {} -    # Parse the search-engine configuration. -    @searchEngines = new AsyncDataFetcher (callback) -> -      engines = {} -      for line in Settings.get("searchEngines").split "\n" -        line = line.trim() -        continue if /^[#"]/.test line -        tokens = line.split /\s+/ -        continue unless 2 <= tokens.length -        keyword = tokens[0].split(":")[0] -        url = 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] - -      callback engines - +    SearchEngines.refreshAndUse Settings.get("searchEngines"), (engines) ->        # Let the front-end vomnibar know the search-engine keywords.  It needs to know them so that, when the        # query goes from "w" to "w ", the vomnibar can synchronously launch the next filter() request (which        # avoids an ugly delay/flicker). diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index edcdf3b2..99a5672b 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -558,13 +558,13 @@ checkKeyQueue = (keysToCheck, tabId, frameId) ->      if runCommand        if not registryEntry.isBackgroundCommand -        chrome.tabs.sendMessage(tabId, -          name: "executePageCommand", -          command: registryEntry.command, -          frameId: frameId, -          count: count, -          passCountToFunction: registryEntry.passCountToFunction, -          completionKeys: generateCompletionKeys("")) +        chrome.tabs.sendMessage tabId, +          name: "executePageCommand" +          command: registryEntry.command +          frameId: frameId +          count: count +          completionKeys: generateCompletionKeys "" +          registryEntry: registryEntry          refreshedCompletionKeys = true        else          if registryEntry.passCountToFunction | 
