Mercurial > emacs
annotate lispref/abbrevs.texi @ 69478:e8bb5df2ba7a
Add index entries around each paragraph rather than depend on entries
from beginning of node. Doing so ensures that index entries are less
likely to be forgotten if text is cut and pasted, and are necessary
anyway if the references are on a separate page. It seems that
makeinfo is now (v. 4.8) only producing one index entry per node, so
there is no longer any excuse not to. Use subheading instead of
heading. The incorrect use of heading produced very large fonts in
Info--as large as the main heading.
(From Bill Wohler): MH-E never did appear in Emacs 21--MH-E versions 6
and 7 appeared *around* the time of these Emacs releases.
author | Bill Wohler <wohler@newt.com> |
---|---|
date | Wed, 15 Mar 2006 00:26:12 +0000 |
parents | 067115a6e738 |
children | 296e4310eeb6 c5406394f567 |
rev | line source |
---|---|
6552 | 1 @c -*-texinfo-*- |
2 @c This is part of the GNU Emacs Lisp Reference Manual. | |
64889
e836425ee789
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
60260
diff
changeset
|
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1999, 2002, 2003, 2004, |
68648
067115a6e738
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64889
diff
changeset
|
4 @c 2005, 2006 Free Software Foundation, Inc. |
6552 | 5 @c See the file elisp.texi for copying conditions. |
6 @setfilename ../info/abbrevs | |
7 @node Abbrevs, Processes, Syntax Tables, Top | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
8 @chapter Abbrevs and Abbrev Expansion |
6552 | 9 @cindex abbrev |
10 @cindex abbrev table | |
11 | |
12 An abbreviation or @dfn{abbrev} is a string of characters that may be | |
13 expanded to a longer string. The user can insert the abbrev string and | |
14 find it replaced automatically with the expansion of the abbrev. This | |
15 saves typing. | |
16 | |
17 The set of abbrevs currently in effect is recorded in an @dfn{abbrev | |
18 table}. Each buffer has a local abbrev table, but normally all buffers | |
19 in the same major mode share one abbrev table. There is also a global | |
20 abbrev table. Normally both are used. | |
21 | |
22 An abbrev table is represented as an obarray containing a symbol for | |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
23 each abbreviation. The symbol's name is the abbreviation; its value |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
24 is the expansion; its function definition is the hook function to do |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
25 the expansion (@pxref{Defining Abbrevs}); its property list cell |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
26 typically contains the use count, the number of times the abbreviation |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
27 has been expanded. Alternatively, the use count is on the |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
28 @code{count} property and the system-abbrev flag is on the |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
29 @code{system-type} property. Abbrevs with a non-@code{nil} |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
30 @code{system-type} property are called ``system'' abbrevs. They are |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
31 usually defined by modes or packages, instead of by the user, and are |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
32 treated specially in certain respects. |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
33 |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
34 Because the symbols used for abbrevs are not interned in the usual |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
35 obarray, they will never appear as the result of reading a Lisp |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
36 expression; in fact, normally they are never used except by the code |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
37 that handles abbrevs. Therefore, it is safe to use them in an |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
38 extremely nonstandard way. @xref{Creating Symbols}. |
6552 | 39 |
40 For the user-level commands for abbrevs, see @ref{Abbrevs,, Abbrev | |
41 Mode, emacs, The GNU Emacs Manual}. | |
42 | |
43 @menu | |
44 * Abbrev Mode:: Setting up Emacs for abbreviation. | |
45 * Tables: Abbrev Tables. Creating and working with abbrev tables. | |
46 * Defining Abbrevs:: Specifying abbreviations and their expansions. | |
47 * Files: Abbrev Files. Saving abbrevs in files. | |
48 * Expansion: Abbrev Expansion. Controlling expansion; expansion subroutines. | |
49 * Standard Abbrev Tables:: Abbrev tables used by various major modes. | |
50 @end menu | |
51 | |
52 @node Abbrev Mode, Abbrev Tables, Abbrevs, Abbrevs | |
53 @comment node-name, next, previous, up | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42436
diff
changeset
|
54 @section Setting Up Abbrev Mode |
6552 | 55 |
56 Abbrev mode is a minor mode controlled by the value of the variable | |
57 @code{abbrev-mode}. | |
58 | |
59 @defvar abbrev-mode | |
60 A non-@code{nil} value of this variable turns on the automatic expansion | |
61 of abbrevs when their abbreviations are inserted into a buffer. | |
62 If the value is @code{nil}, abbrevs may be defined, but they are not | |
63 expanded automatically. | |
64 | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
65 This variable automatically becomes buffer-local when set in any fashion. |
6552 | 66 @end defvar |
67 | |
68 @defvar default-abbrev-mode | |
7688 | 69 This is the value of @code{abbrev-mode} for buffers that do not override it. |
6552 | 70 This is the same as @code{(default-value 'abbrev-mode)}. |
71 @end defvar | |
72 | |
73 @node Abbrev Tables, Defining Abbrevs, Abbrev Mode, Abbrevs | |
74 @section Abbrev Tables | |
75 | |
76 This section describes how to create and manipulate abbrev tables. | |
77 | |
78 @defun make-abbrev-table | |
79 This function creates and returns a new, empty abbrev table---an obarray | |
80 containing no symbols. It is a vector filled with zeros. | |
81 @end defun | |
82 | |
83 @defun clear-abbrev-table table | |
84 This function undefines all the abbrevs in abbrev table @var{table}, | |
27270
5a4e13447b47
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27268
diff
changeset
|
85 leaving it empty. It always returns @code{nil}. |
6552 | 86 @end defun |
87 | |
52136
2df0dfd73718
(Abbrev Tables): Add copy-abbrev-table.
Richard M. Stallman <rms@gnu.org>
parents:
52037
diff
changeset
|
88 @defun copy-abbrev-table table |
2df0dfd73718
(Abbrev Tables): Add copy-abbrev-table.
Richard M. Stallman <rms@gnu.org>
parents:
52037
diff
changeset
|
89 This function returns a copy of abbrev table @var{table}---a new |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
90 abbrev table that contains the same abbrev definitions. The only |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
91 difference between @var{table} and the returned copy is that this |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
92 function sets the property lists of all copied abbrevs to 0. |
52136
2df0dfd73718
(Abbrev Tables): Add copy-abbrev-table.
Richard M. Stallman <rms@gnu.org>
parents:
52037
diff
changeset
|
93 @end defun |
2df0dfd73718
(Abbrev Tables): Add copy-abbrev-table.
Richard M. Stallman <rms@gnu.org>
parents:
52037
diff
changeset
|
94 |
6552 | 95 @defun define-abbrev-table tabname definitions |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
96 This function defines @var{tabname} (a symbol) as an abbrev table |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
97 name, i.e., as a variable whose value is an abbrev table. It defines |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
98 abbrevs in the table according to @var{definitions}, a list of |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
99 elements of the form @code{(@var{abbrevname} @var{expansion} |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
100 @var{hook} @var{usecount} @var{system-flag})}. If an element of |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
101 @var{definitions} has length less than five, omitted elements default |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
102 to @code{nil}. A value of @code{nil} for @var{usecount} is equivalent |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
103 to zero. The return value is always @code{nil}. |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
104 |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
105 If this function is called more than once for the same @var{tabname}, |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
106 subsequent calls add the definitions in @var{definitions} to |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
107 @var{tabname}, rather than overriding the entire original contents. |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
108 (A subsequent call only overrides abbrevs explicitly redefined or |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
109 undefined in @var{definitions}.) |
6552 | 110 @end defun |
111 | |
112 @defvar abbrev-table-name-list | |
113 This is a list of symbols whose values are abbrev tables. | |
114 @code{define-abbrev-table} adds the new abbrev table name to this list. | |
115 @end defvar | |
116 | |
117 @defun insert-abbrev-table-description name &optional human | |
118 This function inserts before point a description of the abbrev table | |
119 named @var{name}. The argument @var{name} is a symbol whose value is an | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
120 abbrev table. The return value is always @code{nil}. |
6552 | 121 |
122 If @var{human} is non-@code{nil}, the description is human-oriented. | |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
123 System abbrevs are listed and identified as such. Otherwise the |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
124 description is a Lisp expression---a call to @code{define-abbrev-table} |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
125 that would define @var{name} as it is currently defined, but without |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
126 the system abbrevs. (The mode or package using @var{name} is supposed |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
127 to add these to @var{name} separately.) |
6552 | 128 @end defun |
129 | |
130 @node Defining Abbrevs, Abbrev Files, Abbrev Tables, Abbrevs | |
131 @comment node-name, next, previous, up | |
132 @section Defining Abbrevs | |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
133 @code{define-abbrev} is the low-level basic function for defining an |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
134 abbrev in a specified abbrev table. When major modes predefine |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
135 standard abbrevs, they should call @code{define-abbrev} and specify |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
136 @code{t} for @var{system-flag}. |
6552 | 137 |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
138 @defun define-abbrev table name expansion &optional hook count system-flag |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
139 This function defines an abbrev named @var{name}, in @var{table}, to |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
140 expand to @var{expansion} and call @var{hook}. The return value is |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
141 @var{name}. |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
142 |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
143 The value of @var{count}, if specified, initializes the abbrev's |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
144 usage-count. If @var{count} is not specified or @code{nil}, the use |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
145 count is initialized to zero. |
6552 | 146 |
147 The argument @var{name} should be a string. The argument | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
148 @var{expansion} is normally the desired expansion (a string), or |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
149 @code{nil} to undefine the abbrev. If it is anything but a string or |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
150 @code{nil}, then the abbreviation ``expands'' solely by running |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
151 @var{hook}. |
6552 | 152 |
153 The argument @var{hook} is a function or @code{nil}. If @var{hook} is | |
154 non-@code{nil}, then it is called with no arguments after the abbrev is | |
155 replaced with @var{expansion}; point is located at the end of | |
7688 | 156 @var{expansion} when @var{hook} is called. |
27385
f7b7fdb0f3f4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27270
diff
changeset
|
157 |
52540
8c622de0d2ed
(Defining Abbrevs): Index no-self-insert.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
158 @cindex @code{no-self-insert} property |
51681
0a1f20d3fa89
Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents:
49600
diff
changeset
|
159 If @var{hook} is a non-@code{nil} symbol whose @code{no-self-insert} |
0a1f20d3fa89
Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents:
49600
diff
changeset
|
160 property is non-@code{nil}, @var{hook} can explicitly control whether |
0a1f20d3fa89
Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents:
49600
diff
changeset
|
161 to insert the self-inserting input character that triggered the |
0a1f20d3fa89
Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents:
49600
diff
changeset
|
162 expansion. If @var{hook} returns non-@code{nil} in this case, that |
0a1f20d3fa89
Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents:
49600
diff
changeset
|
163 inhibits insertion of the character. By contrast, if @var{hook} |
0a1f20d3fa89
Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents:
49600
diff
changeset
|
164 returns @code{nil}, @code{expand-abbrev} also returns @code{nil}, as |
0a1f20d3fa89
Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents:
49600
diff
changeset
|
165 if expansion had not really occurred. |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
166 |
42436
99f8742109a3
Improve previous change.
Richard M. Stallman <rms@gnu.org>
parents:
42435
diff
changeset
|
167 If @var{system-flag} is non-@code{nil}, that marks the abbrev as a |
99f8742109a3
Improve previous change.
Richard M. Stallman <rms@gnu.org>
parents:
42435
diff
changeset
|
168 ``system'' abbrev with the @code{system-type} property. |
99f8742109a3
Improve previous change.
Richard M. Stallman <rms@gnu.org>
parents:
42435
diff
changeset
|
169 |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
170 Normally the function @code{define-abbrev} sets the variable |
42436
99f8742109a3
Improve previous change.
Richard M. Stallman <rms@gnu.org>
parents:
42435
diff
changeset
|
171 @code{abbrevs-changed} to @code{t}, if it actually changes the abbrev. |
99f8742109a3
Improve previous change.
Richard M. Stallman <rms@gnu.org>
parents:
42435
diff
changeset
|
172 (This is so that some commands will offer to save the abbrevs.) It |
99f8742109a3
Improve previous change.
Richard M. Stallman <rms@gnu.org>
parents:
42435
diff
changeset
|
173 does not do this for a ``system'' abbrev, since those won't be saved |
99f8742109a3
Improve previous change.
Richard M. Stallman <rms@gnu.org>
parents:
42435
diff
changeset
|
174 anyway. |
6552 | 175 @end defun |
176 | |
177 @defopt only-global-abbrevs | |
178 If this variable is non-@code{nil}, it means that the user plans to use | |
179 global abbrevs only. This tells the commands that define mode-specific | |
180 abbrevs to define global ones instead. This variable does not alter the | |
7688 | 181 behavior of the functions in this section; it is examined by their |
6552 | 182 callers. |
183 @end defopt | |
184 | |
185 @node Abbrev Files, Abbrev Expansion, Defining Abbrevs, Abbrevs | |
186 @section Saving Abbrevs in Files | |
187 | |
188 A file of saved abbrev definitions is actually a file of Lisp code. | |
189 The abbrevs are saved in the form of a Lisp program to define the same | |
190 abbrev tables with the same contents. Therefore, you can load the file | |
191 with @code{load} (@pxref{How Programs Do Loading}). However, the | |
192 function @code{quietly-read-abbrev-file} is provided as a more | |
193 convenient interface. | |
194 | |
195 User-level facilities such as @code{save-some-buffers} can save | |
196 abbrevs in a file automatically, under the control of variables | |
197 described here. | |
198 | |
199 @defopt abbrev-file-name | |
200 This is the default file name for reading and saving abbrevs. | |
201 @end defopt | |
202 | |
26192 | 203 @defun quietly-read-abbrev-file &optional filename |
6552 | 204 This function reads abbrev definitions from a file named @var{filename}, |
205 previously written with @code{write-abbrev-file}. If @var{filename} is | |
26192 | 206 omitted or @code{nil}, the file specified in @code{abbrev-file-name} is |
207 used. @code{save-abbrevs} is set to @code{t} so that changes will be | |
208 saved. | |
6552 | 209 |
210 This function does not display any messages. It returns @code{nil}. | |
211 @end defun | |
212 | |
213 @defopt save-abbrevs | |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
214 A non-@code{nil} value for @code{save-abbrevs} means that Emacs should |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
215 offer the user to save abbrevs when files are saved. If the value is |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
216 @code{silently}, Emacs saves the abbrevs without asking the user. |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
217 @code{abbrev-file-name} specifies the file to save the abbrevs in. |
6552 | 218 @end defopt |
219 | |
220 @defvar abbrevs-changed | |
42435
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
221 This variable is set non-@code{nil} by defining or altering any |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
222 abbrevs (except ``system'' abbrevs). This serves as a flag for |
36047fca69b3
Explain about ``system'' abbrevs.
Richard M. Stallman <rms@gnu.org>
parents:
27385
diff
changeset
|
223 various Emacs commands to offer to save your abbrevs. |
6552 | 224 @end defvar |
225 | |
26192 | 226 @deffn Command write-abbrev-file &optional filename |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
227 Save all abbrev definitions (except ``system'' abbrevs), for all abbrev |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
228 tables listed in @code{abbrev-table-name-list}, in the file |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
229 @var{filename}, in the form of a Lisp program that when loaded will |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
230 define the same abbrevs. If @var{filename} is @code{nil} or omitted, |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
231 @code{abbrev-file-name} is used. This function returns @code{nil}. |
6552 | 232 @end deffn |
233 | |
234 @node Abbrev Expansion, Standard Abbrev Tables, Abbrev Files, Abbrevs | |
235 @comment node-name, next, previous, up | |
236 @section Looking Up and Expanding Abbreviations | |
237 | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
238 Abbrevs are usually expanded by certain interactive commands, |
6552 | 239 including @code{self-insert-command}. This section describes the |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
240 subroutines used in writing such commands, as well as the variables they |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
241 use for communication. |
6552 | 242 |
243 @defun abbrev-symbol abbrev &optional table | |
244 This function returns the symbol representing the abbrev named | |
245 @var{abbrev}. The value returned is @code{nil} if that abbrev is not | |
246 defined. The optional second argument @var{table} is the abbrev table | |
247 to look it up in. If @var{table} is @code{nil}, this function tries | |
248 first the current buffer's local abbrev table, and second the global | |
249 abbrev table. | |
250 @end defun | |
251 | |
7688 | 252 @defun abbrev-expansion abbrev &optional table |
253 This function returns the string that @var{abbrev} would expand into (as | |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
254 defined by the abbrev tables used for the current buffer). If |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
255 @var{abbrev} is not a valid abbrev, the function returns @code{nil}. |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
256 The optional argument @var{table} specifies the abbrev table to use, |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
257 as in @code{abbrev-symbol}. |
7688 | 258 @end defun |
259 | |
260 @deffn Command expand-abbrev | |
26192 | 261 This command expands the abbrev before point, if any. If point does not |
262 follow an abbrev, this command does nothing. The command returns the | |
263 abbrev symbol if it did expansion, @code{nil} otherwise. | |
27385
f7b7fdb0f3f4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27270
diff
changeset
|
264 |
f7b7fdb0f3f4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27270
diff
changeset
|
265 If the abbrev symbol has a hook function which is a symbol whose |
f7b7fdb0f3f4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27270
diff
changeset
|
266 @code{no-self-insert} property is non-@code{nil}, and if the hook |
f7b7fdb0f3f4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27270
diff
changeset
|
267 function returns @code{nil} as its value, then @code{expand-abbrev} |
f7b7fdb0f3f4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27270
diff
changeset
|
268 returns @code{nil} even though expansion did occur. |
7688 | 269 @end deffn |
270 | |
271 @deffn Command abbrev-prefix-mark &optional arg | |
60260
a8e0abd18501
(Abbrev Expansion): Clarify, fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
56816
diff
changeset
|
272 This command marks the current location of point as the beginning of |
a8e0abd18501
(Abbrev Expansion): Clarify, fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
56816
diff
changeset
|
273 an abbrev. The next call to @code{expand-abbrev} will use the text |
a8e0abd18501
(Abbrev Expansion): Clarify, fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
56816
diff
changeset
|
274 from here to point (where it is then) as the abbrev to expand, rather |
a8e0abd18501
(Abbrev Expansion): Clarify, fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
56816
diff
changeset
|
275 than using the previous word as usual. |
54133
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
276 |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
277 First, this command expands any abbrev before point, unless @var{arg} |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
278 is non-@code{nil}. (Interactively, @var{arg} is the prefix argument.) |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
279 Then it inserts a hyphen before point, to indicate the start of the |
c3fa09d47632
Various corrections and clarifications in addition to the following:
Luc Teirlinck <teirllm@auburn.edu>
parents:
52540
diff
changeset
|
280 next abbrev to be expanded. The actual expansion removes the hyphen. |
7688 | 281 @end deffn |
282 | |
6552 | 283 @defopt abbrev-all-caps |
284 When this is set non-@code{nil}, an abbrev entered entirely in upper | |
285 case is expanded using all upper case. Otherwise, an abbrev entered | |
286 entirely in upper case is expanded by capitalizing each word of the | |
287 expansion. | |
288 @end defopt | |
289 | |
290 @defvar abbrev-start-location | |
56816
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
291 The value of this variable is a buffer position (an integer or a marker) |
54212
ba850aa09d2d
(Abbrev Expansion): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
54133
diff
changeset
|
292 for @code{expand-abbrev} to use as the start of the next abbrev to be |
ba850aa09d2d
(Abbrev Expansion): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
54133
diff
changeset
|
293 expanded. The value can also be @code{nil}, which means to use the |
ba850aa09d2d
(Abbrev Expansion): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
54133
diff
changeset
|
294 word before point instead. @code{abbrev-start-location} is set to |
ba850aa09d2d
(Abbrev Expansion): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
54133
diff
changeset
|
295 @code{nil} each time @code{expand-abbrev} is called. This variable is |
ba850aa09d2d
(Abbrev Expansion): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents:
54133
diff
changeset
|
296 also set by @code{abbrev-prefix-mark}. |
6552 | 297 @end defvar |
298 | |
299 @defvar abbrev-start-location-buffer | |
300 The value of this variable is the buffer for which | |
301 @code{abbrev-start-location} has been set. Trying to expand an abbrev | |
302 in any other buffer clears @code{abbrev-start-location}. This variable | |
303 is set by @code{abbrev-prefix-mark}. | |
304 @end defvar | |
305 | |
306 @defvar last-abbrev | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
307 This is the @code{abbrev-symbol} of the most recent abbrev expanded. This |
6552 | 308 information is left by @code{expand-abbrev} for the sake of the |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
309 @code{unexpand-abbrev} command (@pxref{Expanding Abbrevs,, Expanding |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
310 Abbrevs, emacs, The GNU Emacs Manual}). |
6552 | 311 @end defvar |
312 | |
313 @defvar last-abbrev-location | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
314 This is the location of the most recent abbrev expanded. This contains |
6552 | 315 information left by @code{expand-abbrev} for the sake of the |
316 @code{unexpand-abbrev} command. | |
317 @end defvar | |
318 | |
319 @defvar last-abbrev-text | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
320 This is the exact expansion text of the most recent abbrev expanded, |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
321 after case conversion (if any). Its value is @code{nil} if the abbrev |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
322 has already been unexpanded. This contains information left by |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7688
diff
changeset
|
323 @code{expand-abbrev} for the sake of the @code{unexpand-abbrev} command. |
6552 | 324 @end defvar |
325 | |
326 @c Emacs 19 feature | |
327 @defvar pre-abbrev-expand-hook | |
328 This is a normal hook whose functions are executed, in sequence, just | |
329 before any expansion of an abbrev. @xref{Hooks}. Since it is a normal | |
330 hook, the hook functions receive no arguments. However, they can find | |
331 the abbrev to be expanded by looking in the buffer before point. | |
26192 | 332 Running the hook is the first thing that @code{expand-abbrev} does, and |
333 so a hook function can be used to change the current abbrev table before | |
56816
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
334 abbrev lookup happens. (Although you have to do this carefully. See |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
335 the example below.) |
6552 | 336 @end defvar |
337 | |
338 The following sample code shows a simple use of | |
56816
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
339 @code{pre-abbrev-expand-hook}. It assumes that @code{foo-mode} is a |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
340 mode for editing certain files in which lines that start with @samp{#} |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
341 are comments. You want to use Text mode abbrevs for those lines. The |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
342 regular local abbrev table, @code{foo-mode-abbrev-table} is |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
343 appropriate for all other lines. Then you can put the following code |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
344 in your @file{.emacs} file. @xref{Standard Abbrev Tables}, for the |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
345 definitions of @code{local-abbrev-table} and @code{text-mode-abbrev-table}. |
6552 | 346 |
347 @smallexample | |
56816
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
348 (defun foo-mode-pre-abbrev-expand () |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
349 (when (save-excursion (forward-line 0) (eq (char-after) ?#)) |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
350 (let ((local-abbrev-table text-mode-abbrev-table) |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
351 ;; Avoid infinite loop. |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
352 (pre-abbrev-expand-hook nil)) |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
353 (expand-abbrev)) |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
354 ;; We have already called `expand-abbrev' in this hook. |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
355 ;; Hence we want the "actual" call following this hook to be a no-op. |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
356 (setq abbrev-start-location (point-max) |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
357 abbrev-start-location-buffer (current-buffer)))) |
6552 | 358 |
56816
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
359 (add-hook 'foo-mode-hook |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
360 #'(lambda () |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
361 (add-hook 'pre-abbrev-expand-hook |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
362 'foo-mode-pre-abbrev-expand |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
363 nil t))) |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
364 @end smallexample |
6552 | 365 |
60260
a8e0abd18501
(Abbrev Expansion): Clarify, fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
56816
diff
changeset
|
366 Note that @code{foo-mode-pre-abbrev-expand} just returns @code{nil} |
56816
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
367 without doing anything for lines not starting with @samp{#}. Hence |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
368 abbrevs expand normally using @code{foo-mode-abbrev-table} as local |
f3448e5d371d
(Abbrev Expansion): `abbrev-start-location' can be an integer or a marker.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56450
diff
changeset
|
369 abbrev table for such lines. |
6552 | 370 |
371 @node Standard Abbrev Tables, , Abbrev Expansion, Abbrevs | |
372 @comment node-name, next, previous, up | |
373 @section Standard Abbrev Tables | |
374 | |
375 Here we list the variables that hold the abbrev tables for the | |
376 preloaded major modes of Emacs. | |
377 | |
378 @defvar global-abbrev-table | |
379 This is the abbrev table for mode-independent abbrevs. The abbrevs | |
380 defined in it apply to all buffers. Each buffer may also have a local | |
381 abbrev table, whose abbrev definitions take precedence over those in the | |
382 global table. | |
383 @end defvar | |
384 | |
385 @defvar local-abbrev-table | |
386 The value of this buffer-local variable is the (mode-specific) | |
387 abbreviation table of the current buffer. | |
388 @end defvar | |
389 | |
390 @defvar fundamental-mode-abbrev-table | |
7688 | 391 This is the local abbrev table used in Fundamental mode; in other words, |
392 it is the local abbrev table in all buffers in Fundamental mode. | |
6552 | 393 @end defvar |
394 | |
395 @defvar text-mode-abbrev-table | |
396 This is the local abbrev table used in Text mode. | |
397 @end defvar | |
398 | |
399 @defvar lisp-mode-abbrev-table | |
400 This is the local abbrev table used in Lisp mode and Emacs Lisp mode. | |
401 @end defvar | |
26192 | 402 |
52401 | 403 @ignore |
404 arch-tag: 5ffdbe08-2cd4-48ec-a5a8-080f95756eec | |
405 @end ignore |