@@ -19,6 +19,13 @@ export async function activate(context: vscode.ExtensionContext) {
19
19
const evtTarget = new QscEventTarget ( false ) ;
20
20
const compiler = await getCompiler ( evtTarget ) ;
21
21
22
+ // send document updates
23
+ vscode . workspace . onDidChangeTextDocument ( ( evt ) => {
24
+ if ( vscode . languages . match ( "qsharp" , evt . document ) ) {
25
+ compiler . updateCode ( evt . document . getText ( ) ) ;
26
+ }
27
+ } ) ;
28
+
22
29
// completions
23
30
vscode . languages . registerCompletionItemProvider (
24
31
"qsharp" ,
@@ -38,6 +45,44 @@ export async function activate(context: vscode.ExtensionContext) {
38
45
createDefinitionProvider ( compiler )
39
46
) ;
40
47
48
+ const diagCollection = vscode . languages . createDiagnosticCollection ( "qsharp" ) ;
49
+ evtTarget . addEventListener ( "diagnostics" , ( evt ) => {
50
+ const diagnostics = evt . detail ;
51
+ // Of course the uri should come from the event
52
+ const document = vscode . window . activeTextEditor ?. document ;
53
+ if ( document ) {
54
+ diagCollection . clear ( ) ;
55
+ diagCollection . set (
56
+ document . uri ,
57
+ diagnostics . map ( ( d ) => {
58
+ let severity ;
59
+ switch ( d . severity ) {
60
+ case 0 :
61
+ severity = vscode . DiagnosticSeverity . Information ;
62
+ break ;
63
+ case 1 :
64
+ severity = vscode . DiagnosticSeverity . Warning ;
65
+ break ;
66
+ case 2 :
67
+ severity = vscode . DiagnosticSeverity . Error ;
68
+ break ;
69
+ default :
70
+ severity = vscode . DiagnosticSeverity . Error ;
71
+ output . appendLine ( `Unknown severity: ${ d . severity } ` ) ;
72
+ }
73
+ return new vscode . Diagnostic (
74
+ new vscode . Range (
75
+ document . positionAt ( d . start_pos ) ,
76
+ document . positionAt ( d . end_pos )
77
+ ) ,
78
+ d . message ,
79
+ severity
80
+ ) ;
81
+ } )
82
+ ) ;
83
+ }
84
+ } ) ;
85
+
41
86
// notebooks
42
87
registerQSharpNotebookHandlers ( context ) ;
43
88
}
0 commit comments