A code action represents a change that can be performed in code, e.g. to fix a problem or to refactor code.

A CodeAction must set either edit and/or a command. If both are supplied, the edit is applied first, then the command is executed.

interface CodeAction {
    command?: Command;
    data?: any;
    diagnostics?: Diagnostic[];
    disabled?: CodeActionDisabled;
    edit?: WorkspaceEdit;
    isPreferred?: boolean;
    kind?: string;
    tags?: 1[];
    title: string;
}

Properties

command?: Command

A command this code action executes. If a code action provides an edit and a command, first the edit is executed and then the command.

data?: any

A data entry field that is preserved on a code action between a textDocument/codeAction and a codeAction/resolve request.

3.16.0

diagnostics?: Diagnostic[]

The diagnostics that this code action resolves.

Marks that the code action cannot currently be applied.

Clients should follow the following guidelines regarding disabled code actions:

  • Disabled code actions are not shown in automatic lightbulbs code action menus.

  • Disabled actions are shown as faded out in the code action menu when the user requests a more specific type of code action, such as refactorings.

  • If the user has a keybinding that auto applies a code action and only disabled code actions are returned, the client should show the user an error message with reason in the editor.

3.16.0

The workspace edit this code action performs.

isPreferred?: boolean

Marks this as a preferred action. Preferred actions are used by the auto fix command and can be targeted by keybindings.

A quick fix should be marked preferred if it properly addresses the underlying error. A refactoring should be marked preferred if it is the most reasonable choice of actions to take.

3.15.0

kind?: string

The kind of the code action.

Used to filter code actions.

tags?: 1[]

Tags for this code action.

3.18.0 - proposed

title: string

A short, human-readable, title for this code action.