-
Notifications
You must be signed in to change notification settings - Fork 34.2k
Closed
Labels
apinotebooknotebook-apiplan-itemVS Code - planned item for upcomingVS Code - planned item for upcoming
Milestone
Description
We introduced a proposed API for Notebook but currently the API is majorly two managed object: NotebookDocument
and NotebookCell
. We create them for extensions and listen to their properties changes. However this doesn't follow the principal of TextEditor/Document
where TextDocument
is always readonly and TextEditor
is the API for applying changes to the document.
If we try to follow TextEditor/Document
, the API can be shaped as below
export interface NotebookEditor {
readonly document: NotebookDocument;
viewColumn?: ViewColumn;
/**
* Fired when the output hosting webview posts a message.
*/
readonly onDidReceiveMessage: Event<any>;
/**
* Post a message to the output hosting webview.
*
* Messages are only delivered if the editor is live.
*
* @param message Body of the message. This must be a string or other json serilizable object.
*/
postMessage(message: any): Thenable<boolean>;
/**
* Create a notebook cell. The cell is not inserted into current document when created. Extensions should insert the cell into the document by [TextDocument.cells](#TextDocument.cells)
*/
createCell(content: string, language: string, type: CellKind, outputs: CellOutput[], metadata: NotebookCellMetadata): NotebookCell;
/**
* Insert/Delete cells from the document
*/
spliceCells(index: number, deleteCnt: number, insertedCells: NotebookCell[]): Promise<void>;
/**
* Make changes to individual cells
*/
applyCellEdits(cell: NotebookCell, changes: { language?: string, outputs?: CellOutput[], metadata?: NotebookCellMetadata }): Promise<void>;
}
export interface NotebookDocument {
readonly uri: Uri;
readonly fileName: string;
readonly isDirty: boolean;
readonly languages: string[];
readonly cells: NotebookCell[];
readonly displayOrder?: GlobPattern[];
readonly metadata?: NotebookDocumentMetadata;
}
export interface NotebookCell {
readonly uri: Uri;
readonly handle: number;
readonly language: string;
readonly cellKind: CellKind;
readonly outputs: CellOutput[];
readonly metadata?: NotebookCellMetadata;
getContent(): string;
}
msoeken, JeffreyCA, TylerLeonhardt and renkun-ken
Metadata
Metadata
Assignees
Labels
apinotebooknotebook-apiplan-itemVS Code - planned item for upcomingVS Code - planned item for upcoming