Skip to content

Commit 1aa8639

Browse files
authored
Merge pull request #35 from DafnyVSCode/feature/status-messages
Update status message handling
2 parents 3db3814 + 56909e0 commit 1aa8639

File tree

4 files changed

+47
-9
lines changed

4 files changed

+47
-9
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
## 1.7.0
88

9-
- Now changing status to *Not Verified* as soon as a document is edited.
9+
- Now showing parser and resolver errors in the status bar.
1010

1111
## 1.6.0
1212

src/stringResources/languageServer.ts

+14
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,24 @@ export class LanguageServerNotification {
2121
public static DafnyLanguageServerVersionReceived: string =
2222
"dafnyLanguageServerVersionReceived";
2323

24+
public static CompilationStatus: string = "dafny/compilation/status";
25+
// TODO: Status messages for Dafny 3.2, remove in the future.
2426
public static VerificationStarted: string = "dafny/verification/started";
2527
public static VerificationCompleted: string = "dafny/verification/completed";
2628
}
2729

30+
/**
31+
* Statuses sent by the language server while processing a document.
32+
*/
33+
export enum CompilationStatus {
34+
ParsingFailed = "ParsingFailed",
35+
ResolutionFailed = "ResolutionFailed",
36+
CompilationSucceeded = "CompilationSucceeded",
37+
VerificationStarted = "VerificationStarted",
38+
VerificationFailed = "VerificationFailed",
39+
VerificationSucceeded = "VerificationSucceeded"
40+
}
41+
2842
/**
2943
* Configuration settings for the Dafny language server
3044
* These settings are mostly no longer necessary

src/stringResources/messages.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,20 @@ export class Information {
6060
}
6161

6262
export class StatusbarStrings {
63-
public static Verified: string = "$(thumbsup) Verified";
64-
public static NotVerified: string = "$(thumbsdown) Not verified";
63+
public static ParsingFailed: string = "$(thumbsdown) Parsing Failed";
64+
public static ResolutionFailed: string = "$(thumbsdown) Resolution Failed";
65+
public static CompilationSucceeded: string = "$(thumbsup) Compilation Succeeded";
6566
public static Verifying: string = "$(sync~spin) Verifying...";
67+
public static VerificationSucceeded: string = "$(thumbsup) Verification Succeeded";
68+
public static VerificationFailed: string = "$(thumbsdown) Not verified";
6669
public static Errors: string = "Errors";
6770
public static Pending: string = "$(issue-opened) Server answer pending";
6871
public static DafnyVersion: string = "DafnyLS";
6972
public static CurrentDocument: string = "Current Document";
7073
public static NoDocumentSelected: string = "No document selected yet.";
7174
public static Started: string = "Server started";
75+
76+
// TODO: Status messages for Dafny 3.2, remove in the future.
77+
public static Verified: string = "$(thumbsup) Verified";
78+
public static NotVerified: string = StatusbarStrings.VerificationFailed;
7279
}

src/ui/providers/statusbarProvider.ts

+23-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
"use strict";
22
import {
33
window,
4-
workspace,
54
Uri,
65
StatusBarItem,
76
StatusBarAlignment,
87
LanguageClient,
98
} from "../../ideApi/_IdeApi";
9+
import { CompilationStatus } from "../../stringResources/languageServer";
1010
import {
1111
LanguageServerNotification,
1212
StatusbarStrings,
@@ -15,6 +15,15 @@ import {
1515

1616
import { IStatusbarProvider } from "./IStatusbarProvider";
1717

18+
const COMPILATION_STATUS_MESSAGE_MAPPINGS = {
19+
[CompilationStatus.ParsingFailed]: StatusbarStrings.ParsingFailed,
20+
[CompilationStatus.ResolutionFailed]: StatusbarStrings.ResolutionFailed,
21+
[CompilationStatus.CompilationSucceeded]: StatusbarStrings.CompilationSucceeded,
22+
[CompilationStatus.VerificationStarted]: StatusbarStrings.Verifying,
23+
[CompilationStatus.VerificationSucceeded]: StatusbarStrings.VerificationSucceeded,
24+
[CompilationStatus.VerificationFailed]: StatusbarStrings.VerificationFailed
25+
};
26+
1827
/**
1928
* This component adds additional information to the status bar like
2029
* if the Dafny file is valid or not and how many errors were found.
@@ -46,6 +55,17 @@ export class StatusbarProvider implements IStatusbarProvider {
4655
}
4756
);
4857

58+
// Sent when there are any changes to the compilation status of a document.
59+
languageServer.onNotification(
60+
LanguageServerNotification.CompilationStatus,
61+
({ uri, status }: { uri: string, status: CompilationStatus }) => {
62+
this.verificationMessage[Uri.parse(uri).toString()] =
63+
COMPILATION_STATUS_MESSAGE_MAPPINGS[status];
64+
this.update();
65+
}
66+
);
67+
68+
// TODO: Status message for Dafny 3.2, remove in the future.
4969
// Sent when the verification of a document started
5070
languageServer.onNotification(
5171
LanguageServerNotification.VerificationStarted,
@@ -55,7 +75,8 @@ export class StatusbarProvider implements IStatusbarProvider {
5575
this.update();
5676
}
5777
);
58-
78+
79+
// TODO: Status messages for Dafny 3.2, remove in the future.
5980
// Sent when the verification of a document completed
6081
languageServer.onNotification(
6182
LanguageServerNotification.VerificationCompleted,
@@ -66,10 +87,6 @@ export class StatusbarProvider implements IStatusbarProvider {
6687
this.update();
6788
}
6889
);
69-
70-
workspace.onDidChangeTextDocument(event => {
71-
this.verificationMessage[event.document.uri.toString()] = StatusbarStrings.NotVerified;
72-
});
7390
}
7491

7592
public dispose(): void {

0 commit comments

Comments
 (0)