Merge r21-4-11-chise-0_20-=ucs.
[chise/xemacs-chise.git.1] / info / lispref.info-18
diff --git a/info/lispref.info-18 b/info/lispref.info-18
deleted file mode 100644 (file)
index 937c3df..0000000
+++ /dev/null
@@ -1,1116 +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: Quitting,  Next: Prefix Command Arguments,  Prev: Waiting,  Up: Command Loop
-
-Quitting
-========
-
-   Typing `C-g' while a Lisp function is running causes XEmacs to
-"quit" whatever it is doing.  This means that control returns to the
-innermost active command loop.
-
-   Typing `C-g' while the command loop is waiting for keyboard input
-does not cause a quit; it acts as an ordinary input character.  In the
-simplest case, you cannot tell the difference, because `C-g' normally
-runs the command `keyboard-quit', whose effect is to quit.  However,
-when `C-g' follows a prefix key, the result is an undefined key.  The
-effect is to cancel the prefix key as well as any prefix argument.
-
-   In the minibuffer, `C-g' has a different definition: it aborts out
-of the minibuffer.  This means, in effect, that it exits the minibuffer
-and then quits.  (Simply quitting would return to the command loop
-*within* the minibuffer.)  The reason why `C-g' does not quit directly
-when the command reader is reading input is so that its meaning can be
-redefined in the minibuffer in this way.  `C-g' following a prefix key
-is not redefined in the minibuffer, and it has its normal effect of
-canceling the prefix key and prefix argument.  This too would not be
-possible if `C-g' always quit directly.
-
-   When `C-g' does directly quit, it does so by setting the variable
-`quit-flag' to `t'.  XEmacs checks this variable at appropriate times
-and quits if it is not `nil'.  Setting `quit-flag' non-`nil' in any way
-thus causes a quit.
-
-   At the level of C code, quitting cannot happen just anywhere; only
-at the special places that check `quit-flag'.  The reason for this is
-that quitting at other places might leave an inconsistency in XEmacs's
-internal state.  Because quitting is delayed until a safe place,
-quitting cannot make XEmacs crash.
-
-   Certain functions such as `read-key-sequence' or `read-quoted-char'
-prevent quitting entirely even though they wait for input.  Instead of
-quitting, `C-g' serves as the requested input.  In the case of
-`read-key-sequence', this serves to bring about the special behavior of
-`C-g' in the command loop.  In the case of `read-quoted-char', this is
-so that `C-q' can be used to quote a `C-g'.
-
-   You can prevent quitting for a portion of a Lisp function by binding
-the variable `inhibit-quit' to a non-`nil' value.  Then, although `C-g'
-still sets `quit-flag' to `t' as usual, the usual result of this--a
-quit--is prevented.  Eventually, `inhibit-quit' will become `nil'
-again, such as when its binding is unwound at the end of a `let' form.
-At that time, if `quit-flag' is still non-`nil', the requested quit
-happens immediately.  This behavior is ideal when you wish to make sure
-that quitting does not happen within a "critical section" of the
-program.
-
-   In some functions (such as `read-quoted-char'), `C-g' is handled in
-a special way that does not involve quitting.  This is done by reading
-the input with `inhibit-quit' bound to `t', and setting `quit-flag' to
-`nil' before `inhibit-quit' becomes `nil' again.  This excerpt from the
-definition of `read-quoted-char' shows how this is done; it also shows
-that normal quitting is permitted after the first character of input.
-
-     (defun read-quoted-char (&optional prompt)
-       "...DOCUMENTATION..."
-       (let ((count 0) (code 0) char)
-         (while (< count 3)
-           (let ((inhibit-quit (zerop count))
-                 (help-form nil))
-             (and prompt (message "%s-" prompt))
-             (setq char (read-char))
-             (if inhibit-quit (setq quit-flag nil)))
-           ...)
-         (logand 255 code)))
-
- - Variable: quit-flag
-     If this variable is non-`nil', then XEmacs quits immediately,
-     unless `inhibit-quit' is non-`nil'.  Typing `C-g' ordinarily sets
-     `quit-flag' non-`nil', regardless of `inhibit-quit'.
-
- - Variable: inhibit-quit
-     This variable determines whether XEmacs should quit when
-     `quit-flag' is set to a value other than `nil'.  If `inhibit-quit'
-     is non-`nil', then `quit-flag' has no special effect.
-
- - Command: keyboard-quit
-     This function signals the `quit' condition with `(signal 'quit
-     nil)'.  This is the same thing that quitting does.  (See `signal'
-     in *Note Errors::.)
-
-   You can specify a character other than `C-g' to use for quitting.
-See the function `set-input-mode' in *Note Terminal Input::.
-
-\1f
-File: lispref.info,  Node: Prefix Command Arguments,  Next: Recursive Editing,  Prev: Quitting,  Up: Command Loop
-
-Prefix Command Arguments
-========================
-
-   Most XEmacs commands can use a "prefix argument", a number specified
-before the command itself.  (Don't confuse prefix arguments with prefix
-keys.)  The prefix argument is at all times represented by a value,
-which may be `nil', meaning there is currently no prefix argument.
-Each command may use the prefix argument or ignore it.
-
-   There are two representations of the prefix argument: "raw" and
-"numeric".  The editor command loop uses the raw representation
-internally, and so do the Lisp variables that store the information, but
-commands can request either representation.
-
-   Here are the possible values of a raw prefix argument:
-
-   * `nil', meaning there is no prefix argument.  Its numeric value is
-     1, but numerous commands make a distinction between `nil' and the
-     integer 1.
-
-   * An integer, which stands for itself.
-
-   * A list of one element, which is an integer.  This form of prefix
-     argument results from one or a succession of `C-u''s with no
-     digits.  The numeric value is the integer in the list, but some
-     commands make a distinction between such a list and an integer
-     alone.
-
-   * The symbol `-'.  This indicates that `M--' or `C-u -' was typed,
-     without following digits.  The equivalent numeric value is -1, but
-     some commands make a distinction between the integer -1 and the
-     symbol `-'.
-
-   We illustrate these possibilities by calling the following function
-with various prefixes:
-
-     (defun display-prefix (arg)
-       "Display the value of the raw prefix arg."
-       (interactive "P")
-       (message "%s" arg))
-
-Here are the results of calling `display-prefix' with various raw
-prefix arguments:
-
-             M-x display-prefix  -| nil
-     
-     C-u     M-x display-prefix  -| (4)
-     
-     C-u C-u M-x display-prefix  -| (16)
-     
-     C-u 3   M-x display-prefix  -| 3
-     
-     M-3     M-x display-prefix  -| 3      ; (Same as `C-u 3'.)
-     
-     C-3     M-x display-prefix  -| 3      ; (Same as `C-u 3'.)
-     
-     C-u -   M-x display-prefix  -| -
-     
-     M--     M-x display-prefix  -| -      ; (Same as `C-u -'.)
-     
-     C--     M-x display-prefix  -| -      ; (Same as `C-u -'.)
-     
-     C-u - 7 M-x display-prefix  -| -7
-     
-     M-- 7   M-x display-prefix  -| -7     ; (Same as `C-u -7'.)
-     
-     C-- 7   M-x display-prefix  -| -7     ; (Same as `C-u -7'.)
-
-   XEmacs uses two variables to store the prefix argument: `prefix-arg'
-and `current-prefix-arg'.  Commands such as `universal-argument' that
-set up prefix arguments for other commands store them in `prefix-arg'.
-In contrast, `current-prefix-arg' conveys the prefix argument to the
-current command, so setting it has no effect on the prefix arguments
-for future commands.
-
-   Normally, commands specify which representation to use for the prefix
-argument, either numeric or raw, in the `interactive' declaration.
-(*Note Using Interactive::.)  Alternatively, functions may look at the
-value of the prefix argument directly in the variable
-`current-prefix-arg', but this is less clean.
-
- - Function: prefix-numeric-value ARG
-     This function returns the numeric meaning of a valid raw prefix
-     argument value, ARG.  The argument may be a symbol, a number, or a
-     list.  If it is `nil', the value 1 is returned; if it is `-', the
-     value -1 is returned; if it is a number, that number is returned;
-     if it is a list, the CAR of that list (which should be a number) is
-     returned.
-
- - Variable: current-prefix-arg
-     This variable holds the raw prefix argument for the *current*
-     command.  Commands may examine it directly, but the usual way to
-     access it is with `(interactive "P")'.
-
- - Variable: prefix-arg
-     The value of this variable is the raw prefix argument for the
-     *next* editing command.  Commands that specify prefix arguments for
-     the following command work by setting this variable.
-
-   Do not call the functions `universal-argument', `digit-argument', or
-`negative-argument' unless you intend to let the user enter the prefix
-argument for the *next* command.
-
- - Command: universal-argument
-     This command reads input and specifies a prefix argument for the
-     following command.  Don't call this command yourself unless you
-     know what you are doing.
-
- - Command: digit-argument ARG
-     This command adds to the prefix argument for the following
-     command.  The argument ARG is the raw prefix argument as it was
-     before this command; it is used to compute the updated prefix
-     argument.  Don't call this command yourself unless you know what
-     you are doing.
-
- - Command: negative-argument ARG
-     This command adds to the numeric argument for the next command.
-     The argument ARG is the raw prefix argument as it was before this
-     command; its value is negated to form the new prefix argument.
-     Don't call this command yourself unless you know what you are
-     doing.
-
-\1f
-File: lispref.info,  Node: Recursive Editing,  Next: Disabling Commands,  Prev: Prefix Command Arguments,  Up: Command Loop
-
-Recursive Editing
-=================
-
-   The XEmacs command loop is entered automatically when XEmacs starts
-up.  This top-level invocation of the command loop never exits; it keeps
-running as long as XEmacs does.  Lisp programs can also invoke the
-command loop.  Since this makes more than one activation of the command
-loop, we call it "recursive editing".  A recursive editing level has
-the effect of suspending whatever command invoked it and permitting the
-user to do arbitrary editing before resuming that command.
-
-   The commands available during recursive editing are the same ones
-available in the top-level editing loop and defined in the keymaps.
-Only a few special commands exit the recursive editing level; the others
-return to the recursive editing level when they finish.  (The special
-commands for exiting are always available, but they do nothing when
-recursive editing is not in progress.)
-
-   All command loops, including recursive ones, set up all-purpose error
-handlers so that an error in a command run from the command loop will
-not exit the loop.
-
-   Minibuffer input is a special kind of recursive editing.  It has a
-few special wrinkles, such as enabling display of the minibuffer and the
-minibuffer window, but fewer than you might suppose.  Certain keys
-behave differently in the minibuffer, but that is only because of the
-minibuffer's local map; if you switch windows, you get the usual XEmacs
-commands.
-
-   To invoke a recursive editing level, call the function
-`recursive-edit'.  This function contains the command loop; it also
-contains a call to `catch' with tag `exit', which makes it possible to
-exit the recursive editing level by throwing to `exit' (*note Catch and
-Throw::.).  If you throw a value other than `t', then `recursive-edit'
-returns normally to the function that called it.  The command `C-M-c'
-(`exit-recursive-edit') does this.  Throwing a `t' value causes
-`recursive-edit' to quit, so that control returns to the command loop
-one level up.  This is called "aborting", and is done by `C-]'
-(`abort-recursive-edit').
-
-   Most applications should not use recursive editing, except as part of
-using the minibuffer.  Usually it is more convenient for the user if you
-change the major mode of the current buffer temporarily to a special
-major mode, which should have a command to go back to the previous mode.
-(The `e' command in Rmail uses this technique.)  Or, if you wish to
-give the user different text to edit "recursively", create and select a
-new buffer in a special mode.  In this mode, define a command to
-complete the processing and go back to the previous buffer.  (The `m'
-command in Rmail does this.)
-
-   Recursive edits are useful in debugging.  You can insert a call to
-`debug' into a function definition as a sort of breakpoint, so that you
-can look around when the function gets there.  `debug' invokes a
-recursive edit but also provides the other features of the debugger.
-
-   Recursive editing levels are also used when you type `C-r' in
-`query-replace' or use `C-x q' (`kbd-macro-query').
-
- - Function: recursive-edit
-     This function invokes the editor command loop.  It is called
-     automatically by the initialization of XEmacs, to let the user
-     begin editing.  When called from a Lisp program, it enters a
-     recursive editing level.
-
-     In the following example, the function `simple-rec' first advances
-     point one word, then enters a recursive edit, printing out a
-     message in the echo area.  The user can then do any editing
-     desired, and then type `C-M-c' to exit and continue executing
-     `simple-rec'.
-
-          (defun simple-rec ()
-            (forward-word 1)
-            (message "Recursive edit in progress")
-            (recursive-edit)
-            (forward-word 1))
-               => simple-rec
-          (simple-rec)
-               => nil
-
- - Command: exit-recursive-edit
-     This function exits from the innermost recursive edit (including
-     minibuffer input).  Its definition is effectively `(throw 'exit
-     nil)'.
-
- - Command: abort-recursive-edit
-     This function aborts the command that requested the innermost
-     recursive edit (including minibuffer input), by signaling `quit'
-     after exiting the recursive edit.  Its definition is effectively
-     `(throw 'exit t)'.  *Note Quitting::.
-
- - Command: top-level
-     This function exits all recursive editing levels; it does not
-     return a value, as it jumps completely out of any computation
-     directly back to the main command loop.
-
- - Function: recursion-depth
-     This function returns the current depth of recursive edits.  When
-     no recursive edit is active, it returns 0.
-
-\1f
-File: lispref.info,  Node: Disabling Commands,  Next: Command History,  Prev: Recursive Editing,  Up: Command Loop
-
-Disabling Commands
-==================
-
-   "Disabling a command" marks the command as requiring user
-confirmation before it can be executed.  Disabling is used for commands
-which might be confusing to beginning users, to prevent them from using
-the commands by accident.
-
-   The low-level mechanism for disabling a command is to put a
-non-`nil' `disabled' property on the Lisp symbol for the command.
-These properties are normally set up by the user's `.emacs' file with
-Lisp expressions such as this:
-
-     (put 'upcase-region 'disabled t)
-
-For a few commands, these properties are present by default and may be
-removed by the `.emacs' file.
-
-   If the value of the `disabled' property is a string, the message
-saying the command is disabled includes that string.  For example:
-
-     (put 'delete-region 'disabled
-          "Text deleted this way cannot be yanked back!\n")
-
-   *Note Disabling: (xemacs)Disabling, for the details on what happens
-when a disabled command is invoked interactively.  Disabling a command
-has no effect on calling it as a function from Lisp programs.
-
- - Command: enable-command COMMAND
-     Allow COMMAND to be executed without special confirmation from now
-     on, and (if the user confirms) alter the user's `.emacs' file so
-     that this will apply to future sessions.
-
- - Command: disable-command COMMAND
-     Require special confirmation to execute COMMAND from now on, and
-     (if the user confirms) alter the user's `.emacs' file so that this
-     will apply to future sessions.
-
- - Variable: disabled-command-hook
-     This normal hook is run instead of a disabled command, when the
-     user invokes the disabled command interactively.  The hook
-     functions can use `this-command-keys' to determine what the user
-     typed to run the command, and thus find the command itself.  *Note
-     Hooks::.
-
-     By default, `disabled-command-hook' contains a function that asks
-     the user whether to proceed.
-
-\1f
-File: lispref.info,  Node: Command History,  Next: Keyboard Macros,  Prev: Disabling Commands,  Up: Command Loop
-
-Command History
-===============
-
-   The command loop keeps a history of the complex commands that have
-been executed, to make it convenient to repeat these commands.  A
-"complex command" is one for which the interactive argument reading
-uses the minibuffer.  This includes any `M-x' command, any `M-:'
-command, and any command whose `interactive' specification reads an
-argument from the minibuffer.  Explicit use of the minibuffer during
-the execution of the command itself does not cause the command to be
-considered complex.
-
- - Variable: command-history
-     This variable's value is a list of recent complex commands, each
-     represented as a form to evaluate.  It continues to accumulate all
-     complex commands for the duration of the editing session, but all
-     but the first (most recent) thirty elements are deleted when a
-     garbage collection takes place (*note Garbage Collection::.).
-
-          command-history
-          => ((switch-to-buffer "chistory.texi")
-              (describe-key "^X^[")
-              (visit-tags-table "~/emacs/src/")
-              (find-tag "repeat-complex-command"))
-
-   This history list is actually a special case of minibuffer history
-(*note Minibuffer History::.), with one special twist: the elements are
-expressions rather than strings.
-
-   There are a number of commands devoted to the editing and recall of
-previous commands.  The commands `repeat-complex-command', and
-`list-command-history' are described in the user manual (*note
-Repetition: (xemacs)Repetition.).  Within the minibuffer, the history
-commands used are the same ones available in any minibuffer.
-
-\1f
-File: lispref.info,  Node: Keyboard Macros,  Prev: Command History,  Up: Command Loop
-
-Keyboard Macros
-===============
-
-   A "keyboard macro" is a canned sequence of input events that can be
-considered a command and made the definition of a key.  The Lisp
-representation of a keyboard macro is a string or vector containing the
-events.  Don't confuse keyboard macros with Lisp macros (*note
-Macros::.).
-
- - Function: execute-kbd-macro MACRO &optional COUNT
-     This function executes MACRO as a sequence of events.  If MACRO is
-     a string or vector, then the events in it are executed exactly as
-     if they had been input by the user.  The sequence is *not*
-     expected to be a single key sequence; normally a keyboard macro
-     definition consists of several key sequences concatenated.
-
-     If MACRO is a symbol, then its function definition is used in
-     place of MACRO.  If that is another symbol, this process repeats.
-     Eventually the result should be a string or vector.  If the result
-     is not a symbol, string, or vector, an error is signaled.
-
-     The argument COUNT is a repeat count; MACRO is executed that many
-     times.  If COUNT is omitted or `nil', MACRO is executed once.  If
-     it is 0, MACRO is executed over and over until it encounters an
-     error or a failing search.
-
- - Variable: executing-macro
-     This variable contains the string or vector that defines the
-     keyboard macro that is currently executing.  It is `nil' if no
-     macro is currently executing.  A command can test this variable to
-     behave differently when run from an executing macro.  Do not set
-     this variable yourself.
-
- - Variable: defining-kbd-macro
-     This variable indicates whether a keyboard macro is being defined.
-     A command can test this variable to behave differently while a
-     macro is being defined.  The commands `start-kbd-macro' and
-     `end-kbd-macro' set this variable--do not set it yourself.
-
- - Variable: last-kbd-macro
-     This variable is the definition of the most recently defined
-     keyboard macro.  Its value is a string or vector, or `nil'.
-
-   The commands are described in the user's manual (*note Keyboard
-Macros: (xemacs)Keyboard Macros.).
-
-\1f
-File: lispref.info,  Node: Keymaps,  Next: Menus,  Prev: Command Loop,  Up: Top
-
-Keymaps
-*******
-
-   The bindings between input events and commands are recorded in data
-structures called "keymaps".  Each binding in a keymap associates (or
-"binds") an individual event type either with another keymap or with a
-command.  When an event is bound to a keymap, that keymap is used to
-look up the next input event; this continues until a command is found.
-The whole process is called "key lookup".
-
-* Menu:
-
-* Keymap Terminology::       Definitions of terms pertaining to keymaps.
-* Format of Keymaps::        What a keymap looks like as a Lisp object.
-* Creating Keymaps::         Functions to create and copy keymaps.
-* Inheritance and Keymaps::  How one keymap can inherit the bindings
-                                of another keymap.
-* Key Sequences::            How to specify key sequences.
-* Prefix Keys::              Defining a key with a keymap as its definition.
-* Active Keymaps::           Each buffer has a local keymap
-                                to override the standard (global) bindings.
-                                A minor mode can also override them.
-* Key Lookup::               How extracting elements from keymaps works.
-* Functions for Key Lookup:: How to request key lookup.
-* Changing Key Bindings::    Redefining a key in a keymap.
-* Key Binding Commands::     Interactive interfaces for redefining keys.
-* Scanning Keymaps::         Looking through all keymaps, for printing help.
-* Other Keymap Functions::   Miscellaneous keymap functions.
-
-\1f
-File: lispref.info,  Node: Keymap Terminology,  Next: Format of Keymaps,  Up: Keymaps
-
-Keymap Terminology
-==================
-
-   A "keymap" is a table mapping event types to definitions (which can
-be any Lisp objects, though only certain types are meaningful for
-execution by the command loop).  Given an event (or an event type) and a
-keymap, XEmacs can get the event's definition.  Events mapped in keymaps
-include keypresses, button presses, and button releases (*note
-Events::.).
-
-   A sequence of input events that form a unit is called a "key
-sequence", or "key" for short.  A sequence of one event is always a key
-sequence, and so are some multi-event sequences.
-
-   A keymap determines a binding or definition for any key sequence.  If
-the key sequence is a single event, its binding is the definition of the
-event in the keymap.  The binding of a key sequence of more than one
-event is found by an iterative process: the binding of the first event
-is found, and must be a keymap; then the second event's binding is found
-in that keymap, and so on until all the events in the key sequence are
-used up.
-
-   If the binding of a key sequence is a keymap, we call the key
-sequence a "prefix key".  Otherwise, we call it a "complete key"
-(because no more events can be added to it).  If the binding is `nil',
-we call the key "undefined".  Examples of prefix keys are `C-c', `C-x',
-and `C-x 4'.  Examples of defined complete keys are `X', <RET>, and
-`C-x 4 C-f'.  Examples of undefined complete keys are `C-x C-g', and
-`C-c 3'.  *Note Prefix Keys::, for more details.
-
-   The rule for finding the binding of a key sequence assumes that the
-intermediate bindings (found for the events before the last) are all
-keymaps; if this is not so, the sequence of events does not form a
-unit--it is not really a key sequence.  In other words, removing one or
-more events from the end of any valid key must always yield a prefix
-key.  For example, `C-f C-n' is not a key; `C-f' is not a prefix key,
-so a longer sequence starting with `C-f' cannot be a key.
-
-   Note that the set of possible multi-event key sequences depends on
-the bindings for prefix keys; therefore, it can be different for
-different keymaps, and can change when bindings are changed.  However,
-a one-event sequence is always a key sequence, because it does not
-depend on any prefix keys for its well-formedness.
-
-   At any time, several primary keymaps are "active"--that is, in use
-for finding key bindings.  These are the "global map", which is shared
-by all buffers; the "local keymap", which is usually associated with a
-specific major mode; and zero or more "minor mode keymaps", which
-belong to currently enabled minor modes.  (Not all minor modes have
-keymaps.)  The local keymap bindings shadow (i.e., take precedence
-over) the corresponding global bindings.  The minor mode keymaps shadow
-both local and global keymaps.  *Note Active Keymaps::, for details.
-
-\1f
-File: lispref.info,  Node: Format of Keymaps,  Next: Creating Keymaps,  Prev: Keymap Terminology,  Up: Keymaps
-
-Format of Keymaps
-=================
-
-   A keymap is a primitive type that associates events with their
-bindings.  Note that this is different from Emacs 18 and FSF Emacs,
-where keymaps are lists.
-
- - Function: keymapp OBJECT
-     This function returns `t' if OBJECT is a keymap, `nil' otherwise.
-
-\1f
-File: lispref.info,  Node: Creating Keymaps,  Next: Inheritance and Keymaps,  Prev: Format of Keymaps,  Up: Keymaps
-
-Creating Keymaps
-================
-
-   Here we describe the functions for creating keymaps.
-
- - Function: make-keymap &optional NAME
-     This function constructs and returns a new keymap object.  All
-     entries in it are `nil', meaning "command undefined".
-
-     Optional argument NAME specifies a name to assign to the keymap,
-     as in `set-keymap-name'.  This name is only a debugging
-     convenience; it is not used except when printing the keymap.
-
- - Function: make-sparse-keymap &optional NAME
-     This function constructs and returns a new keymap object.  All
-     entries in it are `nil', meaning "command undefined".  The only
-     difference between this function and `make-keymap' is that this
-     function returns a "smaller" keymap (one that is expected to
-     contain fewer entries).  As keymaps dynamically resize, the
-     distinction is not great.
-
-     Optional argument NAME specifies a name to assign to the keymap,
-     as in `set-keymap-name'.  This name is only a debugging
-     convenience; it is not used except when printing the keymap.
-
- - Function: set-keymap-name KEYMAP NEW-NAME
-     This function assigns a "name" to a keymap.  The name is only a
-     debugging convenience; it is not used except when printing the
-     keymap.
-
- - Function: keymap-name KEYMAP
-     This function returns the "name" of a keymap, as assigned using
-     `set-keymap-name'.
-
- - Function: copy-keymap KEYMAP
-     This function returns a copy of KEYMAP.  Any keymaps that appear
-     directly as bindings in KEYMAP are also copied recursively, and so
-     on to any number of levels.  However, recursive copying does not
-     take place when the definition of a character is a symbol whose
-     function definition is a keymap; the same symbol appears in the
-     new copy.
-
-          (setq map (copy-keymap (current-local-map)))
-          => #<keymap 3 entries 0x21f80>
-          
-          (eq map (current-local-map))
-              => nil
-
-\1f
-File: lispref.info,  Node: Inheritance and Keymaps,  Next: Key Sequences,  Prev: Creating Keymaps,  Up: Keymaps
-
-Inheritance and Keymaps
-=======================
-
-   A keymap can inherit the bindings of other keymaps.  The other
-keymaps are called the keymap's "parents", and are set with
-`set-keymap-parents'.  When searching for a binding for a key sequence
-in a particular keymap, that keymap itself will first be searched;
-then, if no binding was found in the map and it has parents, the first
-parent keymap will be searched; then that keymap's parent will be
-searched, and so on, until either a binding for the key sequence is
-found, or a keymap without a parent is encountered.  At this point, the
-search will continue with the next parent of the most recently
-encountered keymap that has another parent, etc.  Essentially, a
-depth-first search of all the ancestors of the keymap is conducted.
-
-   `(current-global-map)' is the default parent of all keymaps.
-
- - Function: set-keymap-parents KEYMAP PARENTS
-     This function sets the parent keymaps of KEYMAP to the list
-     PARENTS.
-
-     If you change the bindings in one of the keymaps in PARENTS using
-     `define-key' or other key-binding functions, these changes are
-     visible in KEYMAP unless shadowed by bindings in that map or in
-     earlier-searched ancestors.  The converse is not true: if you use
-     `define-key' to change KEYMAP, that affects the bindings in that
-     map, but has no effect on any of the keymaps in PARENTS.
-
- - Function: keymap-parents KEYMAP
-     This function returns the list of parent keymaps of KEYMAP, or
-     `nil' if KEYMAP has no parents.
-
-   As an alternative to specifying a parent, you can also specify a
-"default binding" that is used whenever a key is not otherwise bound in
-the keymap.  This is useful for terminal emulators, for example, which
-may want to trap all keystrokes and pass them on in some modified
-format.  Note that if you specify a default binding for a keymap,
-neither the keymap's parents nor the current global map are searched for
-key bindings.
-
- - Function: set-keymap-default-binding KEYMAP COMMAND
-     This function sets the default binding of KEYMAP to COMMAND, or
-     `nil' if no default is desired.
-
- - Function: keymap-default-binding KEYMAP
-     This function returns the default binding of KEYMAP, or `nil' if
-     it has none.
-
-\1f
-File: lispref.info,  Node: Key Sequences,  Next: Prefix Keys,  Prev: Inheritance and Keymaps,  Up: Keymaps
-
-Key Sequences
-=============
-
-   Contrary to popular belief, the world is not ASCII.  When running
-under a window manager, XEmacs can tell the difference between, for
-example, the keystrokes `control-h', `control-shift-h', and
-`backspace'.  You can, in fact, bind different commands to each of
-these.
-
-   A "key sequence" is a set of keystrokes.  A "keystroke" is a keysym
-and some set of modifiers (such as <CONTROL> and <META>).  A "keysym"
-is what is printed on the keys on your keyboard.
-
-   A keysym may be represented by a symbol, or (if and only if it is
-equivalent to an ASCII character in the range 32 - 255) by a character
-or its equivalent ASCII code.  The `A' key may be represented by the
-symbol `A', the character `?A', or by the number 65.  The `break' key
-may be represented only by the symbol `break'.
-
-   A keystroke may be represented by a list: the last element of the
-list is the key (a symbol, character, or number, as above) and the
-preceding elements are the symbolic names of modifier keys (<CONTROL>,
-<META>, <SUPER>, <HYPER>, <ALT>, and <SHIFT>).  Thus, the sequence
-`control-b' is represented by the forms `(control b)', `(control ?b)',
-and `(control 98)'.  A keystroke may also be represented by an event
-object, as returned by the `next-command-event' and `read-key-sequence'
-functions.
-
-   Note that in this context, the keystroke `control-b' is *not*
-represented by the number 2 (the ASCII code for `^B') or the character
-`?\^B'.  See below.
-
-   The <SHIFT> modifier is somewhat of a special case.  You should not
-(and cannot) use `(meta shift a)' to mean `(meta A)', since for
-characters that have ASCII equivalents, the state of the shift key is
-implicit in the keysym (`a' vs. `A').  You also cannot say `(shift =)'
-to mean `+', as that sort of thing varies from keyboard to keyboard.
-The <SHIFT> modifier is for use only with characters that do not have a
-second keysym on the same key, such as `backspace' and `tab'.
-
-   A key sequence is a vector of keystrokes.  As a degenerate case,
-elements of this vector may also be keysyms if they have no modifiers.
-That is, the `A' keystroke is represented by all of these forms:
-
-       A       ?A      65      (A)     (?A)    (65)
-       [A]     [?A]    [65]    [(A)]   [(?A)]  [(65)]
-
-   the `control-a' keystroke is represented by these forms:
-
-       (control A)     (control ?A)    (control 65)
-       [(control A)]   [(control ?A)]  [(control 65)]
-
-   the key sequence `control-c control-a' is represented by these forms:
-
-       [(control c) (control a)]       [(control ?c) (control ?a)]
-       [(control 99) (control 65)]     etc.
-
-   Mouse button clicks work just like keypresses: `(control button1)'
-means pressing the left mouse button while holding down the control
-key.  `[(control c) (shift button3)]' means `control-c', hold <SHIFT>,
-click right.
-
-   Commands may be bound to the mouse-button up-stroke rather than the
-down-stroke as well.  `button1' means the down-stroke, and `button1up'
-means the up-stroke.  Different commands may be bound to the up and
-down strokes, though that is probably not what you want, so be careful.
-
-   For backward compatibility, a key sequence may also be represented by
-a string.  In this case, it represents the key sequence(s) that would
-produce that sequence of ASCII characters in a purely ASCII world.  For
-example, a string containing the ASCII backspace character, `"\^H"',
-would represent two key sequences: `(control h)' and `backspace'.
-Binding a command to this will actually bind both of those key
-sequences.  Likewise for the following pairs:
-
-               control h       backspace
-               control i       tab
-               control m       return
-               control j       linefeed
-               control [       escape
-               control @       control space
-
-   After binding a command to two key sequences with a form like
-
-       (define-key global-map "\^X\^I" 'command-1)
-
-it is possible to redefine only one of those sequences like so:
-
-       (define-key global-map [(control x) (control i)] 'command-2)
-       (define-key global-map [(control x) tab] 'command-3)
-
-   Of course, all of this applies only when running under a window
-system.  If you're talking to XEmacs through a TTY connection, you
-don't get any of these features.
-
- - Function: event-matches-key-specifier-p EVENT KEY-SPECIFIER
-     This function returns non-`nil' if EVENT matches KEY-SPECIFIER,
-     which can be any valid form representing a key sequence.  This can
-     be useful, e.g., to determine if the user pressed `help-char' or
-     `quit-char'.
-
-\1f
-File: lispref.info,  Node: Prefix Keys,  Next: Active Keymaps,  Prev: Key Sequences,  Up: Keymaps
-
-Prefix Keys
-===========
-
-   A "prefix key" has an associated keymap that defines what to do with
-key sequences that start with the prefix key.  For example, `C-x' is a
-prefix key, and it uses a keymap that is also stored in the variable
-`ctl-x-map'.  Here is a list of the standard prefix keys of XEmacs and
-their keymaps:
-
-   * `help-map' is used for events that follow `C-h'.
-
-   * `mode-specific-map' is for events that follow `C-c'.  This map is
-     not actually mode specific; its name was chosen to be informative
-     for the user in `C-h b' (`display-bindings'), where it describes
-     the main use of the `C-c' prefix key.
-
-   * `ctl-x-map' is the map used for events that follow `C-x'.  This
-     map is also the function definition of `Control-X-prefix'.
-
-   * `ctl-x-4-map' is used for events that follow `C-x 4'.
-
-   * `ctl-x-5-map' is used for events that follow `C-x 5'.
-
-   * The prefix keys `C-x n', `C-x r' and `C-x a' use keymaps that have
-     no special name.
-
-   * `esc-map' is an evil hack that is present for compatibility
-     purposes with Emacs 18.  Defining a key in `esc-map' is equivalent
-     to defining the same key in `global-map' but with the <META>
-     prefix added.  You should *not* use this in your code. (This map is
-     also the function definition of `ESC-prefix'.)
-
-   The binding of a prefix key is the keymap to use for looking up the
-events that follow the prefix key.  (It may instead be a symbol whose
-function definition is a keymap.  The effect is the same, but the symbol
-serves as a name for the prefix key.)  Thus, the binding of `C-x' is
-the symbol `Control-X-prefix', whose function definition is the keymap
-for `C-x' commands.  (The same keymap is also the value of `ctl-x-map'.)
-
-   Prefix key definitions can appear in any active keymap.  The
-definitions of `C-c', `C-x', `C-h' and <ESC> as prefix keys appear in
-the global map, so these prefix keys are always available.  Major and
-minor modes can redefine a key as a prefix by putting a prefix key
-definition for it in the local map or the minor mode's map.  *Note
-Active Keymaps::.
-
-   If a key is defined as a prefix in more than one active map, then its
-various definitions are in effect merged: the commands defined in the
-minor mode keymaps come first, followed by those in the local map's
-prefix definition, and then by those from the global map.
-
-   In the following example, we make `C-p' a prefix key in the local
-keymap, in such a way that `C-p' is identical to `C-x'.  Then the
-binding for `C-p C-f' is the function `find-file', just like `C-x C-f'.
-The key sequence `C-p 6' is not found in any active keymap.
-
-     (use-local-map (make-sparse-keymap))
-         => nil
-     (local-set-key "\C-p" ctl-x-map)
-         => nil
-     (key-binding "\C-p\C-f")
-         => find-file
-     
-     (key-binding "\C-p6")
-         => nil
-
- - Function: define-prefix-command SYMBOL &optional MAPVAR
-     This function defines SYMBOL as a prefix command: it creates a
-     keymap and stores it as SYMBOL's function definition.  Storing the
-     symbol as the binding of a key makes the key a prefix key that has
-     a name.  If optional argument MAPVAR is not specified, it also
-     sets SYMBOL as a variable, to have the keymap as its value. (If
-     MAPVAR is given and is not `t', its value is stored as the value
-     of SYMBOL.) The function returns SYMBOL.
-
-     In Emacs version 18, only the function definition of SYMBOL was
-     set, not the value as a variable.
-
-\1f
-File: lispref.info,  Node: Active Keymaps,  Next: Key Lookup,  Prev: Prefix Keys,  Up: Keymaps
-
-Active Keymaps
-==============
-
-   XEmacs normally contains many keymaps; at any given time, just a few
-of them are "active" in that they participate in the interpretation of
-user input.  These are the global keymap, the current buffer's local
-keymap, and the keymaps of any enabled minor modes.
-
-   The "global keymap" holds the bindings of keys that are defined
-regardless of the current buffer, such as `C-f'.  The variable
-`global-map' holds this keymap, which is always active.
-
-   Each buffer may have another keymap, its "local keymap", which may
-contain new or overriding definitions for keys.  The current buffer's
-local keymap is always active except when `overriding-local-map' or
-`overriding-terminal-local-map' overrides it.  Extents and text
-properties can specify an alternative local map for certain parts of the
-buffer; see *Note Extents and Events::.
-
-   Each minor mode may have a keymap; if it does, the keymap is active
-when the minor mode is enabled.
-
-   The variable `overriding-local-map' and
-`overriding-terminal-local-map', if non-`nil', specify other local
-keymaps that override the buffer's local map and all the minor mode
-keymaps.
-
-   All the active keymaps are used together to determine what command to
-execute when a key is entered.  XEmacs searches these maps one by one,
-in order of decreasing precedence, until it finds a binding in one of
-the maps.
-
-   More specifically:
-
-   For key-presses, the order of keymaps searched is:
-
-   * the `keymap' property of any extent(s) or text properties at point;
-
-   * any applicable minor-mode maps;
-
-   * the current local map of the current buffer;
-
-   * the current global map.
-
-   For mouse-clicks, the order of keymaps searched is:
-
-   * the current local map of the `mouse-grabbed-buffer' if any;
-
-   * the `keymap' property of any extent(s) at the position of the click
-     (this includes modeline extents);
-
-   * the `modeline-map' of the buffer corresponding to the modeline
-     under the mouse (if the click happened over a modeline);
-
-   * the value of `toolbar-map' in the current buffer (if the click
-     happened over a toolbar);
-
-   * the current local map of the buffer under the mouse (does not
-     apply to toolbar clicks);
-
-   * any applicable minor-mode maps;
-
-   * the current global map.
-
-   Note that if `overriding-local-map' or
-`overriding-terminal-local-map' is non-`nil', *only* those two maps and
-the current global map are searched.
-
-   The procedure for searching a single keymap is called "key lookup";
-see *Note Key Lookup::.
-
-   Since every buffer that uses the same major mode normally uses the
-same local keymap, you can think of the keymap as local to the mode.  A
-change to the local keymap of a buffer (using `local-set-key', for
-example) is seen also in the other buffers that share that keymap.
-
-   The local keymaps that are used for Lisp mode, C mode, and several
-other major modes exist even if they have not yet been used.  These
-local maps are the values of the variables `lisp-mode-map',
-`c-mode-map', and so on.  For most other modes, which are less
-frequently used, the local keymap is constructed only when the mode is
-used for the first time in a session.
-
-   The minibuffer has local keymaps, too; they contain various
-completion and exit commands.  *Note Intro to Minibuffers::.
-
-   *Note Standard Keymaps::, for a list of standard keymaps.
-
- - Function: current-keymaps &optional EVENT-OR-KEYS
-     This function returns a list of the current keymaps that will be
-     searched for bindings.  This lists keymaps such as the current
-     local map and the minor-mode maps, but does not list the parents
-     of those keymaps.  EVENT-OR-KEYS controls which keymaps will be
-     listed.  If EVENT-OR-KEYS is a mouse event (or a vector whose last
-     element is a mouse event), the keymaps for that mouse event will
-     be listed.  Otherwise, the keymaps for key presses will be listed.
-
- - Variable: global-map
-     This variable contains the default global keymap that maps XEmacs
-     keyboard input to commands.  The global keymap is normally this
-     keymap.  The default global keymap is a full keymap that binds
-     `self-insert-command' to all of the printing characters.
-
-     It is normal practice to change the bindings in the global map,
-     but you should not assign this variable any value other than the
-     keymap it starts out with.
-
- - Function: current-global-map
-     This function returns the current global keymap.  This is the same
-     as the value of `global-map' unless you change one or the other.
-
-          (current-global-map)
-          => #<keymap global-map 639 entries 0x221>
-
- - Function: current-local-map
-     This function returns the current buffer's local keymap, or `nil'
-     if it has none.  In the following example, the keymap for the
-     `*scratch*' buffer (using Lisp Interaction mode) has a number of
-     entries, including one prefix key, `C-x'.
-
-          (current-local-map)
-          => #<keymap lisp-interaction-mode-map 5 entries 0x558>
-          (describe-bindings-internal (current-local-map))
-          =>  ; Inserted into the buffer:
-          backspace    backward-delete-char-untabify
-          linefeed     eval-print-last-sexp
-          delete               delete-char
-          C-j          eval-print-last-sexp
-          C-x          << Prefix Command >>
-          M-tab                lisp-complete-symbol
-          M-;          lisp-indent-for-comment
-          M-C-i                lisp-complete-symbol
-          M-C-q                indent-sexp
-          M-C-x                eval-defun
-          Alt-backspace        backward-kill-sexp
-          Alt-delete   kill-sexp
-          
-          C-x x                edebug-defun
-
- - Function: current-minor-mode-maps
-     This function returns a list of the keymaps of currently enabled
-     minor modes.
-
- - Function: use-global-map KEYMAP
-     This function makes KEYMAP the new current global keymap.  It
-     returns `nil'.
-
-     It is very unusual to change the global keymap.
-
- - Function: use-local-map KEYMAP &optional BUFFER
-     This function makes KEYMAP the new local keymap of BUFFER.  BUFFER
-     defaults to the current buffer.  If KEYMAP is `nil', then the
-     buffer has no local keymap.  `use-local-map' returns `nil'.  Most
-     major mode commands use this function.
-
- - Variable: minor-mode-map-alist
-     This variable is an alist describing keymaps that may or may not be
-     active according to the values of certain variables.  Its elements
-     look like this:
-
-          (VARIABLE . KEYMAP)
-
-     The keymap KEYMAP is active whenever VARIABLE has a non-`nil'
-     value.  Typically VARIABLE is the variable that enables or
-     disables a minor mode.  *Note Keymaps and Minor Modes::.
-
-     Note that elements of `minor-mode-map-alist' do not have the same
-     structure as elements of `minor-mode-alist'.  The map must be the
-     CDR of the element; a list with the map as the second element will
-     not do.
-
-     What's more, the keymap itself must appear in the CDR.  It does not
-     work to store a variable in the CDR and make the map the value of
-     that variable.
-
-     When more than one minor mode keymap is active, their order of
-     priority is the order of `minor-mode-map-alist'.  But you should
-     design minor modes so that they don't interfere with each other.
-     If you do this properly, the order will not matter.
-
-     See also `minor-mode-key-binding', above.  See *Note Keymaps and
-     Minor Modes::, for more information about minor modes.
-
- - Variable: modeline-map
-     This variable holds the keymap consulted for mouse-clicks on the
-     modeline of a window.  This variable may be buffer-local; its
-     value will be looked up in the buffer of the window whose modeline
-     was clicked upon.
-
- - Variable: toolbar-map
-     This variable holds the keymap consulted for mouse-clicks over a
-     toolbar.
-
- - Variable: mouse-grabbed-buffer
-     If non-`nil', a buffer which should be consulted first for all
-     mouse activity.  When a mouse-click is processed, it will first be
-     looked up in the local-map of this buffer, and then through the
-     normal mechanism if there is no binding for that click.  This
-     buffer's value of `mode-motion-hook' will be consulted instead of
-     the `mode-motion-hook' of the buffer of the window under the mouse.
-     You should *bind* this, not set it.
-
- - Variable: overriding-local-map
-     If non-`nil', this variable holds a keymap to use instead of the
-     buffer's local keymap and instead of all the minor mode keymaps.
-     This keymap, if any, overrides all other maps that would have been
-     active, except for the current global map.
-
- - Variable: overriding-terminal-local-map
-     If non-`nil', this variable holds a keymap to use instead of the
-     buffer's local keymap and instead of all the minor mode keymaps,
-     but for the selected console only. (In other words, this variable
-     is always console-local; putting a keymap here only applies to
-     keystrokes coming from the selected console.  *Note Consoles and
-     Devices::.) This keymap, if any, overrides all other maps that
-     would have been active, except for the current global map.
-