diff options
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | background_scripts/main.coffee | 21 | ||||
| -rw-r--r-- | content_scripts/link_hints.coffee | 17 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 1 |
4 files changed, 24 insertions, 17 deletions
@@ -173,6 +173,8 @@ In `master` (not yet released) - Backup and restore Vimium options (see the very bottom of the options page, below *Advanced Options*). - It is now possible to map `<tab>`, `<enter>`, `<delete>`, `<insert>`, `<home>` and `<end>`. +- New command options for `createTab` to create create new normal and incognito windows + ([examples](https://github.com/philc/vimium/wiki/Tips-and-Tricks#creating-tabs-with-urls-and-windows)). 1.61 (2017-10-27) diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 8f095ef1..4e36907a 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -188,13 +188,20 @@ BackgroundCommands = [if request.tab.incognito then "chrome://newtab" else chrome.runtime.getURL newTabUrl] else [newTabUrl] - urls = request.urls[..].reverse() - do openNextUrl = (request) -> - if 0 < urls.length - TabOperations.openUrlInNewTab (extend request, {url: urls.pop()}), (tab) -> - openNextUrl extend request, {tab, tabId: tab.id} - else - callback request + if request.registryEntry.options.incognito or request.registryEntry.options.window + windowConfig = + url: request.urls + focused: true + incognito: request.registryEntry.options.incognito ? false + chrome.windows.create windowConfig, -> callback request + else + urls = request.urls[..].reverse() + do openNextUrl = (request) -> + if 0 < urls.length + TabOperations.openUrlInNewTab (extend request, {url: urls.pop()}), (tab) -> + openNextUrl extend request, {tab, tabId: tab.id} + else + callback request duplicateTab: mkRepeatCommand (request, callback) -> chrome.tabs.duplicate request.tabId, (tab) -> callback extend request, {tab, tabId: tab.id} moveTabToNewWindow: ({count, tab}) -> diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index a7a46e99..ca000c90 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -232,13 +232,9 @@ class LinkHintsMode onKeyDownInMode: (event) -> return if event.repeat - previousTabCount = @tabCount - @tabCount = 0 - # NOTE(smblott) The modifier behaviour here applies only to alphabet hints. if event.key in ["Control", "Shift"] and not Settings.get("filterLinkHints") and @mode in [ OPEN_IN_CURRENT_TAB, OPEN_WITH_QUEUE, OPEN_IN_NEW_BG_TAB, OPEN_IN_NEW_FG_TAB ] - @tabCount = previousTabCount # Toggle whether to open the link in a new or current tab. previousMode = @mode key = event.key @@ -258,6 +254,7 @@ class LinkHintsMode else if KeyboardUtils.isBackspace event if @markerMatcher.popKeyChar() + @tabCount = 0 @updateVisibleMarkers() else # Exit via @hintMode.exit(), so that the LinkHints.activate() "onExit" callback sees the key event and @@ -269,15 +266,13 @@ class LinkHintsMode HintCoordinator.sendMessage "activateActiveHintMarker" if @markerMatcher.activeHintMarker else if event.key == "Tab" - @tabCount = previousTabCount + (if event.shiftKey then -1 else 1) - @updateVisibleMarkers @tabCount + if event.shiftKey then @tabCount-- else @tabCount++ + @updateVisibleMarkers() else if event.key == " " and @markerMatcher.shouldRotateHints event - @tabCount = previousTabCount HintCoordinator.sendMessage "rotateHints" else - @tabCount = previousTabCount if event.ctrlKey or event.metaKey or event.altKey unless event.repeat keyChar = if Settings.get "filterLinkHints" @@ -287,6 +282,7 @@ class LinkHintsMode if keyChar keyChar = " " if keyChar == "space" if keyChar.length == 1 + @tabCount = 0 @markerMatcher.pushKeyChar keyChar @updateVisibleMarkers() else @@ -294,9 +290,10 @@ class LinkHintsMode handlerStack.suppressEvent - updateVisibleMarkers: (tabCount = 0) -> + updateVisibleMarkers: -> {hintKeystrokeQueue, linkTextKeystrokeQueue} = @markerMatcher - HintCoordinator.sendMessage "updateKeyState", {hintKeystrokeQueue, linkTextKeystrokeQueue, tabCount} + HintCoordinator.sendMessage "updateKeyState", + {hintKeystrokeQueue, linkTextKeystrokeQueue, tabCount: @tabCount} updateKeyState: ({hintKeystrokeQueue, linkTextKeystrokeQueue, tabCount}) -> extend @markerMatcher, {hintKeystrokeQueue, linkTextKeystrokeQueue} diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index fa973e43..432fa7a2 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -221,6 +221,7 @@ Frame = @port = chrome.runtime.connect name: "frames" @port.onMessage.addListener (request) => + root.extend window, root unless extend? # See #2800 and #2831. (@listeners[request.handler] ? this[request.handler]) request # We disable the content scripts when we lose contact with the background page, or on unload. |
