add commands vscode.executeNotebookToData and vscode.executeDataToNotebook to execute notebook serializers by type, https://github.com/microsoft/vscode/issues/125757

This commit is contained in:
Johannes
2022-04-01 10:24:04 +02:00
parent 3de6bc77fb
commit bf9929206a
8 changed files with 69 additions and 12 deletions

View File

@@ -17,7 +17,7 @@ import { URI, UriComponents } from 'vs/base/common/uri';
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
import { Cache } from 'vs/workbench/api/common/cache';
import { ExtHostNotebookShape, IMainContext, IModelAddedData, INotebookCellStatusBarListDto, INotebookDocumentsAndEditorsDelta, INotebookDocumentShowOptions, INotebookEditorAddData, MainContext, MainThreadNotebookDocumentsShape, MainThreadNotebookEditorsShape, MainThreadNotebookShape, NotebookDataDto } from 'vs/workbench/api/common/extHost.protocol';
import { CommandsConverter, ExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
import { ApiCommand, ApiCommandArgument, ApiCommandResult, CommandsConverter, ExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
import { ExtHostDocuments } from 'vs/workbench/api/common/extHostDocuments';
import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocumentsAndEditors';
import { IExtensionStoragePaths } from 'vs/workbench/api/common/extHostStoragePaths';
@@ -98,6 +98,8 @@ export class ExtHostNotebookController implements ExtHostNotebookShape {
return arg;
}
});
ExtHostNotebookController._registerApiCommands(commands);
}
getEditorById(editorId: string): ExtHostNotebookEditor {
@@ -513,4 +515,24 @@ export class ExtHostNotebookController implements ExtHostNotebookShape {
this._onDidChangeActiveNotebookEditor.fire(this._activeNotebookEditor?.apiEditor);
}
}
private static _registerApiCommands(extHostCommands: ExtHostCommands) {
const notebookTypeArg = ApiCommandArgument.String.with('notebookType', 'A notebook type');
const commandDataToNotebook = new ApiCommand(
'vscode.executeDataToNotebook', '_executeDataToNotebook', 'Invoke notebook serializer',
[notebookTypeArg, new ApiCommandArgument<Uint8Array, VSBuffer>('data', 'Bytes to convert to data', v => v instanceof Uint8Array, v => VSBuffer.wrap(v))],
new ApiCommandResult<NotebookDataDto, vscode.NotebookData>('Notebook Data', dto => typeConverters.NotebookData.to(dto))
);
const commandNotebookToData = new ApiCommand(
'vscode.executeNotebookToData', '_executeNotebookToData', 'Invoke notebook serializer',
[notebookTypeArg, new ApiCommandArgument<vscode.NotebookData, NotebookDataDto>('NotebookData', 'Notebook data to convert to bytes', v => true, v => typeConverters.NotebookData.from(v))],
new ApiCommandResult<VSBuffer, Uint8Array>('Bytes', dto => dto.buffer)
);
extHostCommands.registerApiCommand(commandDataToNotebook);
extHostCommands.registerApiCommand(commandNotebookToData);
}
}