eae5d8c807
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
36 lines
1.6 KiB
TypeScript
36 lines
1.6 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* 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<vscode.CompletionItem[] | vscode.CompletionList> {
|
|
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;
|
|
}
|
|
|