annotate man/xemacs/custom.texi @ 939:025200a2163c

[xemacs-hg @ 2002-07-31 07:23:39 by michaels] 2002-07-17 Marcus Crestani <crestani@informatik.uni-tuebingen.de> Markus Kaltenbach <makalten@informatik.uni-tuebingen.de> Mike Sperber <mike@xemacs.org> configure flag to turn these changes on: --use-kkcc First we added a dumpable flag to lrecord_implementation. It shows, if the object is dumpable and should be processed by the dumper. * lrecord.h (struct lrecord_implementation): added dumpable flag (MAKE_LRECORD_IMPLEMENTATION): fitted the different makro definitions to the new lrecord_implementation and their calls. Then we changed mark_object, that it no longer needs a mark method for those types that have pdump descritions. * alloc.c: (mark_object): If the object has a description, the new mark algorithm is called, and the object is marked according to its description. Otherwise it uses the mark method like before. These procedures mark objects according to their descriptions. They are modeled on the corresponding pdumper procedures. (mark_with_description): (get_indirect_count): (structure_size): (mark_struct_contents): These procedures still call mark_object, this is needed while there are Lisp_Objects without descriptions left. We added pdump descriptions for many Lisp_Objects: * extents.c: extent_auxiliary_description * database.c: database_description * gui.c: gui_item_description * scrollbar.c: scrollbar_instance_description * toolbar.c: toolbar_button_description * event-stream.c: command_builder_description * mule-charset.c: charset_description * device-msw.c: devmode_description * dialog-msw.c: mswindows_dialog_id_description * eldap.c: ldap_description * postgresql.c: pgconn_description pgresult_description * tooltalk.c: tooltalk_message_description tooltalk_pattern_description * ui-gtk.c: emacs_ffi_description emacs_gtk_object_description * events.c: * events.h: * event-stream.c: * event-Xt.c: * event-gtk.c: * event-tty.c: To write a pdump description for Lisp_Event, we converted every struct in the union event to a Lisp_Object. So we created nine new Lisp_Objects: Lisp_Key_Data, Lisp_Button_Data, Lisp_Motion_Data, Lisp_Process_Data, Lisp_Timeout_Data, Lisp_Eval_Data, Lisp_Misc_User_Data, Lisp_Magic_Data, Lisp_Magic_Eval_Data. We also wrote makro selectors and mutators for the fields of the new designed Lisp_Event and added everywhere these new abstractions. We implemented XD_UNION support in (mark_with_description), so we can describe exspecially console/device specific data with XD_UNION. To describe with XD_UNION, we added a field to these objects, which holds the variant type of the object. This field is initialized in the appendant constructor. The variant is an integer, it has also to be described in an description, if XD_UNION is used. XD_UNION is used in following descriptions: * console.c: console_description (get_console_variant): returns the variant (create_console): added variant initialization * console.h (console_variant): the different console types * console-impl.h (struct console): added enum console_variant contype * device.c: device_description (Fmake_device): added variant initialization * device-impl.h (struct device): added enum console_variant devtype * objects.c: image_instance_description font_instance_description (Fmake_color_instance): added variant initialization (Fmake_font_instance): added variant initialization * objects-impl.h (struct Lisp_Color_Instance): added color_instance_type * objects-impl.h (struct Lisp_Font_Instance): added font_instance_type * process.c: process_description (make_process_internal): added variant initialization * process.h (process_variant): the different process types
author michaels
date Wed, 31 Jul 2002 07:23:39 +0000
parents 732270854293
children c6facab13185
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 @node Customization, Quitting, Emulation, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 @chapter Customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @cindex customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 This chapter talks about various topics relevant to adapting the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 behavior of Emacs in minor ways.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 All kinds of customization affect only the particular Emacs job that you
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
10 do them in. They are completely lost when you kill the Emacs job, and
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
11 have no effect on other Emacs jobs you may run at the same time or
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
12 later. The only way an Emacs job can affect anything outside of it is
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
13 by writing a file; in particular, the only way to make a customization
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
14 `permanent' is to put something in your init file or other appropriate
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
15 file to do the customization in each session. @xref{Init File}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 * Minor Modes:: Each minor mode is one feature you can turn on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 independently of any others.
775
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
20 * Behaviors:: Like minor modes, behaviors are independent of other
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
21 features, but behaviors are usually enabled globally,
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
22 while minor modes are per-buffer and often temporary.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 * Variables:: Many Emacs commands examine Emacs variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 to decide what to do; by setting variables,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 you can control their functioning.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 * Keyboard Macros:: A keyboard macro records a sequence of keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 to be replayed with a single command.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 * Key Bindings:: The keymaps say what command each key runs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 By changing them, you can "redefine keys".
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 * Syntax:: The syntax table controls how words and expressions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 are parsed.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
32 * Init File:: How to write common customizations in the init file.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
33 * Audible Bell:: Changing how Emacs sounds the bell.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
34 * Faces:: Changing the fonts and colors of a region of text.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
35 * Frame Components:: Controlling the presence and positions of the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
36 menubar, toolbars, and gutters.
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
37 * X Resources:: X resources controlling various aspects of the
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 behavior of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 @node Minor Modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 @section Minor Modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 @cindex minor modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 @cindex mode line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 Minor modes are options which you can use or not. For example, Auto
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 Fill mode is a minor mode in which @key{SPC} breaks lines between words
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 as you type. All the minor modes are independent of each other and of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 the selected major mode. Most minor modes inform you in the mode line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 when they are on; for example, @samp{Fill} in the mode line means that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 Auto Fill mode is on.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 Append @code{-mode} to the name of a minor mode to get the name of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 command function that turns the mode on or off. Thus, the command to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 enable or disable Auto Fill mode is called @kbd{M-x auto-fill-mode}. These
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 commands are usually invoked with @kbd{M-x}, but you can bind keys to them
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 if you wish. With no argument, the function turns the mode on if it was
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 off and off if it was on. This is known as @dfn{toggling}. A positive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 argument always turns the mode on, and an explicit zero argument or a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 negative argument always turns it off.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 @cindex Auto Fill mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 @findex auto-fill-mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 Auto Fill mode allows you to enter filled text without breaking lines
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 explicitly. Emacs inserts newlines as necessary to prevent lines from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 becoming too long. @xref{Filling}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 @cindex Overwrite mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 @findex overwrite-mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 Overwrite mode causes ordinary printing characters to replace existing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 text instead of moving it to the right. For example, if point is in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 front of the @samp{B} in @samp{FOOBAR}, and you type a @kbd{G} in Overwrite
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 mode, it changes to @samp{FOOGAR}, instead of @samp{FOOGBAR}.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 @cindex Abbrev mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 @findex abbrev-mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 Abbrev mode allows you to define abbreviations that automatically expand
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 as you type them. For example, @samp{amd} might expand to @samp{abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 mode}. @xref{Abbrevs}, for full information.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80
775
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
81 @c Updated for 21.5.6 2002/03/13 sjt
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
82 @node Behaviors
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
83 @section Behaviors
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
84 @cindex behavior
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
85
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
86 Some functionality requires a fair amount of effort to enable globally
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
87 in a session. For example, someone who discovers filladapt and really
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
88 likes it must toggle it separately in each buffer. On the other hand,
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
89 after trying it for a while she might like to disable it everywhere,
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
90 having decided it doesn't work very well for her. Such a functionality
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
91 is called a @dfn{behavior}.
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
92
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
93 The package developer will register behaviors with XEmacs. Then the
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
94 user invokes the @code{enable-behavior} and @code{disable-behavior}
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
95 functions to enable or disable a given behavior. The behavior registry
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
96 was introduced in XEmacs 21.5.6.
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
97
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
98 @defun enable-behavior behavior [force]
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
99 Called interactively, prompt the user, read a behavior symbol name with
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
100 completion for @var{behavior}, and take @var{force} from the prefix
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
101 argument. Then enable the behavior registered under the symbol
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
102 @var{behavior}.
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
103
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
104 The optional argument @var{force} is unimplemented in 21.5.6.
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
105 @end defun
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
106
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
107 @defun disable-behavior behavior [force]
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
108 Called interactively, prompt the user, read a behavior symbol name with
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
109 completion for @var{behavior}, and take @var{force} from the prefix
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
110 argument. Then disable the behavior registered under the symbol
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
111 @var{behavior}.
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
112
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
113 The optional argument @var{force} is unimplemented in 21.5.6.
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
114 @end defun
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
115
7d972c3de90a [xemacs-hg @ 2002-03-14 11:50:12 by stephent]
stephent
parents: 602
diff changeset
116
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 @node Variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 @section Variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 @cindex variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 @cindex option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 A @dfn{variable} is a Lisp symbol which has a value. Variable names
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 can contain any characters, but by convention they are words separated
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 by hyphens. A variable can also have a documentation string, which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 describes what kind of value it should have and how the value will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 used.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 Lisp allows any variable to have any kind of value, but most variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 that Emacs uses require a value of a certain type. Often the value has
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 to be a string or a number. Sometimes we say that a certain feature is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 turned on if a variable is ``non-@code{nil},'' meaning that if the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 variable's value is @code{nil}, the feature is off, but the feature is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 on for @i{any} other value. The conventional value to turn on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 feature---since you have to pick one particular value when you set the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 variable---is @code{t}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 Emacs uses many Lisp variables for internal recordkeeping, as any Lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 program must, but the most interesting variables for you are the ones that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 exist for the sake of customization. Emacs does not (usually) change the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 values of these variables; instead, you set the values, and thereby alter
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 and control the behavior of certain Emacs commands. These variables are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 called @dfn{options}. Most options are documented in this manual and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 appear in the Variable Index (@pxref{Variable Index}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 One example of a variable which is an option is @code{fill-column}, which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 specifies the position of the right margin (as a number of characters from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 the left margin) to be used by the fill commands (@pxref{Filling}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 * Examining:: Examining or setting one variable's value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 * Easy Customization:: Convenient and easy customization of variables.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 * Edit Options:: Examining or editing list of all variables' values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 * Locals:: Per-buffer values of variables.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 * File Variables:: How files can specify variable values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 @node Examining
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 @subsection Examining and Setting Variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 @cindex setting variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 @item C-h v
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 @itemx M-x describe-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 Print the value and documentation of a variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 @findex set-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 @item M-x set-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 Change the value of a variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 @kindex C-h v
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 @findex describe-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 To examine the value of a single variable, use @kbd{C-h v}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 (@code{describe-variable}), which reads a variable name using the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 minibuffer, with completion. It prints both the value and the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 documentation of the variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 C-h v fill-column @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 prints something like:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 fill-column's value is 75
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 Documentation:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 *Column beyond which automatic line-wrapping should happen.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 Automatically becomes local when set in any fashion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 @cindex option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 The star at the beginning of the documentation indicates that this variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 is an option. @kbd{C-h v} is not restricted to options; it allows any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 variable name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 @findex set-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 If you know which option you want to set, you can use @kbd{M-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 set-variable} to set it. This prompts for the variable name in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 minibuffer (with completion), and then prompts for a Lisp expression for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 new value using the minibuffer a second time. For example,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 M-x set-variable @key{RET} fill-column @key{RET} 75 @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 sets @code{fill-column} to 75, as if you had executed the Lisp expression
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 @code{(setq fill-column 75)}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 Setting variables in this way, like all means of customizing Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 except where explicitly stated, affects only the current Emacs session.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 @node Easy Customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 @subsection Easy Customization Interface
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 @findex customize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 @cindex customization buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 A convenient way to find the user option variables that you want to
600
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
221 change, and then change them, is with @kbd{C-h C} (@code{customize}).
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
222 This command creates a @dfn{customization buffer} with which you can
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
223 browse through the Emacs user options in a logically organized
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
224 structure, then edit and set their values. You can also use the
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
225 customization buffer to save settings permanently. (Not all Emacs user
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
226 options are included in this structure as of yet, but we are adding the
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
227 rest.)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 * Groups: Customization Groups.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 How options are classified in a structure.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 * Changing an Option:: How to edit a value and set an option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 * Face Customization:: How to edit the attributes of a face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 * Specific Customization:: Making a customization buffer for specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 options, faces, or groups.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 @node Customization Groups
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 @subsubsection Customization Groups
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 @cindex customization groups
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 For customization purposes, user options are organized into
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 @dfn{groups} to help you find them. Groups are collected into bigger
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 groups, all the way up to a master group called @code{Emacs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245
602
b9f1a2e84ead [xemacs-hg @ 2001-06-01 08:17:05 by martinb]
martinb
parents: 600
diff changeset
246 @kbd{C-h C} (@code{customize}) creates a customization buffer that
600
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
247 shows the top-level @code{Emacs} group and the second-level groups
a99eebfee7d3 [xemacs-hg @ 2001-06-01 07:15:24 by martinb]
martinb
parents: 442
diff changeset
248 immediately under it. It looks like this, in part:
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 /- Emacs group: ---------------------------------------------------\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 [State]: visible group members are all at standard settings.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 Customization of the One True Editor.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 See also [Manual].
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 [Open] Editing group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 Basic text editing facilities.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 [Open] External group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 Interfacing to external utilities.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 @var{more second-level groups}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 \- Emacs group end ------------------------------------------------/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 This says that the buffer displays the contents of the @code{Emacs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 group. The other groups are listed because they are its contents. But
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 they are listed differently, without indentation and dashes, because
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 @emph{their} contents are not included. Each group has a single-line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 documentation string; the @code{Emacs} group also has a @samp{[State]}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 line.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 @cindex editable fields (customization buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 @cindex active fields (customization buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 Most of the text in the customization buffer is read-only, but it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 typically includes some @dfn{editable fields} that you can edit. There
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 are also @dfn{active fields}; this means a field that does something
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 when you @dfn{invoke} it. To invoke an active field, either click on it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 with @kbd{Mouse-1}, or move point to it and type @key{RET}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 For example, the phrase @samp{[Open]} that appears in a second-level
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 group is an active field. Invoking the @samp{[Open]} field for a group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 opens up a new customization buffer, which shows that group and its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 contents. This field is a kind of hypertext link to another group.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 The @code{Emacs} group does not include any user options itself, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 other groups do. By examining various groups, you will eventually find
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 the options and faces that belong to the feature you are interested in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 customizing. Then you can use the customization buffer to set them.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 @findex customize-browse
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 You can view the structure of customization groups on a larger scale
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 with @kbd{M-x customize-browse}. This command creates a special kind of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 customization buffer which shows only the names of the groups (and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 options and faces), and their structure.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 In this buffer, you can show the contents of a group by invoking
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 @samp{[+]}. When the group contents are visible, this button changes to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 @samp{[-]}; invoking that hides the group contents.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 Each group, option or face name in this buffer has an active field
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 which says @samp{[Group]}, @samp{[Option]} or @samp{[Face]}. Invoking
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 that active field creates an ordinary customization buffer showing just
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 that group and its contents, just that option, or just that face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 This is the way to set values in it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 @node Changing an Option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 @subsubsection Changing an Option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 Here is an example of what a user option looks like in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 customization buffer:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 Kill Ring Max: [Hide] 30
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 [State]: this option is unchanged from its standard setting.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 Maximum length of kill ring before oldest elements are thrown away.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 The text following @samp{[Hide]}, @samp{30} in this case, indicates
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 the current value of the option. If you see @samp{[Show]} instead of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 @samp{[Hide]}, it means that the value is hidden; the customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 buffer initially hides values that take up several lines. Invoke
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 @samp{[Show]} to show the value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 The line after the option name indicates the @dfn{customization state}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 of the option: in the example above, it says you have not changed the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 option yet. The word @samp{[State]} at the beginning of this line is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 active; you can get a menu of various operations by invoking it with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 @kbd{Mouse-1} or @key{RET}. These operations are essential for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 customizing the variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 The line after the @samp{[State]} line displays the beginning of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 option's documentation string. If there are more lines of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 documentation, this line ends with @samp{[More]}; invoke this to show
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 the full documentation string.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 To enter a new value for @samp{Kill Ring Max}, move point to the value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 and edit it textually. For example, you can type @kbd{M-d}, then insert
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 another number.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 When you begin to alter the text, you will see the @samp{[State]} line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 change to say that you have edited the value:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 [State]: you have edited the value as text, but not set the option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 @cindex setting option value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 Editing the value does not actually set the option variable. To do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 that, you must @dfn{set} the option. To do this, invoke the word
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 @samp{[State]} and choose @samp{Set for Current Session}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 The state of the option changes visibly when you set it:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 [State]: you have set this option, but not saved it for future sessions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 You don't have to worry about specifying a value that is not valid;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 setting the option checks for validity and will not really install an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 unacceptable value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 @kindex M-TAB @r{(customization buffer)}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 @findex widget-complete
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 While editing a value or field that is a file name, directory name,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 command name, or anything else for which completion is defined, you can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 type @kbd{M-@key{TAB}} (@code{widget-complete}) to do completion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 Some options have a small fixed set of possible legitimate values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 These options don't let you edit the value textually. Instead, an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 active field @samp{[Value Menu]} appears before the value; invoke this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 field to edit the value. For a boolean ``on or off'' value, the active
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 field says @samp{[Toggle]}, and it changes to the other value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 @samp{[Value Menu]} and @samp{[Toggle]} edit the buffer; the changes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 take effect when you use the @samp{Set for Current Session} operation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 Some options have values with complex structure. For example, the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 value of @code{load-path} is a list of directories. Here is how it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 appears in the customization buffer:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 Load Path:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 [INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/site-lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387 [INS] [DEL] [Current dir?]: /usr/local/share/emacs/site-lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 [INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/leim
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 [INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 [INS] [DEL] [Current dir?]: /build/emacs/e19/lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 [INS] [DEL] [Current dir?]: /build/emacs/e19/lisp/gnus
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 [INS]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 [State]: this item has been changed outside the customization buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 List of directories to search for files to load....
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 Each directory in the list appears on a separate line, and each line has
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 several editable or active fields.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 You can edit any of the directory names. To delete a directory from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 the list, invoke @samp{[DEL]} on that line. To insert a new directory in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 the list, invoke @samp{[INS]} at the point where you want to insert it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 You can also invoke @samp{[Current dir?]} to switch between including
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 a specific named directory in the path, and including @code{nil} in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 path. (@code{nil} in a search path means ``try the current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 directory.'')
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410 @kindex TAB @r{(customization buffer)}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 @kindex S-TAB @r{(customization buffer)}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 @findex widget-forward
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 @findex widget-backward
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 Two special commands, @key{TAB} and @kbd{S-@key{TAB}}, are useful for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 moving through the customization buffer. @key{TAB}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 (@code{widget-forward}) moves forward to the next active or editable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 field; @kbd{S-@key{TAB}} (@code{widget-backward}) moves backward to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 previous active or editable field.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 Typing @key{RET} on an editable field also moves forward, just like
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 @key{TAB}. The reason for this is that people have a tendency to type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 @key{RET} when they are finished editing a field. If you have occasion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423 to insert a newline in an editable field, use @kbd{C-o} or @kbd{C-q
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424 C-j},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 @cindex saving option value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 Setting the option changes its value in the current Emacs session;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 @dfn{saving} the value changes it for future sessions as well. This
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
429 works by writing code into your init file so as to set the option
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
430 variable again each time you start Emacs. @xref{Init File}. To save
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
431 the option, invoke @samp{[State]} and select the @samp{Save for Future
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
432 Sessions} operation.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 You can also restore the option to its standard value by invoking
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 @samp{[State]} and selecting the @samp{Reset} operation. There are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 actually three reset operations:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438 @table @samp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 @item Reset to Current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 If you have made some modifications and not yet set the option,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 this restores the text in the customization buffer to match
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 the actual value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 @item Reset to Saved
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 This restores the value of the option to the last saved value,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 and updates the text accordingly.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448 @item Reset to Standard Settings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 This sets the option to its standard value, and updates the text
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450 accordingly. This also eliminates any saved value for the option,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451 so that you will get the standard value in future Emacs sessions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 The state of a group indicates whether anything in that group has been
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
455 edited, set or saved. You can select @samp{Set for Current Session},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
456 @samp{Save for Future Sessions} and the various kinds of @samp{Reset}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
457 operation for the group; these operations on the group apply to all
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458 options in the group and its subgroups.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
460 Near the top of the customization buffer there are two lines
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
461 containing several active fields:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464 [Set] [Save] [Reset] [Done]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
465 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468 Invoking @samp{[Done]} buries this customization buffer. Each of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 other fields performs an operation---set, save or reset---on each of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
470 items in the buffer that could meaningfully be set, saved or reset.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472 @node Face Customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 @subsubsection Customizing Faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 @cindex customizing faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475 @cindex bold font
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 @cindex italic font
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477 @cindex fonts and faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 In addition to user options, some customization groups also include
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 faces. When you show the contents of a group, both the user options and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
481 the faces in the group appear in the customization buffer. Here is an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482 example of how a face looks:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 Custom Changed Face: (sample)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 [State]: this face is unchanged from its standard setting.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487 Face used when the customize item has been changed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 Parent groups: [Custom Magic Faces]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 Attributes: [ ] Bold: [Toggle] off (nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 [ ] Italic: [Toggle] off (nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491 [ ] Underline: [Toggle] off (nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492 [ ] Foreground: white (sample)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
493 [ ] Background: blue (sample)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
494 [ ] Inverse: [Toggle] off (nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495 [ ] Stipple:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
496 [ ] Font Family:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497 [ ] Size:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498 [ ] Strikethru: off
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
499 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
500
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
501 Each face attribute has its own line. The @samp{[@var{x}]} field
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
502 before the attribute name indicates whether the attribute is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
503 @dfn{enabled}; @samp{X} means that it is. You can enable or disable the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
504 attribute by invoking that field. When the attribute is enabled, you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
505 can change the attribute value in the usual ways.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
506
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
507 @c Is this true for XEmacs?
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
508 @c On a black-and-white display, the colors you can use for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
509 @c background are @samp{black}, @samp{white}, @samp{gray}, @samp{gray1},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
510 @c and @samp{gray3}. Emacs supports these shades of gray by using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
511 @c background stipple patterns instead of a color.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
512 @c
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
513 Setting, saving and resetting a face work like the same operations for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
514 options (@pxref{Changing an Option}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
515
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
516 A face can specify different appearances for different types of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
517 display. For example, a face can make text red on a color display, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
518 use a bold font on a monochrome display. To specify multiple
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
519 appearances for a face, select @samp{Show Display Types} in the menu you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
520 get from invoking @samp{[State]}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
521
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
522 @c It would be cool to implement this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
523 @c @findex modify-face
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
524 @c Another more basic way to set the attributes of a specific face is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
525 @c with @kbd{M-x modify-face}. This command reads the name of a face, then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
526 @c reads the attributes one by one. For the color and stipple attributes,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
527 @c the attribute's current value is the default---type just @key{RET} if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
528 @c you don't want to change that attribute. Type @samp{none} if you want
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
529 @c to clear out the attribute.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
530
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
531 @node Specific Customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
532 @subsubsection Customizing Specific Items
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
533
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
534 Instead of finding the options you want to change by moving down
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
535 through the structure of groups, you can specify the particular option,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
536 face or group that you want to customize.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
537
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
538 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
539 @item M-x customize-option @key{RET} @var{option} @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
540 Set up a customization buffer with just one option, @var{option}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
541 @item M-x customize-face @key{RET} @var{face} @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
542 Set up a customization buffer with just one face, @var{face}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
543 @item M-x customize-group @key{RET} @var{group} @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
544 Set up a customization buffer with just one group, @var{group}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
545 @item M-x customize-apropos @key{RET} @var{regexp} @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
546 Set up a customization buffer with all the options, faces and groups
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
547 that match @var{regexp}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
548 @item M-x customize-saved
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
549 Set up a customization buffer containing all options and faces that you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
550 have saved with customization buffers.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
551 @item M-x customize-customized
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
552 Set up a customization buffer containing all options and faces that you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
553 have customized but not saved.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
554 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
555
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
556 @findex customize-option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
557 If you want to alter a particular user option variable with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
558 customization buffer, and you know its name, you can use the command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
559 @kbd{M-x customize-option} and specify the option name. This sets up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
560 the customization buffer with just one option---the one that you asked
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
561 for. Editing, setting and saving the value work as described above, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
562 only for the specified option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
563
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
564 @findex customize-face
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
565 Likewise, you can modify a specific face, chosen by name, using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
566 @kbd{M-x customize-face}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
567
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
568 @findex customize-group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
569 You can also set up the customization buffer with a specific group,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
570 using @kbd{M-x customize-group}. The immediate contents of the chosen
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
571 group, including option variables, faces, and other groups, all appear
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
572 as well. However, these subgroups' own contents start out hidden. You
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
573 can show their contents in the usual way, by invoking @samp{[Show]}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
574
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
575 @findex customize-apropos
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
576 To control more precisely what to customize, you can use @kbd{M-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
577 customize-apropos}. You specify a regular expression as argument; then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
578 all options, faces and groups whose names match this regular expression
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
579 are set up in the customization buffer. If you specify an empty regular
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
580 expression, this includes @emph{all} groups, options and faces in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
581 customization buffer (but that takes a long time).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
582
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
583 @findex customize-saved
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
584 @findex customize-customized
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
585 If you change option values and then decide the change was a mistake,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
586 you can use two special commands to revisit your previous changes. Use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
587 @kbd{customize-saved} to look at the options and faces that you have
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
588 saved. Use @kbd{M-x customize-customized} to look at the options and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
589 faces that you have set but not saved.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
590
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
591 @node Edit Options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
592 @subsection Editing Variable Values
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
593
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
594 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
595 @item M-x list-options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
596 Display a buffer listing names, values, and documentation of all options.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
597 @item M-x edit-options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
598 Change option values by editing a list of options.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
599 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
600
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
601 @findex list-options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
602 @kbd{M-x list-options} displays a list of all Emacs option variables in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
603 an Emacs buffer named @samp{*List Options*}. Each option is shown with its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
604 documentation and its current value. Here is what a portion of it might
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
605 look like:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
606
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
607 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
608 ;; exec-path:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
609 ("." "/usr/local/bin" "/usr/ucb" "/bin" "/usr/bin" "/u2/emacs/etc")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
610 *List of directories to search programs to run in subprocesses.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
611 Each element is a string (directory name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
612 or nil (try the default directory).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
613 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
614 ;; fill-column:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
615 75
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
616 *Column beyond which automatic line-wrapping should happen.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
617 Automatically becomes local when set in any fashion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
618 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
619 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
620
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
621 @findex edit-options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
622 @kbd{M-x edit-options} goes one step further and immediately selects the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
623 @samp{*List Options*} buffer; this buffer uses the major mode Options mode,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
624 which provides commands that allow you to point at an option and change its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
625 value:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
626
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
627 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
628 @item s
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
629 Set the variable point is in or near to a new value read using the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
630 minibuffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
631 @item x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
632 Toggle the variable point is in or near: if the value was @code{nil},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
633 it becomes @code{t}; otherwise it becomes @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
634 @item 1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
635 Set the variable point is in or near to @code{t}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
636 @item 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
637 Set the variable point is in or near to @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
638 @item n
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
639 @itemx p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
640 Move to the next or previous variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
641 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
642
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
643 @node Locals
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
644 @subsection Local Variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
645
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
646 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
647 @item M-x make-local-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
648 Make a variable have a local value in the current buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
649 @item M-x kill-local-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
650 Make a variable use its global value in the current buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
651 @item M-x make-variable-buffer-local
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
652 Mark a variable so that setting it will make it local to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
653 buffer that is current at that time.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
654 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
655
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
656 @cindex local variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
657 You can make any variable @dfn{local} to a specific Emacs buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
658 This means that the variable's value in that buffer is independent of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
659 its value in other buffers. A few variables are always local in every
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
660 buffer. All other Emacs variables have a @dfn{global} value which is in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
661 effect in all buffers that have not made the variable local.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
662
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
663 Major modes always make the variables they set local to the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
664 This is why changing major modes in one buffer has no effect on other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
665 buffers.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
666
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
667 @findex make-local-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
668 @kbd{M-x make-local-variable} reads the name of a variable and makes it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
669 local to the current buffer. Further changes in this buffer will not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
670 affect others, and changes in the global value will not affect this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
671 buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
672
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
673 @findex make-variable-buffer-local
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
674 @cindex per-buffer variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
675 @kbd{M-x make-variable-buffer-local} reads the name of a variable and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
676 changes the future behavior of the variable so that it automatically
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
677 becomes local when it is set. More precisely, once you have marked a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
678 variable in this way, the usual ways of setting the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
679 variable will automatically invoke @code{make-local-variable} first. We
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
680 call such variables @dfn{per-buffer} variables.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
681
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
682 Some important variables have been marked per-buffer already. They
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
683 include @code{abbrev-mode}, @code{auto-fill-function},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
684 @code{case-fold-search}, @code{comment-column}, @code{ctl-arrow},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
685 @code{fill-column}, @code{fill-prefix}, @code{indent-tabs-mode},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
686 @code{left-margin}, @*@code{mode-line-format}, @code{overwrite-mode},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
687 @code{selective-display-ellipses}, @*@code{selective-display},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
688 @code{tab-width}, and @code{truncate-lines}. Some other variables are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
689 always local in every buffer, but they are used for internal
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
690 purposes.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
691
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
692 Note: the variable @code{auto-fill-function} was formerly named
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
693 @code{auto-fill-hook}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
694
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
695 @findex kill-local-variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
696 If you want a variable to cease to be local to the current buffer,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
697 call @kbd{M-x kill-local-variable} and provide the name of a variable to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
698 the prompt. The global value of the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
699 is again in effect in this buffer. Setting the major mode kills all
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
700 the local variables of the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
701
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
702 @findex setq-default
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
703 To set the global value of a variable, regardless of whether the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
704 variable has a local value in the current buffer, you can use the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
705 Lisp function @code{setq-default}. It works like @code{setq}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
706 If there is a local value in the current buffer, the local value is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
707 not affected by @code{setq-default}; thus, the new global value may
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
708 not be visible until you switch to another buffer, as in the case of:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
709
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
710 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
711 (setq-default fill-column 75)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
712 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
713
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
714 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
715 @code{setq-default} is the only way to set the global value of a variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
716 that has been marked with @code{make-variable-buffer-local}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
717
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
718 @findex default-value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
719 Programs can look at a variable's default value with @code{default-value}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
720 This function takes a symbol as an argument and returns its default value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
721 The argument is evaluated; usually you must quote it explicitly, as in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
722 the case of:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
723
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
724 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
725 (default-value 'fill-column)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
726 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
727
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
728 @node File Variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
729 @subsection Local Variables in Files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
730 @cindex local variables in files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
731
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
732 A file can contain a @dfn{local variables list}, which specifies the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
733 values to use for certain Emacs variables when that file is edited.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
734 Visiting the file checks for a local variables list and makes each variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
735 in the list local to the buffer in which the file is visited, with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
736 value specified in the file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
737
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
738 A local variables list goes near the end of the file, in the last page.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
739 (It is often best to put it on a page by itself.) The local variables list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
740 starts with a line containing the string @samp{Local Variables:}, and ends
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
741 with a line containing the string @samp{End:}. In between come the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
742 variable names and values, one set per line, as @samp{@var{variable}:@:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
743 @var{value}}. The @var{value}s are not evaluated; they are used literally.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
744
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
745 The line which starts the local variables list does not have to say
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
746 just @samp{Local Variables:}. If there is other text before @samp{Local
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
747 Variables:}, that text is called the @dfn{prefix}, and if there is other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
748 text after, that is called the @dfn{suffix}. If a prefix or suffix are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
749 present, each entry in the local variables list should have the prefix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
750 before it and the suffix after it. This includes the @samp{End:} line.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
751 The prefix and suffix are included to disguise the local variables list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
752 as a comment so the compiler or text formatter will ignore it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
753 If you do not need to disguise the local variables list as a comment in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
754 this way, there is no need to include a prefix or a suffix.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
755
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
756 Two ``variable'' names are special in a local variables list: a value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
757 for the variable @code{mode} sets the major mode, and a value for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
758 variable @code{eval} is simply evaluated as an expression and the value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
759 is ignored. These are not real variables; setting them in any other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
760 context does not have the same effect. If @code{mode} is used in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
761 local variables list, it should be the first entry in the list.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
762
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
763 Here is an example of a local variables list:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
764 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
765 ;;; Local Variables: ***
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
766 ;;; mode:lisp ***
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
767 ;;; comment-column:0 ***
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
768 ;;; comment-start: ";;; " ***
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
769 ;;; comment-end:"***" ***
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
770 ;;; End: ***
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
771 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
772
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
773 Note that the prefix is @samp{;;; } and the suffix is @samp{ ***}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
774 Note also that comments in the file begin with and end with the same
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
775 strings. Presumably the file contains code in a language which is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
776 enough like Lisp for Lisp mode to be useful but in which comments
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
777 start and end differently. The prefix and suffix are used in the local
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
778 variables list to make the list look like several lines of comments when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
779 the compiler or interpreter for that language reads the file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
780
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
781 The start of the local variables list must be no more than 3000
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
782 characters from the end of the file, and must be in the last page if the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
783 file is divided into pages. Otherwise, Emacs will not notice it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
784 there. The purpose is twofold: a stray @samp{Local Variables:}@: not in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
785 the last page does not confuse Emacs, and Emacs never needs to search a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
786 long file that contains no page markers and has no local variables list.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
787
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
788 You may be tempted to turn on Auto Fill mode with a local variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
789 list. That is inappropriate. Whether you use Auto Fill mode or not is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
790 a matter of personal taste, not a matter of the contents of particular
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
791 files. If you want to use Auto Fill, set up major mode hooks with your
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
792 init file to turn it on (when appropriate) for you alone
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
793 (@pxref{Init File}). Don't try to use a local variable list that would
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
794 impose your taste on everyone working with the file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
795
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
796 XEmacs allows you to specify local variables in the first line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
797 of a file, in addition to specifying them in the @code{Local Variables}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
798 section at the end of a file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
799
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
800 If the first line of a file contains two occurrences of @code{`-*-'},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
801 XEmacs uses the information between them to determine what the major
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
802 mode and variable settings should be. For example, these are all legal:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
803
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
804 @example
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
805 ;;; -*- mode: emacs-lisp -*-
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
806 ;;; -*- mode: postscript; version-control: never -*-
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
807 ;;; -*- tags-file-name: "/foo/bar/TAGS" -*-
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
808 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
809
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
810 For historical reasons, the syntax @code{`-*- modename -*-'} is allowed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
811 as well; for example, you can use:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
812
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
813 @example
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
814 ;;; -*- emacs-lisp -*-
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
815 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
816
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
817 @vindex enable-local-variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
818 The variable @code{enable-local-variables} controls the use of local
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
819 variables lists in files you visit. The value can be @code{t},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
820 @code{nil}, or something else. A value of @code{t} means local variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
821 lists are obeyed; @code{nil} means they are ignored; anything else means
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
822 query.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
823
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
824 The command @code{M-x normal-mode} always obeys local variables lists
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
825 and ignores this variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
826
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
827 @node Keyboard Macros
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
828 @section Keyboard Macros
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
829
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
830 @cindex keyboard macros
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
831 A @dfn{keyboard macro} is a command defined by the user to abbreviate a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
832 sequence of keys. For example, if you discover that you are about to type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
833 @kbd{C-n C-d} forty times, you can speed your work by defining a keyboard
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
834 macro to invoke @kbd{C-n C-d} and calling it with a repeat count of forty.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
835
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
836 @c widecommands
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
837 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
838 @item C-x (
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
839 Start defining a keyboard macro (@code{start-kbd-macro}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
840 @item C-x )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
841 End the definition of a keyboard macro (@code{end-kbd-macro}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
842 @item C-x e
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
843 Execute the most recent keyboard macro (@code{call-last-kbd-macro}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
844 @item C-u C-x (
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
845 Re-execute last keyboard macro, then add more keys to its definition.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
846 @item C-x q
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
847 When this point is reached during macro execution, ask for confirmation
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
848 (@code{kbd-macro-query}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
849 @item M-x name-last-kbd-macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
850 Give a command name (for the duration of the session) to the most
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
851 recently defined keyboard macro.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
852 @item M-x insert-kbd-macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
853 Insert in the buffer a keyboard macro's definition, as Lisp code.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
854 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
855
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
856 Keyboard macros differ from other Emacs commands in that they are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
857 written in the Emacs command language rather than in Lisp. This makes it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
858 easier for the novice to write them and makes them more convenient as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
859 temporary hacks. However, the Emacs command language is not powerful
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
860 enough as a programming language to be useful for writing anything
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
861 general or complex. For such things, Lisp must be used.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
862
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
863 You define a keyboard macro by executing the commands which are its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
864 definition. Put differently, as you are defining a keyboard macro, the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
865 definition is being executed for the first time. This way, you see
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
866 what the effects of your commands are, and don't have to figure
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
867 them out in your head. When you are finished, the keyboard macro is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
868 defined and also has been executed once. You can then execute the same
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
869 set of commands again by invoking the macro.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
870
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
871 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
872 * Basic Kbd Macro:: Defining and running keyboard macros.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
873 * Save Kbd Macro:: Giving keyboard macros names; saving them in files.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
874 * Kbd Macro Query:: Keyboard macros that do different things each use.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
875 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
876
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
877 @node Basic Kbd Macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
878 @subsection Basic Use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
879
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
880 @kindex C-x (
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
881 @kindex C-x )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
882 @kindex C-x e
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
883 @findex start-kbd-macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
884 @findex end-kbd-macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
885 @findex call-last-kbd-macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
886 To start defining a keyboard macro, type @kbd{C-x (}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
887 (@code{start-kbd-macro}). From then on, anything you type continues to be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
888 executed, but also becomes part of the definition of the macro. @samp{Def}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
889 appears in the mode line to remind you of what is going on. When you are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
890 finished, the @kbd{C-x )} command (@code{end-kbd-macro}) terminates the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
891 definition, without becoming part of it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
892
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
893 For example,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
894
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
895 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
896 C-x ( M-f foo C-x )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
897 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
898
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
899 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
900 defines a macro to move forward a word and then insert @samp{foo}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
901
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
902 You can give @kbd{C-x )} a repeat count as an argument, in which case it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
903 repeats the macro that many times right after defining it, but defining
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
904 the macro counts as the first repetition (since it is executed as you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
905 define it). If you give @kbd{C-x )} an argument of 4, it executes the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
906 macro immediately 3 additional times. An argument of zero to @kbd{C-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
907 e} or @kbd{C-x )} means repeat the macro indefinitely (until it gets an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
908 error or you type @kbd{C-g}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
909
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
910 Once you have defined a macro, you can invoke it again with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
911 @kbd{C-x e} command (@code{call-last-kbd-macro}). You can give the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
912 command a repeat count numeric argument to execute the macro many times.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
913
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
914 To repeat an operation at regularly spaced places in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
915 text, define a macro and include as part of the macro the commands to move
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
916 to the next place you want to use it. For example, if you want to change
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
917 each line, you should position point at the start of a line, and define a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
918 macro to change that line and leave point at the start of the next line.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
919 Repeating the macro will then operate on successive lines.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
920
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
921 After you have terminated the definition of a keyboard macro, you can add
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
922 to the end of its definition by typing @kbd{C-u C-x (}. This is equivalent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
923 to plain @kbd{C-x (} followed by retyping the whole definition so far. As
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
924 a consequence it re-executes the macro as previously defined.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
925
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
926 @node Save Kbd Macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
927 @subsection Naming and Saving Keyboard Macros
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
928
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
929 @findex name-last-kbd-macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
930 To save a keyboard macro for longer than until you define the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
931 next one, you must give it a name using @kbd{M-x name-last-kbd-macro}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
932 This reads a name as an argument using the minibuffer and defines that name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
933 to execute the macro. The macro name is a Lisp symbol, and defining it in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
934 this way makes it a valid command name for calling with @kbd{M-x} or for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
935 binding a key to with @code{global-set-key} (@pxref{Keymaps}). If you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
936 specify a name that has a prior definition other than another keyboard
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
937 macro, Emacs prints an error message and nothing is changed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
938
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
939 @findex insert-kbd-macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
940 Once a macro has a command name, you can save its definition in a file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
941 You can then use it in another editing session. First visit the file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
942 you want to save the definition in. Then use the command:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
943
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
944 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
945 M-x insert-kbd-macro @key{RET} @var{macroname} @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
946 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
947
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
948 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
949 This inserts some Lisp code that, when executed later, will define the same
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
950 macro with the same definition it has now. You need not understand Lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
951 code to do this, because @code{insert-kbd-macro} writes the Lisp code for you.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
952 Then save the file. You can load the file with @code{load-file}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
953 (@pxref{Lisp Libraries}). If the file you save in is your initialization file
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
954 (@pxref{Init File}), then the macro will be defined each
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
955 time you run Emacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
956
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
957 If you give @code{insert-kbd-macro} a prefix argument, it creates
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
958 additional Lisp code to record the keys (if any) that you have bound to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
959 keyboard macro, so that the macro is reassigned the same keys when you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
960 load the file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
961
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
962 @node Kbd Macro Query
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
963 @subsection Executing Macros With Variations
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
964
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
965 @kindex C-x q
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
966 @findex kbd-macro-query
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
967 You can use @kbd{C-x q} (@code{kbd-macro-query}), to get an effect similar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
968 to that of @code{query-replace}. The macro asks you each time
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
969 whether to make a change. When you are defining the macro, type @kbd{C-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
970 q} at the point where you want the query to occur. During macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
971 definition, the @kbd{C-x q} does nothing, but when you invoke the macro,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
972 @kbd{C-x q} reads a character from the terminal to decide whether to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
973 continue.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
974
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
975 The special answers to a @kbd{C-x q} query are @key{SPC}, @key{DEL},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
976 @kbd{C-d}, @kbd{C-l}, and @kbd{C-r}. Any other character terminates
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
977 execution of the keyboard macro and is then read as a command.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
978 @key{SPC} means to continue. @key{DEL} means to skip the remainder of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
979 this repetition of the macro, starting again from the beginning in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
980 next repetition. @kbd{C-d} means to skip the remainder of this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
981 repetition and cancel further repetition. @kbd{C-l} redraws the frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
982 and asks you again for a character to specify what to do. @kbd{C-r} enters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
983 a recursive editing level, in which you can perform editing that is not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
984 part of the macro. When you exit the recursive edit using @kbd{C-M-c},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
985 you are asked again how to continue with the keyboard macro. If you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
986 type a @key{SPC} at this time, the rest of the macro definition is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
987 executed. It is up to you to leave point and the text in a state such
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
988 that the rest of the macro will do what you want.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
989
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
990 @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument, performs a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
991 different function. It enters a recursive edit reading input from the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
992 keyboard, both when you type it during the definition of the macro and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
993 when it is executed from the macro. During definition, the editing you do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
994 inside the recursive edit does not become part of the macro. During macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
995 execution, the recursive edit gives you a chance to do some particularized
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
996 editing. @xref{Recursive Edit}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
997
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
998 @node Key Bindings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
999 @section Customizing Key Bindings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1000
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1001 This section deals with the @dfn{keymaps} that define the bindings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1002 between keys and functions, and shows how you can customize these bindings.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1003 @cindex command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1004 @cindex function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1005 @cindex command name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1006
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1007 A command is a Lisp function whose definition provides for interactive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1008 use. Like every Lisp function, a command has a function name, which is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1009 a Lisp symbol whose name usually consists of lower case letters and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1010 hyphens.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1011
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1012 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1013 * Keymaps:: Definition of the keymap data structure.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1014 Names of Emacs's standard keymaps.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1015 * Rebinding:: How to redefine one key's meaning conveniently.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1016 * Disabling:: Disabling a command means confirmation is required
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1017 before it can be executed. This is done to protect
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1018 beginners from surprises.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1019 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1020
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1021 @node Keymaps
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1022 @subsection Keymaps
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1023 @cindex keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1024
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1025 @cindex global keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1026 @vindex global-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1027 The bindings between characters and command functions are recorded in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1028 data structures called @dfn{keymaps}. Emacs has many of these. One, the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1029 @dfn{global} keymap, defines the meanings of the single-character keys that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1030 are defined regardless of major mode. It is the value of the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1031 @code{global-map}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1032
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1033 @cindex local keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1034 @vindex c-mode-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1035 @vindex lisp-mode-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1036 Each major mode has another keymap, its @dfn{local keymap}, which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1037 contains overriding definitions for the single-character keys that are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1038 redefined in that mode. Each buffer records which local keymap is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1039 installed for it at any time, and the current buffer's local keymap is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1040 the only one that directly affects command execution. The local keymaps
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1041 for Lisp mode, C mode, and many other major modes always exist even when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1042 not in use. They are the values of the variables @code{lisp-mode-map},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1043 @code{c-mode-map}, and so on. For less frequently used major modes, the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1044 local keymap is sometimes constructed only when the mode is used for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1045 first time in a session, to save space.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1046
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1047 @cindex minibuffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1048 @vindex minibuffer-local-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1049 @vindex minibuffer-local-ns-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1050 @vindex minibuffer-local-completion-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1051 @vindex minibuffer-local-must-match-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1052 @vindex repeat-complex-command-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1053 @vindex isearch-mode-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1054 There are local keymaps for the minibuffer, too; they contain various
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1055 completion and exit commands.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1056
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1057 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1058 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1059 @code{minibuffer-local-map} is used for ordinary input (no completion).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1060 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1061 @code{minibuffer-local-ns-map} is similar, except that @key{SPC} exits
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1062 just like @key{RET}. This is used mainly for Mocklisp compatibility.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1063 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1064 @code{minibuffer-local-completion-map} is for permissive completion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1065 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1066 @code{minibuffer-local-must-match-map} is for strict completion and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1067 for cautious completion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1068 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1069 @code{repeat-complex-command-map} is for use in @kbd{C-x @key{ESC}}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1070 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1071 @code{isearch-mode-map} contains the bindings of the special keys which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1072 are bound in the pseudo-mode entered with @kbd{C-s} and @kbd{C-r}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1073 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1074
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1075 @vindex ctl-x-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1076 @vindex help-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1077 @vindex esc-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1078 Finally, each prefix key has a keymap which defines the key sequences
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1079 that start with it. For example, @code{ctl-x-map} is the keymap used for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1080 characters following a @kbd{C-x}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1081
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1082 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1083 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1084 @code{ctl-x-map} is the variable name for the map used for characters that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1085 follow @kbd{C-x}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1086 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1087 @code{help-map} is used for characters that follow @kbd{C-h}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1088 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1089 @code{esc-map} is for characters that follow @key{ESC}. All Meta
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1090 characters are actually defined by this map.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1091 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1092 @code{ctl-x-4-map} is for characters that follow @kbd{C-x 4}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1093 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1094 @code{mode-specific-map} is for characters that follow @kbd{C-c}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1095 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1096
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1097 The definition of a prefix key is the keymap to use for looking up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1098 the following character. Sometimes the definition is actually a Lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1099 symbol whose function definition is the following character keymap. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1100 effect is the same, but it provides a command name for the prefix key that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1101 you can use as a description of what the prefix key is for. Thus the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1102 binding of @kbd{C-x} is the symbol @code{Ctl-X-Prefix}, whose function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1103 definition is the keymap for @kbd{C-x} commands, the value of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1104 @code{ctl-x-map}.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1105
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1106 Prefix key definitions can appear in either the global
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1107 map or a local map. The definitions of @kbd{C-c}, @kbd{C-x}, @kbd{C-h},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1108 and @key{ESC} as prefix keys appear in the global map, so these prefix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1109 keys are always available. Major modes can locally redefine a key as a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1110 prefix by putting a prefix key definition for it in the local
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1111 map.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1112
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1113 A mode can also put a prefix definition of a global prefix character such
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1114 as @kbd{C-x} into its local map. This is how major modes override the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1115 definitions of certain keys that start with @kbd{C-x}. This case is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1116 special, because the local definition does not entirely replace the global
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1117 one. When both the global and local definitions of a key are other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1118 keymaps, the next character is looked up in both keymaps, with the local
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1119 definition overriding the global one. The character after the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1120 @kbd{C-x} is looked up in both the major mode's own keymap for redefined
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1121 @kbd{C-x} commands and in @code{ctl-x-map}. If the major mode's own keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1122 for @kbd{C-x} commands contains @code{nil}, the definition from the global
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1123 keymap for @kbd{C-x} commands is used.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1124
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1125 @node Rebinding
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1126 @subsection Changing Key Bindings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1127 @cindex key rebinding, this session
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1128 @cindex rebinding keys, this session
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1129
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1130 You can redefine an Emacs key by changing its entry in a keymap.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1131 You can change the global keymap, in which case the change is effective in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1132 all major modes except those that have their own overriding local
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1133 definitions for the same key. Or you can change the current buffer's
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1134 local map, which affects all buffers using the same major mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1135
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1136 @menu
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1137 * Interactive Rebinding:: Changing Key Bindings Interactively
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1138 * Programmatic Rebinding:: Changing Key Bindings Programmatically
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1139 * Key Bindings Using Strings:: Using Strings for Changing Key Bindings
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1140 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1141
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1142 @node Interactive Rebinding
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1143 @subsubsection Changing Key Bindings Interactively
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1144 @findex global-set-key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1145 @findex local-set-key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1146 @findex local-unset-key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1147
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1148 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1149 @item M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1150 Defines @var{key} globally to run @var{cmd}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1151 @item M-x local-set-key @key{RET} @var{keys} @var{cmd} @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1152 Defines @var{key} locally (in the major mode now in effect) to run
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1153 @var{cmd}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1154 @item M-x local-unset-key @key{RET} @var{keys} @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1155 Removes the local binding of @var{key}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1156 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1157
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1158 @var{cmd} is a symbol naming an interactively-callable function.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1159
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1160 When called interactively, @var{key} is the next complete key sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1161 that you type. When called as a function, @var{key} is a string, a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1162 vector of events, or a vector of key-description lists as described in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1163 the @code{define-key} function description. The binding goes in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1164 the current buffer's local map, which is shared with other buffers in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1165 the same major mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1166
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1167 The following example:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1168
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1169 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1170 M-x global-set-key @key{RET} C-f next-line @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1171 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1172
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1173 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1174 redefines @kbd{C-f} to move down a line. The fact that @var{cmd} is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1175 read second makes it serve as a kind of confirmation for @var{key}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1176
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1177 These functions offer no way to specify a particular prefix keymap as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1178 the one to redefine in, but that is not necessary, as you can include
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1179 prefixes in @var{key}. @var{key} is read by reading characters one by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1180 one until they amount to a complete key (that is, not a prefix key).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1181 Thus, if you type @kbd{C-f} for @var{key}, Emacs enters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1182 the minibuffer immediately to read @var{cmd}. But if you type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1183 @kbd{C-x}, another character is read; if that character is @kbd{4},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1184 another character is read, and so on. For example,@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1185
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1186 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1187 M-x global-set-key @key{RET} C-x 4 $ spell-other-window @key{RET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1188 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1189
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1190 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1191 redefines @kbd{C-x 4 $} to run the (fictitious) command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1192 @code{spell-other-window}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1193
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1194 @findex define-key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1195 @findex substitute-key-definition
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1196 The most general way to modify a keymap is the function
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1197 @code{define-key}, used in Lisp code (such as your init file).
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1198 @code{define-key} takes three arguments: the keymap, the key to modify
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1199 in it, and the new definition. @xref{Init File}, for an example.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1200 @code{substitute-key-definition} is used similarly; it takes three
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1201 arguments, an old definition, a new definition, and a keymap, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1202 redefines in that keymap all keys that were previously defined with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1203 old definition to have the new definition instead.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1204
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1205 @node Programmatic Rebinding
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1206 @subsubsection Changing Key Bindings Programmatically
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1207
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1208 You can use the functions @code{global-set-key} and @code{define-key}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1209 to rebind keys under program control.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1210
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1211 @findex define-key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1212 @findex global-set-key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1213
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1214 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1215 @item @code{(global-set-key @var{keys} @var{cmd})}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1216 Defines @var{keys} globally to run @var{cmd}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1217 @item @code{(define-key @var{keymap} @var{keys} @var{def})}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1218 Defines @var{keys} to run @var{def} in the keymap @var{keymap}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1219 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1220
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1221 @var{keymap} is a keymap object.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1222
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1223 @var{keys} is the sequence of keystrokes to bind.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1224
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1225 @var{def} is anything that can be a key's definition:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1226
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1227 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1228 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1229 @code{nil}, meaning key is undefined in this keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1230 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1231 A command, that is, a Lisp function suitable for interactive calling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1232 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1233 A string or key sequence vector, which is treated as a keyboard macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1234 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1235 A keymap to define a prefix key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1236 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1237 A symbol so that when the key is looked up, the symbol stands for its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1238 function definition, which should at that time be one of the above,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1239 or another symbol whose function definition is used, and so on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1240 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1241 A cons, @code{(string . defn)}, meaning that @var{defn} is the definition
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1242 (@var{defn} should be a valid definition in its own right)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1243 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1244 A cons, @code{(keymap . char)}, meaning use the definition of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1245 @var{char} in map @var{keymap}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1246 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1247
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1248 For backward compatibility, XEmacs allows you to specify key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1249 sequences as strings. However, the preferred method is to use the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1250 representations of key sequences as vectors of keystrokes.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1251 @xref{Keystrokes}, for more information about the rules for constructing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1252 key sequences.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1253
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1254 Emacs allows you to abbreviate representations for key sequences in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1255 most places where there is no ambiguity.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1256 Here are some rules for abbreviation:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1257
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1258 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1259 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1260 The keysym by itself is equivalent to a list of just that keysym, i.e.,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1261 @code{f1} is equivalent to @code{(f1)}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1262 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1263 A keystroke by itself is equivalent to a vector containing just that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1264 keystroke, i.e., @code{(control a)} is equivalent to @code{[(control a)]}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1265 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1266 You can use ASCII codes for keysyms that have them. i.e.,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1267 @code{65} is equivalent to @code{A}. (This is not so much an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1268 abbreviation as an alternate representation.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1269 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1270
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1271 Here are some examples of programmatically binding keys:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1272
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1273 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1274
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1275 ;;; Bind @code{my-command} to @key{f1}
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1276 (global-set-key 'f1 'my-command)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1277
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1278 ;;; Bind @code{my-command} to @kbd{Shift-f1}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1279 (global-set-key '(shift f1) 'my-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1280
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1281 ;;; Bind @code{my-command} to @kbd{C-c Shift-f1}
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1282 (global-set-key '[(control c) (shift f1)] 'my-command)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1283
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1284 ;;; Bind @code{my-command} to the middle mouse button.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1285 (global-set-key 'button2 'my-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1286
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1287 ;;; Bind @code{my-command} to @kbd{@key{META} @key{CTL} @key{Right Mouse Button}}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1288 ;;; in the keymap that is in force when you are running @code{dired}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1289 (define-key dired-mode-map '(meta control button3) 'my-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1290
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1291 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1292
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1293 @comment ;; note that these next four lines are not synonymous:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1294 @comment ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1295 @comment (global-set-key '(meta control delete) 'my-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1296 @comment (global-set-key '(meta control backspace) 'my-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1297 @comment (global-set-key '(meta control h) 'my-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1298 @comment (global-set-key '(meta control H) 'my-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1299 @comment
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1300 @comment ;; note that this binds two key sequences: ``control-j'' and ``linefeed''.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1301 @comment ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1302 @comment (global-set-key "\^J" 'my-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1303
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1304 @node Key Bindings Using Strings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1305 @subsubsection Using Strings for Changing Key Bindings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1306
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1307 For backward compatibility, you can still use strings to represent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1308 key sequences. Thus you can use commands like the following:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1309
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1310 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1311 ;;; Bind @code{end-of-line} to @kbd{C-f}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1312 (global-set-key "\C-f" 'end-of-line)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1313 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1314
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1315 Note, however, that in some cases you may be binding more than one
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1316 key sequence by using a single command. This situation can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1317 arise because in ASCII, @kbd{C-i} and @key{TAB} have
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1318 the same representation. Therefore, when Emacs sees:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1319
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1320 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1321 (global-set-key "\C-i" 'end-of-line)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1322 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1323
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1324 it is unclear whether the user intended to bind @kbd{C-i} or @key{TAB}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1325 The solution XEmacs adopts is to bind both of these key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1326 sequences.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1327
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1328 @cindex redefining keys
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1329 After binding a command to two key sequences with a form like:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1330
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1331 @example
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1332 (define-key global-map "\^X\^I" 'command-1)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1333 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1334
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1335 it is possible to redefine only one of those sequences like so:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1336
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1337 @example
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1338 (define-key global-map [(control x) (control i)] 'command-2)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1339 (define-key global-map [(control x) tab] 'command-3)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1340 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1341
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1342 This applies only when running under a window system. If you are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1343 talking to Emacs through an ASCII-only channel, you do not get any of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1344 these features.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1345
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1346 Here is a table of pairs of key sequences that behave in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1347 similar fashion:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1348
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1349 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1350 control h backspace
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1351 control l clear
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1352 control i tab
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1353 control m return
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1354 control j linefeed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1355 control [ escape
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1356 control @@ control space
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1357 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1358
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1359 @node Disabling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1360 @subsection Disabling Commands
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1361 @cindex disabled command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1362
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1363 Disabling a command marks it as requiring confirmation before it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1364 can be executed. The purpose of disabling a command is to prevent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1365 beginning users from executing it by accident and being confused.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1366
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1367 The direct mechanism for disabling a command is to have a non-@code{nil}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1368 @code{disabled} property on the Lisp symbol for the command. These
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1369 properties are normally set by the user's init file with
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1370 Lisp expressions such as:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1372 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1373 (put 'delete-region 'disabled t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1374 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1375
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1376 @xref{Init File}.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1377
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1378 If the value of the @code{disabled} property is a string, that string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1379 is included in the message printed when the command is used:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1380
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1381 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1382 (put 'delete-region 'disabled
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1383 "Text deleted this way cannot be yanked back!\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1384 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1385
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1386 @findex disable-command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1387 @findex enable-command
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1388 You can disable a command either by editing the init file
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1389 directly or with the command @kbd{M-x disable-command}, which edits the
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1390 init file for you. @xref{Init File}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1391
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1392 When you attempt to invoke a disabled command interactively in Emacs,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1393 a window is displayed containing the command's name, its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1394 documentation, and some instructions on what to do next; then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1395 Emacs asks for input saying whether to execute the command as requested,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1396 enable it and execute, or cancel it. If you decide to enable the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1397 command, you are asked whether to do this permanently or just for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1398 current session. Enabling permanently works by automatically editing
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1399 your init file. You can use @kbd{M-x enable-command} at any
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1400 time to enable any command permanently.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1401
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1402 Whether a command is disabled is independent of what key is used to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1403 invoke it; it also applies if the command is invoked using @kbd{M-x}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1404 Disabling a command has no effect on calling it as a function from Lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1405 programs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1406
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1407 @node Syntax
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1408 @section The Syntax Table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1409 @cindex syntax table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1410
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1411 All the Emacs commands which parse words or balance parentheses are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1412 controlled by the @dfn{syntax table}. The syntax table specifies which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1413 characters are opening delimiters, which are parts of words, which are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1414 string quotes, and so on. Actually, each major mode has its own syntax
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1415 table (though sometimes related major modes use the same one) which it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1416 installs in each buffer that uses that major mode. The syntax table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1417 installed in the current buffer is the one that all commands use, so we
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1418 call it ``the'' syntax table. A syntax table is a Lisp object, a vector of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1419 length 256 whose elements are numbers.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1420
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1421 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1422 * Entry: Syntax Entry. What the syntax table records for each character.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1423 * Change: Syntax Change. How to change the information.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1424 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1425
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1426 @node Syntax Entry
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1427 @subsection Information About Each Character
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1429 The syntax table entry for a character is a number that encodes six
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1430 pieces of information:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1431
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1432 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1433 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1434 The syntactic class of the character, represented as a small integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1435 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1436 The matching delimiter, for delimiter characters only
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1437 (the matching delimiter of @samp{(} is @samp{)}, and vice versa)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1438 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1439 A flag saying whether the character is the first character of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1440 two-character comment starting sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1441 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1442 A flag saying whether the character is the second character of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1443 two-character comment starting sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1444 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1445 A flag saying whether the character is the first character of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1446 two-character comment ending sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1447 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1448 A flag saying whether the character is the second character of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1449 two-character comment ending sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1450 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1451
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1452 The syntactic classes are stored internally as small integers, but are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1453 usually described to or by the user with characters. For example, @samp{(}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1454 is used to specify the syntactic class of opening delimiters. Here is a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1455 table of syntactic classes, with the characters that specify them.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1456
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1457 @table @samp
871
732270854293 [xemacs-hg @ 2002-06-11 19:28:14 by adrian]
adrian
parents: 775
diff changeset
1458 @item @w{-}
732270854293 [xemacs-hg @ 2002-06-11 19:28:14 by adrian]
adrian
parents: 775
diff changeset
1459 The class of whitespace characters. Please don't use the formerly
732270854293 [xemacs-hg @ 2002-06-11 19:28:14 by adrian]
adrian
parents: 775
diff changeset
1460 advertised @w{ }, which is not supported by GNU Emacs.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1461 @item w
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1462 The class of word-constituent characters.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1463 @item _
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1464 The class of characters that are part of symbol names but not words.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1465 This class is represented by @samp{_} because the character @samp{_}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1466 has this class in both C and Lisp.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1467 @item .
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1468 The class of punctuation characters that do not fit into any other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1469 special class.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1470 @item (
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1471 The class of opening delimiters.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1472 @item )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1473 The class of closing delimiters.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1474 @item '
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1475 The class of expression-adhering characters. These characters are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1476 part of a symbol if found within or adjacent to one, and are part
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1477 of a following expression if immediately preceding one, but are like
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1478 whitespace if surrounded by whitespace.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1479 @item "
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1480 The class of string-quote characters. They match each other in pairs,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1481 and the characters within the pair all lose their syntactic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1482 significance except for the @samp{\} and @samp{/} classes of escape
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1483 characters, which can be used to include a string-quote inside the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1484 string.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1485 @item $
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1486 The class of self-matching delimiters. This is intended for @TeX{}'s
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1487 @samp{$}, which is used both to enter and leave math mode. Thus,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1488 a pair of matching @samp{$} characters surround each piece of math mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1489 @TeX{} input. A pair of adjacent @samp{$} characters act like a single
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1490 one for purposes of matching.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1491
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1492 @item /
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1493 The class of escape characters that always just deny the following
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1494 character its special syntactic significance. The character after one
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1495 of these escapes is always treated as alphabetic.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1496 @item \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1497 The class of C-style escape characters. In practice, these are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1498 treated just like @samp{/}-class characters, because the extra
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1499 possibilities for C escapes (such as being followed by digits) have no
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1500 effect on where the containing expression ends.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1501 @item <
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1502 The class of comment-starting characters. Only single-character
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1503 comment starters (such as @samp{;} in Lisp mode) are represented this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1504 way.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1505 @item >
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1506 The class of comment-ending characters. Newline has this syntax in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1507 Lisp mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1508 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1509
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1510 @vindex parse-sexp-ignore-comments
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1511 The characters flagged as part of two-character comment delimiters can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1512 have other syntactic functions most of the time. For example, @samp{/} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1513 @samp{*} in C code, when found separately, have nothing to do with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1514 comments. The comment-delimiter significance overrides when the pair of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1515 characters occur together in the proper order. Only the list and sexp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1516 commands use the syntax table to find comments; the commands specifically
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1517 for comments have other variables that tell them where to find comments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1518 Moreover, the list and sexp commands notice comments only if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1519 @code{parse-sexp-ignore-comments} is non-@code{nil}. This variable is set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1520 to @code{nil} in modes where comment-terminator sequences are liable to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1521 appear where there is no comment, for example, in Lisp mode where the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1522 comment terminator is a newline but not every newline ends a comment.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1523
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1524 @node Syntax Change
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1525 @subsection Altering Syntax Information
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1526
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1527 It is possible to alter a character's syntax table entry by storing a new
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1528 number in the appropriate element of the syntax table, but it would be hard
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1529 to determine what number to use. Emacs therefore provides a command that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1530 allows you to specify the syntactic properties of a character in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1531 convenient way.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1532
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1533 @findex modify-syntax-entry
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1534 @kbd{M-x modify-syntax-entry} is the command to change a character's
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1535 syntax. It can be used interactively and is also used by major
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1536 modes to initialize their own syntax tables. Its first argument is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1537 character to change. The second argument is a string that specifies the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1538 new syntax. When called from Lisp code, there is a third, optional
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1539 argument, which specifies the syntax table in which to make the change. If
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1540 not supplied, or if this command is called interactively, the third
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1541 argument defaults to the current buffer's syntax table.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1542
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1543 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1544 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1545 The first character in the string specifies the syntactic class. It
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1546 is one of the characters in the previous table (@pxref{Syntax Entry}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1547
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1548 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1549 The second character is the matching delimiter. For a character that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1550 is not an opening or closing delimiter, this should be a space, and may
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1551 be omitted if no following characters are needed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1552
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1553 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1554 The remaining characters are flags. The flag characters allowed are:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1555
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1556 @table @samp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1557 @item 1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1558 Flag this character as the first of a two-character comment starting sequence.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1559 @item 2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1560 Flag this character as the second of a two-character comment starting sequence.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1561 @item 3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1562 Flag this character as the first of a two-character comment ending sequence.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1563 @item 4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1564 Flag this character as the second of a two-character comment ending sequence.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1565 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1566 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1567
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1568 @kindex C-h s
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1569 @findex describe-syntax
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1570 Use @kbd{C-h s} (@code{describe-syntax}) to display a description of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1571 the contents of the current syntax table. The description of each
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1572 character includes both the string you have to pass to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1573 @code{modify-syntax-entry} to set up that character's current syntax,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1574 and some English to explain that string if necessary.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1575
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1576 @node Init File
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1577 @section The Init File
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1578 @cindex init file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1579 @cindex Emacs initialization file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1580 @cindex key rebinding, permanent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1581 @cindex rebinding keys, permanently
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1582
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1583 When you start Emacs, it normally loads either @file{.xemacs/init.el}
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1584 or the file @file{.emacs} (whichever comes first) in your home directory.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1585 This file, if it exists, should contain Lisp code. It is called your
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1586 initialization file or @dfn{init file}. Use the command line switch
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1587 @samp{-q} to tell Emacs whether to load an init file (@pxref{Entering
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1588 Emacs}). Use the command line switch @samp{-user-init-file}
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1589 (@pxref{Command Switches}) to tell Emacs to load a different file
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1590 instead of @file{~/.xemacs/init.el}/@file{~/.emacs}.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1591
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1592 When the init file is read, the variable @code{user-init-file} says
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1593 which init file was loaded.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1594
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1595 At some sites there is a @dfn{default init file}, which is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1596 library named @file{default.el}, found via the standard search path for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1597 libraries. The Emacs distribution contains no such library; your site
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1598 may create one for local customizations. If this library exists, it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1599 loaded whenever you start Emacs. But your init file, if any, is loaded
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1600 first; if it sets @code{inhibit-default-init} non-@code{nil}, then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1601 @file{default} is not loaded.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1602
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1603 If you have a large amount of code in your init file, you should
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1604 byte-compile it to @file{~/.xemacs/init.elc} or @file{~/.emacs.elc}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1605
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1606 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1607 * Init Syntax:: Syntax of constants in Emacs Lisp.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1608 * Init Examples:: How to do some things with an init file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1609 * Terminal Init:: Each terminal type can have an init file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1610 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1611
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1612 @node Init Syntax
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1613 @subsection Init File Syntax
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1614
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1615 The init file contains one or more Lisp function call
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1616 expressions. Each consists of a function name followed by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1617 arguments, all surrounded by parentheses. For example, @code{(setq
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1618 fill-column 60)} represents a call to the function @code{setq} which is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1619 used to set the variable @code{fill-column} (@pxref{Filling}) to 60.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1620
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1621 The second argument to @code{setq} is an expression for the new value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1622 of the variable. This can be a constant, a variable, or a function call
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1623 expression. In the init file, constants are used most of the time.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1624 They can be:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1625
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1626 @table @asis
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1627 @item Numbers
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1628 Integers are written in decimal, with an optional initial minus sign.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1629
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1630 If a sequence of digits is followed by a period and another sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1631 of digits, it is interpreted as a floating point number.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1632
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1633 The number prefixes @samp{#b}, @samp{#o}, and @samp{#x} are supported to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1634 represent numbers in binary, octal, and hexadecimal notation (or radix).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1635
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1636 @item Strings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1637 Lisp string syntax is the same as C string syntax with a few extra
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1638 features. Use a double-quote character to begin and end a string constant.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1639
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1640 Newlines and special characters may be present literally in strings. They
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1641 can also be represented as backslash sequences: @samp{\n} for newline,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1642 @samp{\b} for backspace, @samp{\r} for return, @samp{\t} for tab,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1643 @samp{\f} for formfeed (control-l), @samp{\e} for escape, @samp{\\} for a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1644 backslash, @samp{\"} for a double-quote, or @samp{\@var{ooo}} for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1645 character whose octal code is @var{ooo}. Backslash and double-quote are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1646 the only characters for which backslash sequences are mandatory.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1647
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1648 You can use @samp{\C-} as a prefix for a control character, as in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1649 @samp{\C-s} for ASCII Control-S, and @samp{\M-} as a prefix for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1650 a Meta character, as in @samp{\M-a} for Meta-A or @samp{\M-\C-a} for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1651 Control-Meta-A.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1652
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1653 @item Characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1654 Lisp character constant syntax consists of a @samp{?} followed by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1655 either a character or an escape sequence starting with @samp{\}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1656 Examples: @code{?x}, @code{?\n}, @code{?\"}, @code{?\)}. Note that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1657 strings and characters are not interchangeable in Lisp; some contexts
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1658 require one and some contexts require the other.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1659
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1660 @item True
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1661 @code{t} stands for `true'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1662
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1663 @item False
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1664 @code{nil} stands for `false'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1665
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1666 @item Other Lisp objects
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1667 Write a single-quote (') followed by the Lisp object you want.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1668 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1669
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1670 @node Init Examples
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1671 @subsection Init File Examples
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1672
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1673 Here are some examples of doing certain commonly desired things with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1674 Lisp expressions:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1675
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1676 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1677 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1678 Make @key{TAB} in C mode just insert a tab if point is in the middle of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1679 line.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1680
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1681 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1682 (setq c-tab-always-indent nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1683 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1684
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1685 Here we have a variable whose value is normally @code{t} for `true'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1686 and the alternative is @code{nil} for `false'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1687
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1688 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1689 Make searches case sensitive by default (in all buffers that do not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1690 override this).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1691
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1692 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1693 (setq-default case-fold-search nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1694 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1695
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1696 This sets the default value, which is effective in all buffers that do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1697 not have local values for the variable. Setting @code{case-fold-search}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1698 with @code{setq} affects only the current buffer's local value, which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1699 is probably not what you want to do in an init file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1700
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1701 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1702 Make Text mode the default mode for new buffers.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1703
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1704 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1705 (setq default-major-mode 'text-mode)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1706 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1707
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1708 Note that @code{text-mode} is used because it is the command for entering
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1709 the mode we want. A single-quote is written before it to make a symbol
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1710 constant; otherwise, @code{text-mode} would be treated as a variable name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1711
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1712 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1713 Turn on Auto Fill mode automatically in Text mode and related modes.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1714
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1715 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1716 (setq text-mode-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1717 '(lambda () (auto-fill-mode 1)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1718 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1719
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1720 Here we have a variable whose value should be a Lisp function. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1721 function we supply is a list starting with @code{lambda}, and a single
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1722 quote is written in front of it to make it (for the purpose of this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1723 @code{setq}) a list constant rather than an expression. Lisp functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1724 are not explained here; for mode hooks it is enough to know that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1725 @code{(auto-fill-mode 1)} is an expression that will be executed when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1726 Text mode is entered. You could replace it with any other expression
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1727 that you like, or with several expressions in a row.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1728
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1729 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1730 (setq text-mode-hook 'turn-on-auto-fill)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1731 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1732
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1733 This is another way to accomplish the same result.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1734 @code{turn-on-auto-fill} is a symbol whose function definition is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1735 @code{(lambda () (auto-fill-mode 1))}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1736
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1737 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1738 Load the installed Lisp library named @file{foo} (actually a file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1739 @file{foo.elc} or @file{foo.el} in a standard Emacs directory).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1740
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1741 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1742 (load "foo")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1743 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1744
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1745 When the argument to @code{load} is a relative pathname, not starting
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1746 with @samp{/} or @samp{~}, @code{load} searches the directories in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1747 @code{load-path} (@pxref{Loading}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1748
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1749 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1750 Load the compiled Lisp file @file{foo.elc} from your home directory.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1751
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1752 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1753 (load "~/foo.elc")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1754 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1755
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1756 Here an absolute file name is used, so no searching is done.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1757
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1758 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1759 Rebind the key @kbd{C-x l} to run the function @code{make-symbolic-link}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1760
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1761 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1762 (global-set-key "\C-xl" 'make-symbolic-link)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1763 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1764
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1765 or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1766
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1767 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1768 (define-key global-map "\C-xl" 'make-symbolic-link)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1769 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1770
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1771 Note once again the single-quote used to refer to the symbol
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1772 @code{make-symbolic-link} instead of its value as a variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1773
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1774 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1775 Do the same thing for C mode only.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1776
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1777 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1778 (define-key c-mode-map "\C-xl" 'make-symbolic-link)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1779 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1780
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1781 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1782 Bind the function key @key{F1} to a command in C mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1783 Note that the names of function keys must be lower case.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1784
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1785 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1786 (define-key c-mode-map 'f1 'make-symbolic-link)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1787 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1788
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1789 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1790 Bind the shifted version of @key{F1} to a command.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1791
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1792 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1793 (define-key c-mode-map '(shift f1) 'make-symbolic-link)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1794 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1795
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1796 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1797 Redefine all keys which now run @code{next-line} in Fundamental mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1798 to run @code{forward-line} instead.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1799
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1800 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1801 (substitute-key-definition 'next-line 'forward-line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1802 global-map)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1803 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1804
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1805 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1806 Make @kbd{C-x C-v} undefined.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1807
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1808 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1809 (global-unset-key "\C-x\C-v")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1810 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1811
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1812 One reason to undefine a key is so that you can make it a prefix.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1813 Simply defining @kbd{C-x C-v @var{anything}} would make @kbd{C-x C-v}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1814 a prefix, but @kbd{C-x C-v} must be freed of any non-prefix definition
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1815 first.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1816
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1817 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1818 Make @samp{$} have the syntax of punctuation in Text mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1819 Note the use of a character constant for @samp{$}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1820
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1821 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1822 (modify-syntax-entry ?\$ "." text-mode-syntax-table)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1823 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1824
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1825 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1826 Enable the use of the command @code{eval-expression} without confirmation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1827
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1828 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1829 (put 'eval-expression 'disabled nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1830 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1831 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1832
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1833 @node Terminal Init
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1834 @subsection Terminal-Specific Initialization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1835
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1836 Each terminal type can have a Lisp library to be loaded into Emacs when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1837 it is run on that type of terminal. For a terminal type named
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1838 @var{termtype}, the library is called @file{term/@var{termtype}} and it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1839 found by searching the directories @code{load-path} as usual and trying the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1840 suffixes @samp{.elc} and @samp{.el}. Normally it appears in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1841 subdirectory @file{term} of the directory where most Emacs libraries are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1842 kept.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1843
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1844 The usual purpose of the terminal-specific library is to define the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1845 escape sequences used by the terminal's function keys using the library
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1846 @file{keypad.el}. See the file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1847 @file{term/vt100.el} for an example of how this is done.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1848
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1849 When the terminal type contains a hyphen, only the part of the name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1850 before the first hyphen is significant in choosing the library name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1851 Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1852 the library @file{term/aaa}. The code in the library can use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1853 @code{(getenv "TERM")} to find the full terminal type name.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1854
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1855 @vindex term-file-prefix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1856 The library's name is constructed by concatenating the value of the
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1857 variable @code{term-file-prefix} and the terminal type. Your init
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1858 file can prevent the loading of the terminal-specific library by setting
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1859 @code{term-file-prefix} to @code{nil}. @xref{Init File}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1860
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1861 @vindex term-setup-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1862 The value of the variable @code{term-setup-hook}, if not @code{nil}, is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1863 called as a function of no arguments at the end of Emacs initialization,
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1864 after both your init file and any terminal-specific library have been
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1865 read. @xref{Init File}. You can set the value in the init file to
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1866 override part of any of the terminal-specific libraries and to define
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1867 initializations for terminals that do not have a library.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1868
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1869 @node Audible Bell
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1870 @section Changing the Bell Sound
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1871 @cindex audible bell, changing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1872 @cindex bell, changing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1873 @vindex sound-alist
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1874 @findex load-default-sounds
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1875 @findex play-sound
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1876
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1877 You can now change how the audible bell sounds using the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1878 @code{sound-alist}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1879
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1880 @code{sound-alist}'s value is an list associating symbols with, among
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1881 other things, strings of audio-data. When @code{ding} is called with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1882 one of the symbols, the associated sound data is played instead of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1883 standard beep. This only works if you are logged in on the console of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1884 machine with audio hardware. To listen to a sound of the provided type,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1885 call the function @code{play-sound} with the argument @var{sound}. You
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1886 can also set the volume of the sound with the optional argument
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1887 @var{volume}.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1888 @cindex ding
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1889
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1890 Each element of @code{sound-alist} is a list describing a sound.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1891 The first element of the list is the name of the sound being defined.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1892 Subsequent elements of the list are alternating keyword/value pairs:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1893
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1894 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1895 @item sound
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1896 A string of raw sound data, or the name of another sound to play.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1897 The symbol @code{t} here means use the default X beep.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1898
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1899 @item volume
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1900 An integer from 0-100, defaulting to @code{bell-volume}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1901
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1902 @item pitch
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1903 If using the default X beep, the pitch (Hz) to generate.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1904
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1905 @item duration
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1906 If using the default X beep, the duration (milliseconds).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1907 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1908
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1909 For compatibility, elements of `sound-alist' may also be of the form:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1910
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1911 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1912 ( @var{sound-name} . @var{<sound>} )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1913 ( @var{sound-name} @var{<volume>} @var{<sound>} )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1914 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1915
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1916 You should probably add things to this list by calling the function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1917 @code{load-sound-file}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1918
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1919 Note that you can only play audio data if running on the console screen
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1920 of a machine with audio hardware which emacs understands, which at this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1921 time means a Sun SparcStation, SGI, or HP9000s700.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1922
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1923 Also note that the pitch, duration, and volume options are available
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1924 everywhere, but most X servers ignore the `pitch' option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1925
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1926 @vindex bell-volume
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1927 The variable @code{bell-volume} should be an integer from 0 to 100,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1928 with 100 being loudest, which controls how loud the sounds emacs makes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1929 should be. Elements of the @code{sound-alist} may override this value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1930 This variable applies to the standard X bell sound as well as sound files.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1931
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1932 If the symbol @code{t} is in place of a sound-string, Emacs uses the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1933 default X beep. This allows you to define beep-types of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1934 different volumes even when not running on the console.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1935
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1936 @findex load-sound-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1937 You can add things to this list by calling the function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1938 @code{load-sound-file}, which reads in an audio-file and adds its data to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1939 the sound-alist. You can specify the sound with the @var{sound-name}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1940 argument and the file into which the sounds are loaded with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1941 @var{filename} argument. The optional @var{volume} argument sets the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1942 volume.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1943
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1944 @code{load-sound-file (@var{filename sound-name} &optional @var{volume})}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1945
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1946 To load and install some sound files as beep-types, use the function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1947 @code{load-default-sounds} (note that this only works if you are on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1948 display 0 of a machine with audio hardware).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1949
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1950 The following beep-types are used by Emacs itself. Other Lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1951 packages may use other beep types, but these are the ones that the C
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1952 kernel of Emacs uses.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1953
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1954 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1955 @item auto-save-error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1956 An auto-save does not succeed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1957
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1958 @item command-error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1959 The Emacs command loop catches an error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1960
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1961 @item undefined-key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1962 You type a key that is undefined
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1963
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1964 @item undefined-click
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1965 You use an undefined mouse-click combination
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1966
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1967 @item no-completion
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1968 Completion was not possible
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1969
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1970 @item y-or-n-p
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1971 You type something other than the required @code{y} or @code{n}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1972
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1973 @item yes-or-no-p
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1974 You type something other than @code{yes} or @code{no}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1975 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1976
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1977 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1978 @node Faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1979 @section Faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1980
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1981 XEmacs has objects called extents and faces. An @dfn{extent}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1982 is a region of text and a @dfn{face} is a collection of textual
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1983 attributes, such as fonts and colors. Every extent is displayed in some
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1984 face; therefore, changing the properties of a face immediately updates the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1985 display of all associated extents. Faces can be frame-local: you can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1986 have a region of text that displays with completely different
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1987 attributes when its buffer is viewed from a different X window.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1988
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1989 The display attributes of faces may be specified either in Lisp or through
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1990 the X resource manager.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1991
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1992 @subsection Customizing Faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1993
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1994 You can change the face of an extent with the functions in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1995 this section. All the functions prompt for a @var{face} as an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1996 argument; use completion for a list of possible values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1997
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1998 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1999 @item M-x invert-face
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2000 Swap the foreground and background colors of the given @var{face}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2001 @item M-x make-face-bold
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2002 Make the font of the given @var{face} bold. When called from a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2003 program, returns @code{nil} if this is not possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2004 @item M-x make-face-bold-italic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2005 Make the font of the given @var{face} bold italic.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2006 When called from a program, returns @code{nil} if not possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2007 @item M-x make-face-italic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2008 Make the font of the given @var{face} italic.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2009 When called from a program, returns @code{nil} if not possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2010 @item M-x make-face-unbold
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2011 Make the font of the given @var{face} non-bold.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2012 When called from a program, returns @code{nil} if not possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2013 @item M-x make-face-unitalic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2014 Make the font of the given @var{face} non-italic.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2015 When called from a program, returns @code{nil} if not possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2016 @item M-x make-face-larger
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2017 Make the font of the given @var{face} a little larger.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2018 When called from a program, returns @code{nil} if not possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2019 @item M-x make-face-smaller
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2020 Make the font of the given @var{face} a little smaller.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2021 When called from a program, returns @code{nil} if not possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2022 @item M-x set-face-background
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2023 Change the background color of the given @var{face}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2024 @item M-x set-face-background-pixmap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2025 Change the background pixmap of the given @var{face}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2026 @item M-x set-face-font
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2027 Change the font of the given @var{face}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2028 @item M-x set-face-foreground
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2029 Change the foreground color of the given @var{face}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2030 @item M-x set-face-underline-p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2031 Change whether the given @var{face} is underlined.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2032 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2033
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2034 @findex make-face-bold
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2035 @findex make-face-bold-italic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2036 @findex make-face-italic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2037 @findex make-face-unbold
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2038 @findex make-face-unitalic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2039 @findex make-face-larger
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2040 @findex make-face-smaller
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2041
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2042 @findex invert-face
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2043 You can exchange the foreground and background color of the selected
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2044 @var{face} with the function @code{invert-face}. If the face does not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2045 specify both foreground and background, then its foreground and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2046 background are set to the background and foreground of the default face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2047 When calling this from a program, you can supply the optional argument
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2048 @var{frame} to specify which frame is affected; otherwise, all frames
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2049 are affected.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2050
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2051 @findex set-face-background
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2052 You can set the background color of the specified @var{face} with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2053 function @code{set-face-background}. The argument @code{color} should
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2054 be a string, the name of a color. When called from a program, if the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2055 optional @var{frame} argument is provided, the face is changed only
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2056 in that frame; otherwise, it is changed in all frames.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2057
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2058 @findex set-face-background-pixmap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2059 You can set the background pixmap of the specified @var{face} with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2060 function @code{set-face-background-pixmap}. The pixmap argument
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2061 @var{name} should be a string, the name of a file of pixmap data. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2062 directories listed in the @code{x-bitmap-file-path} variable are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2063 searched. The bitmap may also be a list of the form @code{(@var{width
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2064 height data})}, where @var{width} and @var{height} are the size in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2065 pixels, and @var{data} is a string containing the raw bits of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2066 bitmap. If the optional @var{frame} argument is provided, the face is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2067 changed only in that frame; otherwise, it is changed in all frames.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2068
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2069 The variable @code{x-bitmap-file-path} takes as a value a list of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2070 directories in which X bitmap files may be found. If the value is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2071 @code{nil}, the list is initialized from the @code{*bitmapFilePath}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2072 resource.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2073
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2074 If the environment variable @b{XBMLANGPATH} is set, then it is consulted
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2075 before the @code{x-bitmap-file-path} variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2076
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2077 @findex set-face-font
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2078 You can set the font of the specified @var{face} with the function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2079 @code{set-face-font}. The @var{font} argument should be a string, the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2080 name of a font. When called from a program, if the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2081 optional @var{frame} argument is provided, the face is changed only
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2082 in that frame; otherwise, it is changed in all frames.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2083
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2084 @findex set-face-foreground
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2085 You can set the foreground color of the specified @var{face} with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2086 function @code{set-face-foreground}. The argument @var{color} should be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2087 a string, the name of a color. If the optional @var{frame} argument is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2088 provided, the face is changed only in that frame; otherwise, it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2089 changed in all frames.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2090
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2091 @findex set-face-underline-p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2092 You can set underline the specified @var{face} with the function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2093 @code{set-face-underline-p}. The argument @var{underline-p} can be used
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2094 to make underlining an attribute of the face or not. If the optional
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2095 @var{frame} argument is provided, the face is changed only in that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2096 frame; otherwise, it is changed in all frames.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2097
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2098 @node Frame Components
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2099 @section Frame Components
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2100
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2101 You can control the presence and position of most frame components, such
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2102 as the menubar, toolbars, and gutters.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2103
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2104 This section is not written yet. Try the Lisp Reference Manual:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2105 @ref{Menubar,,,lispref,}, @ref{Toolbar Intro,,,lispref,}, and
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2106 @ref{Gutter Intro,,,lispref,}.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2107
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2108 @node X Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2109 @section X Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2110 @cindex X resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2111 @findex x-create-frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2112
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2113 Historically, XEmacs has used the X resource application class @samp{Emacs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2114 for its resources. Unfortunately, GNU Emacs uses the same application
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2115 class, and resources are not compatible between the two Emacsen. This
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2116 sharing of the application class often leads to trouble if you want to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2117 run both variants.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2118
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2119 Starting with XEmacs 21, XEmacs uses the class @samp{XEmacs} if it finds
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2120 any XEmacs resources in the resource database when the X connection is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2121 initialized. Otherwise, it will use the class @samp{Emacs} for
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
2122 backwards compatibility. The variable @var{x-emacs-application-class}
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2123 may be consulted to determine the application class being used.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2124
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2125 The examples in this section assume the application class is @samp{Emacs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2126
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2127 The Emacs resources are generally set per-frame. Each Emacs frame can have
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2128 its own name or the same name as another, depending on the name passed to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2129 @code{make-frame} function.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2130
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2131 You can specify resources for all frames with the syntax:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2132
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2133 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2134 Emacs*parameter: value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2135 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2136 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2137
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2138 or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2139
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2140 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2141 Emacs*EmacsFrame.parameter:value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2142 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2143 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2144
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2145 You can specify resources for a particular frame with the syntax:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2146
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2147 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2148 Emacs*FRAME-NAME.parameter: value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2149 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2150 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2151
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2152 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2153 * Geometry Resources:: Controlling the size and position of frames.
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
2154 * Iconic Resources:: Controlling whether frames come up iconic.
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
2155 * Resource List:: List of resources settable on a frame or device.
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
2156 * Face Resources:: Controlling faces using resources.
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
2157 * Widgets:: The widget hierarchy for XEmacs.
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
2158 * Menubar Resources:: Specifying resources for the menubar.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2159 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2160
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2161 @node Geometry Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2162 @subsection Geometry Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2163
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2164 To make the default size of all Emacs frames be 80 columns by 55 lines,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2165 do this:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2166
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2167 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2168 Emacs*EmacsFrame.geometry: 80x55
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2169 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2170 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2171
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2172 To set the geometry of a particular frame named @samp{fred}, do this:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2173
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2174 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2175 Emacs*fred.geometry: 80x55
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2176 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2177 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2178
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2179 Important! Do not use the following syntax:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2180
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2181 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2182 Emacs*geometry: 80x55
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2183 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2184 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2185
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2186 You should never use @code{*geometry} with any X application. It does
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2187 not say "make the geometry of Emacs be 80 columns by 55 lines." It
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2188 really says, "make Emacs and all subwindows thereof be 80x55 in whatever
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2189 units they care to measure in." In particular, that is both telling the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2190 Emacs text pane to be 80x55 in characters, and telling the menubar pane
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2191 to be 80x55 pixels, which is surely not what you want.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2192
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2193 As a special case, this geometry specification also works (and sets the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2194 default size of all Emacs frames to 80 columns by 55 lines):
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2195
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2196 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2197 Emacs.geometry: 80x55
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2198 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2199 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2200
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2201 since that is the syntax used with most other applications (since most
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2202 other applications have only one top-level window, unlike Emacs). In
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2203 general, however, the top-level shell (the unmapped ApplicationShell
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2204 widget named @samp{Emacs} that is the parent of the shell widgets that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2205 actually manage the individual frames) does not have any interesting
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2206 resources on it, and you should set the resources on the frames instead.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2207
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2208 The @code{-geometry} command-line argument sets only the geometry of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2209 initial frame created by Emacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2210
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2211 A more complete explanation of geometry-handling is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2212
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2213 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2214 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2215 The @code{-geometry} command-line option sets the @code{Emacs.geometry}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2216 resource, that is, the geometry of the ApplicationShell.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2217
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2218 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2219 For the first frame created, the size of the frame is taken from the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2220 ApplicationShell if it is specified, otherwise from the geometry of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2221 frame.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2222
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2223 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2224 For subsequent frames, the order is reversed: First the frame, and then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2225 the ApplicationShell.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2226
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2227 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2228 For the first frame created, the position of the frame is taken from the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2229 ApplicationShell (@code{Emacs.geometry}) if it is specified, otherwise
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2230 from the geometry of the frame.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2231
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2232 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2233 For subsequent frames, the position is taken only from the frame, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2234 never from the ApplicationShell.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2235 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2236
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2237 This is rather complicated, but it does seem to provide the most
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2238 intuitive behavior with respect to the default sizes and positions of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2239 frames created in various ways.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2240
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2241 @node Iconic Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2242 @subsection Iconic Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2243
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2244 Analogous to @code{-geometry}, the @code{-iconic} command-line option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2245 sets the iconic flag of the ApplicationShell (@code{Emacs.iconic}) and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2246 always applies to the first frame created regardless of its name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2247 However, it is possible to set the iconic flag on particular frames (by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2248 name) by using the @code{Emacs*FRAME-NAME.iconic} resource.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2249
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2250 @node Resource List
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2251 @subsection Resource List
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2252
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2253 Emacs frames accept the following resources:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2254
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2255 @table @asis
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2256 @item @code{geometry} (class @code{Geometry}): string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2257 Initial geometry for the frame. @xref{Geometry Resources}, for a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2258 complete discussion of how this works.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2259
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2260 @item @code{iconic} (class @code{Iconic}): boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2261 Whether this frame should appear in the iconified state.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2262
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2263 @item @code{internalBorderWidth} (class @code{InternalBorderWidth}): int
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2264 How many blank pixels to leave between the text and the edge of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2265 window.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2266
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2267 @item @code{interline} (class @code{Interline}): int
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2268 How many pixels to leave between each line (may not be implemented).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2269
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2270 @item @code{menubar} (class @code{Menubar}): boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2271 Whether newly-created frames should initially have a menubar. Set to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2272 true by default.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2273
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2274 @item @code{initiallyUnmapped} (class @code{InitiallyUnmapped}): boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2275 Whether XEmacs should leave the initial frame unmapped when it starts
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2276 up. This is useful if you are starting XEmacs as a server (e.g. in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2277 conjunction with gnuserv or the external client widget). You can also
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2278 control this with the @code{-unmapped} command-line option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2279
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2280 @item @code{barCursor} (class @code{BarColor}): boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2281 Whether the cursor should be displayed as a bar, or the traditional box.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2282
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2283 @item @code{cursorColor} (class @code{CursorColor}): color-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2284 The color of the text cursor.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2285
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2286 @item @code{scrollBarWidth} (class @code{ScrollBarWidth}): integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2287 How wide the vertical scrollbars should be, in pixels; 0 means no
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2288 vertical scrollbars. You can also use a resource specification of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2289 form @code{*scrollbar.width}, or the usual toolkit scrollbar resources:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2290 @code{*XmScrollBar.width} (Motif), @code{*XlwScrollBar.width} (Lucid),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2291 or @code{*Scrollbar.thickness} (Athena). We don't recommend that you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2292 use the toolkit resources, though, because they're dependent on how
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2293 exactly your particular build of XEmacs was configured.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2294
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2295 @item @code{scrollBarHeight} (class @code{ScrollBarHeight}): integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2296 How high the horizontal scrollbars should be, in pixels; 0 means no
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2297 horizontal scrollbars. You can also use a resource specification of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2298 form @code{*scrollbar.height}, or the usual toolkit scrollbar resources:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2299 @code{*XmScrollBar.height} (Motif), @code{*XlwScrollBar.height} (Lucid),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2300 or @code{*Scrollbar.thickness} (Athena). We don't recommend that you use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2301 the toolkit resources, though, because they're dependent on how exactly
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2302 your particular build of XEmacs was configured.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2303
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2304 @item @code{scrollBarPlacement} (class @code{ScrollBarPlacement}): string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2305 Where the horizontal and vertical scrollbars should be positioned. This
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2306 should be one of the four strings @samp{BOTTOM_LEFT},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2307 @samp{BOTTOM_RIGHT}, @samp{TOP_LEFT}, and @samp{TOP_RIGHT}. Default is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2308 @samp{BOTTOM_RIGHT} for the Motif and Lucid scrollbars and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2309 @samp{BOTTOM_LEFT} for the Athena scrollbars.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2310
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2311 @item @code{topToolBarHeight} (class @code{TopToolBarHeight}): integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2312 @itemx @code{bottomToolBarHeight} (class @code{BottomToolBarHeight}): integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2313 @itemx @code{leftToolBarWidth} (class @code{LeftToolBarWidth}): integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2314 @itemx @code{rightToolBarWidth} (class @code{RightToolBarWidth}): integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2315 Height and width of the four possible toolbars.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2316
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2317 @item @code{topToolBarShadowColor} (class @code{TopToolBarShadowColor}): color-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2318 @itemx @code{bottomToolBarShadowColor} (class @code{BottomToolBarShadowColor}): color-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2319 Color of the top and bottom shadows for the toolbars. NOTE: These resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2320 do @emph{not} have anything to do with the top and bottom toolbars (i.e. the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2321 toolbars at the top and bottom of the frame)! Rather, they affect the top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2322 and bottom shadows around the edges of all four kinds of toolbars.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2323
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2324 @item @code{topToolBarShadowPixmap} (class @code{TopToolBarShadowPixmap}): pixmap-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2325 @itemx @code{bottomToolBarShadowPixmap} (class @code{BottomToolBarShadowPixmap}): pixmap-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2326 Pixmap of the top and bottom shadows for the toolbars. If set, these
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2327 resources override the corresponding color resources. NOTE: These
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2328 resources do @emph{not} have anything to do with the top and bottom
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2329 toolbars (i.e. the toolbars at the top and bottom of the frame)!
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2330 Rather, they affect the top and bottom shadows around the edges of all
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2331 four kinds of toolbars.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2332
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2333 @item @code{toolBarShadowThickness} (class @code{ToolBarShadowThickness}): integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2334 Thickness of the shadows around the toolbars, in pixels.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2335
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2336 @item @code{visualBell} (class @code{VisualBell}): boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2337 Whether XEmacs should flash the screen rather than making an audible beep.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2338
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2339 @item @code{bellVolume} (class @code{BellVolume}): integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2340 Volume of the audible beep.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2341
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2342 @item @code{useBackingStore} (class @code{UseBackingStore}): boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2343 Whether XEmacs should set the backing-store attribute of the X windows
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2344 it creates. This increases the memory usage of the X server but decreases
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2345 the amount of X traffic necessary to update the screen, and is useful
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2346 when the connection to the X server goes over a low-bandwidth line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2347 such as a modem connection.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2348 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2349
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2350 Emacs devices accept the following resources:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2351
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2352 @table @asis
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2353 @item @code{textPointer} (class @code{Cursor}): cursor-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2354 The cursor to use when the mouse is over text. This resource is used to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2355 initialize the variable @code{x-pointer-shape}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2356
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2357 @item @code{selectionPointer} (class @code{Cursor}): cursor-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2358 The cursor to use when the mouse is over a selectable text region (an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2359 extent with the @samp{highlight} property; for example, an Info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2360 cross-reference). This resource is used to initialize the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2361 @code{x-selection-pointer-shape}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2362
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2363 @item @code{spacePointer} (class @code{Cursor}): cursor-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2364 The cursor to use when the mouse is over a blank space in a buffer (that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2365 is, after the end of a line or after the end-of-file). This resource is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2366 used to initialize the variable @code{x-nontext-pointer-shape}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2367
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2368 @item @code{modeLinePointer} (class @code{Cursor}): cursor-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2369 The cursor to use when the mouse is over a modeline. This resource is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2370 used to initialize the variable @code{x-mode-pointer-shape}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2372 @item @code{gcPointer} (class @code{Cursor}): cursor-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2373 The cursor to display when a garbage-collection is in progress. This
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2374 resource is used to initialize the variable @code{x-gc-pointer-shape}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2375
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2376 @item @code{scrollbarPointer} (class @code{Cursor}): cursor-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2377 The cursor to use when the mouse is over the scrollbar. This resource
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2378 is used to initialize the variable @code{x-scrollbar-pointer-shape}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2379
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2380 @item @code{pointerColor} (class @code{Foreground}): color-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2381 @itemx @code{pointerBackground} (class @code{Background}): color-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2382 The foreground and background colors of the mouse cursor. These
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2383 resources are used to initialize the variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2384 @code{x-pointer-foreground-color} and @code{x-pointer-background-color}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2385 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2386
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2387 @node Face Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2388 @subsection Face Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2389
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2390 The attributes of faces are also per-frame. They can be specified as:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2391
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2392 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2393 Emacs.FACE_NAME.parameter: value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2394 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2395 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2396
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2397 or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2398
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2399 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2400 Emacs*FRAME_NAME.FACE_NAME.parameter: value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2401 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2402 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2403
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2404 Faces accept the following resources:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2405
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2406 @table @asis
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2407 @item @code{attributeFont} (class @code{AttributeFont}): font-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2408 The font of this face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2409
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2410 @item @code{attributeForeground} (class @code{AttributeForeground}): color-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2411 @itemx @code{attributeBackground} (class @code{AttributeBackground}): color-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2412 The foreground and background colors of this face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2413
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2414 @item @code{attributeBackgroundPixmap} (class @code{AttributeBackgroundPixmap}): file-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2415 The name of an @sc{xbm} file (or @sc{xpm} file, if your version of Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2416 supports @sc{xpm}), to use as a background stipple.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2417
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2418 @item @code{attributeUnderline} (class @code{AttributeUnderline}): boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2419 Whether text in this face should be underlined.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2420 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2421
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2422 All text is displayed in some face, defaulting to the face named
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2423 @code{default}. To set the font of normal text, use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2424 @code{Emacs*default.attributeFont}. To set it in the frame named
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2425 @code{fred}, use @code{Emacs*fred.default.attributeFont}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2426
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2427 These are the names of the predefined faces:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2429 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2430 @item default
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2431 Everything inherits from this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2432
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2433 @item bold
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2434 If this is not specified in the resource database, Emacs tries to find a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2435 bold version of the font of the default face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2436
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2437 @item italic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2438 If this is not specified in the resource database, Emacs tries to find
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2439 an italic version of the font of the default face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2440
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2441 @item bold-italic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2442 If this is not specified in the resource database, Emacs tries to find a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2443 bold-italic version of the font of the default face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2444
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2445 @item modeline
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2446 This is the face that the modeline is displayed in. If not specified in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2447 the resource database, it is determined from the default face by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2448 reversing the foreground and background colors.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2449
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2450 @item highlight
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2451 This is the face that highlighted extents (for example, Info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2452 cross-references and possible completions, when the mouse passes over
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2453 them) are displayed in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2454
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2455 @item left-margin
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2456 @itemx right-margin
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2457 These are the faces that the left and right annotation margins are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2458 displayed in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2459
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2460 @item zmacs-region
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2461 This is the face that mouse selections are displayed in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2462
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2463 @item isearch
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2464 This is the face that the matched text being searched for is displayed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2465 in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2466
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2467 @item info-node
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2468 This is the face of info menu items. If unspecified, it is copied from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2469 @code{bold-italic}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2470
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2471 @item info-xref
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2472 This is the face of info cross-references. If unspecified, it is copied
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2473 from @code{bold}. (Note that, when the mouse passes over a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2474 cross-reference, the cross-reference's face is determined from a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2475 combination of the @code{info-xref} and @code{highlight} faces.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2476 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2477
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2478 Other packages might define their own faces; to see a list of all faces,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2479 use any of the interactive face-manipulation commands such as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2480 @code{set-face-font} and type @samp{?} when you are prompted for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2481 name of a face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2482
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2483 If the @code{bold}, @code{italic}, and @code{bold-italic} faces are not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2484 specified in the resource database, then XEmacs attempts to derive them
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2485 from the font of the default face. It can only succeed at this if you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2486 have specified the default font using the XLFD (X Logical Font
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2487 Description) format, which looks like
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2488
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2489 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2490 *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2491 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2492 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2493
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2494 If you use any of the other, less strict font name formats, some of which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2495 look like
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2496
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2497 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2498 lucidasanstypewriter-12
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2499 fixed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2500 9x13
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2501 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2502
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2503 then XEmacs won't be able to guess the names of the bold and italic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2504 versions. All X fonts can be referred to via XLFD-style names, so you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2505 should use those forms. See the man pages for @samp{X(1)},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2506 @samp{xlsfonts(1)}, and @samp{xfontsel(1)}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2507
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2508 @node Widgets
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2509 @subsection Widgets
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2510
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2511 There are several structural widgets between the terminal EmacsFrame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2512 widget and the top level ApplicationShell; the exact names and types of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2513 these widgets change from release to release (for example, they changed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2514 between 19.8 and 19.9, 19.9 and 19.10, and 19.10 and 19.12) and are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2515 subject to further change in the future, so you should avoid mentioning
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2516 them in your resource database. The above-mentioned syntaxes should be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2517 forward- compatible. As of 19.13, the exact widget hierarchy is as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2518 follows:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2519
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2520 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2521 INVOCATION-NAME "shell" "container" FRAME-NAME
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2522 x-emacs-application-class "EmacsShell" "EmacsManager" "EmacsFrame"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2523 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2524
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2525 where INVOCATION-NAME is the terminal component of the name of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2526 XEmacs executable (usually @samp{xemacs}), and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2527 @samp{x-emacs-application-class} is generally @samp{Emacs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2528
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2529 @node Menubar Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2530 @subsection Menubar Resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2531
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2532 As the menubar is implemented as a widget which is not a part of XEmacs
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2533 proper, it does not use the face mechanism for specifying fonts and
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2534 colors: It uses whatever resources are appropriate to the type of widget
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2535 which is used to implement it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2536
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2537 If Emacs was compiled to use only the Lucid Motif-lookalike menu widgets,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2538 then one way to specify the font of the menubar would be
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2539
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2540 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2541 Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2542 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2543
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2544 If both the Lucid Motif-lookalike menu widgets and X Font Sets are
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2545 configured to allow multilingual menubars, then one uses
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2546
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2547 @example
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2548 *menubar*FontSet: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2549 -*-*-*-*-*-*-*-120-*-jisx0208.1983-0
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2550 @end example
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2551
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2552 That would specify fonts for a Japanese menubar. Specifying only one
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2553 XLFD is acceptable; specifying more than one for a given registry
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2554 (language) is also allowed. When X Font Sets are configured, some .font
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2555 resources (eg, menubars) are ignored in favor of the corresponding
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2556 .fontSet resources.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2557
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2558 If the Motif library is being used, then one would have to use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2559
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2560 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2561 Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2562 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2563
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2564 because the Motif library uses the @code{fontList} resource name instead
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2565 of @code{font}, which has subtly different semantics.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2566
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2567 The same is true of the scrollbars: They accept whichever resources are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2568 appropriate for the toolkit in use.