Complete set commands
This commit is contained in:
parent
a28f6f916d
commit
1e39fed618
2 changed files with 44 additions and 1 deletions
|
@ -2,6 +2,7 @@ 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';
|
||||||
|
import * as properties from 'shared/settings/properties';
|
||||||
|
|
||||||
const completeCommands = (typing) => {
|
const completeCommands = (typing) => {
|
||||||
let keys = Object.keys(commandDocs);
|
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) => {
|
const complete = (line, settings) => {
|
||||||
let trimmed = line.trimStart();
|
let trimmed = line.trimStart();
|
||||||
let words = trimmed.split(/ +/);
|
let words = trimmed.split(/ +/);
|
||||||
|
@ -121,6 +156,8 @@ const complete = (line, settings) => {
|
||||||
case 'bdelete':
|
case 'bdelete':
|
||||||
case 'bdeletes':
|
case 'bdeletes':
|
||||||
return getBufferCompletions(name, keywords, true);
|
return getBufferCompletions(name, keywords, true);
|
||||||
|
case 'set':
|
||||||
|
return getSetCompletions(name, keywords);
|
||||||
}
|
}
|
||||||
return Promise.resolve([]);
|
return Promise.resolve([]);
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,4 +15,10 @@ const defaults = {
|
||||||
adjacenttab: true,
|
adjacenttab: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
export { types, defaults };
|
const docs = {
|
||||||
|
hintchars: 'Hint characters on follow mode',
|
||||||
|
smoothscroll: 'smooth scroll',
|
||||||
|
adjacenttab: 'open adjacent tabs',
|
||||||
|
};
|
||||||
|
|
||||||
|
export { types, defaults, docs };
|
||||||
|
|
Reference in a new issue