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 | |
| parent | 62fc0d277962d52c4d0cb34fcea4364b23162717 (diff) | |
| parent | a86cfb88b033a094de1783546898895b7fbe0cf5 (diff) | |
| download | vimium-33406947a1b776c1aca7701668220e1967f6bb5c.tar.bz2 | |
Merge branch 'limitedRepeats' of github.com:mrmr1993/vimium into mrmr1993-limitedRepeats
| -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, |
