aboutsummaryrefslogtreecommitdiff
path: root/src/background/shared/completions
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2018-07-11 21:58:41 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2018-07-11 21:58:41 +0900
commit1e39fed6183bf3b10f48eb52868bb5ab3fe3134f (patch)
treedd4c311d90e7212287b2ba2ce6a19eb6fcc38ab9 /src/background/shared/completions
parenta28f6f916d77baf87e3c023abbd6494e009a8d12 (diff)
Complete set commands
Diffstat (limited to 'src/background/shared/completions')
-rw-r--r--src/background/shared/completions/index.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/background/shared/completions/index.js b/src/background/shared/completions/index.js
index 22713e7..d630f33 100644
--- a/src/background/shared/completions/index.js
+++ b/src/background/shared/completions/index.js
@@ -2,6 +2,7 @@ import commandDocs from 'shared/commands/docs';
import * as tabs from './tabs';
import * as histories from './histories';
import * as bookmarks from './bookmarks';
+import * as properties from 'shared/settings/properties';
const completeCommands = (typing) => {
let keys = Object.keys(commandDocs);
@@ -86,6 +87,40 @@ const getBufferCompletions = async(command, keywords, excludePinned) => {
];
};
+const getSetCompletions = (command, keywords) => {
+ let keys = Object.keys(properties.docs).filter(
+ name => name.startsWith(keywords)
+ );
+ let items = keys.map((key) => {
+ if (properties.types[key] === 'boolean') {
+ return [
+ {
+ caption: key,
+ content: command + ' ' + key,
+ url: 'Enable ' + properties.docs[key],
+ }, {
+ caption: 'no' + key,
+ content: command + ' no' + key,
+ url: 'Disable ' + properties.docs[key],
+ }
+ ];
+ }
+ return [
+ {
+ caption: key,
+ content: command + ' ' + key,
+ url: 'Set ' + properties.docs[key],
+ }
+ ];
+ }).flat();
+ return Promise.resolve([
+ {
+ name: 'Properties',
+ items,
+ }
+ ]);
+};
+
const complete = (line, settings) => {
let trimmed = line.trimStart();
let words = trimmed.split(/ +/);
@@ -121,6 +156,8 @@ const complete = (line, settings) => {
case 'bdelete':
case 'bdeletes':
return getBufferCompletions(name, keywords, true);
+ case 'set':
+ return getSetCompletions(name, keywords);
}
return Promise.resolve([]);
};