XEmacs 21.2.33 "Melpomene".
authortomo <tomo>
Wed, 10 May 2000 08:31:45 +0000 (08:31 +0000)
committertomo <tomo>
Wed, 10 May 2000 08:31:45 +0000 (08:31 +0000)
info/lispref.info-41
info/lispref.info-42
info/lispref.info-43
info/lispref.info-44
info/lispref.info-45
info/lispref.info-46

index 417c4eb..a0cdfc2 100644 (file)
@@ -330,7 +330,7 @@ Building XEmacs with LDAP support
 linking to an external LDAP client library.  As of 21.2, XEmacs has been
 successfully built and tested with
 
-   * OpenLDAP 1.0.3 (<http://www.openldap.org/>)
+   * OpenLDAP 1.2 (<http://www.openldap.org/>)
 
    * University of Michigan's LDAP 3.3
      (<http://www.umich.edu/~dirsvcs/ldap/>)
@@ -340,7 +340,7 @@ successfully built and tested with
    Other libraries conforming to RFC 1823 will probably work also but
 may require some minor tweaking at C level.
 
-   The standard XEmacs configure script autodetects an installed LDAP
+   The standard XEmacs configure script auto-detects an installed LDAP
 library provided the library itself and the corresponding header files
 can be found in the library and include paths.  A successful detection
 will be signalled in the final output of the configure script.
@@ -356,14 +356,19 @@ tries to stay as close as possible to the C API (where practical) and a
 higher-level layer which provides more convenient primitives to
 effectively use LDAP.
 
-   As of XEmacs 21.0, only interfaces to basic LDAP search functions are
-provided, broader support is planned in future versions.
+   The low-level API should be used directly for very specific purposes
+(such as multiple operations on a connection) only.  The higher-level
+functions provide a more convenient way to access LDAP directories
+hiding the subtleties of handling the connection, translating arguments
+and ensuring compliance with LDAP internationalization rules and formats
+(currently partly implemented only).
 
 * Menu:
 
 * LDAP Variables::              Lisp variables related to LDAP
 * The High-Level LDAP API::     High-level LDAP lisp functions
 * The Low-Level LDAP API::      Low-level LDAP lisp primitives
+* LDAP Internationalization::   I18n variables and functions
 
 \1f
 File: lispref.info,  Node: LDAP Variables,  Next: The High-Level LDAP API,  Prev: XEmacs LDAP API,  Up: XEmacs LDAP API
@@ -381,7 +386,7 @@ LDAP Variables
 
  - Variable: ldap-default-base
      Default base for LDAP searches.  This is a string using the syntax
-     of RFC 1779.  For instance, "o¬ME, cÿ" limits the search to the
+     of RFC 1779.  For instance, "o=ACME, c=US" limits the search to the
      Acme organization in the United States.
 
  - Variable: ldap-host-parameters-alist
@@ -393,7 +398,7 @@ LDAP Variables
      properties:
     `binddn'
           The distinguished name of the user to bind as.  This may look
-          like `cÿ, o¬me, cnÿnny Bugs', see RFC 1779 for details.
+          like `cn=Babs Jensen,o=ACME,c=US', see RFC 1779 for details.
 
     `passwd'
           The password to use for authentication.
@@ -436,40 +441,93 @@ LDAP Variables
           The maximum number of matches to return for searches
           performed on this connection.
 
+ - Variable: ldap-verbose
+     If non-`nil', LDAP operations will echo progress messages.
+     Defaults to `nil'.
+
 \1f
 File: lispref.info,  Node: The High-Level LDAP API,  Next: The Low-Level LDAP API,  Prev: LDAP Variables,  Up: XEmacs LDAP API
 
 The High-Level LDAP API
 -----------------------
 
-   As of this writing the high-level Lisp LDAP API only provides for
-LDAP searches.  Further support is planned in the future.
-
-   The `ldap-search' function provides the most convenient interface to
-perform LDAP searches.  It opens a connection to a host, performs the
-query and cleanly closes the connection thus insulating the user from
+   The following functions provide the most convenient interface to
+perform LDAP operations.  All of them open a connection to a host,
+perform an operation (add/search/modify/delete) on one or several
+entries and cleanly close the connection thus insulating the user from
 all the details of the low-level interface such as LDAP Lisp objects
-*note The Low-Level LDAP API::
-
- - Function: ldap-search filter &optional host attributes attrsonly
+*note The Low-Level LDAP API::.
+
+   Note that `ldap-search' which used to be the name of the high-level
+search function in XEmacs 21.1 is now obsolete.  For consistency  in the
+naming as well as backward compatibility, that function now acts as a
+wrapper that calls either `ldap-search-basic' (low-level search
+function) or `ldap-search-entries' (high-level search function)
+according to the actual parameters.  A direct call to one of these two
+functions is preferred since it is faster and unambiguous.
+
+ - Function: ldap-search-entries filter &optional host attributes
+          attrsonly withdn
      Perform an LDAP search.  FILTER is the search filter *note Syntax
      of Search Filters:: HOST is the LDAP host on which to perform the
-     search ATTRIBUTES is the specific attributes to retrieve, `nil'
-     means retrieve all ATTRSONLY if non-`nil' retrieves the attributes
-     only without their associated values.  Additional search
-     parameters can be specified through `ldap-host-parameters-alist'.
+     search.  ATTRIBUTES is the specific attributes to retrieve, `nil'
+     means retrieve all.  ATTRSONLY if non-`nil' retrieves the
+     attributes only without their associated values.  If WITHDN is
+     non-`nil' each entry in the result will be prepended with its
+     distinguished name DN.  Additional search parameters can be
+     specified through `ldap-host-parameters-alist'.  The function
+     returns a list of matching entries.  Each entry is itself an alist
+     of attribute/value pairs optionally preceded by the DN of the
+     entry according to the value of WITHDN.
+
+ - Function: ldap-add-entries entries &optional host binddn passwd
+     Add entries to an LDAP directory.  ENTRIES is a list of entry
+     specifications of the form `(DN (ATTR . VALUE) (ATTR . VALUE) ...)'
+     where DN the distinguished name of an entry to add, the following
+     are cons cells containing attribute/value string pairs.  HOST is
+     the LDAP host, defaulting to `ldap-default-host' BINDDN is the DN
+     to bind as to the server PASSWD is the corresponding password.
+
+ - Function: ldap-modify-entries entry-mods &optional host binddn passwd
+     Modify entries of an LDAP directory.  ENTRY_MODS is a list of
+     entry modifications of the form `(DN MOD-SPEC1 MOD-SPEC2 ...)'
+     where DN is the distinguished name of the entry to modify, the
+     following are modification specifications.  A modification
+     specification is itself a list of the form `(MOD-OP ATTR VALUE1
+     VALUE2 ...)' MOD-OP and ATTR are mandatory, VALUES are optional
+     depending on MOD-OP.  MOD-OP is the type of modification, one of
+     the symbols `add', `delete' or `replace'. ATTR is the LDAP
+     attribute type to modify.  HOST is the LDAP host, defaulting to
+     `ldap-default-host' BINDDN is the DN to bind as to the server
+     PASSWD is the corresponding password"
+
+ - Function: ldap-delete-entries dn &optional host binddn passwd
+     Delete an entry from an LDAP directory.  DN is the distinguished
+     name of an entry to delete or a list of those.  HOST is the LDAP
+     host, defaulting to `ldap-default-host' BINDDN is the DN to bind
+     as to the server PASSWD is the corresponding password.
 
 \1f
-File: lispref.info,  Node: The Low-Level LDAP API,  Prev: The High-Level LDAP API,  Up: XEmacs LDAP API
+File: lispref.info,  Node: The Low-Level LDAP API,  Next: LDAP Internationalization,  Prev: The High-Level LDAP API,  Up: XEmacs LDAP API
 
 The Low-Level LDAP API
 ----------------------
 
+   The low-level API should be used directly for very specific purposes
+(such as multiple operations on a connection) only.  The higher-level
+functions provide a more convenient way to access LDAP directories
+hiding the subtleties of handling the connection, translating arguments
+and ensuring compliance with LDAP internationalization rules and formats
+(currently partly implemented only). See *note The High-Level LDAP API::
+
+   Note that the former functions `ldap-*-internal' functions have been
+renamed in XEmacs 21.2
+
 * Menu:
 
 * The LDAP Lisp Object::
 * Opening and Closing a LDAP Connection::
-* Searching on a LDAP Server (Low-level)::
+* Low-level Operations on a LDAP Server::
 
 \1f
 File: lispref.info,  Node: The LDAP Lisp Object,  Next: Opening and Closing a LDAP Connection,  Prev: The Low-Level LDAP API,  Up: The Low-Level LDAP API
@@ -489,7 +547,7 @@ The LDAP Lisp Object
      Return non-`nil' if LDAP is an active LDAP connection
 
 \1f
-File: lispref.info,  Node: Opening and Closing a LDAP Connection,  Next: Searching on a LDAP Server (Low-level),  Prev: The LDAP Lisp Object,  Up: The Low-Level LDAP API
+File: lispref.info,  Node: Opening and Closing a LDAP Connection,  Next: Low-level Operations on a LDAP Server,  Prev: The LDAP Lisp Object,  Up: The Low-Level LDAP API
 
 Opening and Closing a LDAP Connection
 .....................................
@@ -509,7 +567,8 @@ Opening and Closing a LDAP Connection
 
     `binddn'
           The distinguished name of the user to bind as.  This may look
-          like `cÿ, o¬me, cnÿnny Bugs', see RFC 1779 for details.
+          like `c=com, o=Acme, cn=Babs Jensen', see RFC 1779 for
+          details.
 
     `passwd'
           The password to use for authentication.
@@ -542,18 +601,18 @@ Opening and Closing a LDAP Connection
      Close the connection represented by LDAP
 
 \1f
-File: lispref.info,  Node: Searching on a LDAP Server (Low-level),  Prev: Opening and Closing a LDAP Connection,  Up: The Low-Level LDAP API
+File: lispref.info,  Node: Low-level Operations on a LDAP Server,  Prev: Opening and Closing a LDAP Connection,  Up: The Low-Level LDAP API
 
-Searching on a LDAP Server (Low-level)
-......................................
+Low-level Operations on a LDAP Server
+.....................................
 
-   `ldap-search-internal' is the low-level primitive to perform a
-search on a LDAP server.  It works directly on an open LDAP connection
-thus requiring a preliminary call to `ldap-open'.  Multiple searches
-can be made on the same connection, then the session must be closed
-with `ldap-close'.
+   `ldap-search-basic' is the low-level primitive to perform a search
+on a LDAP server.  It works directly on an open LDAP connection thus
+requiring a preliminary call to `ldap-open'.  Multiple searches can be
+made on the same connection, then the session must be closed with
+`ldap-close'.
 
- - Function: ldap-search-internal ldap filter base scope attrs attrsonly
+ - Function: ldap-search-basic ldap filter base scope attrs attrsonly
      Perform a search on an open connection LDAP created with
      `ldap-open'.  FILTER is a filter string for the search *note
      Syntax of Search Filters:: BASE is the distinguished name at which
@@ -564,8 +623,125 @@ with `ldap-close'.
      which attributes to retrieve for each matching entry. If `nil' all
      available attributes are returned.  If `attrsonly' is non-`nil'
      then only the attributes are retrieved, not their associated values
-     The function returns a list of matching entries.  Each entry being
-     itself an alist of attribute/values.
+     If `withdn' is non-`nil' then each entry in the result is
+     prepended with its distinguished name DN If `verbose' is non-`nil'
+     then progress messages are echoed The function returns a list of
+     matching entries.  Each entry  is itself an alist of
+     attribute/value pairs optionally preceded by the DN of the entry
+     according to the value of `withdn'.
+
+ - Function: ldap-add ldap dn entry
+     Add ENTRY to a LDAP directory which a connection LDAP has been
+     opened to with `ldap-open'.  DN is the distinguished name of the
+     entry to add.  ENTRY is an entry specification, i.e., a list of
+     cons cells containing attribute/value string pairs.
+
+ - Function: ldap-modify ldap dn mods
+     Modify an entry in an LDAP directory.  LDAP is an LDAP connection
+     object created with `ldap-open'.  DN is the distinguished name of
+     the entry to modify.  MODS is a list of modifications to apply.  A
+     modification is a list of the form `(MOD-OP ATTR VALUE1 VALUE2
+     ...)'  MOD-OP and ATTR are mandatory, VALUES are optional
+     depending on MOD-OP.  MOD-OP is the type of modification, one of
+     the symbols `add', `delete' or `replace'. ATTR is the LDAP
+     attribute type to modify
+
+ - Function: ldap-delete ldap dn
+     Delete an entry to an LDAP directory.  LDAP is an LDAP connection
+     object created with `ldap-open'.  DN is the distinguished name of
+     the entry to delete
+
+\1f
+File: lispref.info,  Node: LDAP Internationalization,  Prev: The Low-Level LDAP API,  Up: XEmacs LDAP API
+
+LDAP Internationalization
+-------------------------
+
+   The XEmacs LDAP API provides basic internationalization features
+based on the LDAP v3 specification (essentially RFC2252 on "LDAP v3
+Attribute Syntax Definitions").  Unfortunately since there is currently
+no free LDAP v3 server software, this part has not received much
+testing and should be considered experimental.  The framework is in
+place though.
+
+ - Function: ldap-decode-attribute attr
+     Decode the attribute/value pair ATTR according to LDAP rules.  The
+     attribute name is looked up in `ldap-attribute-syntaxes-alist' and
+     the corresponding decoder is then retrieved from
+     `ldap-attribute-syntax-decoders'' and applied on the value(s).
+
+* Menu:
+
+* LDAP Internationalization Variables::
+* Encoder/Decoder Functions::
+
+\1f
+File: lispref.info,  Node: LDAP Internationalization Variables,  Next: Encoder/Decoder Functions,  Prev: LDAP Internationalization,  Up: LDAP Internationalization
+
+LDAP Internationalization Variables
+...................................
+
+ - Variable: ldap-ignore-attribute-codings
+     If non-`nil', no encoding/decoding will be performed LDAP
+     attribute values
+
+ - Variable: ldap-coding-system
+     Coding system of LDAP string values.  LDAP v3 specifies the coding
+     system of strings to be UTF-8.  You need an XEmacs with Mule
+     support for this.
+
+ - Variable: ldap-default-attribute-decoder
+     Decoder function to use for attributes whose syntax is unknown.
+     Such a function receives an encoded attribute value as a string
+     and should return the decoded value as a string
+
+ - Variable: ldap-attribute-syntax-encoders
+     A vector of functions used to encode LDAP attribute values.  The
+     sequence of functions corresponds to the sequence of LDAP
+     attribute syntax object identifiers of the form
+     1.3.6.1.4.1.1466.1115.121.1.* as defined in RFC2252 section 4.3.2.
+     As of this writing, only a few encoder functions are available.
+
+ - Variable: ldap-attribute-syntax-decoders
+     A vector of functions used to decode LDAP attribute values.  The
+     sequence of functions corresponds to the sequence of LDAP
+     attribute syntax object identifiers of the form
+     1.3.6.1.4.1.1466.1115.121.1.* as defined in RFC2252 section 4.3.2.
+     As of this writing, only a few decoder functions are available.
+
+ - Variable: ldap-attribute-syntaxes-alist
+     A map of LDAP attribute names to their type object id minor number.
+     This table is built from RFC2252 Section 5 and RFC2256 Section 5
+
+\1f
+File: lispref.info,  Node: Encoder/Decoder Functions,  Prev: LDAP Internationalization Variables,  Up: LDAP Internationalization
+
+Encoder/Decoder Functions
+.........................
+
+ - Function: ldap-encode-boolean bool
+     A function that encodes an elisp boolean BOOL into a LDAP boolean
+     string representation
+
+ - Function: ldap-decode-boolean str
+     A function that decodes a LDAP boolean string representation STR
+     into an elisp boolean
+
+ - Function: ldap-decode-string str
+     Decode a string STR according to `ldap-coding-system'
+
+ - Function: ldap-encode-string str
+     Encode a string STR according to `ldap-coding-system'
+
+ - Function: ldap-decode-address str
+     Decode an address STR according to `ldap-coding-system' and
+     replacing $ signs with newlines as specified by LDAP encoding
+     rules for addresses
+
+ - Function: ldap-encode-address str
+     Encode an address STR according to `ldap-coding-system' and
+     replacing newlines with $ signs as specified by LDAP encoding
+     rules for addresses
 
 \1f
 File: lispref.info,  Node: Syntax of Search Filters,  Prev: XEmacs LDAP API,  Up: LDAP Support
@@ -775,477 +951,3 @@ connection and when the `pq-setenv' call is made.
 
      Compatibility Note: This variable is not present in InfoDock.
 
-\1f
-File: lispref.info,  Node: libpq Lisp Symbols and DataTypes,  Next: Synchronous Interface Functions,  Prev: libpq Lisp Variables,  Up: XEmacs PostgreSQL libpq API
-
-libpq Lisp Symbols and Datatypes
---------------------------------
-
-   The following set of symbols are used to represent the intermediate
-states involved in the asynchronous interface.
-
- - Symbol: pgres::polling-failed
-     Undocumented.  A fatal error has occurred during processing of an
-     asynchronous operation.
-
- - Symbol: pgres::polling-reading
-     An intermediate status return during an asynchronous operation.  It
-     indicates that one may use `select' before polling again.
-
- - Symbol: pgres::polling-writing
-     An intermediate status return during an asynchronous operation.  It
-     indicates that one may use `select' before polling again.
-
- - Symbol: pgres::polling-ok
-     An asynchronous operation has successfully completed.
-
- - Symbol: pgres::polling-active
-     An intermediate status return during an asynchronous operation.
-     One can call the poll function again immediately.
-
- - Function: pq-pgconn conn field
-     CONN A database connection object.  FIELD A symbol indicating
-     which field of PGconn to fetch.  Possible values are shown in the
-     following table.
-    `pq::db'
-          Database name
-
-    `pq::user'
-          Database user name
-
-    `pq::pass'
-          Database user's password
-
-    `pq::host'
-          Hostname database server is running on
-
-    `pq::port'
-          TCP port number used in the connection
-
-    `pq::tty'
-          Debugging TTY
-
-          Compatibility note:  Debugging TTYs are not used in the
-          XEmacs Lisp API.
-
-    `pq::options'
-          Additional server options
-
-    `pq::status'
-          Connection status.  Possible return values are shown in the
-          following table.
-         `pg::connection-ok'
-               The normal, connected status.
-
-         `pg::connection-bad'
-               The connection is not open and the PGconn object needs
-               to be deleted by `pq-finish'.
-
-         `pg::connection-started'
-               An asynchronous connection has been started, but is not
-               yet complete.
-
-         `pg::connection-made'
-               An asynchronous connect has been made, and there is data
-               waiting to be sent.
-
-         `pg::connection-awaiting-response'
-               Awaiting data from the backend during an asynchronous
-               connection.
-
-         `pg::connection-auth-ok'
-               Received authentication, waiting for the backend to
-               start up.
-
-         `pg::connection-setenv'
-               Negotiating environment during an asynchronous
-               connection.
-
-    `pq::error-message'
-          The last error message that was delivered to this connection.
-
-    `pq::backend-pid'
-          The process ID of the backend database server.
-
-   The `PGresult' object is used by libpq to encapsulate the results of
-queries.  The printed representation takes on four forms.  When the
-PGresult object contains tuples from an SQL `SELECT' it will look like:
-
-     (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-          => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-
-   The number in brackets indicates how many rows of data are available.
-When the PGresult object is the result of a command query that doesn't
-return anything, it will look like:
-
-     (pq-exec P "CREATE TABLE a_new_table (i int);")
-          => #<PGresult PGRES_COMMAND_OK - CREATE>
-
-   When either the query is a command-type query that can affect a
-number of different rows, but doesn't return any of them it will look
-like:
-
-     (progn
-       (pq-exec P "INSERT INTO a_new_table VALUES (1);")
-       (pq-exec P "INSERT INTO a_new_table VALUES (2);")
-       (pq-exec P "INSERT INTO a_new_table VALUES (3);")
-       (setq R (pq-exec P "DELETE FROM a_new_table;")))
-          => #<PGresult PGRES_COMMAND_OK[3] - DELETE 3>
-
-   Lastly, when the underlying PGresult object has been deallocated
-directly by `pq-clear' the printed representation will look like:
-
-     (progn
-       (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-       (pq-clear R)
-       R)
-          => #<PGresult DEAD>
-
-   The following set of functions are accessors to various data in the
-PGresult object.
-
- - Function: pq-result-status result
-     Return status of a query result.  RESULT is a PGresult object.
-     The return value is one of the symbols in the following table.
-    `pgres::empty-query'
-          A query contained no text.  This is usually the result of a
-          recoverable error, or a minor programming error.
-
-    `pgres::command-ok'
-          A query command that doesn't return anything was executed
-          properly by the backend.
-
-    `pgres::tuples-ok'
-          A query command that returns tuples was executed properly by
-          the backend.
-
-    `pgres::copy-out'
-          Copy Out data transfer is in progress.
-
-    `pgres::copy-in'
-          Copy In data transfer is in progress.
-
-    `pgres::bad-response'
-          An unexpected response was received from the backend.
-
-    `pgres::nonfatal-error'
-          Undocumented.  This value is returned when the libpq function
-          `PQresultStatus' is called with a NULL pointer.
-
-    `pgres::fatal-error'
-          Undocumented.  An error has occurred in processing the query
-          and the operation was not completed.
-
- - Function: pq-res-status result
-     Return the query result status as a string, not a symbol.  RESULT
-     is a PGresult object.
-
-          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-          (pq-res-status R)
-               => "PGRES_TUPLES_OK"
-
- - Function: pq-result-error-message result
-     Return an error message generated by the query, if any.  RESULT is
-     a PGresult object.
-
-          (setq R (pq-exec P "SELECT * FROM xemacs-test;"))
-               => <A fatal error is signaled in the echo area>
-          (pq-result-error-message R)
-               => "ERROR:  parser: parse error at or near \"-\"
-          "
-
- - Function: pq-ntuples result
-     Return the number of tuples in the query result.  RESULT is a
-     PGresult object.
-
-          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-          (pq-ntuples R)
-               => 5
-
- - Function: pq-nfields result
-     Return the number of fields in each tuple of the query result.
-     RESULT is a PGresult object.
-
-          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-          (pq-nfields R)
-               => 3
-
- - Function: pq-binary-tuples result
-     Returns t if binary tuples are present in the results, nil
-     otherwise.  RESULT is a PGresult object.
-
-          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-          (pq-binary-tuples R)
-               => nil
-
- - Function: pq-fname result field-index
-     Returns the name of a specific field.  RESULT is a PGresult object.
-     FIELD-INDEX is the number of the column to select from.  The first
-     column is number zero.
-
-          (let (i l)
-            (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-            (setq i (pq-nfields R))
-            (while (>= (decf i) 0)
-              (push (pq-fname R i) l))
-            l)
-               => ("id" "shikona" "rank")
-
- - Function: pq-fnumber result field-name
-     Return the field number corresponding to the given field name.  -1
-     is returned on a bad field name.  RESULT is a PGresult object.
-     FIELD-NAME is a string representing the field name to find.
-          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-          (pq-fnumber R "id")
-               => 0
-          (pq-fnumber R "Not a field")
-               => -1
-
- - Function: pq-ftype result field-num
-     Return an integer code representing the data type of the specified
-     column.  RESULT is a PGresult object.  FIELD-NUM is the field
-     number.
-
-     The return value of this function is the Object ID (Oid) in the
-     database of the type.  Further queries need to be made to various
-     system tables in order to convert this value into something useful.
-
- - Function: pq-fmod result field-num
-     Return the type modifier code associated with a field.  Field
-     numbers start at zero.  RESULT is a PGresult object.  FIELD-INDEX
-     selects which field to use.
-
- - Function: pq-fsize result field-index
-     Return size of the given field.  RESULT is a PGresult object.
-     FIELD-INDEX selects which field to use.
-
-          (let (i l)
-            (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-            (setq i (pq-nfields R))
-            (while (>= (decf i) 0)
-              (push (list (pq-ftype R i) (pq-fsize R i)) l))
-            l)
-               => ((23 23) (25 25) (25 25))
-
- - Function: pq-get-value result tup-num field-num
-     Retrieve a return value.  RESULT is a PGresult object.  TUP-NUM
-     selects which tuple to fetch from.  FIELD-NUM selects which field
-     to fetch from.
-
-     Both tuples and fields are numbered from zero.
-
-          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-          (pq-get-value R 0 1)
-               => "Musashimaru"
-          (pq-get-value R 1 1)
-               => "Dejima"
-          (pq-get-value R 2 1)
-               => "Musoyama"
-
- - Function: pq-get-length result tup-num field-num
-     Return the length of a specific value.  RESULT is a PGresult
-     object.  TUP-NUM selects which tuple to fetch from.  FIELD-NUM
-     selects which field to fetch from.
-
-          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
-               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-          (pq-get-length R 0 1)
-               => 11
-          (pq-get-length R 1 1)
-               => 6
-          (pq-get-length R 2 1)
-               => 8
-
- - Function: pq-get-is-null result tup-num field-num
-     Return t if the specific value is the SQL NULL.  RESULT is a
-     PGresult object.  TUP-NUM selects which tuple to fetch from.
-     FIELD-NUM selects which field to fetch from.
-
- - Function: pq-cmd-status result
-     Return a summary string from the query.  RESULT is a PGresult
-     object.
-          (pq-exec P "INSERT INTO xemacs_test
-                      VALUES (6, 'Wakanohana', 'Yokozuna');")
-               => #<PGresult PGRES_COMMAND_OK[1] - INSERT 542086 1>
-          (pq-cmd-status R)
-               => "INSERT 542086 1"
-          (setq R (pq-exec P "UPDATE xemacs_test SET rank='retired'
-                              WHERE shikona='Wakanohana';"))
-               => #<PGresult PGRES_COMMAND_OK[1] - UPDATE 1>
-          (pq-cmd-status R)
-               => "UPDATE 1"
-
-     Note that the first number returned from an insertion, like in the
-     example, is an object ID number and will almost certainly vary from
-     system to system since object ID numbers in Postgres must be unique
-     across all databases.
-
- - Function: pq-cmd-tuples result
-     Return the number of tuples if the last command was an
-     INSERT/UPDATE/DELETE.  If the last command was something else, the
-     empty string is returned.  RESULT is a PGresult object.
-
-          (setq R (pq-exec P "INSERT INTO xemacs_test VALUES
-                              (7, 'Takanohana', 'Yokuzuna');"))
-               => #<PGresult PGRES_COMMAND_OK[1] - INSERT 38688 1>
-          (pq-cmd-tuples R)
-               => "1"
-          (setq R (pq-exec P "SELECT * from xemacs_test;"))
-               => #<PGresult PGRES_TUPLES_OK[7] - SELECT>
-          (pq-cmd-tuples R)
-               => ""
-          (setq R (pq-exec P "DELETE FROM xemacs_test
-                              WHERE shikona LIKE '%hana';"))
-               => #<PGresult PGRES_COMMAND_OK[2] - DELETE 2>
-          (pq-cmd-tuples R)
-               => "2"
-
- - Function: pq-oid-value result
-     Return the object id of the insertion if the last command was an
-     INSERT.  0 is returned if the last command was not an insertion.
-     RESULT is a PGresult object.
-
-     In the first example, the numbers you will see on your local
-     system will almost certainly be different, however the second
-     number from the right in the unprintable PGresult object and the
-     number returned by `pq-oid-value' should match.
-          (setq R (pq-exec P "INSERT INTO xemacs_test VALUES
-                              (8, 'Terao', 'Maegashira');"))
-               => #<PGresult PGRES_COMMAND_OK[1] - INSERT 542089 1>
-          (pq-oid-value R)
-               => 542089
-          (setq R (pq-exec P "SELECT shikona FROM xemacs_test
-                              WHERE rank='Maegashira';"))
-               => #<PGresult PGRES_TUPLES_OK[2] - SELECT>
-          (pq-oid-value R)
-               => 0
-
- - Function: pq-make-empty-pgresult conn status
-     Create an empty pgresult with the given status.  CONN a database
-     connection object STATUS a value that can be returned by
-     `pq-result-status'.
-
-     The caller is responsible for making sure the return value gets
-     properly freed.
-
-\1f
-File: lispref.info,  Node: Synchronous Interface Functions,  Next: Asynchronous Interface Functions,  Prev: libpq Lisp Symbols and DataTypes,  Up: XEmacs PostgreSQL libpq API
-
-Synchronous Interface Functions
--------------------------------
-
- - Function: pq-connectdb conninfo
-     Establish a (synchronous) database connection.  CONNINFO A string
-     of blank separated options.  Options are of the form "OPTION =
-     VALUE".  If VALUE contains blanks, it must be single quoted.
-     Blanks around the equal sign are optional.  Multiple option
-     assignments are blank separated.
-          (pq-connectdb "dbname=japanese port = 25432")
-               => #<PGconn localhost:25432 steve/japanese>
-     The printed representation of a database connection object has four
-     fields.  The first field is the hostname where the database server
-     is running (in this case localhost), the second field is the port
-     number, the third field is the database user name, and the fourth
-     field is the name of the database.
-
-     Database connection objects which have been disconnected and will
-     generate an immediate error if they are used look like:
-            #<PGconn BAD>
-     Bad connections can be reestablished with `pq-reset', or deleted
-     entirely with `pq-finish'.
-
-     A database connection object that has been deleted looks like:
-          (let ((P1 (pq-connectdb "")))
-            (pq-finish P1)
-            P1)
-               => #<PGconn DEAD>
-
-     Note that database connection objects are the most heavy weight
-     objects in XEmacs Lisp at this writing, usually representing as
-     much as several megabytes of virtual memory on the machine the
-     database server is running on.  It is wisest to explicitly delete
-     them when you are finished with them, rather than letting garbage
-     collection do it.  An example idiom is:
-
-          (let ((P (pq-connectiondb "")))
-            (unwind-protect
-                (progn
-               (...)) ; access database here
-              (pq-finish P)))
-
-     The following options are available in the options string:
-    `authtype'
-          Authentication type.  Same as PGAUTHTYPE.  This is no longer
-          used.
-
-    `user'
-          Database user name.  Same as PGUSER.
-
-    `password'
-          Database password.
-
-    `dbname'
-          Database name.  Same as PGDATABASE
-
-    `host'
-          Symbolic hostname.  Same as PGHOST.
-
-    `hostaddr'
-          Host address as four octets (eg. like 192.168.1.1).
-
-    `port'
-          TCP port to connect to.  Same as PGPORT.
-
-    `tty'
-          Debugging TTY.  Same as PGTTY.  This value is suppressed in
-          the XEmacs Lisp API.
-
-    `options'
-          Extra backend database options.  Same as PGOPTIONS.  A
-     database connection object is returned regardless of whether a
-     connection was established or not.
-
- - Function: pq-reset conn
-     Reestablish database connection.  CONN A database connection
-     object.
-
-     This function reestablishes a database connection using the
-     original connection parameters.  This is useful if something has
-     happened to the TCP link and it has become broken.
-
- - Function: pq-exec conn query
-     Make a synchronous database query.  CONN A database connection
-     object.  QUERY A string containing an SQL query.  A PGresult
-     object is returned, which in turn may be queried by its many
-     accessor functions to retrieve state out of it.  If the query
-     string contains multiple SQL commands, only results from the final
-     command are returned.
-
-          (setq R (pq-exec P "SELECT * FROM xemacs_test;
-          DELETE FROM xemacs_test WHERE id=8;"))
-               => #<PGresult PGRES_COMMAND_OK[1] - DELETE 1>
-
- - Function: pq-notifies conn
-     Return the latest async notification that has not yet been handled.
-     CONN A database connection object.  If there has been a
-     notification, then a list of two elements will be returned.  The
-     first element contains the relation name being notified, the second
-     element contains the backend process ID number.  nil is returned
-     if there aren't any notifications to process.
-
- - Function: PQsetenv conn
-     Synchronous transfer of environment variables to a backend CONN A
-     database connection object.
-
-     Environment variable transfer is done as a normal part of database
-     connection.
-
-     Compatibility note: This function was present but not documented
-     in versions of libpq prior to 7.0.
-
index 333877f..4481943 100644 (file)
@@ -50,6 +50,480 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: libpq Lisp Symbols and DataTypes,  Next: Synchronous Interface Functions,  Prev: libpq Lisp Variables,  Up: XEmacs PostgreSQL libpq API
+
+libpq Lisp Symbols and Datatypes
+--------------------------------
+
+   The following set of symbols are used to represent the intermediate
+states involved in the asynchronous interface.
+
+ - Symbol: pgres::polling-failed
+     Undocumented.  A fatal error has occurred during processing of an
+     asynchronous operation.
+
+ - Symbol: pgres::polling-reading
+     An intermediate status return during an asynchronous operation.  It
+     indicates that one may use `select' before polling again.
+
+ - Symbol: pgres::polling-writing
+     An intermediate status return during an asynchronous operation.  It
+     indicates that one may use `select' before polling again.
+
+ - Symbol: pgres::polling-ok
+     An asynchronous operation has successfully completed.
+
+ - Symbol: pgres::polling-active
+     An intermediate status return during an asynchronous operation.
+     One can call the poll function again immediately.
+
+ - Function: pq-pgconn conn field
+     CONN A database connection object.  FIELD A symbol indicating
+     which field of PGconn to fetch.  Possible values are shown in the
+     following table.
+    `pq::db'
+          Database name
+
+    `pq::user'
+          Database user name
+
+    `pq::pass'
+          Database user's password
+
+    `pq::host'
+          Hostname database server is running on
+
+    `pq::port'
+          TCP port number used in the connection
+
+    `pq::tty'
+          Debugging TTY
+
+          Compatibility note:  Debugging TTYs are not used in the
+          XEmacs Lisp API.
+
+    `pq::options'
+          Additional server options
+
+    `pq::status'
+          Connection status.  Possible return values are shown in the
+          following table.
+         `pg::connection-ok'
+               The normal, connected status.
+
+         `pg::connection-bad'
+               The connection is not open and the PGconn object needs
+               to be deleted by `pq-finish'.
+
+         `pg::connection-started'
+               An asynchronous connection has been started, but is not
+               yet complete.
+
+         `pg::connection-made'
+               An asynchronous connect has been made, and there is data
+               waiting to be sent.
+
+         `pg::connection-awaiting-response'
+               Awaiting data from the backend during an asynchronous
+               connection.
+
+         `pg::connection-auth-ok'
+               Received authentication, waiting for the backend to
+               start up.
+
+         `pg::connection-setenv'
+               Negotiating environment during an asynchronous
+               connection.
+
+    `pq::error-message'
+          The last error message that was delivered to this connection.
+
+    `pq::backend-pid'
+          The process ID of the backend database server.
+
+   The `PGresult' object is used by libpq to encapsulate the results of
+queries.  The printed representation takes on four forms.  When the
+PGresult object contains tuples from an SQL `SELECT' it will look like:
+
+     (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+          => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
+
+   The number in brackets indicates how many rows of data are available.
+When the PGresult object is the result of a command query that doesn't
+return anything, it will look like:
+
+     (pq-exec P "CREATE TABLE a_new_table (i int);")
+          => #<PGresult PGRES_COMMAND_OK - CREATE>
+
+   When either the query is a command-type query that can affect a
+number of different rows, but doesn't return any of them it will look
+like:
+
+     (progn
+       (pq-exec P "INSERT INTO a_new_table VALUES (1);")
+       (pq-exec P "INSERT INTO a_new_table VALUES (2);")
+       (pq-exec P "INSERT INTO a_new_table VALUES (3);")
+       (setq R (pq-exec P "DELETE FROM a_new_table;")))
+          => #<PGresult PGRES_COMMAND_OK[3] - DELETE 3>
+
+   Lastly, when the underlying PGresult object has been deallocated
+directly by `pq-clear' the printed representation will look like:
+
+     (progn
+       (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+       (pq-clear R)
+       R)
+          => #<PGresult DEAD>
+
+   The following set of functions are accessors to various data in the
+PGresult object.
+
+ - Function: pq-result-status result
+     Return status of a query result.  RESULT is a PGresult object.
+     The return value is one of the symbols in the following table.
+    `pgres::empty-query'
+          A query contained no text.  This is usually the result of a
+          recoverable error, or a minor programming error.
+
+    `pgres::command-ok'
+          A query command that doesn't return anything was executed
+          properly by the backend.
+
+    `pgres::tuples-ok'
+          A query command that returns tuples was executed properly by
+          the backend.
+
+    `pgres::copy-out'
+          Copy Out data transfer is in progress.
+
+    `pgres::copy-in'
+          Copy In data transfer is in progress.
+
+    `pgres::bad-response'
+          An unexpected response was received from the backend.
+
+    `pgres::nonfatal-error'
+          Undocumented.  This value is returned when the libpq function
+          `PQresultStatus' is called with a NULL pointer.
+
+    `pgres::fatal-error'
+          Undocumented.  An error has occurred in processing the query
+          and the operation was not completed.
+
+ - Function: pq-res-status result
+     Return the query result status as a string, not a symbol.  RESULT
+     is a PGresult object.
+
+          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
+          (pq-res-status R)
+               => "PGRES_TUPLES_OK"
+
+ - Function: pq-result-error-message result
+     Return an error message generated by the query, if any.  RESULT is
+     a PGresult object.
+
+          (setq R (pq-exec P "SELECT * FROM xemacs-test;"))
+               => <A fatal error is signaled in the echo area>
+          (pq-result-error-message R)
+               => "ERROR:  parser: parse error at or near \"-\"
+          "
+
+ - Function: pq-ntuples result
+     Return the number of tuples in the query result.  RESULT is a
+     PGresult object.
+
+          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
+          (pq-ntuples R)
+               => 5
+
+ - Function: pq-nfields result
+     Return the number of fields in each tuple of the query result.
+     RESULT is a PGresult object.
+
+          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
+          (pq-nfields R)
+               => 3
+
+ - Function: pq-binary-tuples result
+     Returns t if binary tuples are present in the results, nil
+     otherwise.  RESULT is a PGresult object.
+
+          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
+          (pq-binary-tuples R)
+               => nil
+
+ - Function: pq-fname result field-index
+     Returns the name of a specific field.  RESULT is a PGresult object.
+     FIELD-INDEX is the number of the column to select from.  The first
+     column is number zero.
+
+          (let (i l)
+            (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+            (setq i (pq-nfields R))
+            (while (>= (decf i) 0)
+              (push (pq-fname R i) l))
+            l)
+               => ("id" "shikona" "rank")
+
+ - Function: pq-fnumber result field-name
+     Return the field number corresponding to the given field name.  -1
+     is returned on a bad field name.  RESULT is a PGresult object.
+     FIELD-NAME is a string representing the field name to find.
+          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
+          (pq-fnumber R "id")
+               => 0
+          (pq-fnumber R "Not a field")
+               => -1
+
+ - Function: pq-ftype result field-num
+     Return an integer code representing the data type of the specified
+     column.  RESULT is a PGresult object.  FIELD-NUM is the field
+     number.
+
+     The return value of this function is the Object ID (Oid) in the
+     database of the type.  Further queries need to be made to various
+     system tables in order to convert this value into something useful.
+
+ - Function: pq-fmod result field-num
+     Return the type modifier code associated with a field.  Field
+     numbers start at zero.  RESULT is a PGresult object.  FIELD-INDEX
+     selects which field to use.
+
+ - Function: pq-fsize result field-index
+     Return size of the given field.  RESULT is a PGresult object.
+     FIELD-INDEX selects which field to use.
+
+          (let (i l)
+            (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+            (setq i (pq-nfields R))
+            (while (>= (decf i) 0)
+              (push (list (pq-ftype R i) (pq-fsize R i)) l))
+            l)
+               => ((23 23) (25 25) (25 25))
+
+ - Function: pq-get-value result tup-num field-num
+     Retrieve a return value.  RESULT is a PGresult object.  TUP-NUM
+     selects which tuple to fetch from.  FIELD-NUM selects which field
+     to fetch from.
+
+     Both tuples and fields are numbered from zero.
+
+          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
+          (pq-get-value R 0 1)
+               => "Musashimaru"
+          (pq-get-value R 1 1)
+               => "Dejima"
+          (pq-get-value R 2 1)
+               => "Musoyama"
+
+ - Function: pq-get-length result tup-num field-num
+     Return the length of a specific value.  RESULT is a PGresult
+     object.  TUP-NUM selects which tuple to fetch from.  FIELD-NUM
+     selects which field to fetch from.
+
+          (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
+               => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
+          (pq-get-length R 0 1)
+               => 11
+          (pq-get-length R 1 1)
+               => 6
+          (pq-get-length R 2 1)
+               => 8
+
+ - Function: pq-get-is-null result tup-num field-num
+     Return t if the specific value is the SQL NULL.  RESULT is a
+     PGresult object.  TUP-NUM selects which tuple to fetch from.
+     FIELD-NUM selects which field to fetch from.
+
+ - Function: pq-cmd-status result
+     Return a summary string from the query.  RESULT is a PGresult
+     object.
+          (pq-exec P "INSERT INTO xemacs_test
+                      VALUES (6, 'Wakanohana', 'Yokozuna');")
+               => #<PGresult PGRES_COMMAND_OK[1] - INSERT 542086 1>
+          (pq-cmd-status R)
+               => "INSERT 542086 1"
+          (setq R (pq-exec P "UPDATE xemacs_test SET rank='retired'
+                              WHERE shikona='Wakanohana';"))
+               => #<PGresult PGRES_COMMAND_OK[1] - UPDATE 1>
+          (pq-cmd-status R)
+               => "UPDATE 1"
+
+     Note that the first number returned from an insertion, like in the
+     example, is an object ID number and will almost certainly vary from
+     system to system since object ID numbers in Postgres must be unique
+     across all databases.
+
+ - Function: pq-cmd-tuples result
+     Return the number of tuples if the last command was an
+     INSERT/UPDATE/DELETE.  If the last command was something else, the
+     empty string is returned.  RESULT is a PGresult object.
+
+          (setq R (pq-exec P "INSERT INTO xemacs_test VALUES
+                              (7, 'Takanohana', 'Yokuzuna');"))
+               => #<PGresult PGRES_COMMAND_OK[1] - INSERT 38688 1>
+          (pq-cmd-tuples R)
+               => "1"
+          (setq R (pq-exec P "SELECT * from xemacs_test;"))
+               => #<PGresult PGRES_TUPLES_OK[7] - SELECT>
+          (pq-cmd-tuples R)
+               => ""
+          (setq R (pq-exec P "DELETE FROM xemacs_test
+                              WHERE shikona LIKE '%hana';"))
+               => #<PGresult PGRES_COMMAND_OK[2] - DELETE 2>
+          (pq-cmd-tuples R)
+               => "2"
+
+ - Function: pq-oid-value result
+     Return the object id of the insertion if the last command was an
+     INSERT.  0 is returned if the last command was not an insertion.
+     RESULT is a PGresult object.
+
+     In the first example, the numbers you will see on your local
+     system will almost certainly be different, however the second
+     number from the right in the unprintable PGresult object and the
+     number returned by `pq-oid-value' should match.
+          (setq R (pq-exec P "INSERT INTO xemacs_test VALUES
+                              (8, 'Terao', 'Maegashira');"))
+               => #<PGresult PGRES_COMMAND_OK[1] - INSERT 542089 1>
+          (pq-oid-value R)
+               => 542089
+          (setq R (pq-exec P "SELECT shikona FROM xemacs_test
+                              WHERE rank='Maegashira';"))
+               => #<PGresult PGRES_TUPLES_OK[2] - SELECT>
+          (pq-oid-value R)
+               => 0
+
+ - Function: pq-make-empty-pgresult conn status
+     Create an empty pgresult with the given status.  CONN a database
+     connection object STATUS a value that can be returned by
+     `pq-result-status'.
+
+     The caller is responsible for making sure the return value gets
+     properly freed.
+
+\1f
+File: lispref.info,  Node: Synchronous Interface Functions,  Next: Asynchronous Interface Functions,  Prev: libpq Lisp Symbols and DataTypes,  Up: XEmacs PostgreSQL libpq API
+
+Synchronous Interface Functions
+-------------------------------
+
+ - Function: pq-connectdb conninfo
+     Establish a (synchronous) database connection.  CONNINFO A string
+     of blank separated options.  Options are of the form "OPTION =
+     VALUE".  If VALUE contains blanks, it must be single quoted.
+     Blanks around the equal sign are optional.  Multiple option
+     assignments are blank separated.
+          (pq-connectdb "dbname=japanese port = 25432")
+               => #<PGconn localhost:25432 steve/japanese>
+     The printed representation of a database connection object has four
+     fields.  The first field is the hostname where the database server
+     is running (in this case localhost), the second field is the port
+     number, the third field is the database user name, and the fourth
+     field is the name of the database.
+
+     Database connection objects which have been disconnected and will
+     generate an immediate error if they are used look like:
+            #<PGconn BAD>
+     Bad connections can be reestablished with `pq-reset', or deleted
+     entirely with `pq-finish'.
+
+     A database connection object that has been deleted looks like:
+          (let ((P1 (pq-connectdb "")))
+            (pq-finish P1)
+            P1)
+               => #<PGconn DEAD>
+
+     Note that database connection objects are the most heavy weight
+     objects in XEmacs Lisp at this writing, usually representing as
+     much as several megabytes of virtual memory on the machine the
+     database server is running on.  It is wisest to explicitly delete
+     them when you are finished with them, rather than letting garbage
+     collection do it.  An example idiom is:
+
+          (let ((P (pq-connectiondb "")))
+            (unwind-protect
+                (progn
+               (...)) ; access database here
+              (pq-finish P)))
+
+     The following options are available in the options string:
+    `authtype'
+          Authentication type.  Same as PGAUTHTYPE.  This is no longer
+          used.
+
+    `user'
+          Database user name.  Same as PGUSER.
+
+    `password'
+          Database password.
+
+    `dbname'
+          Database name.  Same as PGDATABASE
+
+    `host'
+          Symbolic hostname.  Same as PGHOST.
+
+    `hostaddr'
+          Host address as four octets (eg. like 192.168.1.1).
+
+    `port'
+          TCP port to connect to.  Same as PGPORT.
+
+    `tty'
+          Debugging TTY.  Same as PGTTY.  This value is suppressed in
+          the XEmacs Lisp API.
+
+    `options'
+          Extra backend database options.  Same as PGOPTIONS.  A
+     database connection object is returned regardless of whether a
+     connection was established or not.
+
+ - Function: pq-reset conn
+     Reestablish database connection.  CONN A database connection
+     object.
+
+     This function reestablishes a database connection using the
+     original connection parameters.  This is useful if something has
+     happened to the TCP link and it has become broken.
+
+ - Function: pq-exec conn query
+     Make a synchronous database query.  CONN A database connection
+     object.  QUERY A string containing an SQL query.  A PGresult
+     object is returned, which in turn may be queried by its many
+     accessor functions to retrieve state out of it.  If the query
+     string contains multiple SQL commands, only results from the final
+     command are returned.
+
+          (setq R (pq-exec P "SELECT * FROM xemacs_test;
+          DELETE FROM xemacs_test WHERE id=8;"))
+               => #<PGresult PGRES_COMMAND_OK[1] - DELETE 1>
+
+ - Function: pq-notifies conn
+     Return the latest async notification that has not yet been handled.
+     CONN A database connection object.  If there has been a
+     notification, then a list of two elements will be returned.  The
+     first element contains the relation name being notified, the second
+     element contains the backend process ID number.  nil is returned
+     if there aren't any notifications to process.
+
+ - Function: PQsetenv conn
+     Synchronous transfer of environment variables to a backend CONN A
+     database connection object.
+
+     Environment variable transfer is done as a normal part of database
+     connection.
+
+     Compatibility note: This function was present but not documented
+     in versions of libpq prior to 7.0.
+
+\1f
 File: lispref.info,  Node: Asynchronous Interface Functions,  Next: Large Object Support,  Prev: Synchronous Interface Functions,  Up: XEmacs PostgreSQL libpq API
 
 Asynchronous Interface Functions
@@ -740,433 +1214,3 @@ on "MULE".
 * CCL::                 A special language for writing fast converters.
 * Category Tables::     Subdividing charsets into groups.
 
-\1f
-File: lispref.info,  Node: Internationalization Terminology,  Next: Charsets,  Up: MULE
-
-Internationalization Terminology
-================================
-
-   In internationalization terminology, a string of text is divided up
-into "characters", which are the printable units that make up the text.
-A single character is (for example) a capital `A', the number `2', a
-Katakana character, a Hangul character, a Kanji ideograph (an
-"ideograph" is a "picture" character, such as is used in Japanese
-Kanji, Chinese Hanzi, and Korean Hanja; typically there are thousands
-of such ideographs in each language), etc.  The basic property of a
-character is that it is the smallest unit of text with semantic
-significance in text processing.
-
-   Human beings normally process text visually, so to a first
-approximation a character may be identified with its shape.  Note that
-the same character may be drawn by two different people (or in two
-different fonts) in slightly different ways, although the "basic shape"
-will be the same.  But consider the works of Scott Kim; human beings
-can recognize hugely variant shapes as the "same" character.
-Sometimes, especially where characters are extremely complicated to
-write, completely different shapes may be defined as the "same"
-character in national standards.  The Taiwanese variant of Hanzi is
-generally the most complicated; over the centuries, the Japanese,
-Koreans, and the People's Republic of China have adopted
-simplifications of the shape, but the line of descent from the original
-shape is recorded, and the meanings and pronunciation of different
-forms of the same character are considered to be identical within each
-language.  (Of course, it may take a specialist to recognize the
-related form; the point is that the relations are standardized, despite
-the differing shapes.)
-
-   In some cases, the differences will be significant enough that it is
-actually possible to identify two or more distinct shapes that both
-represent the same character.  For example, the lowercase letters `a'
-and `g' each have two distinct possible shapes--the `a' can optionally
-have a curved tail projecting off the top, and the `g' can be formed
-either of two loops, or of one loop and a tail hanging off the bottom.
-Such distinct possible shapes of a character are called "glyphs".  The
-important characteristic of two glyphs making up the same character is
-that the choice between one or the other is purely stylistic and has no
-linguistic effect on a word (this is the reason why a capital `A' and
-lowercase `a' are different characters rather than different
-glyphs--e.g.  `Aspen' is a city while `aspen' is a kind of tree).
-
-   Note that "character" and "glyph" are used differently here than
-elsewhere in XEmacs.
-
-   A "character set" is essentially a set of related characters.  ASCII,
-for example, is a set of 94 characters (or 128, if you count
-non-printing characters).  Other character sets are ISO8859-1 (ASCII
-plus various accented characters and other international symbols), JIS
-X 0201 (ASCII, more or less, plus half-width Katakana), JIS X 0208
-(Japanese Kanji), JIS X 0212 (a second set of less-used Japanese Kanji),
-GB2312 (Mainland Chinese Hanzi), etc.
-
-   The definition of a character set will implicitly or explicitly give
-it an "ordering", a way of assigning a number to each character in the
-set.  For many character sets, there is a natural ordering, for example
-the "ABC" ordering of the Roman letters.  But it is not clear whether
-digits should come before or after the letters, and in fact different
-European languages treat the ordering of accented characters
-differently.  It is useful to use the natural order where available, of
-course.  The number assigned to any particular character is called the
-character's "code point".  (Within a given character set, each
-character has a unique code point.  Thus the word "set" is ill-chosen;
-different orderings of the same characters are different character sets.
-Identifying characters is simple enough for alphabetic character sets,
-but the difference in ordering can cause great headaches when the same
-thousands of characters are used by different cultures as in the Hanzi.)
-
-   A code point may be broken into a number of "position codes".  The
-number of position codes required to index a particular character in a
-character set is called the "dimension" of the character set.  For
-practical purposes, a position code may be thought of as a byte-sized
-index.  The printing characters of ASCII, being a relatively small
-character set, is of dimension one, and each character in the set is
-indexed using a single position code, in the range 1 through 94.  Use of
-this unusual range, rather than the familiar 33 through 126, is an
-intentional abstraction; to understand the programming issues you must
-break the equation between character sets and encodings.
-
-   JIS X 0208, i.e. Japanese Kanji, has thousands of characters, and is
-of dimension two - every character is indexed by two position codes,
-each in the range 1 through 94.  (This number "94" is not a
-coincidence; we shall see that the JIS position codes were chosen so
-that JIS kanji could be encoded without using codes that in ASCII are
-associated with device control functions.)  Note that the choice of the
-range here is somewhat arbitrary.  You could just as easily index the
-printing characters in ASCII using numbers in the range 0 through 93, 2
-through 95, 3 through 96, etc.  In fact, the standardized _encoding_
-for the ASCII _character set_ uses the range 33 through 126.
-
-   An "encoding" is a way of numerically representing characters from
-one or more character sets into a stream of like-sized numerical values
-called "words"; typically these are 8-bit, 16-bit, or 32-bit
-quantities.  If an encoding encompasses only one character set, then the
-position codes for the characters in that character set could be used
-directly.  (This is the case with the trivial cipher used by children,
-assigning 1 to `A', 2 to `B', and so on.)  However, even with ASCII,
-other considerations intrude.  For example, why are the upper- and
-lowercase alphabets separated by 8 characters?  Why do the digits start
-with `0' being assigned the code 48?  In both cases because semantically
-interesting operations (case conversion and numerical value extraction)
-become convenient masking operations.  Other artificial aspects (the
-control characters being assigned to codes 0-31 and 127) are historical
-accidents.  (The use of 127 for `DEL' is an artifact of the "punch
-once" nature of paper tape, for example.)
-
-   Naive use of the position code is not possible, however, if more than
-one character set is to be used in the encoding.  For example, printed
-Japanese text typically requires characters from multiple character sets
-- ASCII, JIS X 0208, and JIS X 0212, to be specific.  Each of these is
-indexed using one or more position codes in the range 1 through 94, so
-the position codes could not be used directly or there would be no way
-to tell which character was meant.  Different Japanese encodings handle
-this differently - JIS uses special escape characters to denote
-different character sets; EUC sets the high bit of the position codes
-for JIS X 0208 and JIS X 0212, and puts a special extra byte before each
-JIS X 0212 character; etc.  (JIS, EUC, and most of the other encodings
-you will encounter in files are 7-bit or 8-bit encodings.  There is one
-common 16-bit encoding, which is Unicode; this strives to represent all
-the world's characters in a single large character set.  32-bit
-encodings are often used internally in programs, such as XEmacs with
-MULE support, to simplify the code that manipulates them; however, they
-are not used externally because they are not very space-efficient.)
-
-   A general method of handling text using multiple character sets
-(whether for multilingual text, or simply text in an extremely
-complicated single language like Japanese) is defined in the
-international standard ISO 2022.  ISO 2022 will be discussed in more
-detail later (*note ISO 2022::), but for now suffice it to say that text
-needs control functions (at least spacing), and if escape sequences are
-to be used, an escape sequence introducer.  It was decided to make all
-text streams compatible with ASCII in the sense that the codes 0-31
-(and 128-159) would always be control codes, never graphic characters,
-and where defined by the character set the `SPC' character would be
-assigned code 32, and `DEL' would be assigned 127.  Thus there are 94
-code points remaining if 7 bits are used.  This is the reason that most
-character sets are defined using position codes in the range 1 through
-94.  Then ISO 2022 compatible encodings are produced by shifting the
-position codes 1 to 94 into character codes 33 to 126, or (if 8 bit
-codes are available) into character codes 161 to 254.
-
-   Encodings are classified as either "modal" or "non-modal".  In a
-"modal encoding", there are multiple states that the encoding can be
-in, and the interpretation of the values in the stream depends on the
-current global state of the encoding.  Special values in the encoding,
-called "escape sequences", are used to change the global state.  JIS,
-for example, is a modal encoding.  The bytes `ESC $ B' indicate that,
-from then on, bytes are to be interpreted as position codes for JIS X
-0208, rather than as ASCII.  This effect is cancelled using the bytes
-`ESC ( B', which mean "switch from whatever the current state is to
-ASCII".  To switch to JIS X 0212, the escape sequence `ESC $ ( D'.
-(Note that here, as is common, the escape sequences do in fact begin
-with `ESC'.  This is not necessarily the case, however.  Some encodings
-use control characters called "locking shifts" (effect persists until
-cancelled) to switch character sets.)
-
-   A "non-modal encoding" has no global state that extends past the
-character currently being interpreted.  EUC, for example, is a
-non-modal encoding.  Characters in JIS X 0208 are encoded by setting
-the high bit of the position codes, and characters in JIS X 0212 are
-encoded by doing the same but also prefixing the character with the
-byte 0x8F.
-
-   The advantage of a modal encoding is that it is generally more
-space-efficient, and is easily extendable because there are essentially
-an arbitrary number of escape sequences that can be created.  The
-disadvantage, however, is that it is much more difficult to work with
-if it is not being processed in a sequential manner.  In the non-modal
-EUC encoding, for example, the byte 0x41 always refers to the letter
-`A'; whereas in JIS, it could either be the letter `A', or one of the
-two position codes in a JIS X 0208 character, or one of the two
-position codes in a JIS X 0212 character.  Determining exactly which
-one is meant could be difficult and time-consuming if the previous
-bytes in the string have not already been processed, or impossible if
-they are drawn from an external stream that cannot be rewound.
-
-   Non-modal encodings are further divided into "fixed-width" and
-"variable-width" formats.  A fixed-width encoding always uses the same
-number of words per character, whereas a variable-width encoding does
-not.  EUC is a good example of a variable-width encoding: one to three
-bytes are used per character, depending on the character set.  16-bit
-and 32-bit encodings are nearly always fixed-width, and this is in fact
-one of the main reasons for using an encoding with a larger word size.
-The advantages of fixed-width encodings should be obvious.  The
-advantages of variable-width encodings are that they are generally more
-space-efficient and allow for compatibility with existing 8-bit
-encodings such as ASCII.  (For example, in Unicode ASCII characters are
-simply promoted to a 16-bit representation.  That means that every
-ASCII character contains a `NUL' byte; evidently all of the standard
-string manipulation functions will lose badly in a fixed-width Unicode
-environment.)
-
-   The bytes in an 8-bit encoding are often referred to as "octets"
-rather than simply as bytes.  This terminology dates back to the days
-before 8-bit bytes were universal, when some computers had 9-bit bytes,
-others had 10-bit bytes, etc.
-
-\1f
-File: lispref.info,  Node: Charsets,  Next: MULE Characters,  Prev: Internationalization Terminology,  Up: MULE
-
-Charsets
-========
-
-   A "charset" in MULE is an object that encapsulates a particular
-character set as well as an ordering of those characters.  Charsets are
-permanent objects and are named using symbols, like faces.
-
- - Function: charsetp object
-     This function returns non-`nil' if OBJECT is a charset.
-
-* Menu:
-
-* Charset Properties::          Properties of a charset.
-* Basic Charset Functions::     Functions for working with charsets.
-* Charset Property Functions::  Functions for accessing charset properties.
-* Predefined Charsets::         Predefined charset objects.
-
-\1f
-File: lispref.info,  Node: Charset Properties,  Next: Basic Charset Functions,  Up: Charsets
-
-Charset Properties
-------------------
-
-   Charsets have the following properties:
-
-`name'
-     A symbol naming the charset.  Every charset must have a different
-     name; this allows a charset to be referred to using its name
-     rather than the actual charset object.
-
-`doc-string'
-     A documentation string describing the charset.
-
-`registry'
-     A regular expression matching the font registry field for this
-     character set.  For example, both the `ascii' and `latin-iso8859-1'
-     charsets use the registry `"ISO8859-1"'.  This field is used to
-     choose an appropriate font when the user gives a general font
-     specification such as `-*-courier-medium-r-*-140-*', i.e. a
-     14-point upright medium-weight Courier font.
-
-`dimension'
-     Number of position codes used to index a character in the
-     character set.  XEmacs/MULE can only handle character sets of
-     dimension 1 or 2.  This property defaults to 1.
-
-`chars'
-     Number of characters in each dimension.  In XEmacs/MULE, the only
-     allowed values are 94 or 96. (There are a couple of pre-defined
-     character sets, such as ASCII, that do not follow this, but you
-     cannot define new ones like this.) Defaults to 94.  Note that if
-     the dimension is 2, the character set thus described is 94x94 or
-     96x96.
-
-`columns'
-     Number of columns used to display a character in this charset.
-     Only used in TTY mode. (Under X, the actual width of a character
-     can be derived from the font used to display the characters.)  If
-     unspecified, defaults to the dimension. (This is almost always the
-     correct value, because character sets with dimension 2 are usually
-     ideograph character sets, which need two columns to display the
-     intricate ideographs.)
-
-`direction'
-     A symbol, either `l2r' (left-to-right) or `r2l' (right-to-left).
-     Defaults to `l2r'.  This specifies the direction that the text
-     should be displayed in, and will be left-to-right for most
-     charsets but right-to-left for Hebrew and Arabic. (Right-to-left
-     display is not currently implemented.)
-
-`final'
-     Final byte of the standard ISO 2022 escape sequence designating
-     this charset.  Must be supplied.  Each combination of (DIMENSION,
-     CHARS) defines a separate namespace for final bytes, and each
-     charset within a particular namespace must have a different final
-     byte.  Note that ISO 2022 restricts the final byte to the range
-     0x30 - 0x7E if dimension == 1, and 0x30 - 0x5F if dimension == 2.
-     Note also that final bytes in the range 0x30 - 0x3F are reserved
-     for user-defined (not official) character sets.  For more
-     information on ISO 2022, see *Note Coding Systems::.
-
-`graphic'
-     0 (use left half of font on output) or 1 (use right half of font on
-     output).  Defaults to 0.  This specifies how to convert the
-     position codes that index a character in a character set into an
-     index into the font used to display the character set.  With
-     `graphic' set to 0, position codes 33 through 126 map to font
-     indices 33 through 126; with it set to 1, position codes 33
-     through 126 map to font indices 161 through 254 (i.e. the same
-     number but with the high bit set).  For example, for a font whose
-     registry is ISO8859-1, the left half of the font (octets 0x20 -
-     0x7F) is the `ascii' charset, while the right half (octets 0xA0 -
-     0xFF) is the `latin-iso8859-1' charset.
-
-`ccl-program'
-     A compiled CCL program used to convert a character in this charset
-     into an index into the font.  This is in addition to the `graphic'
-     property.  If a CCL program is defined, the position codes of a
-     character will first be processed according to `graphic' and then
-     passed through the CCL program, with the resulting values used to
-     index the font.
-
-     This is used, for example, in the Big5 character set (used in
-     Taiwan).  This character set is not ISO-2022-compliant, and its
-     size (94x157) does not fit within the maximum 96x96 size of
-     ISO-2022-compliant character sets.  As a result, XEmacs/MULE
-     splits it (in a rather complex fashion, so as to group the most
-     commonly used characters together) into two charset objects
-     (`big5-1' and `big5-2'), each of size 94x94, and each charset
-     object uses a CCL program to convert the modified position codes
-     back into standard Big5 indices to retrieve a character from a
-     Big5 font.
-
-   Most of the above properties can only be set when the charset is
-initialized, and cannot be changed later.  *Note Charset Property
-Functions::.
-
-\1f
-File: lispref.info,  Node: Basic Charset Functions,  Next: Charset Property Functions,  Prev: Charset Properties,  Up: Charsets
-
-Basic Charset Functions
------------------------
-
- - Function: find-charset charset-or-name
-     This function retrieves the charset of the given name.  If
-     CHARSET-OR-NAME is a charset object, it is simply returned.
-     Otherwise, CHARSET-OR-NAME should be a symbol.  If there is no
-     such charset, `nil' is returned.  Otherwise the associated charset
-     object is returned.
-
- - Function: get-charset name
-     This function retrieves the charset of the given name.  Same as
-     `find-charset' except an error is signalled if there is no such
-     charset instead of returning `nil'.
-
- - Function: charset-list
-     This function returns a list of the names of all defined charsets.
-
- - Function: make-charset name doc-string props
-     This function defines a new character set.  This function is for
-     use with MULE support.  NAME is a symbol, the name by which the
-     character set is normally referred.  DOC-STRING is a string
-     describing the character set.  PROPS is a property list,
-     describing the specific nature of the character set.  The
-     recognized properties are `registry', `dimension', `columns',
-     `chars', `final', `graphic', `direction', and `ccl-program', as
-     previously described.
-
- - Function: make-reverse-direction-charset charset new-name
-     This function makes a charset equivalent to CHARSET but which goes
-     in the opposite direction.  NEW-NAME is the name of the new
-     charset.  The new charset is returned.
-
- - Function: charset-from-attributes dimension chars final &optional
-          direction
-     This function returns a charset with the given DIMENSION, CHARS,
-     FINAL, and DIRECTION.  If DIRECTION is omitted, both directions
-     will be checked (left-to-right will be returned if character sets
-     exist for both directions).
-
- - Function: charset-reverse-direction-charset charset
-     This function returns the charset (if any) with the same dimension,
-     number of characters, and final byte as CHARSET, but which is
-     displayed in the opposite direction.
-
-\1f
-File: lispref.info,  Node: Charset Property Functions,  Next: Predefined Charsets,  Prev: Basic Charset Functions,  Up: Charsets
-
-Charset Property Functions
---------------------------
-
-   All of these functions accept either a charset name or charset
-object.
-
- - Function: charset-property charset prop
-     This function returns property PROP of CHARSET.  *Note Charset
-     Properties::.
-
-   Convenience functions are also provided for retrieving individual
-properties of a charset.
-
- - Function: charset-name charset
-     This function returns the name of CHARSET.  This will be a symbol.
-
- - Function: charset-doc-string charset
-     This function returns the doc string of CHARSET.
-
- - Function: charset-registry charset
-     This function returns the registry of CHARSET.
-
- - Function: charset-dimension charset
-     This function returns the dimension of CHARSET.
-
- - Function: charset-chars charset
-     This function returns the number of characters per dimension of
-     CHARSET.
-
- - Function: charset-columns charset
-     This function returns the number of display columns per character
-     (in TTY mode) of CHARSET.
-
- - Function: charset-direction charset
-     This function returns the display direction of CHARSET--either
-     `l2r' or `r2l'.
-
- - Function: charset-final charset
-     This function returns the final byte of the ISO 2022 escape
-     sequence designating CHARSET.
-
- - Function: charset-graphic charset
-     This function returns either 0 or 1, depending on whether the
-     position codes of characters in CHARSET map to the left or right
-     half of their font, respectively.
-
- - Function: charset-ccl-program charset
-     This function returns the CCL program, if any, for converting
-     position codes of characters in CHARSET into font indices.
-
-   The only property of a charset that can currently be set after the
-charset has been created is the CCL program.
-
- - Function: set-charset-ccl-program charset ccl-program
-     This function sets the `ccl-program' property of CHARSET to
-     CCL-PROGRAM.
-
index 144d591..d39722d 100644 (file)
@@ -50,6 +50,436 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Internationalization Terminology,  Next: Charsets,  Up: MULE
+
+Internationalization Terminology
+================================
+
+   In internationalization terminology, a string of text is divided up
+into "characters", which are the printable units that make up the text.
+A single character is (for example) a capital `A', the number `2', a
+Katakana character, a Hangul character, a Kanji ideograph (an
+"ideograph" is a "picture" character, such as is used in Japanese
+Kanji, Chinese Hanzi, and Korean Hanja; typically there are thousands
+of such ideographs in each language), etc.  The basic property of a
+character is that it is the smallest unit of text with semantic
+significance in text processing.
+
+   Human beings normally process text visually, so to a first
+approximation a character may be identified with its shape.  Note that
+the same character may be drawn by two different people (or in two
+different fonts) in slightly different ways, although the "basic shape"
+will be the same.  But consider the works of Scott Kim; human beings
+can recognize hugely variant shapes as the "same" character.
+Sometimes, especially where characters are extremely complicated to
+write, completely different shapes may be defined as the "same"
+character in national standards.  The Taiwanese variant of Hanzi is
+generally the most complicated; over the centuries, the Japanese,
+Koreans, and the People's Republic of China have adopted
+simplifications of the shape, but the line of descent from the original
+shape is recorded, and the meanings and pronunciation of different
+forms of the same character are considered to be identical within each
+language.  (Of course, it may take a specialist to recognize the
+related form; the point is that the relations are standardized, despite
+the differing shapes.)
+
+   In some cases, the differences will be significant enough that it is
+actually possible to identify two or more distinct shapes that both
+represent the same character.  For example, the lowercase letters `a'
+and `g' each have two distinct possible shapes--the `a' can optionally
+have a curved tail projecting off the top, and the `g' can be formed
+either of two loops, or of one loop and a tail hanging off the bottom.
+Such distinct possible shapes of a character are called "glyphs".  The
+important characteristic of two glyphs making up the same character is
+that the choice between one or the other is purely stylistic and has no
+linguistic effect on a word (this is the reason why a capital `A' and
+lowercase `a' are different characters rather than different
+glyphs--e.g.  `Aspen' is a city while `aspen' is a kind of tree).
+
+   Note that "character" and "glyph" are used differently here than
+elsewhere in XEmacs.
+
+   A "character set" is essentially a set of related characters.  ASCII,
+for example, is a set of 94 characters (or 128, if you count
+non-printing characters).  Other character sets are ISO8859-1 (ASCII
+plus various accented characters and other international symbols), JIS
+X 0201 (ASCII, more or less, plus half-width Katakana), JIS X 0208
+(Japanese Kanji), JIS X 0212 (a second set of less-used Japanese Kanji),
+GB2312 (Mainland Chinese Hanzi), etc.
+
+   The definition of a character set will implicitly or explicitly give
+it an "ordering", a way of assigning a number to each character in the
+set.  For many character sets, there is a natural ordering, for example
+the "ABC" ordering of the Roman letters.  But it is not clear whether
+digits should come before or after the letters, and in fact different
+European languages treat the ordering of accented characters
+differently.  It is useful to use the natural order where available, of
+course.  The number assigned to any particular character is called the
+character's "code point".  (Within a given character set, each
+character has a unique code point.  Thus the word "set" is ill-chosen;
+different orderings of the same characters are different character sets.
+Identifying characters is simple enough for alphabetic character sets,
+but the difference in ordering can cause great headaches when the same
+thousands of characters are used by different cultures as in the Hanzi.)
+
+   A code point may be broken into a number of "position codes".  The
+number of position codes required to index a particular character in a
+character set is called the "dimension" of the character set.  For
+practical purposes, a position code may be thought of as a byte-sized
+index.  The printing characters of ASCII, being a relatively small
+character set, is of dimension one, and each character in the set is
+indexed using a single position code, in the range 1 through 94.  Use of
+this unusual range, rather than the familiar 33 through 126, is an
+intentional abstraction; to understand the programming issues you must
+break the equation between character sets and encodings.
+
+   JIS X 0208, i.e. Japanese Kanji, has thousands of characters, and is
+of dimension two - every character is indexed by two position codes,
+each in the range 1 through 94.  (This number "94" is not a
+coincidence; we shall see that the JIS position codes were chosen so
+that JIS kanji could be encoded without using codes that in ASCII are
+associated with device control functions.)  Note that the choice of the
+range here is somewhat arbitrary.  You could just as easily index the
+printing characters in ASCII using numbers in the range 0 through 93, 2
+through 95, 3 through 96, etc.  In fact, the standardized _encoding_
+for the ASCII _character set_ uses the range 33 through 126.
+
+   An "encoding" is a way of numerically representing characters from
+one or more character sets into a stream of like-sized numerical values
+called "words"; typically these are 8-bit, 16-bit, or 32-bit
+quantities.  If an encoding encompasses only one character set, then the
+position codes for the characters in that character set could be used
+directly.  (This is the case with the trivial cipher used by children,
+assigning 1 to `A', 2 to `B', and so on.)  However, even with ASCII,
+other considerations intrude.  For example, why are the upper- and
+lowercase alphabets separated by 8 characters?  Why do the digits start
+with `0' being assigned the code 48?  In both cases because semantically
+interesting operations (case conversion and numerical value extraction)
+become convenient masking operations.  Other artificial aspects (the
+control characters being assigned to codes 0-31 and 127) are historical
+accidents.  (The use of 127 for `DEL' is an artifact of the "punch
+once" nature of paper tape, for example.)
+
+   Naive use of the position code is not possible, however, if more than
+one character set is to be used in the encoding.  For example, printed
+Japanese text typically requires characters from multiple character sets
+- ASCII, JIS X 0208, and JIS X 0212, to be specific.  Each of these is
+indexed using one or more position codes in the range 1 through 94, so
+the position codes could not be used directly or there would be no way
+to tell which character was meant.  Different Japanese encodings handle
+this differently - JIS uses special escape characters to denote
+different character sets; EUC sets the high bit of the position codes
+for JIS X 0208 and JIS X 0212, and puts a special extra byte before each
+JIS X 0212 character; etc.  (JIS, EUC, and most of the other encodings
+you will encounter in files are 7-bit or 8-bit encodings.  There is one
+common 16-bit encoding, which is Unicode; this strives to represent all
+the world's characters in a single large character set.  32-bit
+encodings are often used internally in programs, such as XEmacs with
+MULE support, to simplify the code that manipulates them; however, they
+are not used externally because they are not very space-efficient.)
+
+   A general method of handling text using multiple character sets
+(whether for multilingual text, or simply text in an extremely
+complicated single language like Japanese) is defined in the
+international standard ISO 2022.  ISO 2022 will be discussed in more
+detail later (*note ISO 2022::), but for now suffice it to say that text
+needs control functions (at least spacing), and if escape sequences are
+to be used, an escape sequence introducer.  It was decided to make all
+text streams compatible with ASCII in the sense that the codes 0-31
+(and 128-159) would always be control codes, never graphic characters,
+and where defined by the character set the `SPC' character would be
+assigned code 32, and `DEL' would be assigned 127.  Thus there are 94
+code points remaining if 7 bits are used.  This is the reason that most
+character sets are defined using position codes in the range 1 through
+94.  Then ISO 2022 compatible encodings are produced by shifting the
+position codes 1 to 94 into character codes 33 to 126, or (if 8 bit
+codes are available) into character codes 161 to 254.
+
+   Encodings are classified as either "modal" or "non-modal".  In a
+"modal encoding", there are multiple states that the encoding can be
+in, and the interpretation of the values in the stream depends on the
+current global state of the encoding.  Special values in the encoding,
+called "escape sequences", are used to change the global state.  JIS,
+for example, is a modal encoding.  The bytes `ESC $ B' indicate that,
+from then on, bytes are to be interpreted as position codes for JIS X
+0208, rather than as ASCII.  This effect is cancelled using the bytes
+`ESC ( B', which mean "switch from whatever the current state is to
+ASCII".  To switch to JIS X 0212, the escape sequence `ESC $ ( D'.
+(Note that here, as is common, the escape sequences do in fact begin
+with `ESC'.  This is not necessarily the case, however.  Some encodings
+use control characters called "locking shifts" (effect persists until
+cancelled) to switch character sets.)
+
+   A "non-modal encoding" has no global state that extends past the
+character currently being interpreted.  EUC, for example, is a
+non-modal encoding.  Characters in JIS X 0208 are encoded by setting
+the high bit of the position codes, and characters in JIS X 0212 are
+encoded by doing the same but also prefixing the character with the
+byte 0x8F.
+
+   The advantage of a modal encoding is that it is generally more
+space-efficient, and is easily extendable because there are essentially
+an arbitrary number of escape sequences that can be created.  The
+disadvantage, however, is that it is much more difficult to work with
+if it is not being processed in a sequential manner.  In the non-modal
+EUC encoding, for example, the byte 0x41 always refers to the letter
+`A'; whereas in JIS, it could either be the letter `A', or one of the
+two position codes in a JIS X 0208 character, or one of the two
+position codes in a JIS X 0212 character.  Determining exactly which
+one is meant could be difficult and time-consuming if the previous
+bytes in the string have not already been processed, or impossible if
+they are drawn from an external stream that cannot be rewound.
+
+   Non-modal encodings are further divided into "fixed-width" and
+"variable-width" formats.  A fixed-width encoding always uses the same
+number of words per character, whereas a variable-width encoding does
+not.  EUC is a good example of a variable-width encoding: one to three
+bytes are used per character, depending on the character set.  16-bit
+and 32-bit encodings are nearly always fixed-width, and this is in fact
+one of the main reasons for using an encoding with a larger word size.
+The advantages of fixed-width encodings should be obvious.  The
+advantages of variable-width encodings are that they are generally more
+space-efficient and allow for compatibility with existing 8-bit
+encodings such as ASCII.  (For example, in Unicode ASCII characters are
+simply promoted to a 16-bit representation.  That means that every
+ASCII character contains a `NUL' byte; evidently all of the standard
+string manipulation functions will lose badly in a fixed-width Unicode
+environment.)
+
+   The bytes in an 8-bit encoding are often referred to as "octets"
+rather than simply as bytes.  This terminology dates back to the days
+before 8-bit bytes were universal, when some computers had 9-bit bytes,
+others had 10-bit bytes, etc.
+
+\1f
+File: lispref.info,  Node: Charsets,  Next: MULE Characters,  Prev: Internationalization Terminology,  Up: MULE
+
+Charsets
+========
+
+   A "charset" in MULE is an object that encapsulates a particular
+character set as well as an ordering of those characters.  Charsets are
+permanent objects and are named using symbols, like faces.
+
+ - Function: charsetp object
+     This function returns non-`nil' if OBJECT is a charset.
+
+* Menu:
+
+* Charset Properties::          Properties of a charset.
+* Basic Charset Functions::     Functions for working with charsets.
+* Charset Property Functions::  Functions for accessing charset properties.
+* Predefined Charsets::         Predefined charset objects.
+
+\1f
+File: lispref.info,  Node: Charset Properties,  Next: Basic Charset Functions,  Up: Charsets
+
+Charset Properties
+------------------
+
+   Charsets have the following properties:
+
+`name'
+     A symbol naming the charset.  Every charset must have a different
+     name; this allows a charset to be referred to using its name
+     rather than the actual charset object.
+
+`doc-string'
+     A documentation string describing the charset.
+
+`registry'
+     A regular expression matching the font registry field for this
+     character set.  For example, both the `ascii' and `latin-iso8859-1'
+     charsets use the registry `"ISO8859-1"'.  This field is used to
+     choose an appropriate font when the user gives a general font
+     specification such as `-*-courier-medium-r-*-140-*', i.e. a
+     14-point upright medium-weight Courier font.
+
+`dimension'
+     Number of position codes used to index a character in the
+     character set.  XEmacs/MULE can only handle character sets of
+     dimension 1 or 2.  This property defaults to 1.
+
+`chars'
+     Number of characters in each dimension.  In XEmacs/MULE, the only
+     allowed values are 94 or 96. (There are a couple of pre-defined
+     character sets, such as ASCII, that do not follow this, but you
+     cannot define new ones like this.) Defaults to 94.  Note that if
+     the dimension is 2, the character set thus described is 94x94 or
+     96x96.
+
+`columns'
+     Number of columns used to display a character in this charset.
+     Only used in TTY mode. (Under X, the actual width of a character
+     can be derived from the font used to display the characters.)  If
+     unspecified, defaults to the dimension. (This is almost always the
+     correct value, because character sets with dimension 2 are usually
+     ideograph character sets, which need two columns to display the
+     intricate ideographs.)
+
+`direction'
+     A symbol, either `l2r' (left-to-right) or `r2l' (right-to-left).
+     Defaults to `l2r'.  This specifies the direction that the text
+     should be displayed in, and will be left-to-right for most
+     charsets but right-to-left for Hebrew and Arabic. (Right-to-left
+     display is not currently implemented.)
+
+`final'
+     Final byte of the standard ISO 2022 escape sequence designating
+     this charset.  Must be supplied.  Each combination of (DIMENSION,
+     CHARS) defines a separate namespace for final bytes, and each
+     charset within a particular namespace must have a different final
+     byte.  Note that ISO 2022 restricts the final byte to the range
+     0x30 - 0x7E if dimension == 1, and 0x30 - 0x5F if dimension == 2.
+     Note also that final bytes in the range 0x30 - 0x3F are reserved
+     for user-defined (not official) character sets.  For more
+     information on ISO 2022, see *Note Coding Systems::.
+
+`graphic'
+     0 (use left half of font on output) or 1 (use right half of font on
+     output).  Defaults to 0.  This specifies how to convert the
+     position codes that index a character in a character set into an
+     index into the font used to display the character set.  With
+     `graphic' set to 0, position codes 33 through 126 map to font
+     indices 33 through 126; with it set to 1, position codes 33
+     through 126 map to font indices 161 through 254 (i.e. the same
+     number but with the high bit set).  For example, for a font whose
+     registry is ISO8859-1, the left half of the font (octets 0x20 -
+     0x7F) is the `ascii' charset, while the right half (octets 0xA0 -
+     0xFF) is the `latin-iso8859-1' charset.
+
+`ccl-program'
+     A compiled CCL program used to convert a character in this charset
+     into an index into the font.  This is in addition to the `graphic'
+     property.  If a CCL program is defined, the position codes of a
+     character will first be processed according to `graphic' and then
+     passed through the CCL program, with the resulting values used to
+     index the font.
+
+     This is used, for example, in the Big5 character set (used in
+     Taiwan).  This character set is not ISO-2022-compliant, and its
+     size (94x157) does not fit within the maximum 96x96 size of
+     ISO-2022-compliant character sets.  As a result, XEmacs/MULE
+     splits it (in a rather complex fashion, so as to group the most
+     commonly used characters together) into two charset objects
+     (`big5-1' and `big5-2'), each of size 94x94, and each charset
+     object uses a CCL program to convert the modified position codes
+     back into standard Big5 indices to retrieve a character from a
+     Big5 font.
+
+   Most of the above properties can only be set when the charset is
+initialized, and cannot be changed later.  *Note Charset Property
+Functions::.
+
+\1f
+File: lispref.info,  Node: Basic Charset Functions,  Next: Charset Property Functions,  Prev: Charset Properties,  Up: Charsets
+
+Basic Charset Functions
+-----------------------
+
+ - Function: find-charset charset-or-name
+     This function retrieves the charset of the given name.  If
+     CHARSET-OR-NAME is a charset object, it is simply returned.
+     Otherwise, CHARSET-OR-NAME should be a symbol.  If there is no
+     such charset, `nil' is returned.  Otherwise the associated charset
+     object is returned.
+
+ - Function: get-charset name
+     This function retrieves the charset of the given name.  Same as
+     `find-charset' except an error is signalled if there is no such
+     charset instead of returning `nil'.
+
+ - Function: charset-list
+     This function returns a list of the names of all defined charsets.
+
+ - Function: make-charset name doc-string props
+     This function defines a new character set.  This function is for
+     use with MULE support.  NAME is a symbol, the name by which the
+     character set is normally referred.  DOC-STRING is a string
+     describing the character set.  PROPS is a property list,
+     describing the specific nature of the character set.  The
+     recognized properties are `registry', `dimension', `columns',
+     `chars', `final', `graphic', `direction', and `ccl-program', as
+     previously described.
+
+ - Function: make-reverse-direction-charset charset new-name
+     This function makes a charset equivalent to CHARSET but which goes
+     in the opposite direction.  NEW-NAME is the name of the new
+     charset.  The new charset is returned.
+
+ - Function: charset-from-attributes dimension chars final &optional
+          direction
+     This function returns a charset with the given DIMENSION, CHARS,
+     FINAL, and DIRECTION.  If DIRECTION is omitted, both directions
+     will be checked (left-to-right will be returned if character sets
+     exist for both directions).
+
+ - Function: charset-reverse-direction-charset charset
+     This function returns the charset (if any) with the same dimension,
+     number of characters, and final byte as CHARSET, but which is
+     displayed in the opposite direction.
+
+\1f
+File: lispref.info,  Node: Charset Property Functions,  Next: Predefined Charsets,  Prev: Basic Charset Functions,  Up: Charsets
+
+Charset Property Functions
+--------------------------
+
+   All of these functions accept either a charset name or charset
+object.
+
+ - Function: charset-property charset prop
+     This function returns property PROP of CHARSET.  *Note Charset
+     Properties::.
+
+   Convenience functions are also provided for retrieving individual
+properties of a charset.
+
+ - Function: charset-name charset
+     This function returns the name of CHARSET.  This will be a symbol.
+
+ - Function: charset-doc-string charset
+     This function returns the doc string of CHARSET.
+
+ - Function: charset-registry charset
+     This function returns the registry of CHARSET.
+
+ - Function: charset-dimension charset
+     This function returns the dimension of CHARSET.
+
+ - Function: charset-chars charset
+     This function returns the number of characters per dimension of
+     CHARSET.
+
+ - Function: charset-columns charset
+     This function returns the number of display columns per character
+     (in TTY mode) of CHARSET.
+
+ - Function: charset-direction charset
+     This function returns the display direction of CHARSET--either
+     `l2r' or `r2l'.
+
+ - Function: charset-final charset
+     This function returns the final byte of the ISO 2022 escape
+     sequence designating CHARSET.
+
+ - Function: charset-graphic charset
+     This function returns either 0 or 1, depending on whether the
+     position codes of characters in CHARSET map to the left or right
+     half of their font, respectively.
+
+ - Function: charset-ccl-program charset
+     This function returns the CCL program, if any, for converting
+     position codes of characters in CHARSET into font indices.
+
+   The only property of a charset that can currently be set after the
+charset has been created is the CCL program.
+
+ - Function: set-charset-ccl-program charset ccl-program
+     This function sets the `ccl-program' property of CHARSET to
+     CCL-PROGRAM.
+
+\1f
 File: lispref.info,  Node: Predefined Charsets,  Prev: Charset Property Functions,  Up: Charsets
 
 Predefined Charsets
@@ -602,615 +1032,3 @@ EOL Conversion
      subsidiary coding systems.  (This value is converted to `nil' when
      stored internally, and `coding-system-property' will return `nil'.)
 
-\1f
-File: lispref.info,  Node: Coding System Properties,  Next: Basic Coding System Functions,  Prev: EOL Conversion,  Up: Coding Systems
-
-Coding System Properties
-------------------------
-
-`mnemonic'
-     String to be displayed in the modeline when this coding system is
-     active.
-
-`eol-type'
-     End-of-line conversion to be used.  It should be one of the types
-     listed in *Note EOL Conversion::.
-
-`eol-lf'
-     The coding system which is the same as this one, except that it
-     uses the Unix line-breaking convention.
-
-`eol-crlf'
-     The coding system which is the same as this one, except that it
-     uses the DOS line-breaking convention.
-
-`eol-cr'
-     The coding system which is the same as this one, except that it
-     uses the Macintosh line-breaking convention.
-
-`post-read-conversion'
-     Function called after a file has been read in, to perform the
-     decoding.  Called with two arguments, BEG and END, denoting a
-     region of the current buffer to be decoded.
-
-`pre-write-conversion'
-     Function called before a file is written out, to perform the
-     encoding.  Called with two arguments, BEG and END, denoting a
-     region of the current buffer to be encoded.
-
-   The following additional properties are recognized if TYPE is
-`iso2022':
-
-`charset-g0'
-`charset-g1'
-`charset-g2'
-`charset-g3'
-     The character set initially designated to the G0 - G3 registers.
-     The value should be one of
-
-        * A charset object (designate that character set)
-
-        * `nil' (do not ever use this register)
-
-        * `t' (no character set is initially designated to the
-          register, but may be later on; this automatically sets the
-          corresponding `force-g*-on-output' property)
-
-`force-g0-on-output'
-`force-g1-on-output'
-`force-g2-on-output'
-`force-g3-on-output'
-     If non-`nil', send an explicit designation sequence on output
-     before using the specified register.
-
-`short'
-     If non-`nil', use the short forms `ESC $ @', `ESC $ A', and `ESC $
-     B' on output in place of the full designation sequences `ESC $ (
-     @', `ESC $ ( A', and `ESC $ ( B'.
-
-`no-ascii-eol'
-     If non-`nil', don't designate ASCII to G0 at each end of line on
-     output.  Setting this to non-`nil' also suppresses other
-     state-resetting that normally happens at the end of a line.
-
-`no-ascii-cntl'
-     If non-`nil', don't designate ASCII to G0 before control chars on
-     output.
-
-`seven'
-     If non-`nil', use 7-bit environment on output.  Otherwise, use
-     8-bit environment.
-
-`lock-shift'
-     If non-`nil', use locking-shift (SO/SI) instead of single-shift or
-     designation by escape sequence.
-
-`no-iso6429'
-     If non-`nil', don't use ISO6429's direction specification.
-
-`escape-quoted'
-     If non-nil, literal control characters that are the same as the
-     beginning of a recognized ISO 2022 or ISO 6429 escape sequence (in
-     particular, ESC (0x1B), SO (0x0E), SI (0x0F), SS2 (0x8E), SS3
-     (0x8F), and CSI (0x9B)) are "quoted" with an escape character so
-     that they can be properly distinguished from an escape sequence.
-     (Note that doing this results in a non-portable encoding.) This
-     encoding flag is used for byte-compiled files.  Note that ESC is a
-     good choice for a quoting character because there are no escape
-     sequences whose second byte is a character from the Control-0 or
-     Control-1 character sets; this is explicitly disallowed by the ISO
-     2022 standard.
-
-`input-charset-conversion'
-     A list of conversion specifications, specifying conversion of
-     characters in one charset to another when decoding is performed.
-     Each specification is a list of two elements: the source charset,
-     and the destination charset.
-
-`output-charset-conversion'
-     A list of conversion specifications, specifying conversion of
-     characters in one charset to another when encoding is performed.
-     The form of each specification is the same as for
-     `input-charset-conversion'.
-
-   The following additional properties are recognized (and required) if
-TYPE is `ccl':
-
-`decode'
-     CCL program used for decoding (converting to internal format).
-
-`encode'
-     CCL program used for encoding (converting to external format).
-
-   The following properties are used internally:  EOL-CR, EOL-CRLF,
-EOL-LF, and BASE.
-
-\1f
-File: lispref.info,  Node: Basic Coding System Functions,  Next: Coding System Property Functions,  Prev: Coding System Properties,  Up: Coding Systems
-
-Basic Coding System Functions
------------------------------
-
- - Function: find-coding-system coding-system-or-name
-     This function retrieves the coding system of the given name.
-
-     If CODING-SYSTEM-OR-NAME is a coding-system object, it is simply
-     returned.  Otherwise, CODING-SYSTEM-OR-NAME should be a symbol.
-     If there is no such coding system, `nil' is returned.  Otherwise
-     the associated coding system object is returned.
-
- - Function: get-coding-system name
-     This function retrieves the coding system of the given name.  Same
-     as `find-coding-system' except an error is signalled if there is no
-     such coding system instead of returning `nil'.
-
- - Function: coding-system-list
-     This function returns a list of the names of all defined coding
-     systems.
-
- - Function: coding-system-name coding-system
-     This function returns the name of the given coding system.
-
- - Function: coding-system-base coding-system
-     Returns the base coding system (undecided EOL convention) coding
-     system.
-
- - Function: make-coding-system name type &optional doc-string props
-     This function registers symbol NAME as a coding system.
-
-     TYPE describes the conversion method used and should be one of the
-     types listed in *Note Coding System Types::.
-
-     DOC-STRING is a string describing the coding system.
-
-     PROPS is a property list, describing the specific nature of the
-     character set.  Recognized properties are as in *Note Coding
-     System Properties::.
-
- - Function: copy-coding-system old-coding-system new-name
-     This function copies OLD-CODING-SYSTEM to NEW-NAME.  If NEW-NAME
-     does not name an existing coding system, a new one will be created.
-
- - Function: subsidiary-coding-system coding-system eol-type
-     This function returns the subsidiary coding system of
-     CODING-SYSTEM with eol type EOL-TYPE.
-
-\1f
-File: lispref.info,  Node: Coding System Property Functions,  Next: Encoding and Decoding Text,  Prev: Basic Coding System Functions,  Up: Coding Systems
-
-Coding System Property Functions
---------------------------------
-
- - Function: coding-system-doc-string coding-system
-     This function returns the doc string for CODING-SYSTEM.
-
- - Function: coding-system-type coding-system
-     This function returns the type of CODING-SYSTEM.
-
- - Function: coding-system-property coding-system prop
-     This function returns the PROP property of CODING-SYSTEM.
-
-\1f
-File: lispref.info,  Node: Encoding and Decoding Text,  Next: Detection of Textual Encoding,  Prev: Coding System Property Functions,  Up: Coding Systems
-
-Encoding and Decoding Text
---------------------------
-
- - Function: decode-coding-region start end coding-system &optional
-          buffer
-     This function decodes the text between START and END which is
-     encoded in CODING-SYSTEM.  This is useful if you've read in
-     encoded text from a file without decoding it (e.g. you read in a
-     JIS-formatted file but used the `binary' or `no-conversion' coding
-     system, so that it shows up as `^[$B!<!+^[(B').  The length of the
-     encoded text is returned.  BUFFER defaults to the current buffer
-     if unspecified.
-
- - Function: encode-coding-region start end coding-system &optional
-          buffer
-     This function encodes the text between START and END using
-     CODING-SYSTEM.  This will, for example, convert Japanese
-     characters into stuff such as `^[$B!<!+^[(B' if you use the JIS
-     encoding.  The length of the encoded text is returned.  BUFFER
-     defaults to the current buffer if unspecified.
-
-\1f
-File: lispref.info,  Node: Detection of Textual Encoding,  Next: Big5 and Shift-JIS Functions,  Prev: Encoding and Decoding Text,  Up: Coding Systems
-
-Detection of Textual Encoding
------------------------------
-
- - Function: coding-category-list
-     This function returns a list of all recognized coding categories.
-
- - Function: set-coding-priority-list list
-     This function changes the priority order of the coding categories.
-     LIST should be a list of coding categories, in descending order of
-     priority.  Unspecified coding categories will be lower in priority
-     than all specified ones, in the same relative order they were in
-     previously.
-
- - Function: coding-priority-list
-     This function returns a list of coding categories in descending
-     order of priority.
-
- - Function: set-coding-category-system coding-category coding-system
-     This function changes the coding system associated with a coding
-     category.
-
- - Function: coding-category-system coding-category
-     This function returns the coding system associated with a coding
-     category.
-
- - Function: detect-coding-region start end &optional buffer
-     This function detects coding system of the text in the region
-     between START and END.  Returned value is a list of possible coding
-     systems ordered by priority.  If only ASCII characters are found,
-     it returns `autodetect' or one of its subsidiary coding systems
-     according to a detected end-of-line type.  Optional arg BUFFER
-     defaults to the current buffer.
-
-\1f
-File: lispref.info,  Node: Big5 and Shift-JIS Functions,  Next: Predefined Coding Systems,  Prev: Detection of Textual Encoding,  Up: Coding Systems
-
-Big5 and Shift-JIS Functions
-----------------------------
-
-   These are special functions for working with the non-standard
-Shift-JIS and Big5 encodings.
-
- - Function: decode-shift-jis-char code
-     This function decodes a JIS X 0208 character of Shift-JIS
-     coding-system.  CODE is the character code in Shift-JIS as a cons
-     of type bytes.  The corresponding character is returned.
-
- - Function: encode-shift-jis-char ch
-     This function encodes a JIS X 0208 character CH to SHIFT-JIS
-     coding-system.  The corresponding character code in SHIFT-JIS is
-     returned as a cons of two bytes.
-
- - Function: decode-big5-char code
-     This function decodes a Big5 character CODE of BIG5 coding-system.
-     CODE is the character code in BIG5.  The corresponding character
-     is returned.
-
- - Function: encode-big5-char ch
-     This function encodes the Big5 character CHAR to BIG5
-     coding-system.  The corresponding character code in Big5 is
-     returned.
-
-\1f
-File: lispref.info,  Node: Predefined Coding Systems,  Prev: Big5 and Shift-JIS Functions,  Up: Coding Systems
-
-Coding Systems Implemented
---------------------------
-
-   MULE initializes most of the commonly used coding systems at XEmacs's
-startup.  A few others are initialized only when the relevant language
-environment is selected and support libraries are loaded.  (NB: The
-following list is based on XEmacs 21.2.19, the development branch at the
-time of writing.  The list may be somewhat different for other
-versions.  Recent versions of GNU Emacs 20 implement a few more rare
-coding systems; work is being done to port these to XEmacs.)
-
-   Unfortunately, there is not a consistent naming convention for
-character sets, and for practical purposes coding systems often take
-their name from their principal character sets (ASCII, KOI8-R, Shift
-JIS).  Others take their names from the coding system (ISO-2022-JP,
-EUC-KR), and a few from their non-text usages (internal, binary).  To
-provide for this, and for the fact that many coding systems have
-several common names, an aliasing system is provided.  Finally, some
-effort has been made to use names that are registered as MIME charsets
-(this is why the name 'shift_jis contains that un-Lisp-y underscore).
-
-   There is a systematic naming convention regarding end-of-line (EOL)
-conventions for different systems.  A coding system whose name ends in
-"-unix" forces the assumptions that lines are broken by newlines (0x0A).
-A coding system whose name ends in "-mac" forces the assumptions that
-lines are broken by ASCII CRs (0x0D).  A coding system whose name ends
-in "-dos" forces the assumptions that lines are broken by CRLF sequences
-(0x0D 0x0A).  These subsidiary coding systems are automatically derived
-from a base coding system.  Use of the base coding system implies
-autodetection of the text file convention.  (The fact that the -unix,
--mac, and -dos are derived from a base system results in them showing up
-as "aliases" in `list-coding-systems'.)  These subsidiaries have a
-consistent modeline indicator as well.  "-dos" coding systems have ":T"
-appended to their modeline indicator, while "-mac" coding systems have
-":t" appended (eg, "ISO8:t" for iso-2022-8-mac).
-
-   In the following table, each coding system is given with its mode
-line indicator in parentheses.  Non-textual coding systems are listed
-first, followed by textual coding systems and their aliases. (The
-coding system subsidiary modeline indicators ":T" and ":t" will be
-omitted from the table of coding systems.)
-
-   ### SJT 1999-08-23 Maybe should order these by language?  Definitely
-need language usage for the ISO-8859 family.
-
-   Note that although true coding system aliases have been implemented
-for XEmacs 21.2, the coding system initialization has not yet been
-converted as of 21.2.19.  So coding systems described as aliases have
-the same properties as the aliased coding system, but will not be equal
-as Lisp objects.
-
-`automatic-conversion'
-`undecided'
-`undecided-dos'
-`undecided-mac'
-`undecided-unix'
-     Modeline indicator: `Auto'.  A type `undecided' coding system.
-     Attempts to determine an appropriate coding system from file
-     contents or the environment.
-
-`raw-text'
-`no-conversion'
-`raw-text-dos'
-`raw-text-mac'
-`raw-text-unix'
-`no-conversion-dos'
-`no-conversion-mac'
-`no-conversion-unix'
-     Modeline indicator: `Raw'.  A type `no-conversion' coding system,
-     which converts only line-break-codes.  An implementation quirk
-     means that this coding system is also used for ISO8859-1.
-
-`binary'
-     Modeline indicator: `Binary'.  A type `no-conversion' coding
-     system which does no character coding or EOL conversions.  An
-     alias for `raw-text-unix'.
-
-`alternativnyj'
-`alternativnyj-dos'
-`alternativnyj-mac'
-`alternativnyj-unix'
-     Modeline indicator: `Cy.Alt'.  A type `ccl' coding system used for
-     Alternativnyj, an encoding of the Cyrillic alphabet.
-
-`big5'
-`big5-dos'
-`big5-mac'
-`big5-unix'
-     Modeline indicator: `Zh/Big5'.  A type `big5' coding system used
-     for BIG5, the most common encoding of traditional Chinese as used
-     in Taiwan.
-
-`cn-gb-2312'
-`cn-gb-2312-dos'
-`cn-gb-2312-mac'
-`cn-gb-2312-unix'
-     Modeline indicator: `Zh-GB/EUC'.  A type `iso2022' coding system
-     used for simplified Chinese (as used in the People's Republic of
-     China), with the `ascii' (G0), `chinese-gb2312' (G1), and `sisheng'
-     (G2) character sets initially designated.  Chinese EUC (Extended
-     Unix Code).
-
-`ctext-hebrew'
-`ctext-hebrew-dos'
-`ctext-hebrew-mac'
-`ctext-hebrew-unix'
-     Modeline indicator: `CText/Hbrw'.  A type `iso2022' coding system
-     with the `ascii' (G0) and `hebrew-iso8859-8' (G1) character sets
-     initially designated for Hebrew.
-
-`ctext'
-`ctext-dos'
-`ctext-mac'
-`ctext-unix'
-     Modeline indicator: `CText'.  A type `iso2022' 8-bit coding system
-     with the `ascii' (G0) and `latin-iso8859-1' (G1) character sets
-     initially designated.  X11 Compound Text Encoding.  Often
-     mistakenly recognized instead of EUC encodings; usual cause is
-     inappropriate setting of `coding-priority-list'.
-
-`escape-quoted'
-     Modeline indicator: `ESC/Quot'.  A type `iso2022' 8-bit coding
-     system with the `ascii' (G0) and `latin-iso8859-1' (G1) character
-     sets initially designated and escape quoting.  Unix EOL conversion
-     (ie, no conversion).  It is used for .ELC files.
-
-`euc-jp'
-`euc-jp-dos'
-`euc-jp-mac'
-`euc-jp-unix'
-     Modeline indicator: `Ja/EUC'.  A type `iso2022' 8-bit coding system
-     with `ascii' (G0), `japanese-jisx0208' (G1), `katakana-jisx0201'
-     (G2), and `japanese-jisx0212' (G3) initially designated.  Japanese
-     EUC (Extended Unix Code).
-
-`euc-kr'
-`euc-kr-dos'
-`euc-kr-mac'
-`euc-kr-unix'
-     Modeline indicator: `ko/EUC'.  A type `iso2022' 8-bit coding system
-     with `ascii' (G0) and `korean-ksc5601' (G1) initially designated.
-     Korean EUC (Extended Unix Code).
-
-`hz-gb-2312'
-     Modeline indicator: `Zh-GB/Hz'.  A type `no-conversion' coding
-     system with Unix EOL convention (ie, no conversion) using
-     post-read-decode and pre-write-encode functions to translate the
-     Hz/ZW coding system used for Chinese.
-
-`iso-2022-7bit'
-`iso-2022-7bit-unix'
-`iso-2022-7bit-dos'
-`iso-2022-7bit-mac'
-`iso-2022-7'
-     Modeline indicator: `ISO7'.  A type `iso2022' 7-bit coding system
-     with `ascii' (G0) initially designated.  Other character sets must
-     be explicitly designated to be used.
-
-`iso-2022-7bit-ss2'
-`iso-2022-7bit-ss2-dos'
-`iso-2022-7bit-ss2-mac'
-`iso-2022-7bit-ss2-unix'
-     Modeline indicator: `ISO7/SS'.  A type `iso2022' 7-bit coding
-     system with `ascii' (G0) initially designated.  Other character
-     sets must be explicitly designated to be used.  SS2 is used to
-     invoke a 96-charset, one character at a time.
-
-`iso-2022-8'
-`iso-2022-8-dos'
-`iso-2022-8-mac'
-`iso-2022-8-unix'
-     Modeline indicator: `ISO8'.  A type `iso2022' 8-bit coding system
-     with `ascii' (G0) and `latin-iso8859-1' (G1) initially designated.
-     Other character sets must be explicitly designated to be used.
-     No single-shift or locking-shift.
-
-`iso-2022-8bit-ss2'
-`iso-2022-8bit-ss2-dos'
-`iso-2022-8bit-ss2-mac'
-`iso-2022-8bit-ss2-unix'
-     Modeline indicator: `ISO8/SS'.  A type `iso2022' 8-bit coding
-     system with `ascii' (G0) and `latin-iso8859-1' (G1) initially
-     designated.  Other character sets must be explicitly designated to
-     be used.  SS2 is used to invoke a 96-charset, one character at a
-     time.
-
-`iso-2022-int-1'
-`iso-2022-int-1-dos'
-`iso-2022-int-1-mac'
-`iso-2022-int-1-unix'
-     Modeline indicator: `INT-1'.  A type `iso2022' 7-bit coding system
-     with `ascii' (G0) and `korean-ksc5601' (G1) initially designated.
-     ISO-2022-INT-1.
-
-`iso-2022-jp-1978-irv'
-`iso-2022-jp-1978-irv-dos'
-`iso-2022-jp-1978-irv-mac'
-`iso-2022-jp-1978-irv-unix'
-     Modeline indicator: `Ja-78/7bit'.  A type `iso2022' 7-bit coding
-     system.  For compatibility with old Japanese terminals; if you
-     need to know, look at the source.
-
-`iso-2022-jp'
-`iso-2022-jp-2 (ISO7/SS)'
-`iso-2022-jp-dos'
-`iso-2022-jp-mac'
-`iso-2022-jp-unix'
-`iso-2022-jp-2-dos'
-`iso-2022-jp-2-mac'
-`iso-2022-jp-2-unix'
-     Modeline indicator: `MULE/7bit'.  A type `iso2022' 7-bit coding
-     system with `ascii' (G0) initially designated, and complex
-     specifications to insure backward compatibility with old Japanese
-     systems.  Used for communication with mail and news in Japan.  The
-     "-2" versions also use SS2 to invoke a 96-charset one character at
-     a time.
-
-`iso-2022-kr'
-     Modeline indicator: `Ko/7bit'  A type `iso2022' 7-bit coding
-     system with `ascii' (G0) and `korean-ksc5601' (G1) initially
-     designated.  Used for e-mail in Korea.
-
-`iso-2022-lock'
-`iso-2022-lock-dos'
-`iso-2022-lock-mac'
-`iso-2022-lock-unix'
-     Modeline indicator: `ISO7/Lock'.  A type `iso2022' 7-bit coding
-     system with `ascii' (G0) initially designated, using Locking-Shift
-     to invoke a 96-charset.
-
-`iso-8859-1'
-`iso-8859-1-dos'
-`iso-8859-1-mac'
-`iso-8859-1-unix'
-     Due to implementation, this is not a type `iso2022' coding system,
-     but rather an alias for the `raw-text' coding system.
-
-`iso-8859-2'
-`iso-8859-2-dos'
-`iso-8859-2-mac'
-`iso-8859-2-unix'
-     Modeline indicator: `MIME/Ltn-2'.  A type `iso2022' coding system
-     with `ascii' (G0) and `latin-iso8859-2' (G1) initially invoked.
-
-`iso-8859-3'
-`iso-8859-3-dos'
-`iso-8859-3-mac'
-`iso-8859-3-unix'
-     Modeline indicator: `MIME/Ltn-3'.  A type `iso2022' coding system
-     with `ascii' (G0) and `latin-iso8859-3' (G1) initially invoked.
-
-`iso-8859-4'
-`iso-8859-4-dos'
-`iso-8859-4-mac'
-`iso-8859-4-unix'
-     Modeline indicator: `MIME/Ltn-4'.  A type `iso2022' coding system
-     with `ascii' (G0) and `latin-iso8859-4' (G1) initially invoked.
-
-`iso-8859-5'
-`iso-8859-5-dos'
-`iso-8859-5-mac'
-`iso-8859-5-unix'
-     Modeline indicator: `ISO8/Cyr'.  A type `iso2022' coding system
-     with `ascii' (G0) and `cyrillic-iso8859-5' (G1) initially invoked.
-
-`iso-8859-7'
-`iso-8859-7-dos'
-`iso-8859-7-mac'
-`iso-8859-7-unix'
-     Modeline indicator: `Grk'.  A type `iso2022' coding system with
-     `ascii' (G0) and `greek-iso8859-7' (G1) initially invoked.
-
-`iso-8859-8'
-`iso-8859-8-dos'
-`iso-8859-8-mac'
-`iso-8859-8-unix'
-     Modeline indicator: `MIME/Hbrw'.  A type `iso2022' coding system
-     with `ascii' (G0) and `hebrew-iso8859-8' (G1) initially invoked.
-
-`iso-8859-9'
-`iso-8859-9-dos'
-`iso-8859-9-mac'
-`iso-8859-9-unix'
-     Modeline indicator: `MIME/Ltn-5'.  A type `iso2022' coding system
-     with `ascii' (G0) and `latin-iso8859-9' (G1) initially invoked.
-
-`koi8-r'
-`koi8-r-dos'
-`koi8-r-mac'
-`koi8-r-unix'
-     Modeline indicator: `KOI8'.  A type `ccl' coding-system used for
-     KOI8-R, an encoding of the Cyrillic alphabet.
-
-`shift_jis'
-`shift_jis-dos'
-`shift_jis-mac'
-`shift_jis-unix'
-     Modeline indicator: `Ja/SJIS'.  A type `shift-jis' coding-system
-     implementing the Shift-JIS encoding for Japanese.  The underscore
-     is to conform to the MIME charset implementing this encoding.
-
-`tis-620'
-`tis-620-dos'
-`tis-620-mac'
-`tis-620-unix'
-     Modeline indicator: `TIS620'.  A type `ccl' encoding for Thai.  The
-     external encoding is defined by TIS620, the internal encoding is
-     peculiar to MULE, and called `thai-xtis'.
-
-`viqr'
-     Modeline indicator: `VIQR'.  A type `no-conversion' coding system
-     with Unix EOL convention (ie, no conversion) using
-     post-read-decode and pre-write-encode functions to translate the
-     VIQR coding system for Vietnamese.
-
-`viscii'
-`viscii-dos'
-`viscii-mac'
-`viscii-unix'
-     Modeline indicator: `VISCII'.  A type `ccl' coding-system used for
-     VISCII 1.1 for Vietnamese.  Differs slightly from VSCII; VISCII is
-     given priority by XEmacs.
-
-`vscii'
-`vscii-dos'
-`vscii-mac'
-`vscii-unix'
-     Modeline indicator: `VSCII'.  A type `ccl' coding-system used for
-     VSCII 1.1 for Vietnamese.  Differs slightly from VISCII, which is
-     given priority by XEmacs.  Use `(prefer-coding-system
-     'vietnamese-vscii)' to give priority to VSCII.
-
index 1f25cc8..ace6584 100644 (file)
@@ -50,6 +50,618 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Coding System Properties,  Next: Basic Coding System Functions,  Prev: EOL Conversion,  Up: Coding Systems
+
+Coding System Properties
+------------------------
+
+`mnemonic'
+     String to be displayed in the modeline when this coding system is
+     active.
+
+`eol-type'
+     End-of-line conversion to be used.  It should be one of the types
+     listed in *Note EOL Conversion::.
+
+`eol-lf'
+     The coding system which is the same as this one, except that it
+     uses the Unix line-breaking convention.
+
+`eol-crlf'
+     The coding system which is the same as this one, except that it
+     uses the DOS line-breaking convention.
+
+`eol-cr'
+     The coding system which is the same as this one, except that it
+     uses the Macintosh line-breaking convention.
+
+`post-read-conversion'
+     Function called after a file has been read in, to perform the
+     decoding.  Called with two arguments, BEG and END, denoting a
+     region of the current buffer to be decoded.
+
+`pre-write-conversion'
+     Function called before a file is written out, to perform the
+     encoding.  Called with two arguments, BEG and END, denoting a
+     region of the current buffer to be encoded.
+
+   The following additional properties are recognized if TYPE is
+`iso2022':
+
+`charset-g0'
+`charset-g1'
+`charset-g2'
+`charset-g3'
+     The character set initially designated to the G0 - G3 registers.
+     The value should be one of
+
+        * A charset object (designate that character set)
+
+        * `nil' (do not ever use this register)
+
+        * `t' (no character set is initially designated to the
+          register, but may be later on; this automatically sets the
+          corresponding `force-g*-on-output' property)
+
+`force-g0-on-output'
+`force-g1-on-output'
+`force-g2-on-output'
+`force-g3-on-output'
+     If non-`nil', send an explicit designation sequence on output
+     before using the specified register.
+
+`short'
+     If non-`nil', use the short forms `ESC $ @', `ESC $ A', and `ESC $
+     B' on output in place of the full designation sequences `ESC $ (
+     @', `ESC $ ( A', and `ESC $ ( B'.
+
+`no-ascii-eol'
+     If non-`nil', don't designate ASCII to G0 at each end of line on
+     output.  Setting this to non-`nil' also suppresses other
+     state-resetting that normally happens at the end of a line.
+
+`no-ascii-cntl'
+     If non-`nil', don't designate ASCII to G0 before control chars on
+     output.
+
+`seven'
+     If non-`nil', use 7-bit environment on output.  Otherwise, use
+     8-bit environment.
+
+`lock-shift'
+     If non-`nil', use locking-shift (SO/SI) instead of single-shift or
+     designation by escape sequence.
+
+`no-iso6429'
+     If non-`nil', don't use ISO6429's direction specification.
+
+`escape-quoted'
+     If non-nil, literal control characters that are the same as the
+     beginning of a recognized ISO 2022 or ISO 6429 escape sequence (in
+     particular, ESC (0x1B), SO (0x0E), SI (0x0F), SS2 (0x8E), SS3
+     (0x8F), and CSI (0x9B)) are "quoted" with an escape character so
+     that they can be properly distinguished from an escape sequence.
+     (Note that doing this results in a non-portable encoding.) This
+     encoding flag is used for byte-compiled files.  Note that ESC is a
+     good choice for a quoting character because there are no escape
+     sequences whose second byte is a character from the Control-0 or
+     Control-1 character sets; this is explicitly disallowed by the ISO
+     2022 standard.
+
+`input-charset-conversion'
+     A list of conversion specifications, specifying conversion of
+     characters in one charset to another when decoding is performed.
+     Each specification is a list of two elements: the source charset,
+     and the destination charset.
+
+`output-charset-conversion'
+     A list of conversion specifications, specifying conversion of
+     characters in one charset to another when encoding is performed.
+     The form of each specification is the same as for
+     `input-charset-conversion'.
+
+   The following additional properties are recognized (and required) if
+TYPE is `ccl':
+
+`decode'
+     CCL program used for decoding (converting to internal format).
+
+`encode'
+     CCL program used for encoding (converting to external format).
+
+   The following properties are used internally:  EOL-CR, EOL-CRLF,
+EOL-LF, and BASE.
+
+\1f
+File: lispref.info,  Node: Basic Coding System Functions,  Next: Coding System Property Functions,  Prev: Coding System Properties,  Up: Coding Systems
+
+Basic Coding System Functions
+-----------------------------
+
+ - Function: find-coding-system coding-system-or-name
+     This function retrieves the coding system of the given name.
+
+     If CODING-SYSTEM-OR-NAME is a coding-system object, it is simply
+     returned.  Otherwise, CODING-SYSTEM-OR-NAME should be a symbol.
+     If there is no such coding system, `nil' is returned.  Otherwise
+     the associated coding system object is returned.
+
+ - Function: get-coding-system name
+     This function retrieves the coding system of the given name.  Same
+     as `find-coding-system' except an error is signalled if there is no
+     such coding system instead of returning `nil'.
+
+ - Function: coding-system-list
+     This function returns a list of the names of all defined coding
+     systems.
+
+ - Function: coding-system-name coding-system
+     This function returns the name of the given coding system.
+
+ - Function: coding-system-base coding-system
+     Returns the base coding system (undecided EOL convention) coding
+     system.
+
+ - Function: make-coding-system name type &optional doc-string props
+     This function registers symbol NAME as a coding system.
+
+     TYPE describes the conversion method used and should be one of the
+     types listed in *Note Coding System Types::.
+
+     DOC-STRING is a string describing the coding system.
+
+     PROPS is a property list, describing the specific nature of the
+     character set.  Recognized properties are as in *Note Coding
+     System Properties::.
+
+ - Function: copy-coding-system old-coding-system new-name
+     This function copies OLD-CODING-SYSTEM to NEW-NAME.  If NEW-NAME
+     does not name an existing coding system, a new one will be created.
+
+ - Function: subsidiary-coding-system coding-system eol-type
+     This function returns the subsidiary coding system of
+     CODING-SYSTEM with eol type EOL-TYPE.
+
+\1f
+File: lispref.info,  Node: Coding System Property Functions,  Next: Encoding and Decoding Text,  Prev: Basic Coding System Functions,  Up: Coding Systems
+
+Coding System Property Functions
+--------------------------------
+
+ - Function: coding-system-doc-string coding-system
+     This function returns the doc string for CODING-SYSTEM.
+
+ - Function: coding-system-type coding-system
+     This function returns the type of CODING-SYSTEM.
+
+ - Function: coding-system-property coding-system prop
+     This function returns the PROP property of CODING-SYSTEM.
+
+\1f
+File: lispref.info,  Node: Encoding and Decoding Text,  Next: Detection of Textual Encoding,  Prev: Coding System Property Functions,  Up: Coding Systems
+
+Encoding and Decoding Text
+--------------------------
+
+ - Function: decode-coding-region start end coding-system &optional
+          buffer
+     This function decodes the text between START and END which is
+     encoded in CODING-SYSTEM.  This is useful if you've read in
+     encoded text from a file without decoding it (e.g. you read in a
+     JIS-formatted file but used the `binary' or `no-conversion' coding
+     system, so that it shows up as `^[$B!<!+^[(B').  The length of the
+     encoded text is returned.  BUFFER defaults to the current buffer
+     if unspecified.
+
+ - Function: encode-coding-region start end coding-system &optional
+          buffer
+     This function encodes the text between START and END using
+     CODING-SYSTEM.  This will, for example, convert Japanese
+     characters into stuff such as `^[$B!<!+^[(B' if you use the JIS
+     encoding.  The length of the encoded text is returned.  BUFFER
+     defaults to the current buffer if unspecified.
+
+\1f
+File: lispref.info,  Node: Detection of Textual Encoding,  Next: Big5 and Shift-JIS Functions,  Prev: Encoding and Decoding Text,  Up: Coding Systems
+
+Detection of Textual Encoding
+-----------------------------
+
+ - Function: coding-category-list
+     This function returns a list of all recognized coding categories.
+
+ - Function: set-coding-priority-list list
+     This function changes the priority order of the coding categories.
+     LIST should be a list of coding categories, in descending order of
+     priority.  Unspecified coding categories will be lower in priority
+     than all specified ones, in the same relative order they were in
+     previously.
+
+ - Function: coding-priority-list
+     This function returns a list of coding categories in descending
+     order of priority.
+
+ - Function: set-coding-category-system coding-category coding-system
+     This function changes the coding system associated with a coding
+     category.
+
+ - Function: coding-category-system coding-category
+     This function returns the coding system associated with a coding
+     category.
+
+ - Function: detect-coding-region start end &optional buffer
+     This function detects coding system of the text in the region
+     between START and END.  Returned value is a list of possible coding
+     systems ordered by priority.  If only ASCII characters are found,
+     it returns `autodetect' or one of its subsidiary coding systems
+     according to a detected end-of-line type.  Optional arg BUFFER
+     defaults to the current buffer.
+
+\1f
+File: lispref.info,  Node: Big5 and Shift-JIS Functions,  Next: Predefined Coding Systems,  Prev: Detection of Textual Encoding,  Up: Coding Systems
+
+Big5 and Shift-JIS Functions
+----------------------------
+
+   These are special functions for working with the non-standard
+Shift-JIS and Big5 encodings.
+
+ - Function: decode-shift-jis-char code
+     This function decodes a JIS X 0208 character of Shift-JIS
+     coding-system.  CODE is the character code in Shift-JIS as a cons
+     of type bytes.  The corresponding character is returned.
+
+ - Function: encode-shift-jis-char ch
+     This function encodes a JIS X 0208 character CH to SHIFT-JIS
+     coding-system.  The corresponding character code in SHIFT-JIS is
+     returned as a cons of two bytes.
+
+ - Function: decode-big5-char code
+     This function decodes a Big5 character CODE of BIG5 coding-system.
+     CODE is the character code in BIG5.  The corresponding character
+     is returned.
+
+ - Function: encode-big5-char ch
+     This function encodes the Big5 character CHAR to BIG5
+     coding-system.  The corresponding character code in Big5 is
+     returned.
+
+\1f
+File: lispref.info,  Node: Predefined Coding Systems,  Prev: Big5 and Shift-JIS Functions,  Up: Coding Systems
+
+Coding Systems Implemented
+--------------------------
+
+   MULE initializes most of the commonly used coding systems at XEmacs's
+startup.  A few others are initialized only when the relevant language
+environment is selected and support libraries are loaded.  (NB: The
+following list is based on XEmacs 21.2.19, the development branch at the
+time of writing.  The list may be somewhat different for other
+versions.  Recent versions of GNU Emacs 20 implement a few more rare
+coding systems; work is being done to port these to XEmacs.)
+
+   Unfortunately, there is not a consistent naming convention for
+character sets, and for practical purposes coding systems often take
+their name from their principal character sets (ASCII, KOI8-R, Shift
+JIS).  Others take their names from the coding system (ISO-2022-JP,
+EUC-KR), and a few from their non-text usages (internal, binary).  To
+provide for this, and for the fact that many coding systems have
+several common names, an aliasing system is provided.  Finally, some
+effort has been made to use names that are registered as MIME charsets
+(this is why the name 'shift_jis contains that un-Lisp-y underscore).
+
+   There is a systematic naming convention regarding end-of-line (EOL)
+conventions for different systems.  A coding system whose name ends in
+"-unix" forces the assumptions that lines are broken by newlines (0x0A).
+A coding system whose name ends in "-mac" forces the assumptions that
+lines are broken by ASCII CRs (0x0D).  A coding system whose name ends
+in "-dos" forces the assumptions that lines are broken by CRLF sequences
+(0x0D 0x0A).  These subsidiary coding systems are automatically derived
+from a base coding system.  Use of the base coding system implies
+autodetection of the text file convention.  (The fact that the -unix,
+-mac, and -dos are derived from a base system results in them showing up
+as "aliases" in `list-coding-systems'.)  These subsidiaries have a
+consistent modeline indicator as well.  "-dos" coding systems have ":T"
+appended to their modeline indicator, while "-mac" coding systems have
+":t" appended (eg, "ISO8:t" for iso-2022-8-mac).
+
+   In the following table, each coding system is given with its mode
+line indicator in parentheses.  Non-textual coding systems are listed
+first, followed by textual coding systems and their aliases. (The
+coding system subsidiary modeline indicators ":T" and ":t" will be
+omitted from the table of coding systems.)
+
+   ### SJT 1999-08-23 Maybe should order these by language?  Definitely
+need language usage for the ISO-8859 family.
+
+   Note that although true coding system aliases have been implemented
+for XEmacs 21.2, the coding system initialization has not yet been
+converted as of 21.2.19.  So coding systems described as aliases have
+the same properties as the aliased coding system, but will not be equal
+as Lisp objects.
+
+`automatic-conversion'
+`undecided'
+`undecided-dos'
+`undecided-mac'
+`undecided-unix'
+     Modeline indicator: `Auto'.  A type `undecided' coding system.
+     Attempts to determine an appropriate coding system from file
+     contents or the environment.
+
+`raw-text'
+`no-conversion'
+`raw-text-dos'
+`raw-text-mac'
+`raw-text-unix'
+`no-conversion-dos'
+`no-conversion-mac'
+`no-conversion-unix'
+     Modeline indicator: `Raw'.  A type `no-conversion' coding system,
+     which converts only line-break-codes.  An implementation quirk
+     means that this coding system is also used for ISO8859-1.
+
+`binary'
+     Modeline indicator: `Binary'.  A type `no-conversion' coding
+     system which does no character coding or EOL conversions.  An
+     alias for `raw-text-unix'.
+
+`alternativnyj'
+`alternativnyj-dos'
+`alternativnyj-mac'
+`alternativnyj-unix'
+     Modeline indicator: `Cy.Alt'.  A type `ccl' coding system used for
+     Alternativnyj, an encoding of the Cyrillic alphabet.
+
+`big5'
+`big5-dos'
+`big5-mac'
+`big5-unix'
+     Modeline indicator: `Zh/Big5'.  A type `big5' coding system used
+     for BIG5, the most common encoding of traditional Chinese as used
+     in Taiwan.
+
+`cn-gb-2312'
+`cn-gb-2312-dos'
+`cn-gb-2312-mac'
+`cn-gb-2312-unix'
+     Modeline indicator: `Zh-GB/EUC'.  A type `iso2022' coding system
+     used for simplified Chinese (as used in the People's Republic of
+     China), with the `ascii' (G0), `chinese-gb2312' (G1), and `sisheng'
+     (G2) character sets initially designated.  Chinese EUC (Extended
+     Unix Code).
+
+`ctext-hebrew'
+`ctext-hebrew-dos'
+`ctext-hebrew-mac'
+`ctext-hebrew-unix'
+     Modeline indicator: `CText/Hbrw'.  A type `iso2022' coding system
+     with the `ascii' (G0) and `hebrew-iso8859-8' (G1) character sets
+     initially designated for Hebrew.
+
+`ctext'
+`ctext-dos'
+`ctext-mac'
+`ctext-unix'
+     Modeline indicator: `CText'.  A type `iso2022' 8-bit coding system
+     with the `ascii' (G0) and `latin-iso8859-1' (G1) character sets
+     initially designated.  X11 Compound Text Encoding.  Often
+     mistakenly recognized instead of EUC encodings; usual cause is
+     inappropriate setting of `coding-priority-list'.
+
+`escape-quoted'
+     Modeline indicator: `ESC/Quot'.  A type `iso2022' 8-bit coding
+     system with the `ascii' (G0) and `latin-iso8859-1' (G1) character
+     sets initially designated and escape quoting.  Unix EOL conversion
+     (ie, no conversion).  It is used for .ELC files.
+
+`euc-jp'
+`euc-jp-dos'
+`euc-jp-mac'
+`euc-jp-unix'
+     Modeline indicator: `Ja/EUC'.  A type `iso2022' 8-bit coding system
+     with `ascii' (G0), `japanese-jisx0208' (G1), `katakana-jisx0201'
+     (G2), and `japanese-jisx0212' (G3) initially designated.  Japanese
+     EUC (Extended Unix Code).
+
+`euc-kr'
+`euc-kr-dos'
+`euc-kr-mac'
+`euc-kr-unix'
+     Modeline indicator: `ko/EUC'.  A type `iso2022' 8-bit coding system
+     with `ascii' (G0) and `korean-ksc5601' (G1) initially designated.
+     Korean EUC (Extended Unix Code).
+
+`hz-gb-2312'
+     Modeline indicator: `Zh-GB/Hz'.  A type `no-conversion' coding
+     system with Unix EOL convention (ie, no conversion) using
+     post-read-decode and pre-write-encode functions to translate the
+     Hz/ZW coding system used for Chinese.
+
+`iso-2022-7bit'
+`iso-2022-7bit-unix'
+`iso-2022-7bit-dos'
+`iso-2022-7bit-mac'
+`iso-2022-7'
+     Modeline indicator: `ISO7'.  A type `iso2022' 7-bit coding system
+     with `ascii' (G0) initially designated.  Other character sets must
+     be explicitly designated to be used.
+
+`iso-2022-7bit-ss2'
+`iso-2022-7bit-ss2-dos'
+`iso-2022-7bit-ss2-mac'
+`iso-2022-7bit-ss2-unix'
+     Modeline indicator: `ISO7/SS'.  A type `iso2022' 7-bit coding
+     system with `ascii' (G0) initially designated.  Other character
+     sets must be explicitly designated to be used.  SS2 is used to
+     invoke a 96-charset, one character at a time.
+
+`iso-2022-8'
+`iso-2022-8-dos'
+`iso-2022-8-mac'
+`iso-2022-8-unix'
+     Modeline indicator: `ISO8'.  A type `iso2022' 8-bit coding system
+     with `ascii' (G0) and `latin-iso8859-1' (G1) initially designated.
+     Other character sets must be explicitly designated to be used.
+     No single-shift or locking-shift.
+
+`iso-2022-8bit-ss2'
+`iso-2022-8bit-ss2-dos'
+`iso-2022-8bit-ss2-mac'
+`iso-2022-8bit-ss2-unix'
+     Modeline indicator: `ISO8/SS'.  A type `iso2022' 8-bit coding
+     system with `ascii' (G0) and `latin-iso8859-1' (G1) initially
+     designated.  Other character sets must be explicitly designated to
+     be used.  SS2 is used to invoke a 96-charset, one character at a
+     time.
+
+`iso-2022-int-1'
+`iso-2022-int-1-dos'
+`iso-2022-int-1-mac'
+`iso-2022-int-1-unix'
+     Modeline indicator: `INT-1'.  A type `iso2022' 7-bit coding system
+     with `ascii' (G0) and `korean-ksc5601' (G1) initially designated.
+     ISO-2022-INT-1.
+
+`iso-2022-jp-1978-irv'
+`iso-2022-jp-1978-irv-dos'
+`iso-2022-jp-1978-irv-mac'
+`iso-2022-jp-1978-irv-unix'
+     Modeline indicator: `Ja-78/7bit'.  A type `iso2022' 7-bit coding
+     system.  For compatibility with old Japanese terminals; if you
+     need to know, look at the source.
+
+`iso-2022-jp'
+`iso-2022-jp-2 (ISO7/SS)'
+`iso-2022-jp-dos'
+`iso-2022-jp-mac'
+`iso-2022-jp-unix'
+`iso-2022-jp-2-dos'
+`iso-2022-jp-2-mac'
+`iso-2022-jp-2-unix'
+     Modeline indicator: `MULE/7bit'.  A type `iso2022' 7-bit coding
+     system with `ascii' (G0) initially designated, and complex
+     specifications to insure backward compatibility with old Japanese
+     systems.  Used for communication with mail and news in Japan.  The
+     "-2" versions also use SS2 to invoke a 96-charset one character at
+     a time.
+
+`iso-2022-kr'
+     Modeline indicator: `Ko/7bit'  A type `iso2022' 7-bit coding
+     system with `ascii' (G0) and `korean-ksc5601' (G1) initially
+     designated.  Used for e-mail in Korea.
+
+`iso-2022-lock'
+`iso-2022-lock-dos'
+`iso-2022-lock-mac'
+`iso-2022-lock-unix'
+     Modeline indicator: `ISO7/Lock'.  A type `iso2022' 7-bit coding
+     system with `ascii' (G0) initially designated, using Locking-Shift
+     to invoke a 96-charset.
+
+`iso-8859-1'
+`iso-8859-1-dos'
+`iso-8859-1-mac'
+`iso-8859-1-unix'
+     Due to implementation, this is not a type `iso2022' coding system,
+     but rather an alias for the `raw-text' coding system.
+
+`iso-8859-2'
+`iso-8859-2-dos'
+`iso-8859-2-mac'
+`iso-8859-2-unix'
+     Modeline indicator: `MIME/Ltn-2'.  A type `iso2022' coding system
+     with `ascii' (G0) and `latin-iso8859-2' (G1) initially invoked.
+
+`iso-8859-3'
+`iso-8859-3-dos'
+`iso-8859-3-mac'
+`iso-8859-3-unix'
+     Modeline indicator: `MIME/Ltn-3'.  A type `iso2022' coding system
+     with `ascii' (G0) and `latin-iso8859-3' (G1) initially invoked.
+
+`iso-8859-4'
+`iso-8859-4-dos'
+`iso-8859-4-mac'
+`iso-8859-4-unix'
+     Modeline indicator: `MIME/Ltn-4'.  A type `iso2022' coding system
+     with `ascii' (G0) and `latin-iso8859-4' (G1) initially invoked.
+
+`iso-8859-5'
+`iso-8859-5-dos'
+`iso-8859-5-mac'
+`iso-8859-5-unix'
+     Modeline indicator: `ISO8/Cyr'.  A type `iso2022' coding system
+     with `ascii' (G0) and `cyrillic-iso8859-5' (G1) initially invoked.
+
+`iso-8859-7'
+`iso-8859-7-dos'
+`iso-8859-7-mac'
+`iso-8859-7-unix'
+     Modeline indicator: `Grk'.  A type `iso2022' coding system with
+     `ascii' (G0) and `greek-iso8859-7' (G1) initially invoked.
+
+`iso-8859-8'
+`iso-8859-8-dos'
+`iso-8859-8-mac'
+`iso-8859-8-unix'
+     Modeline indicator: `MIME/Hbrw'.  A type `iso2022' coding system
+     with `ascii' (G0) and `hebrew-iso8859-8' (G1) initially invoked.
+
+`iso-8859-9'
+`iso-8859-9-dos'
+`iso-8859-9-mac'
+`iso-8859-9-unix'
+     Modeline indicator: `MIME/Ltn-5'.  A type `iso2022' coding system
+     with `ascii' (G0) and `latin-iso8859-9' (G1) initially invoked.
+
+`koi8-r'
+`koi8-r-dos'
+`koi8-r-mac'
+`koi8-r-unix'
+     Modeline indicator: `KOI8'.  A type `ccl' coding-system used for
+     KOI8-R, an encoding of the Cyrillic alphabet.
+
+`shift_jis'
+`shift_jis-dos'
+`shift_jis-mac'
+`shift_jis-unix'
+     Modeline indicator: `Ja/SJIS'.  A type `shift-jis' coding-system
+     implementing the Shift-JIS encoding for Japanese.  The underscore
+     is to conform to the MIME charset implementing this encoding.
+
+`tis-620'
+`tis-620-dos'
+`tis-620-mac'
+`tis-620-unix'
+     Modeline indicator: `TIS620'.  A type `ccl' encoding for Thai.  The
+     external encoding is defined by TIS620, the internal encoding is
+     peculiar to MULE, and called `thai-xtis'.
+
+`viqr'
+     Modeline indicator: `VIQR'.  A type `no-conversion' coding system
+     with Unix EOL convention (ie, no conversion) using
+     post-read-decode and pre-write-encode functions to translate the
+     VIQR coding system for Vietnamese.
+
+`viscii'
+`viscii-dos'
+`viscii-mac'
+`viscii-unix'
+     Modeline indicator: `VISCII'.  A type `ccl' coding-system used for
+     VISCII 1.1 for Vietnamese.  Differs slightly from VSCII; VISCII is
+     given priority by XEmacs.
+
+`vscii'
+`vscii-dos'
+`vscii-mac'
+`vscii-unix'
+     Modeline indicator: `VSCII'.  A type `ccl' coding-system used for
+     VSCII 1.1 for Vietnamese.  Differs slightly from VISCII, which is
+     given priority by XEmacs.  Use `(prefer-coding-system
+     'vietnamese-vscii)' to give priority to VSCII.
+
+\1f
 File: lispref.info,  Node: CCL,  Next: Category Tables,  Prev: Coding Systems,  Up: MULE
 
 CCL
@@ -469,698 +1081,3 @@ described in the previous chapters.
 * Comment Tips::             Conventions for writing comments.
 * Library Headers::           Standard headers for library packages.
 
-\1f
-File: lispref.info,  Node: Style Tips,  Next: Compilation Tips,  Up: Tips
-
-Writing Clean Lisp Programs
-===========================
-
-   Here are some tips for avoiding common errors in writing Lisp code
-intended for widespread use:
-
-   * Since all global variables share the same name space, and all
-     functions share another name space, you should choose a short word
-     to distinguish your program from other Lisp programs.  Then take
-     care to begin the names of all global variables, constants, and
-     functions with the chosen prefix.  This helps avoid name conflicts.
-
-     This recommendation applies even to names for traditional Lisp
-     primitives that are not primitives in XEmacs Lisp--even to `cadr'.
-     Believe it or not, there is more than one plausible way to define
-     `cadr'.  Play it safe; append your name prefix to produce a name
-     like `foo-cadr' or `mylib-cadr' instead.
-
-     If you write a function that you think ought to be added to Emacs
-     under a certain name, such as `twiddle-files', don't call it by
-     that name in your program.  Call it `mylib-twiddle-files' in your
-     program, and send mail to `bug-gnu-emacs@prep.ai.mit.edu'
-     suggesting we add it to Emacs.  If and when we do, we can change
-     the name easily enough.
-
-     If one prefix is insufficient, your package may use two or three
-     alternative common prefixes, so long as they make sense.
-
-     Separate the prefix from the rest of the symbol name with a hyphen,
-     `-'.  This will be consistent with XEmacs itself and with most
-     Emacs Lisp programs.
-
-   * It is often useful to put a call to `provide' in each separate
-     library program, at least if there is more than one entry point to
-     the program.
-
-   * If a file requires certain other library programs to be loaded
-     beforehand, then the comments at the beginning of the file should
-     say so.  Also, use `require' to make sure they are loaded.
-
-   * If one file FOO uses a macro defined in another file BAR, FOO
-     should contain this expression before the first use of the macro:
-
-          (eval-when-compile (require 'BAR))
-
-     (And BAR should contain `(provide 'BAR)', to make the `require'
-     work.)  This will cause BAR to be loaded when you byte-compile
-     FOO.  Otherwise, you risk compiling FOO without the necessary
-     macro loaded, and that would produce compiled code that won't work
-     right.  *Note Compiling Macros::.
-
-     Using `eval-when-compile' avoids loading BAR when the compiled
-     version of FOO is _used_.
-
-   * If you define a major mode, make sure to run a hook variable using
-     `run-hooks', just as the existing major modes do.  *Note Hooks::.
-
-   * If the purpose of a function is to tell you whether a certain
-     condition is true or false, give the function a name that ends in
-     `p'.  If the name is one word, add just `p'; if the name is
-     multiple words, add `-p'.  Examples are `framep' and
-     `frame-live-p'.
-
-   * If a user option variable records a true-or-false condition, give
-     it a name that ends in `-flag'.
-
-   * Please do not define `C-c LETTER' as a key in your major modes.
-     These sequences are reserved for users; they are the *only*
-     sequences reserved for users, so we cannot do without them.
-
-     Instead, define sequences consisting of `C-c' followed by a
-     non-letter.  These sequences are reserved for major modes.
-
-     Changing all the major modes in Emacs 18 so they would follow this
-     convention was a lot of work.  Abandoning this convention would
-     make that work go to waste, and inconvenience users.
-
-   * Sequences consisting of `C-c' followed by `{', `}', `<', `>', `:'
-     or `;' are also reserved for major modes.
-
-   * Sequences consisting of `C-c' followed by any other punctuation
-     character are allocated for minor modes.  Using them in a major
-     mode is not absolutely prohibited, but if you do that, the major
-     mode binding may be shadowed from time to time by minor modes.
-
-   * You should not bind `C-h' following any prefix character (including
-     `C-c').  If you don't bind `C-h', it is automatically available as
-     a help character for listing the subcommands of the prefix
-     character.
-
-   * You should not bind a key sequence ending in <ESC> except following
-     another <ESC>.  (That is, it is ok to bind a sequence ending in
-     `<ESC> <ESC>'.)
-
-     The reason for this rule is that a non-prefix binding for <ESC> in
-     any context prevents recognition of escape sequences as function
-     keys in that context.
-
-   * Applications should not bind mouse events based on button 1 with
-     the shift key held down.  These events include `S-mouse-1',
-     `M-S-mouse-1', `C-S-mouse-1', and so on.  They are reserved for
-     users.
-
-   * Modes should redefine `mouse-2' as a command to follow some sort of
-     reference in the text of a buffer, if users usually would not want
-     to alter the text in that buffer by hand.  Modes such as Dired,
-     Info, Compilation, and Occur redefine it in this way.
-
-   * When a package provides a modification of ordinary Emacs behavior,
-     it is good to include a command to enable and disable the feature,
-     Provide a command named `WHATEVER-mode' which turns the feature on
-     or off, and make it autoload (*note Autoload::).  Design the
-     package so that simply loading it has no visible effect--that
-     should not enable the feature.  Users will request the feature by
-     invoking the command.
-
-   * It is a bad idea to define aliases for the Emacs primitives.  Use
-     the standard names instead.
-
-   * Redefining an Emacs primitive is an even worse idea.  It may do
-     the right thing for a particular program, but there is no telling
-     what other programs might break as a result.
-
-   * If a file does replace any of the functions or library programs of
-     standard XEmacs, prominent comments at the beginning of the file
-     should say which functions are replaced, and how the behavior of
-     the replacements differs from that of the originals.
-
-   * Please keep the names of your XEmacs Lisp source files to 13
-     characters or less.  This way, if the files are compiled, the
-     compiled files' names will be 14 characters or less, which is
-     short enough to fit on all kinds of Unix systems.
-
-   * Don't use `next-line' or `previous-line' in programs; nearly
-     always, `forward-line' is more convenient as well as more
-     predictable and robust.  *Note Text Lines::.
-
-   * Don't call functions that set the mark, unless setting the mark is
-     one of the intended features of your program.  The mark is a
-     user-level feature, so it is incorrect to change the mark except
-     to supply a value for the user's benefit.  *Note The Mark::.
-
-     In particular, don't use these functions:
-
-        * `beginning-of-buffer', `end-of-buffer'
-
-        * `replace-string', `replace-regexp'
-
-     If you just want to move point, or replace a certain string,
-     without any of the other features intended for interactive users,
-     you can replace these functions with one or two lines of simple
-     Lisp code.
-
-   * Use lists rather than vectors, except when there is a particular
-     reason to use a vector.  Lisp has more facilities for manipulating
-     lists than for vectors, and working with lists is usually more
-     convenient.
-
-     Vectors are advantageous for tables that are substantial in size
-     and are accessed in random order (not searched front to back),
-     provided there is no need to insert or delete elements (only lists
-     allow that).
-
-   * The recommended way to print a message in the echo area is with
-     the `message' function, not `princ'.  *Note The Echo Area::.
-
-   * When you encounter an error condition, call the function `error'
-     (or `signal').  The function `error' does not return.  *Note
-     Signaling Errors::.
-
-     Do not use `message', `throw', `sleep-for', or `beep' to report
-     errors.
-
-   * An error message should start with a capital letter but should not
-     end with a period.
-
-   * Try to avoid using recursive edits.  Instead, do what the Rmail `e'
-     command does: use a new local keymap that contains one command
-     defined to switch back to the old local keymap.  Or do what the
-     `edit-options' command does: switch to another buffer and let the
-     user switch back at will.  *Note Recursive Editing::.
-
-   * In some other systems there is a convention of choosing variable
-     names that begin and end with `*'.  We don't use that convention
-     in Emacs Lisp, so please don't use it in your programs.  (Emacs
-     uses such names only for program-generated buffers.)  The users
-     will find Emacs more coherent if all libraries use the same
-     conventions.
-
-   * Indent each function with `C-M-q' (`indent-sexp') using the
-     default indentation parameters.
-
-   * Don't make a habit of putting close-parentheses on lines by
-     themselves; Lisp programmers find this disconcerting.  Once in a
-     while, when there is a sequence of many consecutive
-     close-parentheses, it may make sense to split them in one or two
-     significant places.
-
-   * Please put a copyright notice on the file if you give copies to
-     anyone.  Use the same lines that appear at the top of the Lisp
-     files in XEmacs itself.  If you have not signed papers to assign
-     the copyright to the Foundation, then place your name in the
-     copyright notice in place of the Foundation's name.
-
-\1f
-File: lispref.info,  Node: Compilation Tips,  Next: Documentation Tips,  Prev: Style Tips,  Up: Tips
-
-Tips for Making Compiled Code Fast
-==================================
-
-   Here are ways of improving the execution speed of byte-compiled Lisp
-programs.
-
-   * Use the `profile' library to profile your program.  See the file
-     `profile.el' for instructions.
-
-   * Use iteration rather than recursion whenever possible.  Function
-     calls are slow in XEmacs Lisp even when a compiled function is
-     calling another compiled function.
-
-   * Using the primitive list-searching functions `memq', `member',
-     `assq', or `assoc' is even faster than explicit iteration.  It may
-     be worth rearranging a data structure so that one of these
-     primitive search functions can be used.
-
-   * Certain built-in functions are handled specially in byte-compiled
-     code, avoiding the need for an ordinary function call.  It is a
-     good idea to use these functions rather than alternatives.  To see
-     whether a function is handled specially by the compiler, examine
-     its `byte-compile' property.  If the property is non-`nil', then
-     the function is handled specially.
-
-     For example, the following input will show you that `aref' is
-     compiled specially (*note Array Functions::) while `elt' is not
-     (*note Sequence Functions::):
-
-          (get 'aref 'byte-compile)
-               => byte-compile-two-args
-          
-          (get 'elt 'byte-compile)
-               => nil
-
-   * If calling a small function accounts for a  substantial part of
-     your program's running time, make the function inline.  This
-     eliminates the function call overhead.  Since making a function
-     inline reduces the flexibility of changing the program, don't do
-     it unless it gives a noticeable speedup in something slow enough
-     that users care about the speed.  *Note Inline Functions::.
-
-\1f
-File: lispref.info,  Node: Documentation Tips,  Next: Comment Tips,  Prev: Compilation Tips,  Up: Tips
-
-Tips for Documentation Strings
-==============================
-
-   Here are some tips for the writing of documentation strings.
-
-   * Every command, function, or variable intended for users to know
-     about should have a documentation string.
-
-   * An internal variable or subroutine of a Lisp program might as well
-     have a documentation string.  In earlier Emacs versions, you could
-     save space by using a comment instead of a documentation string,
-     but that is no longer the case.
-
-   * The first line of the documentation string should consist of one
-     or two complete sentences that stand on their own as a summary.
-     `M-x apropos' displays just the first line, and if it doesn't
-     stand on its own, the result looks bad.  In particular, start the
-     first line with a capital letter and end with a period.
-
-     The documentation string can have additional lines that expand on
-     the details of how to use the function or variable.  The
-     additional lines should be made up of complete sentences also, but
-     they may be filled if that looks good.
-
-   * For consistency, phrase the verb in the first sentence of a
-     documentation string as an infinitive with "to" omitted.  For
-     instance, use "Return the cons of A and B." in preference to
-     "Returns the cons of A and B."  Usually it looks good to do
-     likewise for the rest of the first paragraph.  Subsequent
-     paragraphs usually look better if they have proper subjects.
-
-   * Write documentation strings in the active voice, not the passive,
-     and in the present tense, not the future.  For instance, use
-     "Return a list containing A and B." instead of "A list containing
-     A and B will be returned."
-
-   * Avoid using the word "cause" (or its equivalents) unnecessarily.
-     Instead of, "Cause Emacs to display text in boldface," write just
-     "Display text in boldface."
-
-   * Do not start or end a documentation string with whitespace.
-
-   * Format the documentation string so that it fits in an Emacs window
-     on an 80-column screen.  It is a good idea for most lines to be no
-     wider than 60 characters.  The first line can be wider if
-     necessary to fit the information that ought to be there.
-
-     However, rather than simply filling the entire documentation
-     string, you can make it much more readable by choosing line breaks
-     with care.  Use blank lines between topics if the documentation
-     string is long.
-
-   * *Do not* indent subsequent lines of a documentation string so that
-     the text is lined up in the source code with the text of the first
-     line.  This looks nice in the source code, but looks bizarre when
-     users view the documentation.  Remember that the indentation
-     before the starting double-quote is not part of the string!
-
-   * A variable's documentation string should start with `*' if the
-     variable is one that users would often want to set interactively.
-     If the value is a long list, or a function, or if the variable
-     would be set only in init files, then don't start the
-     documentation string with `*'.  *Note Defining Variables::.
-
-   * The documentation string for a variable that is a yes-or-no flag
-     should start with words such as "Non-nil means...", to make it
-     clear that all non-`nil' values are equivalent and indicate
-     explicitly what `nil' and non-`nil' mean.
-
-   * When a function's documentation string mentions the value of an
-     argument of the function, use the argument name in capital letters
-     as if it were a name for that value.  Thus, the documentation
-     string of the function `/' refers to its second argument as
-     `DIVISOR', because the actual argument name is `divisor'.
-
-     Also use all caps for meta-syntactic variables, such as when you
-     show the decomposition of a list or vector into subunits, some of
-     which may vary.
-
-   * When a documentation string refers to a Lisp symbol, write it as it
-     would be printed (which usually means in lower case), with
-     single-quotes around it.  For example: `lambda'.  There are two
-     exceptions: write t and nil without single-quotes.  (In this
-     manual, we normally do use single-quotes for those symbols.)
-
-   * Don't write key sequences directly in documentation strings.
-     Instead, use the `\\[...]' construct to stand for them.  For
-     example, instead of writing `C-f', write `\\[forward-char]'.  When
-     Emacs displays the documentation string, it substitutes whatever
-     key is currently bound to `forward-char'.  (This is normally `C-f',
-     but it may be some other character if the user has moved key
-     bindings.)  *Note Keys in Documentation::.
-
-   * In documentation strings for a major mode, you will want to refer
-     to the key bindings of that mode's local map, rather than global
-     ones.  Therefore, use the construct `\\<...>' once in the
-     documentation string to specify which key map to use.  Do this
-     before the first use of `\\[...]'.  The text inside the `\\<...>'
-     should be the name of the variable containing the local keymap for
-     the major mode.
-
-     It is not practical to use `\\[...]' very many times, because
-     display of the documentation string will become slow.  So use this
-     to describe the most important commands in your major mode, and
-     then use `\\{...}' to display the rest of the mode's keymap.
-
-\1f
-File: lispref.info,  Node: Comment Tips,  Next: Library Headers,  Prev: Documentation Tips,  Up: Tips
-
-Tips on Writing Comments
-========================
-
-   We recommend these conventions for where to put comments and how to
-indent them:
-
-`;'
-     Comments that start with a single semicolon, `;', should all be
-     aligned to the same column on the right of the source code.  Such
-     comments usually explain how the code on the same line does its
-     job.  In Lisp mode and related modes, the `M-;'
-     (`indent-for-comment') command automatically inserts such a `;' in
-     the right place, or aligns such a comment if it is already present.
-
-     This and following examples are taken from the Emacs sources.
-
-          (setq base-version-list                 ; there was a base
-                (assoc (substring fn 0 start-vn)  ; version to which
-                       file-version-assoc-list))  ; this looks like
-                                                  ; a subversion
-
-`;;'
-     Comments that start with two semicolons, `;;', should be aligned to
-     the same level of indentation as the code.  Such comments usually
-     describe the purpose of the following lines or the state of the
-     program at that point.  For example:
-
-          (prog1 (setq auto-fill-function
-                       ...
-                       ...
-            ;; update modeline
-            (redraw-modeline)))
-
-     Every function that has no documentation string (because it is use
-     only internally within the package it belongs to), should have
-     instead a two-semicolon comment right before the function,
-     explaining what the function does and how to call it properly.
-     Explain precisely what each argument means and how the function
-     interprets its possible values.
-
-`;;;'
-     Comments that start with three semicolons, `;;;', should start at
-     the left margin.  Such comments are used outside function
-     definitions to make general statements explaining the design
-     principles of the program.  For example:
-
-          ;;; This Lisp code is run in XEmacs
-          ;;; when it is to operate as a server
-          ;;; for other processes.
-
-     Another use for triple-semicolon comments is for commenting out
-     lines within a function.  We use triple-semicolons for this
-     precisely so that they remain at the left margin.
-
-          (defun foo (a)
-          ;;; This is no longer necessary.
-          ;;;  (force-mode-line-update)
-            (message "Finished with %s" a))
-
-`;;;;'
-     Comments that start with four semicolons, `;;;;', should be aligned
-     to the left margin and are used for headings of major sections of a
-     program.  For example:
-
-          ;;;; The kill ring
-
-The indentation commands of the Lisp modes in XEmacs, such as `M-;'
-(`indent-for-comment') and <TAB> (`lisp-indent-line') automatically
-indent comments according to these conventions, depending on the number
-of semicolons.  *Note Manipulating Comments: (emacs)Comments.
-
-\1f
-File: lispref.info,  Node: Library Headers,  Prev: Comment Tips,  Up: Tips
-
-Conventional Headers for XEmacs Libraries
-=========================================
-
-   XEmacs has conventions for using special comments in Lisp libraries
-to divide them into sections and give information such as who wrote
-them.  This section explains these conventions.  First, an example:
-
-     ;;; lisp-mnt.el --- minor mode for Emacs Lisp maintainers
-     
-     ;; Copyright (C) 1992 Free Software Foundation, Inc.
-     
-     ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
-     ;; Maintainer: Eric S. Raymond <esr@snark.thyrsus.com>
-     ;; Created: 14 Jul 1992
-     ;; Version: 1.2
-     ;; Keywords: docs
-     
-     ;; This file is part of XEmacs.
-     COPYING PERMISSIONS...
-
-   The very first line should have this format:
-
-     ;;; FILENAME --- DESCRIPTION
-
-The description should be complete in one line.
-
-   After the copyright notice come several "header comment" lines, each
-beginning with `;; HEADER-NAME:'.  Here is a table of the conventional
-possibilities for HEADER-NAME:
-
-`Author'
-     This line states the name and net address of at least the principal
-     author of the library.
-
-     If there are multiple authors, you can list them on continuation
-     lines led by `;;' and a tab character, like this:
-
-          ;; Author: Ashwin Ram <Ram-Ashwin@cs.yale.edu>
-          ;;      Dave Sill <de5@ornl.gov>
-          ;;      Dave Brennan <brennan@hal.com>
-          ;;      Eric Raymond <esr@snark.thyrsus.com>
-
-`Maintainer'
-     This line should contain a single name/address as in the Author
-     line, or an address only, or the string `FSF'.  If there is no
-     maintainer line, the person(s) in the Author field are presumed to
-     be the maintainers.  The example above is mildly bogus because the
-     maintainer line is redundant.
-
-     The idea behind the `Author' and `Maintainer' lines is to make
-     possible a Lisp function to "send mail to the maintainer" without
-     having to mine the name out by hand.
-
-     Be sure to surround the network address with `<...>' if you
-     include the person's full name as well as the network address.
-
-`Created'
-     This optional line gives the original creation date of the file.
-     For historical interest only.
-
-`Version'
-     If you wish to record version numbers for the individual Lisp
-     program, put them in this line.
-
-`Adapted-By'
-     In this header line, place the name of the person who adapted the
-     library for installation (to make it fit the style conventions, for
-     example).
-
-`Keywords'
-     This line lists keywords for the `finder-by-keyword' help command.
-     This field is important; it's how people will find your package
-     when they're looking for things by topic area.  To separate the
-     keywords, you can use spaces, commas, or both.
-
-   Just about every Lisp library ought to have the `Author' and
-`Keywords' header comment lines.  Use the others if they are
-appropriate.  You can also put in header lines with other header
-names--they have no standard meanings, so they can't do any harm.
-
-   We use additional stylized comments to subdivide the contents of the
-library file.  Here is a table of them:
-
-`;;; Commentary:'
-     This begins introductory comments that explain how the library
-     works.  It should come right after the copying permissions.
-
-`;;; Change log:'
-     This begins change log information stored in the library file (if
-     you store the change history there).  For most of the Lisp files
-     distributed with XEmacs, the change history is kept in the file
-     `ChangeLog' and not in the source file at all; these files do not
-     have a `;;; Change log:' line.
-
-`;;; Code:'
-     This begins the actual code of the program.
-
-`;;; FILENAME ends here'
-     This is the "footer line"; it appears at the very end of the file.
-     Its purpose is to enable people to detect truncated versions of
-     the file from the lack of a footer line.
-
-\1f
-File: lispref.info,  Node: Building XEmacs and Object Allocation,  Next: Standard Errors,  Prev: Tips,  Up: Top
-
-Building XEmacs; Allocation of Objects
-**************************************
-
-   This chapter describes how the runnable XEmacs executable is dumped
-with the preloaded Lisp libraries in it and how storage is allocated.
-
-   There is an entire separate document, the `XEmacs Internals Manual',
-devoted to the internals of XEmacs from the perspective of the C
-programmer.  It contains much more detailed information about the build
-process, the allocation and garbage-collection process, and other
-aspects related to the internals of XEmacs.
-
-* Menu:
-
-* Building XEmacs::     How to preload Lisp libraries into XEmacs.
-* Pure Storage::        A kludge to make preloaded Lisp functions sharable.
-* Garbage Collection::  Reclaiming space for Lisp objects no longer used.
-
-\1f
-File: lispref.info,  Node: Building XEmacs,  Next: Pure Storage,  Up: Building XEmacs and Object Allocation
-
-Building XEmacs
-===============
-
-   This section explains the steps involved in building the XEmacs
-executable.  You don't have to know this material to build and install
-XEmacs, since the makefiles do all these things automatically.  This
-information is pertinent to XEmacs maintenance.
-
-   The `XEmacs Internals Manual' contains more information about this.
-
-   Compilation of the C source files in the `src' directory produces an
-executable file called `temacs', also called a "bare impure XEmacs".
-It contains the XEmacs Lisp interpreter and I/O routines, but not the
-editing commands.
-
-   Before XEmacs is actually usable, a number of Lisp files need to be
-loaded.  These define all the editing commands, plus most of the startup
-code and many very basic Lisp primitives.  This is accomplished by
-loading the file `loadup.el', which in turn loads all of the other
-standardly-loaded Lisp files.
-
-   It takes a substantial time to load the standard Lisp files.
-Luckily, you don't have to do this each time you run XEmacs; `temacs'
-can dump out an executable program called `xemacs' that has these files
-preloaded.  `xemacs' starts more quickly because it does not need to
-load the files.  This is the XEmacs executable that is normally
-installed.
-
-   To create `xemacs', use the command `temacs -batch -l loadup dump'.
-The purpose of `-batch' here is to tell `temacs' to run in
-non-interactive, command-line mode. (`temacs' can _only_ run in this
-fashion.  Part of the code required to initialize frames and faces is
-in Lisp, and must be loaded before XEmacs is able to create any frames.)
-The argument `dump' tells `loadup.el' to dump a new executable named
-`xemacs'.
-
-   The dumping process is highly system-specific, and some operating
-systems don't support dumping.  On those systems, you must start XEmacs
-with the `temacs -batch -l loadup run-temacs' command each time you use
-it.  This takes a substantial time, but since you need to start Emacs
-once a day at most--or once a week if you never log out--the extra time
-is not too severe a problem. (In older versions of Emacs, you started
-Emacs from `temacs' using `temacs -l loadup'.)
-
-   You are free to start XEmacs directly from `temacs' if you want,
-even if there is already a dumped `xemacs'.  Normally you wouldn't want
-to do that; but the Makefiles do this when you rebuild XEmacs using
-`make all-elc', which builds XEmacs and simultaneously compiles any
-out-of-date Lisp files. (You need `xemacs' in order to compile Lisp
-files.  However, you also need the compiled Lisp files in order to dump
-out `xemacs'.  If both of these are missing or corrupted, you are out
-of luck unless you're able to bootstrap `xemacs' from `temacs'.  Note
-that `make all-elc' actually loads the alternative loadup file
-`loadup-el.el', which works like `loadup.el' but disables the
-pure-copying process and forces XEmacs to ignore any compiled Lisp
-files even if they exist.)
-
-   You can specify additional files to preload by writing a library
-named `site-load.el' that loads them.  You may need to increase the
-value of `PURESIZE', in `src/puresize.h', to make room for the
-additional files.  You should _not_ modify this file directly, however;
-instead, use the `--puresize' configuration option. (If you run out of
-pure space while dumping `xemacs', you will be told how much pure space
-you actually will need.) However, the advantage of preloading
-additional files decreases as machines get faster.  On modern machines,
-it is often not advisable, especially if the Lisp code is on a file
-system local to the machine running XEmacs.
-
-   You can specify other Lisp expressions to execute just before dumping
-by putting them in a library named `site-init.el'.  However, if they
-might alter the behavior that users expect from an ordinary unmodified
-XEmacs, it is better to put them in `default.el', so that users can
-override them if they wish.  *Note Start-up Summary::.
-
-   Before `loadup.el' dumps the new executable, it finds the
-documentation strings for primitive and preloaded functions (and
-variables) in the file where they are stored, by calling
-`Snarf-documentation' (*note Accessing Documentation::).  These strings
-were moved out of the `xemacs' executable to make it smaller.  *Note
-Documentation Basics::.
-
- - Function: dump-emacs to-file from-file
-     This function dumps the current state of XEmacs into an executable
-     file TO-FILE.  It takes symbols from FROM-FILE (this is normally
-     the executable file `temacs').
-
-     If you use this function in an XEmacs that was already dumped, you
-     must set `command-line-processed' to `nil' first for good results.
-     *Note Command Line Arguments::.
-
- - Function: run-emacs-from-temacs &rest args
-     This is the function that implements the `run-temacs' command-line
-     argument.  It is called from `loadup.el' as appropriate.  You
-     should most emphatically _not_ call this yourself; it will
-     reinitialize your XEmacs process and you'll be sorry.
-
- - Command: emacs-version
-     This function returns a string describing the version of XEmacs
-     that is running.  It is useful to include this string in bug
-     reports.
-
-          (emacs-version)
-            => "XEmacs 20.1 [Lucid] (i586-unknown-linux2.0.29)
-                           of Mon Apr  7 1997 on altair.xemacs.org"
-
-     Called interactively, the function prints the same information in
-     the echo area.
-
- - Variable: emacs-build-time
-     The value of this variable is the time at which XEmacs was built
-     at the local site.
-
-          emacs-build-time "Mon Apr  7 20:28:52 1997"
-               =>
-
- - Variable: emacs-version
-     The value of this variable is the version of Emacs being run.  It
-     is a string, e.g. `"20.1 XEmacs Lucid"'.
-
-   The following two variables did not exist before FSF GNU Emacs
-version 19.23 and XEmacs version 19.10, which reduces their usefulness
-at present, but we hope they will be convenient in the future.
-
- - Variable: emacs-major-version
-     The major version number of Emacs, as an integer.  For XEmacs
-     version 20.1, the value is 20.
-
- - Variable: emacs-minor-version
-     The minor version number of Emacs, as an integer.  For XEmacs
-     version 20.1, the value is 1.
-
index f6e4355..3a84e99 100644 (file)
@@ -50,6 +50,701 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Style Tips,  Next: Compilation Tips,  Up: Tips
+
+Writing Clean Lisp Programs
+===========================
+
+   Here are some tips for avoiding common errors in writing Lisp code
+intended for widespread use:
+
+   * Since all global variables share the same name space, and all
+     functions share another name space, you should choose a short word
+     to distinguish your program from other Lisp programs.  Then take
+     care to begin the names of all global variables, constants, and
+     functions with the chosen prefix.  This helps avoid name conflicts.
+
+     This recommendation applies even to names for traditional Lisp
+     primitives that are not primitives in XEmacs Lisp--even to `cadr'.
+     Believe it or not, there is more than one plausible way to define
+     `cadr'.  Play it safe; append your name prefix to produce a name
+     like `foo-cadr' or `mylib-cadr' instead.
+
+     If you write a function that you think ought to be added to Emacs
+     under a certain name, such as `twiddle-files', don't call it by
+     that name in your program.  Call it `mylib-twiddle-files' in your
+     program, and send mail to `bug-gnu-emacs@prep.ai.mit.edu'
+     suggesting we add it to Emacs.  If and when we do, we can change
+     the name easily enough.
+
+     If one prefix is insufficient, your package may use two or three
+     alternative common prefixes, so long as they make sense.
+
+     Separate the prefix from the rest of the symbol name with a hyphen,
+     `-'.  This will be consistent with XEmacs itself and with most
+     Emacs Lisp programs.
+
+   * It is often useful to put a call to `provide' in each separate
+     library program, at least if there is more than one entry point to
+     the program.
+
+   * If a file requires certain other library programs to be loaded
+     beforehand, then the comments at the beginning of the file should
+     say so.  Also, use `require' to make sure they are loaded.
+
+   * If one file FOO uses a macro defined in another file BAR, FOO
+     should contain this expression before the first use of the macro:
+
+          (eval-when-compile (require 'BAR))
+
+     (And BAR should contain `(provide 'BAR)', to make the `require'
+     work.)  This will cause BAR to be loaded when you byte-compile
+     FOO.  Otherwise, you risk compiling FOO without the necessary
+     macro loaded, and that would produce compiled code that won't work
+     right.  *Note Compiling Macros::.
+
+     Using `eval-when-compile' avoids loading BAR when the compiled
+     version of FOO is _used_.
+
+   * If you define a major mode, make sure to run a hook variable using
+     `run-hooks', just as the existing major modes do.  *Note Hooks::.
+
+   * If the purpose of a function is to tell you whether a certain
+     condition is true or false, give the function a name that ends in
+     `p'.  If the name is one word, add just `p'; if the name is
+     multiple words, add `-p'.  Examples are `framep' and
+     `frame-live-p'.
+
+   * If a user option variable records a true-or-false condition, give
+     it a name that ends in `-flag'.
+
+   * Please do not define `C-c LETTER' as a key in your major modes.
+     These sequences are reserved for users; they are the *only*
+     sequences reserved for users, so we cannot do without them.
+
+     Instead, define sequences consisting of `C-c' followed by a
+     non-letter.  These sequences are reserved for major modes.
+
+     Changing all the major modes in Emacs 18 so they would follow this
+     convention was a lot of work.  Abandoning this convention would
+     make that work go to waste, and inconvenience users.
+
+   * Sequences consisting of `C-c' followed by `{', `}', `<', `>', `:'
+     or `;' are also reserved for major modes.
+
+   * Sequences consisting of `C-c' followed by any other punctuation
+     character are allocated for minor modes.  Using them in a major
+     mode is not absolutely prohibited, but if you do that, the major
+     mode binding may be shadowed from time to time by minor modes.
+
+   * You should not bind `C-h' following any prefix character (including
+     `C-c').  If you don't bind `C-h', it is automatically available as
+     a help character for listing the subcommands of the prefix
+     character.
+
+   * You should not bind a key sequence ending in <ESC> except following
+     another <ESC>.  (That is, it is ok to bind a sequence ending in
+     `<ESC> <ESC>'.)
+
+     The reason for this rule is that a non-prefix binding for <ESC> in
+     any context prevents recognition of escape sequences as function
+     keys in that context.
+
+   * Applications should not bind mouse events based on button 1 with
+     the shift key held down.  These events include `S-mouse-1',
+     `M-S-mouse-1', `C-S-mouse-1', and so on.  They are reserved for
+     users.
+
+   * Modes should redefine `mouse-2' as a command to follow some sort of
+     reference in the text of a buffer, if users usually would not want
+     to alter the text in that buffer by hand.  Modes such as Dired,
+     Info, Compilation, and Occur redefine it in this way.
+
+   * When a package provides a modification of ordinary Emacs behavior,
+     it is good to include a command to enable and disable the feature,
+     Provide a command named `WHATEVER-mode' which turns the feature on
+     or off, and make it autoload (*note Autoload::).  Design the
+     package so that simply loading it has no visible effect--that
+     should not enable the feature.  Users will request the feature by
+     invoking the command.
+
+   * It is a bad idea to define aliases for the Emacs primitives.  Use
+     the standard names instead.
+
+   * Redefining an Emacs primitive is an even worse idea.  It may do
+     the right thing for a particular program, but there is no telling
+     what other programs might break as a result.
+
+   * If a file does replace any of the functions or library programs of
+     standard XEmacs, prominent comments at the beginning of the file
+     should say which functions are replaced, and how the behavior of
+     the replacements differs from that of the originals.
+
+   * Please keep the names of your XEmacs Lisp source files to 13
+     characters or less.  This way, if the files are compiled, the
+     compiled files' names will be 14 characters or less, which is
+     short enough to fit on all kinds of Unix systems.
+
+   * Don't use `next-line' or `previous-line' in programs; nearly
+     always, `forward-line' is more convenient as well as more
+     predictable and robust.  *Note Text Lines::.
+
+   * Don't call functions that set the mark, unless setting the mark is
+     one of the intended features of your program.  The mark is a
+     user-level feature, so it is incorrect to change the mark except
+     to supply a value for the user's benefit.  *Note The Mark::.
+
+     In particular, don't use these functions:
+
+        * `beginning-of-buffer', `end-of-buffer'
+
+        * `replace-string', `replace-regexp'
+
+     If you just want to move point, or replace a certain string,
+     without any of the other features intended for interactive users,
+     you can replace these functions with one or two lines of simple
+     Lisp code.
+
+   * Use lists rather than vectors, except when there is a particular
+     reason to use a vector.  Lisp has more facilities for manipulating
+     lists than for vectors, and working with lists is usually more
+     convenient.
+
+     Vectors are advantageous for tables that are substantial in size
+     and are accessed in random order (not searched front to back),
+     provided there is no need to insert or delete elements (only lists
+     allow that).
+
+   * The recommended way to print a message in the echo area is with
+     the `message' function, not `princ'.  *Note The Echo Area::.
+
+   * When you encounter an error condition, call the function `error'
+     (or `signal').  The function `error' does not return.  *Note
+     Signaling Errors::.
+
+     Do not use `message', `throw', `sleep-for', or `beep' to report
+     errors.
+
+   * An error message should start with a capital letter but should not
+     end with a period.
+
+   * Try to avoid using recursive edits.  Instead, do what the Rmail `e'
+     command does: use a new local keymap that contains one command
+     defined to switch back to the old local keymap.  Or do what the
+     `edit-options' command does: switch to another buffer and let the
+     user switch back at will.  *Note Recursive Editing::.
+
+   * In some other systems there is a convention of choosing variable
+     names that begin and end with `*'.  We don't use that convention
+     in Emacs Lisp, so please don't use it in your programs.  (Emacs
+     uses such names only for program-generated buffers.)  The users
+     will find Emacs more coherent if all libraries use the same
+     conventions.
+
+   * Indent each function with `C-M-q' (`indent-sexp') using the
+     default indentation parameters.
+
+   * Don't make a habit of putting close-parentheses on lines by
+     themselves; Lisp programmers find this disconcerting.  Once in a
+     while, when there is a sequence of many consecutive
+     close-parentheses, it may make sense to split them in one or two
+     significant places.
+
+   * Please put a copyright notice on the file if you give copies to
+     anyone.  Use the same lines that appear at the top of the Lisp
+     files in XEmacs itself.  If you have not signed papers to assign
+     the copyright to the Foundation, then place your name in the
+     copyright notice in place of the Foundation's name.
+
+\1f
+File: lispref.info,  Node: Compilation Tips,  Next: Documentation Tips,  Prev: Style Tips,  Up: Tips
+
+Tips for Making Compiled Code Fast
+==================================
+
+   Here are ways of improving the execution speed of byte-compiled Lisp
+programs.
+
+   * Use the `profile' library to profile your program.  See the file
+     `profile.el' for instructions.
+
+   * Use iteration rather than recursion whenever possible.  Function
+     calls are slow in XEmacs Lisp even when a compiled function is
+     calling another compiled function.
+
+   * Using the primitive list-searching functions `memq', `member',
+     `assq', or `assoc' is even faster than explicit iteration.  It may
+     be worth rearranging a data structure so that one of these
+     primitive search functions can be used.
+
+   * Certain built-in functions are handled specially in byte-compiled
+     code, avoiding the need for an ordinary function call.  It is a
+     good idea to use these functions rather than alternatives.  To see
+     whether a function is handled specially by the compiler, examine
+     its `byte-compile' property.  If the property is non-`nil', then
+     the function is handled specially.
+
+     For example, the following input will show you that `aref' is
+     compiled specially (*note Array Functions::) while `elt' is not
+     (*note Sequence Functions::):
+
+          (get 'aref 'byte-compile)
+               => byte-compile-two-args
+          
+          (get 'elt 'byte-compile)
+               => nil
+
+   * If calling a small function accounts for a  substantial part of
+     your program's running time, make the function inline.  This
+     eliminates the function call overhead.  Since making a function
+     inline reduces the flexibility of changing the program, don't do
+     it unless it gives a noticeable speedup in something slow enough
+     that users care about the speed.  *Note Inline Functions::.
+
+\1f
+File: lispref.info,  Node: Documentation Tips,  Next: Comment Tips,  Prev: Compilation Tips,  Up: Tips
+
+Tips for Documentation Strings
+==============================
+
+   Here are some tips for the writing of documentation strings.
+
+   * Every command, function, or variable intended for users to know
+     about should have a documentation string.
+
+   * An internal variable or subroutine of a Lisp program might as well
+     have a documentation string.  In earlier Emacs versions, you could
+     save space by using a comment instead of a documentation string,
+     but that is no longer the case.
+
+   * The first line of the documentation string should consist of one
+     or two complete sentences that stand on their own as a summary.
+     `M-x apropos' displays just the first line, and if it doesn't
+     stand on its own, the result looks bad.  In particular, start the
+     first line with a capital letter and end with a period.
+
+     The documentation string can have additional lines that expand on
+     the details of how to use the function or variable.  The
+     additional lines should be made up of complete sentences also, but
+     they may be filled if that looks good.
+
+   * For consistency, phrase the verb in the first sentence of a
+     documentation string as an infinitive with "to" omitted.  For
+     instance, use "Return the cons of A and B." in preference to
+     "Returns the cons of A and B."  Usually it looks good to do
+     likewise for the rest of the first paragraph.  Subsequent
+     paragraphs usually look better if they have proper subjects.
+
+   * Write documentation strings in the active voice, not the passive,
+     and in the present tense, not the future.  For instance, use
+     "Return a list containing A and B." instead of "A list containing
+     A and B will be returned."
+
+   * Avoid using the word "cause" (or its equivalents) unnecessarily.
+     Instead of, "Cause Emacs to display text in boldface," write just
+     "Display text in boldface."
+
+   * Do not start or end a documentation string with whitespace.
+
+   * Format the documentation string so that it fits in an Emacs window
+     on an 80-column screen.  It is a good idea for most lines to be no
+     wider than 60 characters.  The first line can be wider if
+     necessary to fit the information that ought to be there.
+
+     However, rather than simply filling the entire documentation
+     string, you can make it much more readable by choosing line breaks
+     with care.  Use blank lines between topics if the documentation
+     string is long.
+
+   * *Do not* indent subsequent lines of a documentation string so that
+     the text is lined up in the source code with the text of the first
+     line.  This looks nice in the source code, but looks bizarre when
+     users view the documentation.  Remember that the indentation
+     before the starting double-quote is not part of the string!
+
+   * A variable's documentation string should start with `*' if the
+     variable is one that users would often want to set interactively.
+     If the value is a long list, or a function, or if the variable
+     would be set only in init files, then don't start the
+     documentation string with `*'.  *Note Defining Variables::.
+
+   * The documentation string for a variable that is a yes-or-no flag
+     should start with words such as "Non-nil means...", to make it
+     clear that all non-`nil' values are equivalent and indicate
+     explicitly what `nil' and non-`nil' mean.
+
+   * When a function's documentation string mentions the value of an
+     argument of the function, use the argument name in capital letters
+     as if it were a name for that value.  Thus, the documentation
+     string of the function `/' refers to its second argument as
+     `DIVISOR', because the actual argument name is `divisor'.
+
+     Also use all caps for meta-syntactic variables, such as when you
+     show the decomposition of a list or vector into subunits, some of
+     which may vary.
+
+   * When a documentation string refers to a Lisp symbol, write it as it
+     would be printed (which usually means in lower case), with
+     single-quotes around it.  For example: `lambda'.  There are two
+     exceptions: write t and nil without single-quotes.  (In this
+     manual, we normally do use single-quotes for those symbols.)
+
+   * Don't write key sequences directly in documentation strings.
+     Instead, use the `\\[...]' construct to stand for them.  For
+     example, instead of writing `C-f', write `\\[forward-char]'.  When
+     Emacs displays the documentation string, it substitutes whatever
+     key is currently bound to `forward-char'.  (This is normally `C-f',
+     but it may be some other character if the user has moved key
+     bindings.)  *Note Keys in Documentation::.
+
+   * In documentation strings for a major mode, you will want to refer
+     to the key bindings of that mode's local map, rather than global
+     ones.  Therefore, use the construct `\\<...>' once in the
+     documentation string to specify which key map to use.  Do this
+     before the first use of `\\[...]'.  The text inside the `\\<...>'
+     should be the name of the variable containing the local keymap for
+     the major mode.
+
+     It is not practical to use `\\[...]' very many times, because
+     display of the documentation string will become slow.  So use this
+     to describe the most important commands in your major mode, and
+     then use `\\{...}' to display the rest of the mode's keymap.
+
+\1f
+File: lispref.info,  Node: Comment Tips,  Next: Library Headers,  Prev: Documentation Tips,  Up: Tips
+
+Tips on Writing Comments
+========================
+
+   We recommend these conventions for where to put comments and how to
+indent them:
+
+`;'
+     Comments that start with a single semicolon, `;', should all be
+     aligned to the same column on the right of the source code.  Such
+     comments usually explain how the code on the same line does its
+     job.  In Lisp mode and related modes, the `M-;'
+     (`indent-for-comment') command automatically inserts such a `;' in
+     the right place, or aligns such a comment if it is already present.
+
+     This and following examples are taken from the Emacs sources.
+
+          (setq base-version-list                 ; there was a base
+                (assoc (substring fn 0 start-vn)  ; version to which
+                       file-version-assoc-list))  ; this looks like
+                                                  ; a subversion
+
+`;;'
+     Comments that start with two semicolons, `;;', should be aligned to
+     the same level of indentation as the code.  Such comments usually
+     describe the purpose of the following lines or the state of the
+     program at that point.  For example:
+
+          (prog1 (setq auto-fill-function
+                       ...
+                       ...
+            ;; update modeline
+            (redraw-modeline)))
+
+     Every function that has no documentation string (because it is use
+     only internally within the package it belongs to), should have
+     instead a two-semicolon comment right before the function,
+     explaining what the function does and how to call it properly.
+     Explain precisely what each argument means and how the function
+     interprets its possible values.
+
+`;;;'
+     Comments that start with three semicolons, `;;;', should start at
+     the left margin.  Such comments are used outside function
+     definitions to make general statements explaining the design
+     principles of the program.  For example:
+
+          ;;; This Lisp code is run in XEmacs
+          ;;; when it is to operate as a server
+          ;;; for other processes.
+
+     Another use for triple-semicolon comments is for commenting out
+     lines within a function.  We use triple-semicolons for this
+     precisely so that they remain at the left margin.
+
+          (defun foo (a)
+          ;;; This is no longer necessary.
+          ;;;  (force-mode-line-update)
+            (message "Finished with %s" a))
+
+`;;;;'
+     Comments that start with four semicolons, `;;;;', should be aligned
+     to the left margin and are used for headings of major sections of a
+     program.  For example:
+
+          ;;;; The kill ring
+
+The indentation commands of the Lisp modes in XEmacs, such as `M-;'
+(`indent-for-comment') and <TAB> (`lisp-indent-line') automatically
+indent comments according to these conventions, depending on the number
+of semicolons.  *Note Manipulating Comments: (emacs)Comments.
+
+\1f
+File: lispref.info,  Node: Library Headers,  Prev: Comment Tips,  Up: Tips
+
+Conventional Headers for XEmacs Libraries
+=========================================
+
+   XEmacs has conventions for using special comments in Lisp libraries
+to divide them into sections and give information such as who wrote
+them.  This section explains these conventions.  First, an example:
+
+     ;;; lisp-mnt.el --- minor mode for Emacs Lisp maintainers
+     
+     ;; Copyright (C) 1992 Free Software Foundation, Inc.
+     
+     ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
+     ;; Maintainer: Eric S. Raymond <esr@snark.thyrsus.com>
+     ;; Created: 14 Jul 1992
+     ;; Version: 1.2
+     ;; Keywords: docs
+     
+     ;; This file is part of XEmacs.
+     COPYING PERMISSIONS...
+
+   The very first line should have this format:
+
+     ;;; FILENAME --- DESCRIPTION
+
+The description should be complete in one line.
+
+   After the copyright notice come several "header comment" lines, each
+beginning with `;; HEADER-NAME:'.  Here is a table of the conventional
+possibilities for HEADER-NAME:
+
+`Author'
+     This line states the name and net address of at least the principal
+     author of the library.
+
+     If there are multiple authors, you can list them on continuation
+     lines led by `;;' and a tab character, like this:
+
+          ;; Author: Ashwin Ram <Ram-Ashwin@cs.yale.edu>
+          ;;      Dave Sill <de5@ornl.gov>
+          ;;      Dave Brennan <brennan@hal.com>
+          ;;      Eric Raymond <esr@snark.thyrsus.com>
+
+`Maintainer'
+     This line should contain a single name/address as in the Author
+     line, or an address only, or the string `FSF'.  If there is no
+     maintainer line, the person(s) in the Author field are presumed to
+     be the maintainers.  The example above is mildly bogus because the
+     maintainer line is redundant.
+
+     The idea behind the `Author' and `Maintainer' lines is to make
+     possible a Lisp function to "send mail to the maintainer" without
+     having to mine the name out by hand.
+
+     Be sure to surround the network address with `<...>' if you
+     include the person's full name as well as the network address.
+
+`Created'
+     This optional line gives the original creation date of the file.
+     For historical interest only.
+
+`Version'
+     If you wish to record version numbers for the individual Lisp
+     program, put them in this line.
+
+`Adapted-By'
+     In this header line, place the name of the person who adapted the
+     library for installation (to make it fit the style conventions, for
+     example).
+
+`Keywords'
+     This line lists keywords for the `finder-by-keyword' help command.
+     This field is important; it's how people will find your package
+     when they're looking for things by topic area.  To separate the
+     keywords, you can use spaces, commas, or both.
+
+   Just about every Lisp library ought to have the `Author' and
+`Keywords' header comment lines.  Use the others if they are
+appropriate.  You can also put in header lines with other header
+names--they have no standard meanings, so they can't do any harm.
+
+   We use additional stylized comments to subdivide the contents of the
+library file.  Here is a table of them:
+
+`;;; Commentary:'
+     This begins introductory comments that explain how the library
+     works.  It should come right after the copying permissions.
+
+`;;; Change log:'
+     This begins change log information stored in the library file (if
+     you store the change history there).  For most of the Lisp files
+     distributed with XEmacs, the change history is kept in the file
+     `ChangeLog' and not in the source file at all; these files do not
+     have a `;;; Change log:' line.
+
+`;;; Code:'
+     This begins the actual code of the program.
+
+`;;; FILENAME ends here'
+     This is the "footer line"; it appears at the very end of the file.
+     Its purpose is to enable people to detect truncated versions of
+     the file from the lack of a footer line.
+
+\1f
+File: lispref.info,  Node: Building XEmacs and Object Allocation,  Next: Standard Errors,  Prev: Tips,  Up: Top
+
+Building XEmacs; Allocation of Objects
+**************************************
+
+   This chapter describes how the runnable XEmacs executable is dumped
+with the preloaded Lisp libraries in it and how storage is allocated.
+
+   There is an entire separate document, the `XEmacs Internals Manual',
+devoted to the internals of XEmacs from the perspective of the C
+programmer.  It contains much more detailed information about the build
+process, the allocation and garbage-collection process, and other
+aspects related to the internals of XEmacs.
+
+* Menu:
+
+* Building XEmacs::     How to preload Lisp libraries into XEmacs.
+* Pure Storage::        A kludge to make preloaded Lisp functions sharable.
+* Garbage Collection::  Reclaiming space for Lisp objects no longer used.
+
+\1f
+File: lispref.info,  Node: Building XEmacs,  Next: Pure Storage,  Up: Building XEmacs and Object Allocation
+
+Building XEmacs
+===============
+
+   This section explains the steps involved in building the XEmacs
+executable.  You don't have to know this material to build and install
+XEmacs, since the makefiles do all these things automatically.  This
+information is pertinent to XEmacs maintenance.
+
+   The `XEmacs Internals Manual' contains more information about this.
+
+   Compilation of the C source files in the `src' directory produces an
+executable file called `temacs', also called a "bare impure XEmacs".
+It contains the XEmacs Lisp interpreter and I/O routines, but not the
+editing commands.
+
+   Before XEmacs is actually usable, a number of Lisp files need to be
+loaded.  These define all the editing commands, plus most of the startup
+code and many very basic Lisp primitives.  This is accomplished by
+loading the file `loadup.el', which in turn loads all of the other
+standardly-loaded Lisp files.
+
+   It takes a substantial time to load the standard Lisp files.
+Luckily, you don't have to do this each time you run XEmacs; `temacs'
+can dump out an executable program called `xemacs' that has these files
+preloaded.  `xemacs' starts more quickly because it does not need to
+load the files.  This is the XEmacs executable that is normally
+installed.
+
+   To create `xemacs', use the command `temacs -batch -l loadup dump'.
+The purpose of `-batch' here is to tell `temacs' to run in
+non-interactive, command-line mode. (`temacs' can _only_ run in this
+fashion.  Part of the code required to initialize frames and faces is
+in Lisp, and must be loaded before XEmacs is able to create any frames.)
+The argument `dump' tells `loadup.el' to dump a new executable named
+`xemacs'.
+
+   The dumping process is highly system-specific, and some operating
+systems don't support dumping.  On those systems, you must start XEmacs
+with the `temacs -batch -l loadup run-temacs' command each time you use
+it.  This takes a substantial time, but since you need to start Emacs
+once a day at most--or once a week if you never log out--the extra time
+is not too severe a problem. (In older versions of Emacs, you started
+Emacs from `temacs' using `temacs -l loadup'.)
+
+   You are free to start XEmacs directly from `temacs' if you want,
+even if there is already a dumped `xemacs'.  Normally you wouldn't want
+to do that; but the Makefiles do this when you rebuild XEmacs using
+`make all-elc', which builds XEmacs and simultaneously compiles any
+out-of-date Lisp files. (You need `xemacs' in order to compile Lisp
+files.  However, you also need the compiled Lisp files in order to dump
+out `xemacs'.  If both of these are missing or corrupted, you are out
+of luck unless you're able to bootstrap `xemacs' from `temacs'.  Note
+that `make all-elc' actually loads the alternative loadup file
+`loadup-el.el', which works like `loadup.el' but disables the
+pure-copying process and forces XEmacs to ignore any compiled Lisp
+files even if they exist.)
+
+   You can specify additional files to preload by writing a library
+named `site-load.el' that loads them.  You may need to increase the
+value of `PURESIZE', in `src/puresize.h', to make room for the
+additional files.  You should _not_ modify this file directly, however;
+instead, use the `--puresize' configuration option. (If you run out of
+pure space while dumping `xemacs', you will be told how much pure space
+you actually will need.) However, the advantage of preloading
+additional files decreases as machines get faster.  On modern machines,
+it is often not advisable, especially if the Lisp code is on a file
+system local to the machine running XEmacs.
+
+   You can specify other Lisp expressions to execute just before dumping
+by putting them in a library named `site-init.el'.  However, if they
+might alter the behavior that users expect from an ordinary unmodified
+XEmacs, it is better to put them in `default.el', so that users can
+override them if they wish.  *Note Start-up Summary::.
+
+   Before `loadup.el' dumps the new executable, it finds the
+documentation strings for primitive and preloaded functions (and
+variables) in the file where they are stored, by calling
+`Snarf-documentation' (*note Accessing Documentation::).  These strings
+were moved out of the `xemacs' executable to make it smaller.  *Note
+Documentation Basics::.
+
+ - Function: dump-emacs to-file from-file
+     This function dumps the current state of XEmacs into an executable
+     file TO-FILE.  It takes symbols from FROM-FILE (this is normally
+     the executable file `temacs').
+
+     If you use this function in an XEmacs that was already dumped, you
+     must set `command-line-processed' to `nil' first for good results.
+     *Note Command Line Arguments::.
+
+ - Function: run-emacs-from-temacs &rest args
+     This is the function that implements the `run-temacs' command-line
+     argument.  It is called from `loadup.el' as appropriate.  You
+     should most emphatically _not_ call this yourself; it will
+     reinitialize your XEmacs process and you'll be sorry.
+
+ - Command: emacs-version
+     This function returns a string describing the version of XEmacs
+     that is running.  It is useful to include this string in bug
+     reports.
+
+          (emacs-version)
+            => "XEmacs 20.1 [Lucid] (i586-unknown-linux2.0.29)
+                           of Mon Apr  7 1997 on altair.xemacs.org"
+
+     Called interactively, the function prints the same information in
+     the echo area.
+
+ - Variable: emacs-build-time
+     The value of this variable is the time at which XEmacs was built
+     at the local site.
+
+          emacs-build-time "Mon Apr  7 20:28:52 1997"
+               =>
+
+ - Variable: emacs-version
+     The value of this variable is the version of Emacs being run.  It
+     is a string, e.g. `"20.1 XEmacs Lucid"'.
+
+   The following two variables did not exist before FSF GNU Emacs
+version 19.23 and XEmacs version 19.10, which reduces their usefulness
+at present, but we hope they will be convenient in the future.
+
+ - Variable: emacs-major-version
+     The major version number of Emacs, as an integer.  For XEmacs
+     version 20.1, the value is 20.
+
+ - Variable: emacs-minor-version
+     The minor version number of Emacs, as an integer.  For XEmacs
+     version 20.1, the value is 1.
+
+\1f
 File: lispref.info,  Node: Pure Storage,  Next: Garbage Collection,  Prev: Building XEmacs,  Up: Building XEmacs and Object Allocation
 
 Pure Storage
@@ -505,812 +1200,3 @@ mathematical functions.
      `"Arithmetic underflow error"'
      *Note Math Functions::.
 
-\1f
-File: lispref.info,  Node: Standard Buffer-Local Variables,  Next: Standard Keymaps,  Prev: Standard Errors,  Up: Top
-
-Buffer-Local Variables
-**********************
-
-   The table below lists the general-purpose Emacs variables that are
-automatically local (when set) in each buffer.  Many Lisp packages
-define such variables for their internal use; we don't list them here.
-
-`abbrev-mode'
-     *note Abbrevs::
-
-`auto-fill-function'
-     *note Auto Filling::
-
-`buffer-auto-save-file-name'
-     *note Auto-Saving::
-
-`buffer-backed-up'
-     *note Backup Files::
-
-`buffer-display-table'
-     *note Display Tables::
-
-`buffer-file-format'
-     *note Format Conversion::
-
-`buffer-file-name'
-     *note Buffer File Name::
-
-`buffer-file-number'
-     *note Buffer File Name::
-
-`buffer-file-truename'
-     *note Buffer File Name::
-
-`buffer-file-type'
-     *note Files and MS-DOS::
-
-`buffer-invisibility-spec'
-     *note Invisible Text::
-
-`buffer-offer-save'
-     *note Saving Buffers::
-
-`buffer-read-only'
-     *note Read Only Buffers::
-
-`buffer-saved-size'
-     *note Point::
-
-`buffer-undo-list'
-     *note Undo::
-
-`cache-long-line-scans'
-     *note Text Lines::
-
-`case-fold-search'
-     *note Searching and Case::
-
-`ctl-arrow'
-     *note Usual Display::
-
-`comment-column'
-     *note Comments: (emacs)Comments.
-
-`default-directory'
-     *note System Environment::
-
-`defun-prompt-regexp'
-     *note List Motion::
-
-`fill-column'
-     *note Auto Filling::
-
-`goal-column'
-     *note Moving Point: (emacs)Moving Point.
-
-`left-margin'
-     *note Indentation::
-
-`local-abbrev-table'
-     *note Abbrevs::
-
-`local-write-file-hooks'
-     *note Saving Buffers::
-
-`major-mode'
-     *note Mode Help::
-
-`mark-active'
-     *note The Mark::
-
-`mark-ring'
-     *note The Mark::
-
-`minor-modes'
-     *note Minor Modes::
-
-`modeline-format'
-     *note Modeline Data::
-
-`modeline-buffer-identification'
-     *note Modeline Variables::
-
-`modeline-format'
-     *note Modeline Data::
-
-`modeline-modified'
-     *note Modeline Variables::
-
-`modeline-process'
-     *note Modeline Variables::
-
-`mode-name'
-     *note Modeline Variables::
-
-`overwrite-mode'
-     *note Insertion::
-
-`paragraph-separate'
-     *note Standard Regexps::
-
-`paragraph-start'
-     *note Standard Regexps::
-
-`point-before-scroll'
-     Used for communication between mouse commands and scroll-bar
-     commands.
-
-`require-final-newline'
-     *note Insertion::
-
-`selective-display'
-     *note Selective Display::
-
-`selective-display-ellipses'
-     *note Selective Display::
-
-`tab-width'
-     *note Usual Display::
-
-`truncate-lines'
-     *note Truncation::
-
-`vc-mode'
-     *note Modeline Variables::
-
-\1f
-File: lispref.info,  Node: Standard Keymaps,  Next: Standard Hooks,  Prev: Standard Buffer-Local Variables,  Up: Top
-
-Standard Keymaps
-****************
-
-   The following symbols are used as the names for various keymaps.
-Some of these exist when XEmacs is first started, others are loaded
-only when their respective mode is used.  This is not an exhaustive
-list.
-
-   Almost all of these maps are used as local maps.  Indeed, of the
-modes that presently exist, only Vip mode and Terminal mode ever change
-the global keymap.
-
-`bookmark-map'
-     A keymap containing bindings to bookmark functions.
-
-`Buffer-menu-mode-map'
-     A keymap used by Buffer Menu mode.
-
-`c++-mode-map'
-     A keymap used by C++ mode.
-
-`c-mode-map'
-     A keymap used by C mode.  A sparse keymap used by C mode.
-
-`command-history-map'
-     A keymap used by Command History mode.
-
-`ctl-x-4-map'
-     A keymap for subcommands of the prefix `C-x 4'.
-
-`ctl-x-5-map'
-     A keymap for subcommands of the prefix `C-x 5'.
-
-`ctl-x-map'
-     A keymap for `C-x' commands.
-
-`debugger-mode-map'
-     A keymap used by Debugger mode.
-
-`dired-mode-map'
-     A keymap for `dired-mode' buffers.
-
-`edit-abbrevs-map'
-     A keymap used in `edit-abbrevs'.
-
-`edit-tab-stops-map'
-     A keymap used in `edit-tab-stops'.
-
-`electric-buffer-menu-mode-map'
-     A keymap used by Electric Buffer Menu mode.
-
-`electric-history-map'
-     A keymap used by Electric Command History mode.
-
-`emacs-lisp-mode-map'
-     A keymap used by Emacs Lisp mode.
-
-`help-map'
-     A keymap for characters following the Help key.
-
-`Helper-help-map'
-     A keymap used by the help utility package.
-     It has the same keymap in its value cell and in its function cell.
-
-`Info-edit-map'
-     A keymap used by the `e' command of Info.
-
-`Info-mode-map'
-     A keymap containing Info commands.
-
-`isearch-mode-map'
-     A keymap that defines the characters you can type within
-     incremental search.
-
-`itimer-edit-map'
-     A keymap used when in Itimer Edit mode.
-
-`lisp-interaction-mode-map'
-     A keymap used by Lisp mode.
-
-`lisp-mode-map'
-     A keymap used by Lisp mode.
-
-     A keymap for minibuffer input with completion.
-
-`minibuffer-local-isearch-map'
-     A keymap for editing isearch strings in the minibuffer.
-
-`minibuffer-local-map'
-     Default keymap to use when reading from the minibuffer.
-
-`minibuffer-local-must-match-map'
-     A keymap for minibuffer input with completion, for exact match.
-
-`mode-specific-map'
-     The keymap for characters following `C-c'.  Note, this is in the
-     global map.  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.
-
-`modeline-map'
-     The keymap consulted for mouse-clicks on the modeline of a window.
-
-`objc-mode-map'
-     A keymap used in Objective C mode as a local map.
-
-`occur-mode-map'
-     A local keymap used by Occur mode.
-
-`overriding-local-map'
-     A keymap that overrides all other local keymaps.
-
-`query-replace-map'
-     A local keymap used for responses in `query-replace' and related
-     commands; also for `y-or-n-p' and `map-y-or-n-p'.  The functions
-     that use this map do not support prefix keys; they look up one
-     event at a time.
-
-`read-expression-map'
-     The minibuffer keymap used for reading Lisp expressions.
-
-`read-shell-command-map'
-     The minibuffer keymap used by shell-command and related commands.
-
-`shared-lisp-mode-map'
-     A keymap for commands shared by all sorts of Lisp modes.
-
-`text-mode-map'
-     A keymap used by Text mode.
-
-`toolbar-map'
-     The keymap consulted for mouse-clicks over a toolbar.
-
-`view-mode-map'
-     A keymap used by View mode.
-
-\1f
-File: lispref.info,  Node: Standard Hooks,  Next: Index,  Prev: Standard Keymaps,  Up: Top
-
-Standard Hooks
-**************
-
-   The following is a list of hook variables that let you provide
-functions to be called from within Emacs on suitable occasions.
-
-   Most of these variables have names ending with `-hook'.  They are
-"normal hooks", run by means of `run-hooks'.  The value of such a hook
-is a list of functions.  The recommended way to put a new function on
-such a hook is to call `add-hook'.  *Note Hooks::, for more information
-about using hooks.
-
-   The variables whose names end in `-function' have single functions
-as their values.  Usually there is a specific reason why the variable is
-not a normal hook, such as the need to pass arguments to the function.
-(In older Emacs versions, some of these variables had names ending in
-`-hook' even though they were not normal hooks.)
-
-   The variables whose names end in `-hooks' or `-functions' have lists
-of functions as their values, but these functions are called in a
-special way (they are passed arguments, or else their values are used).
-
-`activate-menubar-hook'
-
-`activate-popup-menu-hook'
-
-`ad-definition-hooks'
-
-`adaptive-fill-function'
-
-`add-log-current-defun-function'
-
-`after-change-functions'
-
-`after-delete-annotation-hook'
-
-`after-init-hook'
-
-`after-insert-file-functions'
-
-`after-revert-hook'
-
-`after-save-hook'
-
-`after-set-visited-file-name-hooks'
-
-`after-write-file-hooks'
-
-`auto-fill-function'
-
-`auto-save-hook'
-
-`before-change-functions'
-
-`before-delete-annotation-hook'
-
-`before-init-hook'
-
-`before-revert-hook'
-
-`blink-paren-function'
-
-`buffers-menu-switch-to-buffer-function'
-
-`c++-mode-hook'
-
-`c-delete-function'
-
-`c-mode-common-hook'
-
-`c-mode-hook'
-
-`c-special-indent-hook'
-
-`calendar-load-hook'
-
-`change-major-mode-hook'
-
-`command-history-hook'
-
-`comment-indent-function'
-
-`compilation-buffer-name-function'
-
-`compilation-exit-message-function'
-
-`compilation-finish-function'
-
-`compilation-parse-errors-function'
-
-`compilation-mode-hook'
-
-`create-console-hook'
-
-`create-device-hook'
-
-`create-frame-hook'
-
-`dabbrev-friend-buffer-function'
-
-`dabbrev-select-buffers-function'
-
-`delete-console-hook'
-
-`delete-device-hook'
-
-`delete-frame-hook'
-
-`deselect-frame-hook'
-
-`diary-display-hook'
-
-`diary-hook'
-
-`dired-after-readin-hook'
-
-`dired-before-readin-hook'
-
-`dired-load-hook'
-
-`dired-mode-hook'
-
-`disabled-command-hook'
-
-`display-buffer-function'
-
-`ediff-after-setup-control-frame-hook'
-
-`ediff-after-setup-windows-hook'
-
-`ediff-before-setup-control-frame-hook'
-
-`ediff-before-setup-windows-hook'
-
-`ediff-brief-help-message-function'
-
-`ediff-cleanup-hook'
-
-`ediff-control-frame-position-function'
-
-`ediff-display-help-hook'
-
-`ediff-focus-on-regexp-matches-function'
-
-`ediff-forward-word-function'
-
-`ediff-hide-regexp-matches-function'
-
-`ediff-keymap-setup-hook'
-
-`ediff-load-hook'
-
-`ediff-long-help-message-function'
-
-`ediff-make-wide-display-function'
-
-`ediff-merge-split-window-function'
-
-`ediff-meta-action-function'
-
-`ediff-meta-redraw-function'
-
-`ediff-mode-hook'
-
-`ediff-prepare-buffer-hook'
-
-`ediff-quit-hook'
-
-`ediff-registry-setup-hook'
-
-`ediff-select-hook'
-
-`ediff-session-action-function'
-
-`ediff-session-group-setup-hook'
-
-`ediff-setup-diff-regions-function'
-
-`ediff-show-registry-hook'
-
-`ediff-show-session-group-hook'
-
-`ediff-skip-diff-region-function'
-
-`ediff-split-window-function'
-
-`ediff-startup-hook'
-
-`ediff-suspend-hook'
-
-`ediff-toggle-read-only-function'
-
-`ediff-unselect-hook'
-
-`ediff-window-setup-function'
-
-`edit-picture-hook'
-
-`electric-buffer-menu-mode-hook'
-
-`electric-command-history-hook'
-
-`electric-help-mode-hook'
-
-`emacs-lisp-mode-hook'
-
-`fill-paragraph-function'
-
-`find-file-hooks'
-
-`find-file-not-found-hooks'
-
-`first-change-hook'
-
-`font-lock-after-fontify-buffer-hook'
-
-`font-lock-beginning-of-syntax-function'
-
-`font-lock-mode-hook'
-
-`fume-found-function-hook'
-
-`fume-list-mode-hook'
-
-`fume-rescan-buffer-hook'
-
-`fume-sort-function'
-
-`gnus-startup-hook'
-
-`hack-local-variables-hook'
-
-`highlight-headers-follow-url-function'
-
-`hyper-apropos-mode-hook'
-
-`indent-line-function'
-
-`indent-mim-hook'
-
-`indent-region-function'
-
-`initial-calendar-window-hook'
-
-`isearch-mode-end-hook'
-
-`isearch-mode-hook'
-
-`java-mode-hook'
-
-`kill-buffer-hook'
-
-`kill-buffer-query-functions'
-
-`kill-emacs-hook'
-
-`kill-emacs-query-functions'
-
-`kill-hooks'
-
-`LaTeX-mode-hook'
-
-`latex-mode-hook'
-
-`ledit-mode-hook'
-
-`lisp-indent-function'
-
-`lisp-interaction-mode-hook'
-
-`lisp-mode-hook'
-
-`list-diary-entries-hook'
-
-`load-read-function'
-
-`log-message-filter-function'
-
-`m2-mode-hook'
-
-`mail-citation-hook'
-
-`mail-mode-hook'
-
-`mail-setup-hook'
-
-`make-annotation-hook'
-
-`makefile-mode-hook'
-
-`map-frame-hook'
-
-`mark-diary-entries-hook'
-
-`medit-mode-hook'
-
-`menu-no-selection-hook'
-
-`mh-compose-letter-hook'
-
-`mh-folder-mode-hook'
-
-`mh-letter-mode-hook'
-
-`mim-mode-hook'
-
-`minibuffer-exit-hook'
-
-`minibuffer-setup-hook'
-
-`mode-motion-hook'
-
-`mouse-enter-frame-hook'
-
-`mouse-leave-frame-hook'
-
-`mouse-track-cleanup-hook'
-
-`mouse-track-click-hook'
-
-`mouse-track-down-hook'
-
-`mouse-track-drag-hook'
-
-`mouse-track-drag-up-hook'
-
-`mouse-track-up-hook'
-
-`mouse-yank-function'
-
-`news-mode-hook'
-
-`news-reply-mode-hook'
-
-`news-setup-hook'
-
-`nongregorian-diary-listing-hook'
-
-`nongregorian-diary-marking-hook'
-
-`nroff-mode-hook'
-
-`objc-mode-hook'
-
-`outline-mode-hook'
-
-`perl-mode-hook'
-
-`plain-TeX-mode-hook'
-
-`post-command-hook'
-
-`post-gc-hook'
-
-`pre-abbrev-expand-hook'
-
-`pre-command-hook'
-
-`pre-display-buffer-function'
-
-`pre-gc-hook'
-
-`pre-idle-hook'
-
-`print-diary-entries-hook'
-
-`prolog-mode-hook'
-
-`protect-innocence-hook'
-
-`remove-message-hook'
-
-`revert-buffer-function'
-
-`revert-buffer-insert-contents-function'
-
-`rmail-edit-mode-hook'
-
-`rmail-mode-hook'
-
-`rmail-retry-setup-hook'
-
-`rmail-summary-mode-hook'
-
-`scheme-indent-hook'
-
-`scheme-mode-hook'
-
-`scribe-mode-hook'
-
-`select-frame-hook'
-
-`send-mail-function'
-
-`shell-mode-hook'
-
-`shell-set-directory-error-hook'
-
-`special-display-function'
-
-`suspend-hook'
-
-`suspend-resume-hook'
-
-`temp-buffer-show-function'
-
-`term-setup-hook'
-
-`terminal-mode-hook'
-
-`terminal-mode-break-hook'
-
-`TeX-mode-hook'
-
-`tex-mode-hook'
-
-`text-mode-hook'
-
-`today-visible-calendar-hook'
-
-`today-invisible-calendar-hook'
-
-`tooltalk-message-handler-hook'
-
-`tooltalk-pattern-handler-hook'
-
-`tooltalk-unprocessed-message-hook'
-
-`unmap-frame-hook'
-
-`vc-checkin-hook'
-
-`vc-checkout-writable-buffer-hook'
-
-`vc-log-after-operation-hook'
-
-`vc-make-buffer-writable-hook'
-
-`view-hook'
-
-`vm-arrived-message-hook'
-
-`vm-arrived-messages-hook'
-
-`vm-chop-full-name-function'
-
-`vm-display-buffer-hook'
-
-`vm-edit-message-hook'
-
-`vm-forward-message-hook'
-
-`vm-iconify-frame-hook'
-
-`vm-inhibit-write-file-hook'
-
-`vm-key-functions'
-
-`vm-mail-hook'
-
-`vm-mail-mode-hook'
-
-`vm-menu-setup-hook'
-
-`vm-mode-hook'
-
-`vm-quit-hook'
-
-`vm-rename-current-buffer-function'
-
-`vm-reply-hook'
-
-`vm-resend-bounced-message-hook'
-
-`vm-resend-message-hook'
-
-`vm-retrieved-spooled-mail-hook'
-
-`vm-select-message-hook'
-
-`vm-select-new-message-hook'
-
-`vm-select-unread-message-hook'
-
-`vm-send-digest-hook'
-
-`vm-summary-mode-hook'
-
-`vm-summary-pointer-update-hook'
-
-`vm-summary-redo-hook'
-
-`vm-summary-update-hook'
-
-`vm-undisplay-buffer-hook'
-
-`vm-visit-folder-hook'
-
-`window-setup-hook'
-
-`write-contents-hooks'
-
-`write-file-data-hooks'
-
-`write-file-hooks'
-
-`write-region-annotate-functions'
-
-`x-lost-selection-hooks'
-
-`x-sent-selection-hooks'
-
-`zmacs-activate-region-hook'
-
-`zmacs-deactivate-region-hook'
-
-`zmacs-update-region-hook'
index 11acac1..7a6e6ca 100644 (file)
@@ -50,3415 +50,811 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
-File: lispref.info,  Node: Index,  Prev: Standard Hooks,  Up: Top
-
-Index
-*****
-
-* Menu:
-
-* " in printing:                         Output Functions.
-* " in strings:                          String Type.
-* #$:                                    Docs and Compilation.
-* #@COUNT:                               Docs and Compilation.
-* $ in display:                          Truncation.
-* $ in regexp:                           Syntax of Regexps.
-* %:                                     Arithmetic Operations.
-* % in format:                           Formatting Strings.
-* & in replacement:                      Replacing Match.
-* &define (Edebug):                      Specification List.
-* &not (Edebug):                         Specification List.
-* &optional:                             Argument List.
-* &optional (Edebug):                    Specification List.
-* &or (Edebug):                          Specification List.
-* &rest:                                 Argument List.
-* &rest (Edebug):                        Specification List.
-* ' for quoting:                         Quoting.
-* ( in regexp:                           Syntax of Regexps.
-* (...) in lists:                        Cons Cell Type.
-* ) in regexp:                           Syntax of Regexps.
-* *:                                     Arithmetic Operations.
-* * in interactive:                      Using Interactive.
-* * in regexp:                           Syntax of Regexps.
-* *? in regexp:                          Syntax of Regexps.
-* *PQfn:                                 Unimplemented libpq Functions.
-* *PQoidStatus:                          Unimplemented libpq Functions.
-* *PQsetdb:                              Unimplemented libpq Functions.
-* *PQsetdbLogin:                         Unimplemented libpq Functions.
-* *scratch*:                             Auto Major Mode.
-* +:                                     Arithmetic Operations.
-* + in regexp:                           Syntax of Regexps.
-* +? in regexp:                          Syntax of Regexps.
-* , (with Backquote):                    Backquote.
-* ,@ (with Backquote):                   Backquote.
-* -:                                     Arithmetic Operations.
-* . in lists:                            Dotted Pair Notation.
-* . in regexp:                           Syntax of Regexps.
-* .emacs:                                Init File.
-* .emacs customization:                  Major Mode Conventions.
-* /:                                     Arithmetic Operations.
-* /=:                                    Comparison of Numbers.
-* 1+:                                    Arithmetic Operations.
-* 1-:                                    Arithmetic Operations.
-* ; in comment:                          Comments.
-* <:                                     Comparison of Numbers.
-* <=:                                    Comparison of Numbers.
-* <ESC>:                                 Functions for Key Lookup.
-* =:                                     Comparison of Numbers.
-* >:                                     Comparison of Numbers.
-* >=:                                    Comparison of Numbers.
-* ? in character constant:               Character Type.
-* ? in regexp:                           Syntax of Regexps.
-* @ in interactive:                      Using Interactive.
-* [ in regexp:                           Syntax of Regexps.
-* [...] (Edebug):                        Specification List.
-* \ in character constant:               Character Type.
-* \ in display:                          Truncation.
-* \ in printing:                         Output Functions.
-* \ in regexp:                           Syntax of Regexps.
-* \ in replacement:                      Replacing Match.
-* \ in strings:                          String Type.
-* \ in symbols:                          Symbol Type.
-* \' in regexp:                          Syntax of Regexps.
-* \(?: in regexp:                        Syntax of Regexps.
-* \< in regexp:                          Syntax of Regexps.
-* \= in regexp:                          Syntax of Regexps.
-* \> in regexp:                          Syntax of Regexps.
-* \` in regexp:                          Syntax of Regexps.
-* \a:                                    Character Type.
-* \b:                                    Character Type.
-* \B in regexp:                          Syntax of Regexps.
-* \b in regexp:                          Syntax of Regexps.
-* \e:                                    Character Type.
-* \f:                                    Character Type.
-* \n:                                    Character Type.
-* \n in print:                           Output Variables.
-* \N in replacement:                     Replacing Match.
-* \r:                                    Character Type.
-* \S in regexp:                          Syntax of Regexps.
-* \s in regexp:                          Syntax of Regexps.
-* \t:                                    Character Type.
-* \v:                                    Character Type.
-* \W in regexp:                          Syntax of Regexps.
-* \w in regexp:                          Syntax of Regexps.
-* \{n,m\} in regexp:                     Syntax of Regexps.
-* ] in regexp:                           Syntax of Regexps.
-* ^ in regexp:                           Syntax of Regexps.
-* _ in interactive:                      Using Interactive.
-* `:                                     Backquote.
-* ` (Edebug):                            Debugging Backquote.
-* ` (list substitution):                 Backquote.
-* abbrev:                                Abbrevs.
-* abbrev table:                          Abbrevs.
-* abbrev tables in modes:                Major Mode Conventions.
-* abbrev-all-caps:                       Abbrev Expansion.
-* abbrev-expansion:                      Abbrev Expansion.
-* abbrev-file-name:                      Abbrev Files.
-* abbrev-mode:                           Abbrev Mode.
-* abbrev-prefix-mark:                    Abbrev Expansion.
-* abbrev-start-location:                 Abbrev Expansion.
-* abbrev-start-location-buffer:          Abbrev Expansion.
-* abbrev-symbol:                         Abbrev Expansion.
-* abbrev-table-name-list:                Abbrev Tables.
-* abbreviate-file-name:                  Directory Names.
-* abbrevs-changed:                       Abbrev Files.
-* abort-recursive-edit:                  Recursive Editing.
-* aborting:                              Recursive Editing.
-* abs:                                   Arithmetic Operations.
-* absolute file name:                    Relative File Names.
-* accelerate-menu:                       Menu Accelerator Functions.
-* accept-process-output:                 Accepting Output.
-* accessibility of a file:               Testing Accessibility.
-* accessible portion (of a buffer):      Narrowing.
-* accessible-keymaps:                    Scanning Keymaps.
-* acos:                                  Math Functions.
-* acosh:                                 Math Functions.
-* activate-menubar-hook:                 Menubar.
-* activate-popup-menu-hook:              Pop-Up Menus.
-* active display table:                  Active Display Table.
-* active keymap:                         Active Keymaps.
-* active-minibuffer-window:              Minibuffer Misc.
-* add-abbrev:                            Defining Abbrevs.
-* add-hook:                              Hooks.
-* add-menu:                              Modifying Menus.
-* add-menu-button:                       Modifying Menus.
-* add-menu-item:                         Modifying Menus.
-* add-name-to-file:                      Changing File Attributes.
-* add-spec-list-to-specifier:            Adding Specifications.
-* add-spec-to-specifier:                 Adding Specifications.
-* add-submenu:                           Modifying Menus.
-* add-text-properties:                   Changing Properties.
-* add-timeout:                           Timers.
-* add-to-list:                           Setting Variables.
-* add-tooltalk-message-arg:              Elisp Interface for Sending Messages.
-* add-tooltalk-pattern-arg:              Elisp Interface for Receiving Messages.
-* add-tooltalk-pattern-attribute:        Elisp Interface for Receiving Messages.
-* address field of register:             Cons Cell Type.
-* after-change-function:                 Change Hooks.
-* after-change-functions:                Change Hooks.
-* after-find-file:                       Subroutines of Visiting.
-* after-init-hook:                       Init File.
-* after-insert-file-functions:           Saving Properties.
-* after-load-alist:                      Hooks for Loading.
-* after-revert-hook:                     Reverting.
-* after-save-hook:                       Saving Buffers.
-* aliases, for variables:                Variable Aliases.
-* alist:                                 Association Lists.
-* alist-to-plist:                        Converting Plists To/From Alists.
-* all-annotations:                       Locating Annotations.
-* all-completions:                       Basic Completion.
-* and:                                   Combining Conditions.
-* annotation:                            Annotations.
-* annotation hooks:                      Annotation Hooks.
-* annotation-action:                     Annotation Properties.
-* annotation-data:                       Annotation Properties.
-* annotation-down-glyph:                 Annotation Properties.
-* annotation-face:                       Annotation Properties.
-* annotation-glyph:                      Annotation Properties.
-* annotation-layout:                     Annotation Properties.
-* annotation-list:                       Locating Annotations.
-* annotation-menu:                       Annotation Properties.
-* annotation-side:                       Annotation Properties.
-* annotation-visible:                    Annotation Properties.
-* annotation-width:                      Annotation Properties.
-* annotationp:                           Annotation Primitives.
-* annotations-at:                        Locating Annotations.
-* annotations-in-region:                 Locating Annotations.
-* anonymous function:                    Anonymous Functions.
-* anonymous lambda expressions (Edebug): Instrumenting.
-* apostrophe for quoting:                Quoting.
-* append:                                Building Lists.
-* append-to-file:                        Writing to Files.
-* apply:                                 Calling Functions.
-* apply, and debugging:                  Internals of Debugger.
-* apropos:                               Help Functions.
-* aref:                                  Array Functions.
-* argument binding:                      Argument List.
-* argument descriptors:                  Using Interactive.
-* argument evaluation form:              Using Interactive.
-* argument prompt:                       Using Interactive.
-* arguments, reading:                    Minibuffers.
-* arith-error example:                   Handling Errors.
-* arith-error in division:               Arithmetic Operations.
-* arithmetic shift:                      Bitwise Operations.
-* array:                                 Arrays.
-* array elements:                        Array Functions.
-* arrayp:                                Array Functions.
-* ASCII character codes:                 Character Type.
-* aset:                                  Array Functions.
-* ash:                                   Bitwise Operations.
-* asin:                                  Math Functions.
-* asinh:                                 Math Functions.
-* ask-user-about-lock:                   File Locks.
-* ask-user-about-supersession-threat:    Modification Time.
-* asking the user questions:             Yes-or-No Queries.
-* assoc:                                 Association Lists.
-* association list:                      Association Lists.
-* assq:                                  Association Lists.
-* asynchronous subprocess:               Asynchronous Processes.
-* atan:                                  Math Functions.
-* atanh:                                 Math Functions.
-* atom <1>:                              List-related Predicates.
-* atom:                                  Cons Cell Type.
-* atomic extent:                         Atomic Extents.
-* atoms:                                 List-related Predicates.
-* attributes of text:                    Text Properties.
-* Auto Fill mode:                        Auto Filling.
-* auto-fill-function:                    Auto Filling.
-* auto-lower-frame:                      Raising and Lowering.
-* auto-mode-alist:                       Auto Major Mode.
-* auto-raise-frame:                      Raising and Lowering.
-* auto-save-default:                     Auto-Saving.
-* auto-save-file-format:                 Format Conversion.
-* auto-save-file-name-p:                 Auto-Saving.
-* auto-save-hook:                        Auto-Saving.
-* auto-save-interval:                    Auto-Saving.
-* auto-save-list-file-name:              Auto-Saving.
-* auto-save-mode:                        Auto-Saving.
-* auto-save-timeout:                     Auto-Saving.
-* auto-save-visited-file-name:           Auto-Saving.
-* auto-saving:                           Auto-Saving.
-* autoload <1>:                          Domain Specification.
-* autoload:                              Autoload.
-* autoload errors:                       Autoload.
-* automatically buffer-local:            Intro to Buffer-Local.
-* available fonts:                       Font Instance Names.
-* back-to-indentation:                   Motion by Indent.
-* background pixmap:                     Merging Faces.
-* backquote (Edebug):                    Debugging Backquote.
-* backquote (list substitution):         Backquote.
-* backslash in character constant:       Character Type.
-* backslash in strings:                  String Type.
-* backslash in symbols:                  Symbol Type.
-* backspace:                             Character Type.
-* backtrace:                             Internals of Debugger.
-* backtrace-debug:                       Internals of Debugger.
-* backtrace-frame:                       Internals of Debugger.
-* backtracking:                          Backtracking.
-* backup file:                           Backup Files.
-* backup files, how to make them:        Rename or Copy.
-* backup-buffer:                         Making Backups.
-* backup-by-copying:                     Rename or Copy.
-* backup-by-copying-when-linked:         Rename or Copy.
-* backup-by-copying-when-mismatch:       Rename or Copy.
-* backup-enable-predicate:               Making Backups.
-* backup-file-name-p:                    Backup Names.
-* backup-inhibited:                      Making Backups.
-* backward-char:                         Character Motion.
-* backward-delete-char-untabify:         Deletion.
-* backward-list:                         List Motion.
-* backward-prefix-chars:                 Motion and Syntax.
-* backward-sexp:                         List Motion.
-* backward-to-indentation:               Motion by Indent.
-* backward-word:                         Word Motion.
-* balancing parentheses:                 Blinking.
-* barf-if-buffer-read-only:              Read Only Buffers.
-* base buffer:                           Indirect Buffers.
-* base64:                                Transformations.
-* base64-decode-region:                  Transformations.
-* base64-decode-string:                  Transformations.
-* base64-encode-region:                  Transformations.
-* base64-encode-string:                  Transformations.
-* batch mode:                            Batch Mode.
-* batch-byte-compile:                    Compilation Functions.
-* batch-byte-recompile-directory:        Compilation Functions.
-* beep:                                  Beeping.
-* beeping:                               Beeping.
-* before point, insertion:               Insertion.
-* before-change-function:                Change Hooks.
-* before-change-functions:               Change Hooks.
-* before-init-hook:                      Init File.
-* before-revert-hook:                    Reverting.
-* beginning of line:                     Text Lines.
-* beginning of line in regexp:           Syntax of Regexps.
-* beginning-of-buffer:                   Buffer End Motion.
-* beginning-of-defun:                    List Motion.
-* beginning-of-line:                     Text Lines.
-* bell:                                  Beeping.
-* bell character:                        Character Type.
-* bell-volume:                           Beeping.
-* binary files and text files:           Files and MS-DOS.
-* binary-process-input:                  MS-DOS Subprocesses.
-* binary-process-output:                 MS-DOS Subprocesses.
-* bind-text-domain:                      Level 3 Primitives.
-* binding arguments:                     Argument List.
-* binding local variables:               Local Variables.
-* binding of a key:                      Keymap Terminology.
-* bit vector:                            Bit Vectors.
-* bit vector length:                     Sequence Functions.
-* bit-vector:                            Bit Vector Functions.
-* bit-vector-p:                          Bit Vector Functions.
-* bitp:                                  Bit Vector Functions.
-* bitwise and:                           Bitwise Operations.
-* bitwise exclusive or:                  Bitwise Operations.
-* bitwise not:                           Bitwise Operations.
-* bitwise or:                            Bitwise Operations.
-* blink-matching-open:                   Blinking.
-* blink-matching-paren:                  Blinking.
-* blink-matching-paren-delay:            Blinking.
-* blink-matching-paren-distance:         Blinking.
-* blink-paren-function:                  Blinking.
-* blink-paren-hook:                      Blinking.
-* blinking:                              Blinking.
-* bobp:                                  Near Point.
-* body of function:                      Lambda Components.
-* bold:                                  Font Instance Characteristics.
-* bolp:                                  Near Point.
-* bookmark-map:                          Standard Keymaps.
-* boolean:                               nil and t.
-* boolean-specifier-p:                   Specifier Types.
-* bootstrapping XEmacs from temacs:      Building XEmacs.
-* bottom-gutter:                         Specifying a Gutter.
-* bottom-gutter-height:                  Other Gutter Variables.
-* bottom-gutter-visible-p:               Other Gutter Variables.
-* bottom-toolbar:                        Specifying the Toolbar.
-* bottom-toolbar-height:                 Other Toolbar Variables.
-* bottom-toolbar-visible-p:              Other Toolbar Variables.
-* boundp:                                Void Variables.
-* box diagrams, for lists:               Cons Cell Type.
-* box representation for lists:          Lists as Boxes.
-* break:                                 Debugger.
-* breakpoints:                           Breakpoints.
-* bucket (in obarray):                   Creating Symbols.
-* buffer:                                Buffers.
-* buffer contents:                       Text.
-* buffer file name:                      Buffer File Name.
-* buffer input stream:                   Input Streams.
-* buffer list:                           The Buffer List.
-* buffer modification:                   Buffer Modification.
-* buffer names:                          Buffer Names.
-* buffer output stream:                  Output Streams.
-* buffer text notation:                  Buffer Text Notation.
-* buffer, read-only:                     Read Only Buffers.
-* buffer-auto-save-file-name:            Auto-Saving.
-* buffer-backed-up:                      Making Backups.
-* buffer-base-buffer:                    Indirect Buffers.
-* buffer-disable-undo:                   Maintaining Undo.
-* buffer-enable-undo:                    Maintaining Undo.
-* buffer-end:                            Point.
-* buffer-file-format:                    Format Conversion.
-* buffer-file-name:                      Buffer File Name.
-* buffer-file-number:                    Buffer File Name.
-* buffer-file-truename:                  Buffer File Name.
-* buffer-file-type:                      Files and MS-DOS.
-* buffer-flush-undo:                     Maintaining Undo.
-* buffer-glyph-p:                        Glyph Types.
-* buffer-indirect-children:              Indirect Buffers.
-* buffer-invisibility-spec:              Invisible Text.
-* buffer-list:                           The Buffer List.
-* buffer-live-p:                         Killing Buffers.
-* buffer-local variables:                Buffer-Local Variables.
-* buffer-local variables in modes:       Major Mode Conventions.
-* buffer-local-variables:                Creating Buffer-Local.
-* Buffer-menu-mode-map:                  Standard Keymaps.
-* buffer-modified-p:                     Buffer Modification.
-* buffer-modified-tick:                  Buffer Modification.
-* buffer-name:                           Buffer Names.
-* buffer-offer-save <1>:                 Killing Buffers.
-* buffer-offer-save:                     Saving Buffers.
-* buffer-read-only:                      Read Only Buffers.
-* buffer-saved-size <1>:                 Point.
-* buffer-saved-size:                     Auto-Saving.
-* buffer-size:                           Point.
-* buffer-string:                         Buffer Contents.
-* buffer-substring:                      Buffer Contents.
-* buffer-undo-list:                      Undo.
-* bufferp:                               Buffer Basics.
-* buffers menu:                          Buffers Menu.
-* buffers, controlled in windows:        Buffers and Windows.
-* buffers, creating:                     Creating Buffers.
-* buffers, killing:                      Killing Buffers.
-* buffers-menu-filter:                   Menu Filters.
-* buffers-menu-max-size:                 Buffers Menu.
-* buffers-menu-switch-to-buffer-function: Buffers Menu.
-* building lists:                        Building Lists.
-* building XEmacs:                       Building XEmacs.
-* built-in function:                     What Is a Function.
-* bury-buffer:                           The Buffer List.
-* busy-pointer-glyph:                    Mouse Pointer.
-* button-event-p:                        Event Predicates.
-* button-press-event-p:                  Event Predicates.
-* button-release-event-p:                Event Predicates.
-* bvconcat:                              Bit Vector Functions.
-* byte-code <1>:                         Compilation Functions.
-* byte-code:                             Byte Compilation.
-* byte-code function:                    Compiled-Function Objects.
-* byte-code interpreter:                 Compilation Functions.
-* byte-compile:                          Compilation Functions.
-* byte-compile-dynamic:                  Dynamic Loading.
-* byte-compile-dynamic-docstrings:       Docs and Compilation.
-* byte-compile-file:                     Compilation Functions.
-* byte-compiling macros:                 Compiling Macros.
-* byte-compiling require:                Named Features.
-* byte-recompile-directory:              Compilation Functions.
-* byte-recompile-directory-ignore-errors-p: Compilation Functions.
-* bytes:                                 Strings and Characters.
-* c++-mode-map:                          Standard Keymaps.
-* C-c:                                   Prefix Keys.
-* C-g:                                   Quitting.
-* C-h:                                   Prefix Keys.
-* C-M-x:                                 Instrumenting.
-* c-mode-abbrev-table:                   Standard Abbrev Tables.
-* c-mode-map:                            Standard Keymaps.
-* c-mode-syntax-table:                   Standard Syntax Tables.
-* C-q:                                   Flow Control.
-* C-s:                                   Flow Control.
-* C-x:                                   Prefix Keys.
-* C-x 4:                                 Prefix Keys.
-* C-x 5:                                 Prefix Keys.
-* C-x a:                                 Prefix Keys.
-* C-x n:                                 Prefix Keys.
-* C-x r:                                 Prefix Keys.
-* caaaar:                                List Elements.
-* caaadr:                                List Elements.
-* caaar:                                 List Elements.
-* caadar:                                List Elements.
-* caaddr:                                List Elements.
-* caadr:                                 List Elements.
-* caar:                                  List Elements.
-* cadaar:                                List Elements.
-* cadadr:                                List Elements.
-* cadar:                                 List Elements.
-* caddar:                                List Elements.
-* cadddr:                                List Elements.
-* caddr:                                 List Elements.
-* cadr:                                  List Elements.
-* call stack:                            Internals of Debugger.
-* call-interactively:                    Interactive Call.
-* call-process:                          Synchronous Processes.
-* call-process-region:                   Synchronous Processes.
-* calling a function:                    Calling Functions.
-* cancel-debug-on-entry:                 Function Debugging.
-* canonicalize-inst-list:                Adding Specifications.
-* canonicalize-inst-pair:                Adding Specifications.
-* canonicalize-lax-plist:                Working With Lax Plists.
-* canonicalize-plist:                    Working With Normal Plists.
-* canonicalize-spec:                     Adding Specifications.
-* canonicalize-spec-list:                Adding Specifications.
-* canonicalize-tag-set:                  Specifier Tag Functions.
-* capitalization:                        Character Case.
-* capitalize:                            Character Case.
-* capitalize-region:                     Case Changes.
-* capitalize-word:                       Case Changes.
-* car:                                   List Elements.
-* car-safe:                              List Elements.
-* case changes:                          Case Changes.
-* case in replacements:                  Replacing Match.
-* case-fold-search:                      Searching and Case.
-* case-replace:                          Searching and Case.
-* case-table-p:                          Case Tables.
-* catch:                                 Catch and Throw.
-* category-designator-p:                 Category Tables.
-* category-table:                        Category Tables.
-* category-table-p:                      Category Tables.
-* category-table-value-p:                Category Tables.
-* CBREAK:                                Flow Control.
-* ccl-elapsed-time:                      Calling CCL.
-* ccl-execute:                           Calling CCL.
-* ccl-execute-on-string:                 Calling CCL.
-* ccl-reset-elapsed-time:                Calling CCL.
-* cdaaar:                                List Elements.
-* cdaadr:                                List Elements.
-* cdaar:                                 List Elements.
-* cdadar:                                List Elements.
-* cdaddr:                                List Elements.
-* cdadr:                                 List Elements.
-* cdar:                                  List Elements.
-* cddaar:                                List Elements.
-* cddadr:                                List Elements.
-* cddar:                                 List Elements.
-* cdddar:                                List Elements.
-* cddddr:                                List Elements.
-* cdddr:                                 List Elements.
-* cddr:                                  List Elements.
-* CDE dt:                                CDE dt.
-* cdr:                                   List Elements.
-* cdr-safe:                              List Elements.
-* ceiling:                               Numeric Conversions.
-* centering point:                       Vertical Scrolling.
-* cerror:                                Signaling Errors.
-* change hooks:                          Change Hooks.
-* change-major-mode-hook:                Major Mode Conventions.
-* changing key bindings:                 Changing Key Bindings.
-* changing to another buffer:            Current Buffer.
-* changing window size:                  Resizing Windows.
-* char table type:                       Char Table Type.
-* char-after:                            Near Point.
-* char-before:                           Near Point.
-* char-charset:                          MULE Characters.
-* char-equal:                            Text Comparison.
-* char-int:                              Character Codes.
-* char-int confoundance disease:         Character Type.
-* char-int-p:                            Character Codes.
-* char-octet:                            MULE Characters.
-* char-or-char-int-p:                    Character Codes.
-* char-or-string-p:                      Predicates for Strings.
-* char-syntax:                           Syntax Table Functions.
-* char-table-p:                          Char Tables.
-* char-table-type:                       Char Table Types.
-* char-table-type-list:                  Char Table Types.
-* char-to-string:                        String Conversion.
-* char=:                                 Text Comparison.
-* character arrays:                      Strings and Characters.
-* character case:                        Character Case.
-* character descriptor:                  Character Descriptors.
-* character insertion:                   Commands for Insertion.
-* character printing:                    Describing Characters.
-* character set (in regexp):             Syntax of Regexps.
-* character to string:                   String Conversion.
-* character-to-event:                    Converting Events.
-* characteristics of font instances:     Font Instance Characteristics.
-* characterp:                            Predicates for Characters.
-* characters:                            Strings and Characters.
-* characters for interactive codes:      Interactive Codes.
-* character quote:                       Syntax Class Table.
-* charset type:                          Charset Type.
-* charset-ccl-program:                   Charset Property Functions.
-* charset-chars:                         Charset Property Functions.
-* charset-columns:                       Charset Property Functions.
-* charset-dimension:                     Charset Property Functions.
-* charset-direction:                     Charset Property Functions.
-* charset-doc-string:                    Charset Property Functions.
-* charset-final:                         Charset Property Functions.
-* charset-from-attributes:               Basic Charset Functions.
-* charset-graphic:                       Charset Property Functions.
-* charset-list:                          Basic Charset Functions.
-* charset-name:                          Charset Property Functions.
-* charset-property:                      Charset Property Functions.
-* charset-registry:                      Charset Property Functions.
-* charset-reverse-direction-charset:     Basic Charset Functions.
-* charsetp:                              Charsets.
-* check-argument-type:                   Signaling Errors.
-* check-gutter-button-syntax:            Gutter Descriptor Format.
-* check-toolbar-button-syntax:           Toolbar Descriptor Format.
-* check-valid-char-table-value:          Working With Char Tables.
-* check-valid-inst-list:                 Specifier Validation Functions.
-* check-valid-instantiator:              Specifier Validation Functions.
-* check-valid-plist:                     Property Lists.
-* check-valid-spec-list:                 Specifier Validation Functions.
-* child process:                         Processes.
-* children, of extent:                   Extent Parents.
-* CL note--allocate more storage:        Garbage Collection.
-* CL note--case of letters:              Symbol Type.
-* CL note--default optional arg:         Argument List.
-* CL note--integers vrs eq:              Comparison of Numbers.
-* CL note--lack union, set:              Sets And Lists.
-* CL note--only throw in Emacs:          Catch and Throw.
-* CL note--rplaca vrs setcar:            Modifying Lists.
-* CL note--set local:                    Setting Variables.
-* CL note--special forms compared:       Special Forms.
-* CL note--special variables:            Variable Scoping.
-* CL note--symbol in obarrays:           Creating Symbols.
-* cl-read:                               Reading in Edebug.
-* cl-specs.el:                           Instrumenting.
-* cl.el (Edebug):                        Instrumenting.
-* cleanup forms:                         Cleanups.
-* clear-abbrev-table:                    Abbrev Tables.
-* clear-message:                         The Echo Area.
-* clear-range-table:                     Working With Range Tables.
-* clear-visited-file-modtime:            Modification Time.
-* close parenthesis:                     Blinking.
-* close-database:                        Connecting to a Database.
-* close parenthesis character:           Syntax Class Table.
-* closures not available:                Extent.
-* clrhash:                               Working With Hash Tables.
-* codes, interactive, description of:    Interactive Codes.
-* coding standards:                      Tips.
-* coding system type:                    Coding System Type.
-* coding-category-list:                  Detection of Textual Encoding.
-* coding-category-system:                Detection of Textual Encoding.
-* coding-priority-list:                  Detection of Textual Encoding.
-* coding-system-base:                    Basic Coding System Functions.
-* coding-system-doc-string:              Coding System Property Functions.
-* coding-system-list:                    Basic Coding System Functions.
-* coding-system-name:                    Basic Coding System Functions.
-* coding-system-p:                       Coding Systems.
-* coding-system-property:                Coding System Property Functions.
-* coding-system-type:                    Coding System Property Functions.
-* color instance type:                   Color Instance Type.
-* color instances:                       Color Instances.
-* color-instance-name:                   Color Instance Properties.
-* color-instance-p:                      Color Instances.
-* color-instance-rgb-components:         Color Instance Properties.
-* color-name:                            Color Convenience Functions.
-* color-pixmap-image-instance-p:         Image Instance Types.
-* color-rgb-components:                  Color Convenience Functions.
-* color-specifier-p <1>:                 Color Specifiers.
-* color-specifier-p:                     Specifier Types.
-* colorize-image-instance:               Image Instance Functions.
-* colors:                                Colors.
-* columns:                               Columns.
-* command:                               What Is a Function.
-* command descriptions:                  A Sample Function Description.
-* command history:                       Command History.
-* command in keymap:                     Key Lookup.
-* command line arguments:                Command Line Arguments.
-* command line options:                  Command Line Arguments.
-* command loop:                          Command Loop.
-* command loop, recursive:               Recursive Editing.
-* command-debug-status:                  Internals of Debugger.
-* command-execute:                       Interactive Call.
-* command-history:                       Command History.
-* command-history-map:                   Standard Keymaps.
-* command-line:                          Command Line Arguments.
-* command-line-args:                     Command Line Arguments.
-* command-line-functions:                Command Line Arguments.
-* command-line-processed:                Command Line Arguments.
-* command-switch-alist:                  Command Line Arguments.
-* commandp:                              Interactive Call.
-* commandp example:                      High-Level Completion.
-* commands, defining:                    Defining Commands.
-* comment syntax:                        Syntax Class Table.
-* comments:                              Comments.
-* comment ender:                         Syntax Class Table.
-* comment starter:                       Syntax Class Table.
-* Common Lisp:                           Lisp History.
-* Common Lisp (Edebug):                  Instrumenting.
-* compare-buffer-substrings:             Comparing Text.
-* comparing buffer text:                 Comparing Text.
-* comparison of modification time:       Modification Time.
-* compilation:                           Byte Compilation.
-* compilation functions:                 Compilation Functions.
-* compile-defun:                         Compilation Functions.
-* compiled function:                     Compiled-Function Objects.
-* compiled-function-arglist:             Compiled-Function Objects.
-* compiled-function-constants:           Compiled-Function Objects.
-* compiled-function-doc-string:          Compiled-Function Objects.
-* compiled-function-domain:              Compiled-Function Objects.
-* compiled-function-instructions:        Compiled-Function Objects.
-* compiled-function-interactive:         Compiled-Function Objects.
-* compiled-function-p:                   What Is a Function.
-* compiled-function-stack-size:          Compiled-Function Objects.
-* complete key:                          Keymap Terminology.
-* completing-read:                       Minibuffer Completion.
-* completion:                            Completion.
-* completion, file name:                 File Name Completion.
-* completion, user name:                 User Name Completion.
-* completion-auto-help:                  Completion Commands.
-* completion-ignore-case:                Basic Completion.
-* completion-ignored-extensions:         File Name Completion.
-* complex arguments:                     Minibuffers.
-* complex command:                       Command History.
-* complex-buffers-menu-p:                Buffers Menu.
-* compose-region:                        Composite Characters.
-* composite-char-string:                 Composite Characters.
-* concat:                                Creating Strings.
-* concatenating lists:                   Rearrangement.
-* concatenating strings:                 Creating Strings.
-* cond:                                  Conditionals.
-* condition name:                        Error Symbols.
-* condition-case:                        Handling Errors.
-* conditional evaluation:                Conditionals.
-* cons:                                  Building Lists.
-* cons cell as box:                      Lists as Boxes.
-* cons cells:                            Building Lists.
-* consing:                               Building Lists.
-* console-device-list:                   Basic Console Functions.
-* console-disable-input:                 Console and Device I/O.
-* console-enable-input:                  Console and Device I/O.
-* console-list:                          Basic Console Functions.
-* console-live-p:                        Connecting to a Console or Device.
-* console-type-image-conversion-list:    Image Instantiator Conversion.
-* consolep:                              Consoles and Devices.
-* consoles:                              Consoles and Devices.
-* consp:                                 List-related Predicates.
-* continuation lines:                    Truncation.
-* continuation-glyph:                    Redisplay Glyphs.
-* continue-process:                      Signals to Processes.
-* control character printing:            Describing Characters.
-* control characters:                    Character Type.
-* control characters in display:         Usual Display.
-* control characters, reading:           Quoted Character Input.
-* control structures:                    Control Structures.
-* control-arrow-glyph:                   Redisplay Glyphs.
-* Control-X-prefix:                      Prefix Keys.
-* conventions for writing minor modes:   Minor Mode Conventions.
-* conversion of image instantiators:     Image Instantiator Conversion.
-* conversion of strings:                 String Conversion.
-* copy-alist:                            Association Lists.
-* copy-category-table:                   Category Tables.
-* copy-coding-system:                    Basic Coding System Functions.
-* copy-event:                            Working With Events.
-* copy-extent:                           Detached Extents.
-* copy-face:                             Basic Face Functions.
-* copy-file:                             Changing File Attributes.
-* copy-hash-table:                       Introduction to Hash Tables.
-* copy-keymap:                           Creating Keymaps.
-* copy-marker:                           Creating Markers.
-* copy-range-table:                      Introduction to Range Tables.
-* copy-region-as-kill:                   Kill Functions.
-* copy-sequence:                         Sequence Functions.
-* copy-specifier:                        Other Specification Functions.
-* copy-syntax-table:                     Syntax Table Functions.
-* copying alists:                        Association Lists.
-* copying bit vectors:                   Bit Vector Functions.
-* copying files:                         Changing File Attributes.
-* copying lists:                         Building Lists.
-* copying sequences:                     Sequence Functions.
-* copying strings:                       Creating Strings.
-* copying vectors:                       Vector Functions.
-* cos:                                   Math Functions.
-* cosh:                                  Math Functions.
-* count-lines:                           Text Lines.
-* count-loop:                            A Sample Function Description.
-* counting columns:                      Columns.
-* coverage testing:                      Coverage Testing.
-* create-device-hook:                    Connecting to a Console or Device.
-* create-file-buffer:                    Subroutines of Visiting.
-* create-frame-hook:                     Frame Hooks.
-* create-tooltalk-message:               Elisp Interface for Sending Messages.
-* create-tooltalk-pattern:               Elisp Interface for Receiving Messages.
-* creating buffers:                      Creating Buffers.
-* creating keymaps:                      Creating Keymaps.
-* ctl-arrow:                             Usual Display.
-* ctl-x-4-map <1>:                       Standard Keymaps.
-* ctl-x-4-map:                           Prefix Keys.
-* ctl-x-5-map <1>:                       Standard Keymaps.
-* ctl-x-5-map:                           Prefix Keys.
-* ctl-x-map <1>:                         Standard Keymaps.
-* ctl-x-map:                             Prefix Keys.
-* cube-root:                             Math Functions.
-* current binding:                       Local Variables.
-* current buffer:                        Current Buffer.
-* current buffer excursion:              Excursions.
-* current buffer mark:                   The Mark.
-* current buffer point and mark (Edebug): Edebug Display Update.
-* current buffer position:               Point.
-* current command:                       Command Loop Info.
-* current stack frame:                   Using Debugger.
-* current-buffer:                        Current Buffer.
-* current-case-table:                    Case Tables.
-* current-column:                        Columns.
-* current-fill-column:                   Margins.
-* current-frame-configuration:           Frame Configurations.
-* current-global-map:                    Active Keymaps.
-* current-indentation:                   Primitive Indent.
-* current-input-mode:                    Input Modes.
-* current-justification:                 Filling.
-* current-keymaps:                       Active Keymaps.
-* current-kill:                          Low-Level Kill Ring.
-* current-left-margin:                   Margins.
-* current-local-map:                     Active Keymaps.
-* current-menubar:                       Menubar.
-* current-message:                       The Echo Area.
-* current-minor-mode-maps:               Active Keymaps.
-* current-mouse-event:                   Command Loop Info.
-* current-prefix-arg:                    Prefix Command Arguments.
-* current-time:                          Time of Day.
-* current-time-string:                   Time of Day.
-* current-time-zone:                     Time of Day.
-* current-window-configuration:          Window Configurations.
-* cursor (mouse):                        Mouse Pointer.
-* cursor-in-echo-area:                   The Echo Area.
-* cust-print:                            Printing in Edebug.
-* cut buffer:                            X Selections.
-* cyclic ordering of windows:            Cyclic Window Ordering.
-* data type:                             Lisp Data Types.
-* data-directory:                        Accessing Documentation.
-* database:                              Databases.
-* database type:                         Database Type.
-* database-file-name:                    Other Database Functions.
-* database-last-error:                   Other Database Functions.
-* database-live-p:                       Connecting to a Database.
-* database-subtype:                      Other Database Functions.
-* database-type:                         Other Database Functions.
-* databasep:                             Databases.
-* deallocate-event:                      Working With Events.
-* debug:                                 Invoking the Debugger.
-* debug-allocation:                      Garbage Collection.
-* debug-allocation-backtrace:            Garbage Collection.
-* debug-ignored-errors:                  Error Debugging.
-* debug-on-entry:                        Function Debugging.
-* debug-on-error:                        Error Debugging.
-* debug-on-error use:                    Processing of Errors.
-* debug-on-next-call:                    Internals of Debugger.
-* debug-on-quit:                         Infinite Loops.
-* debug-on-signal:                       Error Debugging.
-* debug-on-signal use:                   Handling Errors.
-* debugger <1>:                          Internals of Debugger.
-* debugger:                              Debugger.
-* debugger command list:                 Debugger Commands.
-* debugger-mode-map:                     Standard Keymaps.
-* debugging errors:                      Error Debugging.
-* debugging specific functions:          Function Debugging.
-* decode-big5-char:                      Big5 and Shift-JIS Functions.
-* decode-coding-region:                  Encoding and Decoding Text.
-* decode-shift-jis-char:                 Big5 and Shift-JIS Functions.
-* decode-time:                           Time Conversion.
-* decoding file formats:                 Format Conversion.
-* decompose-region:                      Composite Characters.
-* decrement field of register:           Cons Cell Type.
-* dedicated window:                      Choosing Window.
-* deep binding:                          Impl of Scope.
-* def-edebug-spec:                       Instrumenting Macro Calls.
-* defalias:                              Defining Functions.
-* default argument string:               Interactive Codes.
-* default init file:                     Init File.
-* default value:                         Default Value.
-* default-abbrev-mode:                   Abbrev Mode.
-* default-boundp:                        Default Value.
-* default-buffer-file-type:              Files and MS-DOS.
-* default-case-fold-search:              Searching and Case.
-* default-ctl-arrow:                     Usual Display.
-* default-deselect-frame-hook:           Raising and Lowering.
-* default-directory:                     File Name Expansion.
-* default-file-modes:                    Changing File Attributes.
-* default-fill-column:                   Margins.
-* default-frame-name:                    Frame Name.
-* default-frame-plist:                   Initial Properties.
-* default-gutter:                        Specifying a Gutter.
-* default-gutter-height:                 Other Gutter Variables.
-* default-gutter-position:               Specifying a Gutter.
-* default-gutter-visible-p:              Other Gutter Variables.
-* default-gutter-width:                  Other Gutter Variables.
-* default-justification:                 Filling.
-* default-major-mode:                    Auto Major Mode.
-* default-menubar:                       Menubar.
-* default-minibuffer-frame:              Minibuffers and Frames.
-* default-modeline-format:               Modeline Variables.
-* default-popup-menu:                    Pop-Up Menus.
-* default-select-frame-hook:             Raising and Lowering.
-* default-text-properties:               Examining Properties.
-* default-toolbar:                       Specifying the Toolbar.
-* default-toolbar-height:                Other Toolbar Variables.
-* default-toolbar-position:              Specifying the Toolbar.
-* default-toolbar-visible-p:             Other Toolbar Variables.
-* default-toolbar-width:                 Other Toolbar Variables.
-* default-truncate-lines:                Truncation.
-* default-value:                         Default Value.
-* default-x-device:                      Resources.
-* default.el:                            Start-up Summary.
-* defconst <1>:                          Domain Specification.
-* defconst:                              Defining Variables.
-* defcustom:                             Variable Definitions.
-* defgroup:                              Group Definitions.
-* define-abbrev:                         Defining Abbrevs.
-* define-abbrev-table:                   Abbrev Tables.
-* define-derived-mode:                   Derived Modes.
-* define-error:                          Error Symbols.
-* define-function:                       Defining Functions.
-* define-key:                            Changing Key Bindings.
-* define-logical-name:                   Changing File Attributes.
-* define-obsolete-function-alias:        Obsoleteness.
-* define-obsolete-variable-alias:        Obsoleteness.
-* define-prefix-command:                 Prefix Keys.
-* define-specifier-tag:                  Specifier Tag Functions.
-* defining a function:                   Defining Functions.
-* defining commands:                     Defining Commands.
-* defining-kbd-macro:                    Keyboard Macros.
-* definition of a symbol:                Definitions.
-* defmacro:                              Defining Macros.
-* defsubst:                              Inline Functions.
-* defun:                                 Defining Functions.
-* defun-prompt-regexp:                   List Motion.
-* defvar <1>:                            Domain Specification.
-* defvar:                                Defining Variables.
-* defvaralias:                           Variable Aliases.
-* deiconify-frame:                       Visibility of Frames.
-* delete:                                Sets And Lists.
-* delete previous char:                  Deletion.
-* delete-annotation:                     Annotation Primitives.
-* delete-auto-save-file-if-necessary:    Auto-Saving.
-* delete-auto-save-files:                Auto-Saving.
-* delete-backward-char:                  Deletion.
-* delete-blank-lines:                    User-Level Deletion.
-* delete-char:                           Deletion.
-* delete-device:                         Connecting to a Console or Device.
-* delete-device-hook:                    Connecting to a Console or Device.
-* delete-directory:                      Create/Delete Dirs.
-* delete-exited-processes:               Deleting Processes.
-* delete-extent:                         Creating and Modifying Extents.
-* delete-file:                           Changing File Attributes.
-* delete-frame:                          Deleting Frames.
-* delete-frame-hook:                     Frame Hooks.
-* delete-horizontal-space:               User-Level Deletion.
-* delete-indentation:                    User-Level Deletion.
-* delete-menu-item:                      Modifying Menus.
-* delete-old-versions:                   Numbered Backups.
-* delete-other-windows:                  Deleting Windows.
-* delete-process:                        Deleting Processes.
-* delete-region:                         Deletion.
-* delete-to-left-margin:                 Margins.
-* delete-window:                         Deleting Windows.
-* delete-windows-on:                     Deleting Windows.
-* deleting files:                        Changing File Attributes.
-* deleting processes:                    Deleting Processes.
-* deleting whitespace:                   User-Level Deletion.
-* deleting windows:                      Deleting Windows.
-* deletion of elements:                  Sets And Lists.
-* deletion of frames:                    Deleting Frames.
-* deletion vs killing:                   Deletion.
-* delq:                                  Sets And Lists.
-* demibold:                              Font Instance Characteristics.
-* describe-bindings:                     Scanning Keymaps.
-* describe-bindings-internal:            Scanning Keymaps.
-* describe-buffer-case-table:            Case Tables.
-* describe-mode:                         Mode Help.
-* describe-prefix-bindings:              Help Functions.
-* describe-tooltalk-message:             Elisp Interface for Receiving Messages.
-* description for interactive codes:     Interactive Codes.
-* description format:                    Format of Descriptions.
-* deselect-frame-hook:                   Frame Hooks.
-* destroy-tooltalk-message:              Elisp Interface for Sending Messages.
-* destroy-tooltalk-pattern:              Elisp Interface for Receiving Messages.
-* destructive-alist-to-plist:            Converting Plists To/From Alists.
-* destructive-plist-to-alist:            Converting Plists To/From Alists.
-* detach-extent:                         Detached Extents.
-* detached extent:                       Detached Extents.
-* detect-coding-region:                  Detection of Textual Encoding.
-* device-baud-rate <1>:                  Terminal Output.
-* device-baud-rate:                      Console and Device I/O.
-* device-class:                          Console Types and Device Classes.
-* device-frame-list <1>:                 Basic Device Functions.
-* device-frame-list:                     Finding All Frames.
-* device-list:                           Basic Device Functions.
-* device-live-p:                         Connecting to a Console or Device.
-* device-matches-specifier-tag-set-p:    Specifier Tag Functions.
-* device-matching-specifier-tag-list:    Specifier Tag Functions.
-* device-or-frame-p:                     Basic Device Functions.
-* device-or-frame-type:                  Console Types and Device Classes.
-* device-type:                           Console Types and Device Classes.
-* device-x-display:                      Connecting to a Console or Device.
-* devicep:                               Consoles and Devices.
-* devices:                               Consoles and Devices.
-* dgettext:                              Level 3 Primitives.
-* diagrams, boxed, for lists:            Cons Cell Type.
-* dialog box:                            Dialog Boxes.
-* digit-argument:                        Prefix Command Arguments.
-* ding:                                  Beeping.
-* directory name:                        Directory Names.
-* directory name abbreviation:           Directory Names.
-* directory part (of file name):         File Name Components.
-* directory-abbrev-alist:                Directory Names.
-* directory-file-name:                   Directory Names.
-* directory-files:                       Contents of Directories.
-* directory-oriented functions:          Contents of Directories.
-* dired-kept-versions:                   Numbered Backups.
-* dired-mode-map:                        Standard Keymaps.
-* disable undo:                          Maintaining Undo.
-* disable-command:                       Disabling Commands.
-* disable-menu-item:                     Modifying Menus.
-* disable-timeout:                       Timers.
-* disabled:                              Disabling Commands.
-* disabled command:                      Disabling Commands.
-* disabled-command-hook:                 Disabling Commands.
-* disassemble:                           Disassembly.
-* disassembled byte-code:                Disassembly.
-* discard input:                         Peeking and Discarding.
-* discard-input:                         Peeking and Discarding.
-* dispatch-event:                        Dispatching an Event.
-* dispatching an event:                  Dispatching an Event.
-* display columns:                       Size and Position.
-* display lines:                         Size and Position.
-* display order:                         Extent Endpoints.
-* display table:                         Display Tables.
-* display update:                        Refresh Screen.
-* display-buffer:                        Choosing Window.
-* display-buffer-function:               Choosing Window.
-* display-completion-list:               Completion Commands.
-* display-error:                         Processing of Errors.
-* display-message:                       The Echo Area.
-* display-warning:                       Warnings.
-* display-warning-minimum-level:         Warnings.
-* display-warning-suppressed-classes:    Warnings.
-* displaying a buffer:                   Displaying Buffers.
-* do-auto-save:                          Auto-Saving.
-* DOC (documentation) file:              Documentation Basics.
-* doc-directory:                         Accessing Documentation.
-* documentation:                         Accessing Documentation.
-* documentation conventions:             Documentation Basics.
-* documentation for major mode:          Mode Help.
-* documentation notation:                Evaluation Notation.
-* documentation of function:             Function Documentation.
-* documentation strings:                 Documentation.
-* documentation, keys in:                Keys in Documentation.
-* documentation-property:                Accessing Documentation.
-* domain:                                Level 3 Primitives.
-* domain (in a specifier):               Specifiers In-Depth.
-* domain-of:                             Level 3 Primitives.
-* dotted lists (Edebug):                 Specification List.
-* dotted pair notation:                  Dotted Pair Notation.
-* double-quote in strings:               String Type.
-* down-list:                             List Motion.
-* downcase:                              Character Case.
-* downcase-region:                       Case Changes.
-* downcase-word:                         Case Changes.
-* downcasing in lookup-key:              Key Sequence Input.
-* drag:                                  Drag Interface.
-* drag and drop:                         Drag and Drop.
-* Drag API:                              Drag Interface.
-* dribble file:                          Recording Input.
-* drop:                                  Drop Interface.
-* Drop API:                              Drop Interface.
-* dump-emacs:                            Building XEmacs.
-* duplicable extent:                     Duplicable Extents.
-* dynamic loading of documentation:      Docs and Compilation.
-* dynamic loading of functions:          Dynamic Loading.
-* dynamic scoping:                       Variable Scoping.
-* echo area:                             The Echo Area.
-* echo-keystrokes <1>:                   The Echo Area.
-* echo-keystrokes:                       Command Loop Info.
-* edebug:                                Embedded Breakpoints.
-* Edebug:                                Edebug.
-* Edebug execution modes:                Edebug Execution Modes.
-* Edebug mode:                           Edebug.
-* Edebug specification list:             Specification List.
-* edebug-`:                              Debugging Backquote.
-* edebug-all-defs <1>:                   Edebug Options.
-* edebug-all-defs:                       Instrumenting.
-* edebug-all-forms <1>:                  Edebug Options.
-* edebug-all-forms:                      Instrumenting.
-* edebug-continue-kbd-macro:             Edebug Options.
-* edebug-display-freq-count:             Coverage Testing.
-* edebug-eval-top-level-form:            Instrumenting.
-* edebug-global-break-condition <1>:     Edebug Options.
-* edebug-global-break-condition:         Global Break Condition.
-* edebug-initial-mode:                   Edebug Options.
-* edebug-on-error <1>:                   Edebug Options.
-* edebug-on-error:                       Trapping Errors.
-* edebug-on-quit <1>:                    Edebug Options.
-* edebug-on-quit:                        Trapping Errors.
-* edebug-print-circle <1>:               Edebug Options.
-* edebug-print-circle:                   Printing in Edebug.
-* edebug-print-length <1>:               Edebug Options.
-* edebug-print-length:                   Printing in Edebug.
-* edebug-print-level <1>:                Edebug Options.
-* edebug-print-level:                    Printing in Edebug.
-* edebug-print-trace-after <1>:          Edebug Options.
-* edebug-print-trace-after:              Tracing.
-* edebug-print-trace-before <1>:         Edebug Options.
-* edebug-print-trace-before:             Tracing.
-* edebug-save-displayed-buffer-points <1>: Edebug Options.
-* edebug-save-displayed-buffer-points:   Edebug Display Update.
-* edebug-save-windows <1>:               Edebug Options.
-* edebug-save-windows:                   Edebug Display Update.
-* edebug-set-global-break-condition:     Global Break Condition.
-* edebug-setup-hook:                     Edebug Options.
-* edebug-test-coverage:                  Edebug Options.
-* edebug-trace <1>:                      Edebug Options.
-* edebug-trace:                          Tracing.
-* edebug-tracing:                        Tracing.
-* edebug-unwrap:                         Specification List.
-* edebug-unwrap-results <1>:             Edebug Options.
-* edebug-unwrap-results:                 Debugging Backquote.
-* edit-abbrevs-map:                      Standard Keymaps.
-* edit-and-eval-command:                 Object from Minibuffer.
-* edit-menu-filter:                      Menu Filters.
-* edit-tab-stops-map:                    Standard Keymaps.
-* editing types:                         Editing Types.
-* editor command loop:                   Command Loop.
-* eighth:                                List Elements.
-* electric-buffer-menu-mode-map:         Standard Keymaps.
-* electric-future-map:                   A Sample Variable Description.
-* electric-history-map:                  Standard Keymaps.
-* element (of list):                     Lists.
-* elements of sequences:                 Sequence Functions.
-* elt:                                   Sequence Functions.
-* emacs-build-time:                      Building XEmacs.
-* emacs-lisp-mode-map:                   Standard Keymaps.
-* emacs-lisp-mode-syntax-table:          Standard Syntax Tables.
-* emacs-major-version:                   Building XEmacs.
-* emacs-minor-version:                   Building XEmacs.
-* emacs-pid:                             System Environment.
-* emacs-version:                         Building XEmacs.
-* EMACSLOADPATH environment variable:    How Programs Do Loading.
-* embedded breakpoints:                  Embedded Breakpoints.
-* empty list:                            Cons Cell Type.
-* enable-command:                        Disabling Commands.
-* enable-flow-control:                   Flow Control.
-* enable-flow-control-on:                Flow Control.
-* enable-local-eval:                     Auto Major Mode.
-* enable-local-variables:                Auto Major Mode.
-* enable-menu-item:                      Modifying Menus.
-* enable-recursive-minibuffers:          Minibuffer Misc.
-* encode-big5-char:                      Big5 and Shift-JIS Functions.
-* encode-coding-region:                  Encoding and Decoding Text.
-* encode-shift-jis-char:                 Big5 and Shift-JIS Functions.
-* encode-time:                           Time Conversion.
-* encoding file formats:                 Format Conversion.
-* end of buffer marker:                  Creating Markers.
-* end-of-buffer:                         Buffer End Motion.
-* end-of-defun:                          List Motion.
-* end-of-file:                           Input Functions.
-* end-of-line:                           Text Lines.
-* enlarge-window:                        Resizing Windows.
-* enlarge-window-horizontally:           Resizing Windows.
-* enlarge-window-pixels:                 Resizing Windows.
-* enqueue-eval-event:                    Reading One Event.
-* environment:                           Intro Eval.
-* environment variable access:           System Environment.
-* environment variables, subprocesses:   Subprocess Creation.
-* eobp:                                  Near Point.
-* eolp:                                  Near Point.
-* eq:                                    Equality Predicates.
-* equal:                                 Equality Predicates.
-* equality:                              Equality Predicates.
-* erase-buffer:                          Deletion.
-* error:                                 Signaling Errors.
-* error cleanup:                         Cleanups.
-* error debugging:                       Error Debugging.
-* error display:                         The Echo Area.
-* error handler:                         Handling Errors.
-* error in debug:                        Invoking the Debugger.
-* error message notation:                Error Messages.
-* error name:                            Error Symbols.
-* error symbol:                          Error Symbols.
-* error-conditions:                      Error Symbols.
-* error-message-string:                  Processing of Errors.
-* errors:                                Errors.
-* esc-map:                               Prefix Keys.
-* ESC-prefix:                            Prefix Keys.
-* escape <1>:                            Syntax Class Table.
-* escape:                                Character Type.
-* escape characters:                     Output Variables.
-* escape characters in printing:         Output Functions.
-* escape sequence:                       Character Type.
-* eval:                                  Eval.
-* eval, and debugging:                   Internals of Debugger.
-* eval-and-compile:                      Eval During Compile.
-* eval-buffer:                           Eval.
-* eval-current-buffer (Edebug):          Instrumenting.
-* eval-defun (Edebug):                   Instrumenting.
-* eval-event-p:                          Event Predicates.
-* eval-expression (Edebug):              Instrumenting.
-* eval-minibuffer:                       Object from Minibuffer.
-* eval-region:                           Eval.
-* eval-region (Edebug):                  Instrumenting.
-* eval-when-compile:                     Eval During Compile.
-* evaluated expression argument:         Interactive Codes.
-* evaluation:                            Evaluation.
-* evaluation error:                      Local Variables.
-* evaluation list (Edebug):              Eval List.
-* evaluation notation:                   Evaluation Notation.
-* evaluation of buffer contents:         Eval.
-* event printing:                        Describing Characters.
-* event-buffer:                          Window-Level Event Position Info.
-* event-button:                          Accessing Other Event Info.
-* event-closest-point:                   Event Text Position Info.
-* event-device:                          Accessing Other Event Info.
-* event-frame:                           Frame-Level Event Position Info.
-* event-function:                        Accessing Other Event Info.
-* event-glyph-extent:                    Event Glyph Position Info.
-* event-glyph-x-pixel:                   Event Glyph Position Info.
-* event-glyph-y-pixel:                   Event Glyph Position Info.
-* event-key:                             Accessing Other Event Info.
-* event-live-p:                          Event Predicates.
-* event-matches-key-specifier-p:         Key Sequences.
-* event-modifier-bits:                   Accessing Other Event Info.
-* event-modifiers:                       Accessing Other Event Info.
-* event-object:                          Accessing Other Event Info.
-* event-over-border-p:                   Other Event Position Info.
-* event-over-glyph-p:                    Event Glyph Position Info.
-* event-over-modeline-p:                 Event Text Position Info.
-* event-over-text-area-p:                Event Text Position Info.
-* event-over-toolbar-p:                  Event Toolbar Position Info.
-* event-point:                           Event Text Position Info.
-* event-process:                         Accessing Other Event Info.
-* event-timestamp:                       Accessing Other Event Info.
-* event-to-character:                    Converting Events.
-* event-toolbar-button:                  Event Toolbar Position Info.
-* event-type:                            Event Contents.
-* event-window:                          Window-Level Event Position Info.
-* event-window-x-pixel:                  Window-Level Event Position Info.
-* event-window-y-pixel:                  Window-Level Event Position Info.
-* event-x:                               Event Text Position Info.
-* event-x-pixel:                         Frame-Level Event Position Info.
-* event-y:                               Event Text Position Info.
-* event-y-pixel:                         Frame-Level Event Position Info.
-* eventp:                                Events.
-* events:                                Events.
-* events-to-keys:                        Converting Events.
-* examining windows:                     Buffers and Windows.
-* examples of using interactive:         Interactive Examples.
-* exchange-point-and-mark:               The Mark.
-* excursion:                             Excursions.
-* exec-directory:                        Subprocess Creation.
-* exec-path:                             Subprocess Creation.
-* execute program:                       Subprocess Creation.
-* execute with prefix argument:          Interactive Call.
-* execute-extended-command:              Interactive Call.
-* execute-kbd-macro:                     Keyboard Macros.
-* executing-macro:                       Keyboard Macros.
-* execution speed:                       Compilation Tips.
-* exit:                                  Recursive Editing.
-* exit recursive editing:                Recursive Editing.
-* exit-minibuffer:                       Minibuffer Misc.
-* exit-recursive-edit:                   Recursive Editing.
-* exiting XEmacs:                        Getting Out.
-* exp:                                   Math Functions.
-* expand-abbrev:                         Abbrev Expansion.
-* expand-file-name:                      File Name Expansion.
-* expansion of file names:               File Name Expansion.
-* expansion of macros:                   Expansion.
-* expression:                            Intro Eval.
-* expression prefix:                     Syntax Class Table.
-* expt:                                  Math Functions.
-* extended-command-history:              Minibuffer History.
-* extent <1>:                            Extents.
-* extent:                                Variable Scoping.
-* extent children:                       Extent Parents.
-* extent end position:                   Extent Endpoints.
-* extent endpoint:                       Extent Endpoints.
-* extent order:                          Extent Endpoints.
-* extent parent:                         Extent Parents.
-* extent priority:                       Intro to Extents.
-* extent property:                       Extent Properties.
-* extent replica:                        Duplicable Extents.
-* extent start position:                 Extent Endpoints.
-* extent, duplicable:                    Duplicable Extents.
-* extent, unique:                        Duplicable Extents.
-* extent-at:                             Finding Extents.
-* extent-begin-glyph:                    Extent Properties.
-* extent-begin-glyph-layout:             Extent Properties.
-* extent-children:                       Extent Parents.
-* extent-descendants:                    Extent Parents.
-* extent-detached-p:                     Detached Extents.
-* extent-end-glyph:                      Extent Properties.
-* extent-end-glyph-layout:               Extent Properties.
-* extent-end-position:                   Extent Endpoints.
-* extent-face:                           Extent Properties.
-* extent-in-region-p:                    Mapping Over Extents.
-* extent-keymap:                         Extent Properties.
-* extent-length:                         Extent Endpoints.
-* extent-list:                           Finding Extents.
-* extent-live-p:                         Creating and Modifying Extents.
-* extent-mouse-face:                     Extent Properties.
-* extent-object:                         Creating and Modifying Extents.
-* extent-parent:                         Extent Parents.
-* extent-priority:                       Extent Properties.
-* extent-properties:                     Extent Properties.
-* extent-property:                       Extent Properties.
-* extent-start-position:                 Extent Endpoints.
-* extentp:                               Extents.
-* extents, locating:                     Finding Extents.
-* extents, mapping:                      Mapping Over Extents.
-* face type:                             Face Type.
-* face-background:                       Face Convenience Functions.
-* face-background-instance:              Face Convenience Functions.
-* face-background-pixmap:                Face Convenience Functions.
-* face-background-pixmap-instance:       Face Convenience Functions.
-* face-boolean-specifier-p:              Specifier Types.
-* face-differs-from-default-p:           Other Face Display Functions.
-* face-equal:                            Other Face Display Functions.
-* face-font:                             Face Convenience Functions.
-* face-font-instance:                    Face Convenience Functions.
-* face-font-name:                        Face Convenience Functions.
-* face-foreground:                       Face Convenience Functions.
-* face-foreground-instance:              Face Convenience Functions.
-* face-list:                             Basic Face Functions.
-* face-property:                         Face Properties.
-* face-property-instance:                Face Properties.
-* face-underline-p:                      Face Convenience Functions.
-* facep:                                 Basic Face Functions.
-* faces:                                 Faces and Window-System Objects.
-* fallback (in a specifier):             Specifier Instancing.
-* false:                                 nil and t.
-* fboundp:                               Function Cells.
-* fceiling:                              Rounding Operations.
-* featurep:                              Named Features.
-* features:                              Named Features.
-* fetch-bytecode:                        Dynamic Loading.
-* ffloor:                                Rounding Operations.
-* field width:                           Formatting Strings.
-* fifth:                                 List Elements.
-* file accessibility:                    Testing Accessibility.
-* file age:                              Testing Accessibility.
-* file attributes:                       File Attributes.
-* file format conversion:                Format Conversion.
-* file hard link:                        Changing File Attributes.
-* file locks:                            File Locks.
-* file mode specification error:         Auto Major Mode.
-* file modes and MS-DOS:                 Changing File Attributes.
-* file modification time:                Testing Accessibility.
-* file name completion subroutines:      File Name Completion.
-* file name of buffer:                   Buffer File Name.
-* file name of directory:                Directory Names.
-* file names:                            File Names.
-* file names in directory:               Contents of Directories.
-* file open error:                       Subroutines of Visiting.
-* file symbolic links:                   Kinds of Files.
-* file types on MS-DOS:                  Files and MS-DOS.
-* file with multiple names:              Changing File Attributes.
-* file-accessible-directory-p:           Testing Accessibility.
-* file-already-exists:                   Changing File Attributes.
-* file-attributes:                       File Attributes.
-* file-directory-p:                      Kinds of Files.
-* file-error:                            How Programs Do Loading.
-* file-executable-p:                     Testing Accessibility.
-* file-exists-p:                         Testing Accessibility.
-* file-local-copy:                       Magic File Names.
-* file-locked:                           File Locks.
-* file-locked-p:                         File Locks.
-* file-menu-filter:                      Menu Filters.
-* file-modes:                            File Attributes.
-* file-name-absolute-p:                  Relative File Names.
-* file-name-all-completions:             File Name Completion.
-* file-name-as-directory:                Directory Names.
-* file-name-buffer-file-type-alist:      Files and MS-DOS.
-* file-name-completion:                  File Name Completion.
-* file-name-directory:                   File Name Components.
-* file-name-history:                     Minibuffer History.
-* file-name-nondirectory:                File Name Components.
-* file-name-sans-extension:              File Name Components.
-* file-name-sans-versions:               File Name Components.
-* file-newer-than-file-p:                Testing Accessibility.
-* file-newest-backup:                    Backup Names.
-* file-nlinks:                           File Attributes.
-* file-ownership-preserved-p:            Testing Accessibility.
-* file-precious-flag:                    Saving Buffers.
-* file-readable-p:                       Testing Accessibility.
-* file-regular-p:                        Kinds of Files.
-* file-relative-name:                    File Name Expansion.
-* file-supersession:                     Modification Time.
-* file-symlink-p:                        Kinds of Files.
-* file-truename:                         Truenames.
-* file-writable-p:                       Testing Accessibility.
-* fill-column:                           Margins.
-* fill-individual-paragraphs:            Filling.
-* fill-individual-varying-indent:        Filling.
-* fill-paragraph:                        Filling.
-* fill-paragraph-function:               Filling.
-* fill-prefix:                           Margins.
-* fill-region:                           Filling.
-* fill-region-as-paragraph:              Filling.
-* fillarray:                             Array Functions.
-* filling a paragraph:                   Filling.
-* filling, automatic:                    Auto Filling.
-* filling, explicit:                     Filling.
-* filter function:                       Filter Functions.
-* find-backup-file-name:                 Backup Names.
-* find-buffer-file-type:                 Files and MS-DOS.
-* find-charset:                          Basic Charset Functions.
-* find-charset-region:                   MULE Characters.
-* find-charset-string:                   MULE Characters.
-* find-coding-system:                    Basic Coding System Functions.
-* find-file:                             Visiting Functions.
-* find-file-binary:                      Files and MS-DOS.
-* find-file-hooks:                       Visiting Functions.
-* find-file-name-handler:                Magic File Names.
-* find-file-noselect:                    Visiting Functions.
-* find-file-not-found-hooks:             Visiting Functions.
-* find-file-other-window:                Visiting Functions.
-* find-file-read-only:                   Visiting Functions.
-* find-file-text:                        Files and MS-DOS.
-* find-menu-item:                        Modifying Menus.
-* finding files:                         Visiting Files.
-* finding windows:                       Selecting Windows.
-* first:                                 List Elements.
-* first-change-hook:                     Change Hooks.
-* fixup-whitespace:                      User-Level Deletion.
-* float:                                 Numeric Conversions.
-* float-output-format:                   Output Variables.
-* floating-point numbers, printing:      Output Variables.
-* floatp:                                Predicates on Numbers.
-* floor:                                 Numeric Conversions.
-* flow control characters:               Flow Control.
-* flush input:                           Peeking and Discarding.
-* fmakunbound:                           Function Cells.
-* focus-frame:                           Input Focus.
-* following-char:                        Near Point.
-* font instance characteristics:         Font Instance Characteristics.
-* font instance name:                    Font Instance Names.
-* font instance size:                    Font Instance Size.
-* font instance type:                    Font Instance Type.
-* font-instance-name:                    Font Instance Names.
-* font-instance-p:                       Font Instances.
-* font-instance-properties:              Font Instance Characteristics.
-* font-instance-truename:                Font Instance Names.
-* font-name:                             Font Convenience Functions.
-* font-properties:                       Font Convenience Functions.
-* font-specifier-p <1>:                  Font Specifiers.
-* font-specifier-p:                      Specifier Types.
-* font-truename:                         Font Convenience Functions.
-* fonts <1>:                             Fonts.
-* fonts:                                 Some Terms.
-* fonts available:                       Font Instance Names.
-* foo:                                   A Sample Function Description.
-* for:                                   Argument Evaluation.
-* force-cursor-redisplay:                Refresh Screen.
-* force-highlight-extent:                Extents and Events.
-* forcing redisplay:                     Waiting.
-* format:                                Formatting Strings.
-* format definition:                     Format Conversion.
-* format of keymaps:                     Format of Keymaps.
-* format of menus:                       Menu Format.
-* format of the menubar:                 Menubar Format.
-* format precision:                      Formatting Strings.
-* format specification:                  Formatting Strings.
-* format-alist:                          Format Conversion.
-* format-buffers-menu-line:              Buffers Menu.
-* format-find-file:                      Format Conversion.
-* format-insert-file:                    Format Conversion.
-* format-time-string:                    Time Conversion.
-* format-write-file:                     Format Conversion.
-* formatting strings:                    Formatting Strings.
-* formfeed:                              Character Type.
-* forms:                                 Intro Eval.
-* forward-char:                          Character Motion.
-* forward-comment:                       Parsing Expressions.
-* forward-line:                          Text Lines.
-* forward-list:                          List Motion.
-* forward-sexp:                          List Motion.
-* forward-to-indentation:                Motion by Indent.
-* forward-word:                          Word Motion.
-* fourth:                                List Elements.
-* frame:                                 Frames.
-* frame configuration:                   Frame Configurations.
-* frame hooks:                           Frame Hooks.
-* frame name:                            Frame Name.
-* frame of terminal:                     Basic Windows.
-* frame position:                        Size and Position.
-* frame size:                            Size and Position.
-* frame visibility:                      Visibility of Frames.
-* frame-device:                          Basic Device Functions.
-* frame-height:                          Size and Position.
-* frame-icon-title-format:               Frame Titles.
-* frame-iconified-p:                     Visibility of Frames.
-* frame-list:                            Finding All Frames.
-* frame-live-p:                          Deleting Frames.
-* frame-name:                            Frame Name.
-* frame-pixel-height:                    Size and Position.
-* frame-pixel-width:                     Size and Position.
-* frame-properties:                      Property Access.
-* frame-property:                        Property Access.
-* frame-root-window:                     Frames and Windows.
-* frame-selected-window:                 Frames and Windows.
-* frame-title-format:                    Frame Titles.
-* frame-top-window:                      Frames and Windows.
-* frame-totally-visible-p:               Visibility of Frames.
-* frame-visible-p:                       Visibility of Frames.
-* frame-width:                           Size and Position.
-* framep:                                Frames.
-* free list:                             Garbage Collection.
-* frequency counts:                      Coverage Testing.
-* fround:                                Rounding Operations.
-* fset:                                  Function Cells.
-* ftp-login:                             Cleanups.
-* ftruncate:                             Rounding Operations.
-* funcall:                               Calling Functions.
-* funcall, and debugging:                Internals of Debugger.
-* function <1>:                          Anonymous Functions.
-* function:                              What Is a Function.
-* function call:                         Function Forms.
-* function call debugging:               Function Debugging.
-* function cell:                         Symbol Components.
-* function cell in autoload:             Autoload.
-* function definition:                   Function Names.
-* function descriptions:                 A Sample Function Description.
-* function form evaluation:              Function Forms.
-* function input stream:                 Input Streams.
-* function invocation:                   Calling Functions.
-* function name:                         Function Names.
-* function output stream:                Output Streams.
-* function quoting:                      Anonymous Functions.
-* function-interactive:                  Using Interactive.
-* function-key-map:                      Translating Input.
-* function-obsoleteness-doc:             Obsoleteness.
-* functionals:                           Calling Functions.
-* functions in modes:                    Major Mode Conventions.
-* functions, making them interactive:    Defining Commands.
-* Fundamental mode:                      Major Modes.
-* fundamental-mode:                      Auto Major Mode.
-* fundamental-mode-abbrev-table:         Standard Abbrev Tables.
-* garbage collector:                     Garbage Collection.
-* garbage-collect:                       Garbage Collection.
-* gc-cons-threshold:                     Garbage Collection.
-* gc-message:                            Garbage Collection.
-* gc-pointer-glyph <1>:                  Garbage Collection.
-* gc-pointer-glyph:                      Mouse Pointer.
-* generate-new-buffer:                   Creating Buffers.
-* generate-new-buffer-name:              Buffer Names.
-* generic-specifier-p:                   Specifier Types.
-* get:                                   Object Plists.
-* get-buffer:                            Buffer Names.
-* get-buffer-create:                     Creating Buffers.
-* get-buffer-process:                    Process Buffers.
-* get-buffer-window:                     Buffers and Windows.
-* get-char-property:                     Examining Properties.
-* get-char-table:                        Working With Char Tables.
-* get-charset:                           Basic Charset Functions.
-* get-coding-system:                     Basic Coding System Functions.
-* get-database:                          Working With a Database.
-* get-file-buffer:                       Buffer File Name.
-* get-largest-window:                    Selecting Windows.
-* get-lru-window:                        Selecting Windows.
-* get-process:                           Process Information.
-* get-range-char-table:                  Working With Char Tables.
-* get-range-table:                       Working With Range Tables.
-* get-register:                          Registers.
-* get-text-property:                     Examining Properties.
-* get-tooltalk-message-attribute:        Elisp Interface for Sending Messages.
-* getenv:                                System Environment.
-* getf:                                  Other Plists.
-* gethash:                               Working With Hash Tables.
-* gettext:                               Level 3 Primitives.
-* global binding:                        Local Variables.
-* global break condition:                Global Break Condition.
-* global keymap:                         Active Keymaps.
-* global mark ring:                      The Mark.
-* global variable:                       Global Variables.
-* global-abbrev-table:                   Standard Abbrev Tables.
-* global-key-binding:                    Functions for Key Lookup.
-* global-map:                            Active Keymaps.
-* global-mark-ring:                      The Mark.
-* global-mode-string:                    Modeline Variables.
-* global-popup-menu:                     Pop-Up Menus.
-* global-set-key:                        Key Binding Commands.
-* global-unset-key:                      Key Binding Commands.
-* glyph type:                            Glyph Type.
-* glyph-ascent:                          Glyph Dimensions.
-* glyph-baseline:                        Glyph Convenience Functions.
-* glyph-baseline-instance:               Glyph Convenience Functions.
-* glyph-contrib-p:                       Glyph Convenience Functions.
-* glyph-contrib-p-instance:              Glyph Convenience Functions.
-* glyph-descent:                         Glyph Dimensions.
-* glyph-face:                            Glyph Convenience Functions.
-* glyph-height:                          Glyph Dimensions.
-* glyph-image:                           Glyph Convenience Functions.
-* glyph-image-instance:                  Glyph Convenience Functions.
-* glyph-property:                        Glyph Properties.
-* glyph-property-instance:               Glyph Properties.
-* glyph-type:                            Glyph Types.
-* glyph-type-list:                       Glyph Types.
-* glyph-width:                           Glyph Dimensions.
-* glyphp:                                Glyphs.
-* glyphs:                                Glyphs.
-* goto-char:                             Character Motion.
-* goto-line:                             Text Lines.
-* gutter:                                Gutter.
-* gutter-buttons-captioned-p:            Other Gutter Variables.
-* gutter-make-button-list:               Gutter Descriptor Format.
-* gutter-specifier-p:                    Specifying a Gutter.
-* hack-local-variables:                  Auto Major Mode.
-* handling errors:                       Handling Errors.
-* hash notation:                         Printed Representation.
-* hash table:                            Hash Tables.
-* hash table type:                       Hash Table Type.
-* hash table, weak:                      Weak Hash Tables.
-* hash-table-count:                      Introduction to Hash Tables.
-* hash-table-p:                          Hash Tables.
-* hash-table-rehash-size:                Introduction to Hash Tables.
-* hash-table-rehash-threshold:           Introduction to Hash Tables.
-* hash-table-size:                       Introduction to Hash Tables.
-* hash-table-test:                       Introduction to Hash Tables.
-* hash-table-weakness:                   Introduction to Hash Tables.
-* hashing:                               Creating Symbols.
-* header comments:                       Library Headers.
-* help for major mode:                   Mode Help.
-* help-char:                             Help Functions.
-* help-command:                          Help Functions.
-* help-form:                             Help Functions.
-* help-map <1>:                          Standard Keymaps.
-* help-map:                              Help Functions.
-* Helper-describe-bindings:              Help Functions.
-* Helper-help:                           Help Functions.
-* Helper-help-map:                       Standard Keymaps.
-* hide-annotation:                       Annotation Properties.
-* highlight-extent:                      Extents and Events.
-* history list:                          Minibuffer History.
-* history of commands:                   Command History.
-* HOME environment variable:             Subprocess Creation.
-* hooks:                                 Hooks.
-* hooks for loading:                     Hooks for Loading.
-* hooks for text changes:                Change Hooks.
-* horizontal position:                   Columns.
-* horizontal scrolling:                  Horizontal Scrolling.
-* hscroll-glyph:                         Redisplay Glyphs.
-* icon-glyph-p:                          Glyph Types.
-* iconified frame:                       Visibility of Frames.
-* iconify-frame:                         Visibility of Frames.
-* identity:                              Calling Functions.
-* IEEE floating point:                   Float Basics.
-* if:                                    Conditionals.
-* ignore:                                Calling Functions.
-* ignored-local-variables:               Auto Major Mode.
-* image instance type:                   Image Instance Type.
-* image instance types:                  Image Instance Types.
-* image instances:                       Image Instances.
-* image instantiator conversion:         Image Instantiator Conversion.
-* image specifiers:                      Image Specifiers.
-* image-instance-background:             Image Instance Functions.
-* image-instance-depth:                  Image Instance Functions.
-* image-instance-file-name:              Image Instance Functions.
-* image-instance-foreground:             Image Instance Functions.
-* image-instance-height:                 Image Instance Functions.
-* image-instance-hotspot-x:              Image Instance Functions.
-* image-instance-hotspot-y:              Image Instance Functions.
-* image-instance-mask-file-name:         Image Instance Functions.
-* image-instance-name:                   Image Instance Functions.
-* image-instance-p:                      Image Instances.
-* image-instance-string:                 Image Instance Functions.
-* image-instance-type:                   Image Instance Types.
-* image-instance-type-list:              Image Instance Types.
-* image-instance-width:                  Image Instance Functions.
-* image-instantiator-format-list:        Image Specifiers.
-* image-specifier-p <1>:                 Image Specifiers.
-* image-specifier-p:                     Specifier Types.
-* implicit progn:                        Sequencing.
-* inc:                                   Simple Macro.
-* indent-according-to-mode:              Mode-Specific Indent.
-* indent-code-rigidly:                   Region Indent.
-* indent-for-tab-command:                Mode-Specific Indent.
-* indent-line-function:                  Mode-Specific Indent.
-* indent-region:                         Region Indent.
-* indent-region-function:                Region Indent.
-* indent-relative:                       Relative Indent.
-* indent-relative-maybe:                 Relative Indent.
-* indent-rigidly:                        Region Indent.
-* indent-tabs-mode:                      Primitive Indent.
-* indent-to:                             Primitive Indent.
-* indent-to-left-margin:                 Margins.
-* indentation:                           Indentation.
-* indenting with parentheses:            Parsing Expressions.
-* indirect buffers:                      Indirect Buffers.
-* indirect specifications:               Specification List.
-* indirect variables:                    Variable Aliases.
-* indirect-function:                     Function Indirection.
-* indirect-variable:                     Variable Aliases.
-* indirection:                           Function Indirection.
-* infinite loops:                        Infinite Loops.
-* infinite recursion:                    Local Variables.
-* infinity:                              Float Basics.
-* Info-edit-map:                         Standard Keymaps.
-* Info-minibuffer-history:               Minibuffer History.
-* Info-mode-map:                         Standard Keymaps.
-* inherit:                               Syntax Class Table.
-* inheriting a keymap's bindings:        Inheritance and Keymaps.
-* inhibit-default-init:                  Init File.
-* inhibit-file-name-handlers:            Magic File Names.
-* inhibit-file-name-operation:           Magic File Names.
-* inhibit-quit:                          Quitting.
-* inhibit-read-only:                     Read Only Buffers.
-* inhibit-startup-echo-area-message:     Start-up Summary.
-* inhibit-startup-message:               Start-up Summary.
-* init file:                             Init File.
-* initial-frame-plist:                   Initial Properties.
-* initial-gutter-spec:                   Other Gutter Variables.
-* initial-major-mode:                    Auto Major Mode.
-* initial-toolbar-spec:                  Other Toolbar Variables.
-* initialization:                        Start-up Summary.
-* inline functions:                      Inline Functions.
-* innermost containing parentheses:      Parsing Expressions.
-* input events:                          Events.
-* input focus:                           Input Focus.
-* input modes:                           Input Modes.
-* input stream:                          Input Streams.
-* input-pending-p:                       Peeking and Discarding.
-* insert:                                Insertion.
-* insert-abbrev-table-description:       Abbrev Tables.
-* insert-before-markers:                 Insertion.
-* insert-buffer:                         Commands for Insertion.
-* insert-buffer-substring:               Insertion.
-* insert-char:                           Insertion.
-* insert-default-directory:              Reading File Names.
-* insert-directory:                      Contents of Directories.
-* insert-directory-program:              Contents of Directories.
-* insert-extent:                         Detached Extents.
-* insert-file-contents:                  Reading from Files.
-* insert-register:                       Registers.
-* insert-string:                         Insertion.
-* inserting killed text:                 Yank Commands.
-* insertion before point:                Insertion.
-* insertion of text:                     Insertion.
-* inside comment:                        Parsing Expressions.
-* inside margin:                         Annotation Basics.
-* inside string:                         Parsing Expressions.
-* inst-list (in a specifier):            Specifiers In-Depth.
-* inst-pair (in a specifier):            Specifiers In-Depth.
-* installation-directory:                System Environment.
-* instance (in a specifier):             Specifiers In-Depth.
-* instancing (in a specifier):           Specifiers In-Depth.
-* instantiator (in a specifier):         Specifiers In-Depth.
-* int-char:                              Character Codes.
-* int-to-string:                         String Conversion.
-* integer to decimal:                    String Conversion.
-* integer to hexadecimal:                Formatting Strings.
-* integer to octal:                      Formatting Strings.
-* integer to string:                     String Conversion.
-* integer-char-or-marker-p:              Predicates on Markers.
-* integer-or-char-p:                     Predicates for Characters.
-* integer-or-marker-p:                   Predicates on Markers.
-* integer-specifier-p:                   Specifier Types.
-* integerp:                              Predicates on Numbers.
-* integers:                              Numbers.
-* interactive:                           Using Interactive.
-* interactive call:                      Interactive Call.
-* interactive code description:          Interactive Codes.
-* interactive commands (Edebug):         Instrumenting.
-* interactive completion:                Interactive Codes.
-* interactive function:                  Defining Commands.
-* interactive, examples of using:        Interactive Examples.
-* interactive-p:                         Interactive Call.
-* intern:                                Creating Symbols.
-* intern-soft:                           Creating Symbols.
-* internal-doc-file-name:                Accessing Documentation.
-* interning:                             Creating Symbols.
-* interpreter:                           Evaluation.
-* interpreter-mode-alist:                Auto Major Mode.
-* interprogram-cut-function:             Low-Level Kill Ring.
-* interprogram-paste-function:           Low-Level Kill Ring.
-* interrupt-process:                     Signals to Processes.
-* invalid function:                      Function Indirection.
-* invalid prefix key error:              Changing Key Bindings.
-* invalid-function:                      Function Indirection.
-* invalid-read-syntax:                   Printed Representation.
-* invalid-regexp:                        Syntax of Regexps.
-* invert-face:                           Other Face Display Functions.
-* invisible frame:                       Visibility of Frames.
-* invisible text:                        Invisible Text.
-* invisible-text-glyph:                  Redisplay Glyphs.
-* invocation-directory:                  System Environment.
-* invocation-name:                       System Environment.
-* isearch-mode-map:                      Standard Keymaps.
-* ISO Latin 1:                           Case Tables.
-* ISO Latin-1 characters (input):        Translating Input.
-* iso-syntax:                            Case Tables.
-* iso-transl:                            Translating Input.
-* italic:                                Font Instance Characteristics.
-* iteration:                             Iteration.
-* itimer-edit-map:                       Standard Keymaps.
-* joining lists:                         Rearrangement.
-* just-one-space:                        User-Level Deletion.
-* justify-current-line:                  Filling.
-* kept-new-versions:                     Numbered Backups.
-* kept-old-versions:                     Numbered Backups.
-* key:                                   Keymap Terminology.
-* key binding:                           Keymap Terminology.
-* key lookup:                            Key Lookup.
-* key sequence:                          Key Sequence Input.
-* key sequence error:                    Changing Key Bindings.
-* key sequence input:                    Key Sequence Input.
-* key sequences:                         Key Sequences.
-* key translation function:              Translating Input.
-* key-binding:                           Functions for Key Lookup.
-* key-description:                       Describing Characters.
-* key-press-event-p:                     Event Predicates.
-* key-translation-map:                   Translating Input.
-* keyboard macro execution:              Interactive Call.
-* keyboard macro termination:            Beeping.
-* keyboard macros:                       Keyboard Macros.
-* keyboard macros (Edebug):              Edebug Execution Modes.
-* keyboard menu accelerators:            Menu Accelerators.
-* keyboard-quit:                         Quitting.
-* keymap:                                Keymaps.
-* keymap entry:                          Key Lookup.
-* keymap format:                         Format of Keymaps.
-* keymap in keymap:                      Key Lookup.
-* keymap inheritance:                    Inheritance and Keymaps.
-* keymap parent:                         Inheritance and Keymaps.
-* keymap-default-binding:                Inheritance and Keymaps.
-* keymap-fullness:                       Scanning Keymaps.
-* keymap-name:                           Creating Keymaps.
-* keymap-parents:                        Inheritance and Keymaps.
-* keymap-prompt:                         Other Keymap Functions.
-* keymapp:                               Format of Keymaps.
-* keymaps in modes:                      Major Mode Conventions.
-* keys in documentation strings:         Keys in Documentation.
-* keystroke:                             Keymap Terminology.
-* keystroke command:                     What Is a Function.
-* keywordp:                              Specification List.
-* kill command repetition:               Command Loop Info.
-* kill ring:                             The Kill Ring.
-* kill-all-local-variables:              Creating Buffer-Local.
-* kill-append:                           Low-Level Kill Ring.
-* kill-buffer:                           Killing Buffers.
-* kill-buffer-hook:                      Killing Buffers.
-* kill-buffer-query-functions:           Killing Buffers.
-* kill-emacs:                            Killing XEmacs.
-* kill-emacs-hook:                       Killing XEmacs.
-* kill-emacs-query-functions:            Killing XEmacs.
-* kill-local-variable:                   Creating Buffer-Local.
-* kill-new:                              Low-Level Kill Ring.
-* kill-process:                          Signals to Processes.
-* kill-region:                           Kill Functions.
-* kill-ring:                             Internals of Kill Ring.
-* kill-ring-max:                         Internals of Kill Ring.
-* kill-ring-yank-pointer:                Internals of Kill Ring.
-* killing buffers:                       Killing Buffers.
-* killing XEmacs:                        Killing XEmacs.
-* lambda expression:                     Lambda Expressions.
-* lambda expression in hook:             Hooks.
-* lambda in debug:                       Invoking the Debugger.
-* lambda in keymap:                      Key Lookup.
-* lambda list:                           Lambda Components.
-* lambda-list (Edebug):                  Specification List.
-* lambda-list-keywordp:                  Specification List.
-* last-abbrev:                           Abbrev Expansion.
-* last-abbrev-location:                  Abbrev Expansion.
-* last-abbrev-text:                      Abbrev Expansion.
-* last-command:                          Command Loop Info.
-* last-command-char:                     Command Loop Info.
-* last-command-event:                    Command Loop Info.
-* last-input-char:                       Peeking and Discarding.
-* last-input-event:                      Peeking and Discarding.
-* last-kbd-macro:                        Keyboard Macros.
-* Latin-1 character set (input):         Translating Input.
-* lax-plist-get:                         Working With Lax Plists.
-* lax-plist-member:                      Working With Lax Plists.
-* lax-plist-put:                         Working With Lax Plists.
-* lax-plist-remprop:                     Working With Lax Plists.
-* lax-plists-eq:                         Working With Lax Plists.
-* lax-plists-equal:                      Working With Lax Plists.
-* layout policy:                         Annotation Basics.
-* layout types:                          Annotation Basics.
-* lazy loading:                          Dynamic Loading.
-* LDAP:                                  LDAP Support.
-* ldap-close:                            Opening and Closing a LDAP Connection.
-* ldap-default-base:                     LDAP Variables.
-* ldap-default-host:                     LDAP Variables.
-* ldap-default-port:                     LDAP Variables.
-* ldap-host:                             The LDAP Lisp Object.
-* ldap-host-parameters-alist:            LDAP Variables.
-* ldap-live-p:                           The LDAP Lisp Object.
-* ldap-open:                             Opening and Closing a LDAP Connection.
-* ldap-search:                           The High-Level LDAP API.
-* ldap-search-internal:                  Searching on a LDAP Server (Low-level).
-* ldapp:                                 The LDAP Lisp Object.
-* left-gutter:                           Specifying a Gutter.
-* left-gutter-visible-p:                 Other Gutter Variables.
-* left-gutter-width:                     Other Gutter Variables.
-* left-margin:                           Margins.
-* left-margin-width:                     Margin Primitives.
-* left-toolbar:                          Specifying the Toolbar.
-* left-toolbar-visible-p:                Other Toolbar Variables.
-* left-toolbar-width:                    Other Toolbar Variables.
-* length:                                Sequence Functions.
-* let:                                   Local Variables.
-* let*:                                  Local Variables.
-* let-specifier:                         Adding Specifications.
-* lexical binding (Edebug):              Edebug Eval.
-* lexical comparison:                    Text Comparison.
-* library:                               Loading.
-* library compilation:                   Compilation Functions.
-* library header comments:               Library Headers.
-* line wrapping:                         Truncation.
-* lines:                                 Text Lines.
-* lines in region:                       Text Lines.
-* linking files:                         Changing File Attributes.
-* Lisp debugger:                         Debugger.
-* Lisp expression motion:                List Motion.
-* Lisp history:                          Lisp History.
-* Lisp library:                          Loading.
-* Lisp nesting error:                    Eval.
-* Lisp object:                           Lisp Data Types.
-* Lisp printer:                          Output Functions.
-* Lisp reader:                           Streams Intro.
-* lisp-interaction-mode-map:             Standard Keymaps.
-* lisp-mode-abbrev-table:                Standard Abbrev Tables.
-* lisp-mode-map:                         Standard Keymaps.
-* lisp-mode.el:                          Example Major Modes.
-* list <1>:                              Building Lists.
-* list:                                  Lists.
-* list elements:                         List Elements.
-* list form evaluation:                  Classifying Lists.
-* list in keymap:                        Key Lookup.
-* list length:                           Sequence Functions.
-* list motion:                           List Motion.
-* list structure:                        Cons Cells.
-* list-buffers:                          The Buffer List.
-* list-buffers-directory:                Buffer File Name.
-* list-fonts:                            Font Instance Names.
-* list-processes:                        Process Information.
-* listp:                                 List-related Predicates.
-* lists and cons cells:                  Cons Cells.
-* lists as sets:                         Sets And Lists.
-* lists represented as boxes:            Lists as Boxes.
-* literal evaluation:                    Self-Evaluating Forms.
-* lmessage:                              The Echo Area.
-* ln:                                    Changing File Attributes.
-* load:                                  How Programs Do Loading.
-* load error with require:               Named Features.
-* load errors:                           How Programs Do Loading.
-* load-average:                          System Environment.
-* load-default-sounds:                   Beeping.
-* load-history:                          Unloading.
-* load-ignore-elc-files:                 How Programs Do Loading.
-* load-in-progress:                      How Programs Do Loading.
-* load-path:                             How Programs Do Loading.
-* load-read-function:                    How Programs Do Loading.
-* load-sound-file:                       Beeping.
-* load-warn-when-source-newer:           How Programs Do Loading.
-* load-warn-when-source-only:            How Programs Do Loading.
-* loading:                               Loading.
-* loading hooks:                         Hooks for Loading.
-* loadup.el:                             Building XEmacs.
-* local binding:                         Local Variables.
-* local keymap:                          Active Keymaps.
-* local variables:                       Local Variables.
-* local-abbrev-table:                    Standard Abbrev Tables.
-* local-key-binding:                     Functions for Key Lookup.
-* local-set-key:                         Key Binding Commands.
-* local-unset-key:                       Key Binding Commands.
-* local-variable-p:                      Creating Buffer-Local.
-* local-write-file-hooks:                Saving Buffers.
-* locale (in a specifier):               Specifiers In-Depth.
-* locate-file:                           How Programs Do Loading.
-* locate-file-clear-hashing:             How Programs Do Loading.
-* lock-buffer:                           File Locks.
-* log:                                   Math Functions.
-* log-message-ignore-labels:             The Echo Area.
-* log-message-ignore-regexps:            The Echo Area.
-* log-message-max-size:                  The Echo Area.
-* log-warning-minimum-level:             Warnings.
-* log-warning-suppressed-classes:        Warnings.
-* log10:                                 Math Functions.
-* logand:                                Bitwise Operations.
-* logb:                                  Float Basics.
-* logical and:                           Bitwise Operations.
-* logical exclusive or:                  Bitwise Operations.
-* logical inclusive or:                  Bitwise Operations.
-* logical not:                           Bitwise Operations.
-* logical shift:                         Bitwise Operations.
-* logior:                                Bitwise Operations.
-* lognot:                                Bitwise Operations.
-* logxor:                                Bitwise Operations.
-* looking-at:                            Regexp Search.
-* lookup-key:                            Functions for Key Lookup.
-* loops, infinite:                       Infinite Loops.
-* lower case:                            Character Case.
-* lower-frame:                           Raising and Lowering.
-* lowering a frame:                      Raising and Lowering.
-* lsh:                                   Bitwise Operations.
-* lwarn:                                 Warnings.
-* M-x:                                   Interactive Call.
-* Maclisp:                               Lisp History.
-* macro:                                 What Is a Function.
-* macro argument evaluation:             Argument Evaluation.
-* macro call:                            Expansion.
-* macro call evaluation:                 Macro Forms.
-* macro compilation:                     Compilation Functions.
-* macro descriptions:                    A Sample Function Description.
-* macro expansion:                       Expansion.
-* macroexpand:                           Expansion.
-* macros:                                Macros.
-* magic file names:                      Magic File Names.
-* mail-host-address:                     System Environment.
-* major mode:                            Major Modes.
-* major mode hook:                       Major Mode Conventions.
-* major mode keymap:                     Active Keymaps.
-* major-mode:                            Mode Help.
-* make-abbrev-table:                     Abbrev Tables.
-* make-annotation:                       Annotation Primitives.
-* make-auto-save-file-name:              Auto-Saving.
-* make-backup-file-name:                 Backup Names.
-* make-backup-files:                     Making Backups.
-* make-bit-vector:                       Bit Vector Functions.
-* make-byte-code:                        Compiled-Function Objects.
-* make-char:                             MULE Characters.
-* make-char-table:                       Working With Char Tables.
-* make-charset:                          Basic Charset Functions.
-* make-coding-system:                    Basic Coding System Functions.
-* make-composite-char:                   Composite Characters.
-* make-device:                           Connecting to a Console or Device.
-* make-directory:                        Create/Delete Dirs.
-* make-display-table:                    Display Table Format.
-* make-event:                            Working With Events.
-* make-extent:                           Creating and Modifying Extents.
-* make-face:                             Basic Face Functions.
-* make-file-part:                        Creating a Partial File.
-* make-font-instance:                    Font Instances.
-* make-frame:                            Creating Frames.
-* make-frame-invisible:                  Visibility of Frames.
-* make-frame-visible:                    Visibility of Frames.
-* make-glyph:                            Creating Glyphs.
-* make-glyph-internal:                   Creating Glyphs.
-* make-hash-table:                       Introduction to Hash Tables.
-* make-icon-glyph:                       Creating Glyphs.
-* make-image-instance:                   Image Instance Functions.
-* make-image-specifier:                  Image Specifiers.
-* make-indirect-buffer:                  Indirect Buffers.
-* make-keymap:                           Creating Keymaps.
-* make-list:                             Building Lists.
-* make-local-hook:                       Hooks.
-* make-local-variable:                   Creating Buffer-Local.
-* make-marker:                           Creating Markers.
-* make-obsolete:                         Obsoleteness.
-* make-obsolete-variable:                Obsoleteness.
-* make-pointer-glyph:                    Creating Glyphs.
-* make-range-table:                      Introduction to Range Tables.
-* make-reverse-direction-charset:        Basic Charset Functions.
-* make-sparse-keymap:                    Creating Keymaps.
-* make-specifier:                        Creating Specifiers.
-* make-specifier-and-init:               Creating Specifiers.
-* make-string:                           Creating Strings.
-* make-symbol:                           Creating Symbols.
-* make-symbolic-link:                    Changing File Attributes.
-* make-syntax-table:                     Syntax Table Functions.
-* make-temp-name:                        Unique File Names.
-* make-tooltalk-message:                 Elisp Interface for Sending Messages.
-* make-tooltalk-pattern:                 Elisp Interface for Receiving Messages.
-* make-tty-device:                       Connecting to a Console or Device.
-* make-variable-buffer-local:            Creating Buffer-Local.
-* make-vector:                           Vector Functions.
-* make-weak-list:                        Weak Lists.
-* make-x-device:                         Connecting to a Console or Device.
-* makunbound:                            Void Variables.
-* Manual-page-minibuffer-history:        Minibuffer History.
-* map-char-table:                        Working With Char Tables.
-* map-database:                          Working With a Database.
-* map-extent-children:                   Mapping Over Extents.
-* map-extents:                           Mapping Over Extents.
-* map-frame-hook:                        Frame Hooks.
-* map-keymap:                            Scanning Keymaps.
-* map-range-table:                       Working With Range Tables.
-* map-specifier:                         Other Specification Functions.
-* map-y-or-n-p:                          Multiple Queries.
-* mapatoms:                              Creating Symbols.
-* mapcar:                                Mapping Functions.
-* mapcar-extents:                        Mapping Over Extents.
-* mapconcat:                             Mapping Functions.
-* maphash:                               Working With Hash Tables.
-* mapping functions:                     Mapping Functions.
-* margin:                                Annotation Basics.
-* margin width:                          Margin Primitives.
-* mark:                                  The Mark.
-* mark excursion:                        Excursions.
-* mark ring:                             The Mark.
-* mark, the:                             The Mark.
-* mark-marker:                           The Mark.
-* mark-ring:                             The Mark.
-* mark-ring-max:                         The Mark.
-* marker argument:                       Interactive Codes.
-* marker garbage collection:             Overview of Markers.
-* marker input stream:                   Input Streams.
-* marker output stream:                  Output Streams.
-* marker relocation:                     Overview of Markers.
-* marker-buffer:                         Information from Markers.
-* marker-position:                       Information from Markers.
-* markerp:                               Predicates on Markers.
-* markers:                               Markers.
-* markers as numbers:                    Overview of Markers.
-* markers vs. extents:                   Overview of Markers.
-* match data:                            Match Data.
-* match-beginning:                       Simple Match Data.
-* match-data:                            Entire Match Data.
-* match-end:                             Simple Match Data.
-* match-string:                          Simple Match Data.
-* mathematical functions:                Math Functions.
-* max:                                   Comparison of Numbers.
-* max-lisp-eval-depth:                   Eval.
-* max-specpdl-size:                      Local Variables.
-* md5:                                   Transformations.
-* MD5 digests:                           Transformations.
-* member:                                Sets And Lists.
-* membership in a list:                  Sets And Lists.
-* memory allocation:                     Garbage Collection.
-* memory-limit:                          Garbage Collection.
-* memq:                                  Sets And Lists.
-* menu:                                  Menus.
-* menu accelerators:                     Menu Accelerators.
-* menu filters:                          Menu Filters.
-* menu format:                           Menu Format.
-* menu-accelerator-enabled:              Menu Accelerator Functions.
-* menu-accelerator-map:                  Menu Accelerator Functions.
-* menu-accelerator-modifiers:            Menu Accelerator Functions.
-* menu-accelerator-prefix:               Menu Accelerator Functions.
-* menu-no-selection-hook:                Menubar.
-* menubar:                               Menubar.
-* menubar format:                        Menubar Format.
-* menubar-configuration:                 Menu Format.
-* menubar-pointer-glyph:                 Mouse Pointer.
-* menubar-show-keybindings:              Menubar.
-* message:                               The Echo Area.
-* meta character printing:               Describing Characters.
-* meta-prefix-char:                      Functions for Key Lookup.
-* min:                                   Comparison of Numbers.
-* minibuffer:                            Minibuffers.
-* minibuffer history:                    Minibuffer History.
-* minibuffer input:                      Recursive Editing.
-* minibuffer window:                     Cyclic Window Ordering.
-* minibuffer-complete:                   Completion Commands.
-* minibuffer-complete-and-exit:          Completion Commands.
-* minibuffer-complete-word:              Completion Commands.
-* minibuffer-completion-confirm:         Completion Commands.
-* minibuffer-completion-help:            Completion Commands.
-* minibuffer-completion-predicate:       Completion Commands.
-* minibuffer-completion-table:           Completion Commands.
-* minibuffer-depth:                      Minibuffer Misc.
-* minibuffer-exit-hook:                  Minibuffer Misc.
-* minibuffer-frame-plist:                Initial Properties.
-* minibuffer-help-form:                  Minibuffer Misc.
-* minibuffer-history:                    Minibuffer History.
-* minibuffer-local-completion-map <1>:   Standard Keymaps.
-* minibuffer-local-completion-map:       Completion Commands.
-* minibuffer-local-isearch-map:          Standard Keymaps.
-* minibuffer-local-map <1>:              Standard Keymaps.
-* minibuffer-local-map:                  Text from Minibuffer.
-* minibuffer-local-must-match-map <1>:   Standard Keymaps.
-* minibuffer-local-must-match-map:       Completion Commands.
-* minibuffer-prompt:                     Minibuffer Misc.
-* minibuffer-prompt-width:               Minibuffer Misc.
-* minibuffer-scroll-window:              Minibuffer Misc.
-* minibuffer-setup-hook:                 Minibuffer Misc.
-* minibuffer-window:                     Minibuffer Misc.
-* minibuffer-window-active-p:            Minibuffer Misc.
-* minimum window size:                   Resizing Windows.
-* minor mode:                            Minor Modes.
-* minor mode conventions:                Minor Mode Conventions.
-* minor-mode-alist:                      Modeline Variables.
-* minor-mode-key-binding:                Functions for Key Lookup.
-* minor-mode-map-alist:                  Active Keymaps.
-* misc-user-event-p:                     Event Predicates.
-* mod:                                   Arithmetic Operations.
-* mode:                                  Modes.
-* mode help:                             Mode Help.
-* mode hook:                             Major Mode Conventions.
-* mode loading:                          Major Mode Conventions.
-* mode variable:                         Minor Mode Conventions.
-* mode-class property:                   Major Mode Conventions.
-* mode-name:                             Modeline Variables.
-* mode-popup-menu:                       Pop-Up Menus.
-* mode-specific-map <1>:                 Standard Keymaps.
-* mode-specific-map:                     Prefix Keys.
-* modeline:                              Modeline Format.
-* modeline construct:                    Modeline Data.
-* modeline-buffer-identification:        Modeline Variables.
-* modeline-format:                       Modeline Data.
-* modeline-map <1>:                      Standard Keymaps.
-* modeline-map:                          Active Keymaps.
-* modeline-modified:                     Modeline Variables.
-* modeline-pointer-glyph:                Mouse Pointer.
-* modeline-process:                      Modeline Variables.
-* modification flag (of buffer):         Buffer Modification.
-* modification of lists:                 Rearrangement.
-* modification time, comparison of:      Modification Time.
-* modify-syntax-entry:                   Syntax Table Functions.
-* modulus:                               Arithmetic Operations.
-* momentary-string-display:              Temporary Displays.
-* mono-pixmap-image-instance-p:          Image Instance Types.
-* motion-event-p:                        Event Predicates.
-* mouse cursor:                          Mouse Pointer.
-* mouse pointer:                         Mouse Pointer.
-* mouse-event-p:                         Event Predicates.
-* mouse-grabbed-buffer:                  Active Keymaps.
-* mouse-highlight-priority:              Extents and Events.
-* move-marker:                           Changing Markers.
-* move-to-column:                        Columns.
-* move-to-left-margin:                   Margins.
-* move-to-window-line:                   Screen Lines.
-* MS-DOS and file modes:                 Changing File Attributes.
-* MS-DOS file types:                     Files and MS-DOS.
-* MSWindows OLE:                         MSWindows OLE.
-* multilingual string formatting:        Formatting Strings.
-* multiple windows:                      Basic Windows.
-* named function:                        Function Names.
-* NaN:                                   Float Basics.
-* narrow-to-page:                        Narrowing.
-* narrow-to-region:                      Narrowing.
-* narrowing:                             Narrowing.
-* natnum-specifier-p:                    Specifier Types.
-* natnump:                               Predicates on Numbers.
-* natural numbers:                       Predicates on Numbers.
-* nconc:                                 Rearrangement.
-* negative infinity:                     Float Basics.
-* negative-argument:                     Prefix Command Arguments.
-* network connection:                    Network.
-* new file message:                      Subroutines of Visiting.
-* newline <1>:                           Commands for Insertion.
-* newline:                               Character Type.
-* newline and Auto Fill mode:            Commands for Insertion.
-* newline in print:                      Output Functions.
-* newline in strings:                    String Type.
-* newline-and-indent:                    Mode-Specific Indent.
-* next input:                            Peeking and Discarding.
-* next-command-event:                    Reading One Event.
-* next-event:                            Reading One Event.
-* next-extent:                           Finding Extents.
-* next-frame:                            Finding All Frames.
-* next-history-element:                  Minibuffer Misc.
-* next-matching-history-element:         Minibuffer Misc.
-* next-property-change:                  Property Search.
-* next-screen-context-lines:             Vertical Scrolling.
-* next-single-property-change:           Property Search.
-* next-window:                           Cyclic Window Ordering.
-* nil:                                   Constant Variables.
-* nil and lists:                         Cons Cells.
-* nil in keymap:                         Key Lookup.
-* nil in lists:                          Cons Cell Type.
-* nil input stream:                      Input Streams.
-* nil output stream:                     Output Streams.
-* nil, uses of:                          nil and t.
-* ninth:                                 List Elements.
-* nlistp:                                List-related Predicates.
-* no-catch:                              Catch and Throw.
-* no-redraw-on-reenter:                  Refresh Screen.
-* nondirectory part (of file name):      File Name Components.
-* noninteractive:                        Batch Mode.
-* noninteractive use:                    Batch Mode.
-* nonlocal exits:                        Nonlocal Exits.
-* nonprinting characters, reading:       Quoted Character Input.
-* nontext-pointer-glyph:                 Mouse Pointer.
-* normal-mode:                           Auto Major Mode.
-* not:                                   Combining Conditions.
-* not-modified:                          Buffer Modification.
-* nothing-image-instance-p:              Image Instance Types.
-* nreverse:                              Rearrangement.
-* nth:                                   List Elements.
-* nthcdr:                                List Elements.
-* null:                                  List-related Predicates.
-* number equality:                       Comparison of Numbers.
-* number-char-or-marker-p:               Predicates on Markers.
-* number-or-marker-p:                    Predicates on Markers.
-* number-to-string:                      String Conversion.
-* numberp:                               Predicates on Numbers.
-* numbers:                               Numbers.
-* numeric prefix:                        Formatting Strings.
-* numeric prefix argument:               Prefix Command Arguments.
-* numeric prefix argument usage:         Interactive Codes.
-* obarray:                               Creating Symbols.
-* obarray in completion:                 Basic Completion.
-* objc-mode-map:                         Standard Keymaps.
-* object:                                Lisp Data Types.
-* object to string:                      Output Functions.
-* object-plist:                          Object Plists.
-* oblique:                               Font Instance Characteristics.
-* obsolete buffer:                       Modification Time.
-* occur-mode-map:                        Standard Keymaps.
-* octal character code:                  Character Type.
-* octal character input:                 Quoted Character Input.
-* octal-escape-glyph:                    Redisplay Glyphs.
-* OffiX DND:                             OffiX DND.
-* old-eq:                                Equality Predicates.
-* one-window-p:                          Splitting Windows.
-* only-global-abbrevs:                   Defining Abbrevs.
-* open-database:                         Connecting to a Database.
-* open-dribble-file:                     Recording Input.
-* open-network-stream:                   Network.
-* open-termscript:                       Terminal Output.
-* open parenthesis character:            Syntax Class Table.
-* operating system environment:          System Environment.
-* option descriptions:                   A Sample Variable Description.
-* optional arguments:                    Argument List.
-* options on command line:               Command Line Arguments.
-* or:                                    Combining Conditions.
-* order of extents:                      Extent Endpoints.
-* ordering of windows, cyclic:           Cyclic Window Ordering.
-* other-buffer:                          The Buffer List.
-* other-window:                          Cyclic Window Ordering.
-* other-window-scroll-buffer:            Vertical Scrolling.
-* Outline mode:                          Substitution.
-* output from processes:                 Output from Processes.
-* output stream:                         Output Streams.
-* outside margin:                        Annotation Basics.
-* overflow:                              Integer Basics.
-* overlay arrow:                         Overlay Arrow.
-* overlay-arrow-position:                Overlay Arrow.
-* overlay-arrow-string:                  Overlay Arrow.
-* overriding-local-map <1>:              Standard Keymaps.
-* overriding-local-map:                  Active Keymaps.
-* overriding-terminal-local-map:         Active Keymaps.
-* overwrite-mode:                        Commands for Insertion.
-* padding:                               Formatting Strings.
-* page-delimiter:                        Standard Regexps.
-* paired delimiter:                      Syntax Class Table.
-* paragraph-separate:                    Standard Regexps.
-* paragraph-start:                       Standard Regexps.
-* parent of a keymap:                    Inheritance and Keymaps.
-* parent process:                        Processes.
-* parent, of extent:                     Extent Parents.
-* parenthesis:                           Cons Cell Type.
-* parenthesis depth:                     Parsing Expressions.
-* parenthesis matching:                  Blinking.
-* parenthesis syntax:                    Syntax Class Table.
-* parse state:                           Parsing Expressions.
-* parse-partial-sexp:                    Parsing Expressions.
-* parse-sexp-ignore-comments:            Parsing Expressions.
-* parsing:                               Syntax Tables.
-* partial files:                         Partial Files.
-* passwd-echo:                           Reading a Password.
-* passwd-invert-frame-when-keyboard-grabbed: Reading a Password.
-* passwords, reading:                    Reading a Password.
-* PATH environment variable:             Subprocess Creation.
-* path-separator:                        System Environment.
-* pausing:                               Waiting.
-* peeking at input:                      Peeking and Discarding.
-* percent symbol in modeline:            Modeline Data.
-* perform-replace:                       Search and Replace.
-* performance analysis:                  Coverage Testing.
-* permanent local variable:              Creating Buffer-Local.
-* permission:                            File Attributes.
-* pg-coding-system:                      libpq Lisp Variables.
-* pg:authtype:                           libpq Lisp Variables.
-* pg:client-encoding:                    libpq Lisp Variables.
-* pg:cost-heap:                          libpq Lisp Variables.
-* pg:cost-index:                         libpq Lisp Variables.
-* pg:database:                           libpq Lisp Variables.
-* pg:date-style:                         libpq Lisp Variables.
-* pg:geqo:                               libpq Lisp Variables.
-* pg:host:                               libpq Lisp Variables.
-* pg:options:                            libpq Lisp Variables.
-* pg:port:                               libpq Lisp Variables.
-* pg:realm:                              libpq Lisp Variables.
-* pg:tty:                                libpq Lisp Variables.
-* pg:tz:                                 libpq Lisp Variables.
-* pg:user:                               libpq Lisp Variables.
-* pgres::polling-active:                 libpq Lisp Symbols and DataTypes.
-* pgres::polling-failed:                 libpq Lisp Symbols and DataTypes.
-* pgres::polling-ok:                     libpq Lisp Symbols and DataTypes.
-* pgres::polling-reading:                libpq Lisp Symbols and DataTypes.
-* pgres::polling-writing:                libpq Lisp Symbols and DataTypes.
-* pipes:                                 Asynchronous Processes.
-* play-sound:                            Beeping.
-* play-sound-file:                       Beeping.
-* plist:                                 Property Lists.
-* plist, symbol:                         Symbol Properties.
-* plist-get:                             Working With Normal Plists.
-* plist-member:                          Working With Normal Plists.
-* plist-put:                             Working With Normal Plists.
-* plist-remprop:                         Working With Normal Plists.
-* plist-to-alist:                        Converting Plists To/From Alists.
-* plists-eq <1>:                         Other Plists.
-* plists-eq:                             Working With Normal Plists.
-* plists-equal <1>:                      Other Plists.
-* plists-equal:                          Working With Normal Plists.
-* point:                                 Point.
-* point excursion:                       Excursions.
-* point in window:                       Window Point.
-* point with narrowing:                  Point.
-* point-marker:                          Creating Markers.
-* point-max:                             Point.
-* point-max-marker:                      Creating Markers.
-* point-min:                             Point.
-* point-min-marker:                      Creating Markers.
-* pointer (mouse):                       Mouse Pointer.
-* pointer-glyph-p:                       Glyph Types.
-* pointer-image-instance-p:              Image Instance Types.
-* pop-global-mark:                       The Mark.
-* pop-mark:                              The Mark.
-* pop-to-buffer:                         Displaying Buffers.
-* pop-up menu:                           Pop-Up Menus.
-* pop-up-frame-function:                 Choosing Window.
-* pop-up-frame-plist:                    Choosing Window.
-* pop-up-frames:                         Choosing Window.
-* pop-up-windows:                        Choosing Window.
-* popup-buffer-menu:                     Pop-Up Menus.
-* popup-dialog-box:                      Dialog Box Functions.
-* popup-menu:                            Pop-Up Menus.
-* popup-menu-titles:                     Pop-Up Menus.
-* popup-menu-up-p:                       Pop-Up Menus.
-* popup-menubar-menu:                    Pop-Up Menus.
-* popup-mode-menu:                       Pop-Up Menus.
-* pos-visible-in-window-p:               Window Start.
-* position (in buffer):                  Positions.
-* position argument:                     Interactive Codes.
-* position in window:                    Window Point.
-* position of frame:                     Size and Position.
-* position of window:                    Position of Window.
-* positive infinity:                     Float Basics.
-* posix-looking-at:                      POSIX Regexps.
-* posix-search-backward:                 POSIX Regexps.
-* posix-search-forward:                  POSIX Regexps.
-* posix-string-match:                    POSIX Regexps.
-* post-command-hook:                     Command Overview.
-* post-gc-hook:                          Garbage Collection.
-* PostgreSQL:                            PostgreSQL Support.
-* pq-binary-tuples:                      libpq Lisp Symbols and DataTypes.
-* pq-clear:                              Other libpq Functions.
-* pq-client-encoding:                    Other libpq Functions.
-* pq-cmd-status:                         libpq Lisp Symbols and DataTypes.
-* pq-cmd-tuples:                         libpq Lisp Symbols and DataTypes.
-* pq-conn-defaults:                      Other libpq Functions.
-* pq-connect-poll:                       Asynchronous Interface Functions.
-* pq-connect-start:                      Asynchronous Interface Functions.
-* pq-connectdb:                          Synchronous Interface Functions.
-* pq-consume-input:                      Asynchronous Interface Functions.
-* pq-env-2-encoding:                     Other libpq Functions.
-* pq-exec:                               Synchronous Interface Functions.
-* pq-finish:                             Other libpq Functions.
-* pq-flush:                              Asynchronous Interface Functions.
-* pq-fmod:                               libpq Lisp Symbols and DataTypes.
-* pq-fname:                              libpq Lisp Symbols and DataTypes.
-* pq-fnumber:                            libpq Lisp Symbols and DataTypes.
-* pq-fsize:                              libpq Lisp Symbols and DataTypes.
-* pq-ftype:                              libpq Lisp Symbols and DataTypes.
-* pq-get-is-null:                        libpq Lisp Symbols and DataTypes.
-* pq-get-length:                         libpq Lisp Symbols and DataTypes.
-* pq-get-result:                         Asynchronous Interface Functions.
-* pq-get-value:                          libpq Lisp Symbols and DataTypes.
-* pq-is-busy:                            Asynchronous Interface Functions.
-* pq-is-nonblocking:                     Asynchronous Interface Functions.
-* pq-lo-close:                           Unimplemented libpq Functions.
-* pq-lo-creat:                           Unimplemented libpq Functions.
-* pq-lo-export:                          Large Object Support.
-* pq-lo-import:                          Large Object Support.
-* pq-lo-lseek:                           Unimplemented libpq Functions.
-* pq-lo-open:                            Unimplemented libpq Functions.
-* pq-lo-read:                            Unimplemented libpq Functions.
-* pq-lo-tell:                            Unimplemented libpq Functions.
-* pq-lo-unlink:                          Unimplemented libpq Functions.
-* pq-lo-write:                           Unimplemented libpq Functions.
-* pq-make-empty-pgresult:                libpq Lisp Symbols and DataTypes.
-* pq-nfields:                            libpq Lisp Symbols and DataTypes.
-* pq-notifies:                           Synchronous Interface Functions.
-* pq-ntuples:                            libpq Lisp Symbols and DataTypes.
-* pq-oid-value:                          libpq Lisp Symbols and DataTypes.
-* pq-pgconn:                             libpq Lisp Symbols and DataTypes.
-* pq-res-status:                         libpq Lisp Symbols and DataTypes.
-* pq-reset:                              Synchronous Interface Functions.
-* pq-reset-cancel:                       Asynchronous Interface Functions.
-* pq-reset-poll:                         Asynchronous Interface Functions.
-* pq-reset-start:                        Asynchronous Interface Functions.
-* pq-result-error-message:               libpq Lisp Symbols and DataTypes.
-* pq-result-status:                      libpq Lisp Symbols and DataTypes.
-* pq-send-query:                         Asynchronous Interface Functions.
-* pq-set-client-encoding:                Other libpq Functions.
-* pq-set-nonblocking:                    Asynchronous Interface Functions.
-* PQdisplayTuples:                       Unimplemented libpq Functions.
-* PQmblen:                               Unimplemented libpq Functions.
-* PQprint:                               Unimplemented libpq Functions.
-* PQprintTuples:                         Unimplemented libpq Functions.
-* PQsetenv:                              Synchronous Interface Functions.
-* PQsetenvAbort:                         Asynchronous Interface Functions.
-* PQsetenvPoll:                          Asynchronous Interface Functions.
-* PQsetenvStart:                         Asynchronous Interface Functions.
-* PQsocket:                              Unimplemented libpq Functions.
-* PQtrace:                               Unimplemented libpq Functions.
-* PQuntrace:                             Unimplemented libpq Functions.
-* pre-abbrev-expand-hook:                Abbrev Expansion.
-* pre-command-hook:                      Command Overview.
-* pre-gc-hook:                           Garbage Collection.
-* preceding-char:                        Near Point.
-* precision of formatted numbers:        Formatting Strings.
-* predicates:                            Type Predicates.
-* prefix argument:                       Prefix Command Arguments.
-* prefix argument unreading:             Peeking and Discarding.
-* prefix command:                        Prefix Keys.
-* prefix key:                            Prefix Keys.
-* prefix-arg:                            Prefix Command Arguments.
-* prefix-help-command:                   Help Functions.
-* prefix-numeric-value:                  Prefix Command Arguments.
-* preventing backtracking:               Specification List.
-* preventing prefix key:                 Key Lookup.
-* previous complete subexpression:       Parsing Expressions.
-* previous-extent:                       Finding Extents.
-* previous-frame:                        Finding All Frames.
-* previous-history-element:              Minibuffer Misc.
-* previous-matching-history-element:     Minibuffer Misc.
-* previous-property-change:              Property Search.
-* previous-single-property-change:       Property Search.
-* previous-window:                       Cyclic Window Ordering.
-* primitive:                             What Is a Function.
-* primitive type:                        Lisp Data Types.
-* primitive types:                       Primitive Types.
-* primitive-undo:                        Undo.
-* prin1:                                 Output Functions.
-* prin1-to-string:                       Output Functions.
-* princ:                                 Output Functions.
-* print:                                 Output Functions.
-* print example:                         Output Streams.
-* print name cell:                       Symbol Components.
-* print-escape-newlines:                 Output Variables.
-* print-gensym:                          Output Variables.
-* print-help-return-message:             Help Functions.
-* print-length:                          Output Variables.
-* print-level:                           Output Variables.
-* print-readably <1>:                    Output Variables.
-* print-readably:                        Printing in Edebug.
-* print-string-length:                   Output Variables.
-* printed representation:                Printed Representation.
-* printed representation for characters: Character Type.
-* printing:                              Streams Intro.
-* printing (Edebug):                     Printing in Edebug.
-* printing circular structures:          Printing in Edebug.
-* printing floating-point numbers:       Output Variables.
-* printing limits:                       Output Variables.
-* printing notation:                     Printing Notation.
-* printing readably:                     Output Variables.
-* printing uninterned symbols:           Output Variables.
-* priority of an extent:                 Intro to Extents.
-* process:                               Processes.
-* process filter:                        Filter Functions.
-* process input:                         Input to Processes.
-* process output:                        Output from Processes.
-* process sentinel:                      Sentinels.
-* process signals:                       Signals to Processes.
-* process window size:                   Process Window Size.
-* process-buffer:                        Process Buffers.
-* process-command:                       Process Information.
-* process-connection-type:               Asynchronous Processes.
-* process-environment:                   System Environment.
-* process-event-p:                       Event Predicates.
-* process-exit-status:                   Process Information.
-* process-filter:                        Filter Functions.
-* process-id:                            Process Information.
-* process-kill-without-query:            Deleting Processes.
-* process-kill-without-query-p:          Process Information.
-* process-list:                          Process Information.
-* process-mark:                          Process Buffers.
-* process-name:                          Process Information.
-* process-send-eof:                      Input to Processes.
-* process-send-region:                   Input to Processes.
-* process-send-string:                   Input to Processes.
-* process-sentinel:                      Sentinels.
-* process-status:                        Process Information.
-* process-tty-name:                      Process Information.
-* processp:                              Processes.
-* profile.el:                            Compilation Tips.
-* profiling:                             Compilation Tips.
-* prog1:                                 Sequencing.
-* prog2:                                 Sequencing.
-* progn:                                 Sequencing.
-* program arguments:                     Subprocess Creation.
-* program directories:                   Subprocess Creation.
-* programmed completion:                 Programmed Completion.
-* programming types:                     Programming Types.
-* properties of strings:                 String Properties.
-* properties of text:                    Text Properties.
-* property list:                         Property Lists.
-* property list cell (symbol):           Symbol Components.
-* property list, symbol:                 Symbol Properties.
-* property lists vs association lists:   Plists and Alists.
-* property of an extent:                 Extent Properties.
-* protected forms:                       Cleanups.
-* provide:                               Named Features.
-* providing features:                    Named Features.
-* PTYs:                                  Asynchronous Processes.
-* punctuation character:                 Syntax Class Table.
-* pure storage:                          Pure Storage.
-* pure-bytes-used:                       Pure Storage.
-* purecopy:                              Pure Storage.
-* purify-flag:                           Pure Storage.
-* push-mark:                             The Mark.
-* put:                                   Object Plists.
-* put-char-table:                        Working With Char Tables.
-* put-database:                          Working With a Database.
-* put-range-table:                       Working With Range Tables.
-* put-text-property:                     Changing Properties.
-* putf:                                  Other Plists.
-* puthash:                               Working With Hash Tables.
-* query-replace-history:                 Minibuffer History.
-* query-replace-map <1>:                 Standard Keymaps.
-* query-replace-map:                     Search and Replace.
-* querying the user:                     Yes-or-No Queries.
-* question mark in character constant:   Character Type.
-* quietly-read-abbrev-file:              Abbrev Files.
-* quit-flag:                             Quitting.
-* quit-process:                          Signals to Processes.
-* quitting:                              Quitting.
-* quitting from infinite loop:           Infinite Loops.
-* quote:                                 Quoting.
-* quote character:                       Parsing Expressions.
-* quoted character input:                Quoted Character Input.
-* quoted-insert suppression:             Changing Key Bindings.
-* quoting:                               Quoting.
-* quoting characters in printing:        Output Functions.
-* quoting using apostrophe:              Quoting.
-* raise-frame:                           Raising and Lowering.
-* raising a frame:                       Raising and Lowering.
-* random:                                Random Numbers.
-* random numbers:                        Random Numbers.
-* range table type:                      Range Table Type.
-* Range Tables:                          Range Tables.
-* range-table-p:                         Range Tables.
-* rassoc:                                Association Lists.
-* rassq:                                 Association Lists.
-* raw prefix argument:                   Prefix Command Arguments.
-* raw prefix argument usage:             Interactive Codes.
-* re-search-backward:                    Regexp Search.
-* re-search-forward:                     Regexp Search.
-* read:                                  Input Functions.
-* read command name:                     Interactive Call.
-* read syntax:                           Printed Representation.
-* read syntax for characters:            Character Type.
-* read-buffer:                           High-Level Completion.
-* read-char:                             Reading One Event.
-* read-command:                          High-Level Completion.
-* read-expression:                       Object from Minibuffer.
-* read-expression-history:               Minibuffer History.
-* read-expression-map:                   Standard Keymaps.
-* read-file-name:                        Reading File Names.
-* read-from-minibuffer:                  Text from Minibuffer.
-* read-from-string:                      Input Functions.
-* read-key-sequence:                     Key Sequence Input.
-* read-minibuffer:                       Object from Minibuffer.
-* read-only buffer:                      Read Only Buffers.
-* read-only buffers in interactive:      Using Interactive.
-* read-passwd:                           Reading a Password.
-* read-quoted-char:                      Quoted Character Input.
-* read-quoted-char quitting:             Quitting.
-* read-shell-command-map:                Standard Keymaps.
-* read-string:                           Text from Minibuffer.
-* read-variable:                         High-Level Completion.
-* reading:                               Streams Intro.
-* reading (Edebug):                      Reading in Edebug.
-* reading interactive arguments:         Interactive Codes.
-* reading symbols:                       Creating Symbols.
-* rearrangement of lists:                Rearrangement.
-* rebinding:                             Changing Key Bindings.
-* receiving ToolTalk messages:           Receiving Messages.
-* recent-auto-save-p:                    Auto-Saving.
-* recent-keys:                           Recording Input.
-* recent-keys-ring-size:                 Recording Input.
-* recenter:                              Vertical Scrolling.
-* record command history:                Interactive Call.
-* recursion:                             Iteration.
-* recursion-depth:                       Recursive Editing.
-* recursive command loop:                Recursive Editing.
-* recursive editing level:               Recursive Editing.
-* recursive evaluation:                  Intro Eval.
-* recursive-edit:                        Recursive Editing.
-* redo:                                  Undo.
-* redraw-display:                        Refresh Screen.
-* redraw-frame:                          Refresh Screen.
-* redraw-modeline:                       Modeline Format.
-* refresh display:                       Refresh Screen.
-* regexp:                                Regular Expressions.
-* regexp alternative:                    Syntax of Regexps.
-* regexp grouping:                       Syntax of Regexps.
-* regexp searching:                      Regexp Search.
-* regexp-history:                        Minibuffer History.
-* regexp-quote:                          Syntax of Regexps.
-* regexps used standardly in editing:    Standard Regexps.
-* region argument:                       Interactive Codes.
-* region, the:                           The Region.
-* region-active-p:                       The Region.
-* region-beginning:                      The Region.
-* region-end:                            The Region.
-* region-exists-p:                       The Region.
-* register-alist:                        Registers.
-* register-ccl-program:                  Calling CCL.
-* register-tooltalk-pattern:             Elisp Interface for Receiving Messages.
-* registers:                             Registers.
-* regular expression:                    Regular Expressions.
-* regular expression searching:          Regexp Search.
-* reindent-then-newline-and-indent:      Mode-Specific Indent.
-* relabel-menu-item:                     Modifying Menus.
-* relative file name:                    Relative File Names.
-* remainder:                             Arithmetic Operations.
-* remassoc:                              Association Lists.
-* remassq:                               Association Lists.
-* remhash:                               Working With Hash Tables.
-* remove-database:                       Working With a Database.
-* remove-face-property:                  Face Properties.
-* remove-glyph-property:                 Glyph Properties.
-* remove-hook:                           Hooks.
-* remove-range-table:                    Working With Range Tables.
-* remove-specifier:                      Other Specification Functions.
-* remove-text-properties:                Changing Properties.
-* remprop:                               Object Plists.
-* remrassoc:                             Association Lists.
-* remrassq:                              Association Lists.
-* rename-auto-save-file:                 Auto-Saving.
-* rename-buffer:                         Buffer Names.
-* rename-file:                           Changing File Attributes.
-* renaming files:                        Changing File Attributes.
-* repeated loading:                      Repeated Loading.
-* replace bindings:                      Changing Key Bindings.
-* replace characters:                    Substitution.
-* replace-buffer-in-windows:             Displaying Buffers.
-* replace-match:                         Replacing Match.
-* replacement:                           Search and Replace.
-* repositioning format arguments:        Formatting Strings.
-* require:                               Named Features.
-* require-final-newline:                 Saving Buffers.
-* requiring features:                    Named Features.
-* reset-char-table:                      Working With Char Tables.
-* resize redisplay:                      Size and Position.
-* rest arguments:                        Argument List.
-* restriction (in a buffer):             Narrowing.
-* resume (cf. no-redraw-on-reenter):     Refresh Screen.
-* return:                                Character Type.
-* return-tooltalk-message:               Elisp Interface for Sending Messages.
-* reveal-annotation:                     Annotation Properties.
-* reverse:                               Building Lists.
-* reversing a list:                      Rearrangement.
-* revert-buffer:                         Reverting.
-* revert-buffer-function:                Reverting.
-* revert-buffer-insert-file-contents-function: Reverting.
-* right-gutter:                          Specifying a Gutter.
-* right-gutter-visible-p:                Other Gutter Variables.
-* right-gutter-width:                    Other Gutter Variables.
-* right-margin-width:                    Margin Primitives.
-* right-toolbar:                         Specifying the Toolbar.
-* right-toolbar-visible-p:               Other Toolbar Variables.
-* right-toolbar-width:                   Other Toolbar Variables.
-* rm:                                    Changing File Attributes.
-* round:                                 Numeric Conversions.
-* rounding in conversions:               Numeric Conversions.
-* rounding without conversion:           Rounding Operations.
-* rplaca:                                Modifying Lists.
-* rplacd:                                Modifying Lists.
-* run time stack:                        Internals of Debugger.
-* run-emacs-from-temacs:                 Building XEmacs.
-* run-hooks:                             Hooks.
-* runnable temacs:                       Building XEmacs.
-* same-window-buffer-names:              Choosing Window.
-* same-window-regexps:                   Choosing Window.
-* save-abbrevs:                          Abbrev Files.
-* save-buffer:                           Saving Buffers.
-* save-current-buffer:                   Excursions.
-* save-excursion:                        Excursions.
-* save-excursion (Edebug):               Edebug Display Update.
-* save-match-data:                       Saving Match Data.
-* save-restriction:                      Narrowing.
-* save-selected-frame:                   Input Focus.
-* save-selected-window <1>:              Excursions.
-* save-selected-window:                  Selecting Windows.
-* save-some-buffers:                     Saving Buffers.
-* save-window-excursion:                 Window Configurations.
-* saving text properties:                Saving Properties.
-* saving window information:             Window Configurations.
-* scan-lists:                            Parsing Expressions.
-* scan-sexps:                            Parsing Expressions.
-* scope:                                 Variable Scoping.
-* screen layout:                         Window Configuration Type.
-* scroll-conservatively:                 Vertical Scrolling.
-* scroll-down:                           Vertical Scrolling.
-* scroll-left:                           Horizontal Scrolling.
-* scroll-other-window:                   Vertical Scrolling.
-* scroll-right:                          Horizontal Scrolling.
-* scroll-step:                           Vertical Scrolling.
-* scroll-up:                             Vertical Scrolling.
-* scrollbar-pointer-glyph:               Mouse Pointer.
-* scrollbars:                            Scrollbars.
-* scrolling vertically:                  Vertical Scrolling.
-* search-backward:                       String Search.
-* search-failed:                         String Search.
-* search-forward:                        String Search.
-* searching:                             Searching and Matching.
-* searching and case:                    Searching and Case.
-* searching for regexp:                  Regexp Search.
-* second:                                List Elements.
-* select-console:                        The Selected Console and Device.
-* select-device:                         The Selected Console and Device.
-* select-frame:                          Input Focus.
-* select-frame-hook:                     Frame Hooks.
-* select-window:                         Selecting Windows.
-* selected frame:                        Input Focus.
-* selected window:                       Basic Windows.
-* selected-console:                      The Selected Console and Device.
-* selected-device:                       The Selected Console and Device.
-* selected-frame:                        Input Focus.
-* selected-window:                       Selecting Windows.
-* selecting a buffer:                    Current Buffer.
-* selecting windows:                     Selecting Windows.
-* selection (for X windows):             X Selections.
-* selection-pointer-glyph:               Mouse Pointer.
-* selective display:                     Selective Display.
-* selective-display:                     Selective Display.
-* selective-display-ellipses:            Selective Display.
-* self-evaluating form:                  Self-Evaluating Forms.
-* self-insert-and-exit:                  Minibuffer Misc.
-* self-insert-command:                   Commands for Insertion.
-* self-insert-command override:          Changing Key Bindings.
-* self-insert-command, minor modes:      Keymaps and Minor Modes.
-* self-insertion:                        Commands for Insertion.
-* send-string-to-terminal:               Terminal Output.
-* send-tooltalk-message:                 Elisp Interface for Sending Messages.
-* sending signals:                       Signals to Processes.
-* sending ToolTalk messages:             Sending Messages.
-* sentence-end:                          Standard Regexps.
-* sentinel:                              Sentinels.
-* sequence:                              Sequences Arrays Vectors.
-* sequence length:                       Sequence Functions.
-* sequencep:                             Sequence Functions.
-* set:                                   Setting Variables.
-* set-annotation-action:                 Annotation Properties.
-* set-annotation-data:                   Annotation Properties.
-* set-annotation-down-glyph:             Annotation Properties.
-* set-annotation-face:                   Annotation Properties.
-* set-annotation-glyph:                  Annotation Properties.
-* set-annotation-layout:                 Annotation Properties.
-* set-annotation-menu:                   Annotation Properties.
-* set-auto-mode:                         Auto Major Mode.
-* set-buffer:                            Current Buffer.
-* set-buffer-auto-saved:                 Auto-Saving.
-* set-buffer-major-mode:                 Auto Major Mode.
-* set-buffer-menubar:                    Menubar.
-* set-buffer-modified-p:                 Buffer Modification.
-* set-case-syntax:                       Case Tables.
-* set-case-syntax-delims:                Case Tables.
-* set-case-syntax-pair:                  Case Tables.
-* set-case-table:                        Case Tables.
-* set-category-table:                    Category Tables.
-* set-charset-ccl-program:               Charset Property Functions.
-* set-coding-category-system:            Detection of Textual Encoding.
-* set-coding-priority-list:              Detection of Textual Encoding.
-* set-console-type-image-conversion-list: Image Instantiator Conversion.
-* set-default:                           Default Value.
-* set-default-file-modes:                Changing File Attributes.
-* set-default-gutter-position:           Specifying a Gutter.
-* set-default-toolbar-position:          Specifying the Toolbar.
-* set-device-baud-rate <1>:              Terminal Output.
-* set-device-baud-rate:                  Console and Device I/O.
-* set-extent-begin-glyph:                Extent Properties.
-* set-extent-begin-glyph-layout:         Extent Properties.
-* set-extent-end-glyph:                  Extent Properties.
-* set-extent-end-glyph-layout:           Extent Properties.
-* set-extent-endpoints:                  Extent Endpoints.
-* set-extent-face:                       Extent Properties.
-* set-extent-initial-redisplay-function: Extent Properties.
-* set-extent-keymap:                     Extent Properties.
-* set-extent-mouse-face:                 Extent Properties.
-* set-extent-parent:                     Extent Parents.
-* set-extent-priority:                   Extent Properties.
-* set-extent-properties:                 Extent Properties.
-* set-extent-property:                   Extent Properties.
-* set-face-background:                   Face Convenience Functions.
-* set-face-background-pixmap:            Face Convenience Functions.
-* set-face-font:                         Face Convenience Functions.
-* set-face-foreground:                   Face Convenience Functions.
-* set-face-property:                     Face Properties.
-* set-face-underline-p:                  Face Convenience Functions.
-* set-file-modes:                        Changing File Attributes.
-* set-frame-configuration:               Frame Configurations.
-* set-frame-pointer:                     Mouse Pointer.
-* set-frame-position:                    Size and Position.
-* set-frame-properties:                  Property Access.
-* set-frame-property:                    Property Access.
-* set-frame-size:                        Size and Position.
-* set-glyph-baseline:                    Glyph Convenience Functions.
-* set-glyph-contrib-p:                   Glyph Convenience Functions.
-* set-glyph-face:                        Glyph Convenience Functions.
-* set-glyph-image:                       Glyph Convenience Functions.
-* set-glyph-property:                    Glyph Properties.
-* set-input-mode:                        Input Modes.
-* set-keymap-default-binding:            Inheritance and Keymaps.
-* set-keymap-name:                       Creating Keymaps.
-* set-keymap-parents:                    Inheritance and Keymaps.
-* set-keymap-prompt:                     Other Keymap Functions.
-* set-left-margin:                       Margins.
-* set-mark:                              The Mark.
-* set-marker:                            Changing Markers.
-* set-match-data:                        Entire Match Data.
-* set-menubar:                           Menubar.
-* set-menubar-dirty-flag:                Menubar.
-* set-process-buffer:                    Process Buffers.
-* set-process-filter:                    Filter Functions.
-* set-process-sentinel:                  Sentinels.
-* set-process-window-size:               Process Window Size.
-* set-recent-keys-ring-size:             Recording Input.
-* set-register:                          Registers.
-* set-right-margin:                      Margins.
-* set-specifier:                         Adding Specifications.
-* set-standard-case-table:               Case Tables.
-* set-syntax-table:                      Syntax Table Functions.
-* set-text-properties:                   Changing Properties.
-* set-tooltalk-message-attribute:        Elisp Interface for Sending Messages.
-* set-visited-file-modtime:              Modification Time.
-* set-visited-file-name:                 Buffer File Name.
-* set-weak-list-list:                    Weak Lists.
-* set-window-buffer:                     Buffers and Windows.
-* set-window-buffer-dedicated:           Choosing Window.
-* set-window-configuration:              Window Configurations.
-* set-window-dedicated-p:                Choosing Window.
-* set-window-hscroll:                    Horizontal Scrolling.
-* set-window-point:                      Window Point.
-* set-window-start:                      Window Start.
-* setcar:                                Setcar.
-* setcdr:                                Setcdr.
-* setenv:                                System Environment.
-* setplist:                              Object Plists.
-* setprv:                                System Environment.
-* setq:                                  Setting Variables.
-* setq-default:                          Default Value.
-* sets:                                  Sets And Lists.
-* setting modes of files:                Changing File Attributes.
-* setting-constant:                      Constant Variables.
-* seventh:                               List Elements.
-* sexp motion:                           List Motion.
-* shadowing of variables:                Local Variables.
-* shallow binding:                       Impl of Scope.
-* shared-lisp-mode-map:                  Standard Keymaps.
-* Shell mode modeline-format:            Modeline Data.
-* shell-command-history:                 Minibuffer History.
-* shrink-window:                         Resizing Windows.
-* shrink-window-horizontally:            Resizing Windows.
-* shrink-window-pixels:                  Resizing Windows.
-* side effect:                           Intro Eval.
-* signal:                                Signaling Errors.
-* signal-error:                          Signaling Errors.
-* signal-process:                        Signals to Processes.
-* signaling errors:                      Signaling Errors.
-* signals:                               Signals to Processes.
-* sin:                                   Math Functions.
-* single-key-description:                Describing Characters.
-* sinh:                                  Math Functions.
-* sit-for:                               Waiting.
-* site-init.el:                          Building XEmacs.
-* site-load.el:                          Building XEmacs.
-* site-run-file:                         Init File.
-* site-start.el:                         Start-up Summary.
-* sixth:                                 List Elements.
-* size of frame:                         Size and Position.
-* size of window:                        Size of Window.
-* skip-chars-backward:                   Skipping Characters.
-* skip-chars-forward:                    Skipping Characters.
-* skip-syntax-backward:                  Motion and Syntax.
-* skip-syntax-forward:                   Motion and Syntax.
-* skipping characters:                   Skipping Characters.
-* skipping comments:                     Parsing Expressions.
-* sleep-for:                             Waiting.
-* Snarf-documentation:                   Accessing Documentation.
-* sort:                                  Rearrangement.
-* sort-columns:                          Sorting.
-* sort-fields:                           Sorting.
-* sort-lines:                            Sorting.
-* sort-numeric-fields:                   Sorting.
-* sort-pages:                            Sorting.
-* sort-paragraphs:                       Sorting.
-* sort-regexp-fields:                    Sorting.
-* sort-subr:                             Sorting.
-* sorting lists:                         Rearrangement.
-* sorting text:                          Sorting.
-* sound:                                 Beeping.
-* sound-alist:                           Beeping.
-* special:                               Major Mode Conventions.
-* special form descriptions:             A Sample Function Description.
-* special form evaluation:               Special Forms.
-* special forms:                         Primitive Function Type.
-* special forms (Edebug):                Instrumenting.
-* special forms for control structures:  Control Structures.
-* special-display-buffer-names:          Choosing Window.
-* special-display-frame-plist:           Choosing Window.
-* special-display-function:              Choosing Window.
-* special-display-popup-frame:           Choosing Window.
-* special-display-regexps:               Choosing Window.
-* specification (in a specifier):        Specifiers In-Depth.
-* specifier:                             Specifiers.
-* specifier type:                        Specifier Type.
-* specifier, domain:                     Specifiers In-Depth.
-* specifier, fallback:                   Specifier Instancing.
-* specifier, inst-list:                  Specifiers In-Depth.
-* specifier, inst-pair:                  Specifiers In-Depth.
-* specifier, instance:                   Specifiers In-Depth.
-* specifier, instancing:                 Specifiers In-Depth.
-* specifier, instantiator:               Specifiers In-Depth.
-* specifier, locale:                     Specifiers In-Depth.
-* specifier, specification:              Specifiers In-Depth.
-* specifier, tag:                        Specifiers In-Depth.
-* specifier, tag set:                    Specifiers In-Depth.
-* specifier-fallback:                    Retrieving Specifications.
-* specifier-instance:                    Specifier Instancing Functions.
-* specifier-instance-from-inst-list:     Specifier Instancing Functions.
-* specifier-locale-type-from-locale:     Other Specification Functions.
-* specifier-spec-list:                   Retrieving Specifications.
-* specifier-specs:                       Retrieving Specifications.
-* specifier-tag-list:                    Specifier Tag Functions.
-* specifier-tag-predicate:               Specifier Tag Functions.
-* specifier-type:                        Specifier Types.
-* specifierp:                            Specifiers.
-* speedups:                              Compilation Tips.
-* splicing (with backquote):             Backquote.
-* split-height-threshold:                Choosing Window.
-* split-line:                            Commands for Insertion.
-* split-path:                            Regexp Search.
-* split-string:                          Regexp Search.
-* split-window:                          Splitting Windows.
-* split-window-horizontally:             Splitting Windows.
-* split-window-vertically:               Splitting Windows.
-* splitting windows:                     Splitting Windows.
-* sqrt:                                  Math Functions.
-* stable sort:                           Rearrangement.
-* standard regexps used in editing:      Standard Regexps.
-* standard-case-table:                   Case Tables.
-* standard-category-table:               Category Tables.
-* standard-input:                        Input Functions.
-* standard-output:                       Output Variables.
-* standard-syntax-table:                 Standard Syntax Tables.
-* standards of coding style:             Tips.
-* start up of XEmacs:                    Start-up Summary.
-* start-process:                         Asynchronous Processes.
-* start-process-shell-command:           Asynchronous Processes.
-* startup.el:                            Start-up Summary.
-* stop points:                           Using Edebug.
-* stop-process:                          Signals to Processes.
-* stopping an infinite loop:             Infinite Loops.
-* stopping on events:                    Global Break Condition.
-* store-match-data:                      Entire Match Data.
-* stream (for printing):                 Output Streams.
-* stream (for reading):                  Input Streams.
-* string:                                Creating Strings.
-* string equality:                       Text Comparison.
-* string in keymap:                      Key Lookup.
-* string input stream:                   Input Streams.
-* string length:                         Sequence Functions.
-* string length, maximum when printing:  Output Variables.
-* string properties:                     String Properties.
-* string search:                         String Search.
-* string to character:                   String Conversion.
-* string to number:                      String Conversion.
-* string to object:                      Input Functions.
-* string, writing a doc string:          Documentation Basics.
-* string-equal:                          Text Comparison.
-* string-lessp:                          Text Comparison.
-* string-match:                          Regexp Search.
-* string-modified-tick:                  Modifying Strings.
-* string-to-char:                        String Conversion.
-* string-to-int:                         String Conversion.
-* string-to-number:                      String Conversion.
-* string<:                               Text Comparison.
-* string=:                               Text Comparison.
-* stringp:                               Predicates for Strings.
-* strings:                               Strings and Characters.
-* strings, formatting them:              Formatting Strings.
-* strings, modifying:                    Modifying Strings.
-* string quote:                          Syntax Class Table.
-* subprocess:                            Processes.
-* subr:                                  What Is a Function.
-* subrp:                                 What Is a Function.
-* subsidiary-coding-system:              Basic Coding System Functions.
-* subst-char-in-region:                  Substitution.
-* substitute-command-keys:               Keys in Documentation.
-* substitute-in-file-name:               File Name Expansion.
-* substitute-key-definition:             Changing Key Bindings.
-* substituting keys in documentation:    Keys in Documentation.
-* substring:                             Creating Strings.
-* subwindow type:                        Subwindow Type.
-* subwindow-image-instance-p:            Image Instance Types.
-* subwindowp:                            Subwindows.
-* suppress-keymap:                       Changing Key Bindings.
-* suspend (cf. no-redraw-on-reenter):    Refresh Screen.
-* suspend evaluation:                    Recursive Editing.
-* suspend-emacs:                         Suspending XEmacs.
-* suspend-hook:                          Suspending XEmacs.
-* suspend-resume-hook:                   Suspending XEmacs.
-* suspending XEmacs:                     Suspending XEmacs.
-* switch-to-buffer:                      Displaying Buffers.
-* switch-to-buffer-other-window:         Displaying Buffers.
-* switches on command line:              Command Line Arguments.
-* switching to a buffer:                 Displaying Buffers.
-* symbol:                                Symbols.
-* symbol components:                     Symbol Components.
-* symbol equality:                       Creating Symbols.
-* symbol evaluation:                     Symbol Forms.
-* symbol function indirection:           Function Indirection.
-* symbol in keymap:                      Key Lookup.
-* symbol name hashing:                   Creating Symbols.
-* symbol-function:                       Function Cells.
-* symbol-name:                           Creating Symbols.
-* symbol-plist:                          Object Plists.
-* symbol-value:                          Accessing Variables.
-* symbolp:                               Symbols.
-* symbol constituent:                    Syntax Class Table.
-* synchronous subprocess:                Synchronous Processes.
-* syntax classes:                        Syntax Descriptors.
-* syntax descriptor:                     Syntax Descriptors.
-* syntax error (Edebug):                 Backtracking.
-* syntax flags:                          Syntax Flags.
-* syntax for characters:                 Character Type.
-* syntax table:                          Syntax Tables.
-* syntax table example:                  Example Major Modes.
-* syntax table internals:                Syntax Table Internals.
-* syntax tables in modes:                Major Mode Conventions.
-* syntax-table:                          Syntax Table Functions.
-* syntax-table-p:                        Syntax Basics.
-* system-configuration:                  System Environment.
-* system-name:                           System Environment.
-* system-type:                           System Environment.
-* t:                                     Constant Variables.
-* t and truth:                           nil and t.
-* t input stream:                        Input Streams.
-* t output stream:                       Output Streams.
-* tab:                                   Character Type.
-* tab deletion:                          Deletion.
-* tab-stop-list:                         Indent Tabs.
-* tab-to-tab-stop:                       Indent Tabs.
-* tab-width:                             Usual Display.
-* tabs stops for indentation:            Indent Tabs.
-* tag (in a specifier):                  Specifiers In-Depth.
-* tag on run time stack:                 Catch and Throw.
-* tag set (in a specifier):              Specifiers In-Depth.
-* tan:                                   Math Functions.
-* tanh:                                  Math Functions.
-* TCP:                                   Network.
-* temacs:                                Building XEmacs.
-* temp-buffer-show-function:             Temporary Displays.
-* temp-directory:                        Unique File Names.
-* tenth:                                 List Elements.
-* TERM environment variable:             Terminal-Specific.
-* term-file-prefix:                      Terminal-Specific.
-* term-setup-hook:                       Terminal-Specific.
-* Termcap:                               Terminal-Specific.
-* terminal frame <1>:                    Frames.
-* terminal frame:                        Basic Windows.
-* terminal input:                        Terminal Input.
-* terminal input modes:                  Input Modes.
-* terminal output:                       Terminal Output.
-* terminal-device:                       Console Types and Device Classes.
-* terminal-specific initialization:      Terminal-Specific.
-* terminate keyboard macro:              Peeking and Discarding.
-* termscript file:                       Terminal Output.
-* terpri:                                Output Functions.
-* testing types:                         Type Predicates.
-* text:                                  Text.
-* text files and binary files:           Files and MS-DOS.
-* text insertion:                        Insertion.
-* text parsing:                          Syntax Tables.
-* text properties:                       Text Properties.
-* text properties in files:              Saving Properties.
-* text-char-description:                 Describing Characters.
-* text-image-instance-p:                 Image Instance Types.
-* text-mode-abbrev-table:                Standard Abbrev Tables.
-* text-mode-map:                         Standard Keymaps.
-* text-mode-syntax-table:                Standard Syntax Tables.
-* text-pointer-glyph:                    Mouse Pointer.
-* text-properties-at:                    Examining Properties.
-* text-property-any:                     Property Search.
-* text-property-not-all:                 Property Search.
-* third:                                 List Elements.
-* this-command:                          Command Loop Info.
-* this-command-keys:                     Command Loop Info.
-* throw:                                 Catch and Throw.
-* throw example:                         Recursive Editing.
-* tiled windows:                         Basic Windows.
-* timeout-event-p:                       Event Predicates.
-* timing programs:                       Compilation Tips.
-* tips:                                  Tips.
-* toggle-read-only:                      Read Only Buffers.
-* toolbar:                               Toolbar.
-* toolbar button type:                   Toolbar Button Type.
-* toolbar-buttons-captioned-p:           Other Toolbar Variables.
-* toolbar-make-button-list:              Toolbar Descriptor Format.
-* toolbar-map <1>:                       Standard Keymaps.
-* toolbar-map:                           Active Keymaps.
-* toolbar-pointer-glyph:                 Mouse Pointer.
-* toolbar-specifier-p <1>:               Specifier Types.
-* toolbar-specifier-p:                   Specifying the Toolbar.
-* ToolTalk:                              ToolTalk Support.
-* ToolTalk message:                      Sending Messages.
-* ToolTalk pattern:                      Receiving Messages.
-* top-gutter:                            Specifying a Gutter.
-* top-gutter-height:                     Other Gutter Variables.
-* top-gutter-visible-p:                  Other Gutter Variables.
-* top-level:                             Recursive Editing.
-* top-level form:                        Loading.
-* top-toolbar:                           Specifying the Toolbar.
-* top-toolbar-height:                    Other Toolbar Variables.
-* top-toolbar-visible-p:                 Other Toolbar Variables.
-* tq-close:                              Transaction Queues.
-* tq-create:                             Transaction Queues.
-* tq-enqueue:                            Transaction Queues.
-* tracing:                               Tracing.
-* transaction queue:                     Transaction Queues.
-* transcendental functions:              Math Functions.
-* translate-region:                      Substitution.
-* translating input events:              Translating Input.
-* transpose-regions:                     Transposition.
-* true:                                  nil and t.
-* truename (of file):                    Truenames.
-* truncate:                              Numeric Conversions.
-* truncate-lines:                        Truncation.
-* truncate-partial-width-windows:        Truncation.
-* truncation-glyph:                      Redisplay Glyphs.
-* truth value:                           nil and t.
-* try-completion:                        Basic Completion.
-* two's complement:                      Integer Basics.
-* type:                                  Lisp Data Types.
-* type checking:                         Type Predicates.
-* type predicates:                       Type Predicates.
-* type-of:                               Type Predicates.
-* unbinding keys:                        Key Binding Commands.
-* undefined:                             Functions for Key Lookup.
-* undefined in keymap:                   Key Lookup.
-* undefined key:                         Keymap Terminology.
-* undo avoidance:                        Substitution.
-* undo-boundary:                         Undo.
-* undo-limit:                            Maintaining Undo.
-* undo-strong-limit:                     Maintaining Undo.
-* unexec:                                Building XEmacs.
-* unhandled-file-name-directory:         Magic File Names.
-* unintern:                              Creating Symbols.
-* uninterned symbol:                     Creating Symbols.
-* uninterned symbols, printing:          Output Variables.
-* unique extents:                        Duplicable Extents.
-* universal-argument:                    Prefix Command Arguments.
-* unload-feature:                        Unloading.
-* unloading:                             Unloading.
-* unlock-buffer:                         File Locks.
-* unmap-frame-hook:                      Frame Hooks.
-* unread-command-event:                  Peeking and Discarding.
-* unread-command-events:                 Peeking and Discarding.
-* unreading:                             Input Streams.
-* unregister-tooltalk-pattern:           Elisp Interface for Receiving Messages.
-* unwind-protect:                        Cleanups.
-* unwinding:                             Cleanups.
-* up-list:                               List Motion.
-* upcase:                                Character Case.
-* upcase-region:                         Case Changes.
-* upcase-word:                           Case Changes.
-* update display:                        Refresh Screen.
-* update-directory-autoloads:            Autoload.
-* update-file-autoloads:                 Autoload.
-* upper case:                            Character Case.
-* upper case key sequence:               Key Sequence Input.
-* use-global-map:                        Active Keymaps.
-* use-hard-newlines:                     Filling.
-* use-left-overflow:                     Margin Primitives.
-* use-local-map:                         Active Keymaps.
-* use-right-overflow:                    Margin Primitives.
-* user name completion subroutines:      User Name Completion.
-* user option:                           Defining Variables.
-* user-defined error:                    Error Symbols.
-* user-full-name:                        User Identification.
-* user-home-directory:                   User Identification.
-* user-login-name:                       User Identification.
-* user-mail-address:                     User Identification.
-* user-name-all-completions:             User Name Completion.
-* user-name-completion:                  User Name Completion.
-* user-name-completion-1:                User Name Completion.
-* user-real-login-name:                  User Identification.
-* user-real-uid:                         User Identification.
-* user-uid:                              User Identification.
-* user-variable-p:                       Defining Variables.
-* user-variable-p example:               High-Level Completion.
-* valid-char-table-type-p:               Char Table Types.
-* valid-char-table-value-p:              Working With Char Tables.
-* valid-device-class-p:                  Console Types and Device Classes.
-* valid-device-type-p:                   Console Types and Device Classes.
-* valid-glyph-type-p:                    Glyph Types.
-* valid-image-instance-type-p:           Image Instance Types.
-* valid-image-instantiator-format-p:     Image Specifiers.
-* valid-inst-list-p:                     Specifier Validation Functions.
-* valid-instantiator-p:                  Specifier Validation Functions.
-* valid-plist-p:                         Property Lists.
-* valid-spec-list-p:                     Specifier Validation Functions.
-* valid-specifier-domain-p:              Specifier Validation Functions.
-* valid-specifier-locale-p:              Specifier Validation Functions.
-* valid-specifier-locale-type-p:         Specifier Validation Functions.
-* valid-specifier-tag-p <1>:             Specifier Validation Functions.
-* valid-specifier-tag-p:                 Specifier Tag Functions.
-* valid-specifier-tag-set-p:             Specifier Tag Functions.
-* valid-specifier-type-p:                Specifier Validation Functions.
-* value cell:                            Symbol Components.
-* value of expression:                   Evaluation.
-* values:                                Eval.
-* variable:                              Variables.
-* variable aliases:                      Variable Aliases.
-* variable definition:                   Defining Variables.
-* variable descriptions:                 A Sample Variable Description.
-* variable limit error:                  Local Variables.
-* variable-alias:                        Variable Aliases.
-* variable-documentation:                Documentation Basics.
-* variable-obsoleteness-doc:             Obsoleteness.
-* variables, buffer-local:               Buffer-Local Variables.
-* variables, indirect:                   Variable Aliases.
-* vc-mode:                               Modeline Variables.
-* vconcat:                               Vector Functions.
-* vector <1>:                            Vector Functions.
-* vector:                                Vectors.
-* vector evaluation:                     Self-Evaluating Forms.
-* vector length:                         Sequence Functions.
-* vectorp:                               Vector Functions.
-* verify-visited-file-modtime:           Modification Time.
-* version number (in file name):         File Name Components.
-* version-control:                       Numbered Backups.
-* vertical scrolling:                    Vertical Scrolling.
-* vertical tab:                          Character Type.
-* vertical-motion:                       Screen Lines.
-* vertical-motion-pixels:                Screen Lines.
-* view-file:                             Visiting Functions.
-* view-mode-map:                         Standard Keymaps.
-* view-register:                         Registers.
-* visible frame:                         Visibility of Frames.
-* visible-bell:                          Beeping.
-* visible-frame-list:                    Finding All Frames.
-* visited file:                          Buffer File Name.
-* visited file mode:                     Auto Major Mode.
-* visited-file-modtime:                  Modification Time.
-* visiting files:                        Visiting Files.
-* void function:                         Function Indirection.
-* void function cell:                    Function Cells.
-* void variable:                         Void Variables.
-* void-function:                         Function Cells.
-* void-variable:                         Void Variables.
-* waiting:                               Waiting.
-* waiting for command key input:         Peeking and Discarding.
-* waiting-for-user-input-p:              Sentinels.
-* wakeup:                                Subprocess Creation.
-* walk-windows:                          Cyclic Window Ordering.
-* weak hash table:                       Weak Hash Tables.
-* weak list:                             Weak Lists.
-* weak list type:                        Weak List Type.
-* weak-list-list:                        Weak Lists.
-* weak-list-p:                           Weak Lists.
-* weak-list-type:                        Weak Lists.
-* where-is-internal:                     Scanning Keymaps.
-* while:                                 Iteration.
-* whitespace:                            Character Type.
-* whitespace character:                  Syntax Class Table.
-* widen:                                 Narrowing.
-* widening:                              Narrowing.
-* window:                                Basic Windows.
-* window configuration (Edebug):         Edebug Display Update.
-* window configurations:                 Window Configurations.
-* window excursions:                     Excursions.
-* window ordering, cyclic:               Cyclic Window Ordering.
-* window point:                          Window Point.
-* window position <1>:                   Position of Window.
-* window position:                       Window Point.
-* window resizing:                       Resizing Windows.
-* window size:                           Size of Window.
-* window size, changing:                 Resizing Windows.
-* window splitting:                      Splitting Windows.
-* window system types:                   Window-System Types.
-* window top line:                       Window Start.
-* window-buffer:                         Buffers and Windows.
-* window-configuration-p:                Window Configurations.
-* window-dedicated-p:                    Choosing Window.
-* window-displayed-text-pixel-height:    Size of Window.
-* window-end:                            Window Start.
-* window-frame:                          Frames and Windows.
-* window-height:                         Size of Window.
-* window-highest-p:                      Position of Window.
-* window-hscroll:                        Horizontal Scrolling.
-* window-left-margin-pixel-width:        Margin Primitives.
-* window-live-p:                         Deleting Windows.
-* window-lowest-p:                       Position of Window.
-* window-min-height:                     Resizing Windows.
-* window-min-width:                      Resizing Windows.
-* window-minibuffer-p:                   Minibuffer Misc.
-* window-pixel-edges:                    Position of Window.
-* window-pixel-height:                   Size of Window.
-* window-pixel-width:                    Size of Window.
-* window-point:                          Window Point.
-* window-right-margin-pixel-width:       Margin Primitives.
-* window-setup-hook:                     Terminal-Specific.
-* window-size-change-functions:          Resizing Windows.
-* window-start:                          Window Start.
-* window-system objects:                 Faces and Window-System Objects.
-* window-text-area-pixel-edges:          Position of Window.
-* window-text-area-pixel-height:         Size of Window.
-* window-text-area-pixel-width:          Size of Window.
-* window-width:                          Size of Window.
-* windowp:                               Basic Windows.
-* windows, controlling precisely:        Buffers and Windows.
-* with-current-buffer:                   Excursions.
-* with-output-to-temp-buffer:            Temporary Displays.
-* with-selected-frame:                   Input Focus.
-* with-temp-file:                        Excursions.
-* word search:                           String Search.
-* word-search-backward:                  String Search.
-* word-search-forward:                   String Search.
-* words-include-escapes:                 Word Motion.
-* word constituent:                      Syntax Class Table.
-* write-abbrev-file:                     Abbrev Files.
-* write-char:                            Output Functions.
-* write-contents-hooks:                  Saving Buffers.
-* write-file:                            Saving Buffers.
-* write-file-hooks:                      Saving Buffers.
-* write-region:                          Writing to Files.
-* write-region-annotate-functions:       Saving Properties.
-* writing a documentation string:        Documentation Basics.
-* wrong-number-of-arguments:             Argument List.
-* wrong-type-argument:                   Type Predicates.
-* X:                                     X-Windows.
-* X resource type:                       X Resource Type.
-* X window frame:                        Frames.
-* x-allow-sendevents:                    X Miscellaneous.
-* x-bitmap-file-path <1>:                X Miscellaneous.
-* x-bitmap-file-path:                    Image Specifiers.
-* x-debug-events:                        X Miscellaneous.
-* x-debug-mode:                          X Miscellaneous.
-* x-disown-selection:                    X Selections.
-* x-display-visual-class:                Server Data.
-* x-emacs-application-class:             Resources.
-* x-find-larger-font:                    Font Instance Size.
-* x-find-smaller-font:                   Font Instance Size.
-* x-font-size:                           Font Instance Size.
-* x-get-cutbuffer:                       X Selections.
-* x-get-resource:                        Resources.
-* x-get-selection:                       X Selections.
-* x-grab-keyboard:                       Grabs.
-* x-grab-pointer:                        Grabs.
-* x-library-search-path:                 X Miscellaneous.
-* x-make-font-bold:                      Font Instance Characteristics.
-* x-make-font-bold-italic:               Font Instance Characteristics.
-* x-make-font-italic:                    Font Instance Characteristics.
-* x-make-font-unbold:                    Font Instance Characteristics.
-* x-make-font-unitalic:                  Font Instance Characteristics.
-* x-own-selection:                       X Selections.
-* x-put-resource:                        Resources.
-* x-server-vendor:                       Server Data.
-* x-server-version:                      Server Data.
-* x-set-frame-icon-pixmap:               Frame Titles.
-* x-store-cutbuffer:                     X Selections.
-* x-ungrab-keyboard:                     Grabs.
-* x-ungrab-pointer:                      Grabs.
-* x-valid-keysym-name-p:                 X Miscellaneous.
-* x-window-id:                           X Miscellaneous.
-* X-Windows:                             X-Windows.
-* XEmacs event standard notation:        Describing Characters.
-* xpm-color-symbols:                     Image Specifiers.
-* y-or-n-p:                              Yes-or-No Queries.
-* y-or-n-p-maybe-dialog-box:             Yes-or-No Queries.
-* yank:                                  Yank Commands.
-* yank suppression:                      Changing Key Bindings.
-* yank-pop:                              Yank Commands.
-* yes-or-no questions:                   Yes-or-No Queries.
-* yes-or-no-p:                           Yes-or-No Queries.
-* yes-or-no-p-dialog-box:                Yes-or-No Queries.
-* yes-or-no-p-maybe-dialog-box:          Yes-or-No Queries.
-* zero-length extent:                    Extent Endpoints.
-* zerop:                                 Predicates on Numbers.
-* zmacs-activate-region:                 The Region.
-* zmacs-activate-region-hook:            The Region.
-* zmacs-deactivate-region:               The Region.
-* zmacs-deactivate-region-hook:          The Region.
-* zmacs-region-stays:                    The Region.
-* zmacs-regions:                         The Region.
-* zmacs-update-region:                   The Region.
-* zmacs-update-region-hook:              The Region.
-* | in regexp:                           Syntax of Regexps.
+File: lispref.info,  Node: Standard Buffer-Local Variables,  Next: Standard Keymaps,  Prev: Standard Errors,  Up: Top
 
+Buffer-Local Variables
+**********************
 
+   The table below lists the general-purpose Emacs variables that are
+automatically local (when set) in each buffer.  Many Lisp packages
+define such variables for their internal use; we don't list them here.
+
+`abbrev-mode'
+     *note Abbrevs::
+
+`auto-fill-function'
+     *note Auto Filling::
+
+`buffer-auto-save-file-name'
+     *note Auto-Saving::
+
+`buffer-backed-up'
+     *note Backup Files::
+
+`buffer-display-table'
+     *note Display Tables::
+
+`buffer-file-format'
+     *note Format Conversion::
+
+`buffer-file-name'
+     *note Buffer File Name::
+
+`buffer-file-number'
+     *note Buffer File Name::
+
+`buffer-file-truename'
+     *note Buffer File Name::
+
+`buffer-file-type'
+     *note Files and MS-DOS::
+
+`buffer-invisibility-spec'
+     *note Invisible Text::
+
+`buffer-offer-save'
+     *note Saving Buffers::
+
+`buffer-read-only'
+     *note Read Only Buffers::
+
+`buffer-saved-size'
+     *note Point::
+
+`buffer-undo-list'
+     *note Undo::
+
+`cache-long-line-scans'
+     *note Text Lines::
+
+`case-fold-search'
+     *note Searching and Case::
+
+`ctl-arrow'
+     *note Usual Display::
+
+`comment-column'
+     *note Comments: (emacs)Comments.
+
+`default-directory'
+     *note System Environment::
+
+`defun-prompt-regexp'
+     *note List Motion::
+
+`fill-column'
+     *note Auto Filling::
+
+`goal-column'
+     *note Moving Point: (emacs)Moving Point.
+
+`left-margin'
+     *note Indentation::
+
+`local-abbrev-table'
+     *note Abbrevs::
+
+`local-write-file-hooks'
+     *note Saving Buffers::
+
+`major-mode'
+     *note Mode Help::
+
+`mark-active'
+     *note The Mark::
+
+`mark-ring'
+     *note The Mark::
+
+`minor-modes'
+     *note Minor Modes::
+
+`modeline-format'
+     *note Modeline Data::
+
+`modeline-buffer-identification'
+     *note Modeline Variables::
+
+`modeline-format'
+     *note Modeline Data::
+
+`modeline-modified'
+     *note Modeline Variables::
+
+`modeline-process'
+     *note Modeline Variables::
+
+`mode-name'
+     *note Modeline Variables::
+
+`overwrite-mode'
+     *note Insertion::
+
+`paragraph-separate'
+     *note Standard Regexps::
+
+`paragraph-start'
+     *note Standard Regexps::
+
+`point-before-scroll'
+     Used for communication between mouse commands and scroll-bar
+     commands.
+
+`require-final-newline'
+     *note Insertion::
+
+`selective-display'
+     *note Selective Display::
+
+`selective-display-ellipses'
+     *note Selective Display::
+
+`tab-width'
+     *note Usual Display::
+
+`truncate-lines'
+     *note Truncation::
+
+`vc-mode'
+     *note Modeline Variables::
+
+\1f
+File: lispref.info,  Node: Standard Keymaps,  Next: Standard Hooks,  Prev: Standard Buffer-Local Variables,  Up: Top
+
+Standard Keymaps
+****************
+
+   The following symbols are used as the names for various keymaps.
+Some of these exist when XEmacs is first started, others are loaded
+only when their respective mode is used.  This is not an exhaustive
+list.
+
+   Almost all of these maps are used as local maps.  Indeed, of the
+modes that presently exist, only Vip mode and Terminal mode ever change
+the global keymap.
+
+`bookmark-map'
+     A keymap containing bindings to bookmark functions.
+
+`Buffer-menu-mode-map'
+     A keymap used by Buffer Menu mode.
+
+`c++-mode-map'
+     A keymap used by C++ mode.
+
+`c-mode-map'
+     A keymap used by C mode.  A sparse keymap used by C mode.
+
+`command-history-map'
+     A keymap used by Command History mode.
+
+`ctl-x-4-map'
+     A keymap for subcommands of the prefix `C-x 4'.
+
+`ctl-x-5-map'
+     A keymap for subcommands of the prefix `C-x 5'.
+
+`ctl-x-map'
+     A keymap for `C-x' commands.
+
+`debugger-mode-map'
+     A keymap used by Debugger mode.
+
+`dired-mode-map'
+     A keymap for `dired-mode' buffers.
+
+`edit-abbrevs-map'
+     A keymap used in `edit-abbrevs'.
+
+`edit-tab-stops-map'
+     A keymap used in `edit-tab-stops'.
+
+`electric-buffer-menu-mode-map'
+     A keymap used by Electric Buffer Menu mode.
+
+`electric-history-map'
+     A keymap used by Electric Command History mode.
+
+`emacs-lisp-mode-map'
+     A keymap used by Emacs Lisp mode.
+
+`help-map'
+     A keymap for characters following the Help key.
+
+`Helper-help-map'
+     A keymap used by the help utility package.
+     It has the same keymap in its value cell and in its function cell.
+
+`Info-edit-map'
+     A keymap used by the `e' command of Info.
+
+`Info-mode-map'
+     A keymap containing Info commands.
+
+`isearch-mode-map'
+     A keymap that defines the characters you can type within
+     incremental search.
+
+`itimer-edit-map'
+     A keymap used when in Itimer Edit mode.
+
+`lisp-interaction-mode-map'
+     A keymap used by Lisp mode.
+
+`lisp-mode-map'
+     A keymap used by Lisp mode.
+
+     A keymap for minibuffer input with completion.
+
+`minibuffer-local-isearch-map'
+     A keymap for editing isearch strings in the minibuffer.
+
+`minibuffer-local-map'
+     Default keymap to use when reading from the minibuffer.
+
+`minibuffer-local-must-match-map'
+     A keymap for minibuffer input with completion, for exact match.
+
+`mode-specific-map'
+     The keymap for characters following `C-c'.  Note, this is in the
+     global map.  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.
+
+`modeline-map'
+     The keymap consulted for mouse-clicks on the modeline of a window.
+
+`objc-mode-map'
+     A keymap used in Objective C mode as a local map.
+
+`occur-mode-map'
+     A local keymap used by Occur mode.
+
+`overriding-local-map'
+     A keymap that overrides all other local keymaps.
+
+`query-replace-map'
+     A local keymap used for responses in `query-replace' and related
+     commands; also for `y-or-n-p' and `map-y-or-n-p'.  The functions
+     that use this map do not support prefix keys; they look up one
+     event at a time.
+
+`read-expression-map'
+     The minibuffer keymap used for reading Lisp expressions.
+
+`read-shell-command-map'
+     The minibuffer keymap used by shell-command and related commands.
+
+`shared-lisp-mode-map'
+     A keymap for commands shared by all sorts of Lisp modes.
+
+`text-mode-map'
+     A keymap used by Text mode.
+
+`toolbar-map'
+     The keymap consulted for mouse-clicks over a toolbar.
+
+`view-mode-map'
+     A keymap used by View mode.
+
+\1f
+File: lispref.info,  Node: Standard Hooks,  Next: Index,  Prev: Standard Keymaps,  Up: Top
+
+Standard Hooks
+**************
+
+   The following is a list of hook variables that let you provide
+functions to be called from within Emacs on suitable occasions.
+
+   Most of these variables have names ending with `-hook'.  They are
+"normal hooks", run by means of `run-hooks'.  The value of such a hook
+is a list of functions.  The recommended way to put a new function on
+such a hook is to call `add-hook'.  *Note Hooks::, for more information
+about using hooks.
+
+   The variables whose names end in `-function' have single functions
+as their values.  Usually there is a specific reason why the variable is
+not a normal hook, such as the need to pass arguments to the function.
+(In older Emacs versions, some of these variables had names ending in
+`-hook' even though they were not normal hooks.)
+
+   The variables whose names end in `-hooks' or `-functions' have lists
+of functions as their values, but these functions are called in a
+special way (they are passed arguments, or else their values are used).
+
+`activate-menubar-hook'
+
+`activate-popup-menu-hook'
+
+`ad-definition-hooks'
+
+`adaptive-fill-function'
+
+`add-log-current-defun-function'
+
+`after-change-functions'
+
+`after-delete-annotation-hook'
+
+`after-init-hook'
+
+`after-insert-file-functions'
+
+`after-revert-hook'
+
+`after-save-hook'
+
+`after-set-visited-file-name-hooks'
+
+`after-write-file-hooks'
+
+`auto-fill-function'
+
+`auto-save-hook'
+
+`before-change-functions'
+
+`before-delete-annotation-hook'
+
+`before-init-hook'
+
+`before-revert-hook'
+
+`blink-paren-function'
+
+`buffers-menu-switch-to-buffer-function'
+
+`c++-mode-hook'
+
+`c-delete-function'
+
+`c-mode-common-hook'
+
+`c-mode-hook'
+
+`c-special-indent-hook'
+
+`calendar-load-hook'
+
+`change-major-mode-hook'
+
+`command-history-hook'
+
+`comment-indent-function'
+
+`compilation-buffer-name-function'
+
+`compilation-exit-message-function'
+
+`compilation-finish-function'
+
+`compilation-parse-errors-function'
+
+`compilation-mode-hook'
+
+`create-console-hook'
+
+`create-device-hook'
+
+`create-frame-hook'
+
+`dabbrev-friend-buffer-function'
+
+`dabbrev-select-buffers-function'
+
+`delete-console-hook'
+
+`delete-device-hook'
+
+`delete-frame-hook'
+
+`deselect-frame-hook'
+
+`diary-display-hook'
+
+`diary-hook'
+
+`dired-after-readin-hook'
+
+`dired-before-readin-hook'
+
+`dired-load-hook'
+
+`dired-mode-hook'
+
+`disabled-command-hook'
+
+`display-buffer-function'
+
+`ediff-after-setup-control-frame-hook'
+
+`ediff-after-setup-windows-hook'
+
+`ediff-before-setup-control-frame-hook'
+
+`ediff-before-setup-windows-hook'
+
+`ediff-brief-help-message-function'
+
+`ediff-cleanup-hook'
+
+`ediff-control-frame-position-function'
+
+`ediff-display-help-hook'
+
+`ediff-focus-on-regexp-matches-function'
+
+`ediff-forward-word-function'
+
+`ediff-hide-regexp-matches-function'
+
+`ediff-keymap-setup-hook'
+
+`ediff-load-hook'
+
+`ediff-long-help-message-function'
+
+`ediff-make-wide-display-function'
+
+`ediff-merge-split-window-function'
+
+`ediff-meta-action-function'
+
+`ediff-meta-redraw-function'
+
+`ediff-mode-hook'
+
+`ediff-prepare-buffer-hook'
+
+`ediff-quit-hook'
+
+`ediff-registry-setup-hook'
+
+`ediff-select-hook'
+
+`ediff-session-action-function'
+
+`ediff-session-group-setup-hook'
+
+`ediff-setup-diff-regions-function'
+
+`ediff-show-registry-hook'
+
+`ediff-show-session-group-hook'
+
+`ediff-skip-diff-region-function'
+
+`ediff-split-window-function'
+
+`ediff-startup-hook'
+
+`ediff-suspend-hook'
+
+`ediff-toggle-read-only-function'
+
+`ediff-unselect-hook'
+
+`ediff-window-setup-function'
+
+`edit-picture-hook'
+
+`electric-buffer-menu-mode-hook'
+
+`electric-command-history-hook'
+
+`electric-help-mode-hook'
+
+`emacs-lisp-mode-hook'
+
+`fill-paragraph-function'
+
+`find-file-hooks'
+
+`find-file-not-found-hooks'
+
+`first-change-hook'
+
+`font-lock-after-fontify-buffer-hook'
+
+`font-lock-beginning-of-syntax-function'
+
+`font-lock-mode-hook'
+
+`fume-found-function-hook'
+
+`fume-list-mode-hook'
+
+`fume-rescan-buffer-hook'
+
+`fume-sort-function'
+
+`gnus-startup-hook'
+
+`hack-local-variables-hook'
+
+`highlight-headers-follow-url-function'
+
+`hyper-apropos-mode-hook'
+
+`indent-line-function'
+
+`indent-mim-hook'
+
+`indent-region-function'
+
+`initial-calendar-window-hook'
+
+`isearch-mode-end-hook'
+
+`isearch-mode-hook'
+
+`java-mode-hook'
+
+`kill-buffer-hook'
+
+`kill-buffer-query-functions'
+
+`kill-emacs-hook'
+
+`kill-emacs-query-functions'
+
+`kill-hooks'
+
+`LaTeX-mode-hook'
+
+`latex-mode-hook'
+
+`ledit-mode-hook'
+
+`lisp-indent-function'
+
+`lisp-interaction-mode-hook'
+
+`lisp-mode-hook'
+
+`list-diary-entries-hook'
+
+`load-read-function'
+
+`log-message-filter-function'
+
+`m2-mode-hook'
+
+`mail-citation-hook'
+
+`mail-mode-hook'
+
+`mail-setup-hook'
+
+`make-annotation-hook'
+
+`makefile-mode-hook'
+
+`map-frame-hook'
+
+`mark-diary-entries-hook'
+
+`medit-mode-hook'
+
+`menu-no-selection-hook'
+
+`mh-compose-letter-hook'
+
+`mh-folder-mode-hook'
+
+`mh-letter-mode-hook'
+
+`mim-mode-hook'
+
+`minibuffer-exit-hook'
+
+`minibuffer-setup-hook'
+
+`mode-motion-hook'
+
+`mouse-enter-frame-hook'
+
+`mouse-leave-frame-hook'
+
+`mouse-track-cleanup-hook'
+
+`mouse-track-click-hook'
+
+`mouse-track-down-hook'
+
+`mouse-track-drag-hook'
+
+`mouse-track-drag-up-hook'
+
+`mouse-track-up-hook'
+
+`mouse-yank-function'
+
+`news-mode-hook'
+
+`news-reply-mode-hook'
+
+`news-setup-hook'
+
+`nongregorian-diary-listing-hook'
+
+`nongregorian-diary-marking-hook'
+
+`nroff-mode-hook'
+
+`objc-mode-hook'
+
+`outline-mode-hook'
+
+`perl-mode-hook'
+
+`plain-TeX-mode-hook'
+
+`post-command-hook'
+
+`post-gc-hook'
+
+`pre-abbrev-expand-hook'
+
+`pre-command-hook'
+
+`pre-display-buffer-function'
+
+`pre-gc-hook'
+
+`pre-idle-hook'
+
+`print-diary-entries-hook'
+
+`prolog-mode-hook'
+
+`protect-innocence-hook'
+
+`remove-message-hook'
+
+`revert-buffer-function'
+
+`revert-buffer-insert-contents-function'
+
+`rmail-edit-mode-hook'
+
+`rmail-mode-hook'
+
+`rmail-retry-setup-hook'
+
+`rmail-summary-mode-hook'
+
+`scheme-indent-hook'
+
+`scheme-mode-hook'
+
+`scribe-mode-hook'
+
+`select-frame-hook'
+
+`send-mail-function'
+
+`shell-mode-hook'
+
+`shell-set-directory-error-hook'
+
+`special-display-function'
+
+`suspend-hook'
+
+`suspend-resume-hook'
+
+`temp-buffer-show-function'
+
+`term-setup-hook'
+
+`terminal-mode-hook'
+
+`terminal-mode-break-hook'
+
+`TeX-mode-hook'
+
+`tex-mode-hook'
+
+`text-mode-hook'
+
+`today-visible-calendar-hook'
+
+`today-invisible-calendar-hook'
+
+`tooltalk-message-handler-hook'
+
+`tooltalk-pattern-handler-hook'
+
+`tooltalk-unprocessed-message-hook'
+
+`unmap-frame-hook'
+
+`vc-checkin-hook'
+
+`vc-checkout-writable-buffer-hook'
+
+`vc-log-after-operation-hook'
+
+`vc-make-buffer-writable-hook'
+
+`view-hook'
+
+`vm-arrived-message-hook'
+
+`vm-arrived-messages-hook'
+
+`vm-chop-full-name-function'
+
+`vm-display-buffer-hook'
+
+`vm-edit-message-hook'
+
+`vm-forward-message-hook'
+
+`vm-iconify-frame-hook'
+
+`vm-inhibit-write-file-hook'
+
+`vm-key-functions'
+
+`vm-mail-hook'
+
+`vm-mail-mode-hook'
+
+`vm-menu-setup-hook'
+
+`vm-mode-hook'
+
+`vm-quit-hook'
+
+`vm-rename-current-buffer-function'
+
+`vm-reply-hook'
+
+`vm-resend-bounced-message-hook'
+
+`vm-resend-message-hook'
+
+`vm-retrieved-spooled-mail-hook'
+
+`vm-select-message-hook'
+
+`vm-select-new-message-hook'
+
+`vm-select-unread-message-hook'
+
+`vm-send-digest-hook'
+
+`vm-summary-mode-hook'
+
+`vm-summary-pointer-update-hook'
+
+`vm-summary-redo-hook'
+
+`vm-summary-update-hook'
+
+`vm-undisplay-buffer-hook'
+
+`vm-visit-folder-hook'
+
+`window-setup-hook'
+
+`write-contents-hooks'
+
+`write-file-data-hooks'
+
+`write-file-hooks'
+
+`write-region-annotate-functions'
+
+`x-lost-selection-hooks'
+
+`x-sent-selection-hooks'
+
+`zmacs-activate-region-hook'
+
+`zmacs-deactivate-region-hook'
+
+`zmacs-update-region-hook'