提交 c81de6c0 编写于 作者: R rebornix

notebook edit api

上级 ac63e070
......@@ -1681,16 +1681,20 @@ declare module 'vscode' {
* This metadata is ignored for markdown cell.
*/
runnable?: boolean;
/**
* Execution order information of the cell
*/
executionOrder?: number;
}
export interface NotebookCell {
readonly uri: Uri;
readonly cellKind: CellKind;
readonly source: string;
language: string;
cellKind: CellKind;
outputs: CellOutput[];
source: string;
metadata?: NotebookCellMetadata;
metadata: NotebookCellMetadata;
}
export interface NotebookDocumentMetadata {
......@@ -1711,14 +1715,15 @@ declare module 'vscode' {
* Default to true.
*/
cellRunnable: boolean;
}
export interface NotebookDocument {
readonly uri: Uri;
readonly fileName: string;
readonly isDirty: boolean;
languages: string[];
readonly cells: NotebookCell[];
languages: string[];
displayOrder?: GlobPattern[];
metadata?: NotebookDocumentMetadata;
}
......@@ -1768,7 +1773,20 @@ declare module 'vscode' {
preloads?: Uri[];
}
namespace window {
export interface NotebookDocumentChangeEvent {
/**
* The affected document.
*/
readonly document: NotebookDocument;
/**
* An array of content changes.
*/
// readonly contentChanges: ReadonlyArray<TextDocumentContentChangeEvent>;
}
export namespace notebook {
export function registerNotebookProvider(
notebookType: string,
provider: NotebookProvider
......@@ -1777,6 +1795,8 @@ declare module 'vscode' {
export function registerNotebookOutputRenderer(type: string, outputSelector: NotebookOutputSelector, renderer: NotebookOutputRenderer): Disposable;
export let activeNotebookDocument: NotebookDocument | undefined;
// export const onDidChangeNotebookDocument: Event<NotebookDocumentChangeEvent>;
}
//#endregion
......
......@@ -597,15 +597,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
createInputBox(): vscode.InputBox {
return extHostQuickOpen.createInputBox(extension.identifier);
},
registerNotebookProvider: (viewType: string, provider: vscode.NotebookProvider) => {
return extHostNotebook.registerNotebookProvider(extension, viewType, provider);
},
registerNotebookOutputRenderer: (type: string, outputFilter: vscode.NotebookOutputSelector, renderer: vscode.NotebookOutputRenderer) => {
return extHostNotebook.registerNotebookOutputRenderer(type, extension, outputFilter, renderer);
},
get activeNotebookDocument(): vscode.NotebookDocument | undefined {
return extHostNotebook.activeNotebookDocument;
},
get activeColorTheme(): vscode.ColorTheme {
checkProposedApiEnabled(extension);
return extHostTheming.activeColorTheme;
......@@ -904,6 +895,19 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
}
};
// namespace: notebook
const notebook: typeof vscode.notebook = {
registerNotebookProvider: (viewType: string, provider: vscode.NotebookProvider) => {
return extHostNotebook.registerNotebookProvider(extension, viewType, provider);
},
registerNotebookOutputRenderer: (type: string, outputFilter: vscode.NotebookOutputSelector, renderer: vscode.NotebookOutputRenderer) => {
return extHostNotebook.registerNotebookOutputRenderer(type, extension, outputFilter, renderer);
},
get activeNotebookDocument(): vscode.NotebookDocument | undefined {
return extHostNotebook.activeNotebookDocument;
}
};
return <typeof vscode>{
version: initData.version,
// namespaces
......@@ -917,6 +921,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
comment,
comments,
tasks,
notebook,
window,
workspace,
// types
......
......@@ -4,16 +4,16 @@
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import { DisposableStore, Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { readonly } from 'vs/base/common/errors';
import { Emitter, Event } from 'vs/base/common/event';
import { Disposable, DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
import { ISplice } from 'vs/base/common/sequence';
import { URI, UriComponents } from 'vs/base/common/uri';
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
import { CellKind, CellOutputKind, ExtHostNotebookShape, IMainContext, MainContext, MainThreadNotebookShape, NotebookCellOutputsSplice } from 'vs/workbench/api/common/extHost.protocol';
import { ExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocumentsAndEditors';
import { CellUri, diff, IErrorOutput, INotebookDisplayOrder, IOrderedMimeType, IStreamOutput, ITransformedDisplayOutputDto, mimeTypeSupportedByCore, sortMimeTypes, NotebookCellsChangedEvent, NotebookCellsSplice2, ICellEditOperation, INotebookEditData, CellEditType, ICellInsertEdit } from 'vs/workbench/contrib/notebook/common/notebookCommon';
import { CellEditType, CellUri, diff, ICellEditOperation, ICellInsertEdit, IErrorOutput, INotebookDisplayOrder, INotebookEditData, IOrderedMimeType, IStreamOutput, ITransformedDisplayOutputDto, mimeTypeSupportedByCore, NotebookCellsChangedEvent, NotebookCellsSplice2, sortMimeTypes } from 'vs/workbench/contrib/notebook/common/notebookCommon';
import { Disposable as VSCodeDisposable } from './extHostTypes';
interface IObservable<T> {
......@@ -70,7 +70,7 @@ export class ExtHostCell extends Disposable implements vscode.NotebookCell {
readonly handle: number,
readonly uri: URI,
private _content: string,
public cellKind: CellKind,
public readonly cellKind: CellKind,
public language: string,
outputs: any[],
_metadata: vscode.NotebookCellMetadata | undefined,
......@@ -114,7 +114,7 @@ export class ExtHostCell extends Disposable implements vscode.NotebookCell {
return this._metadata;
}
set metadata(newMetadata: vscode.NotebookCellMetadata | undefined) {
set metadata(newMetadata: vscode.NotebookCellMetadata) {
this._metadataChangeListener.dispose();
const observableMetadata = getObservable(newMetadata || {} as any); // TODO defaults
this._metadata = observableMetadata.proxy;
......
......@@ -204,6 +204,7 @@ export class BackLayerWebView extends Disposable {
outputNode.style.position = 'absolute';
outputNode.style.top = event.data.top + 'px';
outputNode.style.left = event.data.left + 'px';
outputNode.style.width = 'calc(100% - ' + event.data.left + 'px)';
outputNode.id = outputId;
let content = event.data.content;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册