Skip to content

Commit d20e086

Browse files
committed
Merge branch 'connor4312/rm-old-renderer-api'
2 parents 325e07f + 24b712d commit d20e086

26 files changed

Lines changed: 274 additions & 718 deletions

extensions/vscode-notebook-tests/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
{
6565
"viewType": "notebookCoreTestRenderer",
6666
"displayName": "Notebook Core Test Renderer",
67+
"entrypoint": "./src/customRenderer.js",
6768
"mimeTypes": [
6869
"text/custom"
6970
]

extensions/vscode-notebook-tests/src/customRenderer.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,11 @@ vscode.postMessage({
1111
firstMessage: true
1212
}
1313
});
14+
15+
const notebook = acquireNotebookRendererApi('notebookCoreTestRenderer');
16+
17+
notebook.onDidCreateOutput(({ element, mimeType }) => {
18+
const div = document.createElement('div');
19+
div.innerText = `Hello ${mimeType}!`;
20+
element.appendChild(div);
21+
});

extensions/vscode-notebook-tests/src/notebookTestMain.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as vscode from 'vscode';
7-
import * as path from 'path';
87
import { smokeTestActivate } from './notebookSmokeTestMain';
98

109
export function activate(context: vscode.ExtensionContext): any {
@@ -117,16 +116,4 @@ export function activate(context: vscode.ExtensionContext): any {
117116
},
118117
cancelCellExecution: async (_document: vscode.NotebookDocument, _cell: vscode.NotebookCell) => { }
119118
}));
120-
121-
const preloadUri = vscode.Uri.file(path.resolve(__dirname, '../src/customRenderer.js'));
122-
context.subscriptions.push(vscode.notebook.registerNotebookOutputRenderer('notebookCoreTestRenderer', {
123-
mimeTypes: [
124-
'text/custom'
125-
]
126-
}, {
127-
preloads: [preloadUri],
128-
render(_document: vscode.NotebookDocument, _request: vscode.NotebookRenderRequest): string {
129-
return '<div>test</div>';
130-
}
131-
}));
132119
}

src/vs/vscode.proposed.d.ts

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1424,31 +1424,6 @@ declare module 'vscode' {
14241424
outputId: string;
14251425
}
14261426

