diff --git a/extensions/javascript/src/features/jsonContributions.ts b/extensions/javascript/src/features/jsonContributions.ts index 093a3c85e08dfa5fc3c71a1b22f4fab754361769..d193b289c7b012589affd7f706f4a00c2278ff9a 100644 --- a/extensions/javascript/src/features/jsonContributions.ts +++ b/extensions/javascript/src/features/jsonContributions.ts @@ -11,7 +11,7 @@ import {PackageJSONContribution} from './packageJSONContribution'; import {XHRRequest} from 'request-light'; import {CompletionItem, CompletionItemProvider, CompletionList, TextDocument, Position, Hover, HoverProvider, - CancellationToken, Range, TextEdit, MarkedString, DocumentSelector, languages} from 'vscode'; + CancellationToken, Range, TextEdit, MarkedString, DocumentSelector, languages, Disposable} from 'vscode'; export interface ISuggestionsCollector { add(suggestion: CompletionItem): void; @@ -29,13 +29,15 @@ export interface IJSONContribution { resolveSuggestion?(item: CompletionItem): Thenable; } -export function addJSONProviders(xhr: XHRRequest, subscriptions: { dispose(): any }[]) { +export function addJSONProviders(xhr: XHRRequest) : Disposable { let contributions = [new PackageJSONContribution(xhr), new BowerJSONContribution(xhr)]; + let subscriptions : Disposable[] = []; contributions.forEach(contribution => { let selector = contribution.getDocumentSelector(); subscriptions.push(languages.registerCompletionItemProvider(selector, new JSONCompletionItemProvider(contribution), '.', '$')); subscriptions.push(languages.registerHoverProvider(selector, new JSONHoverProvider(contribution))); }); + return Disposable.from(...subscriptions); } export class JSONHoverProvider implements HoverProvider { diff --git a/extensions/javascript/src/javascriptMain.ts b/extensions/javascript/src/javascriptMain.ts index 8268e68058530d85305a867a7a11704298638b8d..e386e14e4ed338ca1975ce21b2c7fc62ab74920e 100644 --- a/extensions/javascript/src/javascriptMain.ts +++ b/extensions/javascript/src/javascriptMain.ts @@ -18,7 +18,7 @@ export function activate(context: ExtensionContext): any { configureHttpRequest(); workspace.onDidChangeConfiguration(e => configureHttpRequest()); - addJSONProviders(httpRequest.xhr, context.subscriptions); + context.subscriptions.push(addJSONProviders(httpRequest.xhr)); } function configureHttpRequest() {