Add notebook extension support for .NET Interactive. (#18334)

* Also updated kernel dropdown to only include SQL aliased kernels when using SQL notebook provider.
This commit is contained in:
Cory Rivera
2022-02-25 11:58:59 -08:00
committed by GitHub
parent 02341088eb
commit ffdefd3b52
41 changed files with 649 additions and 278 deletions

View File

@@ -50,7 +50,6 @@ import { throwProposedApiError, checkProposedApiEnabled } from 'vs/workbench/ser
import { ProxyIdentifier } from 'vs/workbench/services/extensions/common/proxyIdentifier';
import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry';
import type * as vscode from 'vscode';
import type * as azdata from 'azdata';
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
import { values } from 'vs/base/common/collections';
import { ExtHostEditorInsets } from 'vs/workbench/api/common/extHostCodeInsets';
@@ -93,12 +92,12 @@ import { matchesScheme } from 'vs/platform/opener/common/opener';
// import { ExtHostNotebookDocuments } from 'vs/workbench/api/common/extHostNotebookDocuments'; {{SQL CARBON EDIT}} Disable VS Code notebooks
// import { ExtHostInteractive } from 'vs/workbench/api/common/extHostInteractive'; {{SQL CARBON EDIT}} Remove until we need it
import { ExtHostNotebook } from 'sql/workbench/api/common/extHostNotebook';
import { functionalityNotSupportedError, invalidArgumentsError } from 'sql/base/common/locConstants';
import { docCreationFailedError, functionalityNotSupportedError, invalidArgumentsError } from 'sql/base/common/locConstants';
import { ExtHostNotebookDocumentsAndEditors } from 'sql/workbench/api/common/extHostNotebookDocumentsAndEditors';
import { VSCodeNotebookDocument } from 'sql/workbench/api/common/notebooks/vscodeNotebookDocument';
import { VSCodeNotebookEditor } from 'sql/workbench/api/common/notebooks/vscodeNotebookEditor';
import { convertToADSNotebookContents } from 'sql/workbench/api/common/notebooks/notebookUtils';
import { IdGenerator } from 'vs/base/common/idGenerator';
import { convertToADSNotebookContents } from 'sql/workbench/api/common/notebooks/notebookUtils';
export interface IExtensionApiFactory {
(extension: IExtensionDescription, registry: ExtensionDescriptionRegistry, configProvider: ExtHostConfigProvider): typeof vscode;
@@ -893,16 +892,19 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor, ex
},
async openNotebookDocument(uriOrType?: URI | string, content?: vscode.NotebookData): Promise<vscode.NotebookDocument> {
// {{SQL CARBON EDIT}} Use our own notebooks
let doc: azdata.nb.NotebookDocument;
let uri: URI;
if (URI.isUri(uriOrType)) {
let editor = await extHostNotebookDocumentsAndEditors.showNotebookDocument(uriOrType, {});
doc = editor.document;
uri = uriOrType;
await extHostNotebookDocumentsAndEditors.openNotebookDocument(uriOrType);
} else if (typeof uriOrType === 'string') {
let convertedContents = convertToADSNotebookContents(content);
doc = await extHostNotebookDocumentsAndEditors.createNotebookDocument(uriOrType, convertedContents);
uri = URI.revive(await extHostNotebookDocumentsAndEditors.createNotebookDocument(uriOrType, convertToADSNotebookContents(content)));
} else {
throw new Error(invalidArgumentsError);
}
let doc = extHostNotebookDocumentsAndEditors.getDocument(uri.toString())?.document;
if (!doc) {
throw new Error(docCreationFailedError);
}
return new VSCodeNotebookDocument(doc);
},
get onDidOpenNotebookDocument(): Event<vscode.NotebookDocument> {