Merge r21-4-11-chise-0_20-=ucs.
[chise/xemacs-chise.git.1] / info / lispref.info-12
diff --git a/info/lispref.info-12 b/info/lispref.info-12
deleted file mode 100644 (file)
index 994bfc1..0000000
+++ /dev/null
@@ -1,1179 +0,0 @@
-This is Info file ../../info/lispref.info, produced by Makeinfo version
-1.68 from the input file lispref.texi.
-
-INFO-DIR-SECTION XEmacs Editor
-START-INFO-DIR-ENTRY
-* Lispref: (lispref).          XEmacs Lisp Reference Manual.
-END-INFO-DIR-ENTRY
-
-   Edition History:
-
-   GNU Emacs Lisp Reference Manual Second Edition (v2.01), May 1993 GNU
-Emacs Lisp Reference Manual Further Revised (v2.02), August 1993 Lucid
-Emacs Lisp Reference Manual (for 19.10) First Edition, March 1994
-XEmacs Lisp Programmer's Manual (for 19.12) Second Edition, April 1995
-GNU Emacs Lisp Reference Manual v2.4, June 1995 XEmacs Lisp
-Programmer's Manual (for 19.13) Third Edition, July 1995 XEmacs Lisp
-Reference Manual (for 19.14 and 20.0) v3.1, March 1996 XEmacs Lisp
-Reference Manual (for 19.15 and 20.1, 20.2, 20.3) v3.2, April, May,
-November 1997 XEmacs Lisp Reference Manual (for 21.0) v3.3, April 1998
-
-   Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Free Software
-Foundation, Inc.  Copyright (C) 1994, 1995 Sun Microsystems, Inc.
-Copyright (C) 1995, 1996 Ben Wing.
-
-   Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-   Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-   Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-   Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
-
-   Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public License"
-may be included in a translation approved by the Free Software
-Foundation instead of in the original English.
-
-\1f
-File: lispref.info,  Node: Autoload,  Next: Repeated Loading,  Prev: How Programs Do Loading,  Up: Loading
-
-Autoload
-========
-
-   The "autoload" facility allows you to make a function or macro known
-in Lisp, but put off loading the file that defines it.  The first call
-to the function automatically reads the proper file to install the real
-definition and other associated code, then runs the real definition as
-if it had been loaded all along.
-
-   There are two ways to set up an autoloaded function: by calling
-`autoload', and by writing a special "magic" comment in the source
-before the real definition.  `autoload' is the low-level primitive for
-autoloading; any Lisp program can call `autoload' at any time.  Magic
-comments do nothing on their own; they serve as a guide for the command
-`update-file-autoloads', which constructs calls to `autoload' and
-arranges to execute them when Emacs is built.  Magic comments are the
-most convenient way to make a function autoload, but only for packages
-installed along with Emacs.
-
- - Function: autoload FUNCTION FILENAME &optional DOCSTRING INTERACTIVE
-          TYPE
-     This function defines the function (or macro) named FUNCTION so as
-     to load automatically from FILENAME.  The string FILENAME
-     specifies the file to load to get the real definition of FUNCTION.
-
-     The argument DOCSTRING is the documentation string for the
-     function.  Normally, this is the identical to the documentation
-     string in the function definition itself.  Specifying the
-     documentation string in the call to `autoload' makes it possible
-     to look at the documentation without loading the function's real
-     definition.
-
-     If INTERACTIVE is non-`nil', then the function can be called
-     interactively.  This lets completion in `M-x' work without loading
-     the function's real definition.  The complete interactive
-     specification need not be given here; it's not needed unless the
-     user actually calls FUNCTION, and when that happens, it's time to
-     load the real definition.
-
-     You can autoload macros and keymaps as well as ordinary functions.
-     Specify TYPE as `macro' if FUNCTION is really a macro.  Specify
-     TYPE as `keymap' if FUNCTION is really a keymap.  Various parts of
-     Emacs need to know this information without loading the real
-     definition.
-
-     An autoloaded keymap loads automatically during key lookup when a
-     prefix key's binding is the symbol FUNCTION.  Autoloading does not
-     occur for other kinds of access to the keymap.  In particular, it
-     does not happen when a Lisp program gets the keymap from the value
-     of a variable and calls `define-key'; not even if the variable
-     name is the same symbol FUNCTION.
-
-     If FUNCTION already has a non-void function definition that is not
-     an autoload object, `autoload' does nothing and returns `nil'.  If
-     the function cell of FUNCTION is void, or is already an autoload
-     object, then it is defined as an autoload object like this:
-
-          (autoload FILENAME DOCSTRING INTERACTIVE TYPE)
-
-     For example,
-
-          (symbol-function 'run-prolog)
-               => (autoload "prolog" 169681 t nil)
-
-     In this case, `"prolog"' is the name of the file to load, 169681
-     refers to the documentation string in the `DOC' file (*note
-     Documentation Basics::.), `t' means the function is interactive,
-     and `nil' that it is not a macro or a keymap.
-
-   The autoloaded file usually contains other definitions and may
-require or provide one or more features.  If the file is not completely
-loaded (due to an error in the evaluation of its contents), any function
-definitions or `provide' calls that occurred during the load are
-undone.  This is to ensure that the next attempt to call any function
-autoloading from this file will try again to load the file.  If not for
-this, then some of the functions in the file might appear defined, but
-they might fail to work properly for the lack of certain subroutines
-defined later in the file and not loaded successfully.
-
-   XEmacs as distributed comes with many autoloaded functions.  The
-calls to `autoload' are in the file `loaddefs.el'.  There is a
-convenient way of updating them automatically.
-
-   If the autoloaded file fails to define the desired Lisp function or
-macro, then an error is signaled with data `"Autoloading failed to
-define function FUNCTION-NAME"'.
-
-   A magic autoload comment looks like `;;;###autoload', on a line by
-itself, just before the real definition of the function in its
-autoloadable source file.  The command `M-x update-file-autoloads'
-writes a corresponding `autoload' call into `loaddefs.el'.  Building
-Emacs loads `loaddefs.el' and thus calls `autoload'.  `M-x
-update-directory-autoloads' is even more powerful; it updates autoloads
-for all files in the current directory.
-
-   The same magic comment can copy any kind of form into `loaddefs.el'.
-If the form following the magic comment is not a function definition,
-it is copied verbatim.  You can also use a magic comment to execute a
-form at build time *without* executing it when the file itself is
-loaded.  To do this, write the form "on the same line" as the magic
-comment.  Since it is in a comment, it does nothing when you load the
-source file; but `update-file-autoloads' copies it to `loaddefs.el',
-where it is executed while building Emacs.
-
-   The following example shows how `doctor' is prepared for autoloading
-with a magic comment:
-
-     ;;;###autoload
-     (defun doctor ()
-       "Switch to *doctor* buffer and start giving psychotherapy."
-       (interactive)
-       (switch-to-buffer "*doctor*")
-       (doctor-mode))
-
-Here's what that produces in `loaddefs.el':
-
-     (autoload 'doctor "doctor"
-       "\
-     Switch to *doctor* buffer and start giving psychotherapy."
-       t)
-
-The backslash and newline immediately following the double-quote are a
-convention used only in the preloaded Lisp files such as `loaddefs.el';
-they tell `make-docfile' to put the documentation string in the `DOC'
-file.  *Note Building XEmacs::.
-
-\1f
-File: lispref.info,  Node: Repeated Loading,  Next: Named Features,  Prev: Autoload,  Up: Loading
-
-Repeated Loading
-================
-
-   You may load one file more than once in an Emacs session.  For
-example, after you have rewritten and reinstalled a function definition
-by editing it in a buffer, you may wish to return to the original
-version; you can do this by reloading the file it came from.
-
-   When you load or reload files, bear in mind that the `load' and
-`load-library' functions automatically load a byte-compiled file rather
-than a non-compiled file of similar name.  If you rewrite a file that
-you intend to save and reinstall, remember to byte-compile it if
-necessary; otherwise you may find yourself inadvertently reloading the
-older, byte-compiled file instead of your newer, non-compiled file!
-
-   When writing the forms in a Lisp library file, keep in mind that the
-file might be loaded more than once.  For example, the choice of
-`defvar' vs. `defconst' for defining a variable depends on whether it
-is desirable to reinitialize the variable if the library is reloaded:
-`defconst' does so, and `defvar' does not.  (*Note Defining
-Variables::.)
-
-   The simplest way to add an element to an alist is like this:
-
-     (setq minor-mode-alist
-           (cons '(leif-mode " Leif") minor-mode-alist))
-
-But this would add multiple elements if the library is reloaded.  To
-avoid the problem, write this:
-
-     (or (assq 'leif-mode minor-mode-alist)
-         (setq minor-mode-alist
-               (cons '(leif-mode " Leif") minor-mode-alist)))
-
-   To add an element to a list just once, use `add-to-list' (*note
-Setting Variables::.).
-
-   Occasionally you will want to test explicitly whether a library has
-already been loaded.  Here's one way to test, in a library, whether it
-has been loaded before:
-
-     (defvar foo-was-loaded)
-     
-     (if (not (boundp 'foo-was-loaded))
-         EXECUTE-FIRST-TIME-ONLY)
-     
-     (setq foo-was-loaded t)
-
-If the library uses `provide' to provide a named feature, you can use
-`featurep' to test whether the library has been loaded.  *Note Named
-Features::.
-
-\1f
-File: lispref.info,  Node: Named Features,  Next: Unloading,  Prev: Repeated Loading,  Up: Loading
-
-Features
-========
-
-   `provide' and `require' are an alternative to `autoload' for loading
-files automatically.  They work in terms of named "features".
-Autoloading is triggered by calling a specific function, but a feature
-is loaded the first time another program asks for it by name.
-
-   A feature name is a symbol that stands for a collection of functions,
-variables, etc.  The file that defines them should "provide" the
-feature.  Another program that uses them may ensure they are defined by
-"requiring" the feature.  This loads the file of definitions if it
-hasn't been loaded already.
-
-   To require the presence of a feature, call `require' with the
-feature name as argument.  `require' looks in the global variable
-`features' to see whether the desired feature has been provided
-already.  If not, it loads the feature from the appropriate file.  This
-file should call `provide' at the top level to add the feature to
-`features'; if it fails to do so, `require' signals an error.
-
-   Features are normally named after the files that provide them, so
-that `require' need not be given the file name.
-
-   For example, in `emacs/lisp/prolog.el', the definition for
-`run-prolog' includes the following code:
-
-     (defun run-prolog ()
-       "Run an inferior Prolog process, input and output via buffer *prolog*."
-       (interactive)
-       (require 'comint)
-       (switch-to-buffer (make-comint "prolog" prolog-program-name))
-       (inferior-prolog-mode))
-
-The expression `(require 'comint)' loads the file `comint.el' if it has
-not yet been loaded.  This ensures that `make-comint' is defined.
-
-   The `comint.el' file contains the following top-level expression:
-
-     (provide 'comint)
-
-This adds `comint' to the global `features' list, so that `(require
-'comint)' will henceforth know that nothing needs to be done.
-
-   When `require' is used at top level in a file, it takes effect when
-you byte-compile that file (*note Byte Compilation::.) as well as when
-you load it.  This is in case the required package contains macros that
-the byte compiler must know about.
-
-   Although top-level calls to `require' are evaluated during byte
-compilation, `provide' calls are not.  Therefore, you can ensure that a
-file of definitions is loaded before it is byte-compiled by including a
-`provide' followed by a `require' for the same feature, as in the
-following example.
-
-     (provide 'my-feature)  ; Ignored by byte compiler,
-                            ;   evaluated by `load'.
-     (require 'my-feature)  ; Evaluated by byte compiler.
-
-The compiler ignores the `provide', then processes the `require' by
-loading the file in question.  Loading the file does execute the
-`provide' call, so the subsequent `require' call does nothing while
-loading.
-
- - Function: provide FEATURE
-     This function announces that FEATURE is now loaded, or being
-     loaded, into the current XEmacs session.  This means that the
-     facilities associated with FEATURE are or will be available for
-     other Lisp programs.
-
-     The direct effect of calling `provide' is to add FEATURE to the
-     front of the list `features' if it is not already in the list.
-     The argument FEATURE must be a symbol.  `provide' returns FEATURE.
-
-          features
-               => (bar bish)
-          
-          (provide 'foo)
-               => foo
-          features
-               => (foo bar bish)
-
-     When a file is loaded to satisfy an autoload, and it stops due to
-     an error in the evaluating its contents, any function definitions
-     or `provide' calls that occurred during the load are undone.
-     *Note Autoload::.
-
- - Function: require FEATURE &optional FILENAME
-     This function checks whether FEATURE is present in the current
-     XEmacs session (using `(featurep FEATURE)'; see below).  If it is
-     not, then `require' loads FILENAME with `load'.  If FILENAME is
-     not supplied, then the name of the symbol FEATURE is used as the
-     file name to load.
-
-     If loading the file fails to provide FEATURE, `require' signals an
-     error, `Required feature FEATURE was not provided'.
-
- - Function: featurep FEXP
-     This function returns `t' if feature FEXP is present in this
-     Emacs.  Use this to conditionalize execution of lisp code based on
-     the presence or absence of emacs or environment extensions.
-
-     FEXP can be a symbol, a number, or a list.
-
-     If FEXP is a symbol, it is looked up in the `features' variable,
-     and `t' is returned if it is found, `nil' otherwise.
-
-     If FEXP is a number, the function returns `t' if this Emacs has an
-     equal or greater number than `fexp', `nil' otherwise.  Note that
-     minor Emacs version is expected to be 2 decimal places wide, so
-     `(featurep 20.4)' will return `nil' on XEmacs 20.4--you must write
-     `(featurep 20.04)', unless you wish to match for XEmacs 20.40.
-
-     If FEXP is a list whose car is the symbol `and', the function
-     returns `t' if all the features in its cdr are present, `nil'
-     otherwise.
-
-     If FEXP is a list whose car is the symbol `or', the function
-     returns `t' if any the features in its cdr are present, `nil'
-     otherwise.
-
-     If FEXP is a list whose car is the symbol `not', the function
-     returns `t' if the feature is not present, `nil' otherwise.
-
-     Examples:
-
-          (featurep 'xemacs)
-               => ; t on XEmacs.
-          
-          (featurep '(and xemacs gnus))
-               => ; t on XEmacs with Gnus loaded.
-          
-          (featurep '(or tty-frames (and emacs 19.30)))
-               => ; t if this Emacs supports TTY frames.
-          
-          (featurep '(or (and xemacs 19.15) (and emacs 19.34)))
-               => ; t on XEmacs 19.15 and later, or on
-                         ; FSF Emacs 19.34 and later.
-
-     *Please note:* The advanced arguments of this function (anything
-     other than a symbol) are not yet supported by FSF Emacs.  If you
-     feel they are useful for supporting multiple Emacs variants, lobby
-     Richard Stallman at `<bug-gnu-emacs@prep.ai.mit.edu>'.
-
- - Variable: features
-     The value of this variable is a list of symbols that are the
-     features loaded in the current XEmacs session.  Each symbol was
-     put in this list with a call to `provide'.  The order of the
-     elements in the `features' list is not significant.
-
-\1f
-File: lispref.info,  Node: Unloading,  Next: Hooks for Loading,  Prev: Named Features,  Up: Loading
-
-Unloading
-=========
-
-   You can discard the functions and variables loaded by a library to
-reclaim memory for other Lisp objects.  To do this, use the function
-`unload-feature':
-
- - Command: unload-feature FEATURE &optional FORCE
-     This command unloads the library that provided feature FEATURE.
-     It undefines all functions, macros, and variables defined in that
-     library with `defconst', `defvar', `defun', `defmacro',
-     `defsubst', `definf-function' and `defalias'.  It then restores
-     any autoloads formerly associated with those symbols.  (Loading
-     saves these in the `autoload' property of the symbol.)
-
-     Ordinarily, `unload-feature' refuses to unload a library on which
-     other loaded libraries depend.  (A library A depends on library B
-     if A contains a `require' for B.)  If the optional argument FORCE
-     is non-`nil', dependencies are ignored and you can unload any
-     library.
-
-   The `unload-feature' function is written in Lisp; its actions are
-based on the variable `load-history'.
-
- - Variable: load-history
-     This variable's value is an alist connecting library names with the
-     names of functions and variables they define, the features they
-     provide, and the features they require.
-
-     Each element is a list and describes one library.  The CAR of the
-     list is the name of the library, as a string.  The rest of the
-     list is composed of these kinds of objects:
-
-        * Symbols that were defined by this library.
-
-        * Lists of the form `(require . FEATURE)' indicating features
-          that were required.
-
-        * Lists of the form `(provide . FEATURE)' indicating features
-          that were provided.
-
-     The value of `load-history' may have one element whose CAR is
-     `nil'.  This element describes definitions made with `eval-buffer'
-     on a buffer that is not visiting a file.
-
-   The command `eval-region' updates `load-history', but does so by
-adding the symbols defined to the element for the file being visited,
-rather than replacing that element.
-
-\1f
-File: lispref.info,  Node: Hooks for Loading,  Prev: Unloading,  Up: Loading
-
-Hooks for Loading
-=================
-
- - Variable: after-load-alist
-     An alist of expressions to evaluate if and when particular
-     libraries are loaded.  Each element looks like this:
-
-          (FILENAME FORMS...)
-
-     When `load' is run and the file-name 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
-     does prevent execution of the rest of the FORMS.
-
-
-\1f
-File: lispref.info,  Node: Byte Compilation,  Next: Debugging,  Prev: Loading,  Up: Top
-
-Byte Compilation
-****************
-
-   XEmacs Lisp has a "compiler" that translates functions written in
-Lisp into a special representation called "byte-code" that can be
-executed more efficiently.  The compiler replaces Lisp function
-definitions with byte-code.  When a byte-coded function is called, its
-definition is evaluated by the "byte-code interpreter".
-
-   Because the byte-compiled code is evaluated by the byte-code
-interpreter, instead of being executed directly by the machine's
-hardware (as true compiled code is), byte-code is completely
-transportable from machine to machine without recompilation.  It is not,
-however, as fast as true compiled code.
-
-   In general, any version of Emacs can run byte-compiled code produced
-by recent earlier versions of Emacs, but the reverse is not true.  In
-particular, if you compile a program with XEmacs 20, the compiled code
-may not run in earlier versions.
-
-   The first time a compiled-function object is executed, the byte-code
-instructions are validated and the byte-code is further optimized.  An
-`invalid-byte-code' error is signaled if the byte-code is invalid, for
-example if it contains invalid opcodes.  This usually means a bug in
-the byte compiler.
-
-   *Note Compilation Errors::, for how to investigate errors occurring
-in byte compilation.
-
-* Menu:
-
-* Speed of Byte-Code::          An example of speedup from byte compilation.
-* Compilation Functions::       Byte compilation functions.
-* Docs and Compilation::        Dynamic loading of documentation strings.
-* Dynamic Loading::             Dynamic loading of individual functions.
-* Eval During Compile::        Code to be evaluated when you compile.
-* Compiled-Function Objects::  The data type used for byte-compiled functions.
-* Disassembly::                 Disassembling byte-code; how to read byte-code.
-
-\1f
-File: lispref.info,  Node: Speed of Byte-Code,  Next: Compilation Functions,  Up: Byte Compilation
-
-Performance of Byte-Compiled Code
-=================================
-
-   A byte-compiled function is not as efficient as a primitive function
-written in C, but runs much faster than the version written in Lisp.
-Here is an example:
-
-     (defun silly-loop (n)
-       "Return time before and after N iterations of a loop."
-       (let ((t1 (current-time-string)))
-         (while (> (setq n (1- n))
-                   0))
-         (list t1 (current-time-string))))
-     => silly-loop
-     
-     (silly-loop 5000000)
-     => ("Mon Sep 14 15:51:49 1998"
-         "Mon Sep 14 15:52:07 1998")  ; 18 seconds
-     
-     (byte-compile 'silly-loop)
-     => #<compiled-function
-     (n)
-     "...(23)"
-     [current-time-string t1 n 0]
-     2
-     "Return time before and after N iterations of a loop.">
-     
-     (silly-loop 5000000)
-     => ("Mon Sep 14 15:53:43 1998"
-         "Mon Sep 14 15:53:49 1998")  ; 6 seconds
-
-   In this example, the interpreted code required 18 seconds to run,
-whereas the byte-compiled code required 6 seconds.  These results are
-representative, but actual results will vary greatly.
-
-\1f
-File: lispref.info,  Node: Compilation Functions,  Next: Docs and Compilation,  Prev: Speed of Byte-Code,  Up: Byte Compilation
-
-The Compilation Functions
-=========================
-
-   You can byte-compile an individual function or macro definition with
-the `byte-compile' function.  You can compile a whole file with
-`byte-compile-file', or several files with `byte-recompile-directory'
-or `batch-byte-compile'.
-
-   When you run the byte compiler, you may get warnings in a buffer
-called `*Compile-Log*'.  These report things in your program that
-suggest a problem but are not necessarily erroneous.
-
-   Be careful when byte-compiling code that uses macros.  Macro calls
-are expanded when they are compiled, so the macros must already be
-defined for proper compilation.  For more details, see *Note Compiling
-Macros::.
-
-   Normally, compiling a file does not evaluate the file's contents or
-load the file.  But it does execute any `require' calls at top level in
-the file.  One way to ensure that necessary macro definitions are
-available during compilation is to `require' the file that defines them
-(*note Named Features::.).  To avoid loading the macro definition files
-when someone *runs* the compiled program, write `eval-when-compile'
-around the `require' calls (*note Eval During Compile::.).
-
- - Function: byte-compile SYMBOL
-     This function byte-compiles the function definition of SYMBOL,
-     replacing the previous definition with the compiled one.  The
-     function definition of SYMBOL must be the actual code for the
-     function; i.e., the compiler does not follow indirection to
-     another symbol.  `byte-compile' returns the new, compiled
-     definition of SYMBOL.
-
-     If SYMBOL's definition is a compiled-function object,
-     `byte-compile' does nothing and returns `nil'.  Lisp records only
-     one function definition for any symbol, and if that is already
-     compiled, non-compiled code is not available anywhere.  So there
-     is no way to "compile the same definition again."
-
-          (defun factorial (integer)
-            "Compute factorial of INTEGER."
-            (if (= 1 integer) 1
-              (* integer (factorial (1- integer)))))
-          => factorial
-          
-          (byte-compile 'factorial)
-          => #<compiled-function
-          (integer)
-          "...(21)"
-          [integer 1 factorial]
-          3
-          "Compute factorial of INTEGER.">
-
-     The result is a compiled-function object.  The string it contains
-     is the actual byte-code; each character in it is an instruction or
-     an operand of an instruction.  The vector contains all the
-     constants, variable names and function names used by the function,
-     except for certain primitives that are coded as special
-     instructions.
-
- - Command: compile-defun &optional ARG
-     This command reads the defun containing point, compiles it, and
-     evaluates the result.  If you use this on a defun that is actually
-     a function definition, the effect is to install a compiled version
-     of that function.
-
-     If ARG is non-`nil', the result is inserted in the current buffer
-     after the form; otherwise, it is printed in the minibuffer.
-
- - Command: byte-compile-file FILENAME &optional LOAD
-     This function compiles a file of Lisp code named FILENAME into a
-     file of byte-code.  The output file's name is made by appending
-     `c' to the end of FILENAME.
-
-     If `load' is non-`nil', the file is loaded after having been
-     compiled.
-
-     Compilation works by reading the input file one form at a time.
-     If it is a definition of a function or macro, the compiled
-     function or macro definition is written out.  Other forms are
-     batched together, then each batch is compiled, and written so that
-     its compiled code will be executed when the file is read.  All
-     comments are discarded when the input file is read.
-
-     This command returns `t'.  When called interactively, it prompts
-     for the file name.
-
-          % ls -l push*
-          -rw-r--r--  1 lewis     791 Oct  5 20:31 push.el
-          
-          (byte-compile-file "~/emacs/push.el")
-               => t
-          
-          % ls -l push*
-          -rw-r--r--  1 lewis     791 Oct  5 20:31 push.el
-          -rw-r--r--  1 lewis     638 Oct  8 20:25 push.elc
-
- - Command: byte-recompile-directory DIRECTORY &optional FLAG
-     This function recompiles every `.el' file in DIRECTORY that needs
-     recompilation.  A file needs recompilation if a `.elc' file exists
-     but is older than the `.el' file.
-
-     When a `.el' file has no corresponding `.elc' file, then FLAG says
-     what to do.  If it is `nil', these files are ignored.  If it is
-     non-`nil', the user is asked whether to compile each such file.
-
-     The return value of this command is unpredictable.
-
- - Function: batch-byte-compile
-     This function runs `byte-compile-file' on files specified on the
-     command line.  This function must be used only in a batch
-     execution of Emacs, as it kills Emacs on completion.  An error in
-     one file does not prevent processing of subsequent files.  (The
-     file that gets the error will not, of course, produce any compiled
-     code.)
-
-          % emacs -batch -f batch-byte-compile *.el
-
- - Function: batch-byte-recompile-directory
-     This function is similar to `batch-byte-compile' but runs the
-     command `byte-recompile-directory' on the files remaining on the
-     command line.
-
- - Variable: byte-recompile-directory-ignore-errors-p
-     If non-`nil', this specifies that `byte-recompile-directory' will
-     continue compiling even when an error occurs in a file.  This is
-     normally `nil', but is bound to `t' by
-     `batch-byte-recompile-directory'.
-
- - Function: byte-code INSTRUCTIONS CONSTANTS STACK-SIZE
-     This function actually interprets byte-code.  Don't call this
-     function yourself.  Only the byte compiler knows how to generate
-     valid calls to this function.
-
-     In newer Emacs versions (19 and up), byte code is usually executed
-     as part of a compiled-function object, and only rarely due to an
-     explicit call to `byte-code'.  A byte-compiled function was once
-     actually defined with a body that calls `byte-code', but in recent
-     versions of Emacs `byte-code' is only used to run isolated
-     fragments of lisp code without an associated argument list.
-
-\1f
-File: lispref.info,  Node: Docs and Compilation,  Next: Dynamic Loading,  Prev: Compilation Functions,  Up: Byte Compilation
-
-Documentation Strings and Compilation
-=====================================
-
-   Functions and variables loaded from a byte-compiled file access their
-documentation strings dynamically from the file whenever needed.  This
-saves space within Emacs, and makes loading faster because the
-documentation strings themselves need not be processed while loading the
-file.  Actual access to the documentation strings becomes slower as a
-result, but normally not enough to bother users.
-
-   Dynamic access to documentation strings does have drawbacks:
-
-   * If you delete or move the compiled file after loading it, Emacs
-     can no longer access the documentation strings for the functions
-     and variables in the file.
-
-   * If you alter the compiled file (such as by compiling a new
-     version), then further access to documentation strings in this
-     file will give nonsense results.
-
-   If your site installs Emacs following the usual procedures, these
-problems will never normally occur.  Installing a new version uses a new
-directory with a different name; as long as the old version remains
-installed, its files will remain unmodified in the places where they are
-expected to be.
-
-   However, if you have built Emacs yourself and use it from the
-directory where you built it, you will experience this problem
-occasionally if you edit and recompile Lisp files.  When it happens, you
-can cure the problem by reloading the file after recompiling it.
-
-   Versions of Emacs up to and including XEmacs 19.14 and FSF Emacs
-19.28 do not support the dynamic docstrings feature, and so will not be
-able to load bytecode created by more recent Emacs versions.  You can
-turn off the dynamic docstring feature by setting
-`byte-compile-dynamic-docstrings' to `nil'.  Once this is done, you can
-compile files that will load into older Emacs versions.  You can do
-this globally, or for one source file by specifying a file-local
-binding for the variable.  Here's one way to do that:
-
-     -*-byte-compile-dynamic-docstrings: nil;-*-
-
- - Variable: byte-compile-dynamic-docstrings
-     If this is non-`nil', the byte compiler generates compiled files
-     that are set up for dynamic loading of documentation strings.
-
-   The dynamic documentation string feature writes compiled files that
-use a special Lisp reader construct, `#@COUNT'.  This construct skips
-the next COUNT characters.  It also uses the `#$' construct, which
-stands for "the name of this file, as a string."  It is best not to use
-these constructs in Lisp source files.
-
-\1f
-File: lispref.info,  Node: Dynamic Loading,  Next: Eval During Compile,  Prev: Docs and Compilation,  Up: Byte Compilation
-
-Dynamic Loading of Individual Functions
-=======================================
-
-   When you compile a file, you can optionally enable the "dynamic
-function loading" feature (also known as "lazy loading").  With dynamic
-function loading, loading the file doesn't fully read the function
-definitions in the file.  Instead, each function definition contains a
-place-holder which refers to the file.  The first time each function is
-called, it reads the full definition from the file, to replace the
-place-holder.
-
-   The advantage of dynamic function loading is that loading the file
-becomes much faster.  This is a good thing for a file which contains
-many separate commands, provided that using one of them does not imply
-you will soon (or ever) use the rest.  A specialized mode which provides
-many keyboard commands often has that usage pattern: a user may invoke
-the mode, but use only a few of the commands it provides.
-
-   The dynamic loading feature has certain disadvantages:
-
-   * If you delete or move the compiled file after loading it, Emacs
-     can no longer load the remaining function definitions not already
-     loaded.
-
-   * If you alter the compiled file (such as by compiling a new
-     version), then trying to load any function not already loaded will
-     get nonsense results.
-
-   If you compile a new version of the file, the best thing to do is
-immediately load the new compiled file.  That will prevent any future
-problems.
-
-   The byte compiler uses the dynamic function loading feature if the
-variable `byte-compile-dynamic' is non-`nil' at compilation time.  Do
-not set this variable globally, since dynamic loading is desirable only
-for certain files.  Instead, enable the feature for specific source
-files with file-local variable bindings, like this:
-
-     -*-byte-compile-dynamic: t;-*-
-
- - Variable: byte-compile-dynamic
-     If this is non-`nil', the byte compiler generates compiled files
-     that are set up for dynamic function loading.
-
- - Function: fetch-bytecode FUNCTION
-     This immediately finishes loading the definition of FUNCTION from
-     its byte-compiled file, if it is not fully loaded already.  The
-     argument FUNCTION may be a compiled-function object or a function
-     name.
-
-\1f
-File: lispref.info,  Node: Eval During Compile,  Next: Compiled-Function Objects,  Prev: Dynamic Loading,  Up: Byte Compilation
-
-Evaluation During Compilation
-=============================
-
-   These features permit you to write code to be evaluated during
-compilation of a program.
-
- - Special Form: eval-and-compile BODY
-     This form marks BODY to be evaluated both when you compile the
-     containing code and when you run it (whether compiled or not).
-
-     You can get a similar result by putting BODY in a separate file
-     and referring to that file with `require'.  Using `require' is
-     preferable if there is a substantial amount of code to be executed
-     in this way.
-
- - Special Form: eval-when-compile BODY
-     This form marks BODY to be evaluated at compile time and not when
-     the compiled program is loaded.  The result of evaluation by the
-     compiler becomes a constant which appears in the compiled program.
-     When the program is interpreted, not compiled at all, BODY is
-     evaluated normally.
-
-     At top level, this is analogous to the Common Lisp idiom
-     `(eval-when (compile eval) ...)'.  Elsewhere, the Common Lisp `#.'
-     reader macro (but not when interpreting) is closer to what
-     `eval-when-compile' does.
-
-\1f
-File: lispref.info,  Node: Compiled-Function Objects,  Next: Disassembly,  Prev: Eval During Compile,  Up: Byte Compilation
-
-Compiled-Function Objects
-=========================
-
-   Byte-compiled functions have a special data type: they are
-"compiled-function objects". The evaluator handles this data type
-specially when it appears as a function to be called.
-
-   The printed representation for a compiled-function object normally
-begins with `#<compiled-function' and ends with `>'.  However, if the
-variable `print-readably' is non-`nil', the object is printed beginning
-with `#[' and ending with `]'.  This representation can be read
-directly by the Lisp reader, and is used in byte-compiled files (those
-ending in `.elc').
-
-   In Emacs version 18, there was no compiled-function object data type;
-compiled functions used the function `byte-code' to run the byte code.
-
-   A compiled-function object has a number of different attributes.
-They are:
-
-ARGLIST
-     The list of argument symbols.
-
-INSTRUCTIONS
-     The string containing the byte-code instructions.
-
-CONSTANTS
-     The vector of Lisp objects referenced by the byte code.  These
-     include symbols used as function names and variable names.
-
-STACK-SIZE
-     The maximum stack size this function needs.
-
-DOC-STRING
-     The documentation string (if any); otherwise, `nil'.  The value may
-     be a number or a list, in case the documentation string is stored
-     in a file.  Use the function `documentation' to get the real
-     documentation string (*note Accessing Documentation::.).
-
-INTERACTIVE
-     The interactive spec (if any).  This can be a string or a Lisp
-     expression.  It is `nil' for a function that isn't interactive.
-
-DOMAIN
-     The domain (if any).  This is only meaningful if I18N3
-     (message-translation) support was compiled into XEmacs.  This is a
-     string defining which domain to find the translation for the
-     documentation string and interactive prompt.  *Note Domain
-     Specification::.
-
-   Here's an example of a compiled-function object, in printed
-representation.  It is the definition of the command `backward-sexp'.
-
-     (symbol-function 'backward-sexp)
-     => #<compiled-function
-     (&optional arg)
-     "...(15)" [arg 1 forward-sexp] 2 854740 "_p">
-
-   The primitive way to create a compiled-function object is with
-`make-byte-code':
-
- - Function: make-byte-code ARGLIST INSTRUCTIONS CONSTANTS STACK-SIZE
-          &optional DOC-STRING INTERACTIVE
-     This function constructs and returns a compiled-function object
-     with the specified attributes.
-
-     *Please note:* Unlike all other Emacs-lisp functions, calling this
-     with five arguments is *not* the same as calling it with six
-     arguments, the last of which is `nil'.  If the INTERACTIVE arg is
-     specified as `nil', then that means that this function was defined
-     with `(interactive)'.  If the arg is not specified, then that means
-     the function is not interactive.  This is terrible behavior which
-     is retained for compatibility with old `.elc' files which expected
-     these semantics.
-
-   You should not try to come up with the elements for a
-compiled-function object yourself, because if they are inconsistent,
-XEmacs may crash when you call the function.  Always leave it to the
-byte compiler to create these objects; it makes the elements consistent
-(we hope).
-
-   The following primitives are provided for accessing the elements of
-a compiled-function object.
-
- - Function: compiled-function-arglist FUNCTION
-     This function returns the argument list of compiled-function object
-     FUNCTION.
-
- - Function: compiled-function-instructions FUNCTION
-     This function returns a string describing the byte-code
-     instructions of compiled-function object FUNCTION.
-
- - Function: compiled-function-constants FUNCTION
-     This function returns the vector of Lisp objects referenced by
-     compiled-function object FUNCTION.
-
- - Function: compiled-function-stack-size FUNCTION
-     This function returns the maximum stack size needed by
-     compiled-function object FUNCTION.
-
- - Function: compiled-function-doc-string FUNCTION
-     This function returns the doc string of compiled-function object
-     FUNCTION, if available.
-
- - Function: compiled-function-interactive FUNCTION
-     This function returns the interactive spec of compiled-function
-     object FUNCTION, if any.  The return value is `nil' or a
-     two-element list, the first element of which is the symbol
-     `interactive' and the second element is the interactive spec (a
-     string or Lisp form).
-
- - Function: compiled-function-domain FUNCTION
-     This function returns the domain of compiled-function object
-     FUNCTION, if any.  The result will be a string or `nil'.  *Note
-     Domain Specification::.
-
-\1f
-File: lispref.info,  Node: Disassembly,  Prev: Compiled-Function Objects,  Up: Byte Compilation
-
-Disassembled Byte-Code
-======================
-
-   People do not write byte-code; that job is left to the byte compiler.
-But we provide a disassembler to satisfy a cat-like curiosity.  The
-disassembler converts the byte-compiled code into humanly readable form.
-
-   The byte-code interpreter is implemented as a simple stack machine.
-It pushes values onto a stack of its own, then pops them off to use them
-in calculations whose results are themselves pushed back on the stack.
-When a byte-code function returns, it pops a value off the stack and
-returns it as the value of the function.
-
-   In addition to the stack, byte-code functions can use, bind, and set
-ordinary Lisp variables, by transferring values between variables and
-the stack.
-
- - Command: disassemble OBJECT &optional STREAM
-     This function prints the disassembled code for OBJECT.  If STREAM
-     is supplied, then output goes there.  Otherwise, the disassembled
-     code is printed to the stream `standard-output'.  The argument
-     OBJECT can be a function name or a lambda expression.
-
-     As a special exception, if this function is used interactively, it
-     outputs to a buffer named `*Disassemble*'.
-
-   Here are two examples of using the `disassemble' function.  We have
-added explanatory comments to help you relate the byte-code to the Lisp
-source; these do not appear in the output of `disassemble'.
-
-     (defun factorial (integer)
-       "Compute factorial of an integer."
-       (if (= 1 integer) 1
-         (* integer (factorial (1- integer)))))
-          => factorial
-     
-     (factorial 4)
-          => 24
-     
-     (disassemble 'factorial)
-          -| byte-code for factorial:
-      doc: Compute factorial of an integer.
-      args: (integer)
-     
-     0   varref   integer        ; Get value of `integer'
-                                 ;   from the environment
-                                 ;   and push the value
-                                 ;   onto the stack.
-     
-     1   constant 1              ; Push 1 onto stack.
-     
-     2   eqlsign                 ; Pop top two values off stack,
-                                 ;   compare them,
-                                 ;   and push result onto stack.
-     
-     3   goto-if-nil 1           ; Pop and test top of stack;
-                                 ;   if `nil',
-                                 ;   go to label 1 (which is also byte 7),
-                                 ;   else continue.
-     
-     5   constant 1              ; Push 1 onto top of stack.
-     
-     6   return                  ; Return the top element
-                                 ;   of the stack.
-     
-     7:1 varref   integer        ; Push value of `integer' onto stack.
-     
-     8   constant factorial      ; Push `factorial' onto stack.
-     
-     9   varref   integer        ; Push value of `integer' onto stack.
-     
-     10  sub1                    ; Pop `integer', decrement value,
-                                 ;   push new value onto stack.
-     
-                                 ; Stack now contains:
-                                 ;   - decremented value of `integer'
-                                 ;   - `factorial'
-                                 ;   - value of `integer'
-     
-     15  call     1              ; Call function `factorial' using
-                                 ;   the first (i.e., the top) element
-                                 ;   of the stack as the argument;
-                                 ;   push returned value onto stack.
-     
-                                 ; Stack now contains:
-                                 ;   - result of recursive
-                                 ;        call to `factorial'
-                                 ;   - value of `integer'
-     
-     12  mult                    ; Pop top two values off the stack,
-                                 ;   multiply them,
-                                 ;   pushing the result onto the stack.
-     
-     13  return                  ; Return the top element
-                                 ;   of the stack.
-          => nil
-
-   The `silly-loop' function is somewhat more complex:
-
-     (defun silly-loop (n)
-       "Return time before and after N iterations of a loop."
-       (let ((t1 (current-time-string)))
-         (while (> (setq n (1- n))
-                   0))
-         (list t1 (current-time-string))))
-          => silly-loop
-     
-     (disassemble 'silly-loop)
-          -| byte-code for silly-loop:
-      doc: Return time before and after N iterations of a loop.
-      args: (n)
-     
-     0   constant current-time-string  ; Push
-                                       ;   `current-time-string'
-                                       ;   onto top of stack.
-     
-     1   call     0              ; Call `current-time-string'
-                                 ;    with no argument,
-                                 ;    pushing result onto stack.
-     
-     2   varbind  t1             ; Pop stack and bind `t1'
-                                 ;   to popped value.
-     
-     3:1 varref   n              ; Get value of `n' from
-                                 ;   the environment and push
-                                 ;   the value onto the stack.
-     
-     4   sub1                    ; Subtract 1 from top of stack.
-     
-     5   dup                     ; Duplicate the top of the stack;
-                                 ;   i.e., copy the top of
-                                 ;   the stack and push the
-                                 ;   copy onto the stack.
-     
-     6   varset   n              ; Pop the top of the stack,
-                                 ;   and set `n' to the value.
-     
-                                 ; In effect, the sequence `dup varset'
-                                 ;   copies the top of the stack
-                                 ;   into the value of `n'
-                                 ;   without popping it.
-     
-     7   constant 0              ; Push 0 onto stack.
-     
-     8   gtr                     ; Pop top two values off stack,
-                                 ;   test if N is greater than 0
-                                 ;   and push result onto stack.
-     
-     9   goto-if-not-nil 1       ; Goto label 1 (byte 3) if `n' <= 0
-                                 ;   (this exits the while loop).
-                                 ;   else pop top of stack
-                                 ;   and continue
-     
-     11  varref   t1             ; Push value of `t1' onto stack.
-     
-     12  constant current-time-string  ; Push
-                                       ;   `current-time-string'
-                                       ;   onto top of stack.
-     
-     13  call     0              ; Call `current-time-string' again.
-     
-     14  unbind   1              ; Unbind `t1' in local environment.
-     
-     15  list2                   ; Pop top two elements off stack,
-                                 ;   create a list of them,
-                                 ;   and push list onto stack.
-     
-     16  return                  ; Return the top element of the stack.
-     
-          => nil
-
-\1f
-File: lispref.info,  Node: Debugging,  Next: Read and Print,  Prev: Byte Compilation,  Up: Top
-
-Debugging Lisp Programs
-***********************
-
-   There are three ways to investigate a problem in an XEmacs Lisp
-program, depending on what you are doing with the program when the
-problem appears.
-
-   * If the problem occurs when you run the program, you can use a Lisp
-     debugger (either the default debugger or Edebug) to investigate
-     what is happening during execution.
-
-   * If the problem is syntactic, so that Lisp cannot even read the
-     program, you can use the XEmacs facilities for editing Lisp to
-     localize it.
-
-   * If the problem occurs when trying to compile the program with the
-     byte compiler, you need to know how to examine the compiler's
-     input buffer.
-
-* Menu:
-
-* Debugger::            How the XEmacs Lisp debugger is implemented.
-* Syntax Errors::       How to find syntax errors.
-* Compilation Errors::  How to find errors that show up in byte compilation.
-* Edebug::             A source-level XEmacs Lisp debugger.
-
-   Another useful debugging tool is the dribble file.  When a dribble
-file is open, XEmacs copies all keyboard input characters to that file.
-Afterward, you can examine the file to find out what input was used.
-*Note Terminal Input::.
-
-   For debugging problems in terminal descriptions, the
-`open-termscript' function can be useful.  *Note Terminal Output::.
-
-\1f
-File: lispref.info,  Node: Debugger,  Next: Syntax Errors,  Up: Debugging
-
-The Lisp Debugger
-=================
-
-   The "Lisp debugger" provides the ability to suspend evaluation of a
-form.  While evaluation is suspended (a state that is commonly known as
-a "break"), you may examine the run time stack, examine the values of
-local or global variables, or change those values.  Since a break is a
-recursive edit, all the usual editing facilities of XEmacs are
-available; you can even run programs that will enter the debugger
-recursively.  *Note Recursive Editing::.
-
-* Menu:
-
-* Error Debugging::       Entering the debugger when an error happens.
-* Infinite Loops::       Stopping and debugging a program that doesn't exit.
-* Function Debugging::    Entering it when a certain function is called.
-* Explicit Debug::        Entering it at a certain point in the program.
-* Using Debugger::        What the debugger does; what you see while in it.
-* Debugger Commands::     Commands used while in the debugger.
-* Invoking the Debugger:: How to call the function `debug'.
-* Internals of Debugger:: Subroutines of the debugger, and global variables.
-