in src/extension.js [182:240]
async provideCompletionItems(document, position, token, context) {
const line = document.lineAt(position).text.trim();
if (!line.startsWith('aliyun')) {
return;
}
if (line === 'aliyun configure') {
return [
new vscode.CompletionItem('get', vscode.CompletionItemKind.Function),
new vscode.CompletionItem('set', vscode.CompletionItemKind.Function),
new vscode.CompletionItem('list', vscode.CompletionItemKind.Function),
new vscode.CompletionItem('delete', vscode.CompletionItemKind.Function),
];
}
const parts = line.split(' ');
if (parts.length === 2) {
const [, subcommand] = parts;
if (subcommand === 'configure') {
return [
new vscode.CompletionItem('get', vscode.CompletionItemKind.Function),
new vscode.CompletionItem('set', vscode.CompletionItemKind.Function),
new vscode.CompletionItem('list', vscode.CompletionItemKind.Function),
new vscode.CompletionItem('delete', vscode.CompletionItemKind.Function),
];
}
return [
...metadata.getApis(subcommand, getLocale()).map((d) => {
const item = new vscode.CompletionItem(d, vscode.CompletionItemKind.Function);
item.insertText = `${item.label} `;
return item;
})
];
}
if (line === 'aliyun') {
return [
new vscode.CompletionItem({label: 'help', description: ''}, vscode.CompletionItemKind.Function),
new vscode.CompletionItem('version', vscode.CompletionItemKind.Function),
new vscode.CompletionItem('configure', vscode.CompletionItemKind.Module),
new vscode.CompletionItem({label: 'oss', description: 'Object Storage Service'}, vscode.CompletionItemKind.Module),
...metadata.getProducts(getLocale()).map((d) => {
const label = {
label: d.code.toLowerCase(),
description: locale === 'en-US' ? d.name.en : d.name.zh
};
const item = new vscode.CompletionItem(label, vscode.CompletionItemKind.Module);
item.insertText = `${label.label} `;
return item;
})
];
}
return [];
}