annotate man/xemacs/abbrevs.texi @ 442:abe6d1db359e r21-2-36

Import from CVS: tag r21-2-36
author cvs
date Mon, 13 Aug 2007 11:35:02 +0200
parents 8de8e3f6228a
children 576fb035e263
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 Abbrevs, Picture, Packages, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 @chapter Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @cindex abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 @cindex expansion (of abbrevs)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 An @dfn{abbrev} is a word which @dfn{expands} into some
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 different text. Abbrevs are defined by the user to expand in specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 ways. For example, you might define @samp{foo} as an abbrev expanding to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 @samp{find outer otter}. With this abbrev defined, you would be able to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 get @samp{find outer otter } into the buffer by typing @kbd{f o o @key{SPC}}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 @findex abbrev-mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 @vindex abbrev-mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 Disabling Abbrev mode does not cause abbrev definitions to be discarded,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 but they do not expand until Abbrev mode is enabled again. The command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 @kbd{M-x abbrev-mode} toggles Abbrev mode; with a numeric argument, it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 turns Abbrev mode on if the argument is positive, off otherwise.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 @xref{Minor Modes}. @code{abbrev-mode} is also a variable; Abbrev mode is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 on when the variable is non-@code{nil}. The variable @code{abbrev-mode}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 automatically becomes local to the current buffer when it is set.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 Abbrev definitions can be @dfn{mode-specific}---active only in one major
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 mode. Abbrevs can also have @dfn{global} definitions that are active in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 all major modes. The same abbrev can have a global definition and various
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 mode-specific definitions for different major modes. A mode-specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 definition for the current major mode overrides a global definition.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 You can define Abbrevs interactively during an editing session. You
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 can also save lists of abbrev definitions in files and reload them in later
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 sessions. Some users keep extensive lists of abbrevs that they load in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 every session.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 A second kind of abbreviation facility is called the @dfn{dynamic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 expansion}. Dynamic abbrev expansion happens only when you give an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 explicit command and the result of the expansion depends only on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 current contents of the buffer. @xref{Dynamic Abbrevs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 * Defining Abbrevs:: Defining an abbrev, so it will expand when typed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 * Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 * Saving Abbrevs:: Saving the entire list of abbrevs for another session.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 * Dynamic Abbrevs:: Abbreviations for words already in the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 @node Defining Abbrevs, Expanding Abbrevs, Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 @section Defining Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 @item C-x a g
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 Define an abbrev to expand into some text before point
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 (@code{add-global-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 @item C-x a l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 Similar, but define an abbrev available only in the current major mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 (@code{add-mode-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 @item C-x a i g
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 Define a word in the buffer as an abbrev (@code{inverse-add-global-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 @item C-x a i l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 Define a word in the buffer as a mode-specific abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 (@code{inverse-add-mode-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 @item M-x kill-all-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 After this command, no abbrev definitions remain in effect.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 @kindex C-x a g
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 @findex add-global-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 The usual way to define an abbrev is to enter the text you want the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 abbrev to expand to, position point after it, and type @kbd{C-x a g}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 (@code{add-global-abbrev}). This reads the abbrev itself using the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 minibuffer, and then defines it as an abbrev for one or more words
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 before point. Use a numeric argument to say how many words before point
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 should be taken as the expansion. For example, to define the abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 @samp{foo} as in the example above, insert the text @samp{find outer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 otter}, then type @*@kbd{C-u 3 C-x a g f o o @key{RET}}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 An argument of zero to @kbd{C-x a g} means to use the contents of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 region as the expansion of the abbrev being defined.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 @kindex C-x a l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 @findex add-mode-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 The command @kbd{C-x a l} (@code{add-mode-abbrev}) is similar, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 defines a mode-specific abbrev. Mode-specific abbrevs are active only in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 particular major mode. @kbd{C-x a l} defines an abbrev for the major mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 in effect at the time @kbd{C-x a l} is typed. The arguments work the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 same way they do for @kbd{C-x a g}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 @kindex C-x a i g
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 @findex inverse-add-global-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 @kindex C-x a i l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 @findex inverse-add-mode-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 If the text of an abbrev you want is already in the buffer instead of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 the expansion, use command @kbd{C-x a i g} (@code{inverse-add-global-abbrev})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 instead of @kbd{C-x a g}, or use @kbd{C-x a i l}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 (@code{inverse-add-mode-abbrev}) instead of @kbd{C-x a l}. These commands
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 are called ``inverse'' because they invert the meaning of the argument
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 found in the buffer and the argument read using the minibuffer.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 To change the definition of an abbrev, just add the new definition. You
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 will be asked to confirm if the abbrev has a prior definition. To remove
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 an abbrev definition, give a negative argument to @kbd{C-x a g} or @kbd{C-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 a l}. You must choose the command to specify whether to kill a global
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 definition or a mode-specific definition for the current mode, since those
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 two definitions are independent for one abbrev.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 @findex kill-all-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 @kbd{M-x kill-all-abbrevs} removes all existing abbrev definitions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 @node Expanding Abbrevs, Editing Abbrevs, Defining Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 @section Controlling Abbrev Expansion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 An abbrev expands whenever it is in a buffer just before point and you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 type a self-inserting punctuation character (@key{SPC}, comma,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 etc.@:). Most often an abbrev is used by inserting the abbrev followed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 by punctuation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 @vindex abbrev-all-caps
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 Abbrev expansion preserves case; thus, @samp{foo} expands into @samp{find
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 outer otter}, @samp{Foo} into @samp{Find outer otter}, and @samp{FOO} into
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 @samp{FIND OUTER OTTER} or @samp{Find Outer Otter} according to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 variable @code{abbrev-all-caps} (a non-@code{nil} value chooses the first
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 of the two expansions).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 Two commands are available to control abbrev expansion:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 @item M-'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 Separate a prefix from a following abbrev to be expanded
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 (@code{abbrev-prefix-mark}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 @item C-x a e
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 @findex expand-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 Expand the abbrev before point (@code{expand-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 This is effective even when Abbrev mode is not enabled.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 @item M-x unexpand-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 Undo last abbrev expansion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 @item M-x expand-region-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 Expand some or all abbrevs found in the region.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 @kindex M-'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 @findex abbrev-prefix-mark
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 You may wish to expand an abbrev with a prefix attached. For example,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 if @samp{cnst} expands into @samp{construction}, you may want to use it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 to enter @samp{reconstruction}. It does not work to type @kbd{recnst},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 because that is not necessarily a defined abbrev. Instead, you can use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 the command @kbd{M-'} (@code{abbrev-prefix-mark}) between the prefix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 @samp{re} and the abbrev @samp{cnst}. First, insert @samp{re}. Then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 type @kbd{M-'}; this inserts a minus sign in the buffer to indicate that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 it has done its work. Then insert the abbrev @samp{cnst}. The buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 now contains @samp{re-cnst}. Now insert a punctuation character to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 expand the abbrev @samp{cnst} into @samp{construction}. The minus sign
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 is deleted at this point by @kbd{M-'}. The resulting text is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 desired @samp{reconstruction}.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 If you actually want the text of the abbrev in the buffer, rather than
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 its expansion, insert the following punctuation with @kbd{C-q}. Thus,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 @kbd{foo C-q -} leaves @samp{foo-} in the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 @findex unexpand-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 If you expand an abbrev by mistake, you can undo the expansion (replace
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 the expansion by the original abbrev text) with @kbd{M-x unexpand-abbrev}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 You can also use @kbd{C-_} (@code{undo}) to undo the expansion; but that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 will first undo the insertion of the punctuation character.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 @findex expand-region-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 @kbd{M-x expand-region-abbrevs} searches through the region for defined
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 abbrevs, and offers to replace each one it finds with its expansion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 This command is useful if you have typed text using abbrevs but forgot
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 to turn on Abbrev mode first. It may also be useful together with a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 special set of abbrev definitions for making several global replacements at
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 once. The command is effective even if Abbrev mode is not enabled.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 @node Editing Abbrevs, Saving Abbrevs, Expanding Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 @section Examining and Editing Abbrevs
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 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 @item M-x list-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 Print a list of all abbrev definitions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 @item M-x edit-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 Edit a list of abbrevs; you can add, alter, or remove definitions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 @end table
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 @findex list-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 The output from @kbd{M-x list-abbrevs} looks like this:
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 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 (lisp-mode-abbrev-table)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
189 "dk" 0 "define-key"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 (global-abbrev-table)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
191 "dfn" 0 "definition"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 (Some blank lines of no semantic significance, and some other abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 tables, have been omitted.)
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 A line containing a name in parentheses is the header for abbrevs in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 particular abbrev table; @code{global-abbrev-table} contains all the global
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 abbrevs, and the other abbrev tables that are named after major modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 contain the mode-specific abbrevs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 Within each abbrev table, each non-blank line defines one abbrev. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 word at the beginning is the abbrev. The number that appears is the number
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 of times the abbrev has been expanded. Emacs keeps track of this to help
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 you see which abbrevs you actually use, in case you want to eliminate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 those that you don't use often. The string at the end of the line is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 expansion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 @findex edit-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 @kindex C-c C-c (Edit Abbrevs)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 @findex edit-abbrevs-redefine
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 @kbd{M-x edit-abbrevs} allows you to add, change or kill abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 definitions by editing a list of them in an Emacs buffer. The list has
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 the format described above. The buffer of abbrevs is called
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 @samp{*Abbrevs*}, and is in Edit-Abbrevs mode. This mode redefines the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 key @kbd{C-c C-c} to install the abbrev definitions as specified in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 buffer. The @code{edit-abbrevs-redefine} command does this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 Any abbrevs not described in the buffer are eliminated when this is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 done.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 @code{edit-abbrevs} is actually the same as @code{list-abbrevs}, except
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 that it selects the buffer @samp{*Abbrevs*} whereas @code{list-abbrevs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 merely displays it in another window.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 @node Saving Abbrevs, Dynamic Abbrevs, Editing Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 @section Saving Abbrevs
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 These commands allow you to keep abbrev definitions between editing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 sessions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 @item M-x write-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 Write a file describing all defined abbrevs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 @item M-x read-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 Read such an abbrev file and define abbrevs as specified there.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 @item M-x quietly-read-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 Similar, but do not display a message about what is going on.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 @item M-x define-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 Define abbrevs from buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 @item M-x insert-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 Insert all abbrevs and their expansions into the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 @findex write-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 Use @kbd{M-x write-abbrev-file} to save abbrev definitions for use in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 a later session. The command reads a file name using the minibuffer and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 writes a description of all current abbrev definitions into the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 specified file. The text stored in the file looks like the output of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 @kbd{M-x list-abbrevs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 @findex read-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 @findex quietly-read-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255 @vindex abbrev-file-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 @kbd{M-x read-abbrev-file} prompts for a file name using the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 minibuffer and reads the specified file, defining abbrevs according to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 its contents. @kbd{M-x quietly-read-abbrev-file} is the same but does
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 not display a message in the echo area; it is actually useful primarily
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
260 in the init file. @xref{Init File}. If you give an empty argument to
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
261 either of these functions, the file name Emacs uses is the value of the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
262 variable @code{abbrev-file-name}, which is by default
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
263 @code{"~/.abbrev_defs"}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 @vindex save-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 Emacs offers to save abbrevs automatically if you have changed any of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 them, whenever it offers to save all files (for @kbd{C-x s} or @kbd{C-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 C-c}). Set the variable @code{save-abbrevs} to @code{nil} to inhibit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 this feature.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 @findex insert-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 @findex define-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 The commands @kbd{M-x insert-abbrevs} and @kbd{M-x define-abbrevs} are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 similar to the previous commands but work on text in an Emacs buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 @kbd{M-x insert-abbrevs} inserts text into the current buffer before point,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 describing all current abbrev definitions; @kbd{M-x define-abbrevs} parses
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 the entire current buffer and defines abbrevs accordingly.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 @node Dynamic Abbrevs,, Saving Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 @section Dynamic Abbrev Expansion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 The abbrev facility described above operates automatically as you insert
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 text, but all abbrevs must be defined explicitly. By contrast,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 @dfn{dynamic abbrevs} allow the meanings of abbrevs to be determined
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 automatically from the contents of the buffer, but dynamic abbrev expansion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 happens only when you request it explicitly.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 @kindex M-/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 @findex dabbrev-expand
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 @item M-/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 Expand the word in the buffer before point as a @dfn{dynamic abbrev},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 by searching in the buffer for words starting with that abbreviation
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 (@code{dabbrev-expand}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 For example, if the buffer contains @samp{does this follow } and you type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 @kbd{f o M-/}, the effect is to insert @samp{follow} because that is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 last word in the buffer that starts with @samp{fo}. A numeric argument to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 @kbd{M-/} says to take the second, third, etc.@: distinct expansion found
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 looking backward from point. Repeating @kbd{M-/} searches for an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 alternative expansion by looking farther back. After the entire buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 before point has been considered, the buffer after point is searched.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 Dynamic abbrev expansion is completely independent of Abbrev mode; the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 expansion of a word with @kbd{M-/} is completely independent of whether it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 has a definition as an ordinary abbrev.