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