From f02acde95c9f5faec630e4a016d6083d69461b68 Mon Sep 17 00:00:00 2001 From: Aaron Munger <2019016+amunger@users.noreply.github.com> Date: Wed, 11 Feb 2026 11:00:18 -0800 Subject: [PATCH] track and dispose listener (#294643) --- src/vs/workbench/api/common/extHostNotebookKernels.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/api/common/extHostNotebookKernels.ts b/src/vs/workbench/api/common/extHostNotebookKernels.ts index 52eaf027866..eecdf625b00 100644 --- a/src/vs/workbench/api/common/extHostNotebookKernels.ts +++ b/src/vs/workbench/api/common/extHostNotebookKernels.ts @@ -150,6 +150,7 @@ export class ExtHostNotebookKernels implements ExtHostNotebookKernelsShape { let _executeHandler = handler ?? _defaultExecutHandler; let _interruptHandler: ((this: vscode.NotebookController, notebook: vscode.NotebookDocument) => void | Thenable) | undefined; let _variableProvider: vscode.NotebookVariableProvider | undefined; + let _variableProviderDisposable: IDisposable | undefined; this._proxy.$addKernel(handle, data).catch(err => { // this can happen when a kernel with that ID is already registered @@ -234,9 +235,10 @@ export class ExtHostNotebookKernels implements ExtHostNotebookKernelsShape { }, set variableProvider(value) { checkProposedApiEnabled(extension, 'notebookVariableProvider'); + _variableProviderDisposable?.dispose(); _variableProvider = value; data.hasVariableProvider = !!value; - value?.onDidChangeVariables(e => that._proxy.$variablesUpdated(e.uri)); + _variableProviderDisposable = value?.onDidChangeVariables(e => that._proxy.$variablesUpdated(e.uri)); _update(); }, get variableProvider() { @@ -270,6 +272,7 @@ export class ExtHostNotebookKernels implements ExtHostNotebookKernelsShape { this._kernelData.delete(handle); onDidChangeSelection.dispose(); onDidReceiveMessage.dispose(); + _variableProviderDisposable?.dispose(); this._proxy.$removeKernel(handle); } },