]> code.delx.au - gnu-emacs/blob - man/custom.texi
*** empty log message ***
[gnu-emacs] / man / custom.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 86, 87, 93-95, 97, 2000 Free Software Foundation, Inc.
3 @c See file emacs.texi for copying conditions.
4 @node Customization, Quitting, Amusements, Top
5 @chapter Customization
6 @cindex customization
7
8 This chapter talks about various topics relevant to adapting the
9 behavior of Emacs in minor ways. See @cite{The Emacs Lisp Reference
10 Manual} for how to make more far-reaching changes.
11
12 All kinds of customization affect only the particular Emacs session
13 that you do them in. They are completely lost when you kill the Emacs
14 session, and have no effect on other Emacs sessions you may run at the
15 same time or later. The only way an Emacs session can affect anything
16 outside of it is by writing a file; in particular, the only way to make
17 a customization ``permanent'' is to put something in your @file{.emacs}
18 file or other appropriate file to do the customization in each session.
19 @xref{Init File}.
20
21 @menu
22 * Minor Modes:: Each minor mode is one feature you can turn on
23 independently of any others.
24 * Variables:: Many Emacs commands examine Emacs variables
25 to decide what to do; by setting variables,
26 you can control their functioning.
27 * Keyboard Macros:: A keyboard macro records a sequence of
28 keystrokes to be replayed with a single
29 command.
30 * Key Bindings:: The keymaps say what command each key runs.
31 By changing them, you can "redefine keys".
32 * Keyboard Translations::
33 If your keyboard passes an undesired code
34 for a key, you can tell Emacs to
35 substitute another code.
36 * Syntax:: The syntax table controls how words and
37 expressions are parsed.
38 * Init File:: How to write common customizations in the
39 @file{.emacs} file.
40 @end menu
41
42 @node Minor Modes
43 @section Minor Modes
44 @cindex minor modes
45 @cindex mode, minor
46
47 Minor modes are optional features which you can turn on or off. For
48 example, Auto Fill mode is a minor mode in which @key{SPC} breaks lines
49 between words as you type. All the minor modes are independent of each
50 other and of the selected major mode. Most minor modes say in the mode
51 line when they are on; for example, @samp{Fill} in the mode line means
52 that Auto Fill mode is on.
53
54 Append @code{-mode} to the name of a minor mode to get the name of a
55 command function that turns the mode on or off. Thus, the command to
56 enable or disable Auto Fill mode is called @kbd{M-x auto-fill-mode}. These
57 commands are usually invoked with @kbd{M-x}, but you can bind keys to them
58 if you wish. With no argument, the function turns the mode on if it was
59 off and off if it was on. This is known as @dfn{toggling}. A positive
60 argument always turns the mode on, and an explicit zero argument or a
61 negative argument always turns it off.
62
63 Enabling or disabling some minor modes applies only to the current
64 buffer; each buffer is independent of the other buffers. Therefore, you
65 can enable the mode in particular buffers and disable it in others. The
66 per-buffer minor modes include Abbrev mode, Auto Fill mode, Auto Save
67 mode, Font-Lock mode, Hscroll mode, ISO Accents mode, Outline minor
68 mode, Overwrite mode, and Binary Overwrite mode.
69
70 Abbrev mode allows you to define abbreviations that automatically expand
71 as you type them. For example, @samp{amd} might expand to @samp{abbrev
72 mode}. @xref{Abbrevs}, for full information.
73
74 Auto Fill mode allows you to enter filled text without breaking lines
75 explicitly. Emacs inserts newlines as necessary to prevent lines from
76 becoming too long. @xref{Filling}.
77
78 Auto Save mode causes the contents of a buffer to be saved
79 periodically to reduce the amount of work you can lose in case of a
80 system crash. @xref{Auto Save}.
81
82 Enriched mode enables editing and saving of formatted text.
83 @xref{Formatted Text}.
84
85 Flyspell mode automatically highlights misspelled words.
86 @xref{Spelling}.
87
88 Font-Lock mode automatically highlights certain textual units found in
89 programs, such as comments, strings, and function names being defined.
90 This requires a window system that can display multiple fonts.
91 @xref{Faces}.
92
93 Hscroll mode performs horizontal scrolling automatically
94 to keep point on the screen. @xref{Horizontal Scrolling}.
95
96 ISO Accents mode makes the characters @samp{`}, @samp{'}, @samp{"},
97 @samp{^}, @samp{/} and @samp{~} combine with the following letter, to
98 produce an accented letter in the ISO Latin-1 character set.
99 @xref{Single-Byte Character Support}.
100
101 Outline minor mode provides the same facilities as the major mode
102 called Outline mode; but since it is a minor mode instead, you can
103 combine it with any major mode. @xref{Outline Mode}.
104
105 @cindex Overwrite mode
106 @cindex mode, Overwrite
107 @findex overwrite-mode
108 @findex binary-overwrite-mode
109 Overwrite mode causes ordinary printing characters to replace existing
110 text instead of shoving it to the right. For example, if point is in
111 front of the @samp{B} in @samp{FOOBAR}, then in Overwrite mode typing a
112 @kbd{G} changes it to @samp{FOOGAR}, instead of producing @samp{FOOGBAR}
113 as usual. In Overwrite mode, the command @kbd{C-q} inserts the next
114 character whatever it may be, even if it is a digit---this gives you a
115 way to insert a character instead of replacing an existing character.
116
117 Binary Overwrite mode is a variant of Overwrite mode for editing
118 binary files; it treats newlines and tabs like other characters, so that
119 they overwrite other characters and can be overwritten by them.
120
121 The following minor modes normally apply to all buffers at once.
122 Since each is enabled or disabled by the value of a variable, you
123 @emph{can} set them differently for particular buffers, by explicitly
124 making the corresponding variables local in those buffers.
125 @xref{Locals}.
126
127 Icomplete mode displays an indication of available completions when
128 you are in the minibuffer and completion is active. @xref{Completion
129 Options}.
130
131 Line Number mode enables continuous display in the mode line of the
132 line number of point. @xref{Mode Line}.
133
134 Resize-Minibuffer mode makes the minibuffer expand as necessary to
135 hold the text that you put in it. @xref{Minibuffer Edit}.
136
137 Scroll Bar mode gives each window a scroll bar (@pxref{Scroll Bars}).
138 Menu Bar mode gives each frame a menu bar (@pxref{Menu Bars}). Both of
139 these modes are enabled by default when you use the X Window System.
140
141 In Transient Mark mode, every change in the buffer contents
142 ``deactivates'' the mark, so that commands that operate on the region
143 will get an error. This means you must either set the mark, or
144 explicitly ``reactivate'' it, before each command that uses the region.
145 The advantage of Transient Mark mode is that Emacs can display the
146 region highlighted (currently only when using X). @xref{Setting Mark}.
147
148 For most minor modes, the command name is also the name of a variable
149 which directly controls the mode. The mode is enabled whenever this
150 variable's value is non-@code{nil}, and the minor-mode command works by
151 setting the variable. For example, the command
152 @code{outline-minor-mode} works by setting the value of
153 @code{outline-minor-mode} as a variable; it is this variable that
154 directly turns Outline minor mode on and off. To check whether a given
155 minor mode works this way, use @kbd{C-h v} to ask for documentation on
156 the variable name.
157
158 These minor-mode variables provide a good way for Lisp programs to turn
159 minor modes on and off; they are also useful in a file's local variables
160 list. But please think twice before setting minor modes with a local
161 variables list, because most minor modes are matter of user
162 preference---other users editing the same file might not want the same
163 minor modes you prefer.
164
165 @node Variables
166 @section Variables
167 @cindex variable
168 @cindex option, user
169 @cindex user option
170
171 A @dfn{variable} is a Lisp symbol which has a value. The symbol's
172 name is also called the name of the variable. A variable name can
173 contain any characters that can appear in a file, but conventionally
174 variable names consist of words separated by hyphens. A variable can
175 have a documentation string which describes what kind of value it should
176 have and how the value will be used.
177
178 Lisp allows any variable to have any kind of value, but most variables
179 that Emacs uses require a value of a certain type. Often the value should
180 always be a string, or should always be a number. Sometimes we say that a
181 certain feature is turned on if a variable is ``non-@code{nil},'' meaning
182 that if the variable's value is @code{nil}, the feature is off, but the
183 feature is on for @emph{any} other value. The conventional value to use to
184 turn on the feature---since you have to pick one particular value when you
185 set the variable---is @code{t}.
186
187 Emacs uses many Lisp variables for internal record keeping, as any
188 Lisp program must, but the most interesting variables for you are the
189 ones that exist for the sake of customization. Emacs does not (usually)
190 change the values of these variables; instead, you set the values, and
191 thereby alter and control the behavior of certain Emacs commands. These
192 variables are called @dfn{user options}. Most user options are
193 documented in this manual, and appear in the Variable Index
194 (@pxref{Variable Index}).
195
196 One example of a variable which is a user option is @code{fill-column}, which
197 specifies the position of the right margin (as a number of characters from
198 the left margin) to be used by the fill commands (@pxref{Filling}).
199
200 @menu
201 * Examining:: Examining or setting one variable's value.
202 * Easy Customization::
203 Convenient and easy customization of variables.
204 * Hooks:: Hook variables let you specify programs for parts
205 of Emacs to run on particular occasions.
206 * Locals:: Per-buffer values of variables.
207 * File Variables:: How files can specify variable values.
208 @end menu
209
210 @node Examining
211 @subsection Examining and Setting Variables
212 @cindex setting variables
213
214 @table @kbd
215 @item C-h v @var{var} @key{RET}
216 Display the value and documentation of variable @var{var}
217 (@code{describe-variable}).
218 @item M-x set-variable @key{RET} @var{var} @key{RET} @var{value} @key{RET}
219 Change the value of variable @var{var} to @var{value}.
220 @end table
221
222 To examine the value of a single variable, use @kbd{C-h v}
223 (@code{describe-variable}), which reads a variable name using the
224 minibuffer, with completion. It displays both the value and the
225 documentation of the variable. For example,
226
227 @example
228 C-h v fill-column @key{RET}
229 @end example
230
231 @noindent
232 displays something like this:
233
234 @smallexample
235 fill-column's value is 75
236
237 Documentation:
238 *Column beyond which automatic line-wrapping should happen.
239 Automatically becomes buffer-local when set in any fashion.
240 @end smallexample
241
242 @noindent
243 The star at the beginning of the documentation indicates that this
244 variable is a user option. @kbd{C-h v} is not restricted to user
245 options; it allows any variable name.
246
247 @findex set-variable
248 The most convenient way to set a specific user option is with @kbd{M-x
249 set-variable}. This reads the variable name with the minibuffer (with
250 completion), and then reads a Lisp expression for the new value using
251 the minibuffer a second time. For example,
252
253 @example
254 M-x set-variable @key{RET} fill-column @key{RET} 75 @key{RET}
255 @end example
256
257 @noindent
258 sets @code{fill-column} to 75.
259
260 @kbd{M-x set-variable} is limited to user option variables, but you can
261 set any variable with a Lisp expression, using the function @code{setq}.
262 Here is a @code{setq} expression to set @code{fill-column}:
263
264 @example
265 (setq fill-column 75)
266 @end example
267
268 To execute an expression like this one, go to the @samp{*scratch*}
269 buffer, type in the expression, and then type @kbd{C-j}. @xref{Lisp
270 Interaction}.
271
272 Setting variables, like all means of customizing Emacs except where
273 otherwise stated, affects only the current Emacs session.
274
275 @node Easy Customization
276 @subsection Easy Customization Interface
277
278 @findex customize
279 @cindex customization buffer
280 A convenient way to find the user option variables that you want to
281 change, and then change them, is with @kbd{M-x customize}. This command
282 creates a @dfn{customization buffer} with which you can browse through
283 the Emacs user options in a logically organized structure, then edit and
284 set their values. You can also use the customization buffer to save
285 settings permanently. (Not all Emacs user options are included in this
286 structure as of yet, but we are adding the rest.)
287
288 @menu
289 * Groups: Customization Groups.
290 How options are classified in a structure.
291 * Changing an Option:: How to edit a value and set an option.
292 * Face Customization:: How to edit the attributes of a face.
293 * Specific Customization:: Making a customization buffer for specific
294 options, faces, or groups.
295 @end menu
296
297 @node Customization Groups
298 @subsubsection Customization Groups
299 @cindex customization groups
300
301 For customization purposes, user options are organized into
302 @dfn{groups} to help you find them. Groups are collected into bigger
303 groups, all the way up to a master group called @code{Emacs}.
304
305 @kbd{M-x customize} creates a customization buffer that shows the
306 top-level @code{Emacs} group and the second-level groups immediately
307 under it. It looks like this, in part:
308
309 @smallexample
310 /- Emacs group: ---------------------------------------------------\
311 [State]: visible group members are all at standard settings.
312 Customization of the One True Editor.
313 See also [Manual].
314
315 Editing group: [Go to Group]
316 Basic text editing facilities.
317
318 External group: [Go to Group]
319 Interfacing to external utilities.
320
321 @var{more second-level groups}
322
323 \- Emacs group end ------------------------------------------------/
324
325 @end smallexample
326
327 @noindent
328 This says that the buffer displays the contents of the @code{Emacs}
329 group. The other groups are listed because they are its contents. But
330 they are listed differently, without indentation and dashes, because
331 @emph{their} contents are not included. Each group has a single-line
332 documentation string; the @code{Emacs} group also has a @samp{[State]}
333 line.
334
335 @cindex editable fields (customization buffer)
336 @cindex active fields (customization buffer)
337 Most of the text in the customization buffer is read-only, but it
338 typically includes some @dfn{editable fields} that you can edit. There
339 are also @dfn{active fields}; this means a field that does something
340 when you @dfn{invoke} it. To invoke an active field, either click on it
341 with @kbd{Mouse-1}, or move point to it and type @key{RET}.
342
343 For example, the phrase @samp{[Go to Group]} that appears in a
344 second-level group is an active field. Invoking the @samp{[Go to
345 Group]} field for a group creates a new customization buffer, which
346 shows that group and its contents. This field is a kind of hypertext
347 link to another group.
348
349 The @code{Emacs} group does not include any user options itself, but
350 other groups do. By examining various groups, you will eventually find
351 the options and faces that belong to the feature you are interested in
352 customizing. Then you can use the customization buffer to set them.
353
354 @findex customize-browse
355 You can view the structure of customization groups on a larger scale
356 with @kbd{M-x customize-browse}. This command creates a special kind of
357 customization buffer which shows only the names of the groups (and
358 options and faces), and their structure.
359
360 In this buffer, you can show the contents of a group by invoking
361 @samp{[+]}. When the group contents are visible, this button changes to
362 @samp{[-]}; invoking that hides the group contents.
363
364 Each group, option or face name in this buffer has an active field
365 which says @samp{[Group]}, @samp{[Option]} or @samp{[Face]}. Invoking
366 that active field creates an ordinary customization buffer showing just
367 that group and its contents, just that option, or just that face.
368 This is the way to set values in it.
369
370 @node Changing an Option
371 @subsubsection Changing an Option
372
373 Here is an example of what a user option looks like in the
374 customization buffer:
375
376 @smallexample
377 Kill Ring Max: [Hide] 30
378 [State]: this option is unchanged from its standard setting.
379 Maximum length of kill ring before oldest elements are thrown away.
380 @end smallexample
381
382 The text following @samp{[Hide]}, @samp{30} in this case, indicates
383 the current value of the option. If you see @samp{[Show]} instead of
384 @samp{[Hide]}, it means that the value is hidden; the customization
385 buffer initially hides values that take up several lines. Invoke
386 @samp{[Show]} to show the value.
387
388 The line after the option name indicates the @dfn{customization state}
389 of the option: in the example above, it says you have not changed the
390 option yet. The word @samp{[State]} at the beginning of this line is
391 active; you can get a menu of various operations by invoking it with
392 @kbd{Mouse-1} or @key{RET}. These operations are essential for
393 customizing the variable.
394
395 The line after the @samp{[State]} line displays the beginning of the
396 option's documentation string. If there are more lines of
397 documentation, this line ends with @samp{[More]}; invoke this to show
398 the full documentation string.
399
400 To enter a new value for @samp{Kill Ring Max}, move point to the value
401 and edit it textually. For example, you can type @kbd{M-d}, then insert
402 another number.
403
404 When you begin to alter the text, you will see the @samp{[State]} line
405 change to say that you have edited the value:
406
407 @smallexample
408 [State]: you have edited the value as text, but not set the option.
409 @end smallexample
410
411 @cindex setting option value
412 Editing the value does not actually set the option variable. To do
413 that, you must @dfn{set} the option. To do this, invoke the word
414 @samp{[State]} and choose @samp{Set for Current Session}.
415
416 The state of the option changes visibly when you set it:
417
418 @smallexample
419 [State]: you have set this option, but not saved it for future sessions.
420 @end smallexample
421
422 You don't have to worry about specifying a value that is not valid;
423 setting the option checks for validity and will not really install an
424 unacceptable value.
425
426 @kindex M-TAB @r{(customization buffer)}
427 @findex widget-complete
428 While editing a value or field that is a file name, directory name,
429 command name, or anything else for which completion is defined, you can
430 type @kbd{M-@key{TAB}} (@code{widget-complete}) to do completion.
431
432 Some options have a small fixed set of possible legitimate values.
433 These options don't let you edit the value textually. Instead, an
434 active field @samp{[Value Menu]} appears before the value; invoke this
435 field to edit the value. For a boolean ``on or off'' value, the active
436 field says @samp{[Toggle]}, and it changes to the other value.
437 @samp{[Value Menu]} and @samp{[Toggle]} edit the buffer; the changes
438 take effect when you use the @samp{Set for Current Session} operation.
439
440 Some options have values with complex structure. For example, the
441 value of @code{load-path} is a list of directories. Here is how it
442 appears in the customization buffer:
443
444 @smallexample
445 Load Path:
446 [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/site-lisp
447 [INS] [DEL] [Current dir?]: /usr/local/share/emacs/site-lisp
448 [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/leim
449 [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/lisp
450 [INS] [DEL] [Current dir?]: /build/emacs/e20/lisp
451 [INS] [DEL] [Current dir?]: /build/emacs/e20/lisp/gnus
452 [INS]
453 [State]: this item has been changed outside the customization buffer.
454 List of directories to search for files to load....
455 @end smallexample
456
457 @noindent
458 Each directory in the list appears on a separate line, and each line has
459 several editable or active fields.
460
461 You can edit any of the directory names. To delete a directory from
462 the list, invoke @samp{[DEL]} on that line. To insert a new directory in
463 the list, invoke @samp{[INS]} at the point where you want to insert it.
464
465 You can also invoke @samp{[Current dir?]} to switch between including
466 a specific named directory in the path, and including @code{nil} in the
467 path. (@code{nil} in a search path means ``try the current
468 directory.'')
469
470 @kindex TAB @r{(customization buffer)}
471 @kindex S-TAB @r{(customization buffer)}
472 @findex widget-forward
473 @findex widget-backward
474 Two special commands, @key{TAB} and @kbd{S-@key{TAB}}, are useful for
475 moving through the customization buffer. @key{TAB}
476 (@code{widget-forward}) moves forward to the next active or editable
477 field; @kbd{S-@key{TAB}} (@code{widget-backward}) moves backward to the
478 previous active or editable field.
479
480 Typing @key{RET} on an editable field also moves forward, just like
481 @key{TAB}. The reason for this is that people have a tendency to type
482 @key{RET} when they are finished editing a field. If you have occasion
483 to insert a newline in an editable field, use @kbd{C-o} or @kbd{C-q
484 C-j}.
485
486 @cindex saving option value
487 Setting the option changes its value in the current Emacs session;
488 @dfn{saving} the value changes it for future sessions as well. This
489 works by writing code into your @file{~/.emacs} file so as to set the
490 option variable again each time you start Emacs. To save the option,
491 invoke @samp{[State]} and select the @samp{Save for Future Sessions}
492 operation.
493
494 You can also restore the option to its standard value by invoking
495 @samp{[State]} and selecting the @samp{Erase Customization}
496 operation. There are actually three reset operations:
497
498 @table @samp
499 @item Reset
500 If you have made some modifications and not yet set the option,
501 this restores the text in the customization buffer to match
502 the actual value.
503
504 @item Reset to Saved
505 This restores the value of the option to the last saved value,
506 and updates the text accordingly.
507
508 @item Erase Customization
509 This sets the option to its standard value, and updates the text
510 accordingly. This also eliminates any saved value for the option,
511 so that you will get the standard value in future Emacs sessions.
512 @end table
513
514 @cindex comments on customized options
515 Sometimes it is useful to record a comment on the value of an option
516 which you have customized. Use the @samp{Add Comment} item from the
517 @samp{[State]} menu to provide a field in which to edit a comment which
518 will be saved and redisplayed if you re-customize the option later.
519
520 The state of a group indicates whether anything in that group has been
521 edited, set or saved. You can select @samp{Set for Current Session},
522 @samp{Save for Future Sessions} and the various kinds of @samp{Reset}
523 operation for the group; these operations on the group apply to all
524 options in the group and its subgroups.
525
526 Near the top of the customization buffer there are two lines
527 containing several active fields:
528
529 @smallexample
530 [Set for Current Session] [Save for Future Sessions]
531 [Reset] [Reset to Saved] [Erase Customization] [Finish]
532 @end smallexample
533
534 @vindex Custom-buffer-done
535 @noindent
536 Invoking @samp{[Finish]} either buries or kills this customization
537 buffer according to the setting of the option @code{Custom-buffer-done};
538 the default is to bury the buffer.
539 Each of the other fields performs an operation---set, save or reset---on
540 each of the items in the buffer that could meaningfully be set, saved or
541 reset.
542
543 @node Face Customization
544 @subsubsection Customizing Faces
545 @cindex customizing faces
546 @cindex bold font
547 @cindex italic font
548 @cindex fonts and faces
549
550 In addition to user options, some customization groups also include
551 faces. When you show the contents of a group, both the user options and
552 the faces in the group appear in the customization buffer. Here is an
553 example of how a face looks:
554
555 @smallexample
556 Custom Changed Face: (sample)
557 [State]: this face is unchanged from its standard setting.
558 Face used when the customize item has been changed.
559 Attributes: [ ] Bold: [toggle] off
560 [X] Italic: [toggle] on
561 [ ] Underline: [toggle] off
562 [ ] Inverse-Video: [toggle] on
563 [ ] Foreground: black (sample)
564 [ ] Background: white (sample)
565 [ ] Stipple:
566 @end smallexample
567
568 Each face attribute has its own line. The @samp{[@var{x}]} field
569 before the attribute name indicates whether the attribute is
570 @dfn{enabled}; @samp{X} means that it is. You can enable or disable the
571 attribute by invoking that field. When the attribute is enabled, you
572 can change the attribute value in the usual ways.
573
574 On a black-and-white display, the colors you can use for the
575 background are @samp{black}, @samp{white}, @samp{gray}, @samp{gray1},
576 and @samp{gray3}. Emacs supports these shades of gray by using
577 background stipple patterns instead of a color.
578
579 Setting, saving and resetting a face work like the same operations for
580 options (@pxref{Changing an Option}).
581
582 A face can specify different appearances for different types of
583 display. For example, a face can make text red on a color display, but
584 use a bold font on a monochrome display. To specify multiple
585 appearances for a face, select @samp{Show Display Types} in the menu you
586 get from invoking @samp{[State]}.
587
588 @findex modify-face
589 Another more basic way to set the attributes of a specific face is
590 with @kbd{M-x modify-face}. This command reads the name of a face, then
591 reads the attributes one by one. For the color and stipple attributes,
592 the attribute's current value is the default---type just @key{RET} if
593 you don't want to change that attribute. Type @samp{none} if you want
594 to clear out the attribute.
595
596 @node Specific Customization
597 @subsubsection Customizing Specific Items
598
599 Instead of finding the options you want to change by moving down
600 through the structure of groups, you can specify the particular option,
601 face or group that you want to customize.
602
603 @table @kbd
604 @item M-x customize-option @key{RET} @var{option} @key{RET}
605 Set up a customization buffer with just one option, @var{option}.
606 @item M-x customize-face @key{RET} @var{face} @key{RET}
607 Set up a customization buffer with just one face, @var{face}.
608 @item M-x customize-group @key{RET} @var{group} @key{RET}
609 Set up a customization buffer with just one group, @var{group}.
610 @item M-x customize-apropos @key{RET} @var{regexp} @key{RET}
611 Set up a customization buffer with all the options, faces and groups
612 that match @var{regexp}.
613 @item M-x customize-changed-options @key{RET} @var{version} @key{RET}
614 Set up a customization buffer with all the options, faces and groups
615 whose meaning has changed since Emacs version @var{version}.
616 @item M-x customize-saved
617 Set up a customization buffer containing all options and faces that you
618 have saved with customization buffers.
619 @item M-x customize-customized
620 Set up a customization buffer containing all options and faces that you
621 have customized but not saved.
622 @end table
623
624 @findex customize-option
625 If you want to alter a particular user option variable with the
626 customization buffer, and you know its name, you can use the command
627 @kbd{M-x customize-option} and specify the option name. This sets up
628 the customization buffer with just one option---the one that you asked
629 for. Editing, setting and saving the value work as described above, but
630 only for the specified option.
631
632 @findex customize-face
633 Likewise, you can modify a specific face, chosen by name, using
634 @kbd{M-x customize-face}.
635
636 @findex customize-group
637 You can also set up the customization buffer with a specific group,
638 using @kbd{M-x customize-group}. The immediate contents of the chosen
639 group, including option variables, faces, and other groups, all appear
640 as well. However, these subgroups' own contents start out hidden. You
641 can show their contents in the usual way, by invoking @samp{[Show]}.
642
643 @findex customize-apropos
644 To control more precisely what to customize, you can use @kbd{M-x
645 customize-apropos}. You specify a regular expression as argument; then
646 all options, faces and groups whose names match this regular expression
647 are set up in the customization buffer. If you specify an empty regular
648 expression, this includes @emph{all} groups, options and faces in the
649 customization buffer (but that takes a long time).
650
651 @findex customize-changed-options
652 When you upgrade to a new Emacs version, you might want to customize
653 new options and options whose meanings or default values have changed.
654 To do this, use @kbd{M-x customize-changed-options} and specify a
655 previous Emacs version number using the minibuffer. It creates a
656 customization buffer which shows all the options (and groups) whose
657 definitions have been changed since the specified version.
658
659 @findex customize-saved
660 @findex customize-customized
661 If you change option values and then decide the change was a mistake,
662 you can use two special commands to revisit your previous changes. Use
663 @kbd{customize-saved} to look at the options and faces that you have
664 saved. Use @kbd{M-x customize-customized} to look at the options and
665 faces that you have set but not saved.
666
667 @node Hooks
668 @subsection Hooks
669 @cindex hook
670 @cindex hook function
671 @cindex running a hook
672
673 @dfn{Hooks} are an important mechanism for customization of Emacs. A
674 hook is a Lisp variable which holds a list of functions, to be called on
675 some well-defined occasion. (This is called @dfn{running the hook}.)
676 The individual functions in the list are called the @dfn{hook functions}
677 of the hook. With rare exceptions, hooks in Emacs are empty when Emacs
678 starts up, so the only hook functions in any given hook are the ones you
679 explicitly put there as customization.
680
681 Most major modes run one or more @dfn{mode hooks} as the last step of
682 initialization. This makes it easy for you to customize the behavior of
683 the mode, by setting up a hook function to override the local variable
684 assignments already made by the mode. But hooks are also used in other
685 contexts. For example, the hook @code{suspend-hook} runs just before
686 Emacs suspends itself (@pxref{Exiting}).
687
688 @cindex normal hook
689 Most Emacs hooks are @dfn{normal hooks}. This means that running the
690 hook operates by calling all the hook functions, unconditionally, with
691 no arguments. We have made an effort to keep most hooks normal so that
692 you can use them in a uniform way. Every variable in Emacs whose name
693 ends in @samp{-hook} is a normal hook.
694
695 @cindex abnormal hook
696 There are also a few @dfn{abnormal hooks}. These variables' names end
697 in @samp{-hooks} or @samp{-functions}, instead of @samp{-hook}. What
698 makes these hooks abnormal is that there is something peculiar about the
699 way its functions are called---perhaps they are given arguments, or
700 perhaps the values they return are used in some way. For example,
701 @code{find-file-not-found-hooks} (@pxref{Visiting}) is abnormal because
702 as soon as one hook function returns a non-@code{nil} value, the rest
703 are not called at all. The documentation of each abnormal hook variable
704 explains in detail what is peculiar about it.
705
706 The recommended way to add a hook function to a hook (either normal or
707 abnormal) is by calling @code{add-hook}. You can use any valid Lisp
708 function as the hook function, provided it can handle the proper number
709 of arguments (zero arguments, in the case of a normal hook). Of course,
710 not every Lisp function is @emph{useful} in any particular hook.
711
712 For example, here's how to set up a hook to turn on Auto Fill mode
713 when entering Text mode and other modes based on Text mode:
714
715 @example
716 (add-hook 'text-mode-hook 'turn-on-auto-fill)
717 @end example
718
719 The next example shows how to use a hook to customize the indentation
720 of C code. (People often have strong personal preferences for one
721 format compared to another.) Here the hook function is an anonymous
722 lambda expression.
723
724 @example
725 @group
726 (setq my-c-style
727 '((c-comment-only-line-offset . 4)
728 @end group
729 @group
730 (c-cleanup-list . (scope-operator
731 empty-defun-braces
732 defun-close-semi))
733 @end group
734 @group
735 (c-offsets-alist . ((arglist-close . c-lineup-arglist)
736 (substatement-open . 0)))))
737 @end group
738
739 @group
740 (add-hook 'c-mode-common-hook
741 (function (lambda ()
742 (c-add-style "my-style" my-c-style t))))
743 @end group
744 @end example
745
746 It is best to design your hook functions so that the order in which
747 they are executed does not matter. Any dependence on the order is
748 ``asking for trouble.'' However, the order is predictable: the most
749 recently added hook functions are executed first.
750
751 @node Locals
752 @subsection Local Variables
753
754 @table @kbd
755 @item M-x make-local-variable @key{RET} @var{var} @key{RET}
756 Make variable @var{var} have a local value in the current buffer.
757 @item M-x kill-local-variable @key{RET} @var{var} @key{RET}
758 Make variable @var{var} use its global value in the current buffer.
759 @item M-x make-variable-buffer-local @key{RET} @var{var} @key{RET}
760 Mark variable @var{var} so that setting it will make it local to the
761 buffer that is current at that time.
762 @end table
763
764 @cindex local variables
765 Almost any variable can be made @dfn{local} to a specific Emacs
766 buffer. This means that its value in that buffer is independent of its
767 value in other buffers. A few variables are always local in every
768 buffer. Every other Emacs variable has a @dfn{global} value which is in
769 effect in all buffers that have not made the variable local.
770
771 @findex make-local-variable
772 @kbd{M-x make-local-variable} reads the name of a variable and makes it
773 local to the current buffer. Further changes in this buffer will not
774 affect others, and further changes in the global value will not affect this
775 buffer.
776
777 @findex make-variable-buffer-local
778 @cindex per-buffer variables
779 @kbd{M-x make-variable-buffer-local} reads the name of a variable and
780 changes the future behavior of the variable so that it will become local
781 automatically when it is set. More precisely, once a variable has been
782 marked in this way, the usual ways of setting the variable automatically
783 do @code{make-local-variable} first. We call such variables
784 @dfn{per-buffer} variables.
785
786 Major modes (@pxref{Major Modes}) always make variables local to the
787 buffer before setting the variables. This is why changing major modes
788 in one buffer has no effect on other buffers. Minor modes also work by
789 setting variables---normally, each minor mode has one controlling
790 variable which is non-@code{nil} when the mode is enabled (@pxref{Minor
791 Modes}). For most minor modes, the controlling variable is per buffer.
792
793 Emacs contains a number of variables that are always per-buffer.
794 These include @code{abbrev-mode}, @code{auto-fill-function},
795 @code{case-fold-search}, @code{comment-column}, @code{ctl-arrow},
796 @code{fill-column}, @code{fill-prefix}, @code{indent-tabs-mode},
797 @code{left-margin}, @code{mode-line-format}, @code{overwrite-mode},
798 @code{selective-display-ellipses}, @code{selective-display},
799 @code{tab-width}, and @code{truncate-lines}. Some other variables are
800 always local in every buffer, but they are used for internal
801 purposes.@refill
802
803 A few variables cannot be local to a buffer because they are always
804 local to each display instead (@pxref{Multiple Displays}). If you try to
805 make one of these variables buffer-local, you'll get an error message.
806
807 @findex kill-local-variable
808 @kbd{M-x kill-local-variable} reads the name of a variable and makes
809 it cease to be local to the current buffer. The global value of the
810 variable henceforth is in effect in this buffer. Setting the major mode
811 kills all the local variables of the buffer except for a few variables
812 specially marked as @dfn{permanent locals}.
813
814 @findex setq-default
815 To set the global value of a variable, regardless of whether the
816 variable has a local value in the current buffer, you can use the Lisp
817 construct @code{setq-default}. This construct is used just like
818 @code{setq}, but it sets variables' global values instead of their local
819 values (if any). When the current buffer does have a local value, the
820 new global value may not be visible until you switch to another buffer.
821 Here is an example:
822
823 @example
824 (setq-default fill-column 75)
825 @end example
826
827 @noindent
828 @code{setq-default} is the only way to set the global value of a variable
829 that has been marked with @code{make-variable-buffer-local}.
830
831 @findex default-value
832 Lisp programs can use @code{default-value} to look at a variable's
833 default value. This function takes a symbol as argument and returns its
834 default value. The argument is evaluated; usually you must quote it
835 explicitly. For example, here's how to obtain the default value of
836 @code{fill-column}:
837
838 @example
839 (default-value 'fill-column)
840 @end example
841
842 @node File Variables
843 @subsection Local Variables in Files
844 @cindex local variables in files
845 @cindex file local variables
846
847 A file can specify local variable values for use when you edit the
848 file with Emacs. Visiting the file checks for local variable
849 specifications; it automatically makes these variables local to the
850 buffer, and sets them to the values specified in the file.
851
852 There are two ways to specify local variable values: in the first
853 line, or with a local variables list. Here's how to specify them in the
854 first line:
855
856 @example
857 -*- mode: @var{modename}; @var{var}: @var{value}; @dots{} -*-
858 @end example
859
860 @noindent
861 You can specify any number of variables/value pairs in this way, each
862 pair with a colon and semicolon as shown above. @code{mode:
863 @var{modename};} specifies the major mode; this should come first in the
864 line. The @var{value}s are not evaluated; they are used literally.
865 Here is an example that specifies Lisp mode and sets two variables with
866 numeric values:
867
868 @smallexample
869 ;; -*-mode: Lisp; fill-column: 75; comment-column: 50; -*-
870 @end smallexample
871
872 You can also specify the coding system for a file in this way: just
873 specify a value for the ``variable'' named @code{coding}. The ``value''
874 must be a coding system name that Emacs recognizes. @xref{Coding
875 Systems}.
876
877 A @dfn{local variables list} goes near the end of the file, in the
878 last page. (It is often best to put it on a page by itself.) The local
879 variables list starts with a line containing the string @samp{Local
880 Variables:}, and ends with a line containing the string @samp{End:}. In
881 between come the variable names and values, one set per line, as
882 @samp{@var{variable}:@: @var{value}}. The @var{value}s are not
883 evaluated; they are used literally. If a file has both a local
884 variables list and a @samp{-*-} line, Emacs processes @emph{everything}
885 in the @samp{-*-} line first, and @emph{everything} in the local
886 variables list afterward.
887
888 Here is an example of a local variables list:
889
890 @example
891 ;;; Local Variables: ***
892 ;;; mode:lisp ***
893 ;;; comment-column:0 ***
894 ;;; comment-start: ";;; " ***
895 ;;; comment-end:"***" ***
896 ;;; End: ***
897 @end example
898
899 As you see, each line starts with the prefix @samp{;;; } and each line
900 ends with the suffix @samp{ ***}. Emacs recognizes these as the prefix
901 and suffix based on the first line of the list, by finding them
902 surrounding the magic string @samp{Local Variables:}; then it
903 automatically discards them from the other lines of the list.
904
905 The usual reason for using a prefix and/or suffix is to embed the
906 local variables list in a comment, so it won't confuse other programs
907 that the file is intended as input for. The example above is for a
908 language where comment lines start with @samp{;;; } and end with
909 @samp{***}; the local values for @code{comment-start} and
910 @code{comment-end} customize the rest of Emacs for this unusual syntax.
911 Don't use a prefix (or a suffix) if you don't need one.
912
913 Two ``variable names'' have special meanings in a local variables
914 list: a value for the variable @code{mode} really sets the major mode,
915 and a value for the variable @code{eval} is simply evaluated as an
916 expression and the value is ignored. @code{mode} and @code{eval} are
917 not real variables; setting variables named @code{mode} and @code{eval}
918 in any other context has no special meaning. If @code{mode} is used to
919 set a major mode, it should be the first ``variable'' in the list.
920
921 You can use the @code{mode} ``variable'' to set minor modes as well as
922 major modes; in fact, you can use it more than once, first to set the
923 major mode and then to set minor modes which are specific to particular
924 buffers. But most minor modes should not be specified in the file in
925 any fashion, because they represent user preferences.
926
927 For example, you may be tempted to try to turn on Auto Fill mode with
928 a local variable list. That is a mistake. The choice of Auto Fill mode
929 or not is a matter of individual taste, not a matter of the contents of
930 particular files. If you want to use Auto Fill, set up major mode hooks
931 with your @file{.emacs} file to turn it on (when appropriate) for you
932 alone (@pxref{Init File}). Don't use a local variable list to impose
933 your taste on everyone.
934
935 The start of the local variables list must be no more than 3000
936 characters from the end of the file, and must be in the last page if the
937 file is divided into pages. Otherwise, Emacs will not notice it is
938 there. The purpose of this rule is so that a stray @samp{Local
939 Variables:}@: not in the last page does not confuse Emacs, and so that
940 visiting a long file that is all one page and has no local variables
941 list need not take the time to search the whole file.
942
943 Use the command @code{normal-mode} to reset the local variables and
944 major mode of a buffer according to the file name and contents,
945 including the local variables list if any. @xref{Choosing Modes}.
946
947 @findex enable-local-variables
948 The variable @code{enable-local-variables} controls whether to process
949 local variables in files, and thus gives you a chance to override them.
950 Its default value is @code{t}, which means do process local variables in
951 files. If you set the value to @code{nil}, Emacs simply ignores local
952 variables in files. Any other value says to query you about each file
953 that has local variables, showing you the local variable specifications
954 so you can judge.
955
956 @findex enable-local-eval
957 The @code{eval} ``variable,'' and certain actual variables, create a
958 special risk; when you visit someone else's file, local variable
959 specifications for these could affect your Emacs in arbitrary ways.
960 Therefore, the option @code{enable-local-eval} controls whether Emacs
961 processes @code{eval} variables, as well variables with names that end
962 in @samp{-hook}, @samp{-hooks}, @samp{-function} or @samp{-functions},
963 and certain other variables. The three possibilities for the option's
964 value are @code{t}, @code{nil}, and anything else, just as for
965 @code{enable-local-variables}. The default is @code{maybe}, which is
966 neither @code{t} nor @code{nil}, so normally Emacs does ask for
967 confirmation about file settings for these variables.
968
969 @node Keyboard Macros
970 @section Keyboard Macros
971
972 @cindex defining keyboard macros
973 @cindex keyboard macro
974 A @dfn{keyboard macro} is a command defined by the user to stand for
975 another sequence of keys. For example, if you discover that you are
976 about to type @kbd{C-n C-d} forty times, you can speed your work by
977 defining a keyboard macro to do @kbd{C-n C-d} and calling it with a
978 repeat count of forty.
979
980 @c widecommands
981 @table @kbd
982 @item C-x (
983 Start defining a keyboard macro (@code{start-kbd-macro}).
984 @item C-x )
985 End the definition of a keyboard macro (@code{end-kbd-macro}).
986 @item C-x e
987 Execute the most recent keyboard macro (@code{call-last-kbd-macro}).
988 @item C-u C-x (
989 Re-execute last keyboard macro, then add more keys to its definition.
990 @item C-x q
991 When this point is reached during macro execution, ask for confirmation
992 (@code{kbd-macro-query}).
993 @item M-x name-last-kbd-macro
994 Give a command name (for the duration of the session) to the most
995 recently defined keyboard macro.
996 @item M-x insert-kbd-macro
997 Insert in the buffer a keyboard macro's definition, as Lisp code.
998 @item C-x C-k
999 Edit a previously defined keyboard macro (@code{edit-kbd-macro}).
1000 @item M-x apply-macro-to-region-lines
1001 Run the last keyboard macro on each complete line in the region.
1002 @end table
1003
1004 Keyboard macros differ from ordinary Emacs commands in that they are
1005 written in the Emacs command language rather than in Lisp. This makes it
1006 easier for the novice to write them, and makes them more convenient as
1007 temporary hacks. However, the Emacs command language is not powerful
1008 enough as a programming language to be useful for writing anything
1009 intelligent or general. For such things, Lisp must be used.
1010
1011 You define a keyboard macro while executing the commands which are the
1012 definition. Put differently, as you define a keyboard macro, the
1013 definition is being executed for the first time. This way, you can see
1014 what the effects of your commands are, so that you don't have to figure
1015 them out in your head. When you are finished, the keyboard macro is
1016 defined and also has been, in effect, executed once. You can then do the
1017 whole thing over again by invoking the macro.
1018
1019 @menu
1020 * Basic Kbd Macro:: Defining and running keyboard macros.
1021 * Save Kbd Macro:: Giving keyboard macros names; saving them in files.
1022 * Kbd Macro Query:: Making keyboard macros do different things each time.
1023 @end menu
1024
1025 @node Basic Kbd Macro
1026 @subsection Basic Use
1027
1028 @kindex C-x (
1029 @kindex C-x )
1030 @kindex C-x e
1031 @findex start-kbd-macro
1032 @findex end-kbd-macro
1033 @findex call-last-kbd-macro
1034 To start defining a keyboard macro, type the @kbd{C-x (} command
1035 (@code{start-kbd-macro}). From then on, your keys continue to be
1036 executed, but also become part of the definition of the macro. @samp{Def}
1037 appears in the mode line to remind you of what is going on. When you are
1038 finished, the @kbd{C-x )} command (@code{end-kbd-macro}) terminates the
1039 definition (without becoming part of it!). For example,
1040
1041 @example
1042 C-x ( M-f foo C-x )
1043 @end example
1044
1045 @noindent
1046 defines a macro to move forward a word and then insert @samp{foo}.
1047
1048 The macro thus defined can be invoked again with the @kbd{C-x e}
1049 command (@code{call-last-kbd-macro}), which may be given a repeat count
1050 as a numeric argument to execute the macro many times. @kbd{C-x )} can
1051 also be given a repeat count as an argument, in which case it repeats
1052 the macro that many times right after defining it, but defining the
1053 macro counts as the first repetition (since it is executed as you define
1054 it). Therefore, giving @kbd{C-x )} an argument of 4 executes the macro
1055 immediately 3 additional times. An argument of zero to @kbd{C-x e} or
1056 @kbd{C-x )} means repeat the macro indefinitely (until it gets an error
1057 or you type @kbd{C-g} or, on MS-DOS, @kbd{C-@key{BREAK}}).
1058
1059 If you wish to repeat an operation at regularly spaced places in the
1060 text, define a macro and include as part of the macro the commands to move
1061 to the next place you want to use it. For example, if you want to change
1062 each line, you should position point at the start of a line, and define a
1063 macro to change that line and leave point at the start of the next line.
1064 Then repeating the macro will operate on successive lines.
1065
1066 After you have terminated the definition of a keyboard macro, you can add
1067 to the end of its definition by typing @kbd{C-u C-x (}. This is equivalent
1068 to plain @kbd{C-x (} followed by retyping the whole definition so far. As
1069 a consequence it re-executes the macro as previously defined.
1070
1071 You can use function keys in a keyboard macro, just like keyboard
1072 keys. You can even use mouse events, but be careful about that: when
1073 the macro replays the mouse event, it uses the original mouse position
1074 of that event, the position that the mouse had while you were defining
1075 the macro. The effect of this may be hard to predict. (Using the
1076 current mouse position would be even less predictable.)
1077
1078 One thing that doesn't always work well in a keyboard macro is the
1079 command @kbd{C-M-c} (@code{exit-recursive-edit}). When this command
1080 exits a recursive edit that started within the macro, it works as you'd
1081 expect. But if it exits a recursive edit that started before you
1082 invoked the keyboard macro, it also necessarily exits the keyboard macro
1083 as part of the process.
1084
1085 @findex edit-kbd-macro
1086 @kindex C-x C-k
1087 You can edit a keyboard macro already defined by typing @kbd{C-x C-k}
1088 (@code{edit-kbd-macro}). Follow that with the keyboard input that you
1089 would use to invoke the macro---@kbd{C-x e} or @kbd{M-x @var{name}} or
1090 some other key sequence. This formats the macro definition in a buffer
1091 and enters a specialized major mode for editing it. Type @kbd{C-h m}
1092 once in that buffer to display details of how to edit the macro. When
1093 you are finished editing, type @kbd{C-c C-c}.
1094
1095 @findex apply-macro-to-region-lines
1096 The command @kbd{M-x apply-macro-to-region-lines} repeats the last
1097 defined keyboard macro on each complete line within the current region.
1098 It does this line by line, by moving point to the beginning of the line
1099 and then executing the macro.
1100
1101 @node Save Kbd Macro
1102 @subsection Naming and Saving Keyboard Macros
1103
1104 @cindex saving keyboard macros
1105 @findex name-last-kbd-macro
1106 If you wish to save a keyboard macro for longer than until you define the
1107 next one, you must give it a name using @kbd{M-x name-last-kbd-macro}.
1108 This reads a name as an argument using the minibuffer and defines that name
1109 to execute the macro. The macro name is a Lisp symbol, and defining it in
1110 this way makes it a valid command name for calling with @kbd{M-x} or for
1111 binding a key to with @code{global-set-key} (@pxref{Keymaps}). If you
1112 specify a name that has a prior definition other than another keyboard
1113 macro, an error message is printed and nothing is changed.
1114
1115 @findex insert-kbd-macro
1116 Once a macro has a command name, you can save its definition in a file.
1117 Then it can be used in another editing session. First, visit the file
1118 you want to save the definition in. Then use this command:
1119
1120 @example
1121 M-x insert-kbd-macro @key{RET} @var{macroname} @key{RET}
1122 @end example
1123
1124 @noindent
1125 This inserts some Lisp code that, when executed later, will define the
1126 same macro with the same definition it has now. (You need not
1127 understand Lisp code to do this, because @code{insert-kbd-macro} writes
1128 the Lisp code for you.) Then save the file. You can load the file
1129 later with @code{load-file} (@pxref{Lisp Libraries}). If the file you
1130 save in is your init file @file{~/.emacs} (@pxref{Init File}) then the
1131 macro will be defined each time you run Emacs.
1132
1133 If you give @code{insert-kbd-macro} a numeric argument, it makes
1134 additional Lisp code to record the keys (if any) that you have bound to the
1135 keyboard macro, so that the macro will be reassigned the same keys when you
1136 load the file.
1137
1138 @node Kbd Macro Query
1139 @subsection Executing Macros with Variations
1140
1141 @kindex C-x q
1142 @findex kbd-macro-query
1143 Using @kbd{C-x q} (@code{kbd-macro-query}), you can get an effect
1144 similar to that of @code{query-replace}, where the macro asks you each
1145 time around whether to make a change. While defining the macro,
1146 type @kbd{C-x q} at the point where you want the query to occur. During
1147 macro definition, the @kbd{C-x q} does nothing, but when you run the
1148 macro later, @kbd{C-x q} asks you interactively whether to continue.
1149
1150 The valid responses when @kbd{C-x q} asks are @key{SPC} (or @kbd{y}),
1151 @key{DEL} (or @kbd{n}), @key{RET} (or @kbd{q}), @kbd{C-l} and @kbd{C-r}.
1152 The answers are the same as in @code{query-replace}, though not all of
1153 the @code{query-replace} options are meaningful.
1154
1155 These responses include @key{SPC} to continue, and @key{DEL} to skip
1156 the remainder of this repetition of the macro and start right away with
1157 the next repetition. @key{RET} means to skip the remainder of this
1158 repetition and cancel further repetitions. @kbd{C-l} redraws the screen
1159 and asks you again for a character to say what to do.
1160
1161 @kbd{C-r} enters a recursive editing level, in which you can perform
1162 editing which is not part of the macro. When you exit the recursive
1163 edit using @kbd{C-M-c}, you are asked again how to continue with the
1164 keyboard macro. If you type a @key{SPC} at this time, the rest of the
1165 macro definition is executed. It is up to you to leave point and the
1166 text in a state such that the rest of the macro will do what you
1167 want.@refill
1168
1169 @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument,
1170 performs a completely different function. It enters a recursive edit
1171 reading input from the keyboard, both when you type it during the
1172 definition of the macro, and when it is executed from the macro. During
1173 definition, the editing you do inside the recursive edit does not become
1174 part of the macro. During macro execution, the recursive edit gives you
1175 a chance to do some particularized editing on each repetition.
1176 @xref{Recursive Edit}.
1177
1178 Another way to vary the behavior of a keyboard macro is to use a
1179 register as a counter, incrementing it on each repetition of the macro.
1180 @xref{RegNumbers}.
1181
1182 @node Key Bindings
1183 @section Customizing Key Bindings
1184 @cindex key bindings
1185
1186 This section describes @dfn{key bindings}, which map keys to commands,
1187 and @dfn{keymaps}, which record key bindings. It also explains how
1188 to customize key bindings.
1189
1190 Recall that a command is a Lisp function whose definition provides for
1191 interactive use. Like every Lisp function, a command has a function
1192 name which usually consists of lower-case letters and hyphens.
1193
1194 @menu
1195 * Keymaps:: Generalities. The global keymap.
1196 * Prefix Keymaps:: Keymaps for prefix keys.
1197 * Local Keymaps:: Major and minor modes have their own keymaps.
1198 * Minibuffer Maps:: The minibuffer uses its own local keymaps.
1199 * Rebinding:: How to redefine one key's meaning conveniently.
1200 * Init Rebinding:: Rebinding keys with your init file, @file{.emacs}.
1201 * Function Keys:: Rebinding terminal function keys.
1202 * Named ASCII Chars:: Distinguishing @key{TAB} from @kbd{C-i}, and so on.
1203 * Non-ASCII Rebinding:: Rebinding non-ASCII characters such as Latin-1.
1204 * Mouse Buttons:: Rebinding mouse buttons in Emacs.
1205 * Disabling:: Disabling a command means confirmation is required
1206 before it can be executed. This is done to protect
1207 beginners from surprises.
1208 @end menu
1209
1210 @node Keymaps
1211 @subsection Keymaps
1212 @cindex keymap
1213
1214 The bindings between key sequences and command functions are recorded
1215 in data structures called @dfn{keymaps}. Emacs has many of these, each
1216 used on particular occasions.
1217
1218 Recall that a @dfn{key sequence} (@dfn{key}, for short) is a sequence
1219 of @dfn{input events} that have a meaning as a unit. Input events
1220 include characters, function keys and mouse buttons---all the inputs
1221 that you can send to the computer with your terminal. A key sequence
1222 gets its meaning from its @dfn{binding}, which says what command it
1223 runs. The function of keymaps is to record these bindings.
1224
1225 @cindex global keymap
1226 The @dfn{global} keymap is the most important keymap because it is
1227 always in effect. The global keymap defines keys for Fundamental mode;
1228 most of these definitions are common to most or all major modes. Each
1229 major or minor mode can have its own keymap which overrides the global
1230 definitions of some keys.
1231
1232 For example, a self-inserting character such as @kbd{g} is
1233 self-inserting because the global keymap binds it to the command
1234 @code{self-insert-command}. The standard Emacs editing characters such
1235 as @kbd{C-a} also get their standard meanings from the global keymap.
1236 Commands to rebind keys, such as @kbd{M-x global-set-key}, actually work
1237 by storing the new binding in the proper place in the global map.
1238 @xref{Rebinding}.
1239
1240 Meta characters work differently; Emacs translates each Meta
1241 character into a pair of characters starting with @key{ESC}. When you
1242 type the character @kbd{M-a} in a key sequence, Emacs replaces it with
1243 @kbd{@key{ESC} a}. A meta key comes in as a single input event, but
1244 becomes two events for purposes of key bindings. The reason for this is
1245 historical, and we might change it someday.
1246
1247 @cindex function key
1248 Most modern keyboards have function keys as well as character keys.
1249 Function keys send input events just as character keys do, and keymaps
1250 can have bindings for them.
1251
1252 On many terminals, typing a function key actually sends the computer a
1253 sequence of characters; the precise details of the sequence depends on
1254 which function key and on the model of terminal you are using. (Often
1255 the sequence starts with @kbd{@key{ESC} [}.) If Emacs understands your
1256 terminal type properly, it recognizes the character sequences forming
1257 function keys wherever they occur in a key sequence (not just at the
1258 beginning). Thus, for most purposes, you can pretend the function keys
1259 reach Emacs directly and ignore their encoding as character sequences.
1260
1261 @cindex mouse
1262 Mouse buttons also produce input events. These events come with other
1263 data---the window and position where you pressed or released the button,
1264 and a time stamp. But only the choice of button matters for key
1265 bindings; the other data matters only if a command looks at it.
1266 (Commands designed for mouse invocation usually do look at the other
1267 data.)
1268
1269 A keymap records definitions for single events. Interpreting a key
1270 sequence of multiple events involves a chain of keymaps. The first
1271 keymap gives a definition for the first event; this definition is
1272 another keymap, which is used to look up the second event in the
1273 sequence, and so on.
1274
1275 Key sequences can mix function keys and characters. For example,
1276 @kbd{C-x @key{SELECT}} is meaningful. If you make @key{SELECT} a prefix
1277 key, then @kbd{@key{SELECT} C-n} makes sense. You can even mix mouse
1278 events with keyboard events, but we recommend against it, because such
1279 sequences are inconvenient to type in.
1280
1281 As a user, you can redefine any key; but it might be best to stick to
1282 key sequences that consist of @kbd{C-c} followed by a letter. These
1283 keys are ``reserved for users,'' so they won't conflict with any
1284 properly designed Emacs extension. The function keys @key{F5} through
1285 @key{F9} are also reserved for users. If you redefine some other key,
1286 your definition may be overridden by certain extensions or major modes
1287 which redefine the same key.
1288
1289 @node Prefix Keymaps
1290 @subsection Prefix Keymaps
1291
1292 A prefix key such as @kbd{C-x} or @key{ESC} has its own keymap,
1293 which holds the definition for the event that immediately follows
1294 that prefix.
1295
1296 The definition of a prefix key is usually the keymap to use for
1297 looking up the following event. The definition can also be a Lisp
1298 symbol whose function definition is the following keymap; the effect is
1299 the same, but it provides a command name for the prefix key that can be
1300 used as a description of what the prefix key is for. Thus, the binding
1301 of @kbd{C-x} is the symbol @code{Ctl-X-Prefix}, whose function
1302 definition is the keymap for @kbd{C-x} commands. The definitions of
1303 @kbd{C-c}, @kbd{C-x}, @kbd{C-h} and @key{ESC} as prefix keys appear in
1304 the global map, so these prefix keys are always available.
1305
1306 Aside from ordinary prefix keys, there is a fictitious ``prefix key''
1307 which represents the menu bar; see @ref{Menu Bar,,,elisp, The Emacs Lisp
1308 Reference Manual}, for special information about menu bar key bindings.
1309 Mouse button events that invoke pop-up menus are also prefix keys; see
1310 @ref{Menu Keymaps,,,elisp, The Emacs Lisp Reference Manual}, for more
1311 details.
1312
1313 Some prefix keymaps are stored in variables with names:
1314
1315 @itemize @bullet
1316 @item
1317 @vindex ctl-x-map
1318 @code{ctl-x-map} is the variable name for the map used for characters that
1319 follow @kbd{C-x}.
1320 @item
1321 @vindex help-map
1322 @code{help-map} is for characters that follow @kbd{C-h}.
1323 @item
1324 @vindex esc-map
1325 @code{esc-map} is for characters that follow @key{ESC}. Thus, all Meta
1326 characters are actually defined by this map.
1327 @item
1328 @vindex ctl-x-4-map
1329 @code{ctl-x-4-map} is for characters that follow @kbd{C-x 4}.
1330 @item
1331 @vindex mode-specific-map
1332 @code{mode-specific-map} is for characters that follow @kbd{C-c}.
1333 @end itemize
1334
1335 @node Local Keymaps
1336 @subsection Local Keymaps
1337
1338 @cindex local keymap
1339 So far we have explained the ins and outs of the global map. Major
1340 modes customize Emacs by providing their own key bindings in @dfn{local
1341 keymaps}. For example, C mode overrides @key{TAB} to make it indent the
1342 current line for C code. Portions of text in the buffer can specify
1343 their own keymaps to substitute for the keymap of the buffer's major
1344 mode.
1345
1346 @cindex minor mode keymap
1347 Minor modes can also have local keymaps. Whenever a minor mode is
1348 in effect, the definitions in its keymap override both the major
1349 mode's local keymap and the global keymap.
1350
1351 @vindex c-mode-map
1352 @vindex lisp-mode-map
1353 The local keymaps for Lisp mode and several other major modes always
1354 exist even when not in use. These are kept in variables named
1355 @code{lisp-mode-map} and so on. For major modes less often used, the
1356 local keymap is normally constructed only when the mode is used for the
1357 first time in a session. This is to save space. If you wish to change
1358 one of these keymaps, you must use the major mode's @dfn{mode
1359 hook}---see below.
1360
1361 All minor mode keymaps are created in advance. There is no way to
1362 defer their creation until the first time the minor mode is enabled.
1363
1364 A local keymap can locally redefine a key as a prefix key by defining
1365 it as a prefix keymap. If the key is also defined globally as a prefix,
1366 then its local and global definitions (both keymaps) effectively
1367 combine: both of them are used to look up the event that follows the
1368 prefix key. Thus, if the mode's local keymap defines @kbd{C-c} as
1369 another keymap, and that keymap defines @kbd{C-z} as a command, this
1370 provides a local meaning for @kbd{C-c C-z}. This does not affect other
1371 sequences that start with @kbd{C-c}; if those sequences don't have their
1372 own local bindings, their global bindings remain in effect.
1373
1374 Another way to think of this is that Emacs handles a multi-event key
1375 sequence by looking in several keymaps, one by one, for a binding of the
1376 whole key sequence. First it checks the minor mode keymaps for minor
1377 modes that are enabled, then it checks the major mode's keymap, and then
1378 it checks the global keymap. This is not precisely how key lookup
1379 works, but it's good enough for understanding ordinary circumstances.
1380
1381 @cindex rebinding major mode keys
1382 @findex define-key
1383 To change the local bindings of a major mode, you must change the
1384 mode's local keymap. Normally you must wait until the first time the
1385 mode is used, because most major modes don't create their keymaps until
1386 then. If you want to specify something in your @file{~/.emacs} file to
1387 change a major mode's bindings, you must use the mode's mode hook to
1388 delay the change until the mode is first used.
1389
1390 For example, the command @code{texinfo-mode} to select Texinfo mode
1391 runs the hook @code{texinfo-mode-hook}. Here's how you can use the hook
1392 to add local bindings (not very useful, we admit) for @kbd{C-c n} and
1393 @kbd{C-c p} in Texinfo mode:
1394
1395 @example
1396 (add-hook 'texinfo-mode-hook
1397 '(lambda ()
1398 (define-key texinfo-mode-map
1399 "\C-cp"
1400 'backward-paragraph)
1401 (define-key texinfo-mode-map
1402 "\C-cn"
1403 'forward-paragraph)
1404 ))
1405 @end example
1406
1407 @xref{Hooks}.
1408
1409 @node Minibuffer Maps
1410 @subsection Minibuffer Keymaps
1411
1412 @cindex minibuffer keymaps
1413 @vindex minibuffer-local-map
1414 @vindex minibuffer-local-ns-map
1415 @vindex minibuffer-local-completion-map
1416 @vindex minibuffer-local-must-match-map
1417 The minibuffer has its own set of local keymaps; they contain various
1418 completion and exit commands.
1419
1420 @itemize @bullet
1421 @item
1422 @code{minibuffer-local-map} is used for ordinary input (no completion).
1423 @item
1424 @code{minibuffer-local-ns-map} is similar, except that @key{SPC} exits
1425 just like @key{RET}. This is used mainly for Mocklisp compatibility.
1426 @item
1427 @code{minibuffer-local-completion-map} is for permissive completion.
1428 @item
1429 @code{minibuffer-local-must-match-map} is for strict completion and
1430 for cautious completion.
1431 @end itemize
1432
1433 @node Rebinding
1434 @subsection Changing Key Bindings Interactively
1435 @cindex key rebinding, this session
1436 @cindex rebinding keys, this session
1437
1438 The way to redefine an Emacs key is to change its entry in a keymap.
1439 You can change the global keymap, in which case the change is effective in
1440 all major modes (except those that have their own overriding local
1441 definitions for the same key). Or you can change the current buffer's
1442 local map, which affects all buffers using the same major mode.
1443
1444 @findex global-set-key
1445 @findex local-set-key
1446 @findex global-unset-key
1447 @findex local-unset-key
1448 @table @kbd
1449 @item M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}
1450 Define @var{key} globally to run @var{cmd}.
1451 @item M-x local-set-key @key{RET} @var{key} @var{cmd} @key{RET}
1452 Define @var{key} locally (in the major mode now in effect) to run
1453 @var{cmd}.
1454 @item M-x global-unset-key @key{RET} @var{key}
1455 Make @var{key} undefined in the global map.
1456 @item M-x local-unset-key @key{RET} @var{key}
1457 Make @var{key} undefined locally (in the major mode now in effect).
1458 @end table
1459
1460 For example, suppose you like to execute commands in a subshell within
1461 an Emacs buffer, instead of suspending Emacs and executing commands in
1462 your login shell. Normally, @kbd{C-z} is bound to the function
1463 @code{suspend-emacs} (when not using the X Window System), but you can
1464 change @kbd{C-z} to invoke an interactive subshell within Emacs, by
1465 binding it to @code{shell} as follows:
1466
1467 @example
1468 M-x global-set-key @key{RET} C-z shell @key{RET}
1469 @end example
1470
1471 @noindent
1472 @code{global-set-key} reads the command name after the key. After you
1473 press the key, a message like this appears so that you can confirm that
1474 you are binding the key you want:
1475
1476 @example
1477 Set key C-z to command:
1478 @end example
1479
1480 You can redefine function keys and mouse events in the same way; just
1481 type the function key or click the mouse when it's time to specify the
1482 key to rebind.
1483
1484 You can rebind a key that contains more than one event in the same
1485 way. Emacs keeps reading the key to rebind until it is a complete key
1486 (that is, not a prefix key). Thus, if you type @kbd{C-f} for
1487 @var{key}, that's the end; the minibuffer is entered immediately to
1488 read @var{cmd}. But if you type @kbd{C-x}, another character is read;
1489 if that is @kbd{4}, another character is read, and so on. For
1490 example,
1491
1492 @example
1493 M-x global-set-key @key{RET} C-x 4 $ spell-other-window @key{RET}
1494 @end example
1495
1496 @noindent
1497 redefines @kbd{C-x 4 $} to run the (fictitious) command
1498 @code{spell-other-window}.
1499
1500 The two-character keys consisting of @kbd{C-c} followed by a letter
1501 are reserved for user customizations. Lisp programs are not supposed to
1502 define these keys, so the bindings you make for them will be available
1503 in all major modes and will never get in the way of anything.
1504
1505 You can remove the global definition of a key with
1506 @code{global-unset-key}. This makes the key @dfn{undefined}; if you
1507 type it, Emacs will just beep. Similarly, @code{local-unset-key} makes
1508 a key undefined in the current major mode keymap, which makes the global
1509 definition (or lack of one) come back into effect in that major mode.
1510
1511 If you have redefined (or undefined) a key and you subsequently wish
1512 to retract the change, undefining the key will not do the job---you need
1513 to redefine the key with its standard definition. To find the name of
1514 the standard definition of a key, go to a Fundamental mode buffer and
1515 use @kbd{C-h c}. The documentation of keys in this manual also lists
1516 their command names.
1517
1518 If you want to prevent yourself from invoking a command by mistake, it
1519 is better to disable the command than to undefine the key. A disabled
1520 command is less work to invoke when you really want to.
1521 @xref{Disabling}.
1522
1523 @node Init Rebinding
1524 @subsection Rebinding Keys in Your Init File
1525
1526 If you have a set of key bindings that you like to use all the time,
1527 you can specify them in your @file{.emacs} file by using their Lisp
1528 syntax. (@xref{Init File}.)
1529
1530 The simplest method for doing this works for ASCII characters and
1531 Meta-modified ASCII characters only. This method uses a string to
1532 represent the key sequence you want to rebind. For example, here's how
1533 to bind @kbd{C-z} to @code{shell}:
1534
1535 @example
1536 (global-set-key "\C-z" 'shell)
1537 @end example
1538
1539 @noindent
1540 This example uses a string constant containing one character, @kbd{C-z}.
1541 The single-quote before the command name, @code{shell}, marks it as a
1542 constant symbol rather than a variable. If you omit the quote, Emacs
1543 would try to evaluate @code{shell} immediately as a variable. This
1544 probably causes an error; it certainly isn't what you want.
1545
1546 Here is another example that binds a key sequence two characters long:
1547
1548 @example
1549 (global-set-key "\C-xl" 'make-symbolic-link)
1550 @end example
1551
1552 When the key sequence includes function keys or mouse button events,
1553 or non-ASCII characters such as @code{C-=} or @code{H-a}, you must use
1554 the more general method of rebinding, which uses a vector to specify the
1555 key sequence.
1556
1557 The way to write a vector in Emacs Lisp is with square brackets around
1558 the vector elements. Use spaces to separate the elements. If an
1559 element is a symbol, simply write the symbol's name---no other
1560 delimiters or punctuation are needed. If a vector element is a
1561 character, write it as a Lisp character constant: @samp{?} followed by
1562 the character as it would appear in a string.
1563
1564 Here are examples of using vectors to rebind @kbd{C-=} (a control
1565 character outside of ASCII), @kbd{H-a} (a Hyper character; ASCII doesn't
1566 have Hyper at all), @key{F7} (a function key), and @kbd{C-Mouse-1} (a
1567 keyboard-modified mouse button):
1568
1569 @example
1570 (global-set-key [?\C-=] 'make-symbolic-link)
1571 (global-set-key [?\H-a] 'make-symbolic-link)
1572 (global-set-key [f7] 'make-symbolic-link)
1573 (global-set-key [C-mouse-1] 'make-symbolic-link)
1574 @end example
1575
1576 You can use a vector for the simple cases too. Here's how to rewrite
1577 the first two examples, above, to use vectors:
1578
1579 @example
1580 (global-set-key [?\C-z] 'shell)
1581
1582 (global-set-key [?\C-x ?l] 'make-symbolic-link)
1583 @end example
1584
1585 @node Function Keys
1586 @subsection Rebinding Function Keys
1587
1588 Key sequences can contain function keys as well as ordinary
1589 characters. Just as Lisp characters (actually integers) represent
1590 keyboard characters, Lisp symbols represent function keys. If the
1591 function key has a word as its label, then that word is also the name of
1592 the corresponding Lisp symbol. Here are the conventional Lisp names for
1593 common function keys:
1594
1595 @table @asis
1596 @item @code{left}, @code{up}, @code{right}, @code{down}
1597 Cursor arrow keys.
1598
1599 @item @code{begin}, @code{end}, @code{home}, @code{next}, @code{prior}
1600 Other cursor repositioning keys.
1601
1602 @item @code{select}, @code{print}, @code{execute}, @code{backtab}
1603 @itemx @code{insert}, @code{undo}, @code{redo}, @code{clearline}
1604 @itemx @code{insertline}, @code{deleteline}, @code{insertchar}, @code{deletechar},
1605 Miscellaneous function keys.
1606
1607 @item @code{f1}, @code{f2}, @dots{} @code{f35}
1608 Numbered function keys (across the top of the keyboard).
1609
1610 @item @code{kp-add}, @code{kp-subtract}, @code{kp-multiply}, @code{kp-divide}
1611 @itemx @code{kp-backtab}, @code{kp-space}, @code{kp-tab}, @code{kp-enter}
1612 @itemx @code{kp-separator}, @code{kp-decimal}, @code{kp-equal}
1613 Keypad keys (to the right of the regular keyboard), with names or punctuation.
1614
1615 @item @code{kp-0}, @code{kp-1}, @dots{} @code{kp-9}
1616 Keypad keys with digits.
1617
1618 @item @code{kp-f1}, @code{kp-f2}, @code{kp-f3}, @code{kp-f4}
1619 Keypad PF keys.
1620 @end table
1621
1622 These names are conventional, but some systems (especially when using
1623 X windows) may use different names. To make certain what symbol is used
1624 for a given function key on your terminal, type @kbd{C-h c} followed by
1625 that key.
1626
1627 A key sequence which contains function key symbols (or anything but
1628 ASCII characters) must be a vector rather than a string. The vector
1629 syntax uses spaces between the elements, and square brackets around the
1630 whole vector. Thus, to bind function key @samp{f1} to the command
1631 @code{rmail}, write the following:
1632
1633 @example
1634 (global-set-key [f1] 'rmail)
1635 @end example
1636
1637 @noindent
1638 To bind the right-arrow key to the command @code{forward-char}, you can
1639 use this expression:
1640
1641 @example
1642 (global-set-key [right] 'forward-char)
1643 @end example
1644
1645 @noindent
1646 This uses the Lisp syntax for a vector containing the symbol
1647 @code{right}. (This binding is present in Emacs by default.)
1648
1649 @xref{Init Rebinding}, for more information about using vectors for
1650 rebinding.
1651
1652 You can mix function keys and characters in a key sequence. This
1653 example binds @kbd{C-x @key{NEXT}} to the command @code{forward-page}.
1654
1655 @example
1656 (global-set-key [?\C-x next] 'forward-page)
1657 @end example
1658
1659 @noindent
1660 where @code{?\C-x} is the Lisp character constant for the character
1661 @kbd{C-x}. The vector element @code{next} is a symbol and therefore
1662 does not take a question mark.
1663
1664 You can use the modifier keys @key{CTRL}, @key{META}, @key{HYPER},
1665 @key{SUPER}, @key{ALT} and @key{SHIFT} with function keys. To represent
1666 these modifiers, add the strings @samp{C-}, @samp{M-}, @samp{H-},
1667 @samp{s-}, @samp{A-} and @samp{S-} at the front of the symbol name.
1668 Thus, here is how to make @kbd{Hyper-Meta-@key{RIGHT}} move forward a
1669 word:
1670
1671 @example
1672 (global-set-key [H-M-right] 'forward-word)
1673 @end example
1674
1675 @node Named ASCII Chars
1676 @subsection Named ASCII Control Characters
1677
1678 @key{TAB}, @key{RET}, @key{BS}, @key{LFD}, @key{ESC} and @key{DEL}
1679 started out as names for certain ASCII control characters, used so often
1680 that they have special keys of their own. Later, users found it
1681 convenient to distinguish in Emacs between these keys and the ``same''
1682 control characters typed with the @key{CTRL} key.
1683
1684 Emacs distinguishes these two kinds of input, when used with the X
1685 Window System. It treats the ``special'' keys as function keys named
1686 @code{tab}, @code{return}, @code{backspace}, @code{linefeed},
1687 @code{escape}, and @code{delete}. These function keys translate
1688 automatically into the corresponding ASCII characters @emph{if} they
1689 have no bindings of their own. As a result, neither users nor Lisp
1690 programs need to pay attention to the distinction unless they care to.
1691
1692 If you do not want to distinguish between (for example) @key{TAB} and
1693 @kbd{C-i}, make just one binding, for the ASCII character @key{TAB}
1694 (octal code 011). If you do want to distinguish, make one binding for
1695 this ASCII character, and another for the ``function key'' @code{tab}.
1696
1697 With an ordinary ASCII terminal, there is no way to distinguish
1698 between @key{TAB} and @kbd{C-i} (and likewise for other such pairs),
1699 because the terminal sends the same character in both cases.
1700
1701 @node Non-ASCII Rebinding
1702 @subsection Non-ASCII Characters on the Keyboard
1703
1704 If your keyboard has keys that send non-ASCII characters, such as
1705 accented letters, rebinding these keys is a bit tricky. There are
1706 two solutions you can use. One is to specify a keyboard coding system,
1707 using @code{set-keyboard-coding-system} (@pxref{Specify Coding}).
1708 Then you can bind these keys in the usual way,@footnote{Note that you
1709 should avoid the string syntax for binding 8-bit characters, since
1710 they will be interpreted as meta keys. @xref{(elisp)Strings of
1711 Events}.} by writing
1712
1713 @example
1714 (global-set-key [?@var{char}] 'some-function)
1715 @end example
1716
1717 @noindent
1718 and typing the key you want to bind to insert @var{char}.
1719
1720 If you don't specify the keyboard coding system, that approach won't
1721 work. Instead, you need to find out the actual code that the terminal
1722 sends. The easiest way to do this in Emacs is to create an empty buffer
1723 with @kbd{C-x b temp @key{RET}}, make it unibyte with @kbd{M-x
1724 toggle-enable-multibyte-characters @key{RET}}, then type the key to
1725 insert the character into this buffer.
1726
1727 Move point before the character, then type @kbd{C-x =}. This
1728 displays a message in the minibuffer, showing the character code in
1729 three ways, octal, decimal and hexadecimal, all within a set of
1730 parentheses. Use the second of the three numbers, the decimal one,
1731 inside the vector to bind:
1732
1733 @example
1734 (global-set-key [@var{decimal-code}] 'some-function)
1735 @end example
1736
1737 If you bind 8-bit characters like this in your init file, you my find it
1738 convenient to specify that it is unibyte. @xref{Enabling Multibyte}.
1739
1740 @node Mouse Buttons
1741 @subsection Rebinding Mouse Buttons
1742 @cindex mouse button events
1743 @cindex rebinding mouse buttons
1744 @cindex click events
1745 @cindex drag events
1746 @cindex down events
1747 @cindex button down events
1748
1749 Emacs uses Lisp symbols to designate mouse buttons, too. The ordinary
1750 mouse events in Emacs are @dfn{click} events; these happen when you
1751 press a button and release it without moving the mouse. You can also
1752 get @dfn{drag} events, when you move the mouse while holding the button
1753 down. Drag events happen when you finally let go of the button.
1754
1755 The symbols for basic click events are @code{mouse-1} for the leftmost
1756 button, @code{mouse-2} for the next, and so on. Here is how you can
1757 redefine the second mouse button to split the current window:
1758
1759 @example
1760 (global-set-key [mouse-2] 'split-window-vertically)
1761 @end example
1762
1763 The symbols for drag events are similar, but have the prefix
1764 @samp{drag-} before the word @samp{mouse}. For example, dragging the
1765 first button generates a @code{drag-mouse-1} event.
1766
1767 You can also define bindings for events that occur when a mouse button
1768 is pressed down. These events start with @samp{down-} instead of
1769 @samp{drag-}. Such events are generated only if they have key bindings.
1770 When you get a button-down event, a corresponding click or drag event
1771 will always follow.
1772
1773 @cindex double clicks
1774 @cindex triple clicks
1775 If you wish, you can distinguish single, double, and triple clicks. A
1776 double click means clicking a mouse button twice in approximately the
1777 same place. The first click generates an ordinary click event. The
1778 second click, if it comes soon enough, generates a double-click event
1779 instead. The event type for a double-click event starts with
1780 @samp{double-}: for example, @code{double-mouse-3}.
1781
1782 This means that you can give a special meaning to the second click at
1783 the same place, but it must act on the assumption that the ordinary
1784 single click definition has run when the first click was received.
1785
1786 This constrains what you can do with double clicks, but user interface
1787 designers say that this constraint ought to be followed in any case. A
1788 double click should do something similar to the single click, only
1789 ``more so.'' The command for the double-click event should perform the
1790 extra work for the double click.
1791
1792 If a double-click event has no binding, it changes to the
1793 corresponding single-click event. Thus, if you don't define a
1794 particular double click specially, it executes the single-click command
1795 twice.
1796
1797 Emacs also supports triple-click events whose names start with
1798 @samp{triple-}. Emacs does not distinguish quadruple clicks as event
1799 types; clicks beyond the third generate additional triple-click events.
1800 However, the full number of clicks is recorded in the event list, so you
1801 can distinguish if you really want to. We don't recommend distinct
1802 meanings for more than three clicks, but sometimes it is useful for
1803 subsequent clicks to cycle through the same set of three meanings, so
1804 that four clicks are equivalent to one click, five are equivalent to
1805 two, and six are equivalent to three.
1806
1807 Emacs also records multiple presses in drag and button-down events.
1808 For example, when you press a button twice, then move the mouse while
1809 holding the button, Emacs gets a @samp{double-drag-} event. And at the
1810 moment when you press it down for the second time, Emacs gets a
1811 @samp{double-down-} event (which is ignored, like all button-down
1812 events, if it has no binding).
1813
1814 @vindex double-click-time
1815 The variable @code{double-click-time} specifies how long may elapse
1816 between clicks that are recognized as a pair. Its value is measured
1817 in milliseconds. If the value is @code{nil}, double clicks are not
1818 detected at all. If the value is @code{t}, then there is no time
1819 limit.
1820
1821 The symbols for mouse events also indicate the status of the modifier
1822 keys, with the usual prefixes @samp{C-}, @samp{M-}, @samp{H-},
1823 @samp{s-}, @samp{A-} and @samp{S-}. These always precede @samp{double-}
1824 or @samp{triple-}, which always precede @samp{drag-} or @samp{down-}.
1825
1826 A frame includes areas that don't show text from the buffer, such as
1827 the mode line and the scroll bar. You can tell whether a mouse button
1828 comes from a special area of the screen by means of dummy ``prefix
1829 keys.'' For example, if you click the mouse in the mode line, you get
1830 the prefix key @code{mode-line} before the ordinary mouse-button symbol.
1831 Thus, here is how to define the command for clicking the first button in
1832 a mode line to run @code{scroll-up}:
1833
1834 @example
1835 (global-set-key [mode-line mouse-1] 'scroll-up)
1836 @end example
1837
1838 Here is the complete list of these dummy prefix keys and their
1839 meanings:
1840
1841 @table @code
1842 @item mode-line
1843 The mouse was in the mode line of a window.
1844 @item vertical-line
1845 The mouse was in the vertical line separating side-by-side windows. (If
1846 you use scroll bars, they appear in place of these vertical lines.)
1847 @item vertical-scroll-bar
1848 The mouse was in a vertical scroll bar. (This is the only kind of
1849 scroll bar Emacs currently supports.)
1850 @ignore
1851 @item horizontal-scroll-bar
1852 The mouse was in a horizontal scroll bar. Horizontal scroll bars do
1853 horizontal scrolling, and people don't use them often.
1854 @end ignore
1855 @end table
1856
1857 You can put more than one mouse button in a key sequence, but it isn't
1858 usual to do so.
1859
1860 @node Disabling
1861 @subsection Disabling Commands
1862 @cindex disabled command
1863
1864 Disabling a command marks the command as requiring confirmation before it
1865 can be executed. The purpose of disabling a command is to prevent
1866 beginning users from executing it by accident and being confused.
1867
1868 An attempt to invoke a disabled command interactively in Emacs
1869 displays a window containing the command's name, its documentation, and
1870 some instructions on what to do immediately; then Emacs asks for input
1871 saying whether to execute the command as requested, enable it and
1872 execute it, or cancel. If you decide to enable the command, you are
1873 asked whether to do this permanently or just for the current session.
1874 Enabling permanently works by automatically editing your @file{.emacs}
1875 file.
1876
1877 The direct mechanism for disabling a command is to put a
1878 non-@code{nil} @code{disabled} property on the Lisp symbol for the
1879 command. Here is the Lisp program to do this:
1880
1881 @example
1882 (put 'delete-region 'disabled t)
1883 @end example
1884
1885 If the value of the @code{disabled} property is a string, that string
1886 is included in the message printed when the command is used:
1887
1888 @example
1889 (put 'delete-region 'disabled
1890 "It's better to use `kill-region' instead.\n")
1891 @end example
1892
1893 @findex disable-command
1894 @findex enable-command
1895 You can make a command disabled either by editing the @file{.emacs}
1896 file directly or with the command @kbd{M-x disable-command}, which edits
1897 the @file{.emacs} file for you. Likewise, @kbd{M-x enable-command}
1898 edits @file{.emacs} to enable a command permanently. @xref{Init File}.
1899
1900 Whether a command is disabled is independent of what key is used to
1901 invoke it; disabling also applies if the command is invoked using
1902 @kbd{M-x}. Disabling a command has no effect on calling it as a
1903 function from Lisp programs.
1904
1905 @node Keyboard Translations
1906 @section Keyboard Translations
1907
1908 Some keyboards do not make it convenient to send all the special
1909 characters that Emacs uses. The most common problem case is the
1910 @key{DEL} character. Some keyboards provide no convenient way to type
1911 this very important character---usually because they were designed to
1912 expect the character @kbd{C-h} to be used for deletion. On these
1913 keyboards, if you press the key normally used for deletion, Emacs handles
1914 the @kbd{C-h} as a prefix character and offers you a list of help
1915 options, which is not what you want.
1916
1917 @cindex keyboard translations
1918 @findex keyboard-translate
1919 You can work around this problem within Emacs by setting up keyboard
1920 translations to turn @kbd{C-h} into @key{DEL} and @key{DEL} into
1921 @kbd{C-h}, as follows:
1922
1923 @example
1924 ;; @r{Translate @kbd{C-h} to @key{DEL}.}
1925 (keyboard-translate ?\C-h ?\C-?)
1926
1927 @need 3000
1928 ;; @r{Translate @key{DEL} to @kbd{C-h}.}
1929 (keyboard-translate ?\C-? ?\C-h)
1930 @end example
1931
1932 Keyboard translations are not the same as key bindings in keymaps
1933 (@pxref{Keymaps}). Emacs contains numerous keymaps that apply in
1934 different situations, but there is only one set of keyboard
1935 translations, and it applies to every character that Emacs reads from
1936 the terminal. Keyboard translations take place at the lowest level of
1937 input processing; the keys that are looked up in keymaps contain the
1938 characters that result from keyboard translation.
1939
1940 Under X, the keyboard key named @key{DELETE} is a function key and is
1941 distinct from the ASCII character named @key{DEL}. @xref{Named ASCII
1942 Chars}. Keyboard translations affect only ASCII character input, not
1943 function keys; thus, the above example used under X does not affect the
1944 @key{DELETE} key. However, the translation above isn't necessary under
1945 X, because Emacs can also distinguish between the @key{BACKSPACE} key
1946 and @kbd{C-h}; and it normally treats @key{BACKSPACE} as @key{DEL}.
1947
1948 For full information about how to use keyboard translations, see
1949 @ref{Translating Input,,,elisp, The Emacs Lisp Reference Manual}.
1950
1951 @node Syntax
1952 @section The Syntax Table
1953 @cindex syntax table
1954
1955 All the Emacs commands which parse words or balance parentheses are
1956 controlled by the @dfn{syntax table}. The syntax table says which
1957 characters are opening delimiters, which are parts of words, which are
1958 string quotes, and so on. Each major mode has its own syntax table
1959 (though sometimes related major modes use the same one) which it
1960 installs in each buffer that uses that major mode. The syntax table
1961 installed in the current buffer is the one that all commands use, so we
1962 call it ``the'' syntax table. A syntax table is a Lisp object, a
1963 char-table, whose elements are numbers.
1964
1965 @kindex C-h s
1966 @findex describe-syntax
1967 To display a description of the contents of the current syntax table,
1968 type @kbd{C-h s} (@code{describe-syntax}). The description of each
1969 character includes both the string you would have to give to
1970 @code{modify-syntax-entry} to set up that character's current syntax,
1971 and some English to explain that string if necessary.
1972
1973 For full information on the syntax table, see @ref{Syntax Tables,,
1974 Syntax Tables, elisp, The Emacs Lisp Reference Manual}.
1975
1976 @node Init File
1977 @section The Init File, @file{~/.emacs}
1978 @cindex init file
1979 @cindex Emacs initialization file
1980 @cindex key rebinding, permanent
1981 @cindex rebinding keys, permanently
1982 @cindex startup (init file)
1983
1984 When Emacs is started, it normally loads a Lisp program from the file
1985 @file{.emacs} or @file{.emacs.el} in your home directory. We call this
1986 file your @dfn{init file} because it specifies how to initialize Emacs
1987 for you. You can use the command line switch @samp{-q} to prevent
1988 loading your init file, and @samp{-u} (or @samp{--user}) to specify a
1989 different user's init file (@pxref{Entering Emacs}).
1990
1991 There can also be a @dfn{default init file}, which is the library
1992 named @file{default.el}, found via the standard search path for
1993 libraries. The Emacs distribution contains no such library; your site
1994 may create one for local customizations. If this library exists, it is
1995 loaded whenever you start Emacs (except when you specify @samp{-q}).
1996 But your init file, if any, is loaded first; if it sets
1997 @code{inhibit-default-init} non-@code{nil}, then @file{default} is not
1998 loaded.
1999
2000 Your site may also have a @dfn{site startup file}; this is named
2001 @file{site-start.el}, if it exists. Emacs loads this library before it
2002 loads your init file. To inhibit loading of this library, use the
2003 option @samp{-no-site-file}.
2004
2005 If you have a large amount of code in your @file{.emacs} file, you
2006 should rename it to @file{~/.emacs.el}, and byte-compile it. @xref{Byte
2007 Compilation,, Byte Compilation, elisp, the Emacs Lisp Reference Manual},
2008 for more information about compiling Emacs Lisp programs.
2009
2010 If you are going to write actual Emacs Lisp programs that go beyond
2011 minor customization, you should read the @cite{Emacs Lisp Reference Manual}.
2012 @ifinfo
2013 @xref{Top, Emacs Lisp, Emacs Lisp, elisp, the Emacs Lisp Reference
2014 Manual}.
2015 @end ifinfo
2016
2017 @menu
2018 * Init Syntax:: Syntax of constants in Emacs Lisp.
2019 * Init Examples:: How to do some things with an init file.
2020 * Terminal Init:: Each terminal type can have an init file.
2021 * Find Init:: How Emacs finds the init file.
2022 @end menu
2023
2024 @node Init Syntax
2025 @subsection Init File Syntax
2026
2027 The @file{.emacs} file contains one or more Lisp function call
2028 expressions. Each of these consists of a function name followed by
2029 arguments, all surrounded by parentheses. For example, @code{(setq
2030 fill-column 60)} calls the function @code{setq} to set the variable
2031 @code{fill-column} (@pxref{Filling}) to 60.
2032
2033 The second argument to @code{setq} is an expression for the new value of
2034 the variable. This can be a constant, a variable, or a function call
2035 expression. In @file{.emacs}, constants are used most of the time. They can be:
2036
2037 @table @asis
2038 @item Numbers:
2039 Numbers are written in decimal, with an optional initial minus sign.
2040
2041 @item Strings:
2042 @cindex Lisp string syntax
2043 @cindex string syntax
2044 Lisp string syntax is the same as C string syntax with a few extra
2045 features. Use a double-quote character to begin and end a string constant.
2046
2047 In a string, you can include newlines and special characters literally.
2048 But often it is cleaner to use backslash sequences for them: @samp{\n}
2049 for newline, @samp{\b} for backspace, @samp{\r} for carriage return,
2050 @samp{\t} for tab, @samp{\f} for formfeed (control-L), @samp{\e} for
2051 escape, @samp{\\} for a backslash, @samp{\"} for a double-quote, or
2052 @samp{\@var{ooo}} for the character whose octal code is @var{ooo}.
2053 Backslash and double-quote are the only characters for which backslash
2054 sequences are mandatory.
2055
2056 @samp{\C-} can be used as a prefix for a control character, as in
2057 @samp{\C-s} for ASCII control-S, and @samp{\M-} can be used as a prefix for
2058 a Meta character, as in @samp{\M-a} for @kbd{Meta-A} or @samp{\M-\C-a} for
2059 @kbd{Control-Meta-A}.@refill
2060
2061 @item Characters:
2062 Lisp character constant syntax consists of a @samp{?} followed by
2063 either a character or an escape sequence starting with @samp{\}.
2064 Examples: @code{?x}, @code{?\n}, @code{?\"}, @code{?\)}. Note that
2065 strings and characters are not interchangeable in Lisp; some contexts
2066 require one and some contexts require the other.
2067
2068 @item True:
2069 @code{t} stands for `true'.
2070
2071 @item False:
2072 @code{nil} stands for `false'.
2073
2074 @item Other Lisp objects:
2075 Write a single-quote (') followed by the Lisp object you want.
2076 @end table
2077
2078 @node Init Examples
2079 @subsection Init File Examples
2080
2081 Here are some examples of doing certain commonly desired things with
2082 Lisp expressions:
2083
2084 @itemize @bullet
2085 @item
2086 Make @key{TAB} in C mode just insert a tab if point is in the middle of a
2087 line.
2088
2089 @example
2090 (setq c-tab-always-indent nil)
2091 @end example
2092
2093 Here we have a variable whose value is normally @code{t} for `true'
2094 and the alternative is @code{nil} for `false'.
2095
2096 @item
2097 Make searches case sensitive by default (in all buffers that do not
2098 override this).
2099
2100 @example
2101 (setq-default case-fold-search nil)
2102 @end example
2103
2104 This sets the default value, which is effective in all buffers that do
2105 not have local values for the variable. Setting @code{case-fold-search}
2106 with @code{setq} affects only the current buffer's local value, which
2107 is not what you probably want to do in an init file.
2108
2109 @item
2110 @vindex user-mail-address
2111 Specify your own email address, if Emacs can't figure it out correctly.
2112
2113 @example
2114 (setq user-mail-address "coon@@yoyodyne.com")
2115 @end example
2116
2117 Various Emacs packages that need your own email address use the value of
2118 @code{user-mail-address}.
2119
2120 @item
2121 Make Text mode the default mode for new buffers.
2122
2123 @example
2124 (setq default-major-mode 'text-mode)
2125 @end example
2126
2127 Note that @code{text-mode} is used because it is the command for
2128 entering Text mode. The single-quote before it makes the symbol a
2129 constant; otherwise, @code{text-mode} would be treated as a variable
2130 name.
2131
2132 @need 1500
2133 @item
2134 Set up defaults for the Latin-1 character set
2135 which supports most of the languages of Western Europe.
2136
2137 @example
2138 (set-language-environment "Latin-1")
2139 @end example
2140
2141 @need 1500
2142 @item
2143 Turn on Auto Fill mode automatically in Text mode and related modes.
2144
2145 @example
2146 (add-hook 'text-mode-hook
2147 '(lambda () (auto-fill-mode 1)))
2148 @end example
2149
2150 This shows how to add a hook function to a normal hook variable
2151 (@pxref{Hooks}). The function we supply is a list starting with
2152 @code{lambda}, with a single-quote in front of it to make it a list
2153 constant rather than an expression.
2154
2155 It's beyond the scope of this manual to explain Lisp functions, but for
2156 this example it is enough to know that the effect is to execute
2157 @code{(auto-fill-mode 1)} when Text mode is entered. You can replace
2158 that with any other expression that you like, or with several
2159 expressions in a row.
2160
2161 Emacs comes with a function named @code{turn-on-auto-fill} whose
2162 definition is @code{(lambda () (auto-fill-mode 1))}. Thus, a simpler
2163 way to write the above example is as follows:
2164
2165 @example
2166 (add-hook 'text-mode-hook 'turn-on-auto-fill)
2167 @end example
2168
2169 @item
2170 Load the installed Lisp library named @file{foo} (actually a file
2171 @file{foo.elc} or @file{foo.el} in a standard Emacs directory).
2172
2173 @example
2174 (load "foo")
2175 @end example
2176
2177 When the argument to @code{load} is a relative file name, not starting
2178 with @samp{/} or @samp{~}, @code{load} searches the directories in
2179 @code{load-path} (@pxref{Lisp Libraries}).
2180
2181 @item
2182 Load the compiled Lisp file @file{foo.elc} from your home directory.
2183
2184 @example
2185 (load "~/foo.elc")
2186 @end example
2187
2188 Here an absolute file name is used, so no searching is done.
2189
2190 @item
2191 Rebind the key @kbd{C-x l} to run the function @code{make-symbolic-link}.
2192
2193 @example
2194 (global-set-key "\C-xl" 'make-symbolic-link)
2195 @end example
2196
2197 or
2198
2199 @example
2200 (define-key global-map "\C-xl" 'make-symbolic-link)
2201 @end example
2202
2203 Note once again the single-quote used to refer to the symbol
2204 @code{make-symbolic-link} instead of its value as a variable.
2205
2206 @item
2207 Do the same thing for Lisp mode only.
2208
2209 @example
2210 (define-key lisp-mode-map "\C-xl" 'make-symbolic-link)
2211 @end example
2212
2213 @item
2214 Redefine all keys which now run @code{next-line} in Fundamental mode
2215 so that they run @code{forward-line} instead.
2216
2217 @findex substitute-key-definition
2218 @example
2219 (substitute-key-definition 'next-line 'forward-line
2220 global-map)
2221 @end example
2222
2223 @item
2224 Make @kbd{C-x C-v} undefined.
2225
2226 @example
2227 (global-unset-key "\C-x\C-v")
2228 @end example
2229
2230 One reason to undefine a key is so that you can make it a prefix.
2231 Simply defining @kbd{C-x C-v @var{anything}} will make @kbd{C-x C-v} a
2232 prefix, but @kbd{C-x C-v} must first be freed of its usual non-prefix
2233 definition.
2234
2235 @item
2236 Make @samp{$} have the syntax of punctuation in Text mode.
2237 Note the use of a character constant for @samp{$}.
2238
2239 @example
2240 (modify-syntax-entry ?\$ "." text-mode-syntax-table)
2241 @end example
2242
2243 @item
2244 Enable the use of the command @code{narrow-to-region} without confirmation.
2245
2246 @example
2247 (put 'narrow-to-region 'disabled nil)
2248 @end example
2249 @end itemize
2250
2251 @node Terminal Init
2252 @subsection Terminal-specific Initialization
2253
2254 Each terminal type can have a Lisp library to be loaded into Emacs when
2255 it is run on that type of terminal. For a terminal type named
2256 @var{termtype}, the library is called @file{term/@var{termtype}} and it is
2257 found by searching the directories @code{load-path} as usual and trying the
2258 suffixes @samp{.elc} and @samp{.el}. Normally it appears in the
2259 subdirectory @file{term} of the directory where most Emacs libraries are
2260 kept.@refill
2261
2262 The usual purpose of the terminal-specific library is to map the
2263 escape sequences used by the terminal's function keys onto more
2264 meaningful names, using @code{function-key-map}. See the file
2265 @file{term/lk201.el} for an example of how this is done. Many function
2266 keys are mapped automatically according to the information in the
2267 Termcap data base; the terminal-specific library needs to map only the
2268 function keys that Termcap does not specify.
2269
2270 When the terminal type contains a hyphen, only the part of the name
2271 before the first hyphen is significant in choosing the library name.
2272 Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
2273 the library @file{term/aaa}. The code in the library can use
2274 @code{(getenv "TERM")} to find the full terminal type name.@refill
2275
2276 @vindex term-file-prefix
2277 The library's name is constructed by concatenating the value of the
2278 variable @code{term-file-prefix} and the terminal type. Your @file{.emacs}
2279 file can prevent the loading of the terminal-specific library by setting
2280 @code{term-file-prefix} to @code{nil}.
2281
2282 @vindex term-setup-hook
2283 Emacs runs the hook @code{term-setup-hook} at the end of
2284 initialization, after both your @file{.emacs} file and any
2285 terminal-specific library have been read in. Add hook functions to this
2286 hook if you wish to override part of any of the terminal-specific
2287 libraries and to define initializations for terminals that do not have a
2288 library. @xref{Hooks}.
2289
2290 @node Find Init
2291 @subsection How Emacs Finds Your Init File
2292
2293 Normally Emacs uses the environment variable @code{HOME} to find
2294 @file{.emacs}; that's what @samp{~} means in a file name. But if you
2295 have done @code{su}, Emacs tries to find your own @file{.emacs}, not
2296 that of the user you are currently pretending to be. The idea is
2297 that you should get your own editor customizations even if you are
2298 running as the super user.
2299
2300 More precisely, Emacs first determines which user's init file to use.
2301 It gets the user name from the environment variables @code{LOGNAME} and
2302 @code{USER}; if neither of those exists, it uses effective user-ID.
2303 If that user name matches the real user-ID, then Emacs uses @code{HOME};
2304 otherwise, it looks up the home directory corresponding to that user
2305 name in the system's data base of users.
2306 @c LocalWords: backtab