Next: Invocation Macros, Previous: Creating User Keys, Up: Programming

### 18.2 Programming with Keyboard Macros

The easiest way to “program” the Emacs Calculator is to use standard keyboard macros. Press `C-x (` to begin recording a macro. From this point on, keystrokes you type will be saved away as well as performing their usual functions. Press `C-x )` to end recording. Press shift-`X` (or the standard Emacs key sequence `C-x e`) to execute your keyboard macro by replaying the recorded keystrokes. See Keyboard Macros, for further information.

When you use `X` to invoke a keyboard macro, the entire macro is treated as a single command by the undo and trail features. The stack display buffer is not updated during macro execution, but is instead fixed up once the macro completes. Thus, commands defined with keyboard macros are convenient and efficient. The `C-x e` command, on the other hand, invokes the keyboard macro with no special treatment: Each command in the macro will record its own undo information and trail entry, and update the stack buffer accordingly. If your macro uses features outside of Calc's control to operate on the contents of the Calc stack buffer, or if it includes Undo, Redo, or last-arguments commands, you must use `C-x e` to make sure the buffer and undo list are up-to-date at all times. You could also consider using `K` (`calc-keep-args`) instead of `M-<RET>` (`calc-last-args`).

Calc extends the standard Emacs keyboard macros in several ways. Keyboard macros can be used to create user-defined commands. Keyboard macros can include conditional and iteration structures, somewhat analogous to those provided by a traditional programmable calculator.