## Redo

### Description

Optional. Fired when a custom command is being redone. The return value is ignored.

Note | This callback is only supported in the C++ API (no support for scripting).

### Applies To

Custom Commands implemented with the C++ API.

### Syntax

    CStatus <command_name>_Redo( CRef& in_context )
    {
            ...
    }

<command_name> is the name specified in the call to PluginRegistrar.RegisterCommand, with any spaces converted to underscores.

### Parameters

Parameter | Language | Type | Description
--- | --- | --- | ---
| C++ | CRef& | A reference to the Context object. Context::GetSource returns the Command.

### Context Attributes

Attribute | Description
--- | ---
UndoRedoData | Allows you to retrieve the action to redo from the stack. See Undoing and Redoing Custom Commands.

### Examples

    // Taken from the SimpleUndoRedoCommand example (for the complete example,
    // click the link in the See Also section below)
    SICALLBACK SimpleUndoRedoCommand_Redo( CRef& in_ctxt )
    {
            Context ctxt( in_ctxt );

            CMoveViewTask* p = (CMoveViewTask*)(CValue::siPtrType)ctxt.GetAttribute(L"UndoRedoData");
            p->Redo( );

            return CStatus::OK;
    }

### See Also

- Command Callbacks
- Execute (Command)
- Init (Command)
- Undo
- TermUndoRedo
- Custom Command Examples