Add Text Properties item.
[bpt/emacs.git] / lispref / elisp.texi
index ce4b7d5..96e2ab5 100644 (file)
 \input texinfo  @c -*-texinfo-*-
 @c %**start of header
 @setfilename elisp
-@smallbook
 @settitle GNU Emacs Lisp Reference Manual
 @c %**end of header
 
-@ifinfo
-This version is the edition 2.3 of the GNU Emacs Lisp
-Reference Manual.  It corresponds to Emacs Version 19.25.
-@c Please REMEMBER to update edition number in *four* places in this file
-@c                 and also in *one* place in intro.texi
+@dircategory Editors
+@direntry
+* Elisp: (elisp).      The Emacs Lisp Reference Manual.
+@end direntry
 
-Published by the Free Software Foundation
-675 Massachusetts Avenue
-Cambridge, MA 02139 USA
-
-Copyright (C) 1990, 1991, 1992, 1993, 1994 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 2.6 of the GNU Emacs Lisp
+Reference Manual, corresponding to Emacs version 21.1.
+@c Please REMEMBER to update edition number in *four* places in this file
+@c                 and also in *one* place in intro.texi
+
+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
+ 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 Second Edition, June 1993
-@subtitle Revision 2.3, June 1994
+@subtitle Revision 2.6, May 2000
 
 @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 Free Software Foundation, Inc. 
+Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000
+Free Software Foundation, Inc. 
 
 @sp 2
-Edition 2.3 @*
-Revised for Emacs Version 19.25,@*
-June, 1994.@*
+Edition 2.6 @*
+Revised for Emacs Version 21.1,@*
+May 2000.@*
 @sp 2
-ISBN 1-882114-40-X
+ISBN 1-882114-73-6
 
 @sp 2
 Published by the Free Software Foundation @*
-675 Massachusetts Avenue @*
-Cambridge, MA 02139 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 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.
+59 Temple Place, Suite 330@*
+Boston, MA  02111-1307  USA
+
+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.''
 
 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.3 of the GNU Emacs Lisp
-Reference Manual, corresponding to GNU Emacs version 19.25.
-@end ifinfo
+@ifnottex
+This Info file contains edition 2.6 of the GNU Emacs Lisp
+Reference Manual, corresponding to GNU Emacs version 21.1.
+@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.
@@ -128,6 +107,7 @@ Reference Manual, corresponding to GNU Emacs version 19.25.
 * 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.
@@ -136,9 +116,11 @@ Reference Manual, corresponding to GNU Emacs version 19.25.
 * 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.
@@ -160,32 +142,36 @@ Reference Manual, corresponding to GNU Emacs version 19.25.
                               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.
 
-* Antinews::               Information about Emacs 18.
-
 * 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,
@@ -208,6 +194,14 @@ Conventions
 * 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::       
@@ -227,7 +221,7 @@ Programming Types
 * 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.
@@ -241,7 +235,7 @@ Programming Types
 * 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
 
@@ -257,7 +251,7 @@ Editing Types
 * 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
 
@@ -268,7 +262,7 @@ Numbers
 * Arithmetic Operations::     How to add, subtract, multiply and divide.
 * Bitwise Operations::        Logical and, or, not, shifting.
 * Numeric Conversions::              Converting float to integer and vice versa.
-* Transcendental Functions::  Trig, exponential and logarithmic functions.
+* Math Functions::            Trig, exponential and logarithmic functions.
 * Random Numbers::            Obtaining random integers, predictable or not.
 
 Strings and Characters
@@ -278,8 +272,8 @@ Strings and Characters
 * 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
 
@@ -385,7 +379,7 @@ Buffer-Local Variables
 * 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
 
@@ -423,7 +417,7 @@ Loading
 
 * How Programs Do Loading:: The @code{load} function and others.
 * Autoload::                Setting up a function to autoload.
-* Features::                Loading a library if it isn't already loaded.
+* Named Features::          Loading a library if it isn't already loaded.
 * Repeated Loading::        Precautions about loading a file twice.
 
 Byte Compilation
@@ -431,6 +425,19 @@ Byte Compilation
 * 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.
@@ -516,11 +523,11 @@ Keymaps
 * 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.
@@ -573,8 +580,8 @@ Files
                                 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
 
