Close tabs which are dupes
- ID
45548ff- date
2024-05-13 07:55:46+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
051c527- message
Close tabs which are dupes- changed files
1 file, 17 additions, 5 deletions
Changed files
macos/close_tabs (3555) → macos/close_tabs (3921)
diff --git a/macos/close_tabs b/macos/close_tabs
index ff2802d..4f82c2e 100755
--- a/macos/close_tabs
+++ b/macos/close_tabs
@@ -84,14 +84,26 @@ function isSafeToClose(url) {
let closedCount = 0;
let remainingCount = 0;
+var alreadySeenUrls = new Set();
+
+// We can close a tab if:
+//
+// - it's safe to close, or
+// - the URL in this tab is open in another tab, so it's a dupe
+//
for (const [window_index, tab_index, url] of tabGenerator()) {
- if (isSafeToClose(url)) {
- console.log(url);
+ if (isSafeToClose(url)) {
+ console.log(url);
safari.windows[window_index].tabs[tab_index].close();
closedCount += 1;
- } else {
- remainingCount += 1;
- }
+ } else if (alreadySeenUrls.has(url)) {
+ console.log(`${url} (open in another tab)`);
+ safari.windows[window_index].tabs[tab_index].close();
+ closedCount += 1;
+ } else {
+ remainingCount += 1;
+ alreadySeenUrls.add(url);
+ }
}
console.log(`Closed ${closedCount} tab${closedCount !== 1 ? 's' : ''}; ${remainingCount} tab${remainingCount !== 1 ? 's' : ''} left open`)