select tab as rotations

jh-changes
Shin'ya Ueoka 7 years ago
parent 8cabd68b92
commit 4341f5ab62
  1. 6
      src/background/index.js
  2. 10
      src/background/tabs.js

@ -55,9 +55,9 @@ const normalizeUrl = (string) => {
} }
} }
const cmdBuffer = (arg) => { const cmdBuffer = (sender, arg) => {
if (isNaN(arg)) { if (isNaN(arg)) {
return tabs.selectByKeyword(arg); return tabs.selectByKeyword(sender.tab, arg);
} else { } else {
let index = parseInt(arg, 10) - 1; let index = parseInt(arg, 10) - 1;
return tabs.selectAt(index); return tabs.selectAt(index);
@ -73,7 +73,7 @@ const cmdEnterHandle = (request, sender) => {
return browser.tabs.create({ url: normalizeUrl(words[1]) }); return browser.tabs.create({ url: normalizeUrl(words[1]) });
case 'b': case 'b':
case 'buffer': case 'buffer':
return cmdBuffer(words[1]); return cmdBuffer(sender, words[1]);
} }
throw new Error(words[0] + ' command is not defined'); throw new Error(words[0] + ' command is not defined');
}; };

@ -31,7 +31,7 @@ const selectAt = (index) => {
}); });
}; };
const selectByKeyword = (keyword) => { const selectByKeyword = (current, keyword) => {
return browser.tabs.query({ currentWindow: true }).then((tabs) => { return browser.tabs.query({ currentWindow: true }).then((tabs) => {
let matched = tabs.filter((t) => { let matched = tabs.filter((t) => {
return t.url.includes(keyword) || t.title.includes(keyword) return t.url.includes(keyword) || t.title.includes(keyword)
@ -39,10 +39,12 @@ const selectByKeyword = (keyword) => {
if (matched.length == 0) { if (matched.length == 0) {
throw new RangeError('No matching buffer for ' + keyword); throw new RangeError('No matching buffer for ' + keyword);
} else if (matched.length >= 2) {
throw new RangeError('More than one match for ' + keyword);
} }
for (let tab of matched) {
if (tab.index > current.index) {
return browser.tabs.update(tab.id, { active: true });
}
}
return browser.tabs.update(matched[0].id, { active: true }); return browser.tabs.update(matched[0].id, { active: true });
}); });
} }