-
Notifications
You must be signed in to change notification settings - Fork 34.5k
Description
This would enable microsoft/TypeScript#14423.
I am mostly describing changes to protocol.ts
in the TypeScript repository here.
@mjbvz @egamma @mhegazy we discussed this today.
1
The returned CodeAction
in a code action request may include a list of commands.
export interface CodeAction {
description: string;
changes: FileCodeEdits[];
command?: {};
}
A code action may even have an empty changes
list and consist of only a command.
We could choose specify that command
must an of commands, although I'm not sure if that's worth bothering with.
2
If the code action is accepted, the editor must send the commands back to the language service to actually be carried out. This means needing a new request type, "applyCodeFixCommand". This looks like:
export interface ApplyCodeFixCommandRequest extends Request {
command: CommandTypes.ApplyCodeFixCommand;
arguments: ApplyCodeFixCommandRequestArgs;
}
export interface ApplyCodeFixCommandRequestArgs extends FileRequestArgs {
command: {};
}
The contents of command
will just be what was sent to the editor.
(Typically this will include a "type" field so the language service can dispatch on the type of action.)
3
The language service should send a response when the action is complete.
export interface ApplyCodeFixCommandResponse extends Response {
body: {};
}
I'm thinking we can just reuse the message
field for error reporting and for a successful response. (Currently the field is documented to only be used if success
is false.) We could put that in the body, but then it seems redundant.