添加 completionitemprovider 并保留建议

add completionitemprovider and keep suggestions

我为我的扩展程序创建了一个 completionitemprovider,但现在没有显示基于文档中单词的建议。我必须提供文档中的每个单词吗?

export class ScriptViewProvider implements vscode.CompletionItemProvider
...
    extension.context.subscriptions.push(vscode.languages.registerCompletionItemProvider(
            ["language"],
            this));
...
    async provideCompletionItems(document : vscode.TextDocument, position : vscode.Position) : Promise<vscode.CompletionItem[]> {
        let completions : vscode.CompletionItem[] = [];
        let completion = new vscode.CompletionItem("bla", vscode.CompletionItemKind.Field);
        completions.push(completion);
        return completions;
    }

当我输入“b”时出现“bla”,但文档中的 none 个其他词出现。

请参阅 this comment 一个开放的 VS Code 问题。

当您的 CompletionProvider 使用比其他提供程序更重要的 DocumentSelector 注册并且 returns 至少有一个完成项时,其他提供程序将被跳过。 基于单词的建议提供程序 不太重要,因此它不提供任何建议。

根据扩展的性质,您可以在注册 CompletionProvider 时尝试定义一个不太具体的 DocumentSelector。 如果这不可能,我认为除了自己提供所有完成项(包括基于单词的建议)之外别无选择。