我正在尝试开发一个插件,它显示与特定行相关的问题。
我能够实现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];
}
} 在extension.ts中注册
context.subscriptions.push(
vscode.languages.registerCodeActionsProvider(supportedLanguageCodes, new ApexCodeActionProvider(), {
providedCodeActionKinds: [vscode.CodeActionKind.QuickFix]
})
);但是我不能传递错误详细信息和行号吗?你知道怎么通过吗?以及如何在文本编辑器中编辑或更改文本?
发布于 2020-07-15 21:09:13
您需要提供一个vscode.CodeActionProvider。
调用此CodeActionProvider时,将返回vscode.CodeAction对象的列表。
在CodeAction中,您可以设置vscode.WorkspaceEdit和/或vscode.Command。
在WorkspaceEdit中,您可以定义要QuickFix的删除/插入/替换。
在Command中,您可以设置一个arguments属性,您可以在该属性中放置命令参数。此数组将是命令的参数之一。
https://stackoverflow.com/questions/62908698
复制相似问题