Make addJSONProviders a Disposable

This commit is contained in:
Martin Aeschlimann
2016-04-19 16:47:10 +02:00
parent 249c166a0e
commit 65f28d6e17
2 changed files with 5 additions and 3 deletions

View File

@@ -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<CompletionItem>;
}
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 {

View File

@@ -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() {