annotate lispref/abbrevs.texi @ 36150:46e59561af4c

Display Vars node renamed Display Custom. Include info there about customizing cursor appearance. Clean up aggressive scrolling. Clarify horizontal scrolling discussion. Fix index entries for line number mode.
author Richard M. Stallman <rms@gnu.org>
date Sat, 17 Feb 2001 16:45:37 +0000
parents f7b7fdb0f3f4
children 36047fca69b3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 @c -*-texinfo-*-
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 @c This is part of the GNU Emacs Lisp Reference Manual.
27189
d2e5f1b7d8e2 Update copyrights.
Gerd Moellmann <gerd@gnu.org>
parents: 26192
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1999
d2e5f1b7d8e2 Update copyrights.
Gerd Moellmann <gerd@gnu.org>
parents: 26192
diff changeset
4 @c Free Software Foundation, Inc.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 @c See the file elisp.texi for copying conditions.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 @setfilename ../info/abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 @cindex abbrev
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 @cindex abbrev table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 An abbreviation or @dfn{abbrev} is a string of characters that may be
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 expanded to a longer string. The user can insert the abbrev string and
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 find it replaced automatically with the expansion of the abbrev. This
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 saves typing.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 The set of abbrevs currently in effect is recorded in an @dfn{abbrev
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 table}. Each buffer has a local abbrev table, but normally all buffers
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 in the same major mode share one abbrev table. There is also a global
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 abbrev table. Normally both are used.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 An abbrev table is represented as an obarray containing a symbol for
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
23 each abbreviation. The symbol's name is the abbreviation; its value is
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 the expansion; its function definition is the hook function to do the
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
25 expansion (@pxref{Defining Abbrevs}); its property list cell contains
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
26 the use count, the number of times the abbreviation has been expanded.
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
27 Because these symbols are not interned in the usual obarray, they will
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
28 never appear as the result of reading a Lisp expression; in fact,
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
29 normally they are never used except by the code that handles abbrevs.
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
30 Therefore, it is safe to use them in an extremely nonstandard way.
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
31 @xref{Creating Symbols}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 For the user-level commands for abbrevs, see @ref{Abbrevs,, Abbrev
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 Mode, emacs, The GNU Emacs Manual}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 @menu
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 * Abbrev Mode:: Setting up Emacs for abbreviation.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 * Tables: Abbrev Tables. Creating and working with abbrev tables.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 * Defining Abbrevs:: Specifying abbreviations and their expansions.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 * Files: Abbrev Files. Saving abbrevs in files.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 * Expansion: Abbrev Expansion. Controlling expansion; expansion subroutines.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 * Standard Abbrev Tables:: Abbrev tables used by various major modes.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 @end menu
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 @node Abbrev Mode, Abbrev Tables, Abbrevs, Abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 @comment node-name, next, previous, up
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 @section Setting Up Abbrev Mode
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 Abbrev mode is a minor mode controlled by the value of the variable
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 @code{abbrev-mode}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 @defvar abbrev-mode
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 A non-@code{nil} value of this variable turns on the automatic expansion
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 of abbrevs when their abbreviations are inserted into a buffer.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 If the value is @code{nil}, abbrevs may be defined, but they are not
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 expanded automatically.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
58 This variable automatically becomes buffer-local when set in any fashion.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 @defvar default-abbrev-mode
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
62 This is the value of @code{abbrev-mode} for buffers that do not override it.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 This is the same as @code{(default-value 'abbrev-mode)}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 @node Abbrev Tables, Defining Abbrevs, Abbrev Mode, Abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 @section Abbrev Tables
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 This section describes how to create and manipulate abbrev tables.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 @defun make-abbrev-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 This function creates and returns a new, empty abbrev table---an obarray
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 containing no symbols. It is a vector filled with zeros.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 @defun clear-abbrev-table table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 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
78 leaving it empty. It always returns @code{nil}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 @defun define-abbrev-table tabname definitions
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 This function defines @var{tabname} (a symbol) as an abbrev table name,
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 i.e., as a variable whose value is an abbrev table. It defines abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 in the table according to @var{definitions}, a list of elements of the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 form @code{(@var{abbrevname} @var{expansion} @var{hook}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
86 @var{usecount})}. The return value is always @code{nil}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 @defvar abbrev-table-name-list
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 This is a list of symbols whose values are abbrev tables.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 @code{define-abbrev-table} adds the new abbrev table name to this list.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 @defun insert-abbrev-table-description name &optional human
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 This function inserts before point a description of the abbrev table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 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
97 abbrev table. The return value is always @code{nil}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 If @var{human} is non-@code{nil}, the description is human-oriented.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 Otherwise the description is a Lisp expression---a call to
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
101 @code{define-abbrev-table} that would define @var{name} exactly as it
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 is currently defined.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 @node Defining Abbrevs, Abbrev Files, Abbrev Tables, Abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 @comment node-name, next, previous, up
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 @section Defining Abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 These functions define an abbrev in a specified abbrev table.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 @code{define-abbrev} is the low-level basic function, while
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 @code{add-abbrev} is used by commands that ask for information from the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 user.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 @defun add-abbrev table type arg
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
115 This function adds an abbreviation to abbrev table @var{table} based on
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
116 information from the user. The argument @var{type} is a string
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
117 describing in English the kind of abbrev this will be (typically,
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
118 @code{"global"} or @code{"mode-specific"}); this is used in prompting
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
119 the user. The argument @var{arg} is the number of words in the
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
120 expansion.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
122 The return value is the symbol that internally represents the new
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 abbrev, or @code{nil} if the user declines to confirm redefining an
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 existing abbrev.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
127 @defun define-abbrev table name expansion &optional hook count
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
128 This function defines an abbrev named @var{name}, in @var{table}, to
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
129 expand to @var{expansion} and call @var{hook}. The value of
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
130 @var{count}, if specified, initializes the abbrev's usage-count. If
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
131 @var{count} is not specified or @code{nil}, the use count is initialized
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
132 to zero. The return value is a symbol that represents the abbrev inside
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
133 Emacs; its name is @var{name}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 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
136 @var{expansion} is normally the desired expansion (a string), or
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
137 @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
138 @code{nil}, then the abbreviation ``expands'' solely by running
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
139 @var{hook}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 The argument @var{hook} is a function or @code{nil}. If @var{hook} is
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 non-@code{nil}, then it is called with no arguments after the abbrev is
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 replaced with @var{expansion}; point is located at the end of
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
144 @var{expansion} when @var{hook} is called.
27385
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
145
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
146 If @var{hook} is a non-nil symbol whose @code{no-self-insert} property
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
147 is non-@code{nil}, @var{hook} can explicitly control whether to insert
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
148 the self-inserting input character that triggered the expansion. If
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
149 @var{hook} returns non-@code{nil} in this case, that inhibits insertion
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
150 of the character. By contrast, if @var{hook} returns @code{nil},
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
151 @code{expand-abbrev} also returns @code{nil}, as if expansion had not
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
152 really occurred.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 @defopt only-global-abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 If this variable is non-@code{nil}, it means that the user plans to use
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 global abbrevs only. This tells the commands that define mode-specific
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 abbrevs to define global ones instead. This variable does not alter the
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
159 behavior of the functions in this section; it is examined by their
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 callers.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 @end defopt
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 @node Abbrev Files, Abbrev Expansion, Defining Abbrevs, Abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 @section Saving Abbrevs in Files
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 A file of saved abbrev definitions is actually a file of Lisp code.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 The abbrevs are saved in the form of a Lisp program to define the same
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 abbrev tables with the same contents. Therefore, you can load the file
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 with @code{load} (@pxref{How Programs Do Loading}). However, the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 function @code{quietly-read-abbrev-file} is provided as a more
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 convenient interface.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 User-level facilities such as @code{save-some-buffers} can save
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 abbrevs in a file automatically, under the control of variables
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 described here.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 @defopt abbrev-file-name
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 This is the default file name for reading and saving abbrevs.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 @end defopt
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
181 @defun quietly-read-abbrev-file &optional filename
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 This function reads abbrev definitions from a file named @var{filename},
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 previously written with @code{write-abbrev-file}. If @var{filename} is
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
184 omitted or @code{nil}, the file specified in @code{abbrev-file-name} is
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
185 used. @code{save-abbrevs} is set to @code{t} so that changes will be
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
186 saved.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 This function does not display any messages. It returns @code{nil}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 @defopt save-abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 A non-@code{nil} value for @code{save-abbrev} means that Emacs should
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 save abbrevs when files are saved. @code{abbrev-file-name} specifies
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 the file to save the abbrevs in.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 @end defopt
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 @defvar abbrevs-changed
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 This variable is set non-@code{nil} by defining or altering any
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 abbrevs. This serves as a flag for various Emacs commands to offer to
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 save your abbrevs.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
203 @deffn Command write-abbrev-file &optional filename
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 Save all abbrev definitions, in all abbrev tables, in the file
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
205 @var{filename}, in the form of a Lisp program that when loaded will
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
206 define the same abbrevs. If @var{filename} is @code{nil} or omitted,
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
207 @code{abbrev-file-name} is used. This function returns @code{nil}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 @node Abbrev Expansion, Standard Abbrev Tables, Abbrev Files, Abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 @comment node-name, next, previous, up
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 @section Looking Up and Expanding Abbreviations
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
214 Abbrevs are usually expanded by certain interactive commands,
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 including @code{self-insert-command}. This section describes the
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
216 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
217 use for communication.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 @defun abbrev-symbol abbrev &optional table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 This function returns the symbol representing the abbrev named
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 @var{abbrev}. The value returned is @code{nil} if that abbrev is not
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 defined. The optional second argument @var{table} is the abbrev table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 to look it up in. If @var{table} is @code{nil}, this function tries
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 first the current buffer's local abbrev table, and second the global
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 abbrev table.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
228 @defun abbrev-expansion abbrev &optional table
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
229 This function returns the string that @var{abbrev} would expand into (as
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
230 defined by the abbrev tables used for the current buffer). The optional
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
231 argument @var{table} specifies the abbrev table to use, as in
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
232 @code{abbrev-symbol}.
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
233 @end defun
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
234
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
235 @deffn Command expand-abbrev
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
236 This command expands the abbrev before point, if any. If point does not
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
237 follow an abbrev, this command does nothing. The command returns the
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
238 abbrev symbol if it did expansion, @code{nil} otherwise.
27385
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
239
f7b7fdb0f3f4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27270
diff changeset
240 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
241 @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
242 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
243 returns @code{nil} even though expansion did occur.
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
244 @end deffn
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
245
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
246 @deffn Command abbrev-prefix-mark &optional arg
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
247 Mark current point as the beginning of an abbrev. The next call to
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
248 @code{expand-abbrev} will use the text from here to point (where it is
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
249 then) as the abbrev to expand, rather than using the previous word as
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
250 usual.
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
251 @end deffn
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
252
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 @defopt abbrev-all-caps
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 When this is set non-@code{nil}, an abbrev entered entirely in upper
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 case is expanded using all upper case. Otherwise, an abbrev entered
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 entirely in upper case is expanded by capitalizing each word of the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 expansion.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 @end defopt
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 @defvar abbrev-start-location
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 This is the buffer position for @code{expand-abbrev} to use as the start
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 of the next abbrev to be expanded. (@code{nil} means use the word
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 before point instead.) @code{abbrev-start-location} is set to
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 @code{nil} each time @code{expand-abbrev} is called. This variable is
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 also set by @code{abbrev-prefix-mark}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 @defvar abbrev-start-location-buffer
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 The value of this variable is the buffer for which
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 @code{abbrev-start-location} has been set. Trying to expand an abbrev
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 in any other buffer clears @code{abbrev-start-location}. This variable
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 is set by @code{abbrev-prefix-mark}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 @defvar last-abbrev
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
276 This is the @code{abbrev-symbol} of the most recent abbrev expanded. This
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 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
278 @code{unexpand-abbrev} command (@pxref{Expanding Abbrevs,, Expanding
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
279 Abbrevs, emacs, The GNU Emacs Manual}).
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 @defvar last-abbrev-location
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
283 This is the location of the most recent abbrev expanded. This contains
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 information left by @code{expand-abbrev} for the sake of the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 @code{unexpand-abbrev} command.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 @defvar last-abbrev-text
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
289 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
290 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
291 has already been unexpanded. This contains information left by
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7688
diff changeset
292 @code{expand-abbrev} for the sake of the @code{unexpand-abbrev} command.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 @c Emacs 19 feature
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 @defvar pre-abbrev-expand-hook
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 This is a normal hook whose functions are executed, in sequence, just
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 before any expansion of an abbrev. @xref{Hooks}. Since it is a normal
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 hook, the hook functions receive no arguments. However, they can find
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 the abbrev to be expanded by looking in the buffer before point.
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
301 Running the hook is the first thing that @code{expand-abbrev} does, and
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
302 so a hook function can be used to change the current abbrev table before
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
303 abbrev lookup happens.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 The following sample code shows a simple use of
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 @code{pre-abbrev-expand-hook}. If the user terminates an abbrev with a
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 punctuation character, the hook function asks for confirmation. Thus,
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 this hook allows the user to decide whether to expand the abbrev, and
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 aborts expansion if it is not confirmed.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 @smallexample
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 (add-hook 'pre-abbrev-expand-hook 'query-if-not-space)
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 ;; @r{This is the function invoked by @code{pre-abbrev-expand-hook}.}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 ;; @r{If the user terminated the abbrev with a space, the function does}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 ;; @r{nothing (that is, it returns so that the abbrev can expand). If the}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 ;; @r{user entered some other character, this function asks whether}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 ;; @r{expansion should continue.}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
322 ;; @r{If the user answers the prompt with @kbd{y}, the function returns}
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 ;; @r{@code{nil} (because of the @code{not} function), but that is}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 ;; @r{acceptable; the return value has no effect on expansion.}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (defun query-if-not-space ()
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 (if (/= ?\ (preceding-char))
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 (if (not (y-or-n-p "Do you want to expand this abbrev? "))
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 (error "Not expanding this abbrev"))))
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 @end smallexample
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 @node Standard Abbrev Tables, , Abbrev Expansion, Abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 @comment node-name, next, previous, up
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 @section Standard Abbrev Tables
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 Here we list the variables that hold the abbrev tables for the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 preloaded major modes of Emacs.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 @defvar global-abbrev-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 This is the abbrev table for mode-independent abbrevs. The abbrevs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 defined in it apply to all buffers. Each buffer may also have a local
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 abbrev table, whose abbrev definitions take precedence over those in the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 global table.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 @defvar local-abbrev-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 The value of this buffer-local variable is the (mode-specific)
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 abbreviation table of the current buffer.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 @defvar fundamental-mode-abbrev-table
7688
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
352 This is the local abbrev table used in Fundamental mode; in other words,
ab6b8aa5002e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
353 it is the local abbrev table in all buffers in Fundamental mode.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 @defvar text-mode-abbrev-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 This is the local abbrev table used in Text mode.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 @defvar lisp-mode-abbrev-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 This is the local abbrev table used in Lisp mode and Emacs Lisp mode.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 @end defvar
26192
01d4feb7e1e4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
363