mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-26 19:44:25 +01:00
* Allow invoking kernel picker for inactive notebook `notebook.selectKernel` is now an API command that takes target `NotebookEditor` as an arg * move select kernel command to extHost Kernel. Co-authored-by: rebornix <penn.lv@gmail.com>
61 lines
2.9 KiB
TypeScript
61 lines
2.9 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { URI, UriComponents } from 'vs/base/common/uri';
|
|
import { ExtHostInteractiveShape, IMainContext } from 'vs/workbench/api/common/extHost.protocol';
|
|
import { ApiCommand, ApiCommandArgument, ApiCommandResult, ExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
|
|
import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocumentsAndEditors';
|
|
import { ExtHostNotebookController } from 'vs/workbench/api/common/extHostNotebook';
|
|
import { NotebookEditor } from 'vscode';
|
|
|
|
export class ExtHostInteractive implements ExtHostInteractiveShape {
|
|
constructor(
|
|
mainContext: IMainContext,
|
|
private _extHostNotebooks: ExtHostNotebookController,
|
|
private _textDocumentsAndEditors: ExtHostDocumentsAndEditors,
|
|
private _commands: ExtHostCommands
|
|
) {
|
|
const openApiCommand = new ApiCommand(
|
|
'interactive.open',
|
|
'_interactive.open',
|
|
'Open interactive window and return notebook editor and input URI',
|
|
[
|
|
new ApiCommandArgument('showOptions', 'Show Options', v => true, v => v),
|
|
new ApiCommandArgument('resource', 'Interactive resource Uri', v => true, v => v),
|
|
new ApiCommandArgument('controllerId', 'Notebook controller Id', v => true, v => v),
|
|
new ApiCommandArgument('title', 'Interactive editor title', v => true, v => v)
|
|
],
|
|
new ApiCommandResult<{ notebookUri: UriComponents, inputUri: UriComponents, notebookEditorId?: string }, { notebookUri: URI, inputUri: URI, notebookEditor?: NotebookEditor }>('Notebook and input URI', (v: { notebookUri: UriComponents, inputUri: UriComponents, notebookEditorId?: string }) => {
|
|
if (v.notebookEditorId !== undefined) {
|
|
const editor = this._extHostNotebooks.getEditorById(v.notebookEditorId);
|
|
return { notebookUri: URI.revive(v.notebookUri), inputUri: URI.revive(v.inputUri), notebookEditor: editor.apiEditor };
|
|
}
|
|
return { notebookUri: URI.revive(v.notebookUri), inputUri: URI.revive(v.inputUri) };
|
|
})
|
|
);
|
|
this._commands.registerApiCommand(openApiCommand);
|
|
}
|
|
|
|
$willAddInteractiveDocument(uri: UriComponents, eol: string, modeId: string, notebookUri: UriComponents) {
|
|
this._textDocumentsAndEditors.acceptDocumentsAndEditorsDelta({
|
|
addedDocuments: [{
|
|
EOL: eol,
|
|
lines: [''],
|
|
modeId: modeId,
|
|
uri: uri,
|
|
isDirty: false,
|
|
versionId: 1,
|
|
notebook: this._extHostNotebooks.getNotebookDocument(URI.revive(notebookUri))?.apiNotebook
|
|
}]
|
|
});
|
|
}
|
|
|
|
$willRemoveInteractiveDocument(uri: UriComponents, notebookUri: UriComponents) {
|
|
this._textDocumentsAndEditors.acceptDocumentsAndEditorsDelta({
|
|
removedDocuments: [uri]
|
|
});
|
|
}
|
|
}
|