context.subscriptions.push(vscode.languages.registerCompletionItemProvider(['json', 'javascript'], {
provideCompletionItems: completionProvider,
}, ...['"', '/']))
}
completionProvider (document: vscode.TextDocument, position: vscode.Position) => {
return ['foo', 'foo2', 'foo3'].map(item => ({ label: item }))
}
Это может работать для файла js, но не для файла json. Есть ли какой-либо механизм для файлов типа JSON для предотвращения разведки? введите здесь описание изображения
Функция завершенияПровайдер ```экспортировать по умолчанию (документ: vscode.TextDocument, position: vscode.Position) => { return ['foo', 'foo2', 'foo3'].map(item => ({label: item }) ) } ```






Вот кусок кода, который работает:
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(
['json', 'javascript'],
{
provideCompletionItems(document, position) {
return ['foo', 'foo2', 'foo3'].map(item => {
let completionItem = new vscode.CompletionItem(item); // change to this
completionItem.range = new vscode.Range(position, position); // you need this for json
return completionItem;
})
}
},
...['"', "/"]
)
);
Опция range нужна специально для json файлов. Это связано с тем, что слово в json отличается, например, от javascript. См. Пользовательское расширение для завершения JSON не работает в двойных кавычках и https://stackoverflow.com/a/64593598/836330.
пожалуйста, поделитесь фрагментом кода, который можно воспроизвести.