aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2017-11-05 13:17:40 +0000
committerGitHub <noreply@github.com>2017-11-05 13:17:40 +0000
commitb3b017a123516096dd7be05695f7a71da3b808cc (patch)
tree76454e190c9539d5c4b55facfef7b207d357b445
parent7cdbe310c123587e6cd528f9de2595166c24d66c (diff)
parent12f960fe3504f8e4e7d6b48b2907af1cb19ac60c (diff)
Merge pull request #113 from alx741/tabs
Add Tabs first/last selectors
-rw-r--r--README.md1
-rw-r--r--src/background/actions/operation.js4
-rw-r--r--src/background/tabs.js16
-rw-r--r--src/shared/default-settings.js2
-rw-r--r--src/shared/operations.js2
5 files changed, 24 insertions, 1 deletions
diff --git a/README.md b/README.md
index 8540d47..04e6e9e 100644
--- a/README.md
+++ b/README.md
@@ -32,6 +32,7 @@ The default mappings are as follows:
- <kbd>d</kbd>: delete current tab
- <kbd>u</kbd>: reopen close tab
- <kbd>K</kbd>, <kbd>J</kbd>: select prev or next tab
+- <kbd>g0</kbd>, <kbd>g$</kbd>: select first or last tab
- <kbd>r</kbd>: reload current tab
- <kbd>R</kbd>: reload current tab without cache
diff --git a/src/background/actions/operation.js b/src/background/actions/operation.js
index b94c117..a5094c0 100644
--- a/src/background/actions/operation.js
+++ b/src/background/actions/operation.js
@@ -20,6 +20,10 @@ const exec = (operation, tab) => {
return tabs.selectPrevTab(tab.index, operation.count);
case operations.TAB_NEXT:
return tabs.selectNextTab(tab.index, operation.count);
+ case operations.TAB_FIRST:
+ return tabs.selectFirstTab();
+ case operations.TAB_LAST:
+ return tabs.selectLastTab();
case operations.TAB_RELOAD:
return tabs.reload(tab, operation.cache);
case operations.ZOOM_IN:
diff --git a/src/background/tabs.js b/src/background/tabs.js
index eed3252..020c826 100644
--- a/src/background/tabs.js
+++ b/src/background/tabs.js
@@ -79,6 +79,20 @@ const selectNextTab = (current, count) => {
});
};
+const selectFirstTab = () => {
+ return browser.tabs.query({ currentWindow: true }).then((tabs) => {
+ let id = tabs[0].id;
+ return browser.tabs.update(id, { active: true });
+ });
+};
+
+const selectLastTab = () => {
+ return browser.tabs.query({ currentWindow: true }).then((tabs) => {
+ let id = tabs[tabs.length - 1].id;
+ return browser.tabs.update(id, { active: true });
+ });
+};
+
const reload = (current, cache) => {
return browser.tabs.reload(
current.id,
@@ -88,5 +102,5 @@ const reload = (current, cache) => {
export {
closeTab, reopenTab, selectAt, selectByKeyword, getCompletions,
- selectPrevTab, selectNextTab, reload
+ selectPrevTab, selectNextTab, selectFirstTab, selectLastTab, reload
};
diff --git a/src/shared/default-settings.js b/src/shared/default-settings.js
index 60e7876..49eee37 100644
--- a/src/shared/default-settings.js
+++ b/src/shared/default-settings.js
@@ -28,6 +28,8 @@ export default {
"u": { "type": "tabs.reopen" },
"K": { "type": "tabs.prev", "count": 1 },
"J": { "type": "tabs.next", "count": 1 },
+ "g0": { "type": "tabs.first" },
+ "g$": { "type": "tabs.last" },
"r": { "type": "tabs.reload", "cache": false },
"R": { "type": "tabs.reload", "cache": true },
"zi": { "type": "zoom.in" },
diff --git a/src/shared/operations.js b/src/shared/operations.js
index d5c2985..1519e90 100644
--- a/src/shared/operations.js
+++ b/src/shared/operations.js
@@ -36,6 +36,8 @@ export default {
TAB_REOPEN: 'tabs.reopen',
TAB_PREV: 'tabs.prev',
TAB_NEXT: 'tabs.next',
+ TAB_FIRST: 'tabs.first',
+ TAB_LAST: 'tabs.last',
TAB_RELOAD: 'tabs.reload',
// Zooms