diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-07-29 13:34:10 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-29 13:34:10 +0900 |
commit | 8ea004f629021a0fb5fcbce9398f2cf2f952938a (patch) | |
tree | d35d37b1688aaf6a22389a6b761e2be2f98f85c7 /src/background/usecases/command.js | |
parent | 85e9b9da3714c0fa2998b0fab8f2a01c49d84d5a (diff) | |
parent | b3672f0ffd82148716b38d133f35a5f9d2706ba8 (diff) |
Merge pull request #442 from ueokande/search-on-paste
Buffer flags
Diffstat (limited to 'src/background/usecases/command.js')
-rw-r--r-- | src/background/usecases/command.js | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/background/usecases/command.js b/src/background/usecases/command.js index 7fd2e57..f6ade43 100644 --- a/src/background/usecases/command.js +++ b/src/background/usecases/command.js @@ -34,13 +34,29 @@ export default class CommandIndicator { return this.windowPresenter.create(url); } + // eslint-disable-next-line max-statements async buffer(keywords) { if (keywords.length === 0) { return; } + if (!isNaN(keywords)) { + let tabs = await this.tabPresenter.getAll(); let index = parseInt(keywords, 10) - 1; - return tabs.selectAt(index); + if (index < 0 || tabs.length <= index) { + throw new RangeError(`tab ${index + 1} does not exist`); + } + return this.tabPresenter.select(tabs[index].id); + } else if (keywords.trim() === '%') { + // Select current window + return; + } else if (keywords.trim() === '#') { + // Select last selected window + let lastId = await this.tabPresenter.getLastSelectedId(); + if (typeof lastId === 'undefined' || lastId === null) { + throw new Error('No last selected tab'); + } + return this.tabPresenter.select(lastId); } let current = await this.tabPresenter.getCurrent(); |