在 VS Code 扩展中添加自动完成功能需要使用 CompletionItemProvider 接口。在保留建议的情况下,可以使用以下代码实现:
import {
CompletionItem,
CompletionItemKind,
CompletionItemProvider,
TextDocument,
Position,
CancellationToken,
} from 'vscode';
class MyCompletionItemProvider implements CompletionItemProvider {
public async provideCompletionItems(
document: TextDocument,
position: Position,
token: CancellationToken,
): Promise {
// 获取建议列表
const suggestions = await this.getSuggestions(position);
// 转换建议为 CompletionItem 对象
const completionItems = suggestions.map(suggestion => {
const item = new CompletionItem(suggestion.label);
item.kind = CompletionItemKind[suggestion.kind];
return item;
});
return completionItems;
}
private async getSuggestions(position: Position): Promise {
// 从 API 获取建议列表
// ...
return suggestions;
}
}
interface SuggestionItem {
label: string;
kind: string;
}
// 在扩展入口中注册 CompletionItemProvider
context.subscriptions.push(
languages.registerCompletionItemProvider(
'myLanguage', // 改为您的语言标识符
new MyCompletionItemProvider(),
),
);