Merge mapping to CHINA3-JEF code points.
[chise/xemacs-chise.git] / info / lispref.info-18
index 937c3df..229eec8 100644 (file)
@@ -1,5 +1,5 @@
-This is Info file ../../info/lispref.info, produced by Makeinfo version
-1.68 from the input file lispref.texi.
+This is ../info/lispref.info, produced by makeinfo version 4.0b from
+lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
@@ -50,6 +50,420 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Converting Events,  Prev: Working With Events,  Up: Events
+
+Converting Events
+-----------------
+
+   XEmacs provides some auxiliary functions for converting between
+events and other ways of representing keys.  These are useful when
+working with ASCII strings and with keymaps.
+
+ - Function: character-to-event key-description &optional event console
+          use-console-meta-flag
+     This function converts a keystroke description to an event
+     structure.  KEY-DESCRIPTION is the specification of a key stroke,
+     and EVENT is the event object to fill in.  This function contains
+     knowledge about what the codes "mean"--for example, the number 9 is
+     converted to the character <Tab>, not the distinct character
+     <Control-I>.
+
+     Note that KEY-DESCRIPTION can be an integer, a character, a symbol
+     such as `clear' or a list such as `(control backspace)'.
+
+     If optional arg EVENT is non-`nil', it is modified; otherwise, a
+     new event object is created.  In both cases, the event is returned.
+
+     Optional third arg CONSOLE is the console to store in the event,
+     and defaults to the selected console.
+
+     If KEY-DESCRIPTION is an integer or character, the high bit may be
+     interpreted as the meta key. (This is done for backward
+     compatibility in lots of places.)  If USE-CONSOLE-META-FLAG is
+     `nil', this will always be the case.  If USE-CONSOLE-META-FLAG is
+     non-`nil', the `meta' flag for CONSOLE affects whether the high
+     bit is interpreted as a meta key. (See `set-input-mode'.)  If you
+     don't want this silly meta interpretation done, you should pass in
+     a list containing the character.
+
+     Beware that `character-to-event' and `event-to-character' are not
+     strictly inverse functions, since events contain much more
+     information than the ASCII character set can encode.
+
+ - Function: event-to-character event &optional allow-extra-modifiers
+          allow-meta allow-non-ascii
+     This function returns the closest ASCII approximation to EVENT.
+     If the event isn't a keypress, this returns `nil'.
+
+     If ALLOW-EXTRA-MODIFIERS is non-`nil', then this is lenient in its
+     translation; it will ignore modifier keys other than <control> and
+     <meta>, and will ignore the <shift> modifier on those characters
+     which have no shifted ASCII equivalent (<Control-Shift-A> for
+     example, will be mapped to the same ASCII code as <Control-A>).
+
+     If ALLOW-META is non-`nil', then the <Meta> modifier will be
+     represented by turning on the high bit of the byte returned;
+     otherwise, `nil' will be returned for events containing the <Meta>
+     modifier.
+
+     If ALLOW-NON-ASCII is non-`nil', then characters which are present
+     in the prevailing character set (*note variable
+     `character-set-property': Keymaps.) will be returned as their code
+     in that character set, instead of the return value being
+     restricted to ASCII.
+
+     Note that specifying both ALLOW-META and ALLOW-NON-ASCII is
+     ambiguous, as both use the high bit; <M-x> and <oslash> will be
+     indistinguishable.
+
+ - Function: events-to-keys events &optional no-mice
+     Given a vector of event objects, this function returns a vector of
+     key descriptors, or a string (if they all fit in the ASCII range).
+     Optional arg NO-MICE means that button events are not allowed.
+
+\1f
+File: lispref.info,  Node: Reading Input,  Next: Waiting,  Prev: Events,  Up: Command Loop
+
+Reading Input
+=============
+
+   The editor command loop reads keyboard input using the function
+`next-event' and constructs key sequences out of the events using
+`dispatch-event'.  Lisp programs can also use the function
+`read-key-sequence', which reads input a key sequence at a time.  See
+also `momentary-string-display' in *Note Temporary Displays::, and
+`sit-for' in *Note Waiting::.  *Note Terminal Input::, for functions
+and variables for controlling terminal input modes and debugging
+terminal input.
+
+   For higher-level input facilities, see *Note Minibuffers::.
+
+* Menu:
+
+* Key Sequence Input::         How to read one key sequence.
+* Reading One Event::          How to read just one event.
+* Dispatching an Event::        What to do with an event once it has been read.
+* Quoted Character Input::     Asking the user to specify a character.
+* Peeking and Discarding::     How to reread or throw away input events.
+
+\1f
+File: lispref.info,  Node: Key Sequence Input,  Next: Reading One Event,  Up: Reading Input
+
+Key Sequence Input
+------------------
+
+   Lisp programs can read input a key sequence at a time by calling
+`read-key-sequence'; for example, `describe-key' uses it to read the
+key to describe.
+
+ - Function: read-key-sequence prompt &optional continue-echo
+          dont-downcase-last
+     This function reads a sequence of keystrokes or mouse clicks and
+     returns it as a vector of event objects read.  It keeps reading
+     events until it has accumulated a full key sequence; that is,
+     enough to specify a non-prefix command using the currently active
+     keymaps.
+
+     The vector and the event objects it contains are freshly created
+     (and so will not be side-effected by subsequent calls to this
+     function).
+
+     The function `read-key-sequence' suppresses quitting: `C-g' typed
+     while reading with this function works like any other character,
+     and does not set `quit-flag'.  *Note Quitting::.
+
+     The argument PROMPT is either a string to be displayed in the echo
+     area as a prompt, or `nil', meaning not to display a prompt.
+
+     Second optional arg CONTINUE-ECHO non-`nil' means this key echoes
+     as a continuation of the previous key.
+
+     Third optional arg DONT-DOWNCASE-LAST non-`nil' means do not
+     convert the last event to lower case.  (Normally any upper case
+     event is converted to lower case if the original event is
+     undefined and the lower case equivalent is defined.) This argument
+     is provided mostly for FSF compatibility; the equivalent effect
+     can be achieved more generally by binding
+     `retry-undefined-key-binding-unshifted' to `nil' around the call
+     to `read-key-sequence'.
+
+     If the user selects a menu item while we are prompting for a key
+     sequence, the returned value will be a vector of a single
+     menu-selection event (a misc-user event).  An error will be
+     signalled if you pass this value to `lookup-key' or a related
+     function.
+
+     In the example below, the prompt `?' is displayed in the echo area,
+     and the user types `C-x C-f'.
+
+          (read-key-sequence "?")
+          
+          ---------- Echo Area ----------
+          ?C-x C-f
+          ---------- Echo Area ----------
+          
+               => [#<keypress-event control-X> #<keypress-event control-F>]
+
+   If an input character is an upper-case letter and has no key binding,
+but its lower-case equivalent has one, then `read-key-sequence'
+converts the character to lower case.  Note that `lookup-key' does not
+perform case conversion in this way.
+
+\1f
+File: lispref.info,  Node: Reading One Event,  Next: Dispatching an Event,  Prev: Key Sequence Input,  Up: Reading Input
+
+Reading One Event
+-----------------
+
+   The lowest level functions for command input are those which read a
+single event.  These functions often make a distinction between
+"command events", which are user actions (keystrokes and mouse
+actions), and other events, which serve as communication between XEmacs
+and the window system.
+
+ - Function: next-event &optional event prompt
+     This function reads and returns the next available event from the
+     window system or terminal driver, waiting if necessary until an
+     event is available.  Pass this object to `dispatch-event' to
+     handle it. If an event object is supplied, it is filled in and
+     returned; otherwise a new event object will be created.
+
+     Events can come directly from the user, from a keyboard macro, or
+     from `unread-command-events'.
+
+     In most cases, the function `next-command-event' is more
+     appropriate.
+
+ - Function: next-command-event &optional event prompt
+     This function returns the next available "user" event from the
+     window system or terminal driver.  Pass this object to
+     `dispatch-event' to handle it.  If an event object is supplied, it
+     is filled in and returned, otherwise a new event object will be
+     created.
+
+     The event returned will be a keyboard, mouse press, or mouse
+     release event.  If there are non-command events available (mouse
+     motion, sub-process output, etc) then these will be executed (with
+     `dispatch-event') and discarded.  This function is provided as a
+     convenience; it is equivalent to the Lisp code
+
+                  (while (progn
+                           (next-event event)
+                           (not (or (key-press-event-p event)
+                                    (button-press-event-p event)
+                                    (button-release-event-p event)
+                                    (menu-event-p event))))
+                     (dispatch-event event))
+
+     Here is what happens if you call `next-command-event' and then
+     press the right-arrow function key:
+
+          (next-command-event)
+               => #<keypress-event right>
+
+ - Function: read-char
+     This function reads and returns a character of command input.  If a
+     mouse click is detected, an error is signalled.  The character
+     typed is returned as an ASCII value.  This function is retained for
+     compatibility with Emacs 18, and is most likely the wrong thing
+     for you to be using: consider using `next-command-event' instead.
+
+ - Function: enqueue-eval-event function object
+     This function adds an eval event to the back of the queue.  The
+     eval event will be the next event read after all pending events.
+
+\1f
+File: lispref.info,  Node: Dispatching an Event,  Next: Quoted Character Input,  Prev: Reading One Event,  Up: Reading Input
+
+Dispatching an Event
+--------------------
+
+ - Function: dispatch-event event
+     Given an event object returned by `next-event', this function
+     executes it.  This is the basic function that makes XEmacs respond
+     to user input; it also deals with notifications from the window
+     system (such as Expose events).
+
+\1f
+File: lispref.info,  Node: Quoted Character Input,  Next: Peeking and Discarding,  Prev: Dispatching an Event,  Up: Reading Input
+
+Quoted Character Input
+----------------------
+
+   You can use the function `read-quoted-char' to ask the user to
+specify a character, and allow the user to specify a control or meta
+character conveniently, either literally or as an octal character code.
+The command `quoted-insert' uses this function.
+
+ - Function: read-quoted-char &optional prompt
+     This function is like `read-char', except that if the first
+     character read is an octal digit (0-7), it reads up to two more
+     octal digits (but stopping if a non-octal digit is found) and
+     returns the character represented by those digits in octal.
+
+     Quitting is suppressed when the first character is read, so that
+     the user can enter a `C-g'.  *Note Quitting::.
+
+     If PROMPT is supplied, it specifies a string for prompting the
+     user.  The prompt string is always displayed in the echo area,
+     followed by a single `-'.
+
+     In the following example, the user types in the octal number 177
+     (which is 127 in decimal).
+
+          (read-quoted-char "What character")
+          
+          ---------- Echo Area ----------
+          What character-177
+          ---------- Echo Area ----------
+          
+               => 127
+
+\1f
+File: lispref.info,  Node: Peeking and Discarding,  Prev: Quoted Character Input,  Up: Reading Input
+
+Miscellaneous Event Input Features
+----------------------------------
+
+   This section describes how to "peek ahead" at events without using
+them up, how to check for pending input, and how to discard pending
+input.
+
+   See also the variables `last-command-event' and `last-command-char'
+(*Note Command Loop Info::).
+
+ - Variable: unread-command-events
+     This variable holds a list of events waiting to be read as command
+     input.  The events are used in the order they appear in the list,
+     and removed one by one as they are used.
+
+     The variable is needed because in some cases a function reads a
+     event and then decides not to use it.  Storing the event in this
+     variable causes it to be processed normally, by the command loop
+     or by the functions to read command input.
+
+     For example, the function that implements numeric prefix arguments
+     reads any number of digits.  When it finds a non-digit event, it
+     must unread the event so that it can be read normally by the
+     command loop.  Likewise, incremental search uses this feature to
+     unread events with no special meaning in a search, because these
+     events should exit the search and then execute normally.
+
+
+ - Variable: unread-command-event
+     This variable holds a single event to be read as command input.
+
+     This variable is mostly obsolete now that you can use
+     `unread-command-events' instead; it exists only to support programs
+     written for versions of XEmacs prior to 19.12.
+
+ - Function: input-pending-p
+     This function determines whether any command input is currently
+     available to be read.  It returns immediately, with value `t' if
+     there is available input, `nil' otherwise.  On rare occasions it
+     may return `t' when no input is available.
+
+ - Variable: last-input-event
+     This variable is set to the last keyboard or mouse button event
+     received.
+
+     This variable is off limits: you may not set its value or modify
+     the event that is its value, as it is destructively modified by
+     `read-key-sequence'.  If you want to keep a pointer to this value,
+     you must use `copy-event'.
+
+     Note that this variable is an alias for `last-input-char' in FSF
+     Emacs.
+
+     In the example below, a character is read (the character `1').  It
+     becomes the value of `last-input-event', while `C-e' (from the
+     `C-x C-e' command used to evaluate this expression) remains the
+     value of `last-command-event'.
+
+          (progn (print (next-command-event))
+                 (print last-command-event)
+                 last-input-event)
+               -| #<keypress-event 1>
+               -| #<keypress-event control-E>
+               => #<keypress-event 1>
+
+ - Variable: last-input-char
+     If the value of `last-input-event' is a keyboard event, then this
+     is the nearest ASCII equivalent to it.  Remember that there is
+     _not_ a 1:1 mapping between keyboard events and ASCII characters:
+     the set of keyboard events is much larger, so writing code that
+     examines this variable to determine what key has been typed is bad
+     practice, unless you are certain that it will be one of a small
+     set of characters.
+
+     This function exists for compatibility with Emacs version 18.
+
+ - Function: discard-input
+     This function discards the contents of the terminal input buffer
+     and cancels any keyboard macro that might be in the process of
+     definition.  It returns `nil'.
+
+     In the following example, the user may type a number of characters
+     right after starting the evaluation of the form.  After the
+     `sleep-for' finishes sleeping, `discard-input' discards any
+     characters typed during the sleep.
+
+          (progn (sleep-for 2)
+                 (discard-input))
+               => nil
+
+\1f
+File: lispref.info,  Node: Waiting,  Next: Quitting,  Prev: Reading Input,  Up: Command Loop
+
+Waiting for Elapsed Time or Input
+=================================
+
+   The wait functions are designed to wait for a certain amount of time
+to pass or until there is input.  For example, you may wish to pause in
+the middle of a computation to allow the user time to view the display.
+`sit-for' pauses and updates the screen, and returns immediately if
+input comes in, while `sleep-for' pauses without updating the screen.
+
+   Note that in FSF Emacs, the commands `sit-for' and `sleep-for' take
+two arguments to specify the time (one integer and one float value),
+instead of a single argument that can be either an integer or a float.
+
+ - Function: sit-for seconds &optional nodisplay
+     This function performs redisplay (provided there is no pending
+     input from the user), then waits SECONDS seconds, or until input is
+     available.  The result is `t' if `sit-for' waited the full time
+     with no input arriving (see `input-pending-p' in *Note Peeking and
+     Discarding::).  Otherwise, the value is `nil'.
+
+     The argument SECONDS need not be an integer.  If it is a floating
+     point number, `sit-for' waits for a fractional number of seconds.
+
+     Redisplay is normally preempted if input arrives, and does not
+     happen at all if input is available before it starts. (You can
+     force screen updating in such a case by using `force-redisplay'.
+     *Note Refresh Screen::.) If there is no input pending, you can
+     force an update with no delay by using `(sit-for 0)'.
+
+     If NODISPLAY is non-`nil', then `sit-for' does not redisplay, but
+     it still returns as soon as input is available (or when the
+     timeout elapses).
+
+     The usual purpose of `sit-for' is to give the user time to read
+     text that you display.
+
+ - Function: sleep-for seconds
+     This function simply pauses for SECONDS seconds without updating
+     the display.  This function pays no attention to available input.
+     It returns `nil'.
+
+     The argument SECONDS need not be an integer.  If it is a floating
+     point number, `sleep-for' waits for a fractional number of seconds.
+
+     Use `sleep-for' when you wish to guarantee a delay.
+
+   *Note Time of Day::, for functions to get the current time.
+
+\1f
 File: lispref.info,  Node: Quitting,  Next: Prefix Command Arguments,  Prev: Waiting,  Up: Command Loop
 
 Quitting
 File: lispref.info,  Node: Quitting,  Next: Prefix Command Arguments,  Prev: Waiting,  Up: Command Loop
 
 Quitting
@@ -69,7 +483,7 @@ 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
    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
+_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
 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
@@ -225,41 +639,41 @@ argument, either numeric or raw, in the `interactive' declaration.
 value of the prefix argument directly in the variable
 `current-prefix-arg', but this is less clean.
 
 value of the prefix argument directly in the variable
 `current-prefix-arg', but this is less clean.
 
- - Function: prefix-numeric-value ARG
+ - Function: prefix-numeric-value raw
      This function returns the numeric meaning of a valid raw prefix
      This function returns the numeric meaning of a valid raw prefix
-     argument value, ARG.  The argument may be a symbol, a number, or a
+     argument value, RAW.  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
      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*
+     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
      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
+     _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
      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.
+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: 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
+ - 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.
 
      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
+ - 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.
      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.
@@ -302,7 +716,7 @@ commands.
 `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
 `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'
+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
 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
@@ -327,7 +741,7 @@ 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').
 
    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
+ - Command: 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
      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
@@ -399,12 +813,12 @@ saying the command is disabled includes that string.  For example:
 when a disabled command is invoked interactively.  Disabling a command
 has no effect on calling it as a function from Lisp programs.
 
 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
+ - 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.
 
      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
+ - 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.
      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.
@@ -439,7 +853,7 @@ considered complex.
      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
      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::.).
+     garbage collection takes place (*note Garbage Collection::).
 
           command-history
           => ((switch-to-buffer "chistory.texi")
 
           command-history
           => ((switch-to-buffer "chistory.texi")
@@ -448,7 +862,7 @@ considered complex.
               (find-tag "repeat-complex-command"))
 
    This history list is actually a special case of minibuffer history
               (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
+(*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
 expressions rather than strings.
 
    There are a number of commands devoted to the editing and recall of
@@ -467,12 +881,12 @@ Keyboard Macros
 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
 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::.).
+Macros::).
 
 
- - Function: execute-kbd-macro MACRO &optional COUNT
+ - 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
      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*
+     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.
 
      expected to be a single key sequence; normally a keyboard macro
      definition consists of several key sequences concatenated.
 
@@ -549,7 +963,7 @@ 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
 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::.).
+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
 
    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
@@ -604,7 +1018,7 @@ Format of Keymaps
 bindings.  Note that this is different from Emacs 18 and FSF Emacs,
 where keymaps are lists.
 
 bindings.  Note that this is different from Emacs 18 and FSF Emacs,
 where keymaps are lists.
 
- - Function: keymapp OBJECT
+ - Function: keymapp object
      This function returns `t' if OBJECT is a keymap, `nil' otherwise.
 
 \1f
      This function returns `t' if OBJECT is a keymap, `nil' otherwise.
 
 \1f
@@ -615,7 +1029,7 @@ Creating Keymaps
 
    Here we describe the functions for creating keymaps.
 
 
    Here we describe the functions for creating keymaps.
 
- - Function: make-keymap &optional NAME
+ - Function: make-keymap &optional name
      This function constructs and returns a new keymap object.  All
      entries in it are `nil', meaning "command undefined".
 
      This function constructs and returns a new keymap object.  All
      entries in it are `nil', meaning "command undefined".
 
@@ -623,28 +1037,28 @@ Creating Keymaps
      as in `set-keymap-name'.  This name is only a debugging
      convenience; it is not used except when printing 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
+ - 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
      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
+     contain fewer entries).  As keymaps dynamically resize, this
      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.
 
      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
+ - 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.
 
      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
+ - Function: keymap-name keymap
      This function returns the "name" of a keymap, as assigned using
      `set-keymap-name'.
 
      This function returns the "name" of a keymap, as assigned using
      `set-keymap-name'.
 
- - Function: copy-keymap KEYMAP
+ - 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
      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
@@ -678,7 +1092,7 @@ depth-first search of all the ancestors of the keymap is conducted.
 
    `(current-global-map)' is the default parent of all keymaps.
 
 
    `(current-global-map)' is the default parent of all keymaps.
 
- - Function: set-keymap-parents KEYMAP PARENTS
+ - Function: set-keymap-parents keymap parents
      This function sets the parent keymaps of KEYMAP to the list
      PARENTS.
 
      This function sets the parent keymaps of KEYMAP to the list
      PARENTS.
 
@@ -689,7 +1103,7 @@ depth-first search of all the ancestors of the keymap is conducted.
      `define-key' to change KEYMAP, that affects the bindings in that
      map, but has no effect on any of the keymaps in PARENTS.
 
      `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
+ - Function: keymap-parents keymap
      This function returns the list of parent keymaps of KEYMAP, or
      `nil' if KEYMAP has no parents.
 
      This function returns the list of parent keymaps of KEYMAP, or
      `nil' if KEYMAP has no parents.
 
@@ -701,416 +1115,11 @@ 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.
 
 neither the keymap's parents nor the current global map are searched for
 key bindings.
 
- - Function: set-keymap-default-binding KEYMAP COMMAND
+ - Function: set-keymap-default-binding keymap command
      This function sets the default binding of KEYMAP to COMMAND, or
      `nil' if no default is desired.
 
      This function sets the default binding of KEYMAP to COMMAND, or
      `nil' if no default is desired.
 
- - Function: keymap-default-binding KEYMAP
+ - Function: keymap-default-binding keymap
      This function returns the default binding of KEYMAP, or `nil' if
      it has none.
 
      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.
-