From cc539d96bc2d14796279fc2c4c867bb6a3b2df06 Mon Sep 17 00:00:00 2001 From: Kostyantyn Leschenko Date: Mon, 20 Nov 2017 16:58:39 +0200 Subject: Fix buffers completion when there are some tabs with undefined title. --- src/background/tabs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index d641616..b34f7c2 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -51,7 +51,7 @@ const selectByKeyword = (current, keyword) => { const getCompletions = (keyword) => { return browser.tabs.query({ currentWindow: true }).then((tabs) => { let matched = tabs.filter((t) => { - return t.url.includes(keyword) || t.title.includes(keyword); + return t.url.includes(keyword) || t.title && t.title.includes(keyword); }); return matched; }); -- cgit v1.2.3 From 50cc126e08056b4f5191f603c01f0e9951692696 Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Sun, 5 Nov 2017 18:04:46 -0500 Subject: Dummy selectPrevSelTab implementation --- src/background/actions/operation.js | 2 ++ src/background/tabs.js | 18 ++++++++++++++++-- src/shared/operations.js | 1 + src/shared/settings/default.js | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/actions/operation.js b/src/background/actions/operation.js index 1e4990c..cfee868 100644 --- a/src/background/actions/operation.js +++ b/src/background/actions/operation.js @@ -27,6 +27,8 @@ const exec = (operation, tab) => { return tabs.selectFirstTab(); case operations.TAB_LAST: return tabs.selectLastTab(); + case operations.TAB_PREV_SEL: + return tabs.selectPrevSelTab(); case operations.TAB_RELOAD: return tabs.reload(tab, operation.cache); case operations.TAB_PIN: diff --git a/src/background/tabs.js b/src/background/tabs.js index d641616..ce48eda 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -1,3 +1,6 @@ +// var prevSelTab = null; +var prevSelTab = 0; + const closeTab = (id) => { return browser.tabs.remove(id); }; @@ -93,6 +96,17 @@ const selectLastTab = () => { }); }; +const selectPrevSelTab = () => { + if (prevSelTab != null) { + return browser.tabs.query({ currentWindow: true }).then((tabs) => { + let id = tabs[prevSelTab].id; + return browser.tabs.update(id, { active: true }); + }); + } else { + // some error message + } +}; + const reload = (current, cache) => { return browser.tabs.reload( current.id, @@ -117,6 +131,6 @@ const duplicate = (id) => { export { closeTab, reopenTab, selectAt, selectByKeyword, getCompletions, - selectPrevTab, selectNextTab, selectFirstTab, selectLastTab, reload, - updateTabPinned, toggleTabPinned, duplicate + selectPrevTab, selectNextTab, selectFirstTab, selectLastTab, selectPrevSelTab, + reload, updateTabPinned, toggleTabPinned, duplicate }; diff --git a/src/shared/operations.js b/src/shared/operations.js index 4c221ba..235793a 100644 --- a/src/shared/operations.js +++ b/src/shared/operations.js @@ -38,6 +38,7 @@ export default { TAB_NEXT: 'tabs.next', TAB_FIRST: 'tabs.first', TAB_LAST: 'tabs.last', + TAB_PREV_SEL: 'tabs.prevsel', TAB_RELOAD: 'tabs.reload', TAB_PIN: 'tabs.pin', TAB_UNPIN: 'tabs.unpin', diff --git a/src/shared/settings/default.js b/src/shared/settings/default.js index 69238e3..44ac5f4 100644 --- a/src/shared/settings/default.js +++ b/src/shared/settings/default.js @@ -30,6 +30,7 @@ export default { "J": { "type": "tabs.next", "count": 1 }, "g0": { "type": "tabs.first" }, "g$": { "type": "tabs.last" }, + "gl": { "type": "tabs.prevsel" }, "r": { "type": "tabs.reload", "cache": false }, "R": { "type": "tabs.reload", "cache": true }, "zp": { "type": "tabs.pin.toggle" }, -- cgit v1.2.3 From 92a1e170e15131e65be5144e101ea6e4057fc09b Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Sun, 5 Nov 2017 18:45:38 -0500 Subject: Keep previous selected tab --- src/background/tabs.js | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index ce48eda..06831f8 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -1,4 +1,3 @@ -// var prevSelTab = null; var prevSelTab = 0; const closeTab = (id) => { @@ -61,6 +60,10 @@ const getCompletions = (keyword) => { }; const selectPrevTab = (current, count) => { + browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { + prevSelTab = tabs[0].id; + }); + return browser.tabs.query({ currentWindow: true }).then((tabs) => { if (tabs.length < 2) { return; @@ -72,6 +75,10 @@ const selectPrevTab = (current, count) => { }; const selectNextTab = (current, count) => { + browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { + prevSelTab = tabs[0].id; + }); + return browser.tabs.query({ currentWindow: true }).then((tabs) => { if (tabs.length < 2) { return; @@ -83,6 +90,10 @@ const selectNextTab = (current, count) => { }; const selectFirstTab = () => { + browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { + prevSelTab = tabs[0].id; + }); + return browser.tabs.query({ currentWindow: true }).then((tabs) => { let id = tabs[0].id; return browser.tabs.update(id, { active: true }); @@ -90,6 +101,10 @@ const selectFirstTab = () => { }; const selectLastTab = () => { + browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { + prevSelTab = tabs[0].id; + }); + return browser.tabs.query({ currentWindow: true }).then((tabs) => { let id = tabs[tabs.length - 1].id; return browser.tabs.update(id, { active: true }); @@ -97,14 +112,15 @@ const selectLastTab = () => { }; const selectPrevSelTab = () => { - if (prevSelTab != null) { - return browser.tabs.query({ currentWindow: true }).then((tabs) => { - let id = tabs[prevSelTab].id; - return browser.tabs.update(id, { active: true }); - }); - } else { - // some error message - } + var tmpPrevSelTab = null; + browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { + tmpPrevSelTab = tabs[0].id; + }); + + return browser.tabs.query({ currentWindow: true }).then((tabs) => { + browser.tabs.update(prevSelTab, { active: true }); + prevSelTab = tmpPrevSelTab; + }); }; const reload = (current, cache) => { -- cgit v1.2.3 From 94dedbd0e9b872934ee1d7a6250dcffffd82bed6 Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Mon, 6 Nov 2017 10:59:19 -0500 Subject: Clean selectPrevSelTab --- src/background/tabs.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index 06831f8..a908d17 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -1,4 +1,4 @@ -var prevSelTab = 0; +let prevSelTab = 0; const closeTab = (id) => { return browser.tabs.remove(id); @@ -112,12 +112,9 @@ const selectLastTab = () => { }; const selectPrevSelTab = () => { - var tmpPrevSelTab = null; - browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { + let tmpPrevSelTab = null; + return browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { tmpPrevSelTab = tabs[0].id; - }); - - return browser.tabs.query({ currentWindow: true }).then((tabs) => { browser.tabs.update(prevSelTab, { active: true }); prevSelTab = tmpPrevSelTab; }); -- cgit v1.2.3 From 9c1bc5552a0b2ee5899bffeecc2af5eeeea9f78b Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Mon, 6 Nov 2017 11:03:26 -0500 Subject: Format lines to 80 chars --- src/background/tabs.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index a908d17..2bf780a 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -113,11 +113,12 @@ const selectLastTab = () => { const selectPrevSelTab = () => { let tmpPrevSelTab = null; - return browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { - tmpPrevSelTab = tabs[0].id; - browser.tabs.update(prevSelTab, { active: true }); - prevSelTab = tmpPrevSelTab; - }); + return browser.tabs.query({ currentWindow: true, active: true }).then( + (tabs) => { + tmpPrevSelTab = tabs[0].id; + browser.tabs.update(prevSelTab, { active: true }); + prevSelTab = tmpPrevSelTab; + }); }; const reload = (current, cache) => { -- cgit v1.2.3 From e9a7f679c4bf2aa786be4f6a8b44c7c62f464577 Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Sun, 26 Nov 2017 12:38:27 -0500 Subject: Keep current en previous tabs id --- src/background/tabs.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index 2bf780a..07083c5 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -1,4 +1,5 @@ let prevSelTab = 0; +let currSelTab = 2; const closeTab = (id) => { return browser.tabs.remove(id); @@ -111,14 +112,21 @@ const selectLastTab = () => { }); }; +// const selectPrevSelTab = () => { +// let tmpPrevSelTab = null; +// return browser.tabs.query({ currentWindow: true, active: true }).then( +// (tabs) => { +// tmpPrevSelTab = tabs[0].id; +// browser.tabs.update(prevSelTab, { active: true }); +// prevSelTab = tmpPrevSelTab; +// }); +// }; + const selectPrevSelTab = () => { - let tmpPrevSelTab = null; - return browser.tabs.query({ currentWindow: true, active: true }).then( - (tabs) => { - tmpPrevSelTab = tabs[0].id; - browser.tabs.update(prevSelTab, { active: true }); - prevSelTab = tmpPrevSelTab; - }); + let tmpPrevSelTab = prevSelTab; + prevSelTab = currSelTab; + currSelTab = tmpPrevSelTab; + return browser.tabs.update(currSelTab, { active: true }); }; const reload = (current, cache) => { -- cgit v1.2.3 From 3acd921d524818735318413e15c1c3e6576b013b Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Sun, 26 Nov 2017 13:19:40 -0500 Subject: Use tab-change event handler --- src/background/tabs.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index 07083c5..a5a2adc 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -1,5 +1,13 @@ -let prevSelTab = 0; -let currSelTab = 2; +let prevSelTab = 1; +let currSelTab = 1; + +browser.tabs.onActivated.addListener(tabChangeHandler); + +function tabChangeHandler(activeInfo) { + prevSelTab = currSelTab; + currSelTab = activeInfo.tabId; + console.log("prev tab: " + prevSelTab + " - curr tab: " + currSelTab); +} const closeTab = (id) => { return browser.tabs.remove(id); @@ -71,6 +79,7 @@ const selectPrevTab = (current, count) => { } let select = (current - count + tabs.length) % tabs.length; let id = tabs[select].id; + currSelTab = id; return browser.tabs.update(id, { active: true }); }); }; @@ -86,6 +95,7 @@ const selectNextTab = (current, count) => { } let select = (current + count) % tabs.length; let id = tabs[select].id; + currSelTab = id; return browser.tabs.update(id, { active: true }); }); }; @@ -97,6 +107,7 @@ const selectFirstTab = () => { return browser.tabs.query({ currentWindow: true }).then((tabs) => { let id = tabs[0].id; + currSelTab = id; return browser.tabs.update(id, { active: true }); }); }; @@ -108,6 +119,7 @@ const selectLastTab = () => { return browser.tabs.query({ currentWindow: true }).then((tabs) => { let id = tabs[tabs.length - 1].id; + currSelTab = id; return browser.tabs.update(id, { active: true }); }); }; -- cgit v1.2.3 From 6fc5d06205a10b5c3a4af37d19ed6d4650b6d42e Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Sun, 26 Nov 2017 13:26:27 -0500 Subject: Previous selected tab based on tab events only --- src/background/tabs.js | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index a5a2adc..4de4dd2 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -6,7 +6,6 @@ browser.tabs.onActivated.addListener(tabChangeHandler); function tabChangeHandler(activeInfo) { prevSelTab = currSelTab; currSelTab = activeInfo.tabId; - console.log("prev tab: " + prevSelTab + " - curr tab: " + currSelTab); } const closeTab = (id) => { @@ -69,76 +68,43 @@ const getCompletions = (keyword) => { }; const selectPrevTab = (current, count) => { - browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { - prevSelTab = tabs[0].id; - }); - return browser.tabs.query({ currentWindow: true }).then((tabs) => { if (tabs.length < 2) { return; } let select = (current - count + tabs.length) % tabs.length; let id = tabs[select].id; - currSelTab = id; return browser.tabs.update(id, { active: true }); }); }; const selectNextTab = (current, count) => { - browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { - prevSelTab = tabs[0].id; - }); - return browser.tabs.query({ currentWindow: true }).then((tabs) => { if (tabs.length < 2) { return; } let select = (current + count) % tabs.length; let id = tabs[select].id; - currSelTab = id; return browser.tabs.update(id, { active: true }); }); }; const selectFirstTab = () => { - browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { - prevSelTab = tabs[0].id; - }); - return browser.tabs.query({ currentWindow: true }).then((tabs) => { let id = tabs[0].id; - currSelTab = id; return browser.tabs.update(id, { active: true }); }); }; const selectLastTab = () => { - browser.tabs.query({ currentWindow: true, active: true }).then((tabs) => { - prevSelTab = tabs[0].id; - }); - return browser.tabs.query({ currentWindow: true }).then((tabs) => { let id = tabs[tabs.length - 1].id; - currSelTab = id; return browser.tabs.update(id, { active: true }); }); }; -// const selectPrevSelTab = () => { -// let tmpPrevSelTab = null; -// return browser.tabs.query({ currentWindow: true, active: true }).then( -// (tabs) => { -// tmpPrevSelTab = tabs[0].id; -// browser.tabs.update(prevSelTab, { active: true }); -// prevSelTab = tmpPrevSelTab; -// }); -// }; - const selectPrevSelTab = () => { - let tmpPrevSelTab = prevSelTab; - prevSelTab = currSelTab; - currSelTab = tmpPrevSelTab; - return browser.tabs.update(currSelTab, { active: true }); + return browser.tabs.update(prevSelTab, { active: true }); }; const reload = (current, cache) => { -- cgit v1.2.3 From 70a47fdaeee9da195369a625a5f820731eaeaf3f Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Sun, 26 Nov 2017 13:38:17 -0500 Subject: Fix linter error --- src/background/tabs.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index 4de4dd2..d4b033a 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -1,12 +1,10 @@ let prevSelTab = 1; let currSelTab = 1; -browser.tabs.onActivated.addListener(tabChangeHandler); - -function tabChangeHandler(activeInfo) { +browser.tabs.onActivated.addListener((activeInfo) => { prevSelTab = currSelTab; currSelTab = activeInfo.tabId; -} +}); const closeTab = (id) => { return browser.tabs.remove(id); -- cgit v1.2.3 From 0056c5fec4cf44ced8d2fc0880f7cc462971c0ec Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Sun, 26 Nov 2017 14:40:26 -0500 Subject: Fix visible links test --- src/background/tabs.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index d4b033a..f44f173 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -2,8 +2,10 @@ let prevSelTab = 1; let currSelTab = 1; browser.tabs.onActivated.addListener((activeInfo) => { - prevSelTab = currSelTab; - currSelTab = activeInfo.tabId; + return browser.tabs.query({ currentWindow: true }).then((tabs) => { + prevSelTab = currSelTab; + currSelTab = activeInfo.tabId; + }); }); const closeTab = (id) => { -- cgit v1.2.3 From f9b59a14333108efd0e83905e274c0edf7dd2752 Mon Sep 17 00:00:00 2001 From: Daniel Campoverde Date: Sun, 26 Nov 2017 14:52:54 -0500 Subject: Remove unused variables --- src/background/tabs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index f44f173..5ed5bdf 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -2,7 +2,7 @@ let prevSelTab = 1; let currSelTab = 1; browser.tabs.onActivated.addListener((activeInfo) => { - return browser.tabs.query({ currentWindow: true }).then((tabs) => { + return browser.tabs.query({ currentWindow: true }).then(() => { prevSelTab = currSelTab; currSelTab = activeInfo.tabId; }); -- cgit v1.2.3 From e7dcd7f500f9c139835313a573f861a10aa49d18 Mon Sep 17 00:00:00 2001 From: Cornelius Matějka Date: Wed, 22 Nov 2017 19:22:30 +0100 Subject: Pinned tabs are not closeable by 'd' Added binding 'DD' to force tab close which also closes pinned tabs --- src/background/actions/operation.js | 2 ++ src/background/tabs.js | 15 ++++++++++++--- src/shared/operations.js | 1 + src/shared/settings/default.js | 1 + 4 files changed, 16 insertions(+), 3 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/actions/operation.js b/src/background/actions/operation.js index cfee868..1188ea2 100644 --- a/src/background/actions/operation.js +++ b/src/background/actions/operation.js @@ -17,6 +17,8 @@ const exec = (operation, tab) => { switch (operation.type) { case operations.TAB_CLOSE: return tabs.closeTab(tab.id); + case operations.TAB_CLOSE_FORCE: + return tabs.closeTabForce(tab.id); case operations.TAB_REOPEN: return tabs.reopenTab(); case operations.TAB_PREV: diff --git a/src/background/tabs.js b/src/background/tabs.js index d50d8e5..e02932a 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -9,6 +9,14 @@ browser.tabs.onActivated.addListener((activeInfo) => { }); const closeTab = (id) => { + return browser.tabs.get(id).then((tab) => { + if(!tab.pinned) { + return browser.tabs.remove(id); + } + }) +}; + +const closeTabForce = (id) => { return browser.tabs.remove(id); }; @@ -130,7 +138,8 @@ const duplicate = (id) => { }; export { - closeTab, reopenTab, selectAt, selectByKeyword, getCompletions, - selectPrevTab, selectNextTab, selectFirstTab, selectLastTab, selectPrevSelTab, - reload, updateTabPinned, toggleTabPinned, duplicate + closeTab, closeTabForce, reopenTab, selectAt, selectByKeyword, + getCompletions, selectPrevTab, selectNextTab, selectFirstTab, + selectLastTab, selectPrevSelTab, reload, updateTabPinned, + toggleTabPinned, duplicate }; diff --git a/src/shared/operations.js b/src/shared/operations.js index 19466df..4172f8b 100644 --- a/src/shared/operations.js +++ b/src/shared/operations.js @@ -33,6 +33,7 @@ export default { // Tabs TAB_CLOSE: 'tabs.close', + TAB_CLOSE_FORCE: 'tabs.close.force', TAB_REOPEN: 'tabs.reopen', TAB_PREV: 'tabs.prev', TAB_NEXT: 'tabs.next', diff --git a/src/shared/settings/default.js b/src/shared/settings/default.js index e81df2b..826e3f6 100644 --- a/src/shared/settings/default.js +++ b/src/shared/settings/default.js @@ -23,6 +23,7 @@ export default { "G": { "type": "scroll.bottom" }, "$": { "type": "scroll.end" }, "d": { "type": "tabs.close" }, + "DD": { "type": "tabs.close.force" }, "u": { "type": "tabs.reopen" }, "K": { "type": "tabs.prev", "count": 1 }, "J": { "type": "tabs.next", "count": 1 }, -- cgit v1.2.3 From 5c803656f2d5546e90a1297ef9a2149e488d04b3 Mon Sep 17 00:00:00 2001 From: Cornelius Matějka Date: Wed, 22 Nov 2017 19:32:06 +0100 Subject: Fixed few lint errors --- src/background/tabs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/background/tabs.js') diff --git a/src/background/tabs.js b/src/background/tabs.js index e02932a..e939870 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -10,10 +10,10 @@ browser.tabs.onActivated.addListener((activeInfo) => { const closeTab = (id) => { return browser.tabs.get(id).then((tab) => { - if(!tab.pinned) { + if (!tab.pinned) { return browser.tabs.remove(id); } - }) + }); }; const closeTabForce = (id) => { -- cgit v1.2.3