[我在尝试更新vscode扩展名中的诊断程序时遇到问题

问题描述 投票:0回答:1

我尝试以vscode扩展名更新诊断程序集合。我这样写代码:

if (vscode.window.activeTextEditor) {
    updateDiagnostics(vscode.window.activeTextEditor.document, diagnosticCollection);
}       

[updateDiagnostics函数类似于:

function updateDiagnostics(document: vscode.TextDocument, collection: vscode.DiagnosticCollection): void {
    let diagnostics: vscode.Diagnostic[] = [];
    if (document) {
        let message = `error message`;
        let range = new vscode.Range(new vscode.Position(3,4), new vscode.Position(3,5))
        let severity = vscode.DiagnosticSeverity.Error
        let diagnostic = new vscode.Diagnostic(range, message, severity);
        diagnostics.push(diagnostic);
        collection.set(document.uri, diagnostics)
    } else {
        collection.clear();
    }
}

此代码有效,但是当我在如下所示的异步操作之后放置if语句时,该代码不起作用。

const respBody = await postRequest(uri,{name:"testcontraact1",contractcode:fileContent,limit:10});
if (vscode.window.activeTextEditor) {
   updateDiagnostics(vscode.window.activeTextEditor.document, diagnosticCollection);
}           

调试代码后,我发现函数updateDiagnostics已执行,但是测试代码中没有显示诊断信息,这确实使我感到困惑。

visual-studio-code vscode-extensions diagnostics
1个回答
0
投票

好,我发现了问题。 postRequest执行后,activeTextEditor.document已经不同。所以我尝试这个:

let dc = vscode.window.activeTextEditor?.document
const respBody = await postRequest(uri,{name:"testcontraact1",contractcode:fileContent,limit:10});
updateDiagnostics(dc, diagnosticCollection);

而且有效!!

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.