aboutsummaryrefslogtreecommitdiffstats
path: root/background_scripts/main.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'background_scripts/main.coffee')
-rw-r--r--background_scripts/main.coffee24
1 files changed, 24 insertions, 0 deletions
diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee
index 93ef1449..a8f851c0 100644
--- a/background_scripts/main.coffee
+++ b/background_scripts/main.coffee
@@ -290,6 +290,30 @@ BackgroundCommands =
chrome.tabs.sendMessage(tab.id, { name: "focusFrame", frameId: frames[newIndex].id, highlight: true }))
+ closeTabsToLeft: -> removeTabsRelative "before"
+ closeTabsToRight: -> removeTabsRelative "after"
+ closeOtherTabs: -> removeTabsRelative "both"
+
+# Remove tabs before, after, or either side of the currently active tab
+removeTabsRelative = (direction) ->
+ chrome.tabs.query {currentWindow: true}, (tabs) ->
+ chrome.tabs.query {currentWindow: true, active: true}, (activeTabArr) ->
+ activeTabIndex = activeTabArr[0].index
+
+ switch direction
+ when "before"
+ shouldDelete = (index) -> index < activeTabIndex
+ when "after"
+ shouldDelete = (index) -> index > activeTabIndex
+ when "both"
+ shouldDelete = (index) -> index != activeTabIndex
+
+ removeTabIds = []
+ for tab in tabs
+ if not tab.pinned and shouldDelete tab.index
+ removeTabIds.push tab.id
+ chrome.tabs.remove removeTabIds
+
# Selects a tab before or after the currently selected tab.
# - direction: "next", "previous", "first" or "last".
selectTab = (callback, direction) ->