@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
+@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2002, 2003,
+@c 2004, 2005 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
-@node Abbrevs, Picture, Building, Top
+@node Abbrevs, Picture, Maintaining, Top
@chapter Abbrevs
@cindex abbrevs
@cindex expansion (of abbrevs)
words in the buffer that start with those letters. @xref{Dynamic
Abbrevs}.
+``Hippie'' expansion generalizes abbreviation expansion. @xref{Hippie
+Expand, , Hippie Expansion, autotype, Features for Automatic
+Typing}.
+
@menu
* Abbrev Concepts:: Fundamentals of defined abbrevs.
* Defining Abbrevs:: Defining an abbrev, so it will expand when typed.
@item C-x a i l
Define a word in the buffer as a mode-specific abbrev
(@code{inverse-add-mode-abbrev}).
+@item M-x define-global-abbrev @key{RET} @var{abbrev} @key{RET} @var{exp} @key{RET}
+Define @var{abbrev} as an abbrev expanding into @var{exp}.
+@item M-x define-mode-abbrev @key{RET} @var{abbrev} @key{RET} @var{exp} @key{RET}
+Define @var{abbrev} as a mode-specific abbrev expanding into @var{exp}.
@item M-x kill-all-abbrevs
This command discards all abbrev definitions currently in effect,
leaving a blank slate.
meaning of the two text strings they use (one from the buffer and one
read with the minibuffer).
+@findex define-mode-abbrev
+@findex define-global-abbrev
+ You can define an abbrev without inserting either the abbrev or its
+expansion in the buffer using the command @code{define-global-abbrev}.
+It reads two arguments---the abbrev, and its expansion. The command
+@code{define-mode-abbrev} does likewise for a mode-specific abbrev.
+
To change the definition of an abbrev, just define a new definition.
When the abbrev has a prior definition, the abbrev definition commands
-ask for confirmation for replacing it.
+ask for confirmation before replacing it.
To remove an abbrev definition, give a negative argument to the abbrev
definition command: @kbd{C-u - C-x a g} or @kbd{C-u - C-x a l}. The
(@key{SPC}, comma, etc.@:). More precisely, any character that is not a
word constituent expands an abbrev, and any word-constituent character
can be part of an abbrev. The most common way to use an abbrev is to
-insert it and then insert a punctuation character to expand it.
+insert it and then insert a punctuation or whitespace character to expand it.
@vindex abbrev-all-caps
Abbrev expansion preserves case; thus, @samp{foo} expands into @samp{find
outer otter}; @samp{Foo} into @samp{Find outer otter}, and @samp{FOO} into
@samp{FIND OUTER OTTER} or @samp{Find Outer Otter} according to the
-variable @code{abbrev-all-caps} (a non-@code{nil} value chooses the first
-of the two expansions).
+variable @code{abbrev-all-caps} (setting it non-@code{nil} specifies
+@samp{FIND OUTER OTTER}).
These commands are used to control abbrev expansion:
@table @kbd
@item M-x list-abbrevs
-Display a list of all abbrev definitions.
+Display a list of all abbrev definitions. With a numeric argument, list
+only local abbrevs.
@item M-x edit-abbrevs
Edit a list of abbrevs; you can add, alter or remove definitions.
@end table
@findex read-abbrev-file
@findex quietly-read-abbrev-file
@vindex abbrev-file-name
- @kbd{M-x read-abbrev-file} reads a file name using the minibuffer and
-then reads the file, defining abbrevs according to the contents of the
-file. @kbd{M-x quietly-read-abbrev-file} is the same except that it
-does not display a message in the echo area saying that it is doing its
-work; it is actually useful primarily in the @file{.emacs} file. If an
-empty argument is given to either of these functions, they use the file
-name specified in the variable @code{abbrev-file-name}, which is by
-default @code{"~/.abbrev_defs"}.
+ @kbd{M-x read-abbrev-file} reads a file name using the minibuffer
+and then reads the file, defining abbrevs according to the contents of
+the file. The function @code{quietly-read-abbrev-file} is similar
+except that it does not display a message in the echo area; you cannot
+invoke it interactively, and it is used primarily in the @file{.emacs}
+file. If either of these functions is called with @code{nil} as the
+argument, it uses the file name specified in the variable
+@code{abbrev-file-name}, which is by default @code{"~/.abbrev_defs"}.
+That file is your standard abbrev definition file, and Emacs loads
+abbrevs from it automatically when it starts up.
@vindex save-abbrevs
- Emacs will offer to save abbrevs automatically if you have changed any of
-them, whenever it offers to save all files (for @kbd{C-x s} or @kbd{C-x
-C-c}). This feature can be inhibited by setting the variable
-@code{save-abbrevs} to @code{nil}.
+ Emacs will offer to save abbrevs automatically if you have changed
+any of them, whenever it offers to save all files (for @kbd{C-x s} or
+@kbd{C-x C-c}). It saves them in the file specified by
+@code{abbrev-file-name}. This feature can be inhibited by setting the
+variable @code{save-abbrevs} to @code{nil}.
@findex insert-abbrevs
@findex define-abbrevs
The commands @kbd{M-x insert-abbrevs} and @kbd{M-x define-abbrevs} are
similar to the previous commands but work on text in an Emacs buffer.
-@kbd{M-x insert-abbrevs} inserts text into the current buffer before point,
+@kbd{M-x insert-abbrevs} inserts text into the current buffer after point,
describing all current abbrev definitions; @kbd{M-x define-abbrevs} parses
the entire current buffer and defines abbrevs accordingly.@refill
buffers, unless you have set @code{dabbrev-check-all-buffers} to
@code{nil}.
+@vindex dabbrev-ignored-buffer-regexps
+ For finer control over which buffers to scan, customize the variable
+@code{dabbrev-ignored-buffer-regexps}. Its value is a list of regular
+expressions. If a buffer's name matches any of these regular
+expressions, dynamic abbrev expansion skips that buffer.
+
A negative argument to @kbd{M-/}, as in @kbd{C-u - M-/}, says to
-search first for expansions after point, and second for expansions
-before point. If you repeat the @kbd{M-/} to look for another
-expansion, do not specify an argument. This tries all the expansions
-after point and then the expansions before point.
+search first for expansions after point, then other buffers, and
+consider expansions before point only as a last resort.
+
+ If you repeat the @kbd{M-/} to look for another expansion, do not
+specify an argument. This tries all the expansions after point and
+then the expansions before point.
After you have expanded a dynamic abbrev, you can copy additional
words that follow the expansion in its original context. Simply type
@vindex dabbrev-case-fold-search
This feature is controlled by the variable
@code{dabbrev-case-fold-search}. If it is @code{t}, case is ignored in
-this search; if @code{nil}, the word and the expansion must match in
-case. If the value of @code{dabbrev-case-fold-search} is
+this search; if it is @code{nil}, the word and the expansion must match
+in case. If the value of @code{dabbrev-case-fold-search} is
@code{case-fold-search}, which is true by default, then the variable
@code{case-fold-search} controls whether to ignore case while searching
for expansions.
@vindex dabbrev-case-fold-search
The variable @code{dabbrev-case-replace} controls whether to preserve
the case pattern of the abbrev. If it is @code{t}, the abbrev's case
-pattern is preserved in most cases; if @code{nil}, the expansion is
+pattern is preserved in most cases; if it is @code{nil}, the expansion is
always copied verbatim. If the value of @code{dabbrev-case-replace} is
@code{case-replace}, which is true by default, then the variable
@code{case-replace} controls whether to copy the expansion verbatim.
the variable @code{dabbrev-abbrev-skip-leading-regexp}. Its value
should be a regular expression that matches the optional prefix that
dynamic abbreviation should ignore.
+
+@ignore
+ arch-tag: 638e0079-9540-48ec-9166-414083e16445
+@end ignore