提交 25499ff9 编写于 作者: R rebornix

fix #101871.

上级 7d08008a
...@@ -415,7 +415,13 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo ...@@ -415,7 +415,13 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo
} }
async $registerNotebookRenderer(extension: NotebookExtensionDescription, type: string, selectors: INotebookMimeTypeSelector, preloads: UriComponents[]): Promise<void> { async $registerNotebookRenderer(extension: NotebookExtensionDescription, type: string, selectors: INotebookMimeTypeSelector, preloads: UriComponents[]): Promise<void> {
const renderer = new MainThreadNotebookRenderer(this._proxy, type, extension.id, URI.revive(extension.location), selectors, preloads.map(uri => URI.revive(uri))); const staticContribution = this._notebookService.getContributedNotebookOutputRenderers(type);
if (!staticContribution) {
throw new Error(`Notebook renderer for '${type}' is not statically registered.`);
}
const renderer = new MainThreadNotebookRenderer(this._proxy, type, staticContribution.displayName, extension.id, URI.revive(extension.location), selectors, preloads.map(uri => URI.revive(uri)));
this._notebookRenderers.set(type, renderer); this._notebookRenderers.set(type, renderer);
this._notebookService.registerNotebookRenderer(type, renderer); this._notebookService.registerNotebookRenderer(type, renderer);
} }
...@@ -674,10 +680,11 @@ export class MainThreadNotebookRenderer implements INotebookRendererInfo { ...@@ -674,10 +680,11 @@ export class MainThreadNotebookRenderer implements INotebookRendererInfo {
constructor( constructor(
private readonly _proxy: ExtHostNotebookShape, private readonly _proxy: ExtHostNotebookShape,
readonly id: string, readonly id: string,
public displayName: string,
readonly extensionId: ExtensionIdentifier, readonly extensionId: ExtensionIdentifier,
readonly extensionLocation: URI, readonly extensionLocation: URI,
readonly selectors: INotebookMimeTypeSelector, readonly selectors: INotebookMimeTypeSelector,
readonly preloads: URI[] readonly preloads: URI[],
) { ) {
} }
......
...@@ -964,7 +964,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN ...@@ -964,7 +964,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
filter: vscode.NotebookOutputSelector, filter: vscode.NotebookOutputSelector,
renderer: vscode.NotebookOutputRenderer renderer: vscode.NotebookOutputRenderer
): vscode.Disposable { ): vscode.Disposable {
if (this._notebookKernels.has(type)) { if (this._notebookOutputRenderers.has(type)) {
throw new Error(`Notebook renderer for '${type}' already registered`); throw new Error(`Notebook renderer for '${type}' already registered`);
} }
......
...@@ -19,7 +19,7 @@ export class PureNotebookOutputRenderer implements INotebookRendererInfo { ...@@ -19,7 +19,7 @@ export class PureNotebookOutputRenderer implements INotebookRendererInfo {
public readonly preloads: URI[]; public readonly preloads: URI[];
constructor(public readonly id: string, extension: IExtensionDescription, entrypoint: string) { constructor(public readonly id: string, public readonly displayName: string, extension: IExtensionDescription, entrypoint: string) {
this.extensionId = extension.identifier; this.extensionId = extension.identifier;
this.extensionLocation = extension.extensionLocation; this.extensionLocation = extension.extensionLocation;
this.preloads = [joinPath(extension.extensionLocation, entrypoint)]; this.preloads = [joinPath(extension.extensionLocation, entrypoint)];
......
...@@ -298,7 +298,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu ...@@ -298,7 +298,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu
})); }));
if (notebookContribution.entrypoint) { if (notebookContribution.entrypoint) {
this._notebookRenderers.set(notebookContribution.viewType, new PureNotebookOutputRenderer(notebookContribution.viewType, extension.description, notebookContribution.entrypoint)); this._notebookRenderers.set(notebookContribution.viewType, new PureNotebookOutputRenderer(notebookContribution.viewType, notebookContribution.displayName, extension.description, notebookContribution.entrypoint));
} }
} }
} }
...@@ -547,6 +547,11 @@ export class NotebookService extends Disposable implements INotebookService, ICu ...@@ -547,6 +547,11 @@ export class NotebookService extends Disposable implements INotebookService, ICu
registerNotebookRenderer(id: string, renderer: INotebookRendererInfo) { registerNotebookRenderer(id: string, renderer: INotebookRendererInfo) {
this._notebookRenderers.set(id, renderer); this._notebookRenderers.set(id, renderer);
const staticInfo = this.notebookRenderersInfoStore.get(id);
if (staticInfo) {
}
} }
unregisterNotebookRenderer(id: string) { unregisterNotebookRenderer(id: string) {
...@@ -995,8 +1000,8 @@ export class NotebookService extends Disposable implements INotebookService, ICu ...@@ -995,8 +1000,8 @@ export class NotebookService extends Disposable implements INotebookService, ICu
return this.notebookProviderInfoStore.get(viewType); return this.notebookProviderInfoStore.get(viewType);
} }
getContributedNotebookOutputRenderers(mimeType: string): readonly NotebookOutputRendererInfo[] { getContributedNotebookOutputRenderers(viewType: string): NotebookOutputRendererInfo | undefined {
return this.notebookRenderersInfoStore.getContributedRenderer(mimeType); return this.notebookRenderersInfoStore.get(viewType);
} }
getNotebookProviderResourceRoots(): URI[] { getNotebookProviderResourceRoots(): URI[] {
......
...@@ -558,7 +558,8 @@ export class CodeCell extends Disposable { ...@@ -558,7 +558,8 @@ export class CodeCell extends Disposable {
const renderInfo = this.notebookService.getRendererInfo(renderId); const renderInfo = this.notebookService.getRendererInfo(renderId);
if (renderInfo) { if (renderInfo) {
return `${renderId} (${renderInfo.extensionId.value})`; const displayName = renderInfo.displayName !== '' ? renderInfo.displayName : renderInfo.id;
return `${displayName} (${renderInfo.extensionId.value})`;
} }
return nls.localize('builtinRenderInfo', "built-in"); return nls.localize('builtinRenderInfo', "built-in");
......
...@@ -113,6 +113,7 @@ export interface INotebookMimeTypeSelector { ...@@ -113,6 +113,7 @@ export interface INotebookMimeTypeSelector {
export interface INotebookRendererInfo { export interface INotebookRendererInfo {
id: string; id: string;
displayName: string;
extensionId: ExtensionIdentifier; extensionId: ExtensionIdentifier;
extensionLocation: URI, extensionLocation: URI,
preloads: URI[], preloads: URI[],
......
...@@ -16,6 +16,7 @@ import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/no ...@@ -16,6 +16,7 @@ import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/no
import { CancellationToken } from 'vs/base/common/cancellation'; import { CancellationToken } from 'vs/base/common/cancellation';
import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel'; import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel';
import { IDisposable } from 'vs/base/common/lifecycle'; import { IDisposable } from 'vs/base/common/lifecycle';
import { NotebookOutputRendererInfo } from 'vs/workbench/contrib/notebook/common/notebookOutputRenderer';
export const INotebookService = createDecorator<INotebookService>('notebookService'); export const INotebookService = createDecorator<INotebookService>('notebookService');
...@@ -61,7 +62,9 @@ export interface INotebookService { ...@@ -61,7 +62,9 @@ export interface INotebookService {
registerNotebookKernelProvider(provider: INotebookKernelProvider): IDisposable; registerNotebookKernelProvider(provider: INotebookKernelProvider): IDisposable;
getContributedNotebookKernels(viewType: string, resource: URI): readonly INotebookKernelInfo[]; getContributedNotebookKernels(viewType: string, resource: URI): readonly INotebookKernelInfo[];
getContributedNotebookKernels2(viewType: string, resource: URI, token: CancellationToken): Promise<INotebookKernelInfo2[]>; getContributedNotebookKernels2(viewType: string, resource: URI, token: CancellationToken): Promise<INotebookKernelInfo2[]>;
getContributedNotebookOutputRenderers(id: string): NotebookOutputRendererInfo | undefined;
getRendererInfo(id: string): INotebookRendererInfo | undefined; getRendererInfo(id: string): INotebookRendererInfo | undefined;
resolveNotebook(viewType: string, uri: URI, forceReload: boolean, editorId?: string, backupId?: string): Promise<NotebookTextModel | undefined>; resolveNotebook(viewType: string, uri: URI, forceReload: boolean, editorId?: string, backupId?: string): Promise<NotebookTextModel | undefined>;
getNotebookTextModel(uri: URI): NotebookTextModel | undefined; getNotebookTextModel(uri: URI): NotebookTextModel | undefined;
executeNotebook(viewType: string, uri: URI): Promise<void>; executeNotebook(viewType: string, uri: URI): Promise<void>;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册