diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index d28167ea2da..8c646fe074f 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -1549,7 +1549,7 @@ declare module 'vscode' { export interface NotebookController { /** - * The unique identifier of this notebook controller. + * The identifier of this notebook controller. */ readonly id: string; @@ -1673,7 +1673,7 @@ declare module 'vscode' { /** * Creates a new notebook controller. * - * @param id Unique identifier of the controller + * @param id Extension-unique identifier of the controller * @param selector A notebook selector to narrow down notebook type or path * @param label The label of the controller * @param handler diff --git a/src/vs/workbench/api/common/extHostNotebookKernels.ts b/src/vs/workbench/api/common/extHostNotebookKernels.ts index f511caa1b61..add0d63d666 100644 --- a/src/vs/workbench/api/common/extHostNotebookKernels.ts +++ b/src/vs/workbench/api/common/extHostNotebookKernels.ts @@ -39,7 +39,7 @@ export class ExtHostNotebookKernels implements ExtHostNotebookKernelsShape { createNotebookController(extension: IExtensionDescription, id: string, viewType: string, label: string, handler?: vscode.NotebookExecuteHandler, preloads?: vscode.NotebookKernelPreload[]): vscode.NotebookController { for (let data of this._kernelData.values()) { - if (data.controller.id === id) { + if (data.controller.id === id && ExtensionIdentifier.equals(extension.identifier, data.extensionId)) { throw new Error(`notebook controller with id '${id}' ALREADY exist`); } } @@ -56,7 +56,7 @@ export class ExtHostNotebookKernels implements ExtHostNotebookKernelsShape { const onDidReceiveMessage = new Emitter<{ editor: vscode.NotebookEditor, message: any }>(); const data: INotebookKernelDto2 = { - id, + id: `${extension.identifier.value}/${id}`, viewType, extensionId: extension.identifier, extensionLocation: extension.extensionLocation, @@ -92,7 +92,7 @@ export class ExtHostNotebookKernels implements ExtHostNotebookKernelsShape { }; const controller: vscode.NotebookController = { - get id() { return data.id; }, + get id() { return id; }, get viewType() { return data.viewType; }, onDidChangeNotebookAssociation: onDidChangeSelection.event, get label() {