1427-
export interface NotebookOutputRenderer {
1428-
/**
1429-
*
1430-
* @returns HTML fragment. We can probably return `CellOutput` instead of string ?
1431-
*
1432-
*/
1433-
render(document: NotebookDocument, request: NotebookRenderRequest): string;
1434-
1435-
/**
1436-
* Call before HTML from the renderer is executed, and will be called for
1437-
* every editor associated with notebook documents where the renderer
1438-
* is or was used.
1439-
*
1440-
* The communication object will only send and receive messages to the
1441-
* render API, retrieved via `acquireNotebookRendererApi`, acquired with
1442-
* this specific renderer's ID.
1443-
*
1444-
* If you need to keep an association between the communication object
1445-
* and the document for use in the `render()` method, you can use a WeakMap.
1446-
*/
1447-
resolveNotebook?(document: NotebookDocument, communication: NotebookCommunication): void;
1448-
1449-
readonly preloads?: Uri[];
1450-
}
1451-
14521427
export interface NotebookCellsChangeData {
14531428
readonly start: number;
14541429
readonly deletedCount: number;
@@ -1667,12 +1642,6 @@ declare module 'vscode' {
16671642
kernel: NotebookKernel
16681643
): Disposable;
16691644

1670-
export function registerNotebookOutputRenderer(
1671-
id: string,
1672-
outputSelector: NotebookOutputSelector,
1673-
renderer: NotebookOutputRenderer
1674-
): Disposable;
1675-
16761645
export const onDidOpenNotebookDocument: Event<NotebookDocument>;
16771646
export const onDidCloseNotebookDocument: Event<NotebookDocument>;
16781647
export const onDidSaveNotebookDocument: Event<NotebookDocument>;

src/vs/workbench/api/browser/mainThreadNotebook.ts

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { MainContext, MainThreadNotebookShape, NotebookExtensionDescription, IEx
99
import { Disposable, IDisposable, combinedDisposable, DisposableStore } from 'vs/base/common/lifecycle';
1010
import { URI, UriComponents } from 'vs/base/common/uri';
1111
import { INotebookService, IMainNotebookController } from 'vs/workbench/contrib/notebook/common/notebookService';
12-
import { INotebookMimeTypeSelector, NOTEBOOK_DISPLAY_ORDER, NotebookCellOutputsSplice, NotebookDocumentMetadata, NotebookCellMetadata, ICellEditOperation, ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, CellEditType, CellKind, INotebookKernelInfo, INotebookKernelInfoDto, IEditor, INotebookRendererInfo, IOutputRenderRequest, IOutputRenderResponse, INotebookDocumentFilter } from 'vs/workbench/contrib/notebook/common/notebookCommon';
12+
import { NOTEBOOK_DISPLAY_ORDER, NotebookCellOutputsSplice, NotebookDocumentMetadata, NotebookCellMetadata, ICellEditOperation, ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, CellEditType, CellKind, INotebookKernelInfo, INotebookKernelInfoDto, IEditor, INotebookDocumentFilter } from 'vs/workbench/contrib/notebook/common/notebookCommon';
1313
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1414
import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel';
1515
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
@@ -171,7 +171,6 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo
171171
private readonly _notebookProviders = new Map<string, IMainNotebookController>();
172172
private readonly _notebookKernels = new Map<string, MainThreadNotebookKernel>();
173173
private readonly _notebookKernelProviders = new Map<number, { extension: NotebookExtensionDescription, emitter: Emitter<void>, provider: IDisposable }>();
174-
private readonly _notebookRenderers = new Map<string, MainThreadNotebookRenderer>();
175174
private readonly _proxy: ExtHostNotebookShape;
176175
private _toDisposeOnEditorRemove = new Map<string, IDisposable>();
177176
private _currentState?: DocumentAndEditorState;
@@ -191,10 +190,10 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo
191190
this.registerListeners();
192191
}
193192

194-
async $tryApplyEdits(viewType: string, resource: UriComponents, modelVersionId: number, edits: ICellEditOperation[], renderers: number[]): Promise<boolean> {
193+
async $tryApplyEdits(viewType: string, resource: UriComponents, modelVersionId: number, edits: ICellEditOperation[]): Promise<boolean> {
195194
const textModel = this._notebookService.getNotebookTextModel(URI.from(resource));
196195
if (textModel) {
197-
await this._notebookService.transformEditsOutputs(textModel, edits);
196+
this._notebookService.transformEditsOutputs(textModel, edits);
198197
return textModel.$applyEdit(modelVersionId, edits, true);
199198
}
200199

@@ -414,22 +413,6 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo
414413
// }
415414
}
416415

417-
async $registerNotebookRenderer(extension: NotebookExtensionDescription, type: string, selectors: INotebookMimeTypeSelector, preloads: UriComponents[]): Promise<void> {
418-
const staticContribution = this._notebookService.getContributedNotebookOutputRenderers(type);
419-
420-
if (!staticContribution) {
421-
throw new Error(`Notebook renderer for '${type}' is not statically registered.`);
422-
}
423-
424-
const renderer = new MainThreadNotebookRenderer(this._proxy, type, staticContribution.displayName, extension.id, URI.revive(extension.location), selectors, preloads.map(uri => URI.revive(uri)));
425-
this._notebookRenderers.set(type, renderer);
426-
this._notebookService.registerNotebookRenderer(type, renderer);
427-
}
428-
429-
async $unregisterNotebookRenderer(id: string): Promise<void> {
430-
this._notebookService.unregisterNotebookRenderer(id);
431-
}
432-
433416
async $registerNotebookProvider(_extension: NotebookExtensionDescription, _viewType: string, _supportBackup: boolean, _kernel: INotebookKernelInfoDto | undefined): Promise<void> {
434417
const controller: IMainNotebookController = {
435418
kernel: _kernel,
@@ -448,7 +431,7 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo
448431
{ editType: CellEditType.Insert, index: 0, cells: data.cells }
449432
];
450433

451-
await this._notebookService.transformEditsOutputs(mainthreadTextModel, edits);
434+
this._notebookService.transformEditsOutputs(mainthreadTextModel, edits);
452435
await new Promise(resolve => {
453436
DOM.scheduleAtNextAnimationFrame(() => {
454437
const ret = mainthreadTextModel!.$applyEdit(mainthreadTextModel!.versionId, edits, true);
@@ -609,12 +592,12 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo
609592
textModel?.updateNotebookCellMetadata(handle, metadata);
610593
}
611594

612-
async $spliceNotebookCellOutputs(viewType: string, resource: UriComponents, cellHandle: number, splices: NotebookCellOutputsSplice[], renderers: number[]): Promise<void> {
595+
async $spliceNotebookCellOutputs(viewType: string, resource: UriComponents, cellHandle: number, splices: NotebookCellOutputsSplice[]): Promise<void> {
613596
this.logService.debug('MainThreadNotebooks#spliceNotebookCellOutputs', resource.path, cellHandle);
614597
const textModel = this._notebookService.getNotebookTextModel(URI.from(resource));
615598

616599
if (textModel) {
617-
await this._notebookService.transformSpliceOutputs(textModel, splices);
600+
this._notebookService.transformSpliceOutputs(textModel, splices);
618601
textModel.$spliceNotebookCellOutputs(cellHandle, splices);
619602
}
620603
}
@@ -675,25 +658,3 @@ export class MainThreadNotebookKernel implements INotebookKernelInfo {
675658
return this._proxy.$executeNotebook2(this.id, viewType, uri, handle);
676659
}
677660
}
678-
679-
export class MainThreadNotebookRenderer implements INotebookRendererInfo {
680-
constructor(
681-
private readonly _proxy: ExtHostNotebookShape,
682-
readonly id: string,
683-
public displayName: string,
684-
readonly extensionId: ExtensionIdentifier,
685-
readonly extensionLocation: URI,
686-
readonly selectors: INotebookMimeTypeSelector,
687-
readonly preloads: URI[],
688-
) {
689-
690-
}
691-
692-
render(uri: URI, request: IOutputRenderRequest<UriComponents>): Promise<IOutputRenderResponse<UriComponents> | undefined> {
693-
return this._proxy.$renderOutputs(uri, this.id, request);
694-
}
695-
696-
render2<T>(uri: URI, request: IOutputRenderRequest<T>): Promise<IOutputRenderResponse<T> | undefined> {
697-
return this._proxy.$renderOutputs2(uri, this.id, request);
698-
}
699-
}

src/vs/workbench/api/common/extHost.api.impl.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -962,10 +962,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
962962
checkProposedApiEnabled(extension);
963963
return extHostNotebook.registerNotebookKernelProvider(extension, selector, provider);
964964
},
965-
registerNotebookOutputRenderer: (type: string, outputFilter: vscode.NotebookOutputSelector, renderer: vscode.NotebookOutputRenderer) => {
966-
checkProposedApiEnabled(extension);
967-
return extHostNotebook.registerNotebookOutputRenderer(type, extension, outputFilter, renderer);
968-
},
969965
get activeNotebookEditor(): vscode.NotebookEditor | undefined {
970966
checkProposedApiEnabled(extension);
971967
return extHostNotebook.activeNotebookEditor;

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ import { TunnelDto } from 'vs/workbench/api/common/extHostTunnelService';
5151
import { TunnelOptions } from 'vs/platform/remote/common/tunnel';
5252
import { Timeline, TimelineChangeEvent, TimelineOptions, TimelineProviderDescriptor, InternalTimelineOptions } from 'vs/workbench/contrib/timeline/common/timeline';
5353
import { revive } from 'vs/base/common/marshalling';
54-
import { INotebookMimeTypeSelector, IProcessedOutput, INotebookDisplayOrder, NotebookCellMetadata, NotebookDocumentMetadata, ICellEditOperation, NotebookCellsChangedEvent, NotebookDataDto, INotebookKernelInfoDto, IMainCellDto, IOutputRenderRequest, IOutputRenderResponse, INotebookDocumentFilter, INotebookKernelInfoDto2 } from 'vs/workbench/contrib/notebook/common/notebookCommon';
54+
import { IProcessedOutput, INotebookDisplayOrder, NotebookCellMetadata, NotebookDocumentMetadata, ICellEditOperation, NotebookCellsChangedEvent, NotebookDataDto, INotebookKernelInfoDto, IMainCellDto, INotebookDocumentFilter, INotebookKernelInfoDto2 } from 'vs/workbench/contrib/notebook/common/notebookCommon';
5555
import { CallHierarchyItem } from 'vs/workbench/contrib/callHierarchy/common/callHierarchy';
5656
import { Dto } from 'vs/base/common/types';
5757
import { ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable';
@@ -718,8 +718,6 @@ export interface MainThreadNotebookShape extends IDisposable {
718718
$registerNotebookProvider(extension: NotebookExtensionDescription, viewType: string, supportBackup: boolean, kernelInfoDto: INotebookKernelInfoDto | undefined): Promise<void>;
719719
$onNotebookChange(viewType: string, resource: UriComponents): Promise<void>;
720720
$unregisterNotebookProvider(viewType: string): Promise<void>;
721-
$registerNotebookRenderer(extension: NotebookExtensionDescription, type: string, selectors: INotebookMimeTypeSelector, preloads: UriComponents[]): Promise<void>;
722-
$unregisterNotebookRenderer(id: string): Promise<void>;
723721
$registerNotebookKernel(extension: NotebookExtensionDescription, id: string, label: string, selectors: (string | IRelativePattern)[], preloads: UriComponents[]): Promise<void>;
724722
$registerNotebookKernelProvider(extension: NotebookExtensionDescription, handle: number, documentFilter: INotebookDocumentFilter): Promise<void>;
725723
$unregisterNotebookKernelProvider(handle: number): Promise<void>;
@@ -729,7 +727,7 @@ export interface MainThreadNotebookShape extends IDisposable {
729727
$updateNotebookLanguages(viewType: string, resource: UriComponents, languages: string[]): Promise<void>;
730728
$updateNotebookMetadata(viewType: string, resource: UriComponents, metadata: NotebookDocumentMetadata): Promise<void>;
731729
$updateNotebookCellMetadata(viewType: string, resource: UriComponents, handle: number, metadata: NotebookCellMetadata | undefined): Promise<void>;
732-
$spliceNotebookCellOutputs(viewType: string, resource: UriComponents, cellHandle: number, splices: NotebookCellOutputsSplice[], renderers: number[]): Promise<void>;
730+
$spliceNotebookCellOutputs(viewType: string, resource: UriComponents, cellHandle: number, splices: NotebookCellOutputsSplice[]): Promise<void>;
733731
$postMessage(editorId: string, forRendererId: string | undefined, value: any): Promise<boolean>;
734732

735733
$onDidEdit(resource: UriComponents, viewType: string, editId: number, label: string | undefined): void;
@@ -1645,8 +1643,6 @@ export interface ExtHostNotebookShape {
16451643
$backup(viewType: string, uri: UriComponents, cancellation: CancellationToken): Promise<string | undefined>;
16461644
$acceptDisplayOrder(displayOrder: INotebookDisplayOrder): void;
16471645
$acceptNotebookActiveKernelChange(event: { uri: UriComponents, providerHandle: number | undefined, kernelId: string | undefined }): void;
1648-
$renderOutputs(uriComponents: UriComponents, id: string, request: IOutputRenderRequest<UriComponents>): Promise<IOutputRenderResponse<UriComponents> | undefined>;
1649-
$renderOutputs2<T>(uriComponents: UriComponents, id: string, request: IOutputRenderRequest<T>): Promise<IOutputRenderResponse<T> | undefined>;
16501646
$onDidReceiveMessage(editorId: string, rendererId: string | undefined, message: unknown): void;
16511647
$acceptModelChanged(uriComponents: UriComponents, event: NotebookCellsChangedEvent): void;
16521648
$acceptModelSaved(uriComponents: UriComponents): void;

0 commit comments

Comments
 (0)