diff --git a/src/sql/workbench/api/common/extHostNotebookDocumentsAndEditors.ts b/src/sql/workbench/api/common/extHostNotebookDocumentsAndEditors.ts index decf45180c..785a6f50ac 100644 --- a/src/sql/workbench/api/common/extHostNotebookDocumentsAndEditors.ts +++ b/src/sql/workbench/api/common/extHostNotebookDocumentsAndEditors.ts @@ -57,27 +57,20 @@ export class ExtHostNotebookDocumentsAndEditors implements ExtHostNotebookDocume private readonly _onDidOpenVSCodeNotebook = new Emitter(); private readonly _onDidCloseVSCodeNotebook = new Emitter(); private readonly _onDidSaveVSCodeNotebook = new Emitter(); - // {{SQL CARBON TODO}} - disable events - // private readonly _onDidChangeVSCodeCellMetadata = new Emitter(); - // private readonly _onDidChangeVSCodeDocumentMetadata = new Emitter(); - // private readonly _onDidChangeVSCodeCellOutputs = new Emitter(); - // private readonly _onDidChangeVSCodeNotebookCells = new Emitter(); private readonly _onDidChangeVSCodeExecutionState = new Emitter(); private readonly _onDidChangeVSCodeEditorSelection = new Emitter(); private readonly _onDidChangeVSCodeEditorRanges = new Emitter(); + private readonly _onDidChangeVSCodeNotebookDocument = new Emitter(); readonly onDidChangeVisibleVSCodeEditors: Event = this._onDidChangeVisibleVSCodeEditors.event; readonly onDidChangeActiveVSCodeEditor: Event = this._onDidChangeActiveVSCodeEditor.event; readonly onDidOpenVSCodeNotebookDocument: Event = this._onDidOpenVSCodeNotebook.event; readonly onDidCloseVSCodeNotebookDocument: Event = this._onDidCloseVSCodeNotebook.event; readonly onDidSaveVSCodeNotebookDocument: Event = this._onDidSaveVSCodeNotebook.event; - // readonly onDidChangeVSCodeCellMetadata: Event = this._onDidChangeVSCodeCellMetadata.event; - // readonly onDidChangeVSCodeDocumentMetadata: Event = this._onDidChangeVSCodeDocumentMetadata.event; - // readonly onDidChangeVSCodeCellOutputs: Event = this._onDidChangeVSCodeCellOutputs.event; - // readonly onDidChangeVSCodeNotebookCells: Event = this._onDidChangeVSCodeNotebookCells.event; readonly onDidChangeVSCodeExecutionState: Event = this._onDidChangeVSCodeExecutionState.event; readonly onDidChangeVSCodeEditorSelection: Event = this._onDidChangeVSCodeEditorSelection.event; readonly onDidChangeVSCodeEditorRanges: Event = this._onDidChangeVSCodeEditorRanges.event; + readonly onDidChangeVSCodeNotebookDocument: Event = this._onDidChangeVSCodeNotebookDocument.event; constructor( private readonly _mainContext: IMainContext, diff --git a/src/sql/workbench/common/constants.ts b/src/sql/workbench/common/constants.ts index 6ad1a79419..b0aa45cbab 100644 --- a/src/sql/workbench/common/constants.ts +++ b/src/sql/workbench/common/constants.ts @@ -39,11 +39,14 @@ export const FILE_QUERY_EDITOR_TYPEID = 'workbench.editorInput.fileQueryInput'; export const RESOURCE_VIEWER_TYPEID = 'workbench.editorInput.resourceViewerInput'; export const JUPYTER_PROVIDER_ID = 'jupyter'; +export const VSCODE_JUPYTER_PROVIDER_ID = 'jupyter-notebook'; export const IPYKERNEL_DISPLAY_NAME = 'Python 3 (ipykernel)'; export const INTERACTIVE_PROVIDER_ID = 'dotnet-interactive'; export const TSGOPS_WEB_QUALITY = 'tsgops-image'; export const CELL_URI_PATH_PREFIX = 'notebook-editor-'; +export const DEFAULT_NOTEBOOK_FILETYPE = '.ipynb'; + // The version of the notebook file format that we support export const NBFORMAT = 4; export const NBFORMAT_MINOR = 2; diff --git a/src/sql/workbench/contrib/notebook/browser/notebook.contribution.ts b/src/sql/workbench/contrib/notebook/browser/notebook.contribution.ts index dca73bf8f5..2a8c08870c 100644 --- a/src/sql/workbench/contrib/notebook/browser/notebook.contribution.ts +++ b/src/sql/workbench/contrib/notebook/browser/notebook.contribution.ts @@ -51,7 +51,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 { DefaultNotebookProviders, DEFAULT_NOTEBOOK_FILETYPE, IExecuteManager } from 'sql/workbench/services/notebook/browser/notebookService'; +import { DefaultNotebookProviders, 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'; @@ -59,7 +59,7 @@ import { FileEditorInput } from 'vs/workbench/contrib/files/browser/editors/file import { ILogService } from 'vs/platform/log/common/log'; import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; import { useNewMarkdownRendererKey } from 'sql/workbench/contrib/notebook/common/notebookCommon'; -import { JUPYTER_PROVIDER_ID, NotebookLanguage } from 'sql/workbench/common/constants'; +import { DEFAULT_NOTEBOOK_FILETYPE, JUPYTER_PROVIDER_ID, NotebookLanguage } from 'sql/workbench/common/constants'; import { INotebookProviderRegistry, NotebookProviderRegistryId } from 'sql/workbench/services/notebook/common/notebookRegistry'; import { EditorInput } from 'vs/workbench/common/editor/editorInput'; import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite'; diff --git a/src/sql/workbench/contrib/notebook/test/electron-browser/notebookModel.test.ts b/src/sql/workbench/contrib/notebook/test/electron-browser/notebookModel.test.ts index b0a5199c42..0d1b52ccad 100644 --- a/src/sql/workbench/contrib/notebook/test/electron-browser/notebookModel.test.ts +++ b/src/sql/workbench/contrib/notebook/test/electron-browser/notebookModel.test.ts @@ -40,8 +40,8 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { UndoRedoService } from 'vs/platform/undoRedo/common/undoRedoService'; -import { DEFAULT_NOTEBOOK_FILETYPE, IExecuteManager, INotebookService, SQL_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService'; -import { NBFORMAT, NBFORMAT_MINOR } from 'sql/workbench/common/constants'; +import { IExecuteManager, INotebookService, SQL_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService'; +import { DEFAULT_NOTEBOOK_FILETYPE, NBFORMAT, NBFORMAT_MINOR } from 'sql/workbench/common/constants'; import { Emitter } from 'vs/base/common/event'; import { IStandardKernelWithProvider } from 'sql/workbench/services/notebook/browser/models/notebookUtils'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; diff --git a/src/sql/workbench/contrib/notebook/test/electron-browser/notebookUtils.test.ts b/src/sql/workbench/contrib/notebook/test/electron-browser/notebookUtils.test.ts index 9206049b1e..51faff0acb 100644 --- a/src/sql/workbench/contrib/notebook/test/electron-browser/notebookUtils.test.ts +++ b/src/sql/workbench/contrib/notebook/test/electron-browser/notebookUtils.test.ts @@ -8,11 +8,12 @@ import * as TypeMoq from 'typemoq'; import { nb, ServerInfo } from 'azdata'; import { getHostAndPortFromEndpoint, isStream, getProvidersForFileName, asyncForEach, clusterEndpointsProperty, getClusterEndpoints, RawEndpoint, IEndpoint, getStandardKernelsForProvider, IStandardKernelWithProvider, rewriteUrlUsingRegex } from 'sql/workbench/services/notebook/browser/models/notebookUtils'; -import { INotebookService, DEFAULT_NOTEBOOK_FILETYPE, DEFAULT_NOTEBOOK_PROVIDER, SQL_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService'; +import { INotebookService, DEFAULT_NOTEBOOK_PROVIDER, SQL_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService'; import { NotebookServiceStub } from 'sql/workbench/contrib/notebook/test/stubs'; import { tryMatchCellMagic, extractCellMagicCommandPlusArgs } from 'sql/workbench/services/notebook/browser/utils'; import { RichTextEditStack } from 'sql/workbench/contrib/notebook/browser/cellViews/textCell.component'; import { notebookConstants } from 'sql/workbench/services/notebook/browser/interfaces'; +import { DEFAULT_NOTEBOOK_FILETYPE } from 'sql/workbench/common/constants'; suite('notebookUtils', function (): void { const mockNotebookService = TypeMoq.Mock.ofType(NotebookServiceStub); diff --git a/src/sql/workbench/services/notebook/browser/models/notebookModel.ts b/src/sql/workbench/services/notebook/browser/models/notebookModel.ts index 8dcfdcc9db..2dbbf4fd42 100644 --- a/src/sql/workbench/services/notebook/browser/models/notebookModel.ts +++ b/src/sql/workbench/services/notebook/browser/models/notebookModel.ts @@ -165,8 +165,7 @@ export class NotebookModel extends Disposable implements INotebookModel { if (!fileExt) { let languageMode = this._notebookOptions.getInputLanguageMode(); if (languageMode) { - let languageName = this._languageService.getLanguageName(languageMode); - let fileExtensions = this._languageService.getExtensions(languageName); + let fileExtensions = this._languageService.getExtensions(languageMode); if (fileExtensions?.length > 0) { extensions = fileExtensions; } else { diff --git a/src/sql/workbench/services/notebook/browser/models/notebookUtils.ts b/src/sql/workbench/services/notebook/browser/models/notebookUtils.ts index 3309d175e1..788e5448d1 100644 --- a/src/sql/workbench/services/notebook/browser/models/notebookUtils.ts +++ b/src/sql/workbench/services/notebook/browser/models/notebookUtils.ts @@ -5,9 +5,9 @@ import * as path from 'vs/base/common/path'; import { nb, ServerInfo } from 'azdata'; -import { DEFAULT_NOTEBOOK_PROVIDER, DEFAULT_NOTEBOOK_FILETYPE, INotebookService, SQL_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService'; +import { DEFAULT_NOTEBOOK_PROVIDER, INotebookService, SQL_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService'; import { URI } from 'vs/base/common/uri'; -import { NotebookLanguage } from 'sql/workbench/common/constants'; +import { DEFAULT_NOTEBOOK_FILETYPE, NotebookLanguage } from 'sql/workbench/common/constants'; export const clusterEndpointsProperty = 'clusterEndpoints'; export const hadoopEndpointNameGateway = 'gateway'; diff --git a/src/sql/workbench/services/notebook/browser/notebookService.ts b/src/sql/workbench/services/notebook/browser/notebookService.ts index 55364687d3..39a1cce8a0 100644 --- a/src/sql/workbench/services/notebook/browser/notebookService.ts +++ b/src/sql/workbench/services/notebook/browser/notebookService.ts @@ -30,7 +30,6 @@ export const SERVICE_ID = 'sqlNotebookService'; export const INotebookService = createDecorator(SERVICE_ID); export const DEFAULT_NOTEBOOK_PROVIDER = 'builtin'; -export const DEFAULT_NOTEBOOK_FILETYPE = '.ipynb'; export const SQL_NOTEBOOK_PROVIDER = 'sql'; export const OVERRIDE_EDITOR_THEMING_SETTING = 'notebook.overrideEditorTheming'; diff --git a/src/sql/workbench/services/notebook/browser/notebookServiceImpl.ts b/src/sql/workbench/services/notebook/browser/notebookServiceImpl.ts index 3c9af997db..7211f5bb8d 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, DefaultNotebookProviders + 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, IUntypedFileEditorInput } from 'vs/workbench/common/editor'; import { isINotebookInput } from 'sql/workbench/services/notebook/browser/interface'; import { INotebookShowOptions } from 'sql/workbench/api/common/sqlExtHost.protocol'; -import { INTERACTIVE_PROVIDER_ID, NotebookLanguage } from 'sql/workbench/common/constants'; +import { DEFAULT_NOTEBOOK_FILETYPE, 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'; diff --git a/src/sql/workbench/services/notebook/common/notebookRegistry.ts b/src/sql/workbench/services/notebook/common/notebookRegistry.ts index 8a1ffcf21d..e8323e7648 100644 --- a/src/sql/workbench/services/notebook/common/notebookRegistry.ts +++ b/src/sql/workbench/services/notebook/common/notebookRegistry.ts @@ -9,6 +9,7 @@ import { localize } from 'vs/nls'; import * as platform from 'vs/platform/registry/common/platform'; import * as azdata from 'azdata'; import { Event, Emitter } from 'vs/base/common/event'; +import { DEFAULT_NOTEBOOK_FILETYPE, VSCODE_JUPYTER_PROVIDER_ID } from 'sql/workbench/common/constants'; export const NotebookProviderRegistryId = 'notebooks.providers.registry'; @@ -136,7 +137,17 @@ class NotebookProviderRegistry implements INotebookProviderRegistry { updateProviderKernels(providerId: string, kernels: azdata.nb.IStandardKernel[]): void { let registration = this._providerDescriptionRegistration.get(providerId); if (!registration) { - throw new Error(this.providerNotInRegistryError(providerId)); + // Newer versions of the Jupyter extension don't contribute a provider for the default file type, so + // register the original provider details here to preserve backwards compatibility for .NET Interactive + if (providerId === VSCODE_JUPYTER_PROVIDER_ID) { + registration = { + provider: VSCODE_JUPYTER_PROVIDER_ID, + fileExtensions: [DEFAULT_NOTEBOOK_FILETYPE], + standardKernels: undefined + }; + } else { + throw new Error(this.providerNotInRegistryError(providerId)); + } } registration.standardKernels = kernels; diff --git a/src/vs/workbench/api/browser/mainThreadNotebook.ts b/src/vs/workbench/api/browser/mainThreadNotebook.ts index 9fd2fa73d9..912d3a3cde 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebook.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebook.ts @@ -9,18 +9,18 @@ import { Emitter } from 'vs/base/common/event'; import { DisposableStore, dispose, IDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { NotebookDto } from 'vs/workbench/api/browser/mainThreadNotebookDto'; -import { extHostNamedCustomer, IExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; +import { IExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; // {{SQL CARBON EDIT}} Remove unused import { INotebookCellStatusBarService } from 'vs/workbench/contrib/notebook/common/notebookCellStatusBarService'; import { INotebookCellStatusBarItemProvider, INotebookContributionData, NotebookData as NotebookData, NotebookExtensionDescription, TransientCellMetadata, TransientDocumentMetadata, TransientOptions } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookContentProvider, INotebookService, SimpleNotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/notebookService'; import { SerializableObjectWithBuffers } from 'vs/workbench/services/extensions/common/proxyIdentifier'; -import { ExtHostContext, ExtHostNotebookShape, MainContext, MainThreadNotebookShape } from '../common/extHost.protocol'; +import { ExtHostContext, ExtHostNotebookShape, MainThreadNotebookShape } from '../common/extHost.protocol'; // {{SQL CARBON EDIT}} Remove unused import { ILogService } from 'vs/platform/log/common/log'; import { StopWatch } from 'vs/base/common/stopwatch'; import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { assertType } from 'vs/base/common/types'; -@extHostNamedCustomer(MainContext.MainThreadNotebook) +// @extHostNamedCustomer(MainContext.MainThreadNotebook) {{SQL CARBON EDIT}} Disable VS Code notebooks export class MainThreadNotebooks implements MainThreadNotebookShape { private readonly _disposables = new DisposableStore(); diff --git a/src/vs/workbench/api/browser/mainThreadNotebookProxyKernels.ts b/src/vs/workbench/api/browser/mainThreadNotebookProxyKernels.ts index 2139666ec5..e822e03d3c 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebookProxyKernels.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebookProxyKernels.ts @@ -6,9 +6,9 @@ import { Emitter, Event } from 'vs/base/common/event'; import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; -import { extHostNamedCustomer, IExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; +import { IExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; // {{SQL CARBON EDIT}} Remove unused import { INotebookKernelService, INotebookProxyKernel, INotebookProxyKernelChangeEvent, ProxyKernelState, NotebookKernelType } from 'vs/workbench/contrib/notebook/common/notebookKernelService'; -import { ExtHostContext, ExtHostNotebookProxyKernelsShape, INotebookProxyKernelDto, MainContext, MainThreadNotebookProxyKernelsShape } from '../common/extHost.protocol'; +import { ExtHostContext, ExtHostNotebookProxyKernelsShape, INotebookProxyKernelDto, MainThreadNotebookProxyKernelsShape } from '../common/extHost.protocol'; // {{SQL CARBON EDIT}} Remove unused import { onUnexpectedError } from 'vs/base/common/errors'; abstract class MainThreadProxyKernel implements INotebookProxyKernel { @@ -64,7 +64,7 @@ abstract class MainThreadProxyKernel implements INotebookProxyKernel { abstract resolveKernel(): Promise; } -@extHostNamedCustomer(MainContext.MainThreadNotebookProxyKernels) +// @extHostNamedCustomer(MainContext.MainThreadNotebookProxyKernels) {{SQL CARBON EDIT}} Disable VS Code notebooks export class MainThreadNotebookProxyKernels implements MainThreadNotebookProxyKernelsShape { private readonly _disposables = new DisposableStore(); diff --git a/src/vs/workbench/api/common/extHost.api.impl.ts b/src/vs/workbench/api/common/extHost.api.impl.ts index b70944eb80..835fff896d 100644 --- a/src/vs/workbench/api/common/extHost.api.impl.ts +++ b/src/vs/workbench/api/common/extHost.api.impl.ts @@ -82,7 +82,7 @@ import { ExtHostUriOpeners } from 'vs/workbench/api/common/extHostUriOpener'; import { IExtHostSecretState } from 'vs/workbench/api/common/exHostSecretState'; import { IExtHostEditorTabs } from 'vs/workbench/api/common/extHostEditorTabs'; import { IExtHostTelemetry } from 'vs/workbench/api/common/extHostTelemetry'; -import { ExtHostNotebookKernels } from 'vs/workbench/api/common/extHostNotebookKernels'; // {{SQL CARBON EDIT}} Disable VS Code notebooks +// import { ExtHostNotebookKernels } from 'vs/workbench/api/common/extHostNotebookKernels'; {{SQL CARBON EDIT}} Disable VS Code notebooks import { TextSearchCompleteMessageType } from 'vs/workbench/services/search/common/searchExtTypes'; // import { ExtHostNotebookRenderers } from 'vs/workbench/api/common/extHostNotebookRenderers'; {{SQL CARBON EDIT}} Disable VS Code notebooks import { Schemas } from 'vs/base/common/network'; @@ -93,7 +93,7 @@ import { matchesScheme } from 'vs/platform/opener/common/opener'; import { combinedDisposable } from 'vs/base/common/lifecycle'; import { checkProposedApiEnabled, ExtensionIdentifierSet, isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { DebugConfigurationProviderTriggerKind } from 'vs/workbench/contrib/debug/common/debug'; -import { ExtHostNotebookProxyKernels } from 'vs/workbench/api/common/extHostNotebookProxyKernels'; +// import { ExtHostNotebookProxyKernels } from 'vs/workbench/api/common/extHostNotebookProxyKernels'; {{SQL CARBON EDIT}} Disable VS Code notebooks import { ExtHostNotebook } from 'sql/workbench/api/common/extHostNotebook'; // {{SQL CARBON EDIT}} import { docCreationFailedError, functionalityNotSupportedError, invalidArgumentsError } from 'sql/base/common/locConstants'; @@ -169,13 +169,10 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor, ex const extHostNotebook = rpcProtocol.set(ExtHostContext.ExtHostNotebook, new ExtHostNotebookController(rpcProtocol, extHostCommands, extHostDocumentsAndEditors, extHostDocuments, extensionStoragePaths)); const extHostNotebookDocuments = rpcProtocol.set(ExtHostContext.ExtHostNotebookDocuments, new ExtHostNotebookDocuments(extHostNotebook)); const extHostNotebookEditors = rpcProtocol.set(ExtHostContext.ExtHostNotebookEditors, new ExtHostNotebookEditors(extHostLogService, rpcProtocol, extHostNotebook)); - const extHostNotebookKernels = rpcProtocol.set(ExtHostContext.ExtHostNotebookKernels, new ExtHostNotebookKernels(rpcProtocol, initData, extHostNotebook, extHostCommands, extHostLogService)); - const extHostNotebookProxyKernels = rpcProtocol.set(ExtHostContext.ExtHostNotebookProxyKernels, new ExtHostNotebookProxyKernels(rpcProtocol, extHostNotebookKernels, extHostLogService)); const extHostNotebookRenderers = rpcProtocol.set(ExtHostContext.ExtHostNotebookRenderers, new ExtHostNotebookRenderers(rpcProtocol, extHostNotebook)); - */ - // {{SQL CARBON TODO}} - need to use a ADS specific proxy const extHostNotebookKernels = rpcProtocol.set(ExtHostContext.ExtHostNotebookKernels, new ExtHostNotebookKernels(rpcProtocol, initData, extHostNotebook, extHostCommands, extHostLogService)); const extHostNotebookProxyKernels = rpcProtocol.set(ExtHostContext.ExtHostNotebookProxyKernels, new ExtHostNotebookProxyKernels(rpcProtocol, extHostNotebookKernels, extHostLogService)); + */ const extHostEditors = rpcProtocol.set(ExtHostContext.ExtHostEditors, new ExtHostEditors(rpcProtocol, extHostDocumentsAndEditors)); const extHostTreeViews = rpcProtocol.set(ExtHostContext.ExtHostTreeViews, new ExtHostTreeViews(rpcProtocol.getProxy(MainContext.MainThreadTreeViews), extHostCommands, extHostLogService)); @@ -210,6 +207,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor, ex ExtHostContext.ExtHostNotebookEditors, ExtHostContext.ExtHostNotebookKernels, ExtHostContext.ExtHostNotebookRenderers, + ExtHostContext.ExtHostNotebookProxyKernels, ExtHostContext.ExtHostInteractive ]); const expected: ProxyIdentifier[] = values(ExtHostContext).filter(v => !filteredProxies.has(v)); @@ -787,7 +785,8 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor, ex }, get activeNotebookEditor(): vscode.NotebookEditor | undefined { // {{SQL CARBON EDIT}} Use our own notebooks - return new VSCodeNotebookEditor(extHostNotebookDocumentsAndEditors.getActiveEditor()); + let activeEditor = extHostNotebookDocumentsAndEditors.getActiveEditor(); + return activeEditor ? new VSCodeNotebookEditor(activeEditor) : undefined; }, onDidChangeActiveNotebookEditor(listener, thisArgs?, disposables?) { // {{SQL CARBON EDIT}} Use our own notebooks @@ -967,14 +966,12 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor, ex return new VSCodeNotebookDocument(doc); }, onDidSaveNotebookDocument(listener, thisArg, disposables) { - // {{SQL CARBON TODO}} - disable event - return undefined - //return extHostNotebookDocuments.onDidSaveNotebookDocument(listener, thisArg, disposables); + // {{SQL CARBON EDIT}} Use our own notebooks + return extHostNotebookDocumentsAndEditors.onDidSaveVSCodeNotebookDocument(listener, thisArg, disposables); }, onDidChangeNotebookDocument(listener, thisArg, disposables) { - // {{SQL CARBON TODO}} - disable event - return undefined; - //return extHostNotebookDocuments.onDidChangeNotebookDocument(listener, thisArg, disposables); + // {{SQL CARBON EDIT}} Use our own notebooks + return extHostNotebookDocumentsAndEditors.onDidChangeVSCodeNotebookDocument(listener, thisArg, disposables); }, get onDidOpenNotebookDocument(): Event { // {{SQL CARBON EDIT}} Use our own notebooks @@ -1261,9 +1258,10 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor, ex return extHostNotebookDocumentsAndEditors.onDidChangeVSCodeExecutionState(listener, thisArgs, disposables); }, createNotebookProxyController(id: string, notebookType: string, label: string, handler: () => vscode.NotebookController | string | Thenable) { - //checkProposedApiEnabled(extension, 'notebookProxyController'); - return extHostNotebookProxyKernels.createNotebookProxyController(extension, id, notebookType, label, handler); - // {{SQL CARBON TODO}} + // {{SQL CARBON EDIT}} Disable VS Code notebooks + throw new Error(functionalityNotSupportedError); + // checkProposedApiEnabled(extension, 'notebookProxyController'); + // return extHostNotebookProxyKernels.createNotebookProxyController(extension, id, notebookType, label, handler); } }; diff --git a/src/vs/workbench/services/extensions/common/extensionHostManager.ts b/src/vs/workbench/services/extensions/common/extensionHostManager.ts index 119ece0c0d..82bb30506c 100644 --- a/src/vs/workbench/services/extensions/common/extensionHostManager.ts +++ b/src/vs/workbench/services/extensions/common/extensionHostManager.ts @@ -318,6 +318,7 @@ class ExtensionHostManager extends Disposable implements IExtensionHostManager { MainContext.MainThreadNotebookEditors, MainContext.MainThreadNotebookKernels, MainContext.MainThreadNotebookRenderers, + MainContext.MainThreadNotebookProxyKernels, MainContext.MainThreadInteractive ]; const expected: ProxyIdentifier[] = Object.keys(MainContext).map((key) => (MainContext)[key]).filter(v => !filtered.some(x => x === v));