@@ -180,7 +180,7 @@ export class RNotebookProvider implements vscode.NotebookContentProvider, vscode
180180 } else if ( cellType === 'yaml' ) {
181181 if ( lines [ line ] . startsWith ( '---' ) ) {
182182 cells . push ( {
183- cellKind : vscode . CellKind . Markdown ,
183+ cellKind : vscode . CellKind . Code ,
184184 source : lines . slice ( cellStartLine , line + 1 ) . join ( '\n' ) ,
185185 language : 'yaml' ,
186186 outputs : [ ] ,
@@ -218,10 +218,26 @@ export class RNotebookProvider implements vscode.NotebookContentProvider, vscode
218218 } ;
219219 }
220220
221- // The following are dummy implementations not relevant to this example.
222221 onDidChangeNotebook = new vscode . EventEmitter < vscode . NotebookDocumentEditEvent > ( ) . event ;
223222 async resolveNotebook ( ) : Promise < void > { }
224- async saveNotebook ( document : vscode . NotebookDocument , cancellation : vscode . CancellationToken ) : Promise < void > { }
223+ async saveNotebook ( document : vscode . NotebookDocument , cancellation : vscode . CancellationToken ) : Promise < void > {
224+ let content = '' ;
225+ for ( const cell of document . cells ) {
226+ if ( cell . cellKind === vscode . CellKind . Markdown ) {
227+ content += '\n\n' + cell . document . getText ( ) + '\n\n' ;
228+ } else if ( cell . cellKind === vscode . CellKind . Code ) {
229+ if ( cell . language === 'r' ) {
230+ content += '\n\n```{r}\n' + cell . document . getText ( ) + '\n```\n' ;
231+ } else if ( cell . language === 'yaml' ) {
232+ content += '---\n' + cell . document . getText ( ) + '\n---\n' ;
233+ } else {
234+ content += '\n\n```{' + cell . language + '}\n' + cell . document . getText ( ) + '\n```\n' ;
235+ }
236+ }
237+ }
238+ vscode . workspace . fs . writeFile ( document . uri , Buffer . from ( content ) ) ;
239+ }
240+
225241 async saveNotebookAs ( targetResource : vscode . Uri , document : vscode . NotebookDocument , cancellation : vscode . CancellationToken ) : Promise < void > { }
226242 async backupNotebook ( document : vscode . NotebookDocument , context : vscode . NotebookDocumentBackupContext , cancellation : vscode . CancellationToken ) : Promise < vscode . NotebookDocumentBackup > { return { id : '' , delete : ( ) => { } } ; }
227243 async executeCell ( document : vscode . NotebookDocument , cell : vscode . NotebookCell ) {
0 commit comments