Add experimental trigger reason to ts server protocol
For https://github.com/microsoft/TypeScript/issues/35096
This commit is contained in:
parent
941f7a4d0b
commit
b6c2ea092d
|
@ -19,10 +19,24 @@ import FormattingOptionsManager from './fileConfigurationManager';
|
||||||
|
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
interface RefactorActionInfo extends Proto.RefactorActionInfo {
|
|
||||||
error?: string
|
namespace Experimental {
|
||||||
|
export interface RefactorActionInfo extends Proto.RefactorActionInfo {
|
||||||
|
readonly error?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RefactorTriggerReason = RefactorInvokedReason;
|
||||||
|
|
||||||
|
export interface RefactorInvokedReason {
|
||||||
|
readonly kind: 'invoked';
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface GetApplicableRefactorsRequestArgs extends Proto.FileRangeRequestArgs {
|
||||||
|
readonly triggerReason?: RefactorTriggerReason;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ApplyRefactoringCommand implements Command {
|
class ApplyRefactoringCommand implements Command {
|
||||||
public static readonly ID = '_typescript.applyRefactoring';
|
public static readonly ID = '_typescript.applyRefactoring';
|
||||||
public readonly id = ApplyRefactoringCommand.ID;
|
public readonly id = ApplyRefactoringCommand.ID;
|
||||||
|
@ -244,7 +258,10 @@ class TypeScriptRefactorProvider implements vscode.CodeActionProvider {
|
||||||
}
|
}
|
||||||
this.formattingOptionsManager.ensureConfigurationForDocument(document, token);
|
this.formattingOptionsManager.ensureConfigurationForDocument(document, token);
|
||||||
|
|
||||||
const args: Proto.GetApplicableRefactorsRequestArgs = typeConverters.Range.toFileRangeRequestArgs(file, rangeOrSelection);
|
const args: Experimental.GetApplicableRefactorsRequestArgs = {
|
||||||
|
...typeConverters.Range.toFileRangeRequestArgs(file, rangeOrSelection),
|
||||||
|
triggerReason: this.toTsTriggerReason(context),
|
||||||
|
};
|
||||||
return this.client.execute('getApplicableRefactors', args, token);
|
return this.client.execute('getApplicableRefactors', args, token);
|
||||||
});
|
});
|
||||||
if (response?.type !== 'response' || !response.body) {
|
if (response?.type !== 'response' || !response.body) {
|
||||||
|
@ -258,6 +275,13 @@ class TypeScriptRefactorProvider implements vscode.CodeActionProvider {
|
||||||
return this.appendInvalidActions(actions);
|
return this.appendInvalidActions(actions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private toTsTriggerReason(context: vscode.CodeActionContext): Experimental.RefactorInvokedReason | undefined {
|
||||||
|
if (!context.only) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return { kind: 'invoked' };
|
||||||
|
}
|
||||||
|
|
||||||
private convertApplicableRefactors(
|
private convertApplicableRefactors(
|
||||||
body: Proto.ApplicableRefactorInfo[],
|
body: Proto.ApplicableRefactorInfo[],
|
||||||
document: vscode.TextDocument,
|
document: vscode.TextDocument,
|
||||||
|
@ -283,7 +307,7 @@ class TypeScriptRefactorProvider implements vscode.CodeActionProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
private refactorActionToCodeAction(
|
private refactorActionToCodeAction(
|
||||||
action: RefactorActionInfo,
|
action: Experimental.RefactorActionInfo,
|
||||||
document: vscode.TextDocument,
|
document: vscode.TextDocument,
|
||||||
info: Proto.ApplicableRefactorInfo,
|
info: Proto.ApplicableRefactorInfo,
|
||||||
rangeOrSelection: vscode.Range | vscode.Selection,
|
rangeOrSelection: vscode.Range | vscode.Selection,
|
||||||
|
|
Loading…
Reference in a new issue