mirror of
https://github.com/Microsoft/vscode
synced 2024-10-02 17:32:41 +00:00
[html] validate: check if version is still current
This commit is contained in:
parent
290c9d6140
commit
18bde2a520
|
@ -230,17 +230,21 @@ function isValidationEnabled(languageId: string, settings: Settings = globalSett
|
|||
|
||||
async function validateTextDocument(textDocument: TextDocument) {
|
||||
try {
|
||||
let version = textDocument.version;
|
||||
let diagnostics: Diagnostic[] = [];
|
||||
if (textDocument.languageId === 'html') {
|
||||
let modes = languageModes.getAllModesInDocument(textDocument);
|
||||
let settings = await getDocumentSettings(textDocument, () => modes.some(m => !!m.doValidation));
|
||||
modes.forEach(mode => {
|
||||
if (mode.doValidation && isValidationEnabled(mode.getId(), settings)) {
|
||||
pushAll(diagnostics, mode.doValidation(textDocument, settings));
|
||||
}
|
||||
});
|
||||
textDocument = documents.get(textDocument.uri);
|
||||
if (textDocument && textDocument.version === version) { // check no new version has come in after in after the async op
|
||||
modes.forEach(mode => {
|
||||
if (mode.doValidation && isValidationEnabled(mode.getId(), settings)) {
|
||||
pushAll(diagnostics, mode.doValidation(textDocument, settings));
|
||||
}
|
||||
});
|
||||
connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
|
||||
}
|
||||
}
|
||||
connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
|
||||
} catch (e) {
|
||||
connection.console.error(formatError(`Error while validating ${textDocument.uri}`, e));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue