import * as vscode from 'vscode' ; import * as nls from 'vscode-nls' ; const localize = nls . loadMessageBundle ( ) ; export function provideInstalledExtensionProposals ( existing , additionalText , range , includeBuiltinExtensions ) { 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 , range ) { 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 ; }