Skip to content

Commit 1187d7e

Browse files
author
MikhailArkhipov
committed
Make sure progress is cleared
1 parent bfdc24a commit 1187d7e

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

src/client/activation/languageServer.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,9 @@ export class LanguageServerExtensionActivator implements IExtensionActivator {
179179
}
180180

181181
private async startLanguageClient(): Promise<void> {
182+
if (this.progressReporting) {
183+
this.progressReporting.dispose();
184+
}
182185
this.context.subscriptions.push(this.languageClient!.start());
183186
await this.serverReady();
184187
this.progressReporting = new ProgressReporting(this.languageClient!);

src/client/activation/progress.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Progress, ProgressLocation, window } from 'vscode';
55
import { Disposable, LanguageClient } from 'vscode-languageclient';
66
import { createDeferred, Deferred } from '../../utils/async';
77

8-
export class ProgressReporting {
8+
export class ProgressReporting implements Disposable {
99
private statusBarMessage: Disposable | undefined;
1010
private progress: Progress<{ message?: string; increment?: number }> | undefined;
1111
private progressDeferred: Deferred<void> | undefined;
@@ -19,6 +19,7 @@ export class ProgressReporting {
1919
});
2020

2121
this.languageClient.onNotification('python/beginProgress', async _ => {
22+
this.clearProgress();
2223
this.progressDeferred = createDeferred<void>();
2324
window.withProgress({
2425
location: ProgressLocation.Window,
@@ -36,11 +37,17 @@ export class ProgressReporting {
3637
this.progress.report({ message: m });
3738
});
3839

39-
this.languageClient.onNotification('python/endProgress', _ => {
40-
if (this.progressDeferred) {
41-
this.progressDeferred.resolve();
42-
this.progressDeferred = undefined;
43-
}
44-
});
40+
this.languageClient.onNotification('python/endProgress', _ => this.clearProgress());
41+
}
42+
43+
public dispose(): void {
44+
this.clearProgress();
45+
}
46+
47+
private clearProgress(): void {
48+
if (this.progressDeferred) {
49+
this.progressDeferred.resolve();
50+
this.progressDeferred = undefined;
51+
}
4552
}
4653
}

0 commit comments

Comments
 (0)