Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disposables in monaco-typescript serve no purpose #738

Closed
rcjsuen opened this issue Feb 27, 2018 · 2 comments
Closed

Disposables in monaco-typescript serve no purpose #738

rcjsuen opened this issue Feb 27, 2018 · 2 comments

Comments

@rcjsuen
Copy link
Contributor

rcjsuen commented Feb 27, 2018

https://github.com/Microsoft/monaco-typescript/blob/19b622bb0a8147bbe33fbaf9e3457b72f2f61e36/src/mode.ts#L58-L78

In monaco-typescript's mode.ts file, there is an IDisposable[] that gets created. IDisposable instances get pushed into it but then nothing is done with the array. What is the point of the creating the array in the first place then?

function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, language:Language): (first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker> {

	let disposables: IDisposable[] = [];

	const client = new WorkerManager(modeId, defaults);
	disposables.push(client);

	const worker = (first: Uri, ...more: Uri[]): Promise<TypeScriptWorker> => {
		return client.getLanguageServiceWorker(...[first].concat(more));
	};

	disposables.push(monaco.languages.registerCompletionItemProvider(modeId, new languageFeatures.SuggestAdapter(worker)));
	disposables.push(monaco.languages.registerSignatureHelpProvider(modeId, new languageFeatures.SignatureHelpAdapter(worker)));
	disposables.push(monaco.languages.registerHoverProvider(modeId, new languageFeatures.QuickInfoAdapter(worker)));
	disposables.push(monaco.languages.registerDocumentHighlightProvider(modeId, new languageFeatures.OccurrencesAdapter(worker)));
	disposables.push(monaco.languages.registerDefinitionProvider(modeId, new languageFeatures.DefinitionAdapter(worker)));
	disposables.push(monaco.languages.registerReferenceProvider(modeId, new languageFeatures.ReferenceAdapter(worker)));
	disposables.push(monaco.languages.registerDocumentSymbolProvider(modeId, new languageFeatures.OutlineAdapter(worker)));
	disposables.push(monaco.languages.registerDocumentRangeFormattingEditProvider(modeId, new languageFeatures.FormatAdapter(worker)));
	disposables.push(monaco.languages.registerOnTypeFormattingEditProvider(modeId, new languageFeatures.FormatOnTypeAdapter(worker)));
	disposables.push(new languageFeatures.DiagnostcsAdapter(defaults, modeId, worker));
	disposables.push(monaco.languages.setLanguageConfiguration(modeId, richEditConfiguration));
	disposables.push(monaco.languages.setTokensProvider(modeId, createTokenizationSupport(language)));

	return worker;
}
@alexdima
Copy link
Member

alexdima commented Feb 28, 2018

I guess we were planning to do something with those IDisposables, but there's nothing we can really do, once you have loaded TypeScript, you cannot take it back... :)

PR welcome to remove the creation of the array.

@alexdima
Copy link
Member

alexdima commented Mar 5, 2018

Fixed with microsoft/monaco-typescript#19

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants