diff options
| author | Stephen Blott | 2016-03-26 12:08:43 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2016-03-26 12:08:43 +0000 | 
| commit | bfeaeae0df589e5163cdc9e99ea9d3c3b1b15038 (patch) | |
| tree | ae5f417e29a060efebaf74b12110dd315a92115a | |
| parent | 24d305500b4fd3574ed31cff33b177f42cd88457 (diff) | |
| parent | e133f8d2b3d104568959759e8ec7cf907257eb1b (diff) | |
| download | vimium-bfeaeae0df589e5163cdc9e99ea9d3c3b1b15038.tar.bz2 | |
Merge branch 'standardise-foreground-commands'
Conflicts:
	content_scripts/vimium_frontend.coffee
| -rw-r--r-- | background_scripts/commands.coffee | 64 | ||||
| -rw-r--r-- | content_scripts/marks.coffee | 2 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 10 | ||||
| -rw-r--r-- | lib/utils.coffee | 4 | 
4 files changed, 36 insertions, 44 deletions
| diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee index 6c452242..2d901b15 100644 --- a/background_scripts/commands.coffee +++ b/background_scripts/commands.coffee @@ -1,7 +1,7 @@  Commands =    init: -> -    for own command, description of commandDescriptions -      @addCommand(command, description[0], description[1]) +    for own command, descriptor of commandDescriptions +      @addCommand(command, descriptor[0], descriptor[1])      @loadKeyMappings Settings.get "keyMappings"      Settings.postUpdateHooks["keyMappings"] = @loadKeyMappings.bind this @@ -16,14 +16,11 @@ Commands =    # Registers a command, making it available to be optionally bound to a key.    # options:    #  - background: whether this command needs to be run against the background page. -  #  - passCountToFunction: true if this command should have any digits which were typed prior to the -  #    command passed to it. This is used to implement e.g. "closing of 3 tabs". -  addCommand: (command, description, options) -> +  addCommand: (command, description, options = {}) ->      if command of @availableCommands        BgUtils.log "#{command} is already defined! Check commands.coffee for duplicates."        return -    options ||= {}      @availableCommands[command] = extend options, description: description    mapKeyToCommand: ({ key, command, options }) -> @@ -134,7 +131,6 @@ Commands =        "reload",        "toggleViewSource",        "copyCurrentUrl", -      "LinkHints.activateModeToCopyLinkUrl",        "openCopiedUrlInCurrentTab",        "openCopiedUrlInNewTab",        "goUp", @@ -150,6 +146,7 @@ Commands =        "LinkHints.activateModeWithQueue",        "LinkHints.activateModeToDownloadLink",        "LinkHints.activateModeToOpenIncognito", +      "LinkHints.activateModeToCopyLinkUrl",        "goPrevious",        "goNext",        "nextFrame", @@ -241,9 +238,10 @@ defaultKeyMappings =    "gi": "focusInput" -  "f":     "LinkHints.activateMode" -  "F":     "LinkHints.activateModeToOpenInNewTab" +  "f": "LinkHints.activateMode" +  "F": "LinkHints.activateModeToOpenInNewTab"    "<a-f>": "LinkHints.activateModeWithQueue" +  "yf": "LinkHints.activateModeToCopyLinkUrl"    "/": "enterFindMode"    "n": "performFind" @@ -253,7 +251,6 @@ defaultKeyMappings =    "]]": "goNext"    "yy": "copyCurrentUrl" -  "yf": "LinkHints.activateModeToCopyLinkUrl"    "p": "openCopiedUrlInCurrentTab"    "P": "openCopiedUrlInNewTab" @@ -299,43 +296,42 @@ defaultKeyMappings =  commandDescriptions =    # Navigating the current page    showHelp: ["Show help", { background: true, noRepeat: true }] -  scrollDown: ["Scroll down", { passCountToFunction: true }] -  scrollUp: ["Scroll up", { passCountToFunction: true }] -  scrollLeft: ["Scroll left", { passCountToFunction: true }] -  scrollRight: ["Scroll right", { passCountToFunction: true }] +  scrollDown: ["Scroll down"] +  scrollUp: ["Scroll up"] +  scrollLeft: ["Scroll left"] +  scrollRight: ["Scroll right"] -  scrollToTop: ["Scroll to the top of the page", { passCountToFunction: true }] +  scrollToTop: ["Scroll to the top of the page"]    scrollToBottom: ["Scroll to the bottom of the page", { noRepeat: true }]    scrollToLeft: ["Scroll all the way to the left", { noRepeat: true }]    scrollToRight: ["Scroll all the way to the right", { noRepeat: true }] -  scrollPageDown: ["Scroll a page down", { passCountToFunction: true }] -  scrollPageUp: ["Scroll a page up", { passCountToFunction: true }] -  scrollFullPageDown: ["Scroll a full page down", { passCountToFunction: true }] -  scrollFullPageUp: ["Scroll a full page up", { passCountToFunction: true }] +  scrollPageDown: ["Scroll a page down"] +  scrollPageUp: ["Scroll a page up"] +  scrollFullPageDown: ["Scroll a full page down"] +  scrollFullPageUp: ["Scroll a full page up"]    reload: ["Reload the page", { noRepeat: true }]    toggleViewSource: ["View page source", { noRepeat: true }]    copyCurrentUrl: ["Copy the current URL to the clipboard", { noRepeat: true }] -  "LinkHints.activateModeToCopyLinkUrl": ["Copy a link URL to the clipboard", { passCountToFunction: true }]    openCopiedUrlInCurrentTab: ["Open the clipboard's URL in the current tab", { background: true, noRepeat: true }]    openCopiedUrlInNewTab: ["Open the clipboard's URL in a new tab", { background: true, repeatLimit: 20 }]    enterInsertMode: ["Enter insert mode", { noRepeat: true }] -  passNextKey: ["Pass the next key to Chrome", { passCountToFunction: true }] +  passNextKey: ["Pass the next key to Chrome"]    enterVisualMode: ["Enter visual mode", { noRepeat: true }]    enterVisualLineMode: ["Enter visual line mode", { noRepeat: true }] -  focusInput: ["Focus the first text box on the page. Cycle between them using tab", -    { passCountToFunction: true }] +  focusInput: ["Focus the first text box on the page. Cycle between them using tab"] -  "LinkHints.activateMode": ["Open a link in the current tab", { passCountToFunction: true }] -  "LinkHints.activateModeToOpenInNewTab": ["Open a link in a new tab", { passCountToFunction: true }] -  "LinkHints.activateModeToOpenInNewForegroundTab": ["Open a link in a new tab & switch to it", { passCountToFunction: true }] +  "LinkHints.activateMode": ["Open a link in the current tab"] +  "LinkHints.activateModeToOpenInNewTab": ["Open a link in a new tab"] +  "LinkHints.activateModeToOpenInNewForegroundTab": ["Open a link in a new tab & switch to it"]    "LinkHints.activateModeWithQueue": ["Open multiple links in a new tab", { noRepeat: true }] -  "LinkHints.activateModeToOpenIncognito": ["Open a link in incognito window", { passCountToFunction: true }] -  "LinkHints.activateModeToDownloadLink": ["Download link url", { passCountToFunction: true }] +  "LinkHints.activateModeToOpenIncognito": ["Open a link in incognito window"] +  "LinkHints.activateModeToDownloadLink": ["Download link url"] +  "LinkHints.activateModeToCopyLinkUrl": ["Copy a link URL to the clipboard"]    enterFindMode: ["Enter find mode", { noRepeat: true }]    performFind: ["Cycle forward to the next find match"] @@ -345,12 +341,12 @@ commandDescriptions =    goNext: ["Follow the link labeled next or >", { noRepeat: true }]    # Navigating your history -  goBack: ["Go back in history", { passCountToFunction: true }] -  goForward: ["Go forward in history", { passCountToFunction: true }] +  goBack: ["Go back in history"] +  goForward: ["Go forward in history"]    # Navigating the URL hierarchy -  goUp: ["Go up the URL hierarchy", { passCountToFunction: true }] -  goToRoot: ["Go to root of current URL hierarchy", { passCountToFunction: true }] +  goUp: ["Go up the URL hierarchy"] +  goToRoot: ["Go to root of current URL hierarchy"]    # Manipulating tabs    nextTab: ["Go one tab right", { background: true }] @@ -361,9 +357,7 @@ commandDescriptions =    createTab: ["Create new tab", { background: true, repeatLimit: 20 }]    duplicateTab: ["Duplicate current tab", { background: true, repeatLimit: 20 }] -  removeTab: ["Close current tab", { background: true, repeatLimit: -    # Require confirmation to remove more tabs than we can restore. -    (if chrome.session then chrome.session.MAX_SESSION_RESULTS else 25) }] +  removeTab: ["Close current tab", { background: true, repeatLimit: chrome.session?.MAX_SESSION_RESULTS ? 25 }]    restoreTab: ["Restore closed tab", { background: true, repeatLimit: 20 }]    moveTabToNewWindow: ["Move tab to new window", { background: true }] diff --git a/content_scripts/marks.coffee b/content_scripts/marks.coffee index 067d05a8..ba0467b0 100644 --- a/content_scripts/marks.coffee +++ b/content_scripts/marks.coffee @@ -52,7 +52,7 @@ Marks =              localStorage[@getLocationKey keyChar] = @getMarkString()              @showMessage "Created local mark", keyChar -  activateGotoMode: (registryEntry) -> +  activateGotoMode: ->      @mode = new Mode        name: "goto-mark"        indicator: "Go to mark..." diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index e4a2e8c9..79459b76 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -121,10 +121,8 @@ class NormalMode extends KeyHandlerMode          handler: "sendMessageToFrames", message: {name: "runInTopFrame", sourceFrameId: frameId, registryEntry}      else if registryEntry.background        chrome.runtime.sendMessage {handler: "runBackgroundCommand", registryEntry, count} -    else if registryEntry.passCountToFunction -      Utils.invokeCommandString registryEntry.command, [count]      else -      Utils.invokeCommandString registryEntry.command for i in [0...count] +      Utils.invokeCommandString registryEntry.command, count  installModes = ->    # Install the permanent modes. The permanently-installed insert mode tracks focus/blur events, and @@ -155,7 +153,7 @@ initializePreDomReady = ->      frameFocused: ->      checkEnabledAfterURLChange: checkEnabledAfterURLChange      runInTopFrame: ({sourceFrameId, registryEntry}) -> -      Utils.invokeCommandString registryEntry.command, [sourceFrameId, registryEntry] if DomUtils.isTopFrame() +      Utils.invokeCommandString registryEntry.command, sourceFrameId, registryEntry if DomUtils.isTopFrame()    chrome.runtime.onMessage.addListener (request, sender, sendResponse) ->      # These requests are intended for the background page, but they're delivered to the options page too. @@ -499,8 +497,8 @@ findAndFocus = (backwards) ->    else      HUD.showForDuration("No matches for '#{FindMode.query.rawQuery}'", 1000) -performFind = -> findAndFocus false -performBackwardsFind = -> findAndFocus true +performFind = (count) -> findAndFocus false for [0...count] by 1 +performBackwardsFind = (count) -> findAndFocus true for [0...count] by 1  getLinkFromSelection = ->    node = window.getSelection().anchorNode diff --git a/lib/utils.coffee b/lib/utils.coffee index 60d29998..3b2a59a4 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -11,13 +11,13 @@ Utils =    # Takes a dot-notation object string and call the function    # that it points to with the correct value for 'this'. -  invokeCommandString: (str, argArray) -> +  invokeCommandString: (str, args...) ->      components = str.split('.')      obj = window      for component in components[0...-1]        obj = obj[component]      func = obj[components.pop()] -    func.apply(obj, argArray) +    func.apply(obj, args)    # Escape all special characters, so RegExp will parse the string 'as is'.    # Taken from http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex | 
