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

fix #101871.

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