From 3a8978af98c6b8b03a98916a9bf8b91ba7070df3 Mon Sep 17 00:00:00 2001 From: seem Date: Tue, 10 Dec 2024 14:08:51 +0200 Subject: [PATCH] fix "view as scrollable element" not working The issue was due to cell output metadata being set to `undefined` by the Positron notebook controllers, causing the `scrollable` metadata to not be set here: https://github.com/posit-dev/positron/blob/54d791da6b5e015ff03a596a848c8893cf90d3bd/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts#L766. --- .../src/notebookController.ts | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/extensions/positron-notebook-controllers/src/notebookController.ts b/extensions/positron-notebook-controllers/src/notebookController.ts index 8d027e76751..59c75c1be8f 100644 --- a/extensions/positron-notebook-controllers/src/notebookController.ts +++ b/extensions/positron-notebook-controllers/src/notebookController.ts @@ -9,8 +9,21 @@ import { JUPYTER_NOTEBOOK_TYPE } from './constants'; import { log } from './extension'; import { ResourceMap } from './map'; -/** The type of a Jupyter notebook cell output. */ +/** + * The type of a Jupyter notebook cell output. + * + * Used by the ipynb notebook serializer (extensions/ipynb/src/serializers.ts) to convert from + * VSCode notebook cell outputs to Jupyter notebook cell outputs. + * + * See: https://jupyter-client.readthedocs.io/en/latest/messaging.html + */ enum NotebookCellOutputType { + /** An error occurred during an execution. */ + Error = 'error', + + /** Output from one of the standard streams (stdout or stderr). */ + Stream = 'stream', + /** One of possibly many outputs related to an execution. */ DisplayData = 'display_data', @@ -584,7 +597,9 @@ async function handleRuntimeMessageStream( if (lastOutputItems && lastOutputItems.every(item => item.mime === cellOutputItem.mime)) { await execution.appendOutputItems([cellOutputItem], lastOutput); } else { - const cellOutput = new vscode.NotebookCellOutput([cellOutputItem]); + const cellOutput = new vscode.NotebookCellOutput( + [cellOutputItem], { outputType: NotebookCellOutputType.Stream }, + ); await execution.appendOutput(cellOutput); } } @@ -605,6 +620,6 @@ async function handleRuntimeMessageError( message: message.message, stack: message.traceback.join('\n'), }) - ]); + ], { outputType: NotebookCellOutputType.Error }); await execution.appendOutput(cellOutput); }