@@ -651,6 +658,32 @@ Windows
 * Resizing Windows::        Changing the size of a window.
 * Window Configurations::   Saving and restoring the state of the screen.
 
+Frames
+
+* Creating Frames::        Creating additional frames.
+* Multiple Displays::       Creating frames on other X displays.
+* Frame Parameters::       Controlling frame size, position, font, etc.
+* Frame Titles::            Automatic updating of frame titles.
+* Deleting Frames::        Frames last until explicitly deleted.
+* Finding All Frames::     How to examine all existing frames.
+* Frames and Windows::     A frame contains windows;
+                             display of text always works through windows.
+* Minibuffers and Frames::  How a frame finds the minibuffer to use.
+* 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 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.
+* 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.
+* Display Feature Testing:: Determining the features of a terminal.
+
 Positions
 
 * Point::                   The special position where editing takes place.
@@ -665,8 +698,6 @@ Motion
 * Buffer End Motion::       Moving to the beginning or end of the buffer.
 * Text Lines::              Moving in terms of lines of text.
 * Screen Lines::            Moving in terms of lines as displayed.
-* Vertical Motion::         Implementation of @code{next-line} and
-                              @code{previous-line}.
 * List Motion::             Moving by parsing lists and sexps.
 * Skipping Characters::     Skipping characters belonging to a certain set.
 
@@ -677,7 +708,7 @@ Markers
 * 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''.
 
@@ -694,20 +725,24 @@ Text
 * Undo::                    Undoing changes to the text of a buffer.
 * Auto Filling::            How auto-fill mode is implemented to break lines.
 * Filling::                 Functions for explicit filling.
+* Margins::                 How to specify margins for filling commands.
 * Sorting::                 Functions for sorting parts of the buffer.
 * Indentation::             Functions to insert or adjust indentation.
 * Columns::                 Computing horizontal positions, and using them.
 * Case Changes::            Case conversion of parts of the buffer.
+* Text Properties::         Assigning Lisp property lists to text characters.
 * Substitution::            Replacing a given character wherever it appears.
+* Transposition::           Swapping two portions of a buffer.
 * Registers::               How registers are implemented.  Accessing
                               the text or position stored in a register.
+* Change Hooks::            Supplying functions to be run when text is changed.
                               
 The Kill Ring
 
 * Kill Ring Concepts::      What text looks like in the kill ring.
 * Kill Functions::          Functions that kill text.
 * Yank Commands::           Commands that access the kill ring.
-* Low Level Kill Ring::            Functions and variables for kill ring access.
+* Low-Level Kill Ring::            Functions and variables for kill ring access.
 * Internals of Kill Ring::  Variables that hold kill-ring data.
 
 Indentation
@@ -719,6 +754,40 @@ Indentation
 * Indent Tabs::             Adjustable, typewriter-like tab stops.
 * Motion by Indent::        Move to first non-blank character.
 
+Text Properties
+
+* Examining Properties::    Looking at the properties of one character.
+* Changing Properties::            Setting the properties of a range of text.
+* Property Search::        Searching for where a property changes value.
+* Special Properties::     Particular properties with special meanings.
+* Format Properties::       Properties for representing formatting of text.
+* Sticky Properties::       How inserted text gets properties from
+                              neighboring text.
+* Saving Properties::       Saving text properties in files, and reading
+                              them back.
+* Lazy Properties::         Computing text properties in a lazy fashion
+                              only when text is examined.
+* 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 speciak keyboards.
+* Locales::                 Interacting with the POSIX locale.
+
 Searching and Matching
 
 * String Search::           Search for an exact match.
@@ -770,7 +839,7 @@ Processes
                               an asynchronous subprocess.
 * Output from Processes::   Collecting output from an asynchronous subprocess.
 * Sentinels::               Sentinels run when process run-status changes.
-* TCP::                     Opening network connections.
+* Network::                 Opening network connections.
 
 Receiving Output from Processes
 
@@ -790,10 +859,10 @@ Operating System Interface
 
 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
@@ -837,6 +906,7 @@ Object Internals
 
 @include lists.texi
 @include sequences.texi
+@include hash.texi
 @include symbols.texi
 @include eval.texi
 
@@ -845,35 +915,39 @@ Object Internals
 @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
 
@@ -881,16 +955,23 @@ Object Internals
 
 @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 locals.texi
 @include maps.texi
 @include hooks.texi
-@include anti.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