(
notebook: vscode.NotebookDocument,
connection: KernelConnectionMetadata,
controllerRegistration: IControllerRegistration,
token: vscode.CancellationToken,
startKernel: boolean = true
)
| 127 | } |
| 128 | |
| 129 | export async function selectKernelAndStart( |
| 130 | notebook: vscode.NotebookDocument, |
| 131 | connection: KernelConnectionMetadata, |
| 132 | controllerRegistration: IControllerRegistration, |
| 133 | token: vscode.CancellationToken, |
| 134 | startKernel: boolean = true |
| 135 | ) { |
| 136 | if (!controllerRegistration.getSelected(notebook)) { |
| 137 | const disposables = new DisposableStore(); |
| 138 | try { |
| 139 | const selectedPromise = new Promise<void>((resolve) => |
| 140 | disposables.add( |
| 141 | controllerRegistration.onControllerSelected((e) => |
| 142 | e.notebook === notebook ? resolve() : undefined |
| 143 | ) |
| 144 | ) |
| 145 | ); |
| 146 | |
| 147 | const editor = |
| 148 | vscode.window.visibleNotebookEditors.find((e) => e.notebook === notebook) || |
| 149 | (await vscode.window.showNotebookDocument(notebook)); |
| 150 | |
| 151 | await raceCancellation( |
| 152 | token, |
| 153 | vscode.commands.executeCommand('notebook.selectKernel', { |
| 154 | editor, |
| 155 | id: connection.id, |
| 156 | extension: JVSC_EXTENSION_ID |
| 157 | }) |
| 158 | ); |
| 159 | |
| 160 | await raceTimeout(500, raceCancellation(token, selectedPromise)); |
| 161 | } finally { |
| 162 | disposables.dispose(); |
| 163 | } |
| 164 | } |
| 165 | |
| 166 | const controller = controllerRegistration.getSelected(notebook); |
| 167 | if (controller && startKernel) { |
| 168 | return raceCancellation(token, controller.startKernel(notebook)); |
| 169 | } |
| 170 | } |
| 171 | |
| 172 | export async function getToolResponseForConfiguredNotebook( |
| 173 | selectedController: IVSCodeNotebookController, |
no test coverage detected