在我的 VS Code 擴展中,我注冊了一個洗掉診斷的命令:
extension.ts
context.subscriptions.push(
vscode.commands.registerCommand(
DELETE_DIAGNOSTIC_COMMAND,
() => removeDiagnostic()
)
);
這是removeDiagnostic函式的樣子:
utils.ts
export function removeDiagnostic(): void {
const editor = window.activeTextEditor;
if(editor){
const diagnosticStart = editor.selection.start;
const diagnosticEnd = editor.selection.end;
const diagnosticRange = new Range(diagnosticStart, diagnosticEnd);
editor.edit(editBuilder => {
editBuilder.replace(diagnosticRange, "");
});
}
在DELETE_DIAGNOSTIC_COMMAND這里提供的代碼操作:
MyCodeActionProvider.ts
const DELETE_DIAGNOSTIC_COMMAND = 'delete-diagnostic.command';
export class MyCodeActionProvider implements vscode.CodeActionProvider {
public static readonly providedCodeActionKinds = [
vscode.CodeActionKind.QuickFix
];
provideCodeActions(document: vscode.TextDocument, range: vscode.Range | vscode.Selection, context: vscode.CodeActionContext, token: vscode.CancellationToken): vscode.CodeAction[] {
return context.diagnostics
.filter(diagnostic => diagnostic.code === 'myDiagnosticCode')
.map(diagnostic => this.createCommandCodeAction(diagnostic));
}
private createCommandCodeAction(diagnostic: vscode.Diagnostic): vscode.CodeAction {
const action = new vscode.CodeAction('Remove deprecated intrinsic', vscode.CodeActionKind.QuickFix);
action.command = { command: DELETE_DIAGNOSTIC_COMMAND, title: 'Remove deprecated intrinsic', tooltip: 'This will remove the deprecated intrinsic from the editor.' };
action.diagnostics = [diagnostic];
action.isPreferred = true;
return action;
}
}
并且,代碼操作提供程式在此處注冊:
extension.ts
context.subscriptions.push(
vscode.languages.registerCodeActionsProvider('myFileExtension', new MyCodeActionProvider(), {
providedCodeActionKinds: MyCodeActionProvider.providedCodeActionKinds
})
);
在removeDiagnostic函式中,當我將滑鼠懸停在診斷上時,我想獲取診斷的范圍,以便運行快速修復命令將其洗掉。
更清楚地說,當我從Problems選項卡運行命令時,我可以洗掉選定的范圍,但當我將滑鼠懸停在診斷上時不能:

當我將滑鼠懸停在它上面運行命令時,如何從編輯器中洗掉診斷?
uj5u.com熱心網友回復:
將代碼操作中的診斷傳遞給屬性中的DELETE_DIAGNOSTIC_COMMAND命令,args并在命令中使用range診斷的屬性
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408575.html
標籤:
