annotate man/abbrevs.texi @ 61263:56619c3aaf99

(fancy-splash-text): Shorten default text of "Emacs Tutorial" line. Also, if the current language env indicates an available tutorial file other than TUTORIAL, extract its title and append it to the line in parentheses. (fancy-splash-insert): If arg is a thunk, funcall it.
author Thien-Thi Nguyen <ttn@gnuvola.org>
date Mon, 04 Apr 2005 07:41:58 +0000
parents b728ee27ee08
children 3723093a21fd 3ebd9bdb4fe5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
Dave Love <fx@gnu.org>
parents:
diff changeset
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
Dave Love <fx@gnu.org>
parents:
diff changeset
3 @c See file emacs.texi for copying conditions.
38201
303d358eaac7 Change Previous pointer.
Richard M. Stallman <rms@gnu.org>
parents: 37576
diff changeset
4 @node Abbrevs, Picture, Maintaining, Top
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
5 @chapter Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
6 @cindex abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
7 @cindex expansion (of abbrevs)
Dave Love <fx@gnu.org>
parents:
diff changeset
8
Dave Love <fx@gnu.org>
parents:
diff changeset
9 A defined @dfn{abbrev} is a word which @dfn{expands}, if you insert
Dave Love <fx@gnu.org>
parents:
diff changeset
10 it, into some different text. Abbrevs are defined by the user to expand
Dave Love <fx@gnu.org>
parents:
diff changeset
11 in specific ways. For example, you might define @samp{foo} as an abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
12 expanding to @samp{find outer otter}. Then you would be able to insert
Dave Love <fx@gnu.org>
parents:
diff changeset
13 @samp{find outer otter } into the buffer by typing @kbd{f o o
Dave Love <fx@gnu.org>
parents:
diff changeset
14 @key{SPC}}.
Dave Love <fx@gnu.org>
parents:
diff changeset
15
Dave Love <fx@gnu.org>
parents:
diff changeset
16 A second kind of abbreviation facility is called @dfn{dynamic abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
17 expansion}. You use dynamic abbrev expansion with an explicit command
Dave Love <fx@gnu.org>
parents:
diff changeset
18 to expand the letters in the buffer before point by looking for other
Dave Love <fx@gnu.org>
parents:
diff changeset
19 words in the buffer that start with those letters. @xref{Dynamic
Dave Love <fx@gnu.org>
parents:
diff changeset
20 Abbrevs}.
Dave Love <fx@gnu.org>
parents:
diff changeset
21
36248
5950691911d4 Fix quoting in Hippie Expand reference.
Richard M. Stallman <rms@gnu.org>
parents: 36235
diff changeset
22 ``Hippie'' expansion generalizes abbreviation expansion. @xref{Hippie
37576
083715958fc6 Fix xref for Hippie Expand.
Richard M. Stallman <rms@gnu.org>
parents: 36248
diff changeset
23 Expand, , Hippie Expansion, autotype, Features for Automatic
36248
5950691911d4 Fix quoting in Hippie Expand reference.
Richard M. Stallman <rms@gnu.org>
parents: 36235
diff changeset
24 Typing}.
27208
85ee0699746e Mention Hippie Expand.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
25
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
26 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
27 * Abbrev Concepts:: Fundamentals of defined abbrevs.
Dave Love <fx@gnu.org>
parents:
diff changeset
28 * Defining Abbrevs:: Defining an abbrev, so it will expand when typed.
Dave Love <fx@gnu.org>
parents:
diff changeset
29 * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
Dave Love <fx@gnu.org>
parents:
diff changeset
30 * Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs.
Dave Love <fx@gnu.org>
parents:
diff changeset
31 * Saving Abbrevs:: Saving the entire list of abbrevs for another session.
Dave Love <fx@gnu.org>
parents:
diff changeset
32 * Dynamic Abbrevs:: Abbreviations for words already in the buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
33 * Dabbrev Customization:: What is a word, for dynamic abbrevs. Case handling.
Dave Love <fx@gnu.org>
parents:
diff changeset
34 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
35
Dave Love <fx@gnu.org>
parents:
diff changeset
36 @node Abbrev Concepts
Dave Love <fx@gnu.org>
parents:
diff changeset
37 @section Abbrev Concepts
Dave Love <fx@gnu.org>
parents:
diff changeset
38
Dave Love <fx@gnu.org>
parents:
diff changeset
39 An @dfn{abbrev} is a word which has been defined to @dfn{expand} into
Dave Love <fx@gnu.org>
parents:
diff changeset
40 a specified @dfn{expansion}. When you insert a word-separator character
Dave Love <fx@gnu.org>
parents:
diff changeset
41 following the abbrev, that expands the abbrev---replacing the abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
42 with its expansion. For example, if @samp{foo} is defined as an abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
43 expanding to @samp{find outer otter}, then you can insert @samp{find
Dave Love <fx@gnu.org>
parents:
diff changeset
44 outer otter.} into the buffer by typing @kbd{f o o .}.
Dave Love <fx@gnu.org>
parents:
diff changeset
45
Dave Love <fx@gnu.org>
parents:
diff changeset
46 @findex abbrev-mode
Dave Love <fx@gnu.org>
parents:
diff changeset
47 @vindex abbrev-mode
Dave Love <fx@gnu.org>
parents:
diff changeset
48 @cindex Abbrev mode
Dave Love <fx@gnu.org>
parents:
diff changeset
49 @cindex mode, Abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
50 Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
Dave Love <fx@gnu.org>
parents:
diff changeset
51 Disabling Abbrev mode does not cause abbrev definitions to be forgotten,
Dave Love <fx@gnu.org>
parents:
diff changeset
52 but they do not expand until Abbrev mode is enabled again. The command
Dave Love <fx@gnu.org>
parents:
diff changeset
53 @kbd{M-x abbrev-mode} toggles Abbrev mode; with a numeric argument, it
Dave Love <fx@gnu.org>
parents:
diff changeset
54 turns Abbrev mode on if the argument is positive, off otherwise.
Dave Love <fx@gnu.org>
parents:
diff changeset
55 @xref{Minor Modes}. @code{abbrev-mode} is also a variable; Abbrev mode is
Dave Love <fx@gnu.org>
parents:
diff changeset
56 on when the variable is non-@code{nil}. The variable @code{abbrev-mode}
Dave Love <fx@gnu.org>
parents:
diff changeset
57 automatically becomes local to the current buffer when it is set.
Dave Love <fx@gnu.org>
parents:
diff changeset
58
Dave Love <fx@gnu.org>
parents:
diff changeset
59 Abbrev definitions can be @dfn{mode-specific}---active only in one major
Dave Love <fx@gnu.org>
parents:
diff changeset
60 mode. Abbrevs can also have @dfn{global} definitions that are active in
Dave Love <fx@gnu.org>
parents:
diff changeset
61 all major modes. The same abbrev can have a global definition and various
Dave Love <fx@gnu.org>
parents:
diff changeset
62 mode-specific definitions for different major modes. A mode-specific
Dave Love <fx@gnu.org>
parents:
diff changeset
63 definition for the current major mode overrides a global definition.
Dave Love <fx@gnu.org>
parents:
diff changeset
64
Dave Love <fx@gnu.org>
parents:
diff changeset
65 Abbrevs can be defined interactively during the editing session. Lists
Dave Love <fx@gnu.org>
parents:
diff changeset
66 of abbrev definitions can also be saved in files and reloaded in later
Dave Love <fx@gnu.org>
parents:
diff changeset
67 sessions. Some users keep extensive lists of abbrevs that they load in
Dave Love <fx@gnu.org>
parents:
diff changeset
68 every session.
Dave Love <fx@gnu.org>
parents:
diff changeset
69
Dave Love <fx@gnu.org>
parents:
diff changeset
70 @node Defining Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
71 @section Defining Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
72
Dave Love <fx@gnu.org>
parents:
diff changeset
73 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
74 @item C-x a g
Dave Love <fx@gnu.org>
parents:
diff changeset
75 Define an abbrev, using one or more words before point as its expansion
Dave Love <fx@gnu.org>
parents:
diff changeset
76 (@code{add-global-abbrev}).
Dave Love <fx@gnu.org>
parents:
diff changeset
77 @item C-x a l
Dave Love <fx@gnu.org>
parents:
diff changeset
78 Similar, but define an abbrev specific to the current major mode
Dave Love <fx@gnu.org>
parents:
diff changeset
79 (@code{add-mode-abbrev}).
Dave Love <fx@gnu.org>
parents:
diff changeset
80 @item C-x a i g
Dave Love <fx@gnu.org>
parents:
diff changeset
81 Define a word in the buffer as an abbrev (@code{inverse-add-global-abbrev}).
Dave Love <fx@gnu.org>
parents:
diff changeset
82 @item C-x a i l
Dave Love <fx@gnu.org>
parents:
diff changeset
83 Define a word in the buffer as a mode-specific abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
84 (@code{inverse-add-mode-abbrev}).
42492
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
85 @item M-x define-global-abbrev @key{RET} @var{abbrev} @key{RET} @var{exp} @key{RET}
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
86 Define @var{abbrev} as an abbrev expanding into @var{exp}.
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
87 @item M-x define-mode-abbrev @key{RET} @var{abbrev} @key{RET} @var{exp} @key{RET}
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
88 Define @var{abbrev} as a mode-specific abbrev expanding into @var{exp}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
89 @item M-x kill-all-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
90 This command discards all abbrev definitions currently in effect,
Dave Love <fx@gnu.org>
parents:
diff changeset
91 leaving a blank slate.
Dave Love <fx@gnu.org>
parents:
diff changeset
92 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
93
Dave Love <fx@gnu.org>
parents:
diff changeset
94 @kindex C-x a g
Dave Love <fx@gnu.org>
parents:
diff changeset
95 @findex add-global-abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
96 The usual way to define an abbrev is to enter the text you want the
Dave Love <fx@gnu.org>
parents:
diff changeset
97 abbrev to expand to, position point after it, and type @kbd{C-x a g}
Dave Love <fx@gnu.org>
parents:
diff changeset
98 (@code{add-global-abbrev}). This reads the abbrev itself using the
Dave Love <fx@gnu.org>
parents:
diff changeset
99 minibuffer, and then defines it as an abbrev for one or more words before
Dave Love <fx@gnu.org>
parents:
diff changeset
100 point. Use a numeric argument to say how many words before point should be
Dave Love <fx@gnu.org>
parents:
diff changeset
101 taken as the expansion. For example, to define the abbrev @samp{foo} as
Dave Love <fx@gnu.org>
parents:
diff changeset
102 mentioned above, insert the text @samp{find outer otter} and then type
Dave Love <fx@gnu.org>
parents:
diff changeset
103 @kbd{C-u 3 C-x a g f o o @key{RET}}.
Dave Love <fx@gnu.org>
parents:
diff changeset
104
Dave Love <fx@gnu.org>
parents:
diff changeset
105 An argument of zero to @kbd{C-x a g} means to use the contents of the
Dave Love <fx@gnu.org>
parents:
diff changeset
106 region as the expansion of the abbrev being defined.
Dave Love <fx@gnu.org>
parents:
diff changeset
107
Dave Love <fx@gnu.org>
parents:
diff changeset
108 @kindex C-x a l
Dave Love <fx@gnu.org>
parents:
diff changeset
109 @findex add-mode-abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
110 The command @kbd{C-x a l} (@code{add-mode-abbrev}) is similar, but
Dave Love <fx@gnu.org>
parents:
diff changeset
111 defines a mode-specific abbrev. Mode-specific abbrevs are active only in a
Dave Love <fx@gnu.org>
parents:
diff changeset
112 particular major mode. @kbd{C-x a l} defines an abbrev for the major mode
Dave Love <fx@gnu.org>
parents:
diff changeset
113 in effect at the time @kbd{C-x a l} is typed. The arguments work the same
Dave Love <fx@gnu.org>
parents:
diff changeset
114 as for @kbd{C-x a g}.
Dave Love <fx@gnu.org>
parents:
diff changeset
115
Dave Love <fx@gnu.org>
parents:
diff changeset
116 @kindex C-x a i g
Dave Love <fx@gnu.org>
parents:
diff changeset
117 @findex inverse-add-global-abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
118 @kindex C-x a i l
Dave Love <fx@gnu.org>
parents:
diff changeset
119 @findex inverse-add-mode-abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
120 If the text already in the buffer is the abbrev, rather than its
Dave Love <fx@gnu.org>
parents:
diff changeset
121 expansion, use command @kbd{C-x a i g}
Dave Love <fx@gnu.org>
parents:
diff changeset
122 (@code{inverse-add-global-abbrev}) instead of @kbd{C-x a g}, or use
Dave Love <fx@gnu.org>
parents:
diff changeset
123 @kbd{C-x a i l} (@code{inverse-add-mode-abbrev}) instead of @kbd{C-x a
Dave Love <fx@gnu.org>
parents:
diff changeset
124 l}. These commands are called ``inverse'' because they invert the
Dave Love <fx@gnu.org>
parents:
diff changeset
125 meaning of the two text strings they use (one from the buffer and one
Dave Love <fx@gnu.org>
parents:
diff changeset
126 read with the minibuffer).
Dave Love <fx@gnu.org>
parents:
diff changeset
127
42492
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
128 @findex define-mode-abbrev
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
129 @findex define-global-abbrev
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
130 You can define an abbrev without inserting either the abbrev or its
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
131 expansion in the buffer using the command @code{define-global-abbrev}.
56165
920d5b4fe0a2 * msdog.texi (Text and Binary, MS-DOS Printing): Use m-dash.
Jesper Harder <harder@ifa.au.dk>
parents: 52401
diff changeset
132 It reads two arguments---the abbrev, and its expansion. The command
42492
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
133 @code{define-mode-abbrev} does likewise for a mode-specific abbrev.
a5636409941f Describe define-global-abbrev and define-mode-abbrev.
Richard M. Stallman <rms@gnu.org>
parents: 40905
diff changeset
134
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
135 To change the definition of an abbrev, just define a new definition.
Dave Love <fx@gnu.org>
parents:
diff changeset
136 When the abbrev has a prior definition, the abbrev definition commands
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38201
diff changeset
137 ask for confirmation before replacing it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
138
Dave Love <fx@gnu.org>
parents:
diff changeset
139 To remove an abbrev definition, give a negative argument to the abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
140 definition command: @kbd{C-u - C-x a g} or @kbd{C-u - C-x a l}. The
Dave Love <fx@gnu.org>
parents:
diff changeset
141 former removes a global definition, while the latter removes a
Dave Love <fx@gnu.org>
parents:
diff changeset
142 mode-specific definition.
Dave Love <fx@gnu.org>
parents:
diff changeset
143
Dave Love <fx@gnu.org>
parents:
diff changeset
144 @findex kill-all-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
145 @kbd{M-x kill-all-abbrevs} removes all the abbrev definitions there
Dave Love <fx@gnu.org>
parents:
diff changeset
146 are, both global and local.
Dave Love <fx@gnu.org>
parents:
diff changeset
147
Dave Love <fx@gnu.org>
parents:
diff changeset
148 @node Expanding Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
149 @section Controlling Abbrev Expansion
Dave Love <fx@gnu.org>
parents:
diff changeset
150
Dave Love <fx@gnu.org>
parents:
diff changeset
151 An abbrev expands whenever it is present in the buffer just before
Dave Love <fx@gnu.org>
parents:
diff changeset
152 point and you type a self-inserting whitespace or punctuation character
Dave Love <fx@gnu.org>
parents:
diff changeset
153 (@key{SPC}, comma, etc.@:). More precisely, any character that is not a
Dave Love <fx@gnu.org>
parents:
diff changeset
154 word constituent expands an abbrev, and any word-constituent character
Dave Love <fx@gnu.org>
parents:
diff changeset
155 can be part of an abbrev. The most common way to use an abbrev is to
59946
e966a5990649 (Expanding Abbrevs): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 56165
diff changeset
156 insert it and then insert a punctuation or whitespace character to expand it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
157
Dave Love <fx@gnu.org>
parents:
diff changeset
158 @vindex abbrev-all-caps
Dave Love <fx@gnu.org>
parents:
diff changeset
159 Abbrev expansion preserves case; thus, @samp{foo} expands into @samp{find
Dave Love <fx@gnu.org>
parents:
diff changeset
160 outer otter}; @samp{Foo} into @samp{Find outer otter}, and @samp{FOO} into
Dave Love <fx@gnu.org>
parents:
diff changeset
161 @samp{FIND OUTER OTTER} or @samp{Find Outer Otter} according to the
59946
e966a5990649 (Expanding Abbrevs): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 56165
diff changeset
162 variable @code{abbrev-all-caps} (setting it non-@code{nil} specifies
59962
b728ee27ee08 (Expanding Abbrevs): Fix previous fix.
Lute Kamstra <lute@gnu.org>
parents: 59956
diff changeset
163 @samp{FIND OUTER OTTER}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
164
Dave Love <fx@gnu.org>
parents:
diff changeset
165 These commands are used to control abbrev expansion:
Dave Love <fx@gnu.org>
parents:
diff changeset
166
Dave Love <fx@gnu.org>
parents:
diff changeset
167 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
168 @item M-'
Dave Love <fx@gnu.org>
parents:
diff changeset
169 Separate a prefix from a following abbrev to be expanded
Dave Love <fx@gnu.org>
parents:
diff changeset
170 (@code{abbrev-prefix-mark}).
Dave Love <fx@gnu.org>
parents:
diff changeset
171 @item C-x a e
Dave Love <fx@gnu.org>
parents:
diff changeset
172 @findex expand-abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
173 Expand the abbrev before point (@code{expand-abbrev}).
Dave Love <fx@gnu.org>
parents:
diff changeset
174 This is effective even when Abbrev mode is not enabled.
Dave Love <fx@gnu.org>
parents:
diff changeset
175 @item M-x expand-region-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
176 Expand some or all abbrevs found in the region.
Dave Love <fx@gnu.org>
parents:
diff changeset
177 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
178
Dave Love <fx@gnu.org>
parents:
diff changeset
179 @kindex M-'
Dave Love <fx@gnu.org>
parents:
diff changeset
180 @findex abbrev-prefix-mark
Dave Love <fx@gnu.org>
parents:
diff changeset
181 You may wish to expand an abbrev with a prefix attached; for example,
Dave Love <fx@gnu.org>
parents:
diff changeset
182 if @samp{cnst} expands into @samp{construction}, you might want to use
Dave Love <fx@gnu.org>
parents:
diff changeset
183 it to enter @samp{reconstruction}. It does not work to type
Dave Love <fx@gnu.org>
parents:
diff changeset
184 @kbd{recnst}, because that is not necessarily a defined abbrev. What
Dave Love <fx@gnu.org>
parents:
diff changeset
185 you can do is use the command @kbd{M-'} (@code{abbrev-prefix-mark}) in
Dave Love <fx@gnu.org>
parents:
diff changeset
186 between the prefix @samp{re} and the abbrev @samp{cnst}. First, insert
Dave Love <fx@gnu.org>
parents:
diff changeset
187 @samp{re}. Then type @kbd{M-'}; this inserts a hyphen in the buffer to
Dave Love <fx@gnu.org>
parents:
diff changeset
188 indicate that it has done its work. Then insert the abbrev @samp{cnst};
Dave Love <fx@gnu.org>
parents:
diff changeset
189 the buffer now contains @samp{re-cnst}. Now insert a non-word character
Dave Love <fx@gnu.org>
parents:
diff changeset
190 to expand the abbrev @samp{cnst} into @samp{construction}. This
Dave Love <fx@gnu.org>
parents:
diff changeset
191 expansion step also deletes the hyphen that indicated @kbd{M-'} had been
Dave Love <fx@gnu.org>
parents:
diff changeset
192 used. The result is the desired @samp{reconstruction}.
Dave Love <fx@gnu.org>
parents:
diff changeset
193
Dave Love <fx@gnu.org>
parents:
diff changeset
194 If you actually want the text of the abbrev in the buffer, rather than
Dave Love <fx@gnu.org>
parents:
diff changeset
195 its expansion, you can accomplish this by inserting the following
Dave Love <fx@gnu.org>
parents:
diff changeset
196 punctuation with @kbd{C-q}. Thus, @kbd{foo C-q ,} leaves @samp{foo,} in
Dave Love <fx@gnu.org>
parents:
diff changeset
197 the buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
198
Dave Love <fx@gnu.org>
parents:
diff changeset
199 @findex unexpand-abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
200 If you expand an abbrev by mistake, you can undo the expansion and
Dave Love <fx@gnu.org>
parents:
diff changeset
201 bring back the abbrev itself by typing @kbd{C-_} to undo (@pxref{Undo}).
Dave Love <fx@gnu.org>
parents:
diff changeset
202 This also undoes the insertion of the non-word character that expanded
Dave Love <fx@gnu.org>
parents:
diff changeset
203 the abbrev. If the result you want is the terminating non-word
Dave Love <fx@gnu.org>
parents:
diff changeset
204 character plus the unexpanded abbrev, you must reinsert the terminating
Dave Love <fx@gnu.org>
parents:
diff changeset
205 character, quoting it with @kbd{C-q}. You can also use the command
Dave Love <fx@gnu.org>
parents:
diff changeset
206 @kbd{M-x unexpand-abbrev} to cancel the last expansion without
Dave Love <fx@gnu.org>
parents:
diff changeset
207 deleting the terminating character.
Dave Love <fx@gnu.org>
parents:
diff changeset
208
Dave Love <fx@gnu.org>
parents:
diff changeset
209 @findex expand-region-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
210 @kbd{M-x expand-region-abbrevs} searches through the region for defined
Dave Love <fx@gnu.org>
parents:
diff changeset
211 abbrevs, and for each one found offers to replace it with its expansion.
Dave Love <fx@gnu.org>
parents:
diff changeset
212 This command is useful if you have typed in text using abbrevs but forgot
Dave Love <fx@gnu.org>
parents:
diff changeset
213 to turn on Abbrev mode first. It may also be useful together with a
Dave Love <fx@gnu.org>
parents:
diff changeset
214 special set of abbrev definitions for making several global replacements at
Dave Love <fx@gnu.org>
parents:
diff changeset
215 once. This command is effective even if Abbrev mode is not enabled.
Dave Love <fx@gnu.org>
parents:
diff changeset
216
Dave Love <fx@gnu.org>
parents:
diff changeset
217 Expanding an abbrev runs the hook @code{pre-abbrev-expand-hook}
Dave Love <fx@gnu.org>
parents:
diff changeset
218 (@pxref{Hooks}).
Dave Love <fx@gnu.org>
parents:
diff changeset
219
Dave Love <fx@gnu.org>
parents:
diff changeset
220 @need 1500
Dave Love <fx@gnu.org>
parents:
diff changeset
221 @node Editing Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
222 @section Examining and Editing Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
223
Dave Love <fx@gnu.org>
parents:
diff changeset
224 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
225 @item M-x list-abbrevs
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38201
diff changeset
226 Display a list of all abbrev definitions. With a numeric argument, list
31278
0b5861b3347c (Editing Abbrevs): Document the effect of prefix argument on list-abbrevs.
Eli Zaretskii <eliz@gnu.org>
parents: 31184
diff changeset
227 only local abbrevs.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
228 @item M-x edit-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
229 Edit a list of abbrevs; you can add, alter or remove definitions.
Dave Love <fx@gnu.org>
parents:
diff changeset
230 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
231
Dave Love <fx@gnu.org>
parents:
diff changeset
232 @findex list-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
233 The output from @kbd{M-x list-abbrevs} looks like this:
Dave Love <fx@gnu.org>
parents:
diff changeset
234
Dave Love <fx@gnu.org>
parents:
diff changeset
235 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
236 (lisp-mode-abbrev-table)
Dave Love <fx@gnu.org>
parents:
diff changeset
237 "dk" 0 "define-key"
Dave Love <fx@gnu.org>
parents:
diff changeset
238 (global-abbrev-table)
Dave Love <fx@gnu.org>
parents:
diff changeset
239 "dfn" 0 "definition"
Dave Love <fx@gnu.org>
parents:
diff changeset
240 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
241
Dave Love <fx@gnu.org>
parents:
diff changeset
242 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
243 (Some blank lines of no semantic significance, and some other abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
244 tables, have been omitted.)
Dave Love <fx@gnu.org>
parents:
diff changeset
245
Dave Love <fx@gnu.org>
parents:
diff changeset
246 A line containing a name in parentheses is the header for abbrevs in a
Dave Love <fx@gnu.org>
parents:
diff changeset
247 particular abbrev table; @code{global-abbrev-table} contains all the global
Dave Love <fx@gnu.org>
parents:
diff changeset
248 abbrevs, and the other abbrev tables that are named after major modes
Dave Love <fx@gnu.org>
parents:
diff changeset
249 contain the mode-specific abbrevs.
Dave Love <fx@gnu.org>
parents:
diff changeset
250
Dave Love <fx@gnu.org>
parents:
diff changeset
251 Within each abbrev table, each nonblank line defines one abbrev. The
Dave Love <fx@gnu.org>
parents:
diff changeset
252 word at the beginning of the line is the abbrev. The number that
Dave Love <fx@gnu.org>
parents:
diff changeset
253 follows is the number of times the abbrev has been expanded. Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
254 keeps track of this to help you see which abbrevs you actually use, so
Dave Love <fx@gnu.org>
parents:
diff changeset
255 that you can eliminate those that you don't use often. The string at
Dave Love <fx@gnu.org>
parents:
diff changeset
256 the end of the line is the expansion.
Dave Love <fx@gnu.org>
parents:
diff changeset
257
Dave Love <fx@gnu.org>
parents:
diff changeset
258 @findex edit-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
259 @kindex C-c C-c @r{(Edit Abbrevs)}
Dave Love <fx@gnu.org>
parents:
diff changeset
260 @kbd{M-x edit-abbrevs} allows you to add, change or kill abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
261 definitions by editing a list of them in an Emacs buffer. The list has
Dave Love <fx@gnu.org>
parents:
diff changeset
262 the same format described above. The buffer of abbrevs is called
Dave Love <fx@gnu.org>
parents:
diff changeset
263 @samp{*Abbrevs*}, and is in Edit-Abbrevs mode. Type @kbd{C-c C-c} in
Dave Love <fx@gnu.org>
parents:
diff changeset
264 this buffer to install the abbrev definitions as specified in the
Dave Love <fx@gnu.org>
parents:
diff changeset
265 buffer---and delete any abbrev definitions not listed.
Dave Love <fx@gnu.org>
parents:
diff changeset
266
Dave Love <fx@gnu.org>
parents:
diff changeset
267 The command @code{edit-abbrevs} is actually the same as
Dave Love <fx@gnu.org>
parents:
diff changeset
268 @code{list-abbrevs} except that it selects the buffer @samp{*Abbrevs*}
Dave Love <fx@gnu.org>
parents:
diff changeset
269 whereas @code{list-abbrevs} merely displays it in another window.
Dave Love <fx@gnu.org>
parents:
diff changeset
270
Dave Love <fx@gnu.org>
parents:
diff changeset
271 @node Saving Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
272 @section Saving Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
273
Dave Love <fx@gnu.org>
parents:
diff changeset
274 These commands allow you to keep abbrev definitions between editing
Dave Love <fx@gnu.org>
parents:
diff changeset
275 sessions.
Dave Love <fx@gnu.org>
parents:
diff changeset
276
Dave Love <fx@gnu.org>
parents:
diff changeset
277 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
278 @item M-x write-abbrev-file @key{RET} @var{file} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
279 Write a file @var{file} describing all defined abbrevs.
Dave Love <fx@gnu.org>
parents:
diff changeset
280 @item M-x read-abbrev-file @key{RET} @var{file} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
281 Read the file @var{file} and define abbrevs as specified therein.
Dave Love <fx@gnu.org>
parents:
diff changeset
282 @item M-x quietly-read-abbrev-file @key{RET} @var{file} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
283 Similar but do not display a message about what is going on.
Dave Love <fx@gnu.org>
parents:
diff changeset
284 @item M-x define-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
285 Define abbrevs from definitions in current buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
286 @item M-x insert-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
287 Insert all abbrevs and their expansions into current buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
288 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
289
Dave Love <fx@gnu.org>
parents:
diff changeset
290 @findex write-abbrev-file
Dave Love <fx@gnu.org>
parents:
diff changeset
291 @kbd{M-x write-abbrev-file} reads a file name using the minibuffer and
Dave Love <fx@gnu.org>
parents:
diff changeset
292 then writes a description of all current abbrev definitions into that
Dave Love <fx@gnu.org>
parents:
diff changeset
293 file. This is used to save abbrev definitions for use in a later
Dave Love <fx@gnu.org>
parents:
diff changeset
294 session. The text stored in the file is a series of Lisp expressions
Dave Love <fx@gnu.org>
parents:
diff changeset
295 that, when executed, define the same abbrevs that you currently have.
Dave Love <fx@gnu.org>
parents:
diff changeset
296
Dave Love <fx@gnu.org>
parents:
diff changeset
297 @findex read-abbrev-file
Dave Love <fx@gnu.org>
parents:
diff changeset
298 @findex quietly-read-abbrev-file
Dave Love <fx@gnu.org>
parents:
diff changeset
299 @vindex abbrev-file-name
40905
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
300 @kbd{M-x read-abbrev-file} reads a file name using the minibuffer
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
301 and then reads the file, defining abbrevs according to the contents of
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
302 the file. The function @code{quietly-read-abbrev-file} is similar
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
303 except that it does not display a message in the echo area; you cannot
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
304 invoke it interactively, and it is used primarily in the @file{.emacs}
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
305 file. If either of these functions is called with @code{nil} as the
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
306 argument, it uses the file name specified in the variable
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
307 @code{abbrev-file-name}, which is by default @code{"~/.abbrev_defs"}.
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
308 That file is your standard abbrev definition file, and Emacs loads
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
309 abbrevs from it automatically when it starts up.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
310
Dave Love <fx@gnu.org>
parents:
diff changeset
311 @vindex save-abbrevs
40905
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
312 Emacs will offer to save abbrevs automatically if you have changed
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
313 any of them, whenever it offers to save all files (for @kbd{C-x s} or
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
314 @kbd{C-x C-c}). It saves them in the file specified by
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
315 @code{abbrev-file-name}. This feature can be inhibited by setting the
6407171bcdde Document changes in loading and saving abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38461
diff changeset
316 variable @code{save-abbrevs} to @code{nil}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
317
Dave Love <fx@gnu.org>
parents:
diff changeset
318 @findex insert-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
319 @findex define-abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
320 The commands @kbd{M-x insert-abbrevs} and @kbd{M-x define-abbrevs} are
Dave Love <fx@gnu.org>
parents:
diff changeset
321 similar to the previous commands but work on text in an Emacs buffer.
49983
2a8850f484eb Clarify where insert-abbrevs puts point.
Richard M. Stallman <rms@gnu.org>
parents: 42492
diff changeset
322 @kbd{M-x insert-abbrevs} inserts text into the current buffer after point,
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
323 describing all current abbrev definitions; @kbd{M-x define-abbrevs} parses
Dave Love <fx@gnu.org>
parents:
diff changeset
324 the entire current buffer and defines abbrevs accordingly.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
325
Dave Love <fx@gnu.org>
parents:
diff changeset
326 @node Dynamic Abbrevs
Dave Love <fx@gnu.org>
parents:
diff changeset
327 @section Dynamic Abbrev Expansion
Dave Love <fx@gnu.org>
parents:
diff changeset
328
Dave Love <fx@gnu.org>
parents:
diff changeset
329 The abbrev facility described above operates automatically as you insert
Dave Love <fx@gnu.org>
parents:
diff changeset
330 text, but all abbrevs must be defined explicitly. By contrast,
Dave Love <fx@gnu.org>
parents:
diff changeset
331 @dfn{dynamic abbrevs} allow the meanings of abbrevs to be determined
Dave Love <fx@gnu.org>
parents:
diff changeset
332 automatically from the contents of the buffer, but dynamic abbrev expansion
Dave Love <fx@gnu.org>
parents:
diff changeset
333 happens only when you request it explicitly.
Dave Love <fx@gnu.org>
parents:
diff changeset
334
Dave Love <fx@gnu.org>
parents:
diff changeset
335 @kindex M-/
Dave Love <fx@gnu.org>
parents:
diff changeset
336 @kindex C-M-/
Dave Love <fx@gnu.org>
parents:
diff changeset
337 @findex dabbrev-expand
Dave Love <fx@gnu.org>
parents:
diff changeset
338 @findex dabbrev-completion
Dave Love <fx@gnu.org>
parents:
diff changeset
339 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
340 @item M-/
Dave Love <fx@gnu.org>
parents:
diff changeset
341 Expand the word in the buffer before point as a @dfn{dynamic abbrev},
Dave Love <fx@gnu.org>
parents:
diff changeset
342 by searching in the buffer for words starting with that abbreviation
Dave Love <fx@gnu.org>
parents:
diff changeset
343 (@code{dabbrev-expand}).
Dave Love <fx@gnu.org>
parents:
diff changeset
344
Dave Love <fx@gnu.org>
parents:
diff changeset
345 @item C-M-/
Dave Love <fx@gnu.org>
parents:
diff changeset
346 Complete the word before point as a dynamic abbrev
Dave Love <fx@gnu.org>
parents:
diff changeset
347 (@code{dabbrev-completion}).
Dave Love <fx@gnu.org>
parents:
diff changeset
348 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
349
Dave Love <fx@gnu.org>
parents:
diff changeset
350 @vindex dabbrev-limit
Dave Love <fx@gnu.org>
parents:
diff changeset
351 For example, if the buffer contains @samp{does this follow } and you
Dave Love <fx@gnu.org>
parents:
diff changeset
352 type @kbd{f o M-/}, the effect is to insert @samp{follow} because that
Dave Love <fx@gnu.org>
parents:
diff changeset
353 is the last word in the buffer that starts with @samp{fo}. A numeric
Dave Love <fx@gnu.org>
parents:
diff changeset
354 argument to @kbd{M-/} says to take the second, third, etc.@: distinct
Dave Love <fx@gnu.org>
parents:
diff changeset
355 expansion found looking backward from point. Repeating @kbd{M-/}
Dave Love <fx@gnu.org>
parents:
diff changeset
356 searches for an alternative expansion by looking farther back. After
Dave Love <fx@gnu.org>
parents:
diff changeset
357 scanning all the text before point, it searches the text after point.
Dave Love <fx@gnu.org>
parents:
diff changeset
358 The variable @code{dabbrev-limit}, if non-@code{nil}, specifies how far
Dave Love <fx@gnu.org>
parents:
diff changeset
359 in the buffer to search for an expansion.
Dave Love <fx@gnu.org>
parents:
diff changeset
360
Dave Love <fx@gnu.org>
parents:
diff changeset
361 @vindex dabbrev-check-all-buffers
Dave Love <fx@gnu.org>
parents:
diff changeset
362 After scanning the current buffer, @kbd{M-/} normally searches other
Dave Love <fx@gnu.org>
parents:
diff changeset
363 buffers, unless you have set @code{dabbrev-check-all-buffers} to
Dave Love <fx@gnu.org>
parents:
diff changeset
364 @code{nil}.
Dave Love <fx@gnu.org>
parents:
diff changeset
365
35922
7db14d32feb2 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 31278
diff changeset
366 @vindex dabbrev-ignored-buffer-regexps
35923
3ec035fea54a *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 35922
diff changeset
367 For finer control over which buffers to scan, customize the variable
3ec035fea54a *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 35922
diff changeset
368 @code{dabbrev-ignored-buffer-regexps}. Its value is a list of regular
3ec035fea54a *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 35922
diff changeset
369 expressions. If a buffer's name matches any of these regular
3ec035fea54a *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 35922
diff changeset
370 expressions, dynamic abbrev expansion skips that buffer.
31069
8cbeffd70393 Document dabbrev-ignore-regexps.
Eli Zaretskii <eliz@gnu.org>
parents: 30870
diff changeset
371
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
372 A negative argument to @kbd{M-/}, as in @kbd{C-u - M-/}, says to
49983
2a8850f484eb Clarify where insert-abbrevs puts point.
Richard M. Stallman <rms@gnu.org>
parents: 42492
diff changeset
373 search first for expansions after point, then other buffers, and
2a8850f484eb Clarify where insert-abbrevs puts point.
Richard M. Stallman <rms@gnu.org>
parents: 42492
diff changeset
374 consider expansions before point only as a last resort.
2a8850f484eb Clarify where insert-abbrevs puts point.
Richard M. Stallman <rms@gnu.org>
parents: 42492
diff changeset
375
2a8850f484eb Clarify where insert-abbrevs puts point.
Richard M. Stallman <rms@gnu.org>
parents: 42492
diff changeset
376 If you repeat the @kbd{M-/} to look for another expansion, do not
2a8850f484eb Clarify where insert-abbrevs puts point.
Richard M. Stallman <rms@gnu.org>
parents: 42492
diff changeset
377 specify an argument. This tries all the expansions after point and
2a8850f484eb Clarify where insert-abbrevs puts point.
Richard M. Stallman <rms@gnu.org>
parents: 42492
diff changeset
378 then the expansions before point.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
379
Dave Love <fx@gnu.org>
parents:
diff changeset
380 After you have expanded a dynamic abbrev, you can copy additional
Dave Love <fx@gnu.org>
parents:
diff changeset
381 words that follow the expansion in its original context. Simply type
Dave Love <fx@gnu.org>
parents:
diff changeset
382 @kbd{@key{SPC} M-/} for each word you want to copy. The spacing and
Dave Love <fx@gnu.org>
parents:
diff changeset
383 punctuation between words is copied along with the words.
Dave Love <fx@gnu.org>
parents:
diff changeset
384
Dave Love <fx@gnu.org>
parents:
diff changeset
385 The command @kbd{C-M-/} (@code{dabbrev-completion}) performs
Dave Love <fx@gnu.org>
parents:
diff changeset
386 completion of a dynamic abbreviation. Instead of trying the possible
Dave Love <fx@gnu.org>
parents:
diff changeset
387 expansions one by one, it finds all of them, then inserts the text that
Dave Love <fx@gnu.org>
parents:
diff changeset
388 they have in common. If they have nothing in common, @kbd{C-M-/}
Dave Love <fx@gnu.org>
parents:
diff changeset
389 displays a list of completions, from which you can select a choice in
Dave Love <fx@gnu.org>
parents:
diff changeset
390 the usual manner. @xref{Completion}.
Dave Love <fx@gnu.org>
parents:
diff changeset
391
Dave Love <fx@gnu.org>
parents:
diff changeset
392 Dynamic abbrev expansion is completely independent of Abbrev mode; the
Dave Love <fx@gnu.org>
parents:
diff changeset
393 expansion of a word with @kbd{M-/} is completely independent of whether
Dave Love <fx@gnu.org>
parents:
diff changeset
394 it has a definition as an ordinary abbrev.
Dave Love <fx@gnu.org>
parents:
diff changeset
395
Dave Love <fx@gnu.org>
parents:
diff changeset
396 @node Dabbrev Customization
Dave Love <fx@gnu.org>
parents:
diff changeset
397 @section Customizing Dynamic Abbreviation
Dave Love <fx@gnu.org>
parents:
diff changeset
398
Dave Love <fx@gnu.org>
parents:
diff changeset
399 Normally, dynamic abbrev expansion ignores case when searching for
Dave Love <fx@gnu.org>
parents:
diff changeset
400 expansions. That is, the expansion need not agree in case with the word
Dave Love <fx@gnu.org>
parents:
diff changeset
401 you are expanding.
Dave Love <fx@gnu.org>
parents:
diff changeset
402
Dave Love <fx@gnu.org>
parents:
diff changeset
403 @vindex dabbrev-case-fold-search
Dave Love <fx@gnu.org>
parents:
diff changeset
404 This feature is controlled by the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
405 @code{dabbrev-case-fold-search}. If it is @code{t}, case is ignored in
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38201
diff changeset
406 this search; if it is @code{nil}, the word and the expansion must match
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38201
diff changeset
407 in case. If the value of @code{dabbrev-case-fold-search} is
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
408 @code{case-fold-search}, which is true by default, then the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
409 @code{case-fold-search} controls whether to ignore case while searching
Dave Love <fx@gnu.org>
parents:
diff changeset
410 for expansions.
Dave Love <fx@gnu.org>
parents:
diff changeset
411
Dave Love <fx@gnu.org>
parents:
diff changeset
412 @vindex dabbrev-case-replace
Dave Love <fx@gnu.org>
parents:
diff changeset
413 Normally, dynamic abbrev expansion preserves the case pattern @emph{of
Dave Love <fx@gnu.org>
parents:
diff changeset
414 the abbrev you have typed}, by converting the expansion to that case
Dave Love <fx@gnu.org>
parents:
diff changeset
415 pattern.
Dave Love <fx@gnu.org>
parents:
diff changeset
416
Dave Love <fx@gnu.org>
parents:
diff changeset
417 @vindex dabbrev-case-fold-search
Dave Love <fx@gnu.org>
parents:
diff changeset
418 The variable @code{dabbrev-case-replace} controls whether to preserve
Dave Love <fx@gnu.org>
parents:
diff changeset
419 the case pattern of the abbrev. If it is @code{t}, the abbrev's case
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38201
diff changeset
420 pattern is preserved in most cases; if it is @code{nil}, the expansion is
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
421 always copied verbatim. If the value of @code{dabbrev-case-replace} is
Dave Love <fx@gnu.org>
parents:
diff changeset
422 @code{case-replace}, which is true by default, then the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
423 @code{case-replace} controls whether to copy the expansion verbatim.
Dave Love <fx@gnu.org>
parents:
diff changeset
424
Dave Love <fx@gnu.org>
parents:
diff changeset
425 However, if the expansion contains a complex mixed case pattern, and
Dave Love <fx@gnu.org>
parents:
diff changeset
426 the abbrev matches this pattern as far as it goes, then the expansion is
Dave Love <fx@gnu.org>
parents:
diff changeset
427 always copied verbatim, regardless of those variables. Thus, for
Dave Love <fx@gnu.org>
parents:
diff changeset
428 example, if the buffer contains @code{variableWithSillyCasePattern}, and
Dave Love <fx@gnu.org>
parents:
diff changeset
429 you type @kbd{v a M-/}, it copies the expansion verbatim including its
Dave Love <fx@gnu.org>
parents:
diff changeset
430 case pattern.
Dave Love <fx@gnu.org>
parents:
diff changeset
431
Dave Love <fx@gnu.org>
parents:
diff changeset
432 @vindex dabbrev-abbrev-char-regexp
Dave Love <fx@gnu.org>
parents:
diff changeset
433 The variable @code{dabbrev-abbrev-char-regexp}, if non-@code{nil},
Dave Love <fx@gnu.org>
parents:
diff changeset
434 controls which characters are considered part of a word, for dynamic expansion
Dave Love <fx@gnu.org>
parents:
diff changeset
435 purposes. The regular expression must match just one character, never
Dave Love <fx@gnu.org>
parents:
diff changeset
436 two or more. The same regular expression also determines which
Dave Love <fx@gnu.org>
parents:
diff changeset
437 characters are part of an expansion. The value @code{nil} has a special
Dave Love <fx@gnu.org>
parents:
diff changeset
438 meaning: abbreviations are made of word characters, but expansions are
Dave Love <fx@gnu.org>
parents:
diff changeset
439 made of word and symbol characters.
Dave Love <fx@gnu.org>
parents:
diff changeset
440
Dave Love <fx@gnu.org>
parents:
diff changeset
441 @vindex dabbrev-abbrev-skip-leading-regexp
Dave Love <fx@gnu.org>
parents:
diff changeset
442 In shell scripts and makefiles, a variable name is sometimes prefixed
Dave Love <fx@gnu.org>
parents:
diff changeset
443 with @samp{$} and sometimes not. Major modes for this kind of text can
Dave Love <fx@gnu.org>
parents:
diff changeset
444 customize dynamic abbreviation to handle optional prefixes by setting
Dave Love <fx@gnu.org>
parents:
diff changeset
445 the variable @code{dabbrev-abbrev-skip-leading-regexp}. Its value
Dave Love <fx@gnu.org>
parents:
diff changeset
446 should be a regular expression that matches the optional prefix that
Dave Love <fx@gnu.org>
parents:
diff changeset
447 dynamic abbreviation should ignore.
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49983
diff changeset
448
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49983
diff changeset
449 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49983
diff changeset
450 arch-tag: 638e0079-9540-48ec-9166-414083e16445
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49983
diff changeset
451 @end ignore