track and dispose listener (#294643)

This commit is contained in:
Aaron Munger
2026-02-11 11:00:18 -08:00
committed by GitHub
parent de73ae31fe
commit f02acde95c

View File

@@ -150,6 +150,7 @@ export class ExtHostNotebookKernels implements ExtHostNotebookKernelsShape {
let _executeHandler = handler ?? _defaultExecutHandler;
let _interruptHandler: ((this: vscode.NotebookController, notebook: vscode.NotebookDocument) => void | Thenable<void>) | 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);
}
},