diff options
| author | Stephen Blott | 2016-02-29 11:53:05 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2016-03-05 05:40:11 +0000 | 
| commit | 7bf8cb11db08c61417a4d72b95c2905a4869cf67 (patch) | |
| tree | ccdf276ad6d63ad014b8361ce0669c243548b3f1 | |
| parent | f6f97b373746b198a68b33040ddc4d42e9898445 (diff) | |
| download | vimium-7bf8cb11db08c61417a4d72b95c2905a4869cf67.tar.bz2 | |
Key bindings; small tweaks...
- simplify pass key condition
- don't keep key-parsing Regexp in memory
- we should reset the key state when the pass keys change
| -rw-r--r-- | background_scripts/commands.coffee | 11 | ||||
| -rw-r--r-- | content_scripts/mode_key_handler.coffee | 5 | 
2 files changed, 7 insertions, 9 deletions
diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee index a36b0c7e..25acdc03 100644 --- a/background_scripts/commands.coffee +++ b/background_scripts/commands.coffee @@ -101,17 +101,16 @@ Commands =      @keyToCommandRegistry = {}      @mapKeyToCommand { key, command } for own key, command of defaultKeyMappings -  # Keys are either literal characters, or "named" - for example <a-b> (alt+b), <left> (left arrow) or <f12> -  # This regular expression captures two groups: the first is a named key, the second is the remainder of the -  # string. -  namedKeyRegex: /^(<(?:[amc]-.|(?:[amc]-)?[a-z0-9]{2,5})>)(.*)$/ -    generateKeyStateMapping: -> +    # Keys are either literal characters, or "named" - for example <a-b> (alt+b), <left> (left arrow) or <f12> +    # This regular expression captures two groups: the first is a named key, the second is the remainder of +    # the string. +    namedKeyRegex = /^(<(?:[amc]-.|(?:[amc]-)?[a-z0-9]{2,5})>)(.*)$/      keyStateMapping = {}      for own keys, registryEntry of @keyToCommandRegistry        currentMapping = keyStateMapping        while 0 < keys.length -        [key, keys] = if 0 == keys.search @namedKeyRegex then [RegExp.$1, RegExp.$2] else [keys[0], keys[1..]] +        [key, keys] = if 0 == keys.search namedKeyRegex then [RegExp.$1, RegExp.$2] else [keys[0], keys[1..]]          if currentMapping[key]?.command            break # Do not overwrite existing command bindings, they take priority.          else if 0 < keys.length diff --git a/content_scripts/mode_key_handler.coffee b/content_scripts/mode_key_handler.coffee index ecfcacd6..78ce3680 100644 --- a/content_scripts/mode_key_handler.coffee +++ b/content_scripts/mode_key_handler.coffee @@ -2,7 +2,7 @@  class KeyHandlerMode extends Mode    keydownEvents: {}    setKeyMapping: (@keyMapping) -> @reset() -  setPassKeys: (@passKeys) -> +  setPassKeys: (@passKeys) -> @reset()    constructor: (options) ->      @commandHandler = options.commandHandler ? (->) @@ -91,8 +91,7 @@ class KeyHandlerMode extends Mode    # Keystrokes are *never* considered passKeys if the user has begun entering a command.  So, for example, if    # 't' is a passKey, then 'gt' and '99t' are neverthless handled as regular keys.    unlessKeyCharIsPassKey: (keyChar, nonPassKeyCallback) -> -    if @passKeys and @countPrefix == 0 and @keyState.length == 1 and -        keyChar?.length == 1 and 0 <= @passKeys.indexOf keyChar +    if @countPrefix == 0 and @keyState.length == 1 and keyChar in (@passKeys ? "")        @stopBubblingAndTrue      else        nonPassKeyCallback()  | 
