From c91ee9241376e4e0335418b339d54ced8281cffb Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Mon, 21 Jun 2021 12:26:07 -0700 Subject: [PATCH 1/3] Better handling of notebook diagnostics --- news/2 Fixes/6130.md | 1 + .../jupyter/languageserver/notebookConverter.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 news/2 Fixes/6130.md diff --git a/news/2 Fixes/6130.md b/news/2 Fixes/6130.md new file mode 100644 index 000000000000..2e3f16b0363a --- /dev/null +++ b/news/2 Fixes/6130.md @@ -0,0 +1 @@ +Clear Notebook Cell diagnostics when deleting a cell or closing a notebook. diff --git a/src/client/jupyter/languageserver/notebookConverter.ts b/src/client/jupyter/languageserver/notebookConverter.ts index a892035e486b..c2c907ae0cf9 100644 --- a/src/client/jupyter/languageserver/notebookConverter.ts +++ b/src/client/jupyter/languageserver/notebookConverter.ts @@ -59,6 +59,8 @@ export class NotebookConverter implements Disposable { private onDidChangeCellsEmitter = new EventEmitter(); + private mapOfConcatDocumentsWithCellUris = new Map(); + constructor( private api: IVSCodeNotebook, private fs: IFileSystem, @@ -127,9 +129,18 @@ export class NotebookConverter implements Disposable { if (wrapper) { // Diagnostics are supposed to be per file and are updated each time // Make sure to clear out old ones first + const cellUris: string[] = []; + const oldCellUris = this.mapOfConcatDocumentsWithCellUris.get(uri.toString()) || []; wrapper.notebook.getCells().forEach((c: NotebookCell) => { result.set(c.document.uri, []); + cellUris.push(c.document.uri.toString()); }); + // Possible some cells were deleted, we need to clear the diagnostics of those cells as well. + const currentCellUris = new Set(cellUris); + oldCellUris + .filter((cellUri) => !currentCellUris.has(cellUri)) + .forEach((cellUri) => result.set(Uri.parse(cellUri), [])); + this.mapOfConcatDocumentsWithCellUris.set(uri.toString(), cellUris); // Then for all the new ones, set their values. diagnostics.forEach((d) => { @@ -141,6 +152,10 @@ export class NotebookConverter implements Disposable { } list.push(this.toIncomingDiagnostic(location.uri, d)); }); + } else if (this.mapOfConcatDocumentsWithCellUris.has(uri.toString())) { + (this.mapOfConcatDocumentsWithCellUris.get(uri.toString()) || []) + .map((cellUri) => Uri.parse(cellUri)) + .forEach((cellUri) => result.set(cellUri, [])); } else { result.set(uri, diagnostics); } From 6af2748a59b6e036a3592324d316079a0da5f909 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Mon, 21 Jun 2021 12:27:07 -0700 Subject: [PATCH 2/3] Oops --- news/2 Fixes/{6130.md => 16528.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename news/2 Fixes/{6130.md => 16528.md} (100%) diff --git a/news/2 Fixes/6130.md b/news/2 Fixes/16528.md similarity index 100% rename from news/2 Fixes/6130.md rename to news/2 Fixes/16528.md From e67e68343d18fb58e8f655d8f1efbaf0404a5271 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Mon, 21 Jun 2021 12:29:38 -0700 Subject: [PATCH 3/3] Misc --- src/client/jupyter/languageserver/notebookConverter.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/client/jupyter/languageserver/notebookConverter.ts b/src/client/jupyter/languageserver/notebookConverter.ts index c2c907ae0cf9..61fdf202fdaa 100644 --- a/src/client/jupyter/languageserver/notebookConverter.ts +++ b/src/client/jupyter/languageserver/notebookConverter.ts @@ -156,6 +156,7 @@ export class NotebookConverter implements Disposable { (this.mapOfConcatDocumentsWithCellUris.get(uri.toString()) || []) .map((cellUri) => Uri.parse(cellUri)) .forEach((cellUri) => result.set(cellUri, [])); + this.mapOfConcatDocumentsWithCellUris.delete(uri.toString()); } else { result.set(uri, diagnostics); }