aboutsummaryrefslogtreecommitdiffstats
path: root/background_scripts
diff options
context:
space:
mode:
authorStephen Blott2016-02-20 12:08:58 +0000
committerStephen Blott2016-02-20 12:08:58 +0000
commit2debf3e07ecc41e8d0c3c186f4d8ae39641426f4 (patch)
tree834b61e967fc74ea2e43c7e1fbc51341f9542a43 /background_scripts
parent5dc1a741a897400e64d68b8248c0557970d04a61 (diff)
parentc818edb5e0e1a1edbcccfb2b978bf2e535de9fb4 (diff)
downloadvimium-2debf3e07ecc41e8d0c3c186f4d8ae39641426f4.tar.bz2
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'background_scripts')
-rw-r--r--background_scripts/commands.coffee19
-rw-r--r--background_scripts/main.coffee2
2 files changed, 19 insertions, 2 deletions
diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee
index 80ca0f96..d251c7ed 100644
--- a/background_scripts/commands.coffee
+++ b/background_scripts/commands.coffee
@@ -52,11 +52,11 @@ Commands =
tokens = line.replace(/\s+$/, "").split /\s+/
switch tokens[0]
when "map"
- [ _, key, command, options... ] = tokens
+ [ _, key, command, optionList... ] = tokens
if command? and @availableCommands[command]
key = @normalizeKey key
logMessage? "Mapping #{key} to #{command}"
- @mapKeyToCommand { key, command, options }
+ @mapKeyToCommand { key, command, options: @parseCommandOptions command, optionList }
when "unmap"
if tokens.length == 2
@@ -74,6 +74,21 @@ Commands =
Settings.set "passNextKeyKeys",
(key for own key of @keyToCommandRegistry when @keyToCommandRegistry[key].command == "passNextKey" and 1 < key.length)
+ # Command options follow command mappings, and are of one of two forms:
+ # key=value - a value
+ # key - a flag
+ parseCommandOptions: (command, optionList) ->
+ options = {}
+ for option in optionList
+ parse = option.split "=", 2
+ options[parse[0]] = if parse.length == 1 then true else parse[1]
+
+ # We parse any `count` option immediately (to avoid having to parse it repeatedly later).
+ unless @availableCommands[command].noRepeat
+ options.count = try Math.max 1, parseInt options.count
+
+ options
+
clearKeyMappingsAndSetDefaults: ->
@keyToCommandRegistry = {}
@mapKeyToCommand { key, command } for own key, command of defaultKeyMappings
diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee
index c824db88..0e043159 100644
--- a/background_scripts/main.coffee
+++ b/background_scripts/main.coffee
@@ -534,6 +534,8 @@ checkKeyQueue = (keysToCheck, tabId, frameId) ->
"""
if runCommand
+ # Account for any command-option "count".
+ count *= registryEntry.options.count ? 1
if not registryEntry.isBackgroundCommand
chrome.tabs.sendMessage tabId,
name: "executePageCommand"