God*_*don 1 visual-studio-code vscode-extensions
我通过以下方式完成了 vscode 扩展vscode.languages.registerCompletionItemProvider(selector, new FuncCompletionProvider(),\'.\')
我想听听选择了哪条建议。在下图中\xef\xbc\x8c,当我单击当前项目时,我想要获取信息CompletionItem。\n
我尝试使用该resolveCompletionItem功能,但在选择建议之前resolveCompletionItem被触发。
我尝试使用resolveCompletionItem函数,但在选择建议之前resolveCompletionItem被触发。
看来这是故意的。根据他们的文档:
请注意,当完成项已显示在 UI 中或已选择要插入的项时,会调用此函数
'selected' 表示在列表中选择,未提交
CompletionItem深入了解何时插入a 的推荐方法是使用该CompletionProvider#command属性:
插入此补全后执行的可选命令。请注意,应使用additionalTextEdits 属性来描述对当前文档的其他修改。
用法示例:
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(
vscode.languages.registerCompletionItemProvider('html', new MyCompletionProvider),
vscode.commands.registerCommand("doTheThing", () => {
console.log('did the thing!!');
});
);
}
class MyCompletionProvider implements vscode.CompletionItemProvider {
provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext): vscode.ProviderResult<vscode.CompletionItem[] | vscode.CompletionList> {
const myHTMLCompletionItem: vscode.CompletionItem = new vscode.CompletionItem("myHTML");
myHTMLCompletionItem.command = {
title: '',
command: 'doTheThing'
};
return new vscode.CompletionList([myHTMLCompletionItem]);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
729 次 |
| 最近记录: |