: Learning GNU Emacs, 3rd Edition

6.9 Executing Macros on a Region

6.9 Executing Macros on a Region

A special command lets you execute a macro on each line in a region. How frequently do you encounter an email with text that you want to yank, but that is quoted several indentation levels? Of course, we can think of several ways to delete the indentation quickly, but a line-oriented macro is a quick approach too. You define the macro and execute it on a region by typing C-x C-k r (for apply-macro-to-region-lines). Remember that earlier we said that macros should set themselves up to repeat? This command is different because it expects to work on one line at a time. You don't want to set it up to repeat by moving to the next line; it does that automatically.

Table 6-5 shows a quick line-oriented macro that deletes indentation marks from text quoted in an email or newsgroup message.

Table6-5.Macro for deleting indentation marks

Keystrokes Action
F3 Start the macro definition.
C-a Move to the beginning of the line.
M-f Move forward one word.
M-b Move to the beginning of this word.
C-Space Set the mark.
C-a Move to the beginning of the line.
C-w Delete the extraneous indentation characters.
F4 End the macro definition.

Initial state:

Text indented at various levels (Mac OS X).

Mark the text as a region, move to the beginning of the region, then type: C-x C-k r

Indentation is deleted (Mac OS X).

: 0.844. /Cache: 3 / 1