implement d/u command
This commit is contained in:
parent
36680ed8fe
commit
dc860d32f5
5 changed files with 37 additions and 2 deletions
|
@ -11,5 +11,8 @@
|
||||||
],
|
],
|
||||||
"background": {
|
"background": {
|
||||||
"scripts": ["build/background.js"]
|
"scripts": ["build/background.js"]
|
||||||
}
|
},
|
||||||
|
"permissions": [
|
||||||
|
"sessions"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,12 @@ const keyDownHandle = (request, sender, sendResponse) => {
|
||||||
|
|
||||||
const doBackgroundAction = (sender, action) => {
|
const doBackgroundAction = (sender, action) => {
|
||||||
switch(action[0]) {
|
switch(action[0]) {
|
||||||
|
case actions.TABS_CLOSE:
|
||||||
|
tabs.closeTab(sender.tab.id);
|
||||||
|
break;
|
||||||
|
case actions.TABS_REOPEN:
|
||||||
|
tabs.reopenTab();
|
||||||
|
break;
|
||||||
case actions.TABS_PREV:
|
case actions.TABS_PREV:
|
||||||
tabs.selectPrevTab(sender.tab.index, actions[1] || 1);
|
tabs.selectPrevTab(sender.tab.index, actions[1] || 1);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -9,6 +9,8 @@ const DEFAULT_KEYMAP = [
|
||||||
{ keys: [{ code: KeyboardEvent.DOM_VK_J }], action: [ actions.SCROLL_DOWN, 1 ]},
|
{ keys: [{ code: KeyboardEvent.DOM_VK_J }], action: [ actions.SCROLL_DOWN, 1 ]},
|
||||||
{ keys: [{ code: KeyboardEvent.DOM_VK_G }, { code: KeyboardEvent.DOM_VK_G }], action: [ actions.SCROLL_TOP ]},
|
{ keys: [{ code: KeyboardEvent.DOM_VK_G }, { code: KeyboardEvent.DOM_VK_G }], action: [ actions.SCROLL_TOP ]},
|
||||||
{ keys: [{ code: KeyboardEvent.DOM_VK_G, shift: true }], action: [ actions.SCROLL_BOTTOM ]},
|
{ keys: [{ code: KeyboardEvent.DOM_VK_G, shift: true }], action: [ actions.SCROLL_BOTTOM ]},
|
||||||
|
{ keys: [{ code: KeyboardEvent.DOM_VK_D }], action: [ actions.TABS_CLOSE ]},
|
||||||
|
{ keys: [{ code: KeyboardEvent.DOM_VK_U }], action: [ actions.TABS_REOPEN]},
|
||||||
{ keys: [{ code: KeyboardEvent.DOM_VK_H }], action: [ actions.TABS_PREV, 1 ]},
|
{ keys: [{ code: KeyboardEvent.DOM_VK_H }], action: [ actions.TABS_PREV, 1 ]},
|
||||||
{ keys: [{ code: KeyboardEvent.DOM_VK_L }], action: [ actions.TABS_NEXT, 1 ]},
|
{ keys: [{ code: KeyboardEvent.DOM_VK_L }], action: [ actions.TABS_NEXT, 1 ]},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,3 +1,23 @@
|
||||||
|
const closeTab = (id) => {
|
||||||
|
browser.tabs.remove(id);
|
||||||
|
};
|
||||||
|
|
||||||
|
const reopenTab = () => {
|
||||||
|
browser.sessions.getRecentlyClosed({
|
||||||
|
maxResults: 1
|
||||||
|
}).then((sessions) => {
|
||||||
|
if (sessions.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let session = sessions[0];
|
||||||
|
if (session.tab) {
|
||||||
|
browser.sessions.restore(session.tab.sessionId);
|
||||||
|
} else {
|
||||||
|
browser.sessions.restore(session.window.sessionId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const selectPrevTab = (current, count) => {
|
const selectPrevTab = (current, count) => {
|
||||||
chrome.tabs.query({ currentWindow: true }, (tabs) => {
|
chrome.tabs.query({ currentWindow: true }, (tabs) => {
|
||||||
if (tabs.length < 2) {
|
if (tabs.length < 2) {
|
||||||
|
@ -20,4 +40,4 @@ const selectNextTab = (current, count) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export { selectNextTab, selectPrevTab };
|
export { closeTab, reopenTab, selectNextTab, selectPrevTab };
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
export const CMD_OPEN = 'cmd.open';
|
export const CMD_OPEN = 'cmd.open';
|
||||||
export const CMD_TABS_OPEN = 'cmd.tabs.open';
|
export const CMD_TABS_OPEN = 'cmd.tabs.open';
|
||||||
|
export const TABS_CLOSE = 'tabs.close';
|
||||||
|
export const TABS_REOPEN = 'tabs.reopen';
|
||||||
export const TABS_PREV = 'tabs.prev';
|
export const TABS_PREV = 'tabs.prev';
|
||||||
export const TABS_NEXT = 'tabs.next';
|
export const TABS_NEXT = 'tabs.next';
|
||||||
export const SCROLL_UP = 'scroll.up';
|
export const SCROLL_UP = 'scroll.up';
|
||||||
|
@ -8,6 +10,8 @@ export const SCROLL_TOP = 'scroll.top';
|
||||||
export const SCROLL_BOTTOM = 'scroll.bottom';
|
export const SCROLL_BOTTOM = 'scroll.bottom';
|
||||||
|
|
||||||
const BACKGROUND_ACTION_SET = new Set([
|
const BACKGROUND_ACTION_SET = new Set([
|
||||||
|
TABS_CLOSE,
|
||||||
|
TABS_REOPEN,
|
||||||
TABS_PREV,
|
TABS_PREV,
|
||||||
TABS_NEXT
|
TABS_NEXT
|
||||||
]);
|
]);
|
||||||
|
|
Reference in a new issue