Complete console commands

jh-changes
Shin'ya Ueoka 6 years ago
parent 067da88d06
commit a28f6f916d
  1. 41
      src/background/shared/completions/index.js
  2. 11
      src/shared/commands/docs.js

@ -1,7 +1,19 @@
import commandDocs from 'shared/commands/docs';
import * as tabs from './tabs';
import * as histories from './histories';
import * as bookmarks from './bookmarks';
const completeCommands = (typing) => {
let keys = Object.keys(commandDocs);
return keys
.filter(name => name.startsWith(typing))
.map(name => ({
caption: name,
content: name,
url: commandDocs[name],
}));
};
const getSearchCompletions = (command, keywords, searchConfig) => {
let engineNames = Object.keys(searchConfig.engines);
let engineItems = engineNames.filter(name => name.startsWith(keywords))
@ -74,20 +86,21 @@ const getBufferCompletions = async(command, keywords, excludePinned) => {
];
};
const getCompletions = (line, settings) => {
let typedWords = line.trim().split(/ +/);
let typing = '';
if (!line.endsWith(' ')) {
typing = typedWords.pop();
}
if (typedWords.length === 0) {
return Promise.resolve([]);
const complete = (line, settings) => {
let trimmed = line.trimStart();
let words = trimmed.split(/ +/);
let name = words[0];
if (words.length === 1) {
return Promise.resolve([
{
name: 'Console Command',
items: completeCommands(name),
}
]);
}
let name = typedWords.shift();
let keywords = typedWords.concat(typing).join(' ');
let keywords = trimmed.slice(name.length).trimStart();
switch (name) {
switch (words[0]) {
case 'o':
case 'open':
case 't':
@ -112,8 +125,4 @@ const getCompletions = (line, settings) => {
return Promise.resolve([]);
};
const complete = (line, settings) => {
return getCompletions(line, settings);
};
export { complete };

@ -0,0 +1,11 @@
export default {
set: 'Set a value of the property',
open: 'Open a URL or search by keywords in current tab',
tabopen: 'Open a URL or search by keywords in new tab',
winopen: 'Open a URL or search by keywords in new window',
buffer: 'Sekect tabs by matched keywords',
bdelete: 'Close a certain tab matched by keywords',
bdeletes: 'Close all tabs matched by keywords',
quit: 'Close the current tab',
quitall: 'Close all tabs',
};