diff --git a/src/sql/workbench/contrib/notebook/browser/notebook.contribution.ts b/src/sql/workbench/contrib/notebook/browser/notebook.contribution.ts index 774811c26b..eaf6675940 100644 --- a/src/sql/workbench/contrib/notebook/browser/notebook.contribution.ts +++ b/src/sql/workbench/contrib/notebook/browser/notebook.contribution.ts @@ -52,7 +52,7 @@ import { ImageMimeTypes, TextCellEditModes } from 'sql/workbench/services/notebo import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { NotebookInput } from 'sql/workbench/contrib/notebook/browser/models/notebookInput'; import { INotebookModel } from 'sql/workbench/services/notebook/browser/models/modelInterfaces'; -import { DEFAULT_NOTEBOOK_FILETYPE, IExecuteManager, SQL_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService'; +import { DefaultNotebookProviders, DEFAULT_NOTEBOOK_FILETYPE, IExecuteManager } from 'sql/workbench/services/notebook/browser/notebookService'; import { NotebookExplorerViewletViewsContribution } from 'sql/workbench/contrib/notebook/browser/notebookExplorer/notebookExplorerViewlet'; import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; import { IEditorResolverService, RegisteredEditorPriority } from 'vs/workbench/services/editor/common/editorResolverService'; @@ -749,7 +749,7 @@ export class NotebookEditorOverrideContribution extends Disposable implements IW this.registerEditorOverrides(); }); notebookRegistry.onNewDescriptionRegistration(({ id, registration }) => { - if (id !== JUPYTER_PROVIDER_ID && id !== SQL_NOTEBOOK_PROVIDER && registration?.fileExtensions?.length > 0) { + if (!DefaultNotebookProviders.includes(id) && registration?.fileExtensions?.length > 0) { let extensions = registration.fileExtensions .filter(ext => ext?.length > 0 && ext.toLowerCase() !== DEFAULT_NOTEBOOK_FILETYPE); this._newFileExtensions = this._newFileExtensions.concat(extensions); diff --git a/src/sql/workbench/services/notebook/browser/models/notebookModel.ts b/src/sql/workbench/services/notebook/browser/models/notebookModel.ts index c97d25fd4c..67e995a11e 100644 --- a/src/sql/workbench/services/notebook/browser/models/notebookModel.ts +++ b/src/sql/workbench/services/notebook/browser/models/notebookModel.ts @@ -1083,12 +1083,7 @@ export class NotebookModel extends Disposable implements INotebookModel { if (provider && provider !== this._providerId) { this._providerId = provider; } else if (!provider) { - this.notebookOptions.executeManagers.forEach(m => { - if (m.providerId !== SQL_NOTEBOOK_PROVIDER) { - // We don't know which provider it is before that provider is chosen to query its specs. Choosing the "last" one registered. - this._providerId = m.providerId; - } - }); + this._providerId = SQL_NOTEBOOK_PROVIDER; } this._defaultKernel = this._savedKernelInfo; } else if (this._defaultKernel) { diff --git a/src/sql/workbench/services/notebook/browser/notebookService.ts b/src/sql/workbench/services/notebook/browser/notebookService.ts index 33c3ff6861..55364687d3 100644 --- a/src/sql/workbench/services/notebook/browser/notebookService.ts +++ b/src/sql/workbench/services/notebook/browser/notebookService.ts @@ -23,6 +23,7 @@ import { INotebookShowOptions } from 'sql/workbench/api/common/sqlExtHost.protoc import { NotebookViewsExtension } from 'sql/workbench/services/notebook/browser/notebookViews/notebookViewsExtension'; import { EditorInput } from 'vs/workbench/common/editor/editorInput'; import { ICodeEditorViewState } from 'vs/editor/common/editorCommon'; +import { JUPYTER_PROVIDER_ID } from 'sql/workbench/common/constants'; import { IStandardKernelWithProvider } from 'sql/workbench/services/notebook/browser/models/notebookUtils'; export const SERVICE_ID = 'sqlNotebookService'; @@ -33,6 +34,8 @@ export const DEFAULT_NOTEBOOK_FILETYPE = '.ipynb'; export const SQL_NOTEBOOK_PROVIDER = 'sql'; export const OVERRIDE_EDITOR_THEMING_SETTING = 'notebook.overrideEditorTheming'; +export const DefaultNotebookProviders = [SQL_NOTEBOOK_PROVIDER, JUPYTER_PROVIDER_ID]; + export interface ILanguageMagic { magic: string; language: string; diff --git a/src/sql/workbench/services/notebook/browser/notebookServiceImpl.ts b/src/sql/workbench/services/notebook/browser/notebookServiceImpl.ts index 186a6330d3..1ff0a26419 100644 --- a/src/sql/workbench/services/notebook/browser/notebookServiceImpl.ts +++ b/src/sql/workbench/services/notebook/browser/notebookServiceImpl.ts @@ -10,7 +10,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { INotebookService, IExecuteManager, IExecuteProvider, - DEFAULT_NOTEBOOK_FILETYPE, INotebookEditor, SQL_NOTEBOOK_PROVIDER, INavigationProvider, ILanguageMagic, NavigationProviders, unsavedBooksContextKey, ISerializationProvider, ISerializationManager + DEFAULT_NOTEBOOK_FILETYPE, INotebookEditor, SQL_NOTEBOOK_PROVIDER, INavigationProvider, ILanguageMagic, NavigationProviders, unsavedBooksContextKey, ISerializationProvider, ISerializationManager, DefaultNotebookProviders } from 'sql/workbench/services/notebook/browser/notebookService'; import { RenderMimeRegistry } from 'sql/workbench/services/notebook/browser/outputs/registry'; import { standardRendererFactories } from 'sql/workbench/services/notebook/browser/outputs/factories'; @@ -50,7 +50,7 @@ import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editor import { IEditorPane } from 'vs/workbench/common/editor'; import { isINotebookInput } from 'sql/workbench/services/notebook/browser/interface'; import { INotebookShowOptions } from 'sql/workbench/api/common/sqlExtHost.protocol'; -import { DEFAULT_NB_LANGUAGE_MODE, INTERACTIVE_LANGUAGE_MODE, INTERACTIVE_PROVIDER_ID, JUPYTER_PROVIDER_ID, NotebookLanguage } from 'sql/workbench/common/constants'; +import { DEFAULT_NB_LANGUAGE_MODE, INTERACTIVE_LANGUAGE_MODE, INTERACTIVE_PROVIDER_ID, NotebookLanguage } from 'sql/workbench/common/constants'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { SqlSerializationProvider } from 'sql/workbench/services/notebook/browser/sql/sqlSerializationProvider'; import { EditorInput } from 'vs/workbench/common/editor/editorInput'; @@ -438,7 +438,7 @@ export class NotebookService extends Disposable implements INotebookService { } // Emit activation event if the provider is not one of the default options - if (p.id !== SQL_NOTEBOOK_PROVIDER && p.id !== JUPYTER_PROVIDER_ID) { + if (!DefaultNotebookProviders.includes(p.id)) { this._extensionService.whenInstalledExtensionsRegistered() .then(() => this._extensionService.activateByEvent(`onNotebook:${p.id}`)) .then(() => this._extensionService.activateByEvent(`onNotebook:*`)) @@ -530,7 +530,7 @@ export class NotebookService extends Disposable implements INotebookService { this._providerToStandardKernels.set(providerUpperCase, descriptor); // Emit update event if the provider is not one of the default options - if (provider.provider !== SQL_NOTEBOOK_PROVIDER && provider.provider !== JUPYTER_PROVIDER_ID && standardKernels.length > 0) { + if (!DefaultNotebookProviders.includes(provider.provider) && standardKernels.length > 0) { this._onNotebookKernelsAdded.fire(standardKernels.map(kernel => { return { name: kernel.name,