From ef40932ae9d63f86aa6e863f59921797a7e7f73e Mon Sep 17 00:00:00 2001 From: Aaron Munger Date: Wed, 31 Jan 2024 08:51:41 -0800 Subject: [PATCH] display unknown text mime outputs as plain text (#203849) --- extensions/notebook-renderers/src/index.ts | 5 +++++ .../browser/view/cellParts/cellOutput.ts | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/extensions/notebook-renderers/src/index.ts b/extensions/notebook-renderers/src/index.ts index 431869ad211..ef9240df2b7 100644 --- a/extensions/notebook-renderers/src/index.ts +++ b/extensions/notebook-renderers/src/index.ts @@ -515,6 +515,11 @@ export const activate: ActivationFunction = (ctx) => { } break; default: + if (outputInfo.mime.indexOf('text/') > -1) { + disposables.get(outputInfo.id)?.dispose(); + const disposable = renderText(outputInfo, element, latestContext); + disposables.set(outputInfo.id, disposable); + } break; } if (element.querySelector('div')) { diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.ts index f60ac478dab..3ec60d0ce1d 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.ts @@ -200,18 +200,23 @@ class CellOutputElement extends Disposable { return undefined; } - const pickedMimeTypeRenderer = mimeTypes[pick]; - const innerContainer = this._generateInnerOutputContainer(previousSibling, pickedMimeTypeRenderer); + const selectedPresentation = mimeTypes[pick]; + let renderer = this.notebookService.getRendererInfo(selectedPresentation.rendererId); + if (!renderer && selectedPresentation.mimeType.indexOf('text/') > -1) { + renderer = this.notebookService.getRendererInfo('vscode.builtin-renderer'); + } + + const innerContainer = this._generateInnerOutputContainer(previousSibling, selectedPresentation); this._attachToolbar(innerContainer, notebookTextModel, this.notebookEditor.activeKernel, index, mimeTypes); this.renderedOutputContainer = DOM.append(innerContainer, DOM.$('.rendered-output')); - const renderer = this.notebookService.getRendererInfo(pickedMimeTypeRenderer.rendererId); - this.renderResult = renderer - ? { type: RenderOutputType.Extension, renderer, source: this.output, mimeType: pickedMimeTypeRenderer.mimeType } - : this._renderMissingRenderer(this.output, pickedMimeTypeRenderer.mimeType); - this.output.pickedMimeType = pickedMimeTypeRenderer; + this.renderResult = renderer + ? { type: RenderOutputType.Extension, renderer, source: this.output, mimeType: selectedPresentation.mimeType } + : this._renderMissingRenderer(this.output, selectedPresentation.mimeType); + + this.output.pickedMimeType = selectedPresentation; if (!this.renderResult) { this.viewCell.updateOutputHeight(index, 0, 'CellOutputElement#renderResultUndefined');