Hook up basic alert of why a code action could not be applied

For #85160
This commit is contained in:
Matt Bierner
2019-11-20 17:08:42 -08:00
parent 4cc8710a38
commit 827e94edef
3 changed files with 71 additions and 16 deletions

View File

@@ -238,9 +238,14 @@ class TypeScriptRefactorProvider implements vscode.CodeActionProvider {
return undefined;
}
return this.convertApplicableRefactors(response.body, document, rangeOrSelection);
const actions = this.convertApplicableRefactors(response.body, document, rangeOrSelection);
if (!context.only) {
return actions;
}
return this.appendInvalidActions(actions);
}
private convertApplicableRefactors(
body: Proto.ApplicableRefactorInfo[],
document: vscode.TextDocument,
@@ -305,6 +310,16 @@ class TypeScriptRefactorProvider implements vscode.CodeActionProvider {
}
return false;
}
private appendInvalidActions(actions: vscode.CodeAction[]): vscode.CodeAction[] {
if (!actions.some(action => action.kind && Extract_Constant.kind.contains(action.kind))) {
const disabledAction = new vscode.CodeAction('Extract to constant', Extract_Constant.kind);
disabledAction.disabled = localize('extract.disabled', "The current selection cannot be extracted");
disabledAction.isPreferred = true;
actions.push(disabledAction);
}
return actions;
}
}
export function register(