Add language picker to notebook cells. (#18601)

This commit is contained in:
Cory Rivera
2022-03-02 10:25:55 -08:00
committed by GitHub
parent c34de52a03
commit 79cda5cbe5
10 changed files with 144 additions and 7 deletions

View File

@@ -418,6 +418,7 @@ export class CellModel extends Disposable implements ICellModel {
if (newLanguage !== this._language) {
this._language = newLanguage;
this._onLanguageChanged.fire(newLanguage);
this.sendChangeToNotebook(NotebookChangeType.CellMetadataUpdated);
}
}

View File

@@ -76,6 +76,8 @@ export interface INotebookService {
getStandardKernelsForProvider(provider: string): Promise<azdata.nb.IStandardKernel[] | undefined>;
getSupportedLanguagesForProvider(provider: string, kernelDisplayName?: string): Promise<string[]>;
getOrCreateSerializationManager(providerId: string, uri: URI): Promise<ISerializationManager>;
getOrCreateExecuteManager(providerId: string, uri: URI): Thenable<IExecuteManager>;

View File

@@ -494,6 +494,22 @@ export class NotebookService extends Disposable implements INotebookService {
return kernels;
}
public async getSupportedLanguagesForProvider(provider: string, kernelDisplayName?: string): Promise<string[]> {
let languages: string[] = [];
let kernels = await this.getStandardKernelsForProvider(provider);
if (kernelDisplayName && kernels) {
kernels = kernels.filter(kernel => kernel.displayName === kernelDisplayName);
}
kernels?.forEach(kernel => {
if (kernel.supportedLanguages) {
languages.push(...kernel.supportedLanguages);
}
});
// Remove duplicates
languages = [...new Set(languages)];
return languages;
}
private shutdown(): void {
this._executeManagersMap.forEach(manager => {
manager.forEach(m => {