@settitle GNU Emacs Lisp Reference Manual
@c %**end of header
-@ifinfo
-This version is the edition 2.4.2 of the GNU Emacs Lisp
-Reference Manual. It corresponds to Emacs Version 19.34.
-@c Please REMEMBER to update edition number in *four* places in this file
-@c and also in *one* place in intro.texi
+@c Versino of the manual.
+@set VERSION 2.9
-Published by the Free Software Foundation
-59 Temple Place, Suite 330
-Boston, MA 02111-1307 USA
+@dircategory Emacs
+@direntry
+* Elisp: (elisp). The Emacs Lisp Reference Manual.
+@end direntry
-Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission notice
-identical to this one except for the removal of this paragraph (this
-paragraph not being relevant to the printed manual).
-
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation
-approved by the Foundation.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-section entitled ``GNU General Public License'' is included exactly as
-in the original, and provided that the entire resulting derived work is
-distributed under the terms of a permission notice identical to this
-one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that the section entitled ``GNU General Public License'' may be
-included in a translation approved by the Free Software Foundation
-instead of in the original English.
-@end ifinfo
+@smallbook
+@setchapternewpage odd
+@finalout
@c Combine indices.
@synindex cp fn
@syncodeindex vr fn
@syncodeindex ky fn
@syncodeindex pg fn
-@syncodeindex tp fn
+@c We use the "type index" to index new functions and variables.
+@c @syncodeindex tp fn
-@setchapternewpage odd
-@finalout
+@ifnottex
+This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
+Reference Manual, corresponding to Emacs version 21.3.
+@c Please REMEMBER to update edition number in *four* places in this file
+@c and also in *one* place in intro.texi and *one* in README.
+
+Published by the Free Software Foundation
+59 Temple Place, Suite 330
+Boston, MA 02111-1307 USA
+
+Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999,@*
+ 2000, 2002 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``Copying'', with the Front-Cover texts being
+``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A copy
+of the license is included in the section entitled ``GNU Free
+Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
+@end ifnottex
@titlepage
@title GNU Emacs Lisp Reference Manual
-@subtitle GNU Emacs Version 19
-@subtitle for Unix Users
+@subtitle For Emacs Version 21
@c The edition number appears in several places in this file
@c and also in the file intro.texi.
-@subtitle Revision 2.4.2, December 1996
+@subtitle Revision @value{VERSION}, January 2002
@author by Bil Lewis, Dan LaLiberte, Richard Stallman
@author and the GNU Manual Group
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
+Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@*
+1999, 2000, 2002 Free Software Foundation, Inc.
@sp 2
-Edition 2.4.2 @*
-Revised for Emacs Version 19.34,@*
-July 1996.@*
+Edition @value{VERSION} @*
+Revised for Emacs Version 21.3,@*
+January 2002.@*
@sp 2
-ISBN 1-882114-71-X
+ISBN 1-882114-73-6
@sp 2
Published by the Free Software Foundation @*
59 Temple Place, Suite 330@*
Boston, MA 02111-1307 USA
-Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-section entitled ``GNU General Public License'' is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``Copying'', with the Front-Cover texts being
+``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A copy
+of the license is included in the section entitled ``GNU Free
+Documentation License''.
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that the section entitled ``GNU General Public License'' may be
-included in a translation approved by the Free Software Foundation
-instead of in the original English.
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
Cover art by Etienne Suvasa.
@end titlepage
@page
-@node Top, Copying, (dir), (dir)
+@node Top, Introduction, (dir), (dir)
-@ifinfo
-This Info file contains edition 2.4.2 of the GNU Emacs Lisp
-Reference Manual, corresponding to GNU Emacs version 19.34.
-@end ifinfo
+@ifnottex
+This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
+Reference Manual, corresponding to GNU Emacs version 21.3.
+@end ifnottex
@menu
-* Copying:: Conditions for copying and changing GNU Emacs.
* Introduction:: Introduction and conventions used.
+* Standards: Coding Conventions. Coding conventions for Emacs Lisp.
* Lisp Data Types:: Data types of objects in Emacs Lisp.
* Numbers:: Numbers and arithmetic functions.
* Sequences Arrays Vectors:: Lists, strings and vectors are called sequences.
Certain functions act on any kind of sequence.
The description of vectors is here as well.
+* Hash Tables:: Very fast lookup-tables.
* Symbols:: Symbols represent names, uniquely.
* Evaluation:: How Lisp expressions are evaluated.
* Functions:: A function is a Lisp program
that can be invoked from other functions.
* Macros:: Macros are a way to extend the Lisp language.
+* Customization:: Writing customization declarations.
* Loading:: Reading files of Lisp code into Lisp.
* Byte Compilation:: Compilation makes programs run faster.
+* Advising Functions:: Adding to the definition of a function.
* Debugging:: Tools and tips for debugging Lisp programs.
* Read and Print:: Converting Lisp objects to text and back.
automatically when the text is changed.
* Text:: Examining and changing text in buffers.
+* Non-ASCII Characters:: Non-ASCII text in buffers and strings.
* Searching and Matching:: Searching buffers for strings or regexps.
* Syntax Tables:: The syntax table controls word and list parsing.
* Abbrevs:: How Abbrev mode works, and its data structures.
* Processes:: Running and communicating with subprocesses.
+* Display:: Features for controlling the screen display.
+* Calendar:: Customizing the calendar and diary.
* System Interface:: Getting the user id, system type, environment
variables, and other such things.
-* Display:: Parameters controlling screen usage.
- The bell. Waiting for input.
-* Calendar:: Customizing the calendar and diary.
Appendices
-* Tips:: Advice for writing Lisp programs.
+* Antinews:: Info for users downgrading to Emacs 20.
+* GNU Free Documentation License:: The license for this documentation
+* GPL:: Conditions for copying and changing GNU Emacs.
+* Tips:: Advice and coding conventions for Emacs Lisp.
* GNU Emacs Internals:: Building and dumping Emacs;
internal data structures.
* Standard Errors:: List of all error symbols.
-* Standard Buffer-Local Variables:: List of variables local in all buffers.
+* Standard Buffer-Local Variables::
+ List of variables buffer-local in all buffers.
* Standard Keymaps:: List of standard keymaps.
* Standard Hooks:: List of standard hook variables.
* Index:: Index including concepts, functions, variables,
and other terms.
+* New Symbols:: New functions and variables in Emacs 21.
+
--- The Detailed Node Listing ---
Here are other nodes that are inferiors of those already listed,
* Buffer Text Notation:: The format we use for buffer contents in examples.
* Format of Descriptions:: Notation for describing functions, variables, etc.
+Tips and Conventions
+
+* Coding Conventions:: Conventions for clean and robust programs.
+* Compilation Tips:: Making compiled code run fast.
+* Documentation Tips:: Writing readable documentation strings.
+* Comment Tips:: Conventions for writing comments.
+* Library Headers:: Standard headers for library packages.
+
Format of Descriptions
* A Sample Function Description::
* Integer Type:: Numbers without fractional parts.
* Floating Point Type:: Numbers with fractional parts and with a large range.
* Character Type:: The representation of letters, numbers and
- control characters.
+ control characters.
* Sequence Type:: Both lists and arrays are classified as sequences.
* Cons Cell Type:: Cons cells, and lists (which are made from cons cells).
* Array Type:: Arrays include strings and vectors.
* Primitive Function Type:: A function written in C, callable from Lisp.
* Byte-Code Type:: A function written in Lisp, then compiled.
* Autoload Type:: A type used for automatically loading seldom-used
- functions.
+ functions.
List Type
* Process Type:: A process running on the underlying OS.
* Stream Type:: Receive or send characters.
* Keymap Type:: What function a keystroke invokes.
-* Syntax Table Type:: What a character means.
+* Overlay Type:: How an overlay is represented.
Numbers
* Creating Strings:: Functions to allocate new strings.
* Text Comparison:: Comparing characters or strings.
* String Conversion:: Converting characters or strings and vice versa.
-* Formatting Strings:: @code{format}: Emacs's analog of @code{printf}.
-* Character Case:: Case conversion functions.
+* Formatting Strings:: @code{format}: Emacs's analogue of @code{printf}.
+* Case Conversion:: Case conversion functions.
Lists
* Intro to Buffer-Local:: Introduction and concepts.
* Creating Buffer-Local:: Creating and destroying buffer-local bindings.
* Default Value:: The default value is seen in buffers
- that don't have their own local values.
+ that don't have their own buffer-local values.
Functions
* Compilation Functions:: Byte compilation functions.
* Disassembly:: Disassembling byte-code; how to read byte-code.
+Advising Functions
+
+* Simple Advice:: A simple example to explain the basics of advice.
+* Defining Advice:: Detailed description of @code{defadvice}.
+* Computed Advice:: ...is to @code{defadvice} as @code{fset} is to @code{defun}.
+* Activation of Advice:: Advice doesn't do anything until you activate it.
+* Enabling Advice:: You can enable or disable each piece of advice.
+* Preactivation:: Preactivation is a way of speeding up the
+ loading of compiled advice.
+* Argument Access in Advice:: How advice can access the function's arguments.
+* Subr Arguments:: Accessing arguments when advising a primitive.
+* Combined Definition:: How advice is implemented.
+
Debugging Lisp Programs
* Debugger:: How the Emacs Lisp debugger is implemented.
* Inheritance and Keymaps:: How one keymap can inherit the bindings
of another keymap.
* Prefix Keys:: Defining a key with a keymap as its definition.
-* Menu Keymaps:: A keymap can define a menu for X windows
+* Menu Keymaps:: A keymap can define a menu for X
or for use from the terminal.
* Active Keymaps:: Each buffer has a local keymap
to override the standard (global) bindings.
- Each minor mode can also override them.
+ Each minor mode can also override them.
* Key Lookup:: How extracting elements from keymaps works.
* Functions for Key Lookup:: How to request key lookup.
* Changing Key Bindings:: Redefining a key in a keymap.
simultaneous editing by two people.
* Information about Files:: Testing existence, accessibility, size of files.
* Contents of Directories:: Getting a list of the files in a directory.
-* Changing File Attributes:: Renaming files, changing protection, etc.
-* File Names:: Decomposing and expanding file names.
+* Changing Files:: Renaming files, changing protection, etc.
+* File Names:: Decomposing and expanding file names.
Visiting Files
* Window Start:: The display-start position controls which text
is on-screen in the window.
* Vertical Scrolling:: Moving text up and down in the window.
-* Scrolling Hooks:: Hooks that run when you scroll a window.
* Horizontal Scrolling:: Moving text sideways on the window.
* Size of Window:: Accessing the size of a window.
* Resizing Windows:: Changing the size of a window.
* Input Focus:: Specifying the selected frame.
* Visibility of Frames:: Frames may be visible or invisible, or icons.
* Raising and Lowering:: Raising a frame makes it hide other X windows;
- lowering it makes the others hide them.
+ lowering it puts it underneath the others.
* Frame Configurations:: Saving the state of all frames.
* Mouse Tracking:: Getting events that say when the mouse moves.
* Mouse Position:: Asking where the mouse is, or moving it.
* Pop-Up Menus:: Displaying a menu for the user to select from.
* Dialog Boxes:: Displaying a box to ask yes or no.
* Pointer Shapes:: Specifying the shape of the mouse pointer.
-* X Selections:: Transferring text to and from other X clients.
+* Window System Selections::Transferring text to and from other windows.
* Color Names:: Getting the definitions of color names.
* Resources:: Getting resource values from the server.
-* Server Data:: Getting info about the X server.
+* Display Feature Testing:: Determining the features of a terminal.
Positions
* Creating Markers:: Making empty markers or markers at certain places.
* Information from Markers:: Finding the marker's buffer or character
position.
-* Changing Markers:: Moving the marker to a new buffer or position.
+* Moving Markers:: Moving the marker to a new buffer or position.
* The Mark:: How ``the mark'' is implemented with a marker.
* The Region:: How to access ``the region''.
them back.
* Lazy Properties:: Computing text properties in a lazy fashion
only when text is examined.
+* Clickable Text:: Using text properties to make regions of text
+ do something when you click on them.
+* Fields:: The @code{field} property defines
+ fields within the buffer.
* Not Intervals:: Why text properties do not use
Lisp-visible text intervals.
+Non-ASCII Characters
+
+* Text Representations:: Unibyte and multibyte representations
+* Converting Representations:: Converting unibyte to multibyte and vice versa.
+* Selecting a Representation:: Treating a byte sequence as unibyte or multi.
+* Character Codes:: How unibyte and multibyte relate to
+ codes of individual characters.
+* Character Sets:: The space of possible characters codes
+ is divided into various character sets.
+* Chars and Bytes:: More information about multibyte encodings.
+* Splitting Characters:: Converting a character to its byte sequence.
+* Scanning Charsets:: Which character sets are used in a buffer?
+* Translation of Characters:: Translation tables are used for conversion.
+* Coding Systems:: Coding systems are conversions for saving files.
+* Input Methods:: Input methods allow users to enter various
+ non-ASCII characters without special keyboards.
+* Locales:: Interacting with the POSIX locale.
+
Searching and Matching
* String Search:: Search for an exact match.
Starting Up Emacs
-* Start-up Summary:: Sequence of actions Emacs performs at start-up.
+* Startup Summary:: Sequence of actions Emacs performs at start-up.
* Init File:: Details on reading the init file (@file{.emacs}).
* Terminal-Specific:: How the terminal-specific Lisp file is read.
-* Command Line Arguments:: How command line arguments are processed,
+* Command-Line Arguments:: How command line arguments are processed,
and how you can customize them.
Getting out of Emacs
@include lists.texi
@include sequences.texi
+@include hash.texi
@include symbols.texi
@include eval.texi
@include functions.texi
@include macros.texi
+@include customize.texi
@include loading.texi
@include compile.texi
+@include advice.texi
+
@include debugging.texi
@include streams.texi
-
@include minibuf.texi
@include commands.texi
+
@include keymaps.texi
@include modes.texi
-
@include help.texi
@include files.texi
+
@include backups.texi
@include buffers.texi
-
@include windows.texi
@include frames.texi
+
@include positions.texi
@include markers.texi
@include text.texi
+@include nonascii.texi
@include searching.texi
@include syntax.texi
@include abbrevs.texi
-
@include processes.texi
-@include os.texi
+
@include display.texi
@include calendar.texi
+@include os.texi
@c MOVE to Emacs Manual: include misc-modes.texi
@c REMOVE this: include non-hacker.texi
+@include anti.texi
+@include doclicense.texi
+@include gpl.texi
@include tips.texi
@include internals.texi
@include errors.texi
@include index.texi
+@node New Symbols, , Index, Top
+@unnumbered New Symbols Since the Previous Edition
+
+@printindex tp
+
@c Print the tables of contents
@summarycontents
@contents