如何知道vscode中选择了什么建议项

God*_*don 1 visual-studio-code vscode-extensions

我通过以下方式完成了 vscode 扩展vscode.languages.registerCompletionItemProvider(selector, new FuncCompletionProvider(),\'.\')

\n

我想听听选择了哪条建议。在下图中\xef\xbc\x8c,当我单击当前项目时,我想要获取信息CompletionItem。\n在此输入图像描述

\n

我尝试使用该resolveCompletionItem功能,但在选择建议之前resolveCompletionItem被触发。

\n

sou*_*ned 5

我尝试使用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)