diff options
| author | Stephen Blott | 2014-10-26 12:37:50 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2014-10-26 12:37:50 +0000 | 
| commit | 33406947a1b776c1aca7701668220e1967f6bb5c (patch) | |
| tree | add72c16cd4f326f5a8f1b657eabd0baea9c0383 /background_scripts | |
| parent | 62fc0d277962d52c4d0cb34fcea4364b23162717 (diff) | |
| parent | a86cfb88b033a094de1783546898895b7fbe0cf5 (diff) | |
| download | vimium-33406947a1b776c1aca7701668220e1967f6bb5c.tar.bz2 | |
Merge branch 'limitedRepeats' of github.com:mrmr1993/vimium into mrmr1993-limitedRepeats
Diffstat (limited to 'background_scripts')
| -rw-r--r-- | background_scripts/commands.coffee | 78 | ||||
| -rw-r--r-- | background_scripts/main.coffee | 21 | 
2 files changed, 60 insertions, 39 deletions
| diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee index 3a85c6fd..c3bc457a 100644 --- a/background_scripts/commands.coffee +++ b/background_scripts/commands.coffee @@ -22,17 +22,21 @@ Commands =        isBackgroundCommand: options.background        passCountToFunction: options.passCountToFunction        noRepeat: options.noRepeat +      repeatLimit: options.repeatLimit    mapKeyToCommand: (key, command) ->      unless @availableCommands[command]        console.log(command, "doesn't exist!")        return +    commandDetails = @availableCommands[command] +      @keyToCommandRegistry[key] =        command: command -      isBackgroundCommand: @availableCommands[command].isBackgroundCommand -      passCountToFunction: @availableCommands[command].passCountToFunction -      noRepeat: @availableCommands[command].noRepeat +      isBackgroundCommand: commandDetails.isBackgroundCommand +      passCountToFunction: commandDetails.passCountToFunction +      noRepeat: commandDetails.noRepeat +      repeatLimit: commandDetails.repeatLimit    unmapKey: (key) -> delete @keyToCommandRegistry[key] @@ -205,43 +209,43 @@ commandDescriptions =    scrollUp: ["Scroll up"]    scrollLeft: ["Scroll left"]    scrollRight: ["Scroll right"] -  scrollToTop: ["Scroll to the top of the page"] -  scrollToBottom: ["Scroll to the bottom of the page"] -  scrollToLeft: ["Scroll all the way to the left"] -  scrollToRight: ["Scroll all the way to the right"] +  scrollToTop: ["Scroll to the top of the page", { noRepeat: true }] +  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"]    scrollPageUp: ["Scroll a page up"]    scrollFullPageDown: ["Scroll a full page down"]    scrollFullPageUp: ["Scroll a full page up"] -  reload: ["Reload the page"] -  toggleViewSource: ["View page source"] +  reload: ["Reload the page", { noRepeat: true }] +  toggleViewSource: ["View page source", { noRepeat: true }] -  copyCurrentUrl: ["Copy the current URL to the clipboard"] -  'LinkHints.activateModeToCopyLinkUrl': ["Copy a link URL to the clipboard"] +  copyCurrentUrl: ["Copy the current URL to the clipboard", { noRepeat: true }] +  "LinkHints.activateModeToCopyLinkUrl": ["Copy a link URL to the clipboard", { noRepeat: true }]    openCopiedUrlInCurrentTab: ["Open the clipboard's URL in the current tab", { background: true }] -  openCopiedUrlInNewTab: ["Open the clipboard's URL in a new tab", { background: true }] +  openCopiedUrlInNewTab: ["Open the clipboard's URL in a new tab", { background: true, repeatLimit: 3 }] -  enterInsertMode: ["Enter insert mode"] +  enterInsertMode: ["Enter insert mode", { noRepeat: true }]    focusInput: ["Focus the first text box on the page. Cycle between them using tab",      { 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"] - -  "LinkHints.activateModeToOpenIncognito": ["Open a link in incognito window"] +  "LinkHints.activateMode": ["Open a link in the current tab", { noRepeat: true }] +  "LinkHints.activateModeToOpenInNewTab": ["Open a link in a new tab", { noRepeat: true }] +  "LinkHints.activateModeToOpenInNewForegroundTab": ["Open a link in a new tab & switch to it", { noRepeat: true }] +  "LinkHints.activateModeWithQueue": ["Open multiple links in a new tab", { noRepeat: true }] +  "LinkHints.activateModeToOpenIncognito": ["Open a link in incognito window", { noRepeat: true }] +  "LinkHints.activateModeToDownloadLink": ["Download link url", { noRepeat: true }] -  "LinkHints.activateModeToDownloadLink": ["Download link url"] -  enterFindMode: ["Enter find mode"] +  enterFindMode: ["Enter find mode", { noRepeat: true }]    performFind: ["Cycle forward to the next find match"]    performBackwardsFind: ["Cycle backward to the previous find match"] -  goPrevious: ["Follow the link labeled previous or <"] -  goNext: ["Follow the link labeled next or >"] +  goPrevious: ["Follow the link labeled previous or <", { noRepeat: true }] +  goNext: ["Follow the link labeled next or >", { noRepeat: true }]    # Navigating your history    goBack: ["Go back in history", { passCountToFunction: true }] @@ -256,10 +260,12 @@ commandDescriptions =    previousTab: ["Go one tab left", { background: true }]    firstTab: ["Go to the first tab", { background: true }]    lastTab: ["Go to the last tab", { background: true }] -  createTab: ["Create new tab", { background: true }] -  duplicateTab: ["Duplicate current tab", { background: true }] -  removeTab: ["Close current tab", { background: true, noRepeat: true }] -  restoreTab: ["Restore closed tab", { background: true }] + +  createTab: ["Create new tab", { background: true, repeatLimit: 2 }] +  duplicateTab: ["Duplicate current tab", { background: true, repeatLimit: 2 }] +  removeTab: ["Close current tab", { background: true, repeatLimit: 3 }] +  restoreTab: ["Restore closed tab", { background: true, repeatLimit: 3 }] +    moveTabToNewWindow: ["Move tab to new window", { background: true }]    togglePinTab: ["Pin/unpin current tab", { background: true }] @@ -270,18 +276,18 @@ commandDescriptions =    moveTabLeft: ["Move tab to the left", { background: true, passCountToFunction: true }]    moveTabRight: ["Move tab to the right", { background: true, passCountToFunction: true  }] -  "Vomnibar.activate": ["Open URL, bookmark, or history entry"] -  "Vomnibar.activateInNewTab": ["Open URL, bookmark, history entry, in a new tab"] -  "Vomnibar.activateTabSelection": ["Search through your open tabs"] -  "Vomnibar.activateBookmarks": ["Open a bookmark"] -  "Vomnibar.activateBookmarksInNewTab": ["Open a bookmark in a new tab"] -  "Vomnibar.activateEditUrl": ["Edit the current URL"] -  "Vomnibar.activateEditUrlInNewTab": ["Edit the current URL and open in a new tab"] +  "Vomnibar.activate": ["Open URL, bookmark, or history entry", { noRepeat: true }] +  "Vomnibar.activateInNewTab": ["Open URL, bookmark, history entry, in a new tab", { noRepeat: true }] +  "Vomnibar.activateTabSelection": ["Search through your open tabs", { noRepeat: true }] +  "Vomnibar.activateBookmarks": ["Open a bookmark", { noRepeat: true }] +  "Vomnibar.activateBookmarksInNewTab": ["Open a bookmark in a new tab", { noRepeat: true }] +  "Vomnibar.activateEditUrl": ["Edit the current URL", { noRepeat: true }] +  "Vomnibar.activateEditUrlInNewTab": ["Edit the current URL and open in a new tab", { noRepeat: true }]    nextFrame: ["Cycle forward to the next frame on the page", { background: true, passCountToFunction: true }] -  "Marks.activateCreateMode": ["Create a new mark"] -  "Marks.activateGotoMode": ["Go to a mark"] +  "Marks.activateCreateMode": ["Create a new mark", { noRepeat: true }] +  "Marks.activateGotoMode": ["Go to a mark", { noRepeat: true }]  Commands.init() diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 14ce7b0f..33425d90 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -244,9 +244,10 @@ BackgroundCommands =    previousTab: (callback) -> selectTab(callback, "previous")    firstTab: (callback) -> selectTab(callback, "first")    lastTab: (callback) -> selectTab(callback, "last") -  removeTab: -> +  removeTab: (callback) ->      chrome.tabs.getSelected(null, (tab) -> -      chrome.tabs.remove(tab.id)) +      chrome.tabs.remove(tab.id) +      selectionChangedHandlers.push(callback))    restoreTab: (callback) ->      # TODO: remove if-else -block when adopted into stable      if chrome.sessions @@ -531,7 +532,21 @@ checkKeyQueue = (keysToCheck, tabId, frameId) ->    if (Commands.keyToCommandRegistry[command])      registryEntry = Commands.keyToCommandRegistry[command] -    if !registryEntry.isBackgroundCommand +    runCommand = true + +    if registryEntry.noRepeat +      count = 1 +    else if registryEntry.repeatLimit and count > registryEntry.repeatLimit +      runCommand = confirm """ +        You have asked Vimium to perform #{count} repeats of the command: +        #{Commands.availableCommands[registryEntry.command].description} + +        Are you sure you want to continue? +      """ + +    if not runCommand +      # Do nothing, use has chosen not to execute the command +    else if not registryEntry.isBackgroundCommand        chrome.tabs.sendMessage(tabId,          name: "executePageCommand",          command: registryEntry.command, | 
