| 1 |
@c -*-texinfo-*- |
|---|
| 2 |
@c This is part of the GNU Emacs Lisp Reference Manual. |
|---|
| 3 |
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1999, 2001, 2002, 2003, |
|---|
| 4 |
@c 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
|---|
| 5 |
@c See the file elisp.texi for copying conditions. |
|---|
| 6 |
@setfilename ../info/abbrevs |
|---|
| 7 |
@node Abbrevs, Processes, Syntax Tables, Top |
|---|
| 8 |
@chapter Abbrevs and Abbrev Expansion |
|---|
| 9 |
@cindex abbrev |
|---|
| 10 |
@c @cindex abbrev table Redundant with "abbrev". |
|---|
| 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 |
|---|
| 23 |
each abbreviation. The symbol's name is the abbreviation; its value |
|---|
| 24 |
is the expansion; its function definition is the hook function to do |
|---|
| 25 |
the expansion (@pxref{Defining Abbrevs}); its property list cell |
|---|
| 26 |
typically contains the use count, the number of times the abbreviation |
|---|
| 27 |
has been expanded. Alternatively, the use count is on the |
|---|
| 28 |
@code{count} property and the system-abbrev flag is on the |
|---|
| 29 |
@code{system-type} property. Abbrevs with a non-@code{nil} |
|---|
| 30 |
@code{system-type} property are called ``system'' abbrevs. They are |
|---|
| 31 |
usually defined by modes or packages, instead of by the user, and are |
|---|
| 32 |
treated specially in certain respects. |
|---|
| 33 |
|
|---|
| 34 |
Because the symbols used for abbrevs are not interned in the usual |
|---|
| 35 |
obarray, they will never appear as the result of reading a Lisp |
|---|
| 36 |
expression; in fact, normally they are never used except by the code |
|---|
| 37 |
that handles abbrevs. Therefore, it is safe to use them in an |
|---|
| 38 |
extremely nonstandard way. @xref{Creating Symbols}. |
|---|
| 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 |
|---|
| 54 |
@section Setting Up Abbrev Mode |
|---|
| 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 |
|
|---|
| 65 |
This variable automatically becomes buffer-local when set in any fashion. |
|---|
| 66 |
@end defvar |
|---|
| 67 |
|
|---|
| 68 |
@defvar default-abbrev-mode |
|---|
| 69 |
This is the value of @code{abbrev-mode} for buffers that do not override it. |
|---|
| 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}, |
|---|
| 85 |
leaving it empty. It always returns @code{nil}. |
|---|
| 86 |
@end defun |
|---|
| 87 |
|
|---|
| 88 |
@defun copy-abbrev-table table |
|---|
| 89 |
This function returns a copy of abbrev table @var{table}---a new |
|---|
| 90 |
abbrev table that contains the same abbrev definitions. The only |
|---|
| 91 |
difference between @var{table} and the returned copy is that this |
|---|
| 92 |
function sets the property lists of all copied abbrevs to 0. |
|---|
| 93 |
@end defun |
|---|
| 94 |
|
|---|
| 95 |
@defun define-abbrev-table tabname definitions |
|---|
| 96 |
This function defines @var{tabname} (a symbol) as an abbrev table |
|---|
| 97 |
name, i.e., as a variable whose value is an abbrev table. It defines |
|---|
| 98 |
abbrevs in the table according to @var{definitions}, a list of |
|---|
| 99 |
elements of the form @code{(@var{abbrevname} @var{expansion} |
|---|
| 100 |
@var{hook} @var{usecount} @var{system-flag})}. If an element of |
|---|
| 101 |
@var{definitions} has length less than five, omitted elements default |
|---|
| 102 |
to @code{nil}. A value of @code{nil} for @var{usecount} is equivalent |
|---|
| 103 |
to zero. The return value is always @code{nil}. |
|---|
| 104 |
|
|---|
| 105 |
If this function is called more than once for the same @var{tabname}, |
|---|
| 106 |
subsequent calls add the definitions in @var{definitions} to |
|---|
| 107 |
@var{tabname}, rather than overriding the entire original contents. |
|---|
| 108 |
(A subsequent call only overrides abbrevs explicitly redefined or |
|---|
| 109 |
undefined in @var{definitions}.) |
|---|
| 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 |
|---|
| 120 |
abbrev table. The return value is always @code{nil}. |
|---|
| 121 |
|
|---|
| 122 |
If @var{human} is non-@code{nil}, the description is human-oriented. |
|---|
| 123 |
System abbrevs are listed and identified as such. Otherwise the |
|---|
| 124 |
description is a Lisp expression---a call to @code{define-abbrev-table} |
|---|
| 125 |
that would define @var{name} as it is currently defined, but without |
|---|
| 126 |
the system abbrevs. (The mode or package using @var{name} is supposed |
|---|
| 127 |
to add these to @var{name} separately.) |
|---|
| 128 |
@end defun |
|---|
| 129 |
|
|---|
| 130 |
@node Defining Abbrevs, Abbrev Files, Abbrev Tables, Abbrevs |
|---|
| 131 |
@comment node-name, next, previous, up |
|---|
| 132 |
@section Defining Abbrevs |
|---|
| 133 |
@code{define-abbrev} is the low-level basic function for defining an |
|---|
| 134 |
abbrev in a specified abbrev table. When major modes predefine |
|---|
| 135 |
standard abbrevs, they should call @code{define-abbrev} and specify |
|---|
| 136 |
@code{t} for @var{system-flag}. |
|---|
| 137 |
|
|---|
| 138 |
@defun define-abbrev table name expansion &optional hook count system-flag |
|---|
| 139 |
This function defines an abbrev named @var{name}, in @var{table}, to |
|---|
| 140 |
expand to @var{expansion} and call @var{hook}. The return value is |
|---|
| 141 |
@var{name}. |
|---|
| 142 |
|
|---|
| 143 |
The value of @var{count}, if specified, initializes the abbrev's |
|---|
| 144 |
usage-count. If @var{count} is not specified or @code{nil}, the use |
|---|
| 145 |
count is initialized to zero. |
|---|
| 146 |
|
|---|
| 147 |
The argument @var{name} should be a string. The argument |
|---|
| 148 |
@var{expansion} is normally the desired expansion (a string), or |
|---|
| 149 |
@code{nil} to undefine the abbrev. If it is anything but a string or |
|---|
| 150 |
@code{nil}, then the abbreviation ``expands'' solely by running |
|---|
| 151 |
@var{hook}. |
|---|
| 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 |
|---|
| 156 |
@var{expansion} when @var{hook} is called. |
|---|
| 157 |
|
|---|
| 158 |
@cindex @code{no-self-insert} property |
|---|
| 159 |
If @var{hook} is a non-@code{nil} symbol whose @code{no-self-insert} |
|---|
| 160 |
property is non-@code{nil}, @var{hook} can explicitly control whether |
|---|
| 161 |
to insert the self-inserting input character that triggered the |
|---|
| 162 |
expansion. If @var{hook} returns non-@code{nil} in this case, that |
|---|
| 163 |
inhibits insertion of the character. By contrast, if @var{hook} |
|---|
| 164 |
returns @code{nil}, @code{expand-abbrev} also returns @code{nil}, as |
|---|
| 165 |
if expansion had not really occurred. |
|---|
| 166 |
|
|---|
| 167 |
If @var{system-flag} is non-@code{nil}, that marks the abbrev as a |
|---|
| 168 |
``system'' abbrev with the @code{system-type} property. |
|---|
| 169 |
|
|---|
| 170 |
Normally the function @code{define-abbrev} sets the variable |
|---|
| 171 |
@code{abbrevs-changed} to @code{t}, if it actually changes the abbrev. |
|---|
| 172 |
(This is so that some commands will offer to save the abbrevs.) It |
|---|
| 173 |
does not do this for a ``system'' abbrev, since those won't be saved |
|---|
| 174 |
anyway. |
|---|
| 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 |
|---|
| 181 |
behavior of the functions in this section; it is examined by their |
|---|
| 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 |
|
|---|
| 203 |
@defun quietly-read-abbrev-file &optional filename |
|---|
| 204 |
This function reads abbrev definitions from a file named @var{filename}, |
|---|
| 205 |
previously written with @code{write-abbrev-file}. If @var{filename} is |
|---|
| 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. |
|---|
| 209 |
|
|---|
| 210 |
This function does not display any messages. It returns @code{nil}. |
|---|
| 211 |
@end defun |
|---|
| 212 |
|
|---|
| 213 |
@defopt save-abbrevs |
|---|
| 214 |
A non-@code{nil} value for @code{save-abbrevs} means that Emacs should |
|---|
| 215 |
offer the user to save abbrevs when files are saved. If the value is |
|---|
| 216 |
@code{silently}, Emacs saves the abbrevs without asking the user. |
|---|
| 217 |
@code{abbrev-file-name} specifies the file to save the abbrevs in. |
|---|
| 218 |
@end defopt |
|---|
| 219 |
|
|---|
| 220 |
@defvar abbrevs-changed |
|---|
| 221 |
This variable is set non-@code{nil} by defining or altering any |
|---|
| 222 |
abbrevs (except ``system'' abbrevs). This serves as a flag for |
|---|
| 223 |
various Emacs commands to offer to save your abbrevs. |
|---|
| 224 |
@end defvar |
|---|
| 225 |
|
|---|
| 226 |
@deffn Command write-abbrev-file &optional filename |
|---|
| 227 |
Save all abbrev definitions (except ``system'' abbrevs), for all abbrev |
|---|
| 228 |
tables listed in @code{abbrev-table-name-list}, in the file |
|---|
| 229 |
@var{filename}, in the form of a Lisp program that when loaded will |
|---|
| 230 |
define the same abbrevs. If @var{filename} is @code{nil} or omitted, |
|---|
| 231 |
@code{abbrev-file-name} is used. This function returns @code{nil}. |
|---|
| 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 |
|
|---|
| 238 |
Abbrevs are usually expanded by certain interactive commands, |
|---|
| 239 |
including @code{self-insert-command}. This section describes the |
|---|
| 240 |
subroutines used in writing such commands, as well as the variables they |
|---|
| 241 |
use for communication. |
|---|
| 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 |
|
|---|
| 252 |
@defun abbrev-expansion abbrev &optional table |
|---|
| 253 |
This function returns the string that @var{abbrev} would expand into (as |
|---|
| 254 |
defined by the abbrev tables used for the current buffer). If |
|---|
| 255 |
@var{abbrev} is not a valid abbrev, the function returns @code{nil}. |
|---|
| 256 |
The optional argument @var{table} specifies the abbrev table to use, |
|---|
| 257 |
as in @code{abbrev-symbol}. |
|---|
| 258 |
@end defun |
|---|
| 259 |
|
|---|
| 260 |
@deffn Command expand-abbrev |
|---|
| 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. |
|---|
| 264 |
|
|---|
| 265 |
If the abbrev symbol has a hook function which is a symbol whose |
|---|
| 266 |
@code{no-self-insert} property is non-@code{nil}, and if the hook |
|---|
| 267 |
function returns @code{nil} as its value, then @code{expand-abbrev} |
|---|
| 268 |
returns @code{nil} even though expansion did occur. |
|---|
| 269 |
@end deffn |
|---|
| 270 |
|
|---|
| 271 |
@deffn Command abbrev-prefix-mark &optional arg |
|---|
| 272 |
This command marks the current location of point as the beginning of |
|---|
| 273 |
an abbrev. The next call to @code{expand-abbrev} will use the text |
|---|
| 274 |
from here to point (where it is then) as the abbrev to expand, rather |
|---|
| 275 |
than using the previous word as usual. |
|---|
| 276 |
|
|---|
| 277 |
First, this command expands any abbrev before point, unless @var{arg} |
|---|
| 278 |
is non-@code{nil}. (Interactively, @var{arg} is the prefix argument.) |
|---|
| 279 |
Then it inserts a hyphen before point, to indicate the start of the |
|---|
| 280 |
next abbrev to be expanded. The actual expansion removes the hyphen. |
|---|
| 281 |
@end deffn |
|---|
| 282 |
|
|---|
| 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 |
|---|
| 291 |
The value of this variable is a buffer position (an integer or a marker) |
|---|
| 292 |
for @code{expand-abbrev} to use as the start of the next abbrev to be |
|---|
| 293 |
expanded. The value can also be @code{nil}, which means to use the |
|---|
| 294 |
word before point instead. @code{abbrev-start-location} is set to |
|---|
| 295 |
@code{nil} each time @code{expand-abbrev} is called. This variable is |
|---|
| 296 |
also set by @code{abbrev-prefix-mark}. |
|---|
| 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 |
|---|
| 307 |
This is the @code{abbrev-symbol} of the most recent abbrev expanded. This |
|---|
| 308 |
information is left by @code{expand-abbrev} for the sake of the |
|---|
| 309 |
@code{unexpand-abbrev} command (@pxref{Expanding Abbrevs,, Expanding |
|---|
| 310 |
Abbrevs, emacs, The GNU Emacs Manual}). |
|---|
| 311 |
@end defvar |
|---|
| 312 |
|
|---|
| 313 |
@defvar last-abbrev-location |
|---|
| 314 |
This is the location of the most recent abbrev expanded. This contains |
|---|
| 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 |
|---|
| 320 |
This is the exact expansion text of the most recent abbrev expanded, |
|---|
| 321 |
after case conversion (if any). Its value is @code{nil} if the abbrev |
|---|
| 322 |
has already been unexpanded. This contains information left by |
|---|
| 323 |
@code{expand-abbrev} for the sake of the @code{unexpand-abbrev} command. |
|---|
| 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. |
|---|
| 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 |
|---|
| 334 |
abbrev lookup happens. (Although you have to do this carefully. See |
|---|
| 335 |
the example below.) |
|---|
| 336 |
@end defvar |
|---|
| 337 |
|
|---|
| 338 |
The following sample code shows a simple use of |
|---|
| 339 |
@code{pre-abbrev-expand-hook}. It assumes that @code{foo-mode} is a |
|---|
| 340 |
mode for editing certain files in which lines that start with @samp{#} |
|---|
| 341 |
are comments. You want to use Text mode abbrevs for those lines. The |
|---|
| 342 |
regular local abbrev table, @code{foo-mode-abbrev-table} is |
|---|
| 343 |
appropriate for all other lines. Then you can put the following code |
|---|
| 344 |
in your @file{.emacs} file. @xref{Standard Abbrev Tables}, for the |
|---|
| 345 |
definitions of @code{local-abbrev-table} and @code{text-mode-abbrev-table}. |
|---|
| 346 |
|
|---|
| 347 |
@smallexample |
|---|
| 348 |
(defun foo-mode-pre-abbrev-expand () |
|---|
| 349 |
(when (save-excursion (forward-line 0) (eq (char-after) ?#)) |
|---|
| 350 |
(let ((local-abbrev-table text-mode-abbrev-table) |
|---|
| 351 |
;; Avoid infinite loop. |
|---|
| 352 |
(pre-abbrev-expand-hook nil)) |
|---|
| 353 |
(expand-abbrev)) |
|---|
| 354 |
;; We have already called `expand-abbrev' in this hook. |
|---|
| 355 |
;; Hence we want the "actual" call following this hook to be a no-op. |
|---|
| 356 |
(setq abbrev-start-location (point-max) |
|---|
| 357 |
abbrev-start-location-buffer (current-buffer)))) |
|---|
| 358 |
|
|---|
| 359 |
(add-hook 'foo-mode-hook |
|---|
| 360 |
#'(lambda () |
|---|
| 361 |
(add-hook 'pre-abbrev-expand-hook |
|---|
| 362 |
'foo-mode-pre-abbrev-expand |
|---|
| 363 |
nil t))) |
|---|
| 364 |
@end smallexample |
|---|
| 365 |
|
|---|
| 366 |
Note that @code{foo-mode-pre-abbrev-expand} just returns @code{nil} |
|---|
| 367 |
without doing anything for lines not starting with @samp{#}. Hence |
|---|
| 368 |
abbrevs expand normally using @code{foo-mode-abbrev-table} as local |
|---|
| 369 |
abbrev table for such lines. |
|---|
| 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 |
|---|
| 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. |
|---|
| 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 |
|---|
| 402 |
|
|---|
| 403 |
@ignore |
|---|
| 404 |
arch-tag: 5ffdbe08-2cd4-48ec-a5a8-080f95756eec |
|---|
| 405 |
@end ignore |
|---|