@@ -717,23 +717,29 @@ class NotebookAccessibleViewContribution extends Disposable {
717717 const outputTextModel = viewCell . model . outputs [ i ] ;
718718 const [ mimeTypes , pick ] = outputViewModel . resolveMimeTypes ( notebookEditor . textModel , undefined ) ;
719719 const mimeType = mimeTypes [ pick ] . mimeType ;
720- const pickedBuffer = outputTextModel . outputs . find ( output => output . mime === mimeType ) ?. data . buffer ;
720+ let buffer = outputTextModel . outputs . find ( output => output . mime === mimeType ) ;
721721
722- let text = `${ mimeType } \n` ;
723- if ( ! pickedBuffer || mimeType . startsWith ( 'image' ) ) {
724- const altBuffer = outputTextModel . outputs . find ( output => ! output . mime . startsWith ( 'image' ) ) ?. data . buffer ;
725- if ( altBuffer ) {
726- text = decoder . decode ( altBuffer ) ;
722+ if ( ! buffer || mimeType . startsWith ( 'image' ) ) {
723+ buffer = outputTextModel . outputs . find ( output => ! output . mime . startsWith ( 'image' ) ) ;
724+ }
725+
726+ let text = `${ mimeType } ` ; // default in case we can't get the text value for some reason.
727+ if ( buffer ) {
728+ const charLimit = 100_000 ;
729+ text = decoder . decode ( buffer . data . slice ( 0 , charLimit ) . buffer ) ;
730+
731+ if ( buffer . data . byteLength > charLimit ) {
732+ text = text + '...(truncated)' ;
733+ }
734+
735+ if ( mimeType . endsWith ( 'error' ) ) {
736+ text = text . replace ( / \\ u 0 0 1 b \[ [ 0 - 9 ; ] * m / gi, '' ) . replaceAll ( '\\n' , '\n' ) ;
727737 }
728- } else {
729- text = decoder . decode ( pickedBuffer ) ;
730738 }
739+
731740 const index = viewCell . outputsViewModels . length > 1
732741 ? `Cell output ${ i + 1 } of ${ viewCell . outputsViewModels . length } \n`
733742 : '' ;
734- if ( mimeType . endsWith ( 'error' ) ) {
735- text = text . replace ( / \\ u 0 0 1 b \[ [ 0 - 9 ; ] * m / gi, '' ) . replaceAll ( '\\n' , '\n' ) ;
736- }
737743 outputContent = outputContent . concat ( `${ index } ${ text } \n` ) ;
738744 }
739745
0 commit comments