Provides contextual actions for code. Code actions typically either fix problems or beautify/refactor code.
Code actions are surfaced to users in a few different ways:
- The lightbulb feature, which shows a list of code actions at the current cursor position. The lightbulb's list of actions includes both quick fixes and refactorings.
- As commands that users can run, such as
Refactor
. Users can run these from the command palette or with keybindings. - As source actions, such
Organize Imports
. - {@link CodeActionKind.QuickFix Quick fixes} are shown in the problems view.
- Change applied on save by the
editor.codeActionsOnSave
setting.
Fields
optionalresolveCodeAction:Null<(codeAction:T, token:CancellationToken) ‑> ProviderResult<T>>
Given a code action fill in its {@linkcode CodeAction.edit edit}-property. Changes to all other properties, like title, are ignored. A code action that has an edit will not be resolved.
Note that a code action provider that returns commands, not code actions, cannot successfully implement this function. Returning commands is deprecated and instead code actions should be returned.
Parameters:
codeAction | A code action. |
---|---|
token | A cancellation token. |
Returns:
The resolved code action or a thenable that resolves to such. It is OK to return the given
item
. When no result is returned, the given item
will be used.
provideCodeActions(document:TextDocument, range:EitherType<Range, Selection>, context:CodeActionContext, token:CancellationToken):ProviderResult<Array<EitherType<Command, T>>>
Get code actions for a given range in a document.
Only return code actions that are relevant to user for the requested range. Also keep in mind how the
returned code actions will appear in the UI. The lightbulb widget and Refactor
commands for instance show
returned code actions as a list, so do not return a large number of code actions that will overwhelm the user.
@link Selection selection} if the actions are being requested in the currently active editor.
Parameters:
document | The document in which the command was invoked. |
---|---|
range | The selector or range for which the command was invoked. This will always be a { |
context | Provides additional information about what code actions are being requested. You can use this to see what specific type of code actions are being requested by the editor in order to return more relevant actions and avoid returning irrelevant code actions that the editor will discard. |
token | A cancellation token. |
Returns:
An array of code actions, such as quick fixes or refactorings. The lack of a result can be signaled
by returning undefined
, null
, or an empty array.
We also support returning Command
for legacy reasons, however all new extensions should return
CodeAction
object instead.