Adjust md external header link diagnostic range (#152001)

Fixes #151998

Makes errors for invalid headers on file links only cover the fragment range instead of the entire link range
This commit is contained in:
Matt Bierner 2022-06-14 00:39:49 -07:00 committed by GitHub
parent c46555d9c8
commit a658c04b0a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 3 deletions

View file

@ -496,7 +496,8 @@ export class DiagnosticComputer {
for (const link of fragmentLinks) {
if (!toc.lookup(link.fragment) && !this.isIgnoredLink(options, link.source.pathText) && !this.isIgnoredLink(options, link.source.text)) {
const msg = localize('invalidLinkToHeaderInOtherFile', 'Header does not exist in file: {0}', link.fragment);
diagnostics.push(new LinkDoesNotExistDiagnostic(link.source.hrefRange, msg, fragmentErrorSeverity, link.source.text));
const range = link.source.fragmentRange?.with({ start: link.source.fragmentRange.start.translate(0, -1) }) ?? link.source.hrefRange;
diagnostics.push(new LinkDoesNotExistDiagnostic(range, msg, fragmentErrorSeverity, link.source.text));
}
}
}

View file

@ -131,7 +131,7 @@ suite('markdown: Diagnostics', () => {
const diagnostics = await getComputedDiagnostics(doc1, new InMemoryWorkspaceMarkdownDocuments([doc1, doc2]));
assertDiagnosticsEqual(diagnostics, [
new vscode.Range(5, 6, 5, 35),
new vscode.Range(5, 14, 5, 35),
]);
});
@ -236,7 +236,9 @@ suite('markdown: Diagnostics', () => {
// But we should be able to override the default
const manager = createDiagnosticsManager(contents, new MemoryDiagnosticConfiguration({ validateFragmentLinks: DiagnosticLevel.ignore, validateMarkdownFileLinkFragments: DiagnosticLevel.warning }));
const { diagnostics } = await manager.recomputeDiagnosticState(doc1, noopToken);
assert.deepStrictEqual(diagnostics.length, 1);
assertDiagnosticsEqual(diagnostics, [
new vscode.Range(1, 13, 1, 21),
]);
}
});