在VSCode中开发扩展时,如何从QuickFix传递错误详细信息和行号



我正在尝试开发一个插件,它显示与特定行相关的问题。

我能够实现Quick Fix。在这里,它解析问题并显示它:

const uri = vscode.Uri.file(path);
const doc = await vscode.workspace.openTextDocument(uri);
//fix ranges to not include whitespace
issues.forEach((issue) => {
codeActions.push({
title: "Uppercase the keyword",
kind: CodeActionKind.QuickFix,
diagnostics: [issue]
});
const line = doc.lineAt(issue.range.start.line);
issue.range = new vscode.Range(
new vscode.Position(line.range.start.line, line.firstNonWhitespaceCharacterIndex),
line.range.end
);
});
collection.set(uri, issues);

CodeActionProvider丢失:

import * as vscode from 'vscode';
export class ApexCodeActionProvider implements vscode.CodeActionProvider {
public provideCodeActions(
document: vscode.TextDocument,
_range: vscode.Range,
_context: vscode.CodeActionContext,
_token: vscode.CancellationToken
): vscode.ProviderResult<vscode.CodeAction[]> {
const autoFixQuickFix = new vscode.CodeAction('AutoFix QuickFix', vscode.CodeActionKind.QuickFix);
autoFixQuickFix.command = {
title: 'AutoFix QuickFix',
command: 'apex-pmd.fixFile'
};
return [autoFixQuickFix];
}
}   

在扩展.ts 中注册

context.subscriptions.push(
vscode.languages.registerCodeActionsProvider(supportedLanguageCodes, new ApexCodeActionProvider(), {
providedCodeActionKinds: [vscode.CodeActionKind.QuickFix]
})
);

但是我无法传递错误详细信息和行号?知道怎么通过吗?以及如何从文本编辑器中编辑或更改文本?

您需要提供一个vscode.CodeActionProvider

CodeActionProvider在被调用时返回vscode.CodeAction对象的列表。

CodeAction中,您可以设置vscode.WorkspaceEdit和/或vscode.Command

WorkspaceEdit中,您可以定义要快速修复的删除/插入/替换。

Command中,可以设置一个arguments属性,用于放置命令参数。此数组将是命令的参数之一。

最新更新