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" },