Sync up with r21-2-42.
[chise/xemacs-chise.git-] / info / xemacs.info-13
index 9af04b9..739ba70 100644 (file)
@@ -1,5 +1,5 @@
-This is Info file ../info/xemacs.info, produced by Makeinfo version
-1.68 from the input file xemacs/xemacs.texi.
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
@@ -30,1218 +30,1282 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
-File: xemacs.info,  Node: Expanding Abbrevs,  Next: Editing Abbrevs,  Prev: Defining Abbrevs,  Up: Abbrevs
-
-Controlling Abbrev Expansion
-============================
-
-   An abbrev expands whenever it is in a buffer just before point and
-you type a self-inserting punctuation character (<SPC>, comma, etc.).
-Most often an abbrev is used by inserting the abbrev followed by
-punctuation.
-
-   Abbrev expansion preserves case; thus, `foo' expands into `find
-outer otter', `Foo' into `Find outer otter', and `FOO' into `FIND OUTER
-OTTER' or `Find Outer Otter' according to the variable
-`abbrev-all-caps' (a non-`nil' value chooses the first of the two
-expansions).
-
-   Two commands are available to control abbrev expansion:
-
-`M-''
-     Separate a prefix from a following abbrev to be expanded
-     (`abbrev-prefix-mark').
-
-`C-x a e'
-     Expand the abbrev before point (`expand-abbrev').  This is
-     effective even when Abbrev mode is not enabled.
-
-`M-x unexpand-abbrev'
-     Undo last abbrev expansion.
-
-`M-x expand-region-abbrevs'
-     Expand some or all abbrevs found in the region.
-
-   You may wish to expand an abbrev with a prefix attached.  For
-example, if `cnst' expands into `construction', you may want to use it
-to enter `reconstruction'.  It does not work to type `recnst', because
-that is not necessarily a defined abbrev.  Instead, you can use the
-command `M-'' (`abbrev-prefix-mark') between the prefix `re' and the
-abbrev `cnst'.  First, insert `re'.  Then type `M-''; this inserts a
-minus sign in the buffer to indicate that it has done its work.  Then
-insert the abbrev `cnst'.  The buffer now contains `re-cnst'.  Now
-insert a punctuation character to expand the abbrev `cnst' into
-`construction'.  The minus sign is deleted at this point by `M-''.  The
-resulting text is the desired `reconstruction'.
-
-   If you actually want the text of the abbrev in the buffer, rather
-than its expansion, insert the following punctuation with `C-q'.  Thus,
-`foo C-q -' leaves `foo-' in the buffer.
-
-   If you expand an abbrev by mistake, you can undo the expansion
-(replace the expansion by the original abbrev text) with `M-x
-unexpand-abbrev'.  You can also use `C-_' (`undo') to undo the
-expansion; but that will first undo the insertion of the punctuation
-character.
-
-   `M-x expand-region-abbrevs' searches through the region for defined
-abbrevs, and  offers to replace each one it finds with its expansion.
-This command is useful if you have typed text using abbrevs but forgot
-to turn on Abbrev mode first.  It may also be useful together with a
-special set of abbrev definitions for making several global
-replacements at once.  The command is effective even if Abbrev mode is
-not enabled.
+File: xemacs.info,  Node: Loading,  Next: Compiling Libraries,  Prev: Lisp Libraries,  Up: Lisp Libraries
+
+Loading Libraries
+-----------------
+
+`M-x load-file FILE'
+     Load the file FILE of Lisp code.
+
+`M-x load-library LIBRARY'
+     Load the library named LIBRARY.
+
+`M-x locate-library LIBRARY &optional NOSUFFIX'
+     Show the full path name of Emacs library LIBRARY.
+
+   To execute a file of Emacs Lisp, use `M-x load-file'.  This command
+reads the file name you provide in the minibuffer, then executes the
+contents of that file as Lisp code.  It is not necessary to visit the
+file first; in fact, this command reads the file as found on disk, not
+the text in an Emacs buffer.
+
+   Once a file of Lisp code is installed in the Emacs Lisp library
+directories, users can load it using `M-x load-library'.  Programs can
+load it by calling `load-library', or with `load', a more primitive
+function that is similar but accepts some additional arguments.
+
+   `M-x load-library' differs from `M-x load-file' in that it searches
+a sequence of directories and tries three file names in each directory.
+The three names are: first, the specified name with `.elc' appended;
+second, the name with `.el' appended; third, the specified name alone.
+A `.elc' file would be the result of compiling the Lisp file into byte
+code;  if possible, it is loaded in preference to the Lisp file itself
+because the compiled file loads and runs faster.
+
+   Because the argument to `load-library' is usually not in itself a
+valid file name, file name completion is not available.  In fact, when
+using this command, you usually do not know exactly what file name will
+be used.
+
+   The sequence of directories searched by `M-x load-library' is
+specified by the variable `load-path', a list of strings that are
+directory names.  The elements of this list may not begin with "`~'",
+so you must call `expand-file-name' on them before adding them to the
+list.  The default value of the list contains the directory where the
+Lisp code for Emacs itself is stored.  If you have libraries of your
+own, put them in a single directory and add that directory to
+`load-path'.  `nil' in this list stands for the current default
+directory, but it is probably not a good idea to put `nil' in the list.
+If you start wishing that `nil' were in the list, you should probably
+use `M-x load-file' for this case.
+
+   The variable is initialized by the EMACSLOADPATH environment
+variable. If no value is specified, the variable takes the default value
+specified in the file `paths.h' when Emacs was built. If a path isn't
+specified in `paths.h', a default value is obtained from the file
+system, near the directory in which the Emacs executable resides.
+
+   Like `M-x load-library', `M-x locate-library' searches the
+directories in `load-path' to find the file that `M-x load-library'
+would load.  If the optional second argument NOSUFFIX is non-`nil', the
+suffixes `.elc' or `.el' are not added to the specified name LIBRARY
+(like calling `load' instead of `load-library').
+
+   You often do not have to give any command to load a library, because
+the commands defined in the library are set up to "autoload" that
+library.  Running any of those commands causes `load' to be called to
+load the library; this replaces the autoload definitions with the real
+ones from the library.
+
+   If autoloading a file does not finish, either because of an error or
+because of a `C-g' quit, all function definitions made by the file are
+undone automatically.  So are any calls to `provide'.  As a
+consequence, the entire file is loaded a second time if you use one of
+the autoloadable commands again.  This prevents problems when the
+command is no longer autoloading but is working incorrectly because the
+file was only partially loaded.  Function definitions are undone only
+for autoloading; explicit calls to `load' do not undo anything if
+loading is not completed.
+
+   The variable `after-load-alist' takes an alist of expressions to be
+evaluated when particular files are loaded.  Each element has the form
+`(FILENAME forms...)'.  When `load' is run and the filename argument is
+FILENAME, the forms in the corresponding element are executed at the
+end of loading.
+
+   FILENAME must match exactly.  Normally FILENAME is the name of a
+library, with no directory specified, since that is how load is
+normally called.  An error in `forms' does not undo the load, but it
+does prevent execution of the rest of the `forms'.
 
 \1f
-File: xemacs.info,  Node: Editing Abbrevs,  Next: Saving Abbrevs,  Prev: Expanding Abbrevs,  Up: Abbrevs
+File: xemacs.info,  Node: Compiling Libraries,  Next: Mocklisp,  Prev: Loading,  Up: Lisp Libraries
+
+Compiling Libraries
+-------------------
+
+   Emacs Lisp code can be compiled into byte-code which loads faster,
+takes up less space when loaded, and executes faster.
+
+`M-x batch-byte-compile'
+     Run byte-compile-file on the files remaining on the command line.
+
+`M-x byte-compile-buffer &optional BUFFER'
+     Byte-compile and evaluate contents of BUFFER (default is current
+     buffer).
+
+`M-x byte-compile-file'
+     Compile a file of Lisp code named FILENAME into a file of byte
+     code.
+
+`M-x byte-compile-and-load-file FILENAME'
+     Compile a file of Lisp code named FILENAME into a file of byte
+     code and load it.
+
+`M-x byte-recompile-directory DIRECTORY'
+     Recompile every `.el' file in DIRECTORY that needs recompilation.
+
+`M-x disassemble'
+     Print disassembled code for OBJECT on (optional) STREAM.
+
+`M-x make-obsolete FUNCTION NEW'
+     Make the byte-compiler warn that FUNCTION is obsolete and NEW
+     should be used instead.
+
+   `byte-compile-file' creates a byte-code compiled file from an
+Emacs-Lisp source file.  The default argument for this function is the
+file visited in the current buffer.  The function reads the specified
+file, compiles it into byte code, and writes an output file whose name
+is made by appending `c' to the input file name.  Thus, the file
+`rmail.el' would be compiled into `rmail.elc'. To compile a file of
+Lisp code named FILENAME into a file of byte code and then load it, use
+`byte-compile-and-load-file'. To compile and evaluate Lisp code in a
+given buffer, use `byte-compile-buffer'.
+
+   To recompile all changed Lisp files in a directory, use `M-x
+byte-recompile-directory'.  Specify just the directory name as an
+argument.  Each `.el' file that has been byte-compiled before is
+byte-compiled again if it has changed since the previous compilation.
+A numeric argument to this command tells it to offer to compile each
+`.el' file that has not been compiled yet.  You must answer `y' or `n'
+to each offer.
+
+   You can use the function `batch-byte-compile' to invoke Emacs
+non-interactively from the shell to do byte compilation.  When you use
+this function, the files to be compiled are specified with command-line
+arguments.  Use a shell command of the form:
+
+     emacs -batch -f batch-byte-compile FILES...
+
+   Directory names may also be given as arguments; in that case,
+`byte-recompile-directory' is invoked on each such directory.
+`batch-byte-compile' uses all remaining command-line arguments as file
+or directory names, then kills the Emacs process.
+
+   `M-x disassemble' explains the result of byte compilation.  Its
+argument is a function name.  It displays the byte-compiled code in a
+help window in symbolic form, one instruction per line.  If the
+instruction refers to a variable or constant, that is shown, too.
 
-Examining and Editing Abbrevs
-=============================
+\1f
+File: xemacs.info,  Node: Mocklisp,  Prev: Compiling Libraries,  Up: Lisp Libraries
+
+Converting Mocklisp to Lisp
+---------------------------
+
+   XEmacs can run Mocklisp files by converting them to Emacs Lisp first.
+To convert a Mocklisp file, visit it and then type `M-x
+convert-mocklisp-buffer'.  Then save the resulting buffer of Lisp file
+in a file whose name ends in `.el' and use the new file as a Lisp
+library.
 
-`M-x list-abbrevs'
-     Print a list of all abbrev definitions.
+   You cannot currently byte-compile converted Mocklisp code.  The
+reason is that converted Mocklisp code uses some special Lisp features
+to deal with Mocklisp's incompatible ideas of how arguments are
+evaluated and which values signify "true" or "false".
+
+\1f
+File: xemacs.info,  Node: Lisp Eval,  Next: Lisp Debug,  Prev: Lisp Libraries,  Up: Running
+
+Evaluating Emacs-Lisp Expressions
+=================================
+
+   Lisp programs intended to be run in Emacs should be edited in
+Emacs-Lisp mode; this will happen automatically for file names ending in
+`.el'.  By contrast, Lisp mode itself should be used for editing Lisp
+programs intended for other Lisp systems.  Emacs-Lisp mode can be
+selected with the command `M-x emacs-lisp-mode'.
+
+   For testing of Lisp programs to run in Emacs, it is useful to be able
+to evaluate part of the program as it is found in the Emacs buffer.  For
+example, if you change the text of a Lisp function definition and then
+evaluate the definition, Emacs installs the change for future calls to
+the function.  Evaluation of Lisp expressions is also useful in any
+kind of editing task for invoking non-interactive functions (functions
+that are not commands).
+
+`M-<ESC>'
+     Read a Lisp expression in the minibuffer, evaluate it, and print
+     the value in the minibuffer (`eval-expression').
+
+`C-x C-e'
+     Evaluate the Lisp expression before point, and print the value in
+     the minibuffer (`eval-last-sexp').
+
+`C-M-x'
+     Evaluate the defun containing point or after point, and print the
+     value in the minibuffer (`eval-defun').
+
+`M-x eval-region'
+     Evaluate all the Lisp expressions in the region.
+
+`M-x eval-current-buffer'
+     Evaluate all the Lisp expressions in the buffer.
+
+   `M-<ESC>' (`eval-expression') is the most basic command for
+evaluating a Lisp expression interactively.  It reads the expression
+using the minibuffer, so you can execute any expression on a buffer
+regardless of what the buffer contains.  When evaluation is complete,
+the current buffer is once again the buffer that was current when
+`M-<ESC>' was typed.
+
+   `M-<ESC>' can easily confuse users, especially on keyboards with
+autorepeat, where it can result from holding down the <ESC> key for too
+long.  Therefore, `eval-expression' is normally a disabled command.
+Attempting to use this command asks for confirmation and gives you the
+option of enabling it; once you enable the command, you are no longer
+required to confirm.  *Note Disabling::.
+
+   In Emacs-Lisp mode, the key `C-M-x' is bound to the function
+`eval-defun', which parses the defun containing point or following point
+as a Lisp expression and evaluates it.  The value is printed in the echo
+area.  This command is convenient for installing in the Lisp environment
+changes that you have just made in the text of a function definition.
+
+   The command `C-x C-e' (`eval-last-sexp') performs a similar job but
+is available in all major modes, not just Emacs-Lisp mode.  It finds
+the sexp before point, reads it as a Lisp expression, evaluates it, and
+prints the value in the echo area.  It is sometimes useful to type in an
+expression and then, with point still after it, type `C-x C-e'.
+
+   If `C-M-x' or `C-x C-e' are given a numeric argument, they print the
+value by inserting it into the current buffer at point, rather than in
+the echo area.  The argument value does not matter.
+
+   The most general command for evaluating Lisp expressions from a
+buffer is `eval-region'.  `M-x eval-region' parses the text of the
+region as one or more Lisp expressions, evaluating them one by one.
+`M-x eval-current-buffer' is similar, but it evaluates the entire
+buffer.  This is a reasonable way to install the contents of a file of
+Lisp code that you are just ready to test.  After finding and fixing a
+bug, use `C-M-x' on each function that you change, to keep the Lisp
+world in step with the source file.
 
-`M-x edit-abbrevs'
-     Edit a list of abbrevs; you can add, alter, or remove definitions.
+\1f
+File: xemacs.info,  Node: Lisp Debug,  Next: Lisp Interaction,  Prev: Lisp Eval,  Up: Running
+
+The Emacs-Lisp Debugger
+=======================
+
+   XEmacs contains a debugger for Lisp programs executing inside it.
+This debugger is normally not used; many commands frequently get Lisp
+errors when invoked in inappropriate contexts (such as `C-f' at the end
+of the buffer) and it would be unpleasant to enter a special debugging
+mode in this case.  When you want to make Lisp errors invoke the
+debugger, you must set the variable `debug-on-error' to non-`nil'.
+Quitting with `C-g' is not considered an error, and `debug-on-error'
+has no effect on the handling of `C-g'.  However, if you set
+`debug-on-quit' to be non-`nil', `C-g' will invoke the debugger.  This
+can be useful for debugging an infinite loop; type `C-g' once the loop
+has had time to reach its steady state.  `debug-on-quit' has no effect
+on errors.
+
+   You can make Emacs enter the debugger when a specified function is
+called or at a particular place in Lisp code.  Use `M-x debug-on-entry'
+with argument FUN-NAME to have Emacs enter the debugger as soon as
+FUN-NAME is called. Use `M-x cancel-debug-on-entry' to make the
+function stop entering the debugger when called.  (Redefining the
+function also does this.)  To enter the debugger from some other place
+in Lisp code, you must insert the expression `(debug)' there and
+install the changed code with `C-M-x'.  *Note Lisp Eval::.
+
+   When the debugger is entered, it displays the previously selected
+buffer in one window and a buffer named `*Backtrace*' in another
+window.  The backtrace buffer contains one line for each level of Lisp
+function execution currently going on.  At the beginning of the buffer
+is a message describing the reason that the debugger was invoked, for
+example, an error message if it was invoked due to an error.
+
+   The backtrace buffer is read-only and is in Backtrace mode, a special
+major mode in which letters are defined as debugger commands.  The
+usual Emacs editing commands are available; you can switch windows to
+examine the buffer that was being edited at the time of the error, and
+you can switch buffers, visit files, and perform any other editing
+operations.  However, the debugger is a recursive editing level (*note
+Recursive Edit::); it is a good idea to return to the backtrace buffer
+and explicitly exit the debugger when you don't want to use it any
+more.  Exiting the debugger kills the backtrace buffer.
+
+   The contents of the backtrace buffer show you the functions that are
+executing and the arguments that were given to them.  It also allows you
+to specify a stack frame by moving point to the line describing that
+frame.  The frame whose line point is on is considered the "current
+frame".  Some of the debugger commands operate on the current frame.
+Debugger commands are mainly used for stepping through code one
+expression at a time.  Here is a list of them:
+
+`c'
+     Exit the debugger and continue execution.  In most cases,
+     execution of the program continues as if the debugger had never
+     been entered (aside from the effect of any variables or data
+     structures you may have changed while inside the debugger).  This
+     includes entry to the debugger due to function entry or exit,
+     explicit invocation, and quitting or certain errors.  Most errors
+     cannot be continued; trying to continue an error usually causes
+     the same error to occur again.
+
+`d'
+     Continue execution, but enter the debugger the next time a Lisp
+     function is called.  This allows you to step through the
+     subexpressions of an expression, and see what the subexpressions
+     do and what values they compute.
+
+     When you enter the debugger this way, Emacs flags the stack frame
+     for the function call from which you entered.  The same function
+     is then called when you exit the frame.  To cancel this flag, use
+     `u'.
+
+`b'
+     Set up to enter the debugger when the current frame is exited.
+     Frames that invoke the debugger on exit are flagged with stars.
 
-   The output from `M-x list-abbrevs' looks like this:
+`u'
+     Don't enter the debugger when the current frame is exited.  This
+     cancels a `b' command on a frame.
 
-     (lisp-mode-abbrev-table)
-     "dk"             0    "define-key"
-     (global-abbrev-table)
-     "dfn"            0    "definition"
+`e'
+     Read a Lisp expression in the minibuffer, evaluate it, and print
+     the value in the echo area.  This is equivalent to the command
+     `M-<ESC>', except that `e' is not normally disabled like `M-<ESC>'.
 
-(Some blank lines of no semantic significance, and some other abbrev
-tables, have been omitted.)
+`q'
+     Terminate the program being debugged; return to top-level Emacs
+     command execution.
 
-   A line containing a name in parentheses is the header for abbrevs in
-a particular abbrev table; `global-abbrev-table' contains all the global
-abbrevs, and the other abbrev tables that are named after major modes
-contain the mode-specific abbrevs.
+     If the debugger was entered due to a `C-g' but you really want to
+     quit, not to debug, use the `q' command.
 
-   Within each abbrev table, each non-blank line defines one abbrev.
-The word at the beginning is the abbrev.  The number that appears is
-the number of times the abbrev has been expanded.  Emacs keeps track of
-this to help you see which abbrevs you actually use, in case you want
-to eliminate those that you don't use often.  The string at the end of
-the line is the expansion.
+`r'
+     Return a value from the debugger.  The value is computed by
+     reading an expression with the minibuffer and evaluating it.
 
-   `M-x edit-abbrevs' allows you to add, change or kill abbrev
-definitions by editing a list of them in an Emacs buffer.  The list has
-the format described above.  The buffer of abbrevs is called
-`*Abbrevs*', and is in Edit-Abbrevs mode.  This mode redefines the key
-`C-c C-c' to install the abbrev definitions as specified in the buffer.
-The  `edit-abbrevs-redefine' command does this.  Any abbrevs not
-described in the buffer are eliminated when this is done.
+     The value returned by the debugger makes a difference when the
+     debugger was invoked due to exit from a Lisp call frame (as
+     requested with `b'); then the value specified in the `r' command
+     is used as the value of that frame.
 
-   `edit-abbrevs' is actually the same as `list-abbrevs', except that
-it selects the buffer `*Abbrevs*' whereas `list-abbrevs' merely
-displays it in another window.
+     The debugger's return value also matters with many errors.  For
+     example, `wrong-type-argument' errors will use the debugger's
+     return value instead of the invalid argument; `no-catch' errors
+     will use the debugger value as a throw tag instead of the tag that
+     was not found.  If an error was signaled by calling the Lisp
+     function `signal', the debugger's return value is returned as the
+     value of `signal'.
 
 \1f
-File: xemacs.info,  Node: Saving Abbrevs,  Next: Dynamic Abbrevs,  Prev: Editing Abbrevs,  Up: Abbrevs
+File: xemacs.info,  Node: Lisp Interaction,  Next: External Lisp,  Prev: Lisp Debug,  Up: Running
 
-Saving Abbrevs
-==============
-
-   These commands allow you to keep abbrev definitions between editing
-sessions.
+Lisp Interaction Buffers
+========================
 
-`M-x write-abbrev-file'
-     Write a file describing all defined abbrevs.
+   The buffer `*scratch*', which is selected when Emacs starts up, is
+provided for evaluating Lisp expressions interactively inside Emacs.
+Both the expressions you evaluate and their output goes in the buffer.
+
+   The `*scratch*' buffer's major mode is Lisp Interaction mode, which
+is the same as Emacs-Lisp mode except for one command, <LFD>.  In
+Emacs-Lisp mode, <LFD> is an indentation command.  In Lisp Interaction
+mode, <LFD> is bound to `eval-print-last-sexp'.  This function reads
+the Lisp expression before point, evaluates it, and inserts the value
+in printed representation before point.
+
+   The way to use the `*scratch*' buffer is to insert Lisp expressions
+at the end, ending each one with <LFD> so that it will be evaluated.
+The result is a complete typescript of the expressions you have
+evaluated and their values.
+
+   The rationale for this feature is that Emacs must have a buffer when
+it starts up, but that buffer is not useful for editing files since a
+new buffer is made for every file that you visit.  The Lisp interpreter
+typescript is the most useful thing I can think of for the initial
+buffer to do.  `M-x lisp-interaction-mode' will put any buffer in Lisp
+Interaction mode.
 
-`M-x read-abbrev-file'
-     Read such an abbrev file and define abbrevs as specified there.
+\1f
+File: xemacs.info,  Node: External Lisp,  Prev: Lisp Interaction,  Up: Running
 
-`M-x quietly-read-abbrev-file'
-     Similar, but do not display a message about what is going on.
+Running an External Lisp
+========================
 
-`M-x define-abbrevs'
-     Define abbrevs from buffer.
+   Emacs has facilities for running programs in other Lisp systems.
+You can run a Lisp process as an inferior of Emacs, and pass
+expressions to it to be evaluated.  You can also pass changed function
+definitions directly from the Emacs buffers in which you edit the Lisp
+programs to the inferior Lisp process.
+
+   To run an inferior Lisp process, type `M-x run-lisp'.  This runs the
+program named `lisp', the same program you would run by typing `lisp'
+as a shell command, with both input and output going through an Emacs
+buffer named `*lisp*'.  In other words, any "terminal output" from Lisp
+will go into the buffer, advancing point, and any "terminal input" for
+Lisp comes from text in the buffer.  To give input to Lisp, go to the
+end of the buffer and type the input, terminated by <RET>.  The
+`*lisp*' buffer is in Inferior Lisp mode, which has all the special
+characteristics of Lisp mode and Shell mode (*note Shell Mode::).
+
+   Use Lisp mode to run the source files of programs in external Lisps.
+You can select this mode with `M-x lisp-mode'.  It is used automatically
+for files whose names end in `.l' or `.lisp', as most Lisp systems
+usually expect.
+
+   When you edit a function in a Lisp program you are running, the
+easiest way to send the changed definition to the inferior Lisp process
+is the key `C-M-x'.  In Lisp mode, this key runs the function
+`lisp-send-defun', which finds the defun around or following point and
+sends it as input to the Lisp process.  (Emacs can send input to any
+inferior process regardless of what buffer is current.)
+
+   Contrast the meanings of `C-M-x' in Lisp mode (for editing programs
+to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp
+programs to be run in Emacs): in both modes it has the effect of
+installing the function definition that point is in, but the way of
+doing so is different according to where the relevant Lisp environment
+is found.  *Note Lisp Modes::.
 
-`M-x insert-abbrevs'
-     Insert all abbrevs and their expansions into the buffer.
+\1f
+File: xemacs.info,  Node: Packages,  Next: Basic,  Prev: Startup Paths,  Up: Top
 
-   Use `M-x write-abbrev-file' to save abbrev definitions for use in a
-later session.  The command reads a file name using the minibuffer and
-writes a description of all current abbrev definitions into the
-specified file.  The text stored in the file looks like the output of
-`M-x list-abbrevs'.
+Packages
+========
 
-   `M-x read-abbrev-file' prompts for a file name using the minibuffer
-and reads the specified file, defining abbrevs according to its
-contents.  `M-x quietly-read-abbrev-file' is the same but does not
-display a message in the echo area; it is actually useful primarily in
-the `.emacs' file.  If you give an empty argument to either of these
-functions, the file name Emacs uses is the value of the variable
-`abbrev-file-name', which is by default `"~/.abbrev_defs"'.
+   The XEmacs 21 distribution comes only with a very basic set of
+built-in modes and packages.  Most of the packages that were part of
+the distribution of earlier versions of XEmacs are now available
+separately.  The installer as well as the user can choose which
+packages to install; the actual installation process is easy.  This
+gives an installer the ability to tailor an XEmacs installation for
+local needs with safe removal of unnecessary code.
 
-   Emacs offers to save abbrevs automatically if you have changed any of
-them, whenever it offers to save all files (for `C-x s' or `C-x C-c').
-Set the variable `save-abbrevs' to `nil' to inhibit this feature.
+* Menu:
 
-   The commands `M-x insert-abbrevs' and `M-x define-abbrevs' are
-similar to the previous commands but work on text in an Emacs buffer.
-`M-x insert-abbrevs' inserts text into the current buffer before point,
-describing all current abbrev definitions; `M-x define-abbrevs' parses
-the entire current buffer and defines abbrevs accordingly.
+* Package Terminology:: Understanding different kinds of packages.
+* Using Packages::      How to install and use packages.
+* Building Packages::   Building packages from sources.
+* Creating Packages::   The basics.
+* Available Packages::  A brief, out-of-date, directory of packaged LISP.
 
 \1f
-File: xemacs.info,  Node: Dynamic Abbrevs,  Prev: Saving Abbrevs,  Up: Abbrevs
+File: xemacs.info,  Node: Package Terminology,  Next: Using Packages,  Up: Packages
 
-Dynamic Abbrev Expansion
-========================
+Package Flavors
+---------------
 
-   The abbrev facility described above operates automatically as you
-insert text, but all abbrevs must be defined explicitly.  By contrast,
-"dynamic abbrevs" allow the meanings of abbrevs to be determined
-automatically from the contents of the buffer, but dynamic abbrev
-expansion happens only when you request it explicitly.
-
-`M-/'
-     Expand the word in the buffer before point as a "dynamic abbrev",
-     by searching in the buffer for words starting with that
-     abbreviation (`dabbrev-expand').
-
-   For example, if the buffer contains `does this follow ' and you type
-`f o M-/', the effect is to insert `follow' because that is the last
-word in the buffer that starts with `fo'.  A numeric argument to `M-/'
-says to take the second, third, etc. distinct expansion found looking
-backward from point.  Repeating `M-/' searches for an alternative
-expansion by looking farther back.  After the entire buffer before
-point has been considered, the buffer after point is searched.
-
-   Dynamic abbrev expansion is completely independent of Abbrev mode;
-the expansion of a word with `M-/' is completely independent of whether
-it has a definition as an ordinary abbrev.
+   There are two main flavors of packages.
 
-\1f
-File: xemacs.info,  Node: Picture,  Next: Sending Mail,  Prev: Abbrevs,  Up: Top
-
-Editing Pictures
-****************
-
-   If you want to create a picture made out of text characters (for
-example, a picture of the division of a register into fields, as a
-comment in a program), use the command `edit-picture' to enter Picture
-mode.
-
-   In Picture mode, editing is based on the "quarter-plane" model of
-text.  In this model, the text characters lie studded on an area that
-stretches infinitely far to the right and downward.  The concept of the
-end of a line does not exist in this model; the most you can say is
-where the last non-blank character on the line is found.
-
-   Of course, Emacs really always considers text as a sequence of
-characters, and lines really do have ends.  But in Picture mode most
-frequently-used keys are rebound to commands that simulate the
-quarter-plane model of text.  They do this by inserting spaces or by
-converting tabs to spaces.
-
-   Most of the basic editing commands of Emacs are redefined by Picture
-mode to do essentially the same thing but in a quarter-plane way.  In
-addition, Picture mode defines various keys starting with the `C-c'
-prefix to run special picture editing commands.
-
-   One of these keys, `C-c C-c', is pretty important.  Often a picture
-is part of a larger file that is usually edited in some other major
-mode.  `M-x edit-picture' records the name of the previous major mode.
-You can then use the `C-c C-c' command (`picture-mode-exit') to restore
-that mode.  `C-c C-c' also deletes spaces from the ends of lines,
-unless you give it a numeric argument.
-
-   The commands used in Picture mode all work in other modes (provided
-the `picture' library is loaded), but are only  bound to keys in
-Picture mode.  Note that the descriptions below talk of moving "one
-column" and so on, but all the picture mode commands handle numeric
-arguments as their normal equivalents do.
-
-   Turning on Picture mode calls the value of the variable
-`picture-mode-hook' as a function, with no arguments, if that value
-exists and is non-`nil'.
+   * Regular Packages A regular package is one in which multiple files
+     are involved and one may not in general safely remove any of them.
 
-* Menu:
+   * Single-File Packages A single-file package is an aggregate
+     collection of thematically related but otherwise independent lisp
+     files.  These files are bundled together for download convenience
+     and individual files may be deleted at will without any loss of
+     functionality.
 
-* Basic Picture::         Basic concepts and simple commands of Picture Mode.
-* Insert in Picture::     Controlling direction of cursor motion
-                           after "self-inserting" characters.
-* Tabs in Picture::       Various features for tab stops and indentation.
-* Rectangles in Picture:: Clearing and superimposing rectangles.
+Package Distributions
+---------------------
 
-\1f
-File: xemacs.info,  Node: Basic Picture,  Next: Insert in Picture,  Prev: Picture,  Up: Picture
-
-Basic Editing in Picture Mode
-=============================
-
-   Most keys do the same thing in Picture mode that they usually do,
-but do it in a quarter-plane style.  For example, `C-f' is rebound to
-run `picture-forward-column', which moves point one column to the
-right, by inserting a space if necessary, so that the actual end of the
-line makes no difference.  `C-b' is rebound to run
-`picture-backward-column', which always moves point left one column,
-converting a tab to multiple spaces if necessary.  `C-n' and `C-p' are
-rebound to run `picture-move-down' and `picture-move-up', which can
-either insert spaces or convert tabs as necessary to make sure that
-point stays in exactly the same column.  `C-e' runs
-`picture-end-of-line', which moves to after the last non-blank
-character on the line.  There was no need to change `C-a', as the choice
-of screen model does not affect beginnings of lines.
-
-   Insertion of text is adapted to the quarter-plane screen model
-through the use of Overwrite mode (*note Minor Modes::.).
-Self-inserting characters replace existing text, column by column,
-rather than pushing existing text to the right.  <RET> runs
-`picture-newline', which just moves to the beginning of the following
-line so that new text will replace that line.
-
-   Text is erased instead of deleted and killed.  <DEL>
-(`picture-backward-clear-column') replaces the preceding character with
-a space rather than removing it.  `C-d' (`picture-clear-column') does
-the same in a forward direction.  `C-k' (`picture-clear-line') really
-kills the contents of lines, but never removes the newlines from a
-buffer.
-
-   To do actual insertion, you must use special commands.  `C-o'
-(`picture-open-line') creates a blank line, but does so after the
-current line; it never splits a line.  `C-M-o', `split-line', makes
-sense in Picture mode, so it remains unchanged.  <LFD>
-(`picture-duplicate-line') inserts another line with the same contents
-below the current line.
-
-   To actually delete parts of the picture, use `C-w', or with `C-c
-C-d' (which is defined as `delete-char', as `C-d' is in other modes),
-or with one of the picture rectangle commands (*note Rectangles in
-Picture::.).
+   XEmacs Lisp packages are distributed in two ways, depending on the
+intended use.  Binary Packages are for installers and end-users and may
+be installed directly into an XEmacs package directory.  Source Packages
+are for developers and include all files necessary for rebuilding
+bytecompiled lisp and creating tarballs for distribution.
+
+Binary Packages
+---------------
+
+   Binary packages may be installed directly into an XEmacs package
+hierarchy.
+
+Source Packages
+---------------
+
+   Source packages contain all of the Package author's (where
+appropriate in regular packages) source code plus all of the files
+necessary to build distribution tarballs (Unix Tar format files,
+gzipped for space savings).
 
 \1f
-File: xemacs.info,  Node: Insert in Picture,  Next: Tabs in Picture,  Prev: Basic Picture,  Up: Picture
+File: xemacs.info,  Node: Using Packages,  Next: Building Packages,  Prev: Package Terminology,  Up: Packages
 
-Controlling Motion After Insert
-===============================
+Getting Started
+---------------
 
-   Since "self-inserting" characters just overwrite and move point in
-Picture mode, there is no essential restriction on how point should be
-moved.  Normally point moves right, but you can specify any of the eight
-orthogonal or diagonal directions for motion after a "self-inserting"
-character.  This is useful for drawing lines in the buffer.
+   When you first download XEmacs 21, you will usually first grab the
+"core distribution", a file called `xemacs-21.0.tar.gz'. (Replace the
+21.0 by the current version number.)  The core distribution contains
+the sources of XEmacs and a minimal set of Emacs Lisp files, which are
+in the subdirectory named `lisp'.  This subdirectory used to contain
+all Emacs Lisp files distributed with XEmacs.  Now, to conserve disk
+space, most non-essential packages were made optional.
 
-`C-c <'
-     Move left after insertion (`picture-movement-left').
+Choosing the Packages You Need
+------------------------------
 
-`C-c >'
-     Move right after insertion (`picture-movement-right').
+   The available packages can currently be found in the same ftp
+directory where you grabbed the core distribution from, and are located
+in the subdirectory `packages/binary-packages'.  Package file names
+follow the naming convention `<package-name>-<version>-pkg.tar.gz'.
 
-`C-c ^'
-     Move up after insertion (`picture-movement-up').
+   If you have EFS *Note (EFS)::, packages can be installed over the
+network.  Alternatively, if you have copies of the packages locally,
+you can install packages from a local disk or CDROM.
 
-`C-c .'
-     Move down after insertion (`picture-movement-down').
+   The file `etc/PACKAGES' in the core distribution contains a list of
+the packages available at the time of the XEmacs release.  Packages are
+also listed on the `Options' menu under:
 
-`C-c `'
-     Move up and left ("northwest") after insertion
-     (`picture-movement-nw').
+             Options->Customize->Emacs->Packages
 
-`C-c ''
-     Move up and right ("northeast") after insertion
-     (`picture-movement-ne').
+   However, don't select any of these menu picks unless you actually
+want to install the given package (and have properly configured your
+system to do so).
 
-`C-c /'
-     Move down and left ("southwest") after insertion
-     (`picture-movement-sw').
+   You can also get a list of available packages, and whether or not
+they are installed, using the visual package browser and installer.
+You can access it via the menus:
 
-`C-c \'
-     Move down and right ("southeast") after insertion
-     (`picture-movement-se').
+             Options->Manage Packages->List & Install
 
-   Two motion commands move based on the current Picture insertion
-direction.  The command `C-c C-f' (`picture-motion') moves in the same
-direction as motion after "insertion" currently does, while `C-c C-b'
-(`picture-motion-reverse') moves in the opposite direction.
+   Or, you can get to it via the keyboard:
 
-\1f
-File: xemacs.info,  Node: Tabs in Picture,  Next: Rectangles in Picture,  Prev: Insert in Picture,  Up: Picture
-
-Picture Mode Tabs
-=================
-
-   Two kinds of tab-like action are provided in Picture mode.
-Context-based tabbing is done with `M-<TAB>' (`picture-tab-search').
-With no argument, it moves to a point underneath the next "interesting"
-character that follows whitespace in the previous non-blank line.
-"Next" here means "appearing at a horizontal position greater than the
-one point starts out at".  With an argument, as in `C-u M-<TAB>', the
-command moves to the next such interesting character in the current
-line.  `M-<TAB>' does not change the text; it only moves point.
-"Interesting" characters are defined by the variable
-`picture-tab-chars', which contains a string of characters considered
-interesting.  Its default value is `"!-~"'.
-
-   <TAB> itself runs `picture-tab', which operates based on the current
-tab stop settings; it is the Picture mode equivalent of
-`tab-to-tab-stop'.  Without arguments it just moves point, but with a
-numeric argument it clears the text that it moves over.
-
-   The context-based and tab-stop-based forms of tabbing are brought
-together by the command `C-c <TAB>' (`picture-set-tab-stops'.)  This
-command sets the tab stops to the positions which `M-<TAB>' would
-consider significant in the current line.  If you use this command with
-<TAB>, you can get the effect of context-based tabbing.  But `M-<TAB>'
-is more convenient in the cases where it is sufficient.
+     M-x pui-list-packages
 
-\1f
-File: xemacs.info,  Node: Rectangles in Picture,  Prev: Tabs in Picture,  Up: Picture
+   Hint to system administrators of multi-user systems: it might be a
+good idea to install all packages and not interfere with the wishes of
+your users.
 
-Picture Mode Rectangle Commands
-===============================
+   If you can't find which package provides the feature you require, try
+using the `package-get-package-provider' function. Eg., if you know
+that you need `thingatpt', type:
 
-   Picture mode defines commands for working on rectangular pieces of
-the text in ways that fit with the quarter-plane model.  The standard
-rectangle commands may also be useful (*note Rectangles::.).
+     M-x package-get-package-provider RET thingatpt
 
-`C-c C-k'
-     Clear out the region-rectangle (`picture-clear-rectangle').  With
-     argument, kill it.
+   which will return something like (fsf-compat "1.06"). You can the use
+one of the methods above for installing the package you want.
 
-`C-c C-w R'
-     Similar but save rectangle contents in register R first
-     (`picture-clear-rectangle-to-register').
+XEmacs and Installing Packages
+------------------------------
 
-`C-c C-y'
-     Copy last killed rectangle into the buffer by overwriting, with
-     upper left corner at point (`picture-yank-rectangle').  With
-     argument, insert instead.
+   Normally, packages are installed over the network, using EFS *Note
+(EFS)::.  However, you may not have network access, or you may already
+have some or all of the packages on a local disk, such as a CDROM.  If
+you want to install from a local disk, you must first tell XEmacs where
+to find the package binaries.  This is done by adding a line like the
+following to your init file:
 
-`C-c C-x R'
-     Similar, but use the rectangle in register R
-     (`picture-yank-rectangle-from-register').
+     (setq package-get-remote (cons (list nil "/my/path/to/package/binaries")
+                                    package-get-remote))
 
-   The picture rectangle commands `C-c C-k' (`picture-clear-rectangle')
-and `C-c C-w' (`picture-clear-rectangle-to-register') differ from the
-standard rectangle commands in that they normally clear the rectangle
-instead of deleting it; this is analogous with the way `C-d' is changed
-in Picture mode.
+   *Note Init File::.
 
-   However, deletion of rectangles can be useful in Picture mode, so
-these commands delete the rectangle if given a numeric argument.
+   Here, you'd change `/my/path/to/package/binaries' to be the path to
+your local package binaries.  Next, restart XEmacs, and you're ready to
+go (advanced users can just re-evaluate the sexp).
 
-   The Picture mode commands for yanking rectangles differ from the
-standard ones in overwriting instead of inserting.  This is the same
-way that Picture mode insertion of other text is different from other
-modes.  `C-c C-y' (`picture-yank-rectangle') inserts (by overwriting)
-the rectangle that was most recently killed, while `C-c C-x'
-(`picture-yank-rectangle-from-register') does for the rectangle found
-in a specified register.
+   If you are installing from a temporary, one-time directory, you can
+also add these directory names to `package-get-remote' using:
 
-   Since most region commands in Picture mode operate on rectangles,
-when you select a region of text with the mouse in Picture mode, it is
-highlighted as a rectangle.
+             M-x pui-add-install-directory
 
-\1f
-File: xemacs.info,  Node: Sending Mail,  Next: Reading Mail,  Prev: Picture,  Up: Top
+   Note, however, that any directories added using this function are not
+saved; this information will be lost when you quit XEmacs.
 
-Sending Mail
-************
+   If you're going to install over the network, you only have to insure
+that EFS *Note (EFS):: works, and that it can get outside a firewall, if
+you happen to be behind one.  You shouldn't have to do anything else;
+XEmacs already knows where to go. However you can add your own mirrors
+to this list. See `package-get-remote'.
 
-   To send a message in Emacs, start by typing the command (`C-x m') to
-select and initialize the `*mail*' buffer.  You can then edit the text
-and headers of the message in the mail buffer, and type the command
-(`C-c C-c') to send the message.
+   The easiest way to install a package is to use the visual package
+browser and installer, using the menu pick:
 
-`C-x m'
-     Begin composing a message to send (`mail').
+             Options->Manage Packages->List & Install
+   or
+             Options->Manage Packages->Using Custom->Select-> ...
 
-`C-x 4 m'
-     Likewise, but display the message in another window
-     (`mail-other-window').
+   You can also access it using the keyboard:
 
-`C-c C-c'
-     In Mail mode, send the message and switch to another buffer
-     (`mail-send-and-exit').
+     M-x pui-list-packages
 
-   The command `C-x m' (`mail') selects a buffer named `*mail*' and
-initializes it with the skeleton of an outgoing message.  `C-x 4 m'
-(`mail-other-window') selects the `*mail*' buffer in a different
-window, leaving the previous current buffer visible.
+   The visual package browser will then display a list of all packages.
+Help information will be displayed at the very bottom of the buffer; you
+may have to scroll down to see it.  You can also press `?' to get the
+same help.  From this buffer, you can tell the package status by the
+character in the first column:
 
-   Because the buffer for mail composition is an ordinary Emacs buffer,
-you can switch to other buffers while in the middle of composing mail,
-and switch back later (or never).  If you use the `C-x m' command again
-when you have been composing another message but have not sent it, a
-new mail buffer will be created; in this way, you can compose multiple
-messages at once.  You can switch back to and complete an unsent
-message by using the normal buffer selection mechanisms.
+`-'
+     The package has not been installed.
 
-   `C-u C-x m' is another way to switch back to a message in progress:
-it will search for an existing, unsent mail message buffer and select
-it.
+`*'
+     The package has been installed, but a newer version is available.
+     The current version is out-of-date.
 
-* Menu:
+`+'
+     The package has been marked for installation/update.
 
-* Format: Mail Format.    Format of the mail being composed.
-* Headers: Mail Headers.  Details of allowed mail header fields.
-* Mode: Mail Mode.        Special commands for editing mail being composed.
+   If there is no character in the first column, the package has been
+installed and is up-to-date.
 
-\1f
-File: xemacs.info,  Node: Mail Format,  Next: Mail Headers,  Prev: Sending Mail,  Up: Sending Mail
+   From here, you can select or unselect packages for installation using
+the <RET> key, the `Mouse-2' button or selecting "Select" from the
+(Popup) Menu.  Once you've finished selecting the packages, you can
+press the `x' key (or use the menu) to actually install the packages.
+Note that you will have to restart XEmacs for XEmacs to recognize any
+new packages.
+
+   Key summary:
+
+`?'
+     Display simple help.
 
-The Format of the Mail Buffer
-=============================
+`<RET>'
+`<Mouse-2>'
+     Toggle between selecting and unselecting a package for
+     installation.
 
-   In addition to the "text" or contents, a message has "header
-fields", which say who sent it, when, to whom, why, and so on.  Some
-header fields, such as the date and sender, are created automatically
-after the message is sent.  Others, such as the recipient names, must
-be specified by you in order to send the message properly.
+`x'
+     Install selected packages.
 
-   Mail mode provides a few commands to help you edit some header
-fields, and some are preinitialized in the buffer automatically at
-times.  You can insert or edit any header fields using ordinary editing
-commands.
+`<SPC>'
+     View, in the minibuffer, additional information about the package,
+     such as the package date (not the build date) and the package
+     author.  Moving the mouse over a package name will also do the
+     same thing.
 
-   The line in the buffer that says:
+`v'
+     Toggle between verbose and non-verbose package display.
 
-     --text follows this line--
+`g'
+     Refresh the package display.
 
-is a special delimiter that separates the headers you have specified
-from the text.  Whatever follows this line is the text of the message;
-the headers precede it.  The delimiter line itself does not appear in
-the message actually sent.  The text used for the delimiter line is
-controlled by the variable `mail-header-separator'.
+`q'
+     Kill the package buffer.
 
-   Here is an example of what the headers and text in the `*mail*'
-buffer might look like.
+   Moving the mouse over a package will also cause additional
+information about the package to be displayed in the minibuffer.
 
-     To: rms@mc
-     CC: mly@mc, rg@oz
-     Subject: The XEmacs User's Manual
-     --Text follows this line--
-     Please ignore this message.
+Other package installation interfaces
+-------------------------------------
+
+   For an alternative package interface, you can select packages from
+the customize menus, under:
+
+             Options->Customize->Emacs->Packages-> ...
+   or
+             Options->Manage Packages->Using Custom->Select-> ...
+
+   Set their state to on, and then do:
+
+             Options->Manage Packages->Using Custom->Update Packages
+
+   This will automatically retrieve the packages you have selected from
+the XEmacs ftp site or your local disk, and install them into XEmacs.
+Additionally it will update any packages you already have installed to
+the newest version.  Note that if a package is newly installed you will
+have to restart XEmacs for the change to take effect.
+
+   You can also install packages using a semi-manual interface:
+
+     M-x package-get-all <return>
+
+   Enter the name of the package (e.g., `prog-modes'), and XEmacs will
+search for the latest version (as listed in the lisp file
+`lisp/package-get-base.el'), and install it and any packages that it
+depends upon.
+
+Manual Binary Package Installation
+----------------------------------
+
+   Pre-compiled, binary packages can be installed in either a system
+package directory (this is determined when XEmacs is compiled), or in
+one of the following subdirectories of your `$HOME' directory:
+
+     ~/.xemacs/mule-packages
+     ~/.xemacs/xemacs-packages
+
+   Packages in the former directory will only be found by a Mule-enabled
+XEmacs.
+
+   XEmacs does not have to be running to install binary packages,
+although XEmacs will not know about any newly-installed packages until
+you restart XEmacs.  Note, however, that installing a newer version of a
+package while XEmacs is running could cause strange errors in XEmacs;
+it's best to exit XEmacs before upgrading an existing package.
+
+   To install binary packages manually:
+
+  1. Download the package(s) that you want to install.  Each binary
+     package will typically be a gzip'd tarball.
+
+  2. Decide where to install the packages: in the system package
+     directory, or in `~/.xemacs/mule-packages' or
+     `~/.xemacs/xemacs-packages', respectively.  If you want to install
+     the packages in the system package directory, make sure you can
+     write into that directory.  If you want to install in your `$HOME'
+     directory, create the directory, `~/.xemacs/mule-packages' or
+     `~/.xemacs/xemacs-packages', respectively.
+
+  3. Next, `cd' to the directory under which you want to install the
+     package(s).
+
+  4. From this directory, uncompress and extract each of the gzip'd
+     tarballs that you downloaded in step 1.  Unix and Cygnus cygwin
+     users will typically do this using the commands:
+
+                  gunzip < package.tar.gz | tar xvf -
+
+     Above, replace `package.tar.gz' with the filename of the package
+     that you downloaded in step 1.
+
+     Of course, if you use GNU `tar', you could also use:
+
+                  tar xvzf package.tar.gz
+
+  5. That's it.  Quit and restart XEmacs to get it to recognize any new
+     or changed packages.
 
-\1f
-File: xemacs.info,  Node: Mail Headers,  Next: Mail Mode,  Prev: Mail Format,  Up: Sending Mail
-
-Mail Header Fields
-==================
-
-   There are several header fields you can use in the `*mail*' buffer.
-Each header field starts with a field name at the beginning of a line,
-terminated by a colon.  It does not matter whether you use upper or
-lower case in the field name.  After the colon and optional whitespace
-comes the contents of the field.
-
-`To'
-     This field contains the mailing addresses of the message.
-
-`Subject'
-     The contents of the `Subject' field should be a piece of text that
-     says what the message is about.  Subject fields are useful because
-     most mail-reading programs can provide a summary of messages,
-     listing the subject of each message but not its text.
-
-`CC'
-     This field contains additional mailing addresses to send the
-     message to, but whose readers should not regard the message as
-     addressed to them.
-
-`BCC'
-     This field contains additional mailing addresses to send the
-     message to, but which should not appear in the header of the
-     message actually sent.
-
-`FCC'
-     This field contains the name of one file (in Unix mail file
-     format) to which a copy of the message should be appended when the
-     message is sent.
-
-`From'
-     Use the `From' field to say who you are, when the account you are
-     using to send the mail is not your own.  The contents of the
-     `From' field should be a valid mailing address, since replies will
-     normally go there.
-
-`Reply-To'
-     Use the `Reply-To' field to direct replies to a different address,
-     not your own. `From' and `Reply-To' have the same effect on where
-     replies go, but they convey a different meaning to the person who
-     reads the message.
-
-`In-Reply-To'
-     This field contains a piece of text describing a message you are
-     replying to.  Some mail systems can use the information to
-     correlate related pieces of mail.  This field is normally filled
-     in by your mail handling package when you are replying to a
-     message and you never need to think about it.
-
-The `To', `CC', `BCC' and `FCC' fields can appear any number of times,
-to specify many places to send the message.
-
-The `To', `CC', and `BCC', fields can have continuation lines.  All the
-lines starting with whitespace, following the line on which the field
-starts, are considered part of the field.  For example,
-
-     To: foo@here, this@there,
-       me@gnu.cambridge.mass.usa.earth.spiral3281
-
-If you have a `~/.mailrc' file, Emacs scans it for mail aliases the
-first time you try to send mail in an Emacs session.  Emacs expands
-aliases found in the `To', `CC', and `BCC' fields where appropriate.
-You can set the variable `mail-abbrev-mailrc-file' to the name of the
-file with mail aliases.  If `nil', `~/.mailrc' is used.
-
-   Your `.mailrc' file ensures that word-abbrevs are defined for each
-of your mail aliases when point is in a `To', `CC', `BCC', or `From'
-field.  The aliases are defined in your `.mailrc' file or in a file
-specified by the MAILRC environment variable if it exists.  Your mail
-aliases expand any time you type a word-delimiter at the end of an
-abbreviation.
-
-   In this version of Emacs, what you see is what you get: in contrast
-to some other versions, no abbreviations are expanded after you have
-sent the mail.  This means you don't suffer the annoyance of having the
-system do things behind your back -- if the system rewrites an address
-you typed, you know it immediately, instead of after the mail has been
-sent and it's too late to do anything about it.  For example, you will
-never again be in trouble because you forgot to delete an old alias
-from your `.mailrc' and a new local user is given a userid which
-conflicts with one of your aliases.
-
-   Your mail alias abbrevs are in effect only when point is in an
-appropriate header field. The mail aliases will not expand in the body
-of the message, or in other header fields.  The default mode-specific
-abbrev table `mail-mode-abbrev-table' is used instead if defined.  That
-means if you have been using mail-mode specific abbrevs, this code will
-not adversely affect you.  You can control which header fields the
-abbrevs are used in by changing the variable `mail-abbrev-mode-regexp'.
-
-   If auto-fill mode is on, abbrevs wrap at commas instead of at word
-boundaries, and header continuation lines will be properly indented.
-
-   You can also insert a mail alias with
-`mail-interactive-insert-alias'.  This function, which is bound to `C-c
-C-a', prompts you for an alias (with completion) and inserts its
-expansion at point.
-
-   In this version of Emacs, it is possible to have lines like the
-following in your `.mailrc' file:
-
-          alias someone "John Doe <doe@quux.com>"
-
-   That is, if you want an address to have embedded spaces, simply
-surround it with double-quotes.  The quotes are necessary because the
-format of the `.mailrc' file uses spaces as address delimiters.
-
-   Aliases in the `.mailrc' file may be nested. For example, assume you
-define aliases like:
-          alias group1 fred ethel
-          alias group2 larry curly moe
-          alias everybody group1 group2
-
-   When you now type `everybody' on the `To' line, it will expand to:
-          fred, ethyl, larry, curly, moe
-
-   Aliases may contain forward references; the alias of `everybody' in
-the example above can precede the aliases of `group1' and `group2'.
-
-   In this version of Emacs, you can use the `source' `.mailrc' command
-for reading aliases from some other file as well.
-
-   Aliases may contain hyphens, as in `"alias foo-bar foo@bar"', even
-though word-abbrevs normally cannot contain hyphens.
-
-   To read in the contents of another `.mailrc'-type file from Emacs,
-use the command `M-x merge-mail-aliases'.  The `rebuild-mail-aliases'
-command is similar, but deletes existing aliases first.
-
-   If you want multiple addresses separated by a string other than `,'
-(a comma), then set the variable `mail-alias-seperator-string' to it.
-This has to be a comma bracketed by whitespace if you want any kind  of
-reasonable behavior.
-
-   If the variable `mail-archive-file-name' is non-`nil', it should be
-a string naming a file.  Each time you start to edit a message to send,
-an `FCC' field is entered for that file.  Unless you remove the `FCC'
-field, every message is written into that file when it is sent.
 
 \1f
-File: xemacs.info,  Node: Mail Mode,  Prev: Mail Headers,  Up: Sending Mail
-
-Mail Mode
-=========
-
-   The major mode used in the `*mail*' buffer is Mail mode.  Mail mode
-is similar to Text mode, but several commands are provided on the `C-c'
-prefix.  These commands all deal specifically with editing or sending
-the message.
-
-`C-c C-s'
-     Send the message, and leave the `*mail*' buffer selected
-     (`mail-send').
-
-`C-c C-c'
-     Send the message, and select some other buffer
-     (`mail-send-and-exit').
-
-`C-c C-f C-t'
-     Move to the `To' header field, creating one if there is none
-     (`mail-to').
-
-`C-c C-f C-s'
-     Move to the `Subject' header field, creating one if there is none
-     (`mail-subject').
-
-`C-c C-f C-c'
-     Move to the `CC' header field, creating one if there is none
-     (`mail-cc').
-
-`C-c C-w'
-     Insert the file `~/.signature' at the end of the message text
-     (`mail-signature').
-
-`C-c C-y'
-     Yank the selected message (`mail-yank-original').
-
-`C-c C-q'
-     Fill all paragraphs of yanked old messages, each individually
-     (`mail-fill-yanked-message').
-
-`<button3>'
-     Pops up a menu of useful mail-mode commands.
-
-   There are two ways to send a message.  `C-c C-c'
-(`mail-send-and-exit') is the usual way to send the message.  It sends
-the message and then deletes the window (if there is another window) or
-switches to another buffer.  It puts the `*mail*' buffer at the lowest
-priority for automatic reselection, since you are finished with using
-it.  `C-c C-s' (`mail-send') sends the message and marks the `*mail*'
-buffer unmodified, but leaves that buffer selected so that you can
-modify the message (perhaps with new recipients) and send it again.
-
-   Mail mode provides some other special commands that are useful for
-editing the headers and text of the message before you send it.  There
-are three commands defined to move point to particular header fields,
-all based on the prefix `C-c C-f' (`C-f' is for "field").  They are
-`C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c C-f C-s'
-(`mail-subject') for the `Subject' field, and `C-c C-f C-c' (`mail-cc')
-for the `CC' field.  These fields have special motion commands because
-they are edited most frequently.
-
-   `C-c C-w' (`mail-signature') adds a standard piece of text at the
-end of the message to say more about who you are.  The text comes from
-the file `.signature' in your home directory.
-
-   When you use an Rmail command to send mail from the Rmail mail
-reader, you can use `C-c C-y' `mail-yank-original' inside the `*mail*'
-buffer to insert the text of the message you are replying to.  Normally
-Rmail indents each line of that message four spaces and eliminates most
-header fields.  A numeric argument specifies the number of spaces to
-indent.  An argument of just `C-u' says not to indent at all and not to
-eliminate anything.  `C-c C-y' always uses the current message from the
-`RMAIL' buffer, so you can insert several old messages by selecting one
-in `RMAIL', switching to `*mail*' and yanking it, then switching back
-to `RMAIL' to select another.
-
-   After using `C-c C-y', you can use the command `C-c C-q'
-(`mail-fill-yanked-message') to fill the paragraphs of the yanked old
-message or messages.  One use of `C-c C-q' fills all such paragraphs,
-each one separately.
-
-   Clicking the right mouse button in a mail buffer pops up a menu of
-the above commands, for easy access.
-
-   Turning on Mail mode (which `C-x m' does automatically) calls the
-value of `text-mode-hook', if it is not void or `nil', and then calls
-the value of `mail-mode-hook' if that is not void or `nil'.
+File: xemacs.info,  Node: Building Packages,  Next: Creating Packages,  Prev: Using Packages,  Up: Packages
+
+   Source packages are available from the `packages/source-packages'
+subdirectory of your favorite XEmacs distribution site.  Alternatively,
+they are available via CVS from `cvs.xemacs.org'.  Look at
+`http://cvs.xemacs.org' for instructions.
+
+Prerequisites for Building Source Packages
+------------------------------------------
+
+   You must have GNU `cp', GNU `install' (or a BSD compatible `install'
+program) GNU `make' (3.75 or later preferred), `makeinfo' (1.68 from
+`texinfo-3.11' or later required), GNU `tar' and XEmacs 21.0.  The
+source packages will untar into a correct directory structure.  At the
+top level you must have `XEmacs.rules' and `package-compile.el'.  These
+files are available from the XEmacs FTP site from the same place you
+obtained your source package distributions.
+
+What You Can Do With Source Packages
+------------------------------------
+
+   NB:  A global build operation doesn't exist yet as of 13 January
+1998.
+
+   Source packages are most useful for creating XEmacs package tarballs
+for installation into your own XEmacs installations or for distributing
+to others.
+
+   Supported operations from `make' are:
+
+`clean'
+     Remove all built files except `auto-autoloads.el' and
+     `custom-load.el'.
+
+`distclean'
+     Remove XEmacs backups as well as the files deleted by `make clean'.
+
+`all'
+     Bytecompile all files, build and bytecompile byproduct files like
+     `auto-autoloads.el' and `custom-load.el'.  Create info version of
+     TeXinfo documentation if present.
+
+`srckit'
+     Usually aliased to `srckit-std'.  This does a `make distclean' and
+     creates a package source tarball in the staging directory.  This
+     is generally only of use for package maintainers.
+
+`binkit'
+     May be aliased to `binkit-sourceonly', `binkit-sourceinfo',
+     `binkit-sourcedata', or `binkit-sourcedatainfo'. `sourceonly'
+     indicates there is nothing to install in a data directory or info
+     directory.  `sourceinfo' indicates that source and info files are
+     to be installed.  `sourcedata' indicates that source and etc
+     (data) files are to be installed.  `sourcedatainfo' indicates
+     source, etc (data), and info files are to be installed.  A few
+     packages have needs beyond the basic templates so this is not yet
+     complete.
+
+`dist'
+     Runs the rules `srckit' followed by `binkit'.  This is primarily
+     of use by XEmacs maintainers producing files for distribution.
 
 \1f
-File: xemacs.info,  Node: Reading Mail,  Next: Calendar/Diary,  Prev: Sending Mail,  Up: Top
-
-Reading Mail
-************
-
-   XEmacs provides three separate mail-reading packages.  Each one
-comes with its own manual, which is included standard with the XEmacs
-distribution.
-
-   The recommended mail-reading package for new users is VM.  VM works
-with standard Unix-mail-format folders and was designed as a replacement
-for the older Rmail.
-
-   XEmacs also provides a sophisticated and comfortable front-end to the
-MH mail-processing system, called `mh-e'.  Unlike in other mail
-programs, folders in MH are stored as file-system directories, with
-each message occupying one (numbered) file.  This facilitates working
-with mail using shell commands, and many other features of MH are also
-designed to integrate well with the shell and with shell scripts.  Keep
-in mind, however, that in order to use mh-e you must have the MH
-mail-processing system installed on your computer.
-
-   Finally, XEmacs provides the Rmail package.  Rmail is (currently) the
-only mail reading package distributed with FSF GNU Emacs, and is
-powerful in its own right.  However, it stores mail folders in a special
-format called `Babyl', that is incompatible with all other
-frequently-used mail programs.  A utility program is provided for
-converting Babyl folders to standard Unix-mail format; however, unless
-you already have mail in Babyl-format folders, you should consider
-using VM or mh-e instead. (If at times you have to use FSF Emacs, it is
-not hard to obtain and install VM for that editor.)
+File: xemacs.info,  Node: Creating Packages,  Next: Available Packages,  Prev: Building Packages,  Up: Packages
+
+   Creating a package from an existing Lisp library is not very
+difficult.
+
+   In addition to the Lisp libraries themselves, you need a
+`package-info.in' file and a simple `Makefile'.  The rest is done by
+`XEmacs.rules', part of the packaging system infrastructure.
+
+   `package-info.in' contains a single Lisp form like this:
+
+     (name                               ; your package's name
+       (standards-version 1.1
+        version VERSION
+        author-version AUTHOR_VERSION
+        date DATE
+        build-date BUILD_DATE
+        maintainer MAINTAINER
+        distribution xemacs              ; change to "mule" if MULE is needed
+        priority high
+        category CATEGORY
+        dump nil
+        description "description"        ; a one-line description string
+        filename FILENAME
+        md5sum MD5SUM
+        size SIZE
+        provides (feature1 feature2)     ; one for every `provides' form
+        requires (REQUIRES)
+        type regular
+     ))
+
+   You must fill in the four commented lines.  The value of `name' is
+the name of your package as an unquoted symbol.  Normally it is the name
+of the main Lisp file or principal feature provided.  The allowed values
+for distribution are `xemacs' and `mule'.  Write them as unquoted
+symbols.  The `description' is a quoted Lisp string; use the usual
+conventions.  The value for `provides' is a list of feature symbols
+(written unquoted).  All of the features provided by libraries in your
+package should be elements of this list.  Implementing an automatic
+method for generating the `provides' line is desirable, but as yet
+undone.
+
+   The variables in upper-case are references to variables set in the
+`Makefile' or automatically generated.  Do not change them; they are
+automatically filled in by the build process.
+
+   The remaining lines refer to implementation constants
+(`standards-version'), or features that are unimplemented or have been
+removed (`priority' and `dump').  The `type' line is not normally
+relevant to external maintainers; the alternate value is `single-file',
+which refers to packages consed up out of a number of single-file
+libraries that are more or less thematically related.  An example is
+`prog-modes'.  Single-file packages are basically for administrative
+convenience, and new packages should generally be created as regular
+packages.
+
+   The `Makefile' is quite stylized.  The idea is similar to an
+`Imakefile' or an `automake' file: the complexity is hidden in generic
+rules files, in this case the `XEmacs.rules' include file in the top
+directory of the packages hierarchy.  Although a number of facilities
+are available for complex libraries, most simple packages' `Makefile's
+contain a copyright notice, a few variable definitions, an include for
+`XEmacs.rules', and a couple of standard targets.
+
+   The first few `make' variables defined are `VERSION',
+`AUTHOR_VERSION', `MAINTAINER', `PACKAGE', `PKG_TYPE', `REQUIRES', and
+`CATEGORY'.  All but one were described in the description of
+`package-info.in'.  The last is an admistrative grouping.  Current
+categories include `comm', `games', `libs', `mule', `oa', `os', `prog',
+and `wp'.  *Note Available Packages::, for a list of categories.
+
+   Next, define the variable `ELCS'.  This contains the list of the
+byte-compiled Lisp files used by the package.  These files and their
+`.el' versions will be included in the binary package.  If there are
+other files (such as extra Lisp sources or an upstream `Makefile') that
+are normally placed in the installed Lisp directory, but not
+byte-compiled, they can be listed as the value of `EXTRA_SOURCES'.
+
+   The include is simply
+     include ../../XEmacs.rules
+
+   The standard targets follow.  These are
+
+     all:: $(ELCS) auto-autoloads.elc
+     
+     srckit: srckit-alias
+     
+     binkit: binkit-alias
+
+   Other targets (such as Texinfo sources) may need to be added as
+dependencies for the `all' target.  Dependencies for `srckit' and
+`binkit' (that is, values for SRCKIT-ALIAS and BINKIT-ALIAS) are
+defined in `XEmacs.rules'.  The most useful of these values are given
+in the following table.
+
+SRCKIT-ALIAS
+     Usually set to `srckit-std'.
+
+BINKIT-ALIAS
+     May be set to `binkit-sourceonly', `binkit-sourceinfo',
+     `binkit-sourcedata', or `binkit-sourcedatainfo'.  `sourceonly'
+     indicates there is nothing to install in a data directory or info
+     directory.  `sourceinfo' indicates that source and info files are
+     to be installed.  `sourcedata' indicates that source and etc
+     (data) files are to be installed.  `sourcedatainfo' indicates
+     source, etc (data), and info files are to be installed.
+
+   Data files include things like pixmaps for a package-specific
+toolbar, and are normally installed in `etc/PACKAGE_NAME'.  A few
+packages have needs beyond the basic templates.  See `XEmacs.rules' or
+a future revision of this manual for details.
 
 \1f
-File: xemacs.info,  Node: Calendar/Diary,  Next: Sorting,  Prev: Reading Mail,  Up: Top
-
-Calendar Mode and the Diary
-===========================
-
-   Emacs provides the functions of a desk calendar, with a diary of
-planned or past events.  To enter the calendar, type `M-x calendar';
-this displays a three-month calendar centered on the current month, with
-point on the current date.  With a numeric argument, as in `C-u M-x
-calendar', it prompts you for the month and year to be the center of the
-three-month calendar.  The calendar uses its own buffer, whose major
-mode is Calendar mode.
-
-   `Button2' in the calendar brings up a menu of operations on a
-particular date; `Buttons3' brings up a menu of commonly used calendar
-features that are independent of any particular date.  To exit the
-calendar, type `q'.  *Note Customizing the Calendar and Diary:
-(elisp)Calendar, for customization information about the calendar and
-diary.
+File: xemacs.info,  Node: Available Packages,  Prev: Creating Packages,  Up: Packages
 
-* Menu:
+   This section is surely out-of-date.  If you're sure that XEmacs is
+able to do something, but your installed XEmacs won't do it for you,
+it's probably in a package.  If you can't find it in this section,
+that's a bug--please report it.  It is very hard to keep this section
+up-to-date; your reports, comments, and questions will help a lot.
 
-* Calendar Motion::        Moving through the calendar; selecting a date.
-* Scroll Calendar::        Bringing earlier or later months onto the screen.
-* Mark and Region::        Remembering dates, the mark ring.
-* General Calendar::       Exiting or recomputing the calendar.
-* LaTeX Calendar::         Print a calendar using LaTeX.
-* Holidays::               Displaying dates of holidays.
-* Sunrise/Sunset::         Displaying local times of sunrise and sunset.
-* Lunar Phases::           Displaying phases of the moon.
-* Other Calendars::        Converting dates to other calendar systems.
-* Diary::                  Displaying events from your diary.
-* Calendar Customization:: Altering the behavior of the features above.
+   This data is up-to-date as of 10 February 1999.  (Ouch!  I told you!)
 
-\1f
-File: xemacs.info,  Node: Calendar Motion,  Next: Scroll Calendar,  Prev: Calendar/Diary,  Up: Calendar/Diary
+Library Packages (libs)
+-----------------------
 
-Movement in the Calendar
-------------------------
+   These packages are required to build and support most of the rest of
+XEmacs.  By design, xemacs-base is a `regular' package.  Use restraint
+when adding new files there as it is required by almost everything.
 
-   Calendar mode lets you move through the calendar in logical units of
-time such as days, weeks, months, and years.  If you move outside the
-three months originally displayed, the calendar display "scrolls"
-automatically through time to make the selected date visible.  Moving to
-a date lets you view its holidays or diary entries, or convert it to
-other calendars; moving longer time periods is also useful simply to
-scroll the calendar.
+`Sun'
+     Support for Sparcworks.
 
-* Menu:
+`apel'
+     A Portable Emacs Library.  Used by XEmacs MIME support.
 
-* Calendar Unit Motion::       Moving by days, weeks, months, and years.
-* Move to Beginning or End::   Moving to start/end of weeks, months, and years.
-* Specified Dates::            Moving to the current date or another
-                               specific date.
+`edebug'
+     A Lisp debugger.
 
-\1f
-File: xemacs.info,  Node: Calendar Unit Motion,  Next: Move to Beginning or End,  Prev: Calendar Motion,  Up: Calendar Motion
+`dired'
+     The DIRectory EDitor is for manipulating, and running commands on
+     files in a directory.
 
-Motion by Integral Days, Weeks, Months, Years
-.............................................
+`efs'
+     Treat files on remote systems the same as local files.
 
-   The commands for movement in the calendar buffer parallel the
-commands for movement in text.  You can move forward and backward by
-days, weeks, months, and years.
+`mail-lib'
+     Fundamental lisp files for providing email support.
 
-`C-f'
-     Move point one day forward (`calendar-forward-day').
+`tooltalk'
+     Support for building with Tooltalk.
 
-`C-b'
-     Move point one day backward (`calendar-backward-day').
+`xemacs-base'
+     Fundamental XEmacs support.  Install this unless you wish a totally
+     naked XEmacs.
 
-`C-n'
-     Move point one week forward (`calendar-forward-week').
+`xemacs-devel'
+     XEmacs Lisp developer support.  This package contains utilities for
+     supporting Lisp development.  It is a single-file package so it
+     may be tailored.
 
-`C-p'
-     Move point one week backward (`calendar-backward-week').
+Communications Packages (comm)
+------------------------------
 
-`M-}'
-     Move point one month forward (`calendar-forward-month').
+   These packages provide support for various communications, primarily
+email and usenet.
 
-`M-{'
-     Move point one month backward (`calendar-backward-month').
+`footnote'
+     Footnoting in mail message editing modes.
 
-`C-x ]'
-     Move point one year forward (`calendar-forward-year').
+`gnats'
+     XEmacs bug reports.
 
-`C-x ['
-     Move point one year backward (`calendar-backward-year').
+`gnus'
+     The Gnus Newsreader and Mailreader.
 
-   The day and week commands are natural analogues of the usual Emacs
-commands for moving by characters and by lines.  Just as `C-n' usually
-moves to the same column in the following line, in Calendar mode it
-moves to the same day in the following week.  And `C-p' moves to the
-same day in the previous week.
+`mailcrypt'
+     Support for messaging encryption with PGP.
 
-   The arrow keys are equivalent to `C-f', `C-b', `C-n' and `C-p', just
-as they normally are in other modes.
+`mh-e'
+     Front end support for MH.
 
-   The commands for motion by months and years work like those for
-weeks, but move a larger distance.  The month commands `M-}' and `M-{'
-move forward or backward by an entire month's time.  The year commands
-`C-x ]' and `C-x [' move forward or backward a whole year.
+`net-utils'
+     Miscellaneous Networking Utilities.  This is a single-file package
+     and files may be deleted at will.
 
-   The easiest way to remember these commands is to consider months and
-years analogous to paragraphs and pages of text, respectively.  But the
-commands themselves are not quite analogous.  The ordinary Emacs
-paragraph commands move to the beginning or end of a paragraph, whereas
-these month and year commands move by an entire month or an entire
-year, which usually involves skipping across the end of a month or year.
+`ph'
+     Emacs implementation of the ph client to CCSO/qi directory servers.
 
-   All these commands accept a numeric argument as a repeat count.  For
-convenience, the digit keys and the minus sign specify numeric
-arguments in Calendar mode even without the Meta modifier.  For example,
-`100 C-f' moves point 100 days forward from its present location.
+`rmail'
+     An obsolete Emacs mailer.  If you do not already use it don't
+     start.
 
-\1f
-File: xemacs.info,  Node: Move to Beginning or End,  Next: Specified Dates,  Prev: Calendar Unit Motion,  Up: Calendar Motion
+`supercite'
+     An Emacs citation tool.  Useful with all Emacs Mailers and
+     Newsreaders.
 
-Beginning or End of Week, Month or Year
-.......................................
+`tm'
+     Emacs MIME support.
 
-   A week (or month, or year) is not just a quantity of days; we think
-of weeks (months, years) as starting on particular dates.  So Calendar
-mode provides commands to move to the beginning or end of a week, month
-or year:
+`vm'
+     An Emacs mailer.
 
-`C-a'
-     Move point to start of week (`calendar-beginning-of-week').
+`w3'
+     A Web browser.
 
-`C-e'
-     Move point to end of week (`calendar-end-of-week').
+Games and Amusements (games)
+----------------------------
 
-`M-a'
-     Move point to start of month (`calendar-beginning-of-month').
+`cookie'
+     Spook and Yow (Zippy quotes).
 
-`M-e'
-     Move point to end of month (`calendar-end-of-month').
+`games'
+     Tetris, Sokoban, and Snake.
 
-`M-<'
-     Move point to start of year (`calendar-beginning-of-year').
+`mine'
+     Minehunt.
 
-`M->'
-     Move point to end of year (`calendar-end-of-year').
+`misc-games'
+     Other amusements and diversions.
 
-   These commands also take numeric arguments as repeat counts, with the
-repeat count indicating how many weeks, months, or years to move
-backward or forward.
+Mule Support (mule)
+-------------------
 
-   By default, weeks begin on Sunday.  To make them begin on Monday
-instead, set the variable `calendar-week-start-day' to 1.
+`egg-its'
+     Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
+     XEmacs build.
 
-\1f
-File: xemacs.info,  Node: Specified Dates,  Prev: Move to Beginning or End,  Up: Calendar Motion
+`leim'
+     Quail.  Used for everything other than English and Japanese.
 
-Particular Dates
-................
+`locale'
+     Used for localized menubars (French and Japanese) and localized
+     splash screens (Japanese).
 
-   Calendar mode provides commands for moving to a particular date
-specified in various ways.
+`mule-base'
+     Basic Mule support.  Must be installed prior to building with Mule.
 
-`g d'
-     Move point to specified date (`calendar-goto-date').
+`skk'
+     Another Japanese Language Input Method.  Can be used without a
+     separate process running as a dictionary server.
 
-`o'
-     Center calendar around specified month (`calendar-other-month').
+Productivity Packages (oa)
+--------------------------
 
-`.'
-     Move point to today's date (`calendar-goto-today').
+`calendar'
+     Calendar and diary support.
 
-   `g d' (`calendar-goto-date') prompts for a year, a month, and a day
-of the month, and then moves to that date.  Because the calendar
-includes all dates from the beginning of the current era, you must type
-the year in its entirety; that is, type `1990', not `90'.
+`edit-utils'
+     Single file lisp packages for various XEmacs goodies.  Load this
+     and weed out the junk you don't want.
 
-   `o' (`calendar-other-month') prompts for a month and year, then
-centers the three-month calendar around that month.
+`forms'
+     Forms editing support (obsolete, use the builtin Widget instead).
 
-   You can return to today's date with `.'  (`calendar-goto-today').
+`frame-icon'
+     Provide a WM icon based on major mode.
 
-\1f
-File: xemacs.info,  Node: Scroll Calendar,  Next: Mark and Region,  Prev: Calendar Motion,  Up: Calendar/Diary
-
-Scrolling the Calendar through Time
------------------------------------
-
-   The calendar display scrolls automatically through time when you
-move out of the visible portion.  You can also scroll it manually.
-Imagine that the calendar window contains a long strip of paper with
-the months on it.  Scrolling it means moving the strip so that new
-months become visible in the window.
-
-`C-x <'
-     Scroll calendar one month forward (`scroll-calendar-left').
-
-`C-x >'
-     Scroll calendar one month backward (`scroll-calendar-right').
-
-`C-v'
-`<NEXT>'
-     Scroll calendar three months forward
-     (`scroll-calendar-left-three-months').
-
-`M-v'
-`<PRIOR>'
-     Scroll calendar three months backward
-     (`scroll-calendar-right-three-months').
-
-   The most basic calendar scroll commands scroll by one month at a
-time.  This means that there are two months of overlap between the
-display before the command and the display after.  `C-x <' scrolls the
-calendar contents one month to the left; that is, it moves the display
-forward in time.  `C-x >' scrolls the contents to the right, which
-moves backwards in time.
-
-   The commands `C-v' and `M-v' scroll the calendar by an entire
-"screenful"--three months--in analogy with the usual meaning of these
-commands.  `C-v' makes later dates visible and `M-v' makes earlier
-dates visible.  These commands take a numeric argument as a repeat
-count; in particular, since `C-u' multiplies the next command by four,
-typing `C-u C-v' scrolls the calendar forward by a year and typing `C-u
-M-v' scrolls the calendar backward by a year.
-
-   The function keys <NEXT> and <PRIOR> are equivalent to `C-v' and
-`M-v', just as they are in other modes.
+`hm--html-menus'
+     HTML editing.
 
-\1f
-File: xemacs.info,  Node: Mark and Region,  Next: General Calendar,  Prev: Scroll Calendar,  Up: Calendar/Diary
+`ispell'
+     Spell-checking with ispell.
 
-The Mark and the Region
------------------------
+`pc'
+     PC style interface emulation.
 
-   The concept of the mark applies to the calendar just as to any other
-buffer, but it marks a *date*, not a *position* in the buffer.  The
-region consists of the days between the mark and point (including the
-starting and stopping dates).
-
-`C-SPC'
-     Set the mark to today's date (`calendar-set-mark').
-
-`C-@'
-     The same.
-
-`C-x C-x'
-     Interchange mark and point (`calendar-exchange-point-and-mark').
-
-`M-='
-     Display the number of days in the current region
-     (`calendar-count-days-region').
-
-   You set the mark in the calendar, as in any other buffer, by using
-`C-@' or `C-SPC' (`calendar-set-mark').  You return to the marked date
-with the command `C-x C-x' (`calendar-exchange-point-and-mark') which
-puts the mark where point was and point where mark was.  The calendar
-is scrolled as necessary, if the marked date was not visible on the
-screen.  This does not change the extent of the region.
-
-   To determine the number of days in the region, type `M-='
-(`calendar-count-days-region').  The numbers of days printed is
-*inclusive*; that is, it includes the days specified by mark and point.
-
-   The main use of the mark in the calendar is to remember dates that
-you may want to go back to.  To make this feature more useful, the mark
-ring (*note Mark Ring::.) operates exactly as in other buffers:  Emacs
-remembers 16 previous locations of the mark.  To return to a marked
-date, type `C-u C-SPC' (or `C-u C-@'); this is the command
-`calendar-set-mark' given a numeric argument.  It moves point to where
-the mark was, restores the mark from the ring of former marks, and
-stores the previous point at the end of the mark ring.  So, repeated
-use of this command moves point through all the old marks on the ring,
-one by one.
+`psgml'
+     Validated HTML/SGML editing.
 
-\1f
-File: xemacs.info,  Node: General Calendar,  Next: LaTeX Calendar,  Prev: Mark and Region,  Up: Calendar/Diary
+`sgml'
+     SGML/Linuxdoc-SGML editing.
 
-Miscellaneous Calendar Commands
--------------------------------
+`slider'
+     User interface tool.
 
-`p d'
-     Display day-in-year (`calendar-print-day-of-year').
+`speedbar'
+     ??? Document me.
 
-`?'
-     Briefly describe calendar commands (`describe-calendar-mode').
+`strokes'
+     Mouse enhancement utility.
 
-`C-c C-l'
-     Regenerate the calendar window (`redraw-calendar').
+`text-modes'
+     Various single file lisp packages for editing text files.
 
-`SPC'
-     Scroll the next window (`scroll-other-window').
+`time'
+     Display time & date on the modeline.
 
-`q'
-     Exit from calendar (`exit-calendar').
+Operating System Utilities (os)
+-------------------------------
 
-   If you want to know how many days have elapsed since the start of
-the year, or the number of days remaining in the year, type the `p d'
-command (`calendar-print-day-of-year').  This displays both of those
-numbers in the echo area.
+`eterm'
+     Terminal emulator.
 
-   To display a brief description of the calendar commands, type `?'
-(`describe-calendar-mode').  For a fuller description, type `C-h m'.
+`igrep'
+     Enhanced front-end for Grep.
 
-   You can use `SPC' (`scroll-other-window') to scroll the other
-window.  This is handy when you display a list of holidays or diary
-entries in another window.
+`ilisp'
+     Front-end for Inferior Lisp.
 
-   If the calendar window text gets corrupted, type `C-c C-l'
-(`redraw-calendar') to redraw it.  (This can only happen if you use
-non-Calendar-mode editing commands.)
+`os-utils'
+     Miscellaneous single-file O/S utilities, for printing, archiving,
+     compression, remote shells, etc.
 
-   In Calendar mode, you can use `SPC' (`scroll-other-window') to
-scroll the other window.  This is handy when you display a list of
-holidays or diary entries in another window.
+`view-process'
+     A Unix process browsing tool.
 
-   To exit from the calendar, type `q' (`exit-calendar').  This buries
-all buffers related to the calendar, selecting other buffers.  (If a
-frame contains a dedicated calendar window, exiting from the calendar
-iconifies that frame.)
+Program Editing Support (prog)
+------------------------------
 
-\1f
-File: xemacs.info,  Node: LaTeX Calendar,  Next: Holidays,  Prev: General Calendar,  Up: Calendar/Diary
+`ada'
+     Ada language support.
 
-LaTeX Calendar
-==============
+`c-support'
+     Basic single-file add-ons for editing C code.
 
-   The Calendar LaTeX commands produce a buffer of LaTeX code that
-prints as a calendar.  Depending on the command you use, the printed
-calendar covers the day, week, month or year that point is in.
+`cc-mode'
+     C, C++ and Java language support.
 
-`t m'
-     Generate a one-month calendar (`cal-tex-cursor-month').
+`debug'
+     GUD, gdb, dbx debugging support.
 
-`t M'
-     Generate a sideways-printing one-month calendar
-     (`cal-tex-cursor-month-landscape').
+`ediff'
+     Interface over patch.
 
-`t d'
-     Generate a one-day calendar (`cal-tex-cursor-day').
+`emerge'
+     Another interface over patch.
 
-`t w 1'
-     Generate a one-page calendar for one week (`cal-tex-cursor-week').
+`pcl-cvs'
+     CVS frontend.
 
-`t w 2'
-     Generate a two-page calendar for one week (`cal-tex-cursor-week2').
+`prog-modes'
+     Miscellaneous Lisp libraries for various programming languages.
 
-`t w 3'
-     Generate an ISO-style calendar for one week
-     (`cal-tex-cursor-week-iso').
+`scheme'
+     Front-end support for Inferior Scheme.
 
-`t w 4'
-     Generate a calendar for one Monday-starting week
-     (`cal-tex-cursor-week-monday').
+`sh-script'
+     Support for editing shell scripts.
 
-`t f w'
-     Generate a Filofax-style two-weeks-at-a-glance calendar
-     (`cal-tex-cursor-filofax-2week').
+`vc'
+     Version control for free systems.
 
-`t f W'
-     Generate a Filofax-style one-week-at-a-glance calendar
-     (`cal-tex-cursor-filofax-week').
+`vc-cc'
+     Version control for ClearCase.
 
-`t y'
-     Generate a calendar for one year (`cal-tex-cursor-year').
+`vhdl'
+     Support for VHDL.
 
-`t Y'
-     Generate a sideways-printing calendar for one year
-     (`cal-tex-cursor-year-landscape').
+Word Processing (wp)
+--------------------
 
-`t f y'
-     Generate a Filofax-style calendar for one year
-     (`cal-tex-cursor-filofax-year').
+`auctex'
+     Basic TeX/LaTeX support.
 
-   Some of these commands print the calendar sideways (in "landscape
-mode"), so it can be wider than it is long.  Some of them use Filofax
-paper size (3.75in x 6.75in).  All of these commands accept a prefix
-argument which specifies how many days, weeks, months or years to print
-(starting always with the selected one).
+`crisp'
+     Crisp/Brief emulation.
 
-   If the variable `cal-tex-holidays' is non-`nil' (the default), then
-the printed calendars show the holidays in `calendar-holidays'.  If the
-variable `cal-tex-diary' is non-`nil' (the default is `nil'), diary
-entries are included also (in weekly and monthly calendars only).
+`edt'
+     DEC EDIT/EDT emulation.
 
-\1f
-File: xemacs.info,  Node: Holidays,  Next: Sunrise/Sunset,  Prev: LaTeX Calendar,  Up: Calendar/Diary
+`texinfo'
+     XEmacs TeXinfo support.
 
-Holidays
---------
+`textools'
+     Single-file TeX support.
 
-   The Emacs calendar knows about all major and many minor holidays,
-and can display them.
+`tpu'
+     DEC EDIT/TPU support.
 
-`h'
-     Display holidays for the selected date
-     (`calendar-cursor-holidays').
+`viper'
+     VI emulation support.
 
-`Button2 Holidays'
-     Display any holidays for the date you click on.
+\1f
+File: xemacs.info,  Node: Abbrevs,  Next: Picture,  Prev: Running,  Up: Top
+
+Abbrevs
+*******
+
+   An "abbrev" is a word which "expands" into some different text.
+Abbrevs are defined by the user to expand in specific ways.  For
+example, you might define `foo' as an abbrev expanding to `find outer
+otter'.  With this abbrev defined, you would be able to get `find outer
+otter ' into the buffer by typing `f o o <SPC>'.
+
+   Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
+Disabling Abbrev mode does not cause abbrev definitions to be discarded,
+but they do not expand until Abbrev mode is enabled again.  The command
+`M-x abbrev-mode' toggles Abbrev mode; with a numeric argument, it
+turns Abbrev mode on if the argument is positive, off otherwise.  *Note
+Minor Modes::.  `abbrev-mode' is also a variable; Abbrev mode is on
+when the variable is non-`nil'.  The variable `abbrev-mode'
+automatically becomes local to the current buffer when it is set.
+
+   Abbrev definitions can be "mode-specific"--active only in one major
+mode.  Abbrevs can also have "global" definitions that are active in
+all major modes.  The same abbrev can have a global definition and
+various mode-specific definitions for different major modes.  A
+mode-specific definition for the current major mode overrides a global
+definition.
+
+   You can define Abbrevs interactively during an editing session.  You
+can also save lists of abbrev definitions in files and reload them in
+later sessions.  Some users keep extensive lists of abbrevs that they
+load in every session.
+
+   A second kind of abbreviation facility is called the "dynamic
+expansion".  Dynamic abbrev expansion happens only when you give an
+explicit command and the result of the expansion depends only on the
+current contents of the buffer.  *Note Dynamic Abbrevs::.
 
-`x'
-     Mark holidays in the calendar window (`mark-calendar-holidays').
+* Menu:
 
-`u'
-     Unmark calendar window (`calendar-unmark').
-
-`a'
-     List all holidays for the displayed three months in another window
-     (`list-calendar-holidays').
-
-`M-x holidays'
-     List all holidays for three months around today's date in another
-     window.
-
-`M-x list-holidays'
-     List holidays in another window for a specified range of years.
-
-   To see if any holidays fall on a given date, position point on that
-date in the calendar window and use the `h' command.  Alternatively,
-click on that date with `Button2' and then choose `Holidays' from the
-menu that appears.  Either way, this displays the holidays for that
-date, in the echo area if they fit there, otherwise in a separate
-window.
-
-   To view the distribution of holidays for all the dates shown in the
-calendar, use the `x' command.  This displays the dates that are
-holidays in a different face (or places a `*' after these dates, if
-display with multiple faces is not available). The command applies both
-to the currently visible months and to other months that subsequently
-become visible by scrolling.  To turn marking off and erase the current
-marks, type `u', which also erases any diary marks (*note Diary::.).
-
-   To get even more detailed information, use the `a' command, which
-displays a separate buffer containing a list of all holidays in the
-current three-month range.  You can use <SPC> in the calendar window to
-scroll that list.
-
-   The command `M-x holidays' displays the list of holidays for the
-current month and the preceding and succeeding months; this works even
-if you don't have a calendar window.  If you want the list of holidays
-centered around a different month, use `C-u M-x holidays', which
-prompts for the month and year.
-
-   The holidays known to Emacs include United States holidays and the
-major Christian, Jewish, and Islamic holidays; also the solstices and
-equinoxes.
-
-   The command `M-x list-holidays' displays the list of holidays for a
-range of years.  This function asks you for the starting and stopping
-years, and allows you to choose all the holidays or one of several
-categories of holidays.  You can use this command even if you don't have
-a calendar window.
-
-   The dates used by Emacs for holidays are based on *current
-practice*, not historical fact.  Historically, for instance, the start
-of daylight savings time and even its existence have varied from year to
-year, but present United States law mandates that daylight savings time
-begins on the first Sunday in April.  When the daylight savings rules
-are set up for the United States, Emacs always uses the present
-definition, even though it is wrong for some prior years.
+* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
+* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
+* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
+* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
+* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
+
+\1f
+File: xemacs.info,  Node: Defining Abbrevs,  Next: Expanding Abbrevs,  Prev: Abbrevs,  Up: Abbrevs
+
+Defining Abbrevs
+================
+
+`C-x a g'
+     Define an abbrev to expand into some text before point
+     (`add-global-abbrev').
+
+`C-x a l'
+     Similar, but define an abbrev available only in the current major
+     mode (`add-mode-abbrev').
+
+`C-x a i g'
+     Define a word in the buffer as an abbrev
+     (`inverse-add-global-abbrev').
+
+`C-x a i l'
+     Define a word in the buffer as a mode-specific abbrev
+     (`inverse-add-mode-abbrev').
+
+`M-x kill-all-abbrevs'
+     After this command, no abbrev definitions remain in effect.
+
+   The usual way to define an abbrev is to enter the text you want the
+abbrev to expand to, position point after it, and type `C-x a g'
+(`add-global-abbrev').  This reads the abbrev itself using the
+minibuffer, and then defines it as an abbrev for one or more words
+before point.  Use a numeric argument to say how many words before point
+should be taken as the expansion.  For example, to define the abbrev
+`foo' as in the example above, insert the text `find outer otter', then
+type
+`C-u 3 C-x a g f o o <RET>'.
+
+   An argument of zero to `C-x a g' means to use the contents of the
+region as the expansion of the abbrev being defined.
+
+   The command `C-x a l' (`add-mode-abbrev') is similar, but defines a
+mode-specific abbrev.  Mode-specific abbrevs are active only in a
+particular major mode.  `C-x a l' defines an abbrev for the major mode
+in effect at the time `C-x a l' is typed.  The arguments work the same
+way they do for `C-x a g'.
+
+   If the text of an abbrev you want is already in the buffer instead of
+the expansion, use command `C-x a i g' (`inverse-add-global-abbrev')
+instead of `C-x a g', or use `C-x a i l' (`inverse-add-mode-abbrev')
+instead of `C-x a l'.  These commands are called "inverse" because they
+invert the meaning of the argument found in the buffer and the argument
+read using the minibuffer.
+
+   To change the definition of an abbrev, just add the new definition.
+You will be asked to confirm if the abbrev has a prior definition.  To
+remove an abbrev definition, give a negative argument to `C-x a g' or
+`C-x a l'.  You must choose the command to specify whether to kill a
+global definition or a mode-specific definition for the current mode,
+since those two definitions are independent for one abbrev.
+
+   `M-x kill-all-abbrevs' removes all existing abbrev definitions.