From f3e149172efaa2201aa6510a67d670b131bab1a8 Mon Sep 17 00:00:00 2001 From: tomo Date: Wed, 10 May 2000 08:31:45 +0000 Subject: [PATCH] XEmacs 21.2.33 "Melpomene". --- info/lispref.info-41 | 718 +++------ info/lispref.info-42 | 904 ++++++----- info/lispref.info-43 | 1042 +++++-------- info/lispref.info-44 | 1307 ++++++++-------- info/lispref.info-45 | 1504 +++++++++--------- info/lispref.info-46 | 4216 ++++++++++---------------------------------------- 6 files changed, 3227 insertions(+), 6464 deletions(-) diff --git a/info/lispref.info-41 b/info/lispref.info-41 index 417c4eb..a0cdfc2 100644 --- a/info/lispref.info-41 +++ b/info/lispref.info-41 @@ -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 () + * OpenLDAP 1.2 () * University of Michigan's LDAP 3.3 () @@ -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  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'. +  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.  -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::  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  -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  -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 + + +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:: + + +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 + + +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  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. - -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;")) - => # - - 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);") - => # - - 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;"))) - => # - - 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) - => # - - 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;")) - => # - (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;")) - => - (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;")) - => # - (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;")) - => # - (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;")) - => # - (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;")) - => # - (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;")) - => # - (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;")) - => # - (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');") - => # - (pq-cmd-status R) - => "INSERT 542086 1" - (setq R (pq-exec P "UPDATE xemacs_test SET rank='retired' - WHERE shikona='Wakanohana';")) - => # - (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');")) - => # - (pq-cmd-tuples R) - => "1" - (setq R (pq-exec P "SELECT * from xemacs_test;")) - => # - (pq-cmd-tuples R) - => "" - (setq R (pq-exec P "DELETE FROM xemacs_test - WHERE shikona LIKE '%hana';")) - => # - (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');")) - => # - (pq-oid-value R) - => 542089 - (setq R (pq-exec P "SELECT shikona FROM xemacs_test - WHERE rank='Maegashira';")) - => # - (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. - - -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") - => # - 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: - # - 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) - => # - - 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;")) - => # - - - 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. - diff --git a/info/lispref.info-42 b/info/lispref.info-42 index 333877f..4481943 100644 --- a/info/lispref.info-42 +++ b/info/lispref.info-42 @@ -50,6 +50,480 @@ may be included in a translation approved by the Free Software Foundation instead of in the original English.  +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;")) + => # + + 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);") + => # + + 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;"))) + => # + + 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) + => # + + 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;")) + => # + (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;")) + => + (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;")) + => # + (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;")) + => # + (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;")) + => # + (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;")) + => # + (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;")) + => # + (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;")) + => # + (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');") + => # + (pq-cmd-status R) + => "INSERT 542086 1" + (setq R (pq-exec P "UPDATE xemacs_test SET rank='retired' + WHERE shikona='Wakanohana';")) + => # + (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');")) + => # + (pq-cmd-tuples R) + => "1" + (setq R (pq-exec P "SELECT * from xemacs_test;")) + => # + (pq-cmd-tuples R) + => "" + (setq R (pq-exec P "DELETE FROM xemacs_test + WHERE shikona LIKE '%hana';")) + => # + (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');")) + => # + (pq-oid-value R) + => 542089 + (setq R (pq-exec P "SELECT shikona FROM xemacs_test + WHERE rank='Maegashira';")) + => # + (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. + + +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") + => # + 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: + # + 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) + => # + + 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;")) + => # + + - 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. + + 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. - -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. - - -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. - - -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::. - - -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. - - -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. - diff --git a/info/lispref.info-43 b/info/lispref.info-43 index 144d591..d39722d 100644 --- a/info/lispref.info-43 +++ b/info/lispref.info-43 @@ -50,6 +50,436 @@ may be included in a translation approved by the Free Software Foundation instead of in the original English.  +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. + + +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. + + +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::. + + +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. + + +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. + + 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'.) - -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. - - -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. - - -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. - - -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!', `:' - 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 except following - another . (That is, it is ok to bind a sequence ending in - ` '.) - - The reason for this rule is that a non-prefix binding for 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. - - -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::. - - -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. - - -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 (`lisp-indent-line') automatically -indent comments according to these conventions, depending on the number -of semicolons. *Note Manipulating Comments: (emacs)Comments. - - -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 - ;; Maintainer: Eric S. Raymond - ;; 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 - ;; Dave Sill - ;; Dave Brennan - ;; Eric Raymond - -`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. - - -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. - - -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. - diff --git a/info/lispref.info-45 b/info/lispref.info-45 index f6e4355..3a84e99 100644 --- a/info/lispref.info-45 +++ b/info/lispref.info-45 @@ -50,6 +50,701 @@ may be included in a translation approved by the Free Software Foundation instead of in the original English.  +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 except following + another . (That is, it is ok to bind a sequence ending in + ` '.) + + The reason for this rule is that a non-prefix binding for 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. + + +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::. + + +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. + + +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 (`lisp-indent-line') automatically +indent comments according to these conventions, depending on the number +of semicolons. *Note Manipulating Comments: (emacs)Comments. + + +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 + ;; Maintainer: Eric S. Raymond + ;; 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 + ;; Dave Sill + ;; Dave Brennan + ;; Eric Raymond + +`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. + + +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. + + +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. + + 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::. - -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:: - - -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. - - -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' diff --git a/info/lispref.info-46 b/info/lispref.info-46 index 11acac1..7a6e6ca 100644 --- a/info/lispref.info-46 +++ b/info/lispref.info-46 @@ -50,3415 +50,811 @@ may be included in a translation approved by the Free Software Foundation instead of in the original English.  -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. -* ¬ (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. -* : 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:: + + +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. + + +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' -- 1.7.10.4