@@ -189,6 +189,7 @@ export class CoqLspClient implements CoqLspClientInterface {
189
189
requestType : ProtocolNotificationType < any , any > ,
190
190
params : any ,
191
191
uri : Uri ,
192
+ version : number ,
192
193
lastDocumentEndPosition ?: Position ,
193
194
timeout : number = 300000
194
195
) : Promise < DiagnosticMessage > {
@@ -210,7 +211,10 @@ export class CoqLspClient implements CoqLspClientInterface {
210
211
this . client . onNotification (
211
212
PublishDiagnosticsNotification . type ,
212
213
( params ) => {
213
- if ( params . uri . toString ( ) === uri . uri ) {
214
+ if (
215
+ params . uri . toString ( ) === uri . uri &&
216
+ params . version === version
217
+ ) {
214
218
pendingDiagnostic = false ;
215
219
awaitedDiagnostics = params . diagnostics ;
216
220
@@ -242,6 +246,8 @@ export class CoqLspClient implements CoqLspClientInterface {
242
246
throw new CoqLspError ( "coq-lsp did not respond in time" ) ;
243
247
}
244
248
249
+ this . subscriptions . forEach ( ( d ) => d . dispose ( ) ) ;
250
+
245
251
return this . filterDiagnostics (
246
252
awaitedDiagnostics ,
247
253
lastDocumentEndPosition ?? Position . create ( 0 , 0 )
@@ -266,7 +272,8 @@ export class CoqLspClient implements CoqLspClientInterface {
266
272
return await this . waitUntilFileFullyChecked (
267
273
DidOpenTextDocumentNotification . type ,
268
274
params ,
269
- uri
275
+ uri ,
276
+ version
270
277
) ;
271
278
}
272
279
@@ -302,6 +309,7 @@ export class CoqLspClient implements CoqLspClientInterface {
302
309
DidChangeTextDocumentNotification . type ,
303
310
params ,
304
311
uri ,
312
+ version ,
305
313
oldEndPosition
306
314
) ;
307
315
}
0 commit comments