Clear markdown diagnostics when file is closed (#156912)

This commit is contained in:
Matt Bierner 2022-08-02 11:32:02 -07:00 committed by GitHub
parent 13e4a97bf1
commit 3a5a458643
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 5 deletions

View file

@ -48,13 +48,13 @@ export function registerValidateSupport(
workspace: VsCodeClientWorkspace,
ls: md.IMdLanguageService,
config: ConfigurationManager,
logger: md.ILogger,
): Disposable {
let diagnosticOptions: md.DiagnosticOptions = defaultDiagnosticOptions;
function updateDiagnosticsSetting(): void {
diagnosticOptions = getDiagnosticsOptions(config);
}
const subs: Disposable[] = [];
const manager = ls.createPullDiagnosticsManager();
subs.push(manager);
@ -64,14 +64,23 @@ export function registerValidateSupport(
connection.languages.diagnostics.refresh();
}));
const emptyDiagnosticsResponse = Object.freeze({ kind: 'full', items: [] });
connection.languages.diagnostics.on(async (params, token): Promise<FullDocumentDiagnosticReport | UnchangedDocumentDiagnosticReport> => {
logger.log(md.LogLevel.Trace, 'Server: connection.languages.diagnostics.on', params.textDocument.uri);
if (!config.getSettings()?.markdown.experimental.validate.enabled) {
return { kind: 'full', items: [] };
return emptyDiagnosticsResponse;
}
const document = await workspace.openMarkdownDocument(URI.parse(params.textDocument.uri));
const uri = URI.parse(params.textDocument.uri);
if (!workspace.hasMarkdownDocument(uri)) {
return emptyDiagnosticsResponse;
}
const document = await workspace.openMarkdownDocument(uri);
if (!document) {
return { kind: 'full', items: [] };
return emptyDiagnosticsResponse;
}
const diagnostics = await manager.computeDiagnostics(document, diagnosticOptions, token);

View file

@ -48,7 +48,7 @@ export async function startServer(connection: Connection) {
});
registerCompletionsSupport(connection, documents, provider, configurationManager);
registerValidateSupport(connection, workspace, provider, configurationManager);
registerValidateSupport(connection, workspace, provider, configurationManager, logger);
workspace.workspaceFolders = (params.workspaceFolders ?? []).map(x => URI.parse(x.uri));
return {