mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-14 09:45:55 +01:00
Support kernel source actions update. (#171781)
This commit is contained in:
@@ -115,6 +115,8 @@ export class MainThreadNotebookKernels implements MainThreadNotebookKernelsShape
|
||||
private readonly _kernels = new Map<number, [kernel: MainThreadKernel, registraion: IDisposable]>();
|
||||
private readonly _kernelDetectionTasks = new Map<number, [task: MainThreadKernelDetectionTask, registraion: IDisposable]>();
|
||||
private readonly _kernelSourceActionProviders = new Map<number, [provider: IKernelSourceActionProvider, registraion: IDisposable]>();
|
||||
private readonly _kernelSourceActionProvidersEventRegistrations = new Map<number, IDisposable>();
|
||||
|
||||
private readonly _proxy: ExtHostNotebookKernelsShape;
|
||||
|
||||
private readonly _executions = new Map<number, INotebookCellExecution>();
|
||||
@@ -314,7 +316,7 @@ export class MainThreadNotebookKernels implements MainThreadNotebookKernelsShape
|
||||
|
||||
// --- notebook kernel source action provider
|
||||
|
||||
async $addKernelSourceActionProvider(handle: number, notebookType: string): Promise<void> {
|
||||
async $addKernelSourceActionProvider(handle: number, eventHandle: number, notebookType: string): Promise<void> {
|
||||
const kernelSourceActionProvider: IKernelSourceActionProvider = {
|
||||
viewType: notebookType,
|
||||
provideKernelSourceActions: async () => {
|
||||
@@ -336,15 +338,32 @@ export class MainThreadNotebookKernels implements MainThreadNotebookKernelsShape
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof eventHandle === 'number') {
|
||||
const emitter = new Emitter<void>();
|
||||
this._kernelSourceActionProvidersEventRegistrations.set(eventHandle, emitter);
|
||||
kernelSourceActionProvider.onDidChangeSourceActions = emitter.event;
|
||||
}
|
||||
|
||||
const registration = this._notebookKernelService.registerKernelSourceActionProvider(notebookType, kernelSourceActionProvider);
|
||||
this._kernelSourceActionProviders.set(handle, [kernelSourceActionProvider, registration]);
|
||||
}
|
||||
|
||||
$removeKernelSourceActionProvider(handle: number): void {
|
||||
$removeKernelSourceActionProvider(handle: number, eventHandle: number): void {
|
||||
const tuple = this._kernelSourceActionProviders.get(handle);
|
||||
if (tuple) {
|
||||
tuple[1].dispose();
|
||||
this._kernelSourceActionProviders.delete(handle);
|
||||
}
|
||||
if (typeof eventHandle === 'number') {
|
||||
this._kernelSourceActionProvidersEventRegistrations.delete(eventHandle);
|
||||
}
|
||||
}
|
||||
|
||||
$emitNotebookKernelSourceActionsChangeEvent(eventHandle: number): void {
|
||||
const emitter = this._kernelSourceActionProvidersEventRegistrations.get(eventHandle);
|
||||
if (emitter instanceof Emitter) {
|
||||
emitter.fire(undefined);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user