Skip to content

Commit 18bde2a

Browse files
committed
[html] validate: check if version is still current
1 parent 290c9d6 commit 18bde2a

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

extensions/html/server/src/htmlServerMain.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -230,17 +230,21 @@ function isValidationEnabled(languageId: string, settings: Settings = globalSett
230230

231231
async function validateTextDocument(textDocument: TextDocument) {
232232
try {
233+
let version = textDocument.version;
233234
let diagnostics: Diagnostic[] = [];
234235
if (textDocument.languageId === 'html') {
235236
let modes = languageModes.getAllModesInDocument(textDocument);
236237
let settings = await getDocumentSettings(textDocument, () => modes.some(m => !!m.doValidation));
237-
modes.forEach(mode => {
238-
if (mode.doValidation && isValidationEnabled(mode.getId(), settings)) {
239-
pushAll(diagnostics, mode.doValidation(textDocument, settings));
240-
}
241-
});
238+
textDocument = documents.get(textDocument.uri);
239+
if (textDocument && textDocument.version === version) { // check no new version has come in after in after the async op
240+
modes.forEach(mode => {
241+
if (mode.doValidation && isValidationEnabled(mode.getId(), settings)) {
242+
pushAll(diagnostics, mode.doValidation(textDocument, settings));
243+
}
244+
});
245+
connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
246+
}
242247
}
243-
connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
244248
} catch (e) {
245249
connection.console.error(formatError(`Error while validating ${textDocument.uri}`, e));
246250
}

0 commit comments

Comments
 (0)