Complete console commands
This commit is contained in:
parent
067da88d06
commit
a28f6f916d
2 changed files with 36 additions and 16 deletions
|
@ -1,7 +1,19 @@
|
||||||
|
import commandDocs from 'shared/commands/docs';
|
||||||
import * as tabs from './tabs';
|
import * as tabs from './tabs';
|
||||||
import * as histories from './histories';
|
import * as histories from './histories';
|
||||||
import * as bookmarks from './bookmarks';
|
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) => {
|
const getSearchCompletions = (command, keywords, searchConfig) => {
|
||||||
let engineNames = Object.keys(searchConfig.engines);
|
let engineNames = Object.keys(searchConfig.engines);
|
||||||
let engineItems = engineNames.filter(name => name.startsWith(keywords))
|
let engineItems = engineNames.filter(name => name.startsWith(keywords))
|
||||||
|
@ -74,20 +86,21 @@ const getBufferCompletions = async(command, keywords, excludePinned) => {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
const getCompletions = (line, settings) => {
|
const complete = (line, settings) => {
|
||||||
let typedWords = line.trim().split(/ +/);
|
let trimmed = line.trimStart();
|
||||||
let typing = '';
|
let words = trimmed.split(/ +/);
|
||||||
if (!line.endsWith(' ')) {
|
let name = words[0];
|
||||||
typing = typedWords.pop();
|
if (words.length === 1) {
|
||||||
|
return Promise.resolve([
|
||||||
|
{
|
||||||
|
name: 'Console Command',
|
||||||
|
items: completeCommands(name),
|
||||||
|
}
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
let keywords = trimmed.slice(name.length).trimStart();
|
||||||
|
|
||||||
if (typedWords.length === 0) {
|
switch (words[0]) {
|
||||||
return Promise.resolve([]);
|
|
||||||
}
|
|
||||||
let name = typedWords.shift();
|
|
||||||
let keywords = typedWords.concat(typing).join(' ');
|
|
||||||
|
|
||||||
switch (name) {
|
|
||||||
case 'o':
|
case 'o':
|
||||||
case 'open':
|
case 'open':
|
||||||
case 't':
|
case 't':
|
||||||
|
@ -112,8 +125,4 @@ const getCompletions = (line, settings) => {
|
||||||
return Promise.resolve([]);
|
return Promise.resolve([]);
|
||||||
};
|
};
|
||||||
|
|
||||||
const complete = (line, settings) => {
|
|
||||||
return getCompletions(line, settings);
|
|
||||||
};
|
|
||||||
|
|
||||||
export { complete };
|
export { complete };
|
||||||
|
|
11
src/shared/commands/docs.js
Normal file
11
src/shared/commands/docs.js
Normal file
|
@ -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',
|
||||||
|
};
|
Reference in a new issue