From 73a4fe0bb1f8a7296f0a174e84111ce021f1c14e Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Tue, 5 Sep 2017 13:44:21 +0900 Subject: do simple completion --- src/background/index.js | 16 ++++++++++++++-- src/background/tabs.js | 11 ++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'src/background') diff --git a/src/background/index.js b/src/background/index.js index 93d0e74..4a5e6d6 100644 --- a/src/background/index.js +++ b/src/background/index.js @@ -84,8 +84,20 @@ browser.runtime.onMessage.addListener((request, sender) => { return keyPressHandle(request, sender); case 'event.cmd.enter': return cmdEnterHandle(request, sender); - case 'event.cmd.suggest': - // TODO make suggestion and return + case 'event.cmd.tabs.completion': + return tabs.getCompletions(request.text).then((tabs) => { + let items = tabs.map((tab) => { + return { + caption: tab.title, + content: tab.title, + url: tab.url + } + }); + return { + name: "Buffers", + items: items + }; + }); break; } return Promise.resolve(); diff --git a/src/background/tabs.js b/src/background/tabs.js index be8ef02..111bbd9 100644 --- a/src/background/tabs.js +++ b/src/background/tabs.js @@ -49,6 +49,15 @@ 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 matched; + }); +}; + const selectPrevTab = (current, count) => { return browser.tabs.query({ currentWindow: true }, (tabs) => { if (tabs.length < 2) { @@ -78,4 +87,4 @@ const reload = (current, cache) => { ); }; -export { closeTab, reopenTab, selectAt, selectByKeyword, selectNextTab, selectPrevTab, reload }; +export { closeTab, reopenTab, selectAt, selectByKeyword, getCompletions, selectPrevTab, selectNextTab, reload }; -- cgit v1.2.3