/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); export function provideInstalledExtensionProposals(existing: string[], additionalText: string, range: vscode.Range, includeBuiltinExtensions: boolean): vscode.ProviderResult { if (Array.isArray(existing)) { const extensions = includeBuiltinExtensions ? vscode.extensions.all : vscode.extensions.all.filter(e => !(e.id.startsWith('vscode.') || e.id === 'Microsoft.vscode-markdown')); const knownExtensionProposals = extensions.filter(e => existing.indexOf(e.id) === -1); if (knownExtensionProposals.length) { return knownExtensionProposals.map(e => { const item = new vscode.CompletionItem(e.id); const insertText = `"${e.id}"${additionalText}`; item.kind = vscode.CompletionItemKind.Value; item.insertText = insertText; item.range = range; item.filterText = insertText; return item; }); } else { const example = new vscode.CompletionItem(localize('exampleExtension', "Example")); example.insertText = '"vscode.csharp"'; example.kind = vscode.CompletionItemKind.Value; example.range = range; return [example]; } } return undefined; } export function provideWorkspaceTrustExtensionProposals(existing: string[], range: vscode.Range): vscode.ProviderResult { if (Array.isArray(existing)) { const extensions = vscode.extensions.all.filter(e => e.packageJSON.main); const extensionProposals = extensions.filter(e => existing.indexOf(e.id) === -1); if (extensionProposals.length) { return extensionProposals.map(e => { const item = new vscode.CompletionItem(e.id); const insertText = `"${e.id}": {\n\t"supported": false,\n\t"version": "${e.packageJSON.version}"\n}`; item.kind = vscode.CompletionItemKind.Value; item.insertText = insertText; item.range = range; item.filterText = insertText; return item; }); } else { const example = new vscode.CompletionItem(localize('exampleExtension', "Example")); example.insertText = '"vscode.csharp: {\n\t"supported": false,\n\t"version": "0.0.0"\n}`;"'; example.kind = vscode.CompletionItemKind.Value; example.range = range; return [example]; } } return undefined; }