aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/background/shared/completions/index.js41
-rw-r--r--src/shared/commands/docs.js11
2 files changed, 36 insertions, 16 deletions
diff --git a/src/background/shared/completions/index.js b/src/background/shared/completions/index.js
index d5875fe..22713e7 100644
--- a/src/background/shared/completions/index.js
+++ b/src/background/shared/completions/index.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 };
diff --git a/src/shared/commands/docs.js b/src/shared/commands/docs.js
new file mode 100644
index 0000000..c73eb71
--- /dev/null
+++ b/src/shared/commands/docs.js
@@ -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',
+};