XEmacs 21.4.19 (Constant Variable).
authortomo <tomo>
Tue, 30 May 2006 07:08:42 +0000 (07:08 +0000)
committertomo <tomo>
Tue, 30 May 2006 07:08:42 +0000 (07:08 +0000)
66 files changed:
ChangeLog
configure
configure.in
etc/NEWS
etc/OXYMORONS
etc/PACKAGES
etc/package-index.LATEST.gpg
info/cl.info
info/custom.info
info/emodules.info
info/external-widget.info
info/info.info
info/internals.info
info/internals.info-1
info/internals.info-2
info/lispref.info
info/lispref.info-1
info/lispref.info-2
info/lispref.info-3
info/lispref.info-4
info/lispref.info-5
info/lispref.info-6
info/lispref.info-7
info/lispref.info-8
info/lispref.info-9
info/new-users-guide.info
info/standards.info
info/term.info
info/termcap.info
info/texinfo.info
info/texinfo.info-1
info/texinfo.info-2
info/widget.info
info/xemacs-faq.info
info/xemacs-faq.info-1
info/xemacs-faq.info-2
info/xemacs.info
info/xemacs.info-1
info/xemacs.info-2
info/xemacs.info-3
info/xemacs.info-4
lib-src/ChangeLog
lisp/ChangeLog
lisp/auto-autoloads.el
lisp/easymenu.el
lisp/find-paths.el
lisp/font.el
lisp/minibuf.el
lisp/package-get.el
lwlib/ChangeLog
man/ChangeLog
man/xemacs-faq.texi
netinstall/ChangeLog
nt/ChangeLog
src/ChangeLog
src/callproc.c
src/console.c
src/database.c
src/mule-ccl.c
src/objects-gtk.c
src/objects-x.c
src/sysdir.h
tests/ChangeLog
tests/automated/mule-tests.el
tests/automated/syntax-tests.el
version.sh

index e47efd0..ebbbab5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,39 @@
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * etc/package-index.LATEST.gpg: Updated with latest package data.
+
+2005-12-18  Ilya N. Golubev  <gin@mo.msk.ru>
+
+       Merge from 21.5.
+       * configure.in: Fixed `LDAP_OPT_ON' libraries configuration
+       introduced in local 2005-03-13 change of `configure.in'.  However,
+       do not check for internal `-lber' `ber_pvt_opt_on' symbol as done
+       in upstream.  This symbol is not part of any published interface,
+       it may exist or not exist, depending on openldap version.  Cryptic
+       comment before using it in upstream 21.5 source did not state
+       precisely under which circumstances checking for it was useful,
+       which sort of user code tried to link the symbol.  So in local
+       21.5 dismissed both the code and the comment without writing a
+       cleaner equivalent.
+       * etc/NEWS: Document.
+
+2005-12-13  Vin Shelton  <acs@xemacs.org>
+
+       * etc/package-index.LATEST.gpg: Updated with latest package data.
+
+2005-12-04  Vin Shelton  <acs@xemacs.org>
+
+       * etc/OXYMORONS: insert 'Social Property' for 21.4.18.
+       * etc/NEWS: document motif deprecation and defaulting
+       --with-widgets to off.
+
+2005-12-04  Ville Skyttä  <scop@xemacs.org>
+       * etc/PACKAGES: Fix description of xetla.
+
 2005-12-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
@@ -20,7 +56,7 @@
 2005-03-12  Aidan Kehoe  <kehoea@parhasard.net>
 
        * configure.in (XE_COMPUTE_RUNPATH): Check XtRegisterDrawable
-       availability. 
+       availability.
 
 2005-04-11  Norbert Koch  <viteno@xemacs.org>
 
 2004-01-25  Steve Youngs  <youngs@xemacs.org>
 
        * etc/package-index.LATEST.gpg: New, replaces
-       `package-index.LATEST.pgp'. 
+       `package-index.LATEST.pgp'.
 
        * etc/package-index.LATEST.pgp: Removed, replaced with
-       `package-index.LATEST.gpg'. 
+       `package-index.LATEST.gpg'.
 
 2004-01-20  Jerry James  <james@xemacs.org>
 
 
 2003-07-03  Stephen J. Turnbull  <stephen@xemacs.org>
 
-       * etc/README.HYPERBOLE: 
+       * etc/README.HYPERBOLE:
        * etc/README.OO-BROWSER:
        Update.
 
 
 2003-03-20  Stephen J. Turnbull  <stephen@xemacs.org>
 
-       * configure.in (INTPTR_T_IN_CYGWIN_TYPES_H): 
+       * configure.in (INTPTR_T_IN_CYGWIN_TYPES_H):
        Cygwin defines these types in <cygwin/types.h>.  Detect and don't
        duplicate the definition.
 
        gcc changed the name of the `-mthreads' option to `-pthread'
        on 2000-06-12.
 
-       Be more careful when appending "_r" to various names of xlc, 
+       Be more careful when appending "_r" to various names of xlc,
        so that users can specify --compiler=/absolute/path/to/xlc
 
 2003-01-27  Martin Buchholz  <martin@xemacs.org>
 
 2003-01-27  Martin Buchholz  <martin@xemacs.org>
 
-       * configure.in (athena_3d): 
+       * configure.in (athena_3d):
        AC_CHECK_LIB must always take a function as
        argument, never a global variable.  Some linkers can tell the
        difference.  So change:
 
 2003-01-05  Rick Rankin  <rick_rankin@yahoo.com>
 
-        * configure.in: Add -lkernel32 to the list of system libraries 
+        * configure.in: Add -lkernel32 to the list of system libraries
         linked under Cygwin. Needed for IsBadReadPtr().
 
 2003-01-03  Stephen J. Turnbull  <stephen@xemacs.org>
 
 2003-01-02  Stephen J. Turnbull  <stephen@xemacs.org>
 
-       * configure.in (Generate Installation): 
-       * configure.usage (--use-union-type): 
+       * configure.in (Generate Installation):
+       * configure.usage (--use-union-type):
        * PROBLEMS (XEmacs crashes mysteriously):
        Deprecate --use-union-type for production builds.
 
 
 2002-10-31  John Paul Wallington  <jpw@shootybangbang.com>
 
-       * info/dir (File): button1 on a highlighted word doesn't 
+       * info/dir (File): button1 on a highlighted word doesn't
        follow that cross-reference.
 
 2002-11-11  Stephen J. Turnbull  <steve@tleepslib.sk.tsukuba.ac.jp>
 2002-10-23  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * Makefile.in.in (lisp/auto-autoloads.el):
-       (lisp/custom-load.el): 
+       (lisp/custom-load.el):
        Use -no-autoloads for these targets; can't load 'em if they ain't.
 
 2002-10-18  Stephen J. Turnbull  <stephen@xemacs.org>
        * configure.in (Check for POSIX functions):  New section head.
        getaddrinfo is detected on HP-UX 11.XX, but appears to be
        non-functional.  Disable it.  Based on work by Darryl Okahata.
-       
+
 2002-09-27  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * PROBLEMS (Running, General): Missing charset in FontSet warnings.
 
        * configure.in: Detect MacOS/X "Darwin".
        Thanks to Greg Parker <gparker@cs.stanford.edu>.
-       
+
 2002-03-30  Steve Youngs  <youngs@xemacs.org>
 
        * etc/package-index.LATEST.pgp: Update to current reality.
 2001-12-13  William M. Perry  <wmperry@gnu.org>
 
        * configure.in (GTK): add -Wno-shadow.
-       
+
 2002-02-04  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * etc/BETA: Synch to 21.5.
        * configure.usage (--with-dragndrop): added GTK to list of protocols
        * configure.usage (--mail-locking): added `locking' or `mmdf'. to list
        of options
-       
-       
+
+
 2001-09-25  Didier Verna  <didier@xemacs.org>
 
        * configure.ac: new. Autoconf 2.5x guard.
 
 2001-05-04  Martin Buchholz  <martin@xemacs.org>
 
-       * configure.in (opsys): 
+       * configure.in (opsys):
        Use lower-case `uname -s` as the default value for opsys.
        The previous code effectively did the non-sensical
        opsys=$canonical because [] magically disappear in configure.in.
        * etc/OXYMORONS: Add 2 oxymorons, clean up numbering, close RFC.
 
        * etc/NEWS: Fix typo.
-       
+
        * configure.in:
        * configure:
        Fix typo, add -Wsign-compare if GCC, run autoconf.
 
 2001-03-23  Stephen J. Turnbull  <stephen@xemacs.org>
 
-       * etc/gnuserv.1 (UNIX_DOMAIN_SOCKETS: 
+       * etc/gnuserv.1 (UNIX_DOMAIN_SOCKETS:
        * PROBLEMS (Problems with running XEmacs):
        Document TMPDIR lossage in gnuserv/gnuclient.
 
index 78bdaf8..1fc9ae0 100755 (executable)
--- a/configure
+++ b/configure
@@ -8039,6 +8039,102 @@ fi
 fi
 
 
+      if test yes = "$with_ldap" -a yes != "$ldap_needs_lber";then
+       echo $ac_n "checking for LDAP_OPT_ON definition""... $ac_c" 1>&6
+echo "configure:8045: checking for LDAP_OPT_ON definition" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8048 "configure"
+#include "confdefs.h"
+#include <lber.h>
+#include <ldap.h>
+#ifdef LDAP_OPT_ON
+/* Relying on const defined by ac_c_const (upper case). */
+const void *const v = LDAP_OPT_ON;
+#else /* !defined (LDAP_OPT_ON) */
+choke me
+#endif /* !defined (LDAP_OPT_ON) */
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:8062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  xe_cv_have_LDAP_OPT_ON=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  xe_cv_have_LDAP_OPT_ON=no
+fi
+rm -f conftest*
+
+echo "$ac_t""$xe_cv_have_LDAP_OPT_ON" 1>&6
+       if test yes = "$xe_cv_have_LDAP_OPT_ON";then
+         echo $ac_n "checking LDAP_OPT_ON linking""... $ac_c" 1>&6
+echo "configure:8076: checking LDAP_OPT_ON linking" >&5
+
+xe_save_LIBS="$LIBS"
+           LIBS="-lldap $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 8081 "configure"
+#include "confdefs.h"
+#include <lber.h>
+#include <ldap.h>
+const void *const v = LDAP_OPT_ON;
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:8090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  xe_cv_LDAP_OPT_ON_links=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  xe_cv_LDAP_OPT_ON_links=no
+fi
+rm -f conftest*
+           LIBS="$xe_save_LIBS"
+
+echo "$ac_t""$xe_cv_LDAP_OPT_ON_links" 1>&6
+         if test yes != "$xe_cv_LDAP_OPT_ON_links";then
+           ldap_needs_lber=yes ldap_other_libs=-llber
+           echo $ac_n "checking LDAP_OPT_ON linking with -llber""... $ac_c" 1>&6
+echo "configure:8106: checking LDAP_OPT_ON linking with -llber" >&5
+
+xe_save_LIBS="$LIBS"
+             LIBS="-lldap $ldap_other_libs $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 8111 "configure"
+#include "confdefs.h"
+#include <lber.h>
+#include <ldap.h>
+const void *const v = LDAP_OPT_ON;
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:8120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  xe_cv_LDAP_OPT_ON_links_w_lber=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  xe_cv_LDAP_OPT_ON_links_w_lber=no
+fi
+rm -f conftest*
+             LIBS="$xe_save_LIBS"
+
+echo "$ac_t""$xe_cv_LDAP_OPT_ON_links_w_lber" 1>&6
+           if test yes != "$xe_cv_LDAP_OPT_ON_links_w_lber";then
+             with_ldap=no
+           fi
+         fi
+       fi
+      fi
       if test yes = "$with_ldap";then
        if test yes = "$ldap_needs_des";then
          ldap_libs="-ldes $ldap_libs" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-ldes\" to \$ldap_libs"; fi
@@ -8056,10 +8152,10 @@ fi
   else
     save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS"
     echo $ac_n "checking for ldap_open""... $ac_c" 1>&6
-echo "configure:8060: checking for ldap_open" >&5
+echo "configure:8156: checking for ldap_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8063 "configure"
+#line 8159 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char ldap_open(); below.  */
@@ -8082,7 +8178,7 @@ ldap_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_ldap_open=yes"
 else
@@ -8122,10 +8218,10 @@ EOF
   for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8126: checking for $ac_func" >&5
+echo "configure:8222: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8129 "configure"
+#line 8225 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8148,7 +8244,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8152: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8179,20 +8275,20 @@ fi
 
 if test "$with_postgresql" != "no"; then
   echo "checking for PostgreSQL" 1>&6
-echo "configure:8183: checking for PostgreSQL" >&5
+echo "configure:8279: checking for PostgreSQL" >&5
 
   for header_dir in "" "pgsql/" "postgresql/"; do
     ac_safe=`echo "${header_dir}libpq-fe.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${header_dir}libpq-fe.h""... $ac_c" 1>&6
-echo "configure:8188: checking for ${header_dir}libpq-fe.h" >&5
+echo "configure:8284: checking for ${header_dir}libpq-fe.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8191 "configure"
+#line 8287 "configure"
 #include "confdefs.h"
 #include <${header_dir}libpq-fe.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8292: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8216,12 +8312,12 @@ fi
 
   test -n "$libpq_fe_h_file" && { 
 echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6
-echo "configure:8220: checking for PQconnectdb in -lpq" >&5
+echo "configure:8316: checking for PQconnectdb in -lpq" >&5
 ac_lib_var=`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpq "
 cat > conftest.$ac_ext <<EOF
-#line 8225 "configure"
+#line 8321 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8232,7 +8328,7 @@ int main() {
 PQconnectdb()
 ; return 0; }
 EOF
-if { (eval echo configure:8236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8265,12 +8361,12 @@ EOF
 
     
 echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6
-echo "configure:8269: checking for PQconnectStart in -lpq" >&5
+echo "configure:8365: checking for PQconnectStart in -lpq" >&5
 ac_lib_var=`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpq "
 cat > conftest.$ac_ext <<EOF
-#line 8274 "configure"
+#line 8370 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8281,7 +8377,7 @@ int main() {
 PQconnectStart()
 ; return 0; }
 EOF
-if { (eval echo configure:8285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8329,7 +8425,7 @@ fi
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:8333: checking for graphics libraries" >&5
+echo "configure:8429: checking for graphics libraries" >&5
 
       libpath_xpm=
   incpath_xpm=
@@ -8355,10 +8451,10 @@ echo "configure:8333: checking for graphics libraries" >&5
     CFLAGS=""$incpath_xpm" $CFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi
     LDFLAGS=""$libpath_xpm" $LDFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi
     echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6
-echo "configure:8359: checking for Xpm - no older than 3.4f" >&5
+echo "configure:8455: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 8362 "configure"
+#line 8458 "configure"
 #include "confdefs.h"
 #define XPM_NUMBERS
 #include <X11/xpm.h>
@@ -8367,7 +8463,7 @@ echo "configure:8359: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:8371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest dummy_arg; xpm_status=$?;
       if test "$xpm_status" = "0"; then
@@ -8411,17 +8507,17 @@ EOF
     libs_x="-lXpm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXpm\" to \$libs_x"; fi
     CFLAGS=""$incpath_xpm" $CFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi
     echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6
-echo "configure:8415: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:8511: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 8418 "configure"
+#line 8514 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:8425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -8447,15 +8543,15 @@ EOF
 
     test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for compface.h""... $ac_c" 1>&6
-echo "configure:8451: checking for compface.h" >&5
+echo "configure:8547: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8454 "configure"
+#line 8550 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8459: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8478,12 +8574,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:8482: checking for UnGenFace in -lcompface" >&5
+echo "configure:8578: checking for UnGenFace in -lcompface" >&5
 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcompface "
 cat > conftest.$ac_ext <<EOF
-#line 8487 "configure"
+#line 8583 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8494,7 +8590,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:8498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8546,12 +8642,12 @@ EOF
       if test "$with_png $with_tiff" != "no no"; then
     
 echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6
-echo "configure:8550: checking for inflate in -lc" >&5
+echo "configure:8646: checking for inflate in -lc" >&5
 ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 8555 "configure"
+#line 8651 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8562,7 +8658,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8581,12 +8677,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:8585: checking for inflate in -lz" >&5
+echo "configure:8681: checking for inflate in -lz" >&5
 ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lz "
 cat > conftest.$ac_ext <<EOF
-#line 8590 "configure"
+#line 8686 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8597,7 +8693,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8616,12 +8712,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:8620: checking for inflate in -lgz" >&5
+echo "configure:8716: checking for inflate in -lgz" >&5
 ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgz "
 cat > conftest.$ac_ext <<EOF
-#line 8625 "configure"
+#line 8721 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8632,7 +8728,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8662,15 +8758,15 @@ fi
 
     test -z "$with_jpeg" && { ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6
-echo "configure:8666: checking for jpeglib.h" >&5
+echo "configure:8762: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8669 "configure"
+#line 8765 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8770: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8693,12 +8789,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:8697: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:8793: checking for jpeg_destroy_decompress in -ljpeg" >&5
 ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ljpeg "
 cat > conftest.$ac_ext <<EOF
-#line 8702 "configure"
+#line 8798 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8709,7 +8805,7 @@ int main() {
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:8713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8745,10 +8841,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:8749: checking for pow" >&5
+echo "configure:8845: checking for pow" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8752 "configure"
+#line 8848 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -8771,7 +8867,7 @@ pow();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_pow=yes"
 else
@@ -8792,15 +8888,15 @@ fi
  }
   test -z "$with_png" && { ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for png.h""... $ac_c" 1>&6
-echo "configure:8796: checking for png.h" >&5
+echo "configure:8892: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8799 "configure"
+#line 8895 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8804: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8823,12 +8919,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:8827: checking for png_read_image in -lpng" >&5
+echo "configure:8923: checking for png_read_image in -lpng" >&5
 ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpng "
 cat > conftest.$ac_ext <<EOF
-#line 8832 "configure"
+#line 8928 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8839,7 +8935,7 @@ int main() {
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:8843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8939: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8862,10 +8958,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:8866: checking for workable png version information" >&5
+echo "configure:8962: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 8869 "configure"
+#line 8965 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -8873,7 +8969,7 @@ echo "configure:8866: checking for workable png version information" >&5
     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}
 EOF
-if { (eval echo configure:8877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest dummy_arg; png_status=$?;
       if test "$png_status" = "0"; then
@@ -8916,15 +9012,15 @@ EOF
 
     test -z "$with_tiff" && { ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6
-echo "configure:8920: checking for tiffio.h" >&5
+echo "configure:9016: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8923 "configure"
+#line 9019 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9024: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8947,12 +9043,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:8951: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:9047: checking for TIFFClientOpen in -ltiff" >&5
 ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltiff "
 cat > conftest.$ac_ext <<EOF
-#line 8956 "configure"
+#line 9052 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8963,7 +9059,7 @@ int main() {
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:8967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9002,15 +9098,15 @@ fi
 if test "$with_gtk" = "yes"; then
     test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for compface.h""... $ac_c" 1>&6
-echo "configure:9006: checking for compface.h" >&5
+echo "configure:9102: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9009 "configure"
+#line 9105 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9110: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9033,12 +9129,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:9037: checking for UnGenFace in -lcompface" >&5
+echo "configure:9133: checking for UnGenFace in -lcompface" >&5
 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcompface "
 cat > conftest.$ac_ext <<EOF
-#line 9042 "configure"
+#line 9138 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9049,7 +9145,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:9053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9088,12 +9184,12 @@ fi
 
 if test "$with_x11" = "yes"; then
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:9092: checking for X11 graphics libraries" >&5
+echo "configure:9188: checking for X11 graphics libraries" >&5
 fi
 
 if test "$with_x11" = "yes"; then
   echo "checking for the Athena widgets" 1>&6
-echo "configure:9097: checking for the Athena widgets" >&5
+echo "configure:9193: checking for the Athena widgets" >&5
 
     case "$with_athena" in
         "xaw" | "")    athena_variant=Xaw      athena_3d=no  ;;
@@ -9109,12 +9205,12 @@ echo "configure:9097: checking for the Athena widgets" >&5
     if test "$athena_3d" = "no"; then
     
 echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9113: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+echo "configure:9209: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 9118 "configure"
+#line 9214 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9125,7 +9221,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:9129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9141,12 +9237,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
           
 echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9145: checking for $athena_3d_function in -l$athena_variant" >&5
+echo "configure:9241: checking for $athena_3d_function in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 9150 "configure"
+#line 9246 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9157,7 +9253,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9188,12 +9284,12 @@ fi
   else
         
 echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9192: checking for $athena_3d_function in -l$athena_variant" >&5
+echo "configure:9288: checking for $athena_3d_function in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 9197 "configure"
+#line 9293 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9204,7 +9300,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9222,12 +9318,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for $athena_3d_function in -lXaw""... $ac_c" 1>&6
-echo "configure:9226: checking for $athena_3d_function in -lXaw" >&5
+echo "configure:9322: checking for $athena_3d_function in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<EOF
-#line 9231 "configure"
+#line 9327 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9238,7 +9334,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9269,15 +9365,15 @@ fi
     if test "$athena_3d" = "no"; then
     ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9273: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9369: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9276 "configure"
+#line 9372 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9377: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9297,15 +9393,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6
-echo "configure:9301: checking for X11/Xaw/XawInit.h" >&5
+echo "configure:9397: checking for X11/Xaw/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9304 "configure"
+#line 9400 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9331,15 +9427,15 @@ fi
   else
             ac_safe=`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6
-echo "configure:9335: checking for X11/$athena_variant/XawInit.h" >&5
+echo "configure:9431: checking for X11/$athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9338 "configure"
+#line 9434 "configure"
 #include "confdefs.h"
 #include <X11/$athena_variant/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9343: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9356,15 +9452,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9360: checking for X11/$athena_variant/ThreeD.h" >&5
+echo "configure:9456: checking for X11/$athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9363 "configure"
+#line 9459 "configure"
 #include "confdefs.h"
 #include <X11/$athena_variant/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9392,15 +9488,15 @@ fi
         if test -z "$athena_h_path"; then
       ac_safe=`echo "$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $athena_variant/XawInit.h""... $ac_c" 1>&6
-echo "configure:9396: checking for $athena_variant/XawInit.h" >&5
+echo "configure:9492: checking for $athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9399 "configure"
+#line 9495 "configure"
 #include "confdefs.h"
 #include <$athena_variant/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9417,15 +9513,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $athena_variant/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9421: checking for $athena_variant/ThreeD.h" >&5
+echo "configure:9517: checking for $athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9424 "configure"
+#line 9520 "configure"
 #include "confdefs.h"
 #include <$athena_variant/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9454,15 +9550,15 @@ fi
         if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
       ac_safe=`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6
-echo "configure:9458: checking for X11/Xaw3d/XawInit.h" >&5
+echo "configure:9554: checking for X11/Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9461 "configure"
+#line 9557 "configure"
 #include "confdefs.h"
 #include <X11/Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9479,15 +9575,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9483: checking for X11/Xaw3d/ThreeD.h" >&5
+echo "configure:9579: checking for X11/Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9486 "configure"
+#line 9582 "configure"
 #include "confdefs.h"
 #include <X11/Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9491: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9519,15 +9615,15 @@ fi
         if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
       ac_safe=`echo "Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xaw3d/XawInit.h""... $ac_c" 1>&6
-echo "configure:9523: checking for Xaw3d/XawInit.h" >&5
+echo "configure:9619: checking for Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9526 "configure"
+#line 9622 "configure"
 #include "confdefs.h"
 #include <Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9627: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9544,15 +9640,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xaw3d/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9548: checking for Xaw3d/ThreeD.h" >&5
+echo "configure:9644: checking for Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9551 "configure"
+#line 9647 "configure"
 #include "confdefs.h"
 #include <Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9652: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9584,15 +9680,15 @@ fi
             if test -z "$athena_h_path"; then
       ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9588: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9684: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9591 "configure"
+#line 9687 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9692: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9631,15 +9727,15 @@ fi
 if test "$with_x11" = "yes"; then
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:9635: checking for Xm/Xm.h" >&5
+echo "configure:9731: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9638 "configure"
+#line 9734 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9739: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9656,12 +9752,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6
-echo "configure:9660: checking for XmStringFree in -lXm" >&5
+echo "configure:9756: checking for XmStringFree in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 9665 "configure"
+#line 9761 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9672,7 +9768,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:9676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9701,9 +9797,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:9705: checking for Lesstif" >&5
+echo "configure:9801: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 9707 "configure"
+#line 9803 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -10149,7 +10245,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:10153: checking for Mule-related features" >&5
+echo "configure:10249: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -10174,15 +10270,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10178: checking for $ac_hdr" >&5
+echo "configure:10274: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10181 "configure"
+#line 10277 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10213,12 +10309,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:10217: checking for strerror in -lintl" >&5
+echo "configure:10313: checking for strerror in -lintl" >&5
 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lintl "
 cat > conftest.$ac_ext <<EOF
-#line 10222 "configure"
+#line 10318 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10229,7 +10325,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:10233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:10266: checking for Mule input methods" >&5
+echo "configure:10362: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:10269: checking for XIM" >&5
+echo "configure:10365: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:10272: checking for XOpenIM in -lX11" >&5
+echo "configure:10368: checking for XOpenIM in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 10277 "configure"
+#line 10373 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10284,7 +10380,7 @@ int main() {
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:10288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
             if test "$need_motif $have_lesstif" = "yes no"; then
       
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:10312: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:10408: checking for XmImMbLookupString in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 10317 "configure"
+#line 10413 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10324,7 +10420,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:10328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     elif test "$have_motif $have_lesstif $with_xim" = "yes no no"; then
       
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:10351: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:10447: checking for XmImMbLookupString in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 10356 "configure"
+#line 10452 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10363,7 +10459,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:10367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10428,15 +10524,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:10432: checking for XFontSet" >&5
+echo "configure:10528: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:10435: checking for XmbDrawString in -lX11" >&5
+echo "configure:10531: checking for XmbDrawString in -lX11" >&5
 ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 10440 "configure"
+#line 10536 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10447,7 +10543,7 @@ int main() {
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:10451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10487,15 +10583,15 @@ EOF
     test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
   test -z "$with_wnn" && { ac_safe=`echo "wnn/jllib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for wnn/jllib.h""... $ac_c" 1>&6
-echo "configure:10491: checking for wnn/jllib.h" >&5
+echo "configure:10587: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10494 "configure"
+#line 10590 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10595: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
  }
     test -z "$with_wnn" && { ac_safe=`echo "wnn/commonhd.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for wnn/commonhd.h""... $ac_c" 1>&6
-echo "configure:10522: checking for wnn/commonhd.h" >&5
+echo "configure:10618: checking for wnn/commonhd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10525 "configure"
+#line 10621 "configure"
 #include "confdefs.h"
 #include <wnn/commonhd.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10626: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
     for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10555: checking for $ac_func" >&5
+echo "configure:10651: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10558 "configure"
+#line 10654 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10577,7 +10673,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -10606,12 +10702,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:10610: checking for crypt in -lcrypt" >&5
+echo "configure:10706: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcrypt "
 cat > conftest.$ac_ext <<EOF
-#line 10615 "configure"
+#line 10711 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10622,7 +10718,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:10626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
     
 echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6
-echo "configure:10661: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:10757: checking for jl_dic_list_e in -lwnn" >&5
 ac_lib_var=`echo wnn'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn "
 cat > conftest.$ac_ext <<EOF
-#line 10666 "configure"
+#line 10762 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10673,7 +10769,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10691,12 +10787,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6
-echo "configure:10695: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:10791: checking for jl_dic_list_e in -lwnn4" >&5
 ac_lib_var=`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn4 "
 cat > conftest.$ac_ext <<EOF
-#line 10700 "configure"
+#line 10796 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10707,7 +10803,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10725,12 +10821,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6
-echo "configure:10729: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:10825: checking for jl_dic_list_e in -lwnn6" >&5
 ac_lib_var=`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6 "
 cat > conftest.$ac_ext <<EOF
-#line 10734 "configure"
+#line 10830 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10741,7 +10837,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10759,12 +10855,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6
-echo "configure:10763: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:10859: checking for dic_list_e in -lwnn6_fromsrc" >&5
 ac_lib_var=`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6_fromsrc "
 cat > conftest.$ac_ext <<EOF
-#line 10768 "configure"
+#line 10864 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10775,7 +10871,7 @@ int main() {
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10823,12 +10919,12 @@ EOF
     if test "$with_wnn6" != "no"; then
       
 echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6
-echo "configure:10827: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:10923: checking for jl_fi_dic_list in -l$libwnn" >&5
 ac_lib_var=`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$libwnn "
 cat > conftest.$ac_ext <<EOF
-#line 10832 "configure"
+#line 10928 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10839,7 +10935,7 @@ int main() {
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:10843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10939: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10874,15 +10970,15 @@ EOF
   if test "$with_canna" != "no"; then
     ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
-echo "configure:10878: checking for canna/jrkanji.h" >&5
+echo "configure:10974: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10881 "configure"
+#line 10977 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10886: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10982: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
     c_switch_site="$c_switch_site -I/usr/local/canna/include"
     ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
-echo "configure:10913: checking for canna/jrkanji.h" >&5
+echo "configure:11009: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10916 "configure"
+#line 11012 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11017: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
   test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6
-echo "configure:10949: checking for canna/RK.h" >&5
+echo "configure:11045: checking for canna/RK.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10952 "configure"
+#line 11048 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10957: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:10980: checking for RkBgnBun in -lRKC" >&5
+echo "configure:11076: checking for RkBgnBun in -lRKC" >&5
 ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lRKC "
 cat > conftest.$ac_ext <<EOF
-#line 10985 "configure"
+#line 11081 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10992,7 +11088,7 @@ int main() {
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:10996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:11019: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:11115: checking for jrKanjiControl in -lcanna" >&5
 ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcanna "
 cat > conftest.$ac_ext <<EOF
-#line 11024 "configure"
+#line 11120 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11031,7 +11127,7 @@ int main() {
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:11035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11080,12 +11176,12 @@ if test "$need_motif" = "yes" ; then
   libs_x="-lXm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXm\" to \$libs_x"; fi
     
 echo $ac_n "checking for layout_object_getvalue in -li18n""... $ac_c" 1>&6
-echo "configure:11084: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:11180: checking for layout_object_getvalue in -li18n" >&5
 ac_lib_var=`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -li18n "
 cat > conftest.$ac_ext <<EOF
-#line 11089 "configure"
+#line 11185 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11096,7 +11192,7 @@ int main() {
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:11100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11187: checking for $ac_func" >&5
+echo "configure:11283: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11190 "configure"
+#line 11286 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11209,7 +11305,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 for ac_func in getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11254: checking for $ac_func" >&5
+echo "configure:11350: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11257 "configure"
+#line 11353 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11276,7 +11372,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11280: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -11305,10 +11401,10 @@ done
 
 
 echo $ac_n "checking for openpty""... $ac_c" 1>&6
-echo "configure:11309: checking for openpty" >&5
+echo "configure:11405: checking for openpty" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11312 "configure"
+#line 11408 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char openpty(); below.  */
@@ -11331,7 +11427,7 @@ openpty();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_openpty=yes"
 else
@@ -11350,12 +11446,12 @@ else
 
   
 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6
-echo "configure:11354: checking for openpty in -lutil" >&5
+echo "configure:11450: checking for openpty in -lutil" >&5
 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lutil "
 cat > conftest.$ac_ext <<EOF
-#line 11359 "configure"
+#line 11455 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11366,7 +11462,7 @@ int main() {
 openpty()
 ; return 0; }
 EOF
-if { (eval echo configure:11370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11401,15 +11497,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11405: checking for $ac_hdr" >&5
+echo "configure:11501: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11408 "configure"
+#line 11504 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11413: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11509: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11445,15 +11541,15 @@ for ac_hdr in stropts.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11449: checking for $ac_hdr" >&5
+echo "configure:11545: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11452 "configure"
+#line 11548 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11457: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11486,10 +11582,10 @@ if test "$ac_cv_header_stropts_h" = "yes"; then
   for ac_func in isastream
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11490: checking for $ac_func" >&5
+echo "configure:11586: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11493 "configure"
+#line 11589 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11512,7 +11608,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -11543,15 +11639,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11547: checking for $ac_hdr" >&5
+echo "configure:11643: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11550 "configure"
+#line 11646 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11651: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11588,10 +11684,10 @@ extra_objs="$extra_objs realpath.o" &&  if test "$extra_verbose" = "yes"; then
 for ac_func in getloadavg
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11592: checking for $ac_func" >&5
+echo "configure:11688: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11595 "configure"
+#line 11691 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11614,7 +11710,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -11647,15 +11743,15 @@ if test "$ac_cv_func_getloadavg" = "yes"; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11651: checking for $ac_hdr" >&5
+echo "configure:11747: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11654 "configure"
+#line 11750 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11659: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11755: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11691,12 +11787,12 @@ else
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:11695: checking for kstat_open in -lkstat" >&5
+echo "configure:11791: checking for kstat_open in -lkstat" >&5
 ac_lib_var=`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkstat "
 cat > conftest.$ac_ext <<EOF
-#line 11700 "configure"
+#line 11796 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11707,7 +11803,7 @@ int main() {
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:11711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11746: checking for $ac_hdr" >&5
+echo "configure:11842: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11749 "configure"
+#line 11845 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11754: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11850: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11782,12 +11878,12 @@ done
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:11786: checking for kvm_read in -lkvm" >&5
+echo "configure:11882: checking for kvm_read in -lkvm" >&5
 ac_lib_var=`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkvm "
 cat > conftest.$ac_ext <<EOF
-#line 11791 "configure"
+#line 11887 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11798,7 +11894,7 @@ int main() {
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:11802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 fi
 
 echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:11836: checking whether netdb declares h_errno" >&5
+echo "configure:11932: checking whether netdb declares h_errno" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11838 "configure"
+#line 11934 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:11845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
 rm -f conftest*
 
 echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:11865: checking for sigsetjmp" >&5
+echo "configure:11961: checking for sigsetjmp" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11867 "configure"
+#line 11963 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:11874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
 rm -f conftest*
 
 echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:11894: checking whether localtime caches TZ" >&5
+echo "configure:11990: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 11898 "configure"
+#line 11994 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -11929,7 +12025,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:11933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -11959,9 +12055,9 @@ fi
 
 if test "$HAVE_TIMEVAL" = "yes"; then
 echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6
-echo "configure:11963: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:12059: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11965 "configure"
+#line 12061 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -11982,7 +12078,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""two" 1>&6
 else
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:12008: checking for inline" >&5
+echo "configure:12104: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 12013 "configure"
+#line 12109 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:12020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -12057,17 +12153,17 @@ if test "$__DECC" != "yes"; then
   # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:12061: checking for working alloca.h" >&5
+echo "configure:12157: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12064 "configure"
+#line 12160 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:12071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -12091,10 +12187,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:12095: checking for alloca" >&5
+echo "configure:12191: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12098 "configure"
+#line 12194 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -12122,7 +12218,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:12126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -12161,10 +12257,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:12165: checking whether alloca needs Cray hooks" >&5
+echo "configure:12261: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12168 "configure"
+#line 12264 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -12188,10 +12284,10 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12192: checking for $ac_func" >&5
+echo "configure:12288: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12195 "configure"
+#line 12291 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12214,7 +12310,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -12244,10 +12340,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:12248: checking stack direction for C alloca" >&5
+echo "configure:12344: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12251 "configure"
+#line 12347 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -12266,7 +12362,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:12270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_stack_direction=1
 else
 
 ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:12300: checking for vfork.h" >&5
+echo "configure:12396: checking for vfork.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12303 "configure"
+#line 12399 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12332,10 +12428,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:12336: checking for working vfork" >&5
+echo "configure:12432: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12339 "configure"
+#line 12435 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -12430,7 +12526,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:12434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
 
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:12460: checking for working strcoll" >&5
+echo "configure:12556: checking for working strcoll" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12463 "configure"
+#line 12559 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -12469,7 +12565,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:12473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
 for ac_func in getpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12501: checking for $ac_func" >&5
+echo "configure:12597: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12504 "configure"
+#line 12600 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12523,7 +12619,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 done
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:12555: checking whether getpgrp takes no argument" >&5
+echo "configure:12651: checking whether getpgrp takes no argument" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12558 "configure"
+#line 12654 "configure"
 #include "confdefs.h"
 
 /*
@@ -12609,7 +12705,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:12613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_getpgrp_void=yes
 else
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:12640: checking for working mmap" >&5
+echo "configure:12736: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 12643 "configure"
+#line 12739 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -12672,7 +12768,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:12676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -12701,9 +12797,9 @@ test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
 if test "$rel_alloc $have_mmap" = "default yes"; then
   if test "$doug_lea_malloc" = "yes"; then
         echo $ac_n "checking for M_MMAP_THRESHOLD""... $ac_c" 1>&6
-echo "configure:12705: checking for M_MMAP_THRESHOLD" >&5
+echo "configure:12801: checking for M_MMAP_THRESHOLD" >&5
     cat > conftest.$ac_ext <<EOF
-#line 12707 "configure"
+#line 12803 "configure"
 #include "confdefs.h"
 #include <malloc.h>
 int main() {
@@ -12715,7 +12811,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   rel_alloc=no; echo "$ac_t""yes" 1>&6;
 else
@@ -12740,15 +12836,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:12744: checking for termios.h" >&5
+echo "configure:12840: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12747 "configure"
+#line 12843 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12848: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12791,15 +12887,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "termio.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termio.h""... $ac_c" 1>&6
-echo "configure:12795: checking for termio.h" >&5
+echo "configure:12891: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12798 "configure"
+#line 12894 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12803: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12899: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:12835: checking for socket" >&5
+echo "configure:12931: checking for socket" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12838 "configure"
+#line 12934 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -12857,7 +12953,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_socket=yes"
 else
@@ -12872,15 +12968,15 @@ if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "netinet/in.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for netinet/in.h""... $ac_c" 1>&6
-echo "configure:12876: checking for netinet/in.h" >&5
+echo "configure:12972: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12879 "configure"
+#line 12975 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12897,15 +12993,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "arpa/inet.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for arpa/inet.h""... $ac_c" 1>&6
-echo "configure:12901: checking for arpa/inet.h" >&5
+echo "configure:12997: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12904 "configure"
+#line 13000 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12909: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13005: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12930,9 +13026,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:12934: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:13030: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12936 "configure"
+#line 13032 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12943,7 +13039,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:12947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_SOCKADDR_SUN_LEN
@@ -12961,9 +13057,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:12965: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:13061: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12967 "configure"
+#line 13063 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12973,7 +13069,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:12977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MULTICAST
 
 
 echo $ac_n "checking for msgget""... $ac_c" 1>&6
-echo "configure:13008: checking for msgget" >&5
+echo "configure:13104: checking for msgget" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13011 "configure"
+#line 13107 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -13030,7 +13126,7 @@ msgget();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_msgget=yes"
 else
@@ -13045,15 +13141,15 @@ if eval "test \"`echo '$ac_cv_func_'msgget`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6
-echo "configure:13049: checking for sys/ipc.h" >&5
+echo "configure:13145: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13052 "configure"
+#line 13148 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13153: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -13070,15 +13166,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "sys/msg.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/msg.h""... $ac_c" 1>&6
-echo "configure:13074: checking for sys/msg.h" >&5
+echo "configure:13170: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13077 "configure"
+#line 13173 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13178: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dirent.h""... $ac_c" 1>&6
-echo "configure:13120: checking for dirent.h" >&5
+echo "configure:13216: checking for dirent.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13123 "configure"
+#line 13219 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13128: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -13151,15 +13247,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "sys/dir.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/dir.h""... $ac_c" 1>&6
-echo "configure:13155: checking for sys/dir.h" >&5
+echo "configure:13251: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13158 "configure"
+#line 13254 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:13196: checking for nlist.h" >&5
+echo "configure:13292: checking for nlist.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13199 "configure"
+#line 13295 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13300: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:13234: checking "for sound support"" >&5
+echo "configure:13330: checking "for sound support"" >&5
 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
 
 if test "$with_native_sound" != "no"; then
     if test -n "$native_sound_lib"; then
     ac_safe=`echo "multimedia/audio_device.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for multimedia/audio_device.h""... $ac_c" 1>&6
-echo "configure:13241: checking for multimedia/audio_device.h" >&5
+echo "configure:13337: checking for multimedia/audio_device.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13244 "configure"
+#line 13340 "configure"
 #include "confdefs.h"
 #include <multimedia/audio_device.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13345: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
       if test -z "$native_sound_lib"; then
         
 echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:13305: checking for ALopenport in -laudio" >&5
+echo "configure:13401: checking for ALopenport in -laudio" >&5
 ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 13310 "configure"
+#line 13406 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13317,7 +13413,7 @@ int main() {
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:13321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
       if test -z "$native_sound_lib"; then
        
 echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6
-echo "configure:13352: checking for AOpenAudio in -lAlib" >&5
+echo "configure:13448: checking for AOpenAudio in -lAlib" >&5
 ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lAlib "
 cat > conftest.$ac_ext <<EOF
-#line 13357 "configure"
+#line 13453 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13364,7 +13460,7 @@ int main() {
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:13368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     for dir in "machine" "sys" "linux"; do
       ac_safe=`echo "${dir}/soundcard.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${dir}/soundcard.h""... $ac_c" 1>&6
-echo "configure:13413: checking for ${dir}/soundcard.h" >&5
+echo "configure:13509: checking for ${dir}/soundcard.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13416 "configure"
+#line 13512 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 if test "$with_nas_sound" != "no"; then
   ac_safe=`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6
-echo "configure:13475: checking for audio/audiolib.h" >&5
+echo "configure:13571: checking for audio/audiolib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13478 "configure"
+#line 13574 "configure"
 #include "confdefs.h"
 #include <audio/audiolib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13483: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13579: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -13497,12 +13593,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     
 echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6
-echo "configure:13501: checking for AuOpenServer in -laudio" >&5
+echo "configure:13597: checking for AuOpenServer in -laudio" >&5
 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 13506 "configure"
+#line 13602 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13513,7 +13609,7 @@ int main() {
 AuOpenServer()
 ; return 0; }
 EOF
-if { (eval echo configure:13517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13552,7 +13648,7 @@ EOF
  fi
     libs_x="-laudio $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-laudio\" to \$libs_x"; fi
             cat > conftest.$ac_ext <<EOF
-#line 13556 "configure"
+#line 13652 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -13583,7 +13679,7 @@ if test "$with_esd_sound" != "no"; then
   # Extract the first word of "esd-config", so it can be a program name with args.
 set dummy esd-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:13587: checking for $ac_word" >&5
+echo "configure:13683: checking for $ac_word" >&5
 
 if test -n "$have_esd_config"; then
   ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test.
     c_switch_site="$c_switch_site `esd-config --cflags`" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"`esd-config --cflags`\" to \$c_switch_site"; fi
     LIBS="`esd-config --libs` $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"`esd-config --libs`\" to \$LIBS"; fi
     echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6
-echo "configure:13616: checking for esd_play_stream" >&5
+echo "configure:13712: checking for esd_play_stream" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13619 "configure"
+#line 13715 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char esd_play_stream(); below.  */
@@ -13638,7 +13734,7 @@ esd_play_stream();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_esd_play_stream=yes"
 else
@@ -13689,7 +13785,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:13693: checking for TTY-related features" >&5
+echo "configure:13789: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -13705,12 +13801,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:13709: checking for tgetent in -lncurses" >&5
+echo "configure:13805: checking for tgetent in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lncurses "
 cat > conftest.$ac_ext <<EOF
-#line 13714 "configure"
+#line 13810 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13721,7 +13817,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13754,15 +13850,15 @@ EOF
 
     ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:13758: checking for ncurses/curses.h" >&5
+echo "configure:13854: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13761 "configure"
+#line 13857 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13862: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
     ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:13788: checking for ncurses/term.h" >&5
+echo "configure:13884: checking for ncurses/term.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13791 "configure"
+#line 13887 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
       c_switch_site="$c_switch_site -I/usr/include/ncurses"
       ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:13826: checking for ncurses/curses.h" >&5
+echo "configure:13922: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13829 "configure"
+#line 13925 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13930: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
        for lib in curses termlib termcap; do
          
 echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:13869: checking for tgetent in -l$lib" >&5
+echo "configure:13965: checking for tgetent in -l$lib" >&5
 ac_lib_var=`echo $lib'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$lib "
 cat > conftest.$ac_ext <<EOF
-#line 13874 "configure"
+#line 13970 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13881,7 +13977,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     else       if test -n "$libs_termcap" -a "$opsys" = "openbsd"; then
                                 
 echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6
-echo "configure:13910: checking for tgoto in -ltermcap" >&5
+echo "configure:14006: checking for tgoto in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgoto | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltermcap "
 cat > conftest.$ac_ext <<EOF
-#line 13915 "configure"
+#line 14011 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13922,7 +14018,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:13926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
       else
        
 echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:13971: checking for tgetent in -lcurses" >&5
+echo "configure:14067: checking for tgetent in -lcurses" >&5
 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcurses "
 cat > conftest.$ac_ext <<EOF
-#line 13976 "configure"
+#line 14072 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13983,7 +14079,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14001,12 +14097,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:14005: checking for tgetent in -ltermcap" >&5
+echo "configure:14101: checking for tgetent in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltermcap "
 cat > conftest.$ac_ext <<EOF
-#line 14010 "configure"
+#line 14106 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14017,7 +14113,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:14021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14066,15 +14162,15 @@ EOF
     if test "$with_gpm" != "no"; then
     ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for gpm.h""... $ac_c" 1>&6
-echo "configure:14070: checking for gpm.h" >&5
+echo "configure:14166: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14073 "configure"
+#line 14169 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14174: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -14092,12 +14188,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
       
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:14096: checking for Gpm_Open in -lgpm" >&5
+echo "configure:14192: checking for Gpm_Open in -lgpm" >&5
 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgpm "
 cat > conftest.$ac_ext <<EOF
-#line 14101 "configure"
+#line 14197 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14108,7 +14204,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:14112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14167,20 +14263,20 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" -o "$need_event_unixoid" = "yes"
 
 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
   != "no no no" && echo "checking for database support" 1>&6
-echo "configure:14171: checking for database support" >&5
+echo "configure:14267: checking for database support" >&5
 
 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
   ac_safe=`echo "ndbm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6
-echo "configure:14176: checking for ndbm.h" >&5
+echo "configure:14272: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14179 "configure"
+#line 14275 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14280: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 if test "$with_database_gdbm" != "no"; then
   
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:14214: checking for dbm_open in -lgdbm" >&5
+echo "configure:14310: checking for dbm_open in -lgdbm" >&5
 ac_lib_var=`echo gdbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdbm "
 cat > conftest.$ac_ext <<EOF
-#line 14219 "configure"
+#line 14315 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14226,7 +14322,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:14230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test "$with_database_dbm" != "no"; then
   echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:14258: checking for dbm_open" >&5
+echo "configure:14354: checking for dbm_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14261 "configure"
+#line 14357 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -14280,7 +14376,7 @@ dbm_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:14284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -14299,12 +14395,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:14303: checking for dbm_open in -ldbm" >&5
+echo "configure:14399: checking for dbm_open in -ldbm" >&5
 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldbm "
 cat > conftest.$ac_ext <<EOF
-#line 14308 "configure"
+#line 14404 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14315,7 +14411,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:14319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14355,10 +14451,10 @@ EOF
 
 
 echo $ac_n "checking for u_int8_t""... $ac_c" 1>&6
-echo "configure:14359: checking for u_int8_t" >&5
+echo "configure:14455: checking for u_int8_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14362 "configure"
+#line 14458 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -14399,10 +14495,10 @@ EOF
 
 fi
 echo $ac_n "checking for u_int16_t""... $ac_c" 1>&6
-echo "configure:14403: checking for u_int16_t" >&5
+echo "configure:14499: checking for u_int16_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14406 "configure"
+#line 14502 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -14443,10 +14539,10 @@ EOF
 
 fi
 echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6
-echo "configure:14447: checking for u_int32_t" >&5
+echo "configure:14543: checking for u_int32_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14450 "configure"
+#line 14546 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -14487,10 +14583,10 @@ EOF
 
 fi
 echo $ac_n "checking for u_int64_t""... $ac_c" 1>&6
-echo "configure:14491: checking for u_int64_t" >&5
+echo "configure:14587: checking for u_int64_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14494 "configure"
+#line 14590 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:14537: checking for Berkeley db.h" >&5
+echo "configure:14633: checking for Berkeley db.h" >&5
   for header in "db/db.h" "db.h"; do
     case "$opsys" in
         *freebsd*)
     cat > conftest.$ac_ext <<EOF
-#line 14542 "configure"
+#line 14638 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -14554,7 +14650,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_file="$header"; break
 else
@@ -14565,7 +14661,7 @@ rm -f conftest*
         ;;
         *)
     cat > conftest.$ac_ext <<EOF
-#line 14569 "configure"
+#line 14665 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -14595,7 +14691,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14695: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_file="$header"; break
 else
@@ -14613,9 +14709,9 @@ rm -f conftest*
 
   if test "$with_database_berkdb" != "no"; then
     echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6
-echo "configure:14617: checking for Berkeley DB version" >&5
+echo "configure:14713: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 14619 "configure"
+#line 14715 "configure"
 #include "confdefs.h"
 #include <$db_h_file>
 #if DB_VERSION_MAJOR > 1
@@ -14627,7 +14723,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   egrep "yes" >/dev/null 2>&1; then
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 14631 "configure"
+#line 14727 "configure"
 #include "confdefs.h"
 #include <$db_h_file>
 #if DB_VERSION_MAJOR > 2
 rm -f conftest*
 
     echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:14658: checking for $dbfunc" >&5
+echo "configure:14754: checking for $dbfunc" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14661 "configure"
+#line 14757 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -14680,7 +14776,7 @@ $dbfunc();
 
 ; return 0; }
 EOF
-if { (eval echo configure:14684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$dbfunc=yes"
 else
@@ -14699,12 +14795,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:14703: checking for $dbfunc in -ldb" >&5
+echo "configure:14799: checking for $dbfunc in -ldb" >&5
 ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldb "
 cat > conftest.$ac_ext <<EOF
-#line 14708 "configure"
+#line 14804 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14715,7 +14811,7 @@ int main() {
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:14719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 if test "$with_socks" = "yes"; then
   
 echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:14783: checking for SOCKSinit in -lsocks" >&5
+echo "configure:14879: checking for SOCKSinit in -lsocks" >&5
 ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lsocks "
 cat > conftest.$ac_ext <<EOF
-#line 14788 "configure"
+#line 14884 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14795,7 +14891,7 @@ int main() {
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:14799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14850,7 +14946,7 @@ fi
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:14854: checking for module support" >&5
+echo "configure:14950: checking for module support" >&5
 
     if test "$with_msw" = "yes"; then
     have_dl=yes;
@@ -14866,15 +14962,15 @@ EOF
  ;;
       *)          ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:14870: checking for dlfcn.h" >&5
+echo "configure:14966: checking for dlfcn.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14873 "configure"
+#line 14969 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14974: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -14891,16 +14987,16 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
            echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:14895: checking for dlopen in -lc" >&5
+echo "configure:14991: checking for dlopen in -lc" >&5
            cat > conftest.$ac_ext <<EOF
-#line 14897 "configure"
+#line 14993 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int main() {
              dlopen ("", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:14904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    have_dl=yes 
 else
@@ -14909,18 +15005,18 @@ else
   rm -rf conftest*
   
                echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:14913: checking for dlopen in -ldl" >&5
+echo "configure:15009: checking for dlopen in -ldl" >&5
                ac_save_LIBS="$LIBS"
                LIBS="-ldl $LIBS"
                cat > conftest.$ac_ext <<EOF
-#line 14917 "configure"
+#line 15013 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int main() {
                 dlopen ("", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:14924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    have_dl=yes 
 else
@@ -14949,12 +15045,12 @@ EOF
         else
            
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:14953: checking for shl_load in -ldld" >&5
+echo "configure:15049: checking for shl_load in -ldld" >&5
 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<EOF
-#line 14958 "configure"
+#line 15054 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14965,7 +15061,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:14969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14992,12 +15088,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:14996: checking for dld_init in -ldld" >&5
+echo "configure:15092: checking for dld_init in -ldld" >&5
 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<EOF
-#line 15001 "configure"
+#line 15097 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -15008,7 +15104,7 @@ int main() {
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:15012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -15055,7 +15151,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:15059: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:15155: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -15083,9 +15179,9 @@ if test "$GCC" = "yes"; then
   XEGCC=yes
 else
   echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:15087: checking checking whether we are using GNU C" >&5
+echo "configure:15183: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 15089 "configure"
+#line 15185 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -15107,7 +15203,7 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:15111: checking how to produce PIC code" >&5
+echo "configure:15207: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
@@ -15208,18 +15304,18 @@ if test -n "$dll_cflags"; then
 
   # Check to make sure the dll_cflags actually works.
   echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6
-echo "configure:15212: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:15308: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 15216 "configure"
+#line 15312 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:15223: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
     # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also
@@ -15250,7 +15346,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:15254: checking if C compiler can produce shared libraries" >&5
+echo "configure:15350: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes -o "$__ICC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -15301,14 +15397,14 @@ if test -n "$xcldf"; then
   xe_libs=
   ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
   cat > conftest.$ac_ext <<EOF
-#line 15305 "configure"
+#line 15401 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:15312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -15333,7 +15429,7 @@ if test -z "$LTLD"; then
   if test "$XEGCC" = yes; then
     # Check if gcc -print-prog-name=ld gives a path.
     echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:15337: checking for ld used by GCC" >&5
+echo "configure:15433: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -15359,7 +15455,7 @@ echo "configure:15337: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:15363: checking for GNU ld" >&5
+echo "configure:15459: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -15397,7 +15493,7 @@ ld_dynamic_link_flags=
 
 # Check to see if it really is or isn't GNU ld.
 echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6
-echo "configure:15401: checking if the linker is GNU ld" >&5
+echo "configure:15497: checking if the linker is GNU ld" >&5
 # I'd rather use --version here, but apparently some GNU ld's only accept -v.
 if $LTLD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
   xe_gnu_ld=yes
@@ -15425,7 +15521,7 @@ else
   # OK - only NOW do we futz about with ld.
   # See if the linker supports building shared libraries.
   echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6
-echo "configure:15429: checking whether the linker supports shared libraries" >&5
+echo "configure:15525: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -15636,10 +15732,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15640: checking for $ac_func" >&5
+echo "configure:15736: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 15643 "configure"
+#line 15739 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15662,7 +15758,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:15666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15701,11 +15797,11 @@ done
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 15705 "configure"
+#line 15801 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:15709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:15805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
index 0e645ae..a0f9f4d 100644 (file)
@@ -3215,6 +3215,7 @@ if test no != "$with_ldap";then
        echo "Setting ldap_libs to $ldap_libs"],dnl
       [AC_CHECK_LIB(ldap, ldap_open,dnl
        [with_ldap=yes],dnl
+dnl If logic of setting these vars change, change it the same way below.
        [ldap_needs_lber=yes ldap_other_libs=-llber
 dnl This requires `AC_CACHE_VAL' (which is called by `AC_CHECK_LIB')
 dnl to be redefined to ignore cached (shell variable) value, as it is
@@ -3236,6 +3237,55 @@ dnl variable name depends on the macro OTHER-LIBRARIES argument.
              $ldap_other_libs)],dnl
            $ldap_other_libs)],dnl
          $ldap_other_libs)])
+      if test yes = "$with_ldap" -a yes != "$ldap_needs_lber";then
+dnl Need this check since `LDAP_OPT_ON' is (currently) used only with
+dnl `ldap_set_option', and the latter may not exist at all, for which
+dnl is testing later.  So `LDAP_OPT_ON' is not necessarily defined.
+       AC_CACHE_CHECK([for LDAP_OPT_ON definition],xe_cv_have_LDAP_OPT_ON,
+         [AC_TRY_COMPILE(
+[#include <lber.h>
+#include <ldap.h>
+#ifdef LDAP_OPT_ON
+/* Relying on const defined by ac_c_const (upper case). */
+const void *const v = LDAP_OPT_ON;
+#else /* !defined (LDAP_OPT_ON) */
+choke me
+#endif /* !defined (LDAP_OPT_ON) */],[],
+           [xe_cv_have_LDAP_OPT_ON=yes],
+           [xe_cv_have_LDAP_OPT_ON=no])])
+       if test yes = "$xe_cv_have_LDAP_OPT_ON";then
+         AC_CACHE_CHECK([LDAP_OPT_ON linking],
+           xe_cv_LDAP_OPT_ON_links,
+           [xe_save_LIBS="$LIBS"
+           LIBS="-lldap $LIBS"
+AC_TRY_LINK(
+[#include <lber.h>
+#include <ldap.h>
+const void *const v = LDAP_OPT_ON;],[],
+             xe_cv_LDAP_OPT_ON_links=yes,
+             xe_cv_LDAP_OPT_ON_links=no)
+           LIBS="$xe_save_LIBS"])
+dnl In some openldap installations other `ldap_*' functions link with
+dnl `-lldap' alone, but `LDAP_OPT_ON' requires `-llber'.
+         if test yes != "$xe_cv_LDAP_OPT_ON_links";then
+           ldap_needs_lber=yes ldap_other_libs=-llber
+           AC_CACHE_CHECK([LDAP_OPT_ON linking with -llber],
+             xe_cv_LDAP_OPT_ON_links_w_lber,
+             [xe_save_LIBS="$LIBS"
+             LIBS="-lldap $ldap_other_libs $LIBS"
+AC_TRY_LINK(
+[#include <lber.h>
+#include <ldap.h>
+const void *const v = LDAP_OPT_ON;],[],
+             xe_cv_LDAP_OPT_ON_links_w_lber=yes,
+             xe_cv_LDAP_OPT_ON_links_w_lber=no)
+             LIBS="$xe_save_LIBS"])
+           if test yes != "$xe_cv_LDAP_OPT_ON_links_w_lber";then
+             with_ldap=no
+           fi
+         fi
+       fi
+      fi
       if test yes = "$with_ldap";then
        if test yes = "$ldap_needs_des";then
          XE_PREPEND(-ldes, ldap_libs)
index 87866eb..d702208 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -33,7 +33,10 @@ consulted for a more detailed list of changes.
 ========================
 
 ** Summary of user-visible changes:
-
+  -- Motif is now deprecated on linux and cygwin.
+  -- On UNIX and linux, '--with-widgets=no' is now the default.  If
+     you want buffer tabs or the progress bar, you must run configure
+     with the option '--with-widgets=lucid' or a different toolkit.
   -- PUI related changes (Package User Interface)
     - A minor rearrangement of the "Tools -> Packages" menu.
     - Only a single package download site can be selected.
@@ -118,6 +121,7 @@ consulted for a more detailed list of changes.
     - Python now supported.
     - New file extensions recognized: .ss, .pdb, .psw.
   -- Fixed ldap libraries configuration.
+  -- Fixed `LDAP_OPT_ON' libraries configuration.
 
 ** The delete key now deletes forward by default.
 
@@ -605,19 +609,28 @@ for PSWrap.
 It used to fail when `-lldap' requires `-llber'.  Introduced in
 upstream `configure.in' revision 1.151.2.31 (2005/01/31 02:54:47 +0).
 
+*** Fixed `LDAP_OPT_ON' libraries configuration.
+
+The original fix of local `configure.in' revision 1.19 (2004/12/19
+21:10:02 +0) introduced lossage on another class of systems.  In some
+openldap versions `ldap_*' functions may link successfully without
+`-lber', but compiling and linking program with `LDAP_OPT_ON' may
+require `-lber'.  When configuring ldap libraries, check for such
+systems, and in a cleaner way than in upstream.
+
 \f
 * Lisp and internal changes in XEmacs 21.4
 ==========================================
 
-** A new portable dumper is available for beta testing.
+** A new portable dumper is available.
 
 Olivier Galibert has written a portable dumper for XEmacs, based on
-initial work by Kyle Jones.  To perform even the most basic editor,
-XEmacs requires some amount of Lisp code to be loaded.  To avoid
-repeating the expensive loading process at every startup, XEmacs is
-built in a special way.  Its C sources link into an executable called
-`temacs', which loads the bootstrap Lisp code and uses a special
-"unexec" call to dump the resulting memory image into a proper
+initial work by Kyle Jones.  To perform even the most basic editor
+functions, XEmacs requires some amount of Lisp code to be loaded.  To
+avoid repeating the expensive loading process at every startup, XEmacs
+is built in a special way.  Its C sources link into an executable
+called `temacs', which loads the bootstrap Lisp code and uses a
+special "unexec" call to dump the resulting memory image into a proper
 `xemacs' executable on disk.  The unexec() process is hard to
 implement correctly and makes XEmacs very hard to port to new
 operating systems, or even to new releases of old systems.
@@ -629,11 +642,10 @@ running XEmacs only needs to mmap that file and relocate a bit to get
 to the initialized data.  In that scheme, there is no difference
 between `temacs' and `xemacs'.
 
-Unfortunately, the portable dumper has not been completely finished
-for this release, and will not be used by default.  However, if you
-wish to experiment with it, or if you need to compile XEmacs on a new
-and unsupported platform, you can test it by configuring XEmacs with
-`--pdump' flag.
+The portable dumper will not be used by default in this release,
+however, if you wish to experiment with it, or if you need to compile
+XEmacs on a new and unsupported platform, you can test it by
+configuring XEmacs using the `--pdump' flag.
 
 ** Much effort has been invested to make XEmacs Lisp faster:
 
index 1e92bb5..0c8dcc9 100644 (file)
@@ -33,14 +33,15 @@ coordinate a release myself.
 21.4.15: Security Through Obscurity
 21.4.16: Corporate Culture
 21.4.17: Jumbo Shrimp
-21.4.18: Constant Variable
-21.4.19: Double Solitaire
-21.4.20: Educational Television
-21.4.21: Instant Classic
-21.4.22: Moral Majority
-21.4.23: Standard C
-21.4.24: Too Much Mozart
-21.4.25: Working Vacation
+21.4.18: Social Property
+21.4.19: Constant Variable
+21.4.20: Double Solitaire
+21.4.21: Educational Television
+21.4.22: Instant Classic
+21.4.23: Moral Majority
+21.4.24: Standard C
+21.4.25: Too Much Mozart
+21.4.26: Working Vacation
 
 
 
index f6b687d..330952d 100644 (file)
@@ -345,7 +345,7 @@ supporting Lisp development.  It is a single-file package so it may be
 tailored.
 
 *** xetla
-(setq mm-coding-system-priorities '(iso-8859-1 iso-8859-15 utf-8))
+Frontend to GNU/arch (tla).
 
 *** xlib
 Emacs interface to X server.
index 40ff6d3..0b4c618 100644 (file)
@@ -4,21 +4,190 @@ Hash: SHA1
 ;; Package Index file -- Do not edit manually.
 ;;;@@@
 (package-get-update-base-entry (quote
-(general-docs
+(xetla
   (standards-version 1.1
    version "1.01"
+   author-version "steve@eicq.org--2005/xetla--main--1.1--version-0"
+   date "2005-12-29"
+   build-date "2005-12-29"
+   maintainer "Steve Youngs <steve@youngs.au.com>"
+   distribution xemacs
+   priority low
+   category "standard"
+   dump nil
+   description "(S)XEmacs Frontend to GNU/arch (tla)."
+   filename "xetla-1.01-pkg.tar.gz"
+   md5sum "45c66a4429f53553fda1030e4f0d1e85"
+   size 294912
+   provides (ewoc xetla-browse xetla-core
+             xetla-defs xetla-tips xetla-version xetla)
+   requires (ediff xemacs-base jde mail-lib dired prog-modes)
+   type regular
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
+(re-builder
+  (standards-version 1.1
+   version "1.05"
+   author-version "1.20"
+   date "2005-09-12"
+   build-date "2005-09-12"
+   maintainer "Aidan Kehoe <aidan@xemacs.org>"
+   distribution xemacs
+   priority medium
+   category "standard"
+   dump nil
+   description "Interactive development tool for regular expressions."
+   filename "re-builder-1.05-pkg.tar.gz"
+   md5sum "da77f41112a0f92416ca74fd26b23aee"
+   size 20729
+   provides (re-builder)
+   requires ()
+   type regular
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
+(latin-euro-standards
+  (standards-version 1.1
+   version "1.07"
+   author-version "1.07"
+   date "2005-06-29"
+   build-date "2005-06-29"
+   maintainer "Aidan Kehoe <aidan@xemacs.org>"
+   distribution mule
+   priority high
+   category "mule"
+   dump nil
+   description "MULE: Support for the Latin{7,8,9,10} character sets & coding systems."
+   filename "latin-euro-standards-1.07-pkg.tar.gz"
+   md5sum "1557507199aa08bb8b292e02af543f9d"
+   size 13887
+   provides ()
+   requires (mule-base)
+   type regular
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
+(xwem
+  (standards-version 1.1
+   version "1.21"
+   author-version "lg@xwem.org--2005/xwem--main--2.1--versionfix-1"
+   date "2005-04-09"
+   build-date "2005-04-09"
+   maintainer "Zajcev Evgeny <zevlg@yandex.ru>"
+   distribution xemacs
+   priority low
+   category "standard"
+   dump nil
+   description "X Emacs Window Manager."
+   filename "xwem-1.21-pkg.tar.gz"
+   md5sum "766dbbfba485e1ed1d7a6d289d73ff21"
+   size 649651
+   provides (ixwem xwem-appcollect xwem-battery xwem-clgen 
+             xwem-clients xwem-clswi xwem-compat xwem-desktop 
+             xwem-diagram xwem-edmacro xwem-edprops xwem-events 
+             xwem-faces xwem-focus xwem-frame xwem-framei 
+             xwem-frametrans xwem-gamma xwem-help xwem-holer 
+             xwem-icons xwem-interactive xwem-keyboard xwem-keydefs
+             xwem-keymacro xwem-keytt xwem-launcher xwem-load
+             xwem-loaddefs xwem-macros xwem-main xwem-manage
+             xwem-minibuffer xwem-misc xwem-modes xwem-mouse
+             xwem-netwm xwem-osd xwem-pager xwem-ratanot xwem-recover
+             xwem-register xwem-report xwem-root xwem-rooter
+             xwem-rooticon xwem-selections xwem-smartmods xwem-sound
+             xwem-special xwem-strokes xwem-struct xwem-tabbing
+             xwem-theme xwem-time xwem-transient xwem-tray xwem-version
+             xwem-vert xwem-weather xwem-win xwem-worklog xwem-xfig) 
+   requires (xwem xemacs-base xlib strokes edit-utils text-modes time slider elib ilisp mail-lib)
+   type regular
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
+(escreen
+  (standards-version 1.1
+   version "1.01"
+   author-version "1.16"
+   date "2004-03-15"
+   build-date "2004-03-15"
+   maintainer "Jan Rychter <jan@rychter.com>"
+   distribution xemacs
+   priority low
+   category "standard"
+   dump nil
+   description "Multiple editing sessions withing a single frame (like screen)."
+   filename "escreen-1.01-pkg.tar.gz"
+   md5sum "2998cd0d7a90b89a3c3860549c43622a"
+   size 14639
+   provides (escreen)
+   requires (xemacs-base)
+   type regular
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
+(xlib
+  (standards-version 1.1
+   version "1.14"
+   author-version "lg@xwem.org--2005/xlib--main--2.1--version-0"
+   date "2005-04-05"
+   build-date "2005-04-05"
+   maintainer "Zajcev Evgeny <zevlg@yandex.ru>"
+   distribution xemacs
+   priority low
+   category "standard"
+   dump nil
+   description "Emacs interface to X server."
+   filename "xlib-1.14-pkg.tar.gz"
+   md5sum "0d3adfa462bebb9009d20b0623d23664"
+   size 205806
+   provides (xlib-composer xlib-const xlib-hello xlib-img xlib-keysymdb xlib-math xlib-testing xlib-tray xlib-version xlib-vidmode xlib-xc xlib-xdpms xlib-xinerama xlib-xlib xlib-xpm xlib-xr xlib-xrecord xlib-xshape xlib-xtest xlib-xwin)
+   requires (xlib xemacs-base)
+   type regular
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
+(erc
+  (standards-version 1.0
+   version "0.19"
+   author-version "Version 5.0 Revision: 1.776"
+   date "2005-10-21"
+   build-date "2005-10-21"
+   maintainer "Adrian Aichner <adrian@xemacs.org>"
+   distribution stable
+   priority low
+   category "standard"
+   dump nil
+   description "ERC is an Emacs InternetRelayChat client."
+   filename "erc-0.19-pkg.tar.gz"
+   md5sum "3ec5279835c74460981e76b169aab269"
+   size 461162
+   provides (erc)
+   requires (edit-utils fsf-compat gnus pcomplete xemacs-base text-modes ispell viper)
+   type regular
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
+(general-docs
+  (standards-version 1.1
+   version "1.04"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-05-07"
+   build-date "2005-05-07"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "General XEmacs documentation."
-   filename "general-docs-1.01-pkg.tar.gz"
-   md5sum "06c3e4e0aeddd995f2697c91a6b8cc00"
-   size 1435
+   filename "general-docs-1.04-pkg.tar.gz"
+   md5sum "0d55fe74b8cc9a5a1d34e27e2d096ec1"
+   size 43374
    provides ()
    requires ()
    type regular
@@ -28,21 +197,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (riece
   (standards-version 1.1
-   version "1.12"
-   author-version "0.1.5"
-   date "2003-10-29"
-   build-date "2003-10-29"
+   version "1.21"
+   author-version "2.0.2"
+   date "2005-11-21"
+   build-date "2005-11-21"
    maintainer "Daiki Ueno <ueno@unixuser.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "IRC (Internet Relay Chat) client for Emacs."
-   filename "riece-1.12-pkg.tar.gz"
-   md5sum "8859cfde4a93a31407e29c35a35e9669"
-   size 106360
-   provides (riece-compat riece-xemacs riece-globals riece-options riece-version riece-coding riece-complete riece-identity riece-channel riece-user riece-misc riece-layout riece-display riece-server riece-naming riece-message riece-filter riece-handle riece-000 riece-200 riece-300 riece-400 riece-500 riece-commands riece riece-ctcp riece-highlight riece-log riece-mini riece-rdcc riece-url riece-unread riece-doctor riece-alias riece-guess riece-history riece-button riece-keyword riece-menu riece-icon)
-   requires (xemacs-base mail-lib)
+   filename "riece-1.21-pkg.tar.gz"
+   md5sum "69dad9e533297eb21313dde7b8ce0026"
+   size 198929
+   provides (riece-compat riece-xemacs riece-globals riece-options riece-debug riece-version riece-coding riece-complete riece-addon-modules riece-addon riece-ruby riece-cache riece-mode riece-identity riece-channel riece-user riece-misc riece-signal riece-layout riece-display riece-server riece-naming riece-message riece-filter riece-handle riece-000 riece-200 riece-300 riece-400 riece-500 riece-commands riece-irc riece riece-alias riece-async riece-biff riece-button riece-ctcp riece-ctlseq riece-doctor riece-eval-ruby riece-eval riece-foolproof riece-google riece-guess riece-hangman riece-highlight riece-history riece-icon riece-ignore riece-kakasi riece-keepalive riece-keyword riece-log riece-lsdb riece-menu riece-mini riece-rdcc riece-shrink-buffer riece-skk-kakutei riece-toolbar riece-unread riece-url riece-xface riece-xfaceb riece-yank)
+   requires (xemacs-base mail-lib bbdb)
    type regular
 ))
 ))
@@ -72,19 +241,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (hyperbole
   (standards-version 1.0
-   version "1.13"
+   version "1.16"
    author-version "4.18"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-06-13"
+   build-date "2004-06-13"
    maintainer "Mats Lidell <matsl@xemacs.org>"
    distribution stable
    priority high
    category "standard"
    dump nil
    description "Hyperbole: The Everyday Info Manager"
-   filename "hyperbole-1.13-pkg.tar.gz"
-   md5sum "fed416810d33560f433c4ad0bef605bc"
-   size 634192
+   filename "hyperbole-1.16-pkg.tar.gz"
+   md5sum "64be21a91b7ef00696b19478ccef90f6"
+   size 636211
    provides (hact hactypes hargs hbdata hbmap hbut hgnus hhist hib-doc-id hib-kbd hibtypes hinit hlvar hmail hmh hmoccur hmous-info hmouse-drv hmouse-key hmouse-mod hmouse-tag hpath hrmail hsite hsmail hsys-w3 hsys-wais htz hui-menu hui-mini hui-mouse hui-window hui-xe-but hui hvar hversion hvm hypb hyperbole set wconfig wrolo-logic wrolo-menu wrolo)
    requires (xemacs-base mail-lib calendar vm text-modes gnus mh-e rmail apel tm sh-script net-utils)
    type regular
@@ -94,20 +263,20 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (ecb
   (standards-version 1.1
-   version "1.13"
-   author-version "1.96"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   version "1.22"
+   author-version "2.31"
+   date "2004-12-22"
+   build-date "2004-12-22"
    maintainer "Klaus Berndl <klaus.berndl@sdm.de>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Emacs source code browser."
-   filename "ecb-1.13-pkg.tar.gz"
-   md5sum "dbbc4f68db8f2f294b89f0ee11ae6156"
-   size 525836
-   provides (ecb-buffertab ecb-compilation ecb-create-layout ecb-cycle ecb ecb-eshell ecb-examples ecb-face ecb-help ecb-layout ecb-layout-defs ecb-mode-line ecb-navigate ecb-speedbar ecb-tod ecb-autogen ecb-jde ecb-upgrade ecb-util ecb-winman-support silentcomp tree-buffer)
+   filename "ecb-1.22-pkg.tar.gz"
+   md5sum "ebce6137e59c2792b3960bce293f0ec1"
+   size 887270
+   provides (ecb-buffertab ecb-compilation ecb-create-layout ecb-cycle ecb ecb-eshell ecb-examples ecb-face ecb-file-browser ecb-help ecb-layout ecb-layout-defs ecb-method-browser ecb-mode-line ecb-navigate ecb-speedbar ecb-tod ecb-autogen ecb-jde ecb-upgrade ecb-util ecb-winman-support ecb-semantic-wrapper silentcomp tree-buffer ecb-compatibility ecb-common-browser)
    requires (xemacs-base semantic eieio fsf-compat edit-utils jde mail-lib eshell ediff xemacs-devel speedbar c-support)
    type regular
 ))
@@ -116,21 +285,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (pgg
   (standards-version 1.1
-   version "1.04"
+   version "1.06"
    author-version "0.1"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-09-26"
+   build-date "2005-09-26"
    maintainer "Simon Josefsson <simon@josefsson.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Emacs interface to various PGP implementations."
-   filename "pgg-1.04-pkg.tar.gz"
-   md5sum "8f4d77a0e99edbd3040c8d3988109ee8"
-   size 31307
+   filename "pgg-1.06-pkg.tar.gz"
+   md5sum "6cb9d38dfe23cdd8ff62291be5a8b03a"
+   size 33917
    provides (pgg pgg-def pgg-parse pgg-gpg pgg-pgp pgg-pgp5)
-   requires (xemacs-base fsf-compat edebug)
+   requires (xemacs-base fsf-compat edebug ecrypto)
    type regular
 ))
 ))
@@ -138,19 +307,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (perl-modes
   (standards-version 1.1
-   version "1.05"
+   version "1.08"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-04-27"
+   build-date "2005-04-28"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Perl support."
-   filename "perl-modes-1.05-pkg.tar.gz"
-   md5sum "cbfc241502bb708e878bcb2d587a78b1"
-   size 161184
+   filename "perl-modes-1.08-pkg.tar.gz"
+   md5sum "b35612e5ac120e2d875899f2314cfa85"
+   size 165731
    provides (cperl-mode perl-mode)
    requires (xemacs-base ispell ps-print edit-utils fsf-compat)
    type regular
@@ -160,21 +329,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (python-modes
   (standards-version 1.1
-   version "1.03"
+   version "1.07"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
+   date "2005-12-19"
+   build-date "2005-12-19"
+   maintainer "Skip Montanaro <skip@pobox.com>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Python support."
-   filename "python-modes-1.03-pkg.tar.gz"
-   md5sum "537b318e5901cfc95ba7dfcce32d24bf"
-   size 82105
+   filename "python-modes-1.07-pkg.tar.gz"
+   md5sum "574cac0c86f8e19c684017989ea25801"
+   size 92924
    provides (pydoc python-mode)
-   requires (xemacs-base mail-lib)
+   requires (xemacs-base mail-lib edit-utils fsf-compat)
    type regular
 ))
 ))
@@ -204,19 +373,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (fortran-modes
   (standards-version 1.1
-   version "1.03"
+   version "1.05"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-12-20"
+   build-date "2005-12-20"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Fortran support."
-   filename "fortran-modes-1.03-pkg.tar.gz"
-   md5sum "413d2f5ea1497c29b436fee52073563b"
-   size 66719
+   filename "fortran-modes-1.05-pkg.tar.gz"
+   md5sum "2c2545602482660ad0d811b0574a3eed"
+   size 70602
    provides (f90 fortran)
    requires (xemacs-base)
    type regular
@@ -270,21 +439,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (ecrypto
   (standards-version 1.1
-   version "0.14"
+   version "0.20"
    author-version "2.0"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-09-26"
+   build-date "2005-09-26"
    maintainer "Simon Josefsson <simon@josefsson.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Crypto functionality in Emacs Lisp."
-   filename "ecrypto-0.14-pkg.tar.gz"
-   md5sum "59207e5f5a5300ccf0d21f27b018de91"
-   size 68741
+   filename "ecrypto-0.20-pkg.tar.gz"
+   md5sum "eb94f451a4d279cd92f8f2bcb9b9b79b"
+   size 76257
    provides (ascii-armor blowfish des hex-util md4 md5-dl md5-el md5 paranoid rander rc16 rijndael sha1-dl sha1-el sha1)
-   requires ()
+   requires (xemacs-base)
    type regular
 ))
 ))
@@ -314,19 +483,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (sasl
   (standards-version 1.1
-   version "1.14"
+   version "1.16"
    author-version "1.14.4"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-09-26"
+   build-date "2005-09-26"
    maintainer "Simon Josefsson <simon@josefsson.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Simple Authentication and Security Layer (SASL) library."
-   filename "sasl-1.14-pkg.tar.gz"
-   md5sum "a00a2f0e7e6f1614ae95cdbef50e333e"
-   size 27045
+   filename "sasl-1.16-pkg.tar.gz"
+   md5sum "2799ab3b97e3d3cd2fd5ca0385b04931"
+   size 27864
    provides (hmac-def hmac-md5 hmac-sha1 ntlm sasl sasl-cram sasl-digest sasl-ntlm sasl-plain sasl-login sasl-anonymous)
    requires (ecrypto)
    type regular
@@ -336,19 +505,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (sml-mode
   (standards-version 1.1
-   version "0.10"
+   version "0.12"
    author-version "3.9.5"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-07-27"
+   build-date "2005-07-27"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "SML editing support."
-   filename "sml-mode-0.10-pkg.tar.gz"
-   md5sum "87914cf428610799a98815b17393f6e0"
-   size 81763
+   filename "sml-mode-0.12-pkg.tar.gz"
+   md5sum "017614793fe793e401911c0824356a37"
+   size 82366
    provides (sml-compat sml-defs sml-mode sml-move sml-proc sml-util)
    requires (xemacs-base edebug fsf-compat)
    type regular
@@ -356,43 +525,21 @@ Hash: SHA1
 ))
 ;;;@@@
 (package-get-update-base-entry (quote
-(ess
-  (standards-version 1.1
-   version "1.06"
-   author-version "5.1.21"
-   date "2003-11-10"
-   build-date "2003-11-10"
-   maintainer "A.J. Rossini <rossini@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "ESS: Emacs Speaks Statistics."
-   filename "ess-1.06-pkg.tar.gz"
-   md5sum "46e105b2fd715790f6358d9f637cdf32"
-   size 445788
-   provides (ess-batch ess-comp ess-cust ess-dump ess-emcs ess-font-lock ess-help ess-inf ess-iw32 ess-latex-mode ess-menu ess-mode ess-mous ess-noweb ess-site ess-sysdp ess-utils ess-vars ess essa-r essa-sas essd-arc essd-els essd-r essd-omg essd-r essd-s3 essd-s4 essd-sas essd-sp3 essd-sp4 essd-sp5 essd-sp6 essd-sta essd-vst essd-xls essddr essdsp6w essl-bug essl-lsp essl-omg essl-py essl-s essl-sas essl-sta make-regexp mouseme msdos noweb-font-lock-mode noweb-mode)
-   requires (xemacs-base mail-lib fsf-compat edit-utils speedbar sh-script eterm)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
 (haskell-mode
   (standards-version 1.1
-   version "1.06"
-   author-version "1.44"
-   date "2003-10-31"
-   build-date "2003-10-31"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
+   version "1.07"
+   author-version "1.45"
+   date "2004-06-16"
+   build-date "2004-06-16"
+   maintainer "Jerry James <james@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Haskell editing support."
-   filename "haskell-mode-1.06-pkg.tar.gz"
-   md5sum "75c3dcb6fbe0a8824c865d8b989866cc"
-   size 94315
+   filename "haskell-mode-1.07-pkg.tar.gz"
+   md5sum "20d1ff41a4b753a276affd60850b08e7"
+   size 97642
    provides (haskell-decl-scan haskell-doc haskell-font-lock haskell-indent haskell-mode haskell-simple-indent)
    requires (dired mail-lib xemacs-base edit-utils)
    type regular
@@ -422,45 +569,23 @@ Hash: SHA1
 ))
 ;;;@@@
 (package-get-update-base-entry (quote
-(liece
-  (standards-version 1.1
-   version "1.12"
-   author-version "1.4.9"
-   date "2003-04-22"
-   build-date "2003-04-22"
-   maintainer "Daiki Ueno <ueno@unixuser.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "IRC (Internet Relay Chat) client for Emacs."
-   filename "liece-1.12-pkg.tar.gz"
-   md5sum "c7f2aab45f8ada9398d4b0807e80433a"
-   size 199275
-   provides (liece-xemacs gettext liece-clfns liece-handler liece-compat liece-version liece-vars liece-globals liece-inlines liece-filter liece-coding liece-dcc liece-menu liece-000 liece-200 liece-300 liece-400 liece-500 liece-nick liece-channel liece-commands liece-ctcp liece-q-el liece-message liece-handle liece-hilit liece-intl liece-mail liece-minibuf liece-misc liece-tcp liece-url liece-x-face liece-window liece)
-   requires (apel mail-lib fsf-compat xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
 (latin-unity
   (standards-version 1.1
-   version "1.09"
-   author-version "1.09"
-   date "2003-11-09"
-   build-date "2003-11-09"
+   version "1.16"
+   author-version "1.16"
+   date "2005-12-29"
+   build-date "2005-12-29"
    maintainer "Stephen J. Turnbull <stephen@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "MULE: find single ISO 8859 character set to encode a buffer."
-   filename "latin-unity-1.09-pkg.tar.gz"
-   md5sum "83b7fd603ad7cd5d9c459a0035501cac"
-   size 106267
+   filename "latin-unity-1.16-pkg.tar.gz"
+   md5sum "2591f33d4c1057c238efe124ff534c81"
+   size 104739
    provides (latin-unity latin-unity-tables latin-unity-utils)
-   requires (mule-base mule-ucs leim fsf-compat dired)
+   requires (mule-base latin-euro-standards mule-ucs leim fsf-compat dired)
    type regular
 ))
 ))
@@ -468,19 +593,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (mmm-mode
   (standards-version 1.1
-   version "1.01"
+   version "1.02"
    author-version "0.4.7"
-   date "2003-10-29"
-   build-date "2003-10-29"
+   date "2004-03-02"
+   build-date "2004-03-02"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Multiple major modes in a single buffer"
-   filename "mmm-mode-1.01-pkg.tar.gz"
-   md5sum "28cf0136d0d8e59e74a464074a98ef4b"
-   size 175927
+   filename "mmm-mode-1.02-pkg.tar.gz"
+   md5sum "f68f90fb1b870f7a8e89c83e9b6c3973"
+   size 176072
    provides (mmm-auto mmm-class mmm-cmds mmm-compat mmm-mason mmm-mode mmm-region mmm-rpm mmm-sample mmm-univ mmm-utils mmm-vars)
    requires (xemacs-base fsf-compat )
    type regular
@@ -512,19 +637,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (xemacs-base
   (standards-version 1.1
-   version "1.82"
+   version "2.01"
    author-version "No-Upstream-Ver"
-   date "2003-10-29"
-   build-date "2003-10-29"
+   date "2005-12-31"
+   build-date "2005-12-31"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "Fundamental XEmacs support, you almost certainly need this."
-   filename "xemacs-base-1.82-pkg.tar.gz"
-   md5sum "7ba84839d26de61e4cb62741531d59ba"
-   size 472771
+   filename "xemacs-base-2.01-pkg.tar.gz"
+   md5sum "a378f0ed585ebb9d6d8ace534f7e5987"
+   size 513382
    provides (add-log advice-preload advice annotations assoc case-table chistory comint-xemacs comint compile debug ebuff-menu echistory edmacro ehelp electric enriched env facemenu ffap helper imenu iso-syntax macros novice outline passwd pp regexp-opt regi ring shell skeleton sort thing time-stamp timezone tq xbm-button xpm-button)
    requires ()
    type regular
@@ -534,22 +659,22 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (tramp
   (standards-version 1.1
-   version "1.16"
-   author-version "2.0.35"
-   date "2003-07-21"
-   build-date "2003-07-21"
+   version "1.28"
+   author-version "2.0.51"
+   date "2005-10-12"
+   build-date "2005-10-12"
    maintainer "Kai Großjohann <kai.grossjohann@gmx.net>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Remote shell-based file editing."
-   filename "tramp-1.16-pkg.tar.gz"
-   md5sum "ec5a21c4462d48ebe8dc01ea0e32373c"
-   size 251091
+   filename "tramp-1.28-pkg.tar.gz"
+   md5sum "5ac2f914804150d00cba64c717182c59"
+   size 291435
    provides (tramp tramp-efs tramp-ftp tramp-smb tramp-util tramp-uu
              tramp-vc trampcache)
-   requires (tramp xemacs-base vc fsf-compat efs dired mail-lib gnus ediff)
+   requires (tramp xemacs-base vc efs dired mail-lib gnus ediff sh-script)
    type regular
 ))
 ))
@@ -557,20 +682,20 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (text-modes
   (standards-version 1.1
-   version "1.71"
+   version "1.90"
    author-version "No-Upstream-Ver"
-   date "2003-11-13"
-   build-date "2003-11-13"
+   date "2005-11-02"
+   build-date "2005-11-02"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "Miscellaneous support for editing text files."
-   filename "text-modes-1.71-pkg.tar.gz"
-   md5sum "39be167962dc1a547a13f8bb1788327f"
-   size 377506
-   provides (ansi-color autoinsert crontab-edit desktop-entry-mode filladapt flyspell folding fold-isearch hexl htmlize image-mode iso-acc iso-ascii iso-cvt iso-insert iso-swed rtf-support swedish tabify whitespace-mode winmgr-mode xpm-mode xrdb-mode apache-mode po-mode po-compat css-mode)
+   filename "text-modes-1.90-pkg.tar.gz"
+   md5sum "f2d5111f6e561b595aead30333b704cf"
+   size 442526
+   provides (ansi-color autoinsert crontab-edit desktop-entry-mode filladapt flyspell folding fold-isearch hexl htmlize image-mode iso-acc iso-ascii iso-cvt iso-insert iso-swed rtf-support swedish tabify whitespace-mode whitespace-visual-mode winmgr-mode xpm-mode xrdb-mode apache-mode po-mode po-compat css-mode)
    requires (ispell fsf-compat xemacs-base)
    type regular
 ))
@@ -579,20 +704,20 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (pcl-cvs
   (standards-version 1.1
-   version "1.65"
+   version "1.66"
    author-version "R-2_9_9"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-12-22"
+   build-date "2004-12-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "CVS frontend."
-   filename "pcl-cvs-1.65-pkg.tar.gz"
-   md5sum "53b8cbd4d0b7709cfaf9d51e11888324"
-   size 161016
-   provides (cvs-compat cvs-edit cvs-log cvs-status easy-mmode pcl-cvs-defs pcl-cvs-info pcl-cvs-parse pcl-cvs-util pcl-cvs)
+   filename "pcl-cvs-1.66-pkg.tar.gz"
+   md5sum "04101b03e5d8e929471875b30e1a2c31"
+   size 161505
+   provides (cvs-compat cvs-edit cvs-log cvs-status pcl-cvs-defs pcl-cvs-info pcl-cvs-parse pcl-cvs-util pcl-cvs)
    requires (xemacs-base elib vc dired edebug ediff edit-utils mail-lib prog-modes)
    type regular
 ))
@@ -601,19 +726,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (mail-lib
   (standards-version 1.1
-   version "1.63"
+   version "1.75"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-10-28"
+   build-date "2005-10-28"
    maintainer "Simon Josefsson <simon@josefsson.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Fundamental lisp files for providing email support."
-   filename "mail-lib-1.63-pkg.tar.gz"
-   md5sum "99b3f341e8c29ad2dc3fec5196e32549"
-   size 198134
+   filename "mail-lib-1.75-pkg.tar.gz"
+   md5sum "a8417567fe05e5baf884e1993bf13a44"
+   size 211214
    provides (base64 browse-url-xemacs browse-url highlight-headers mail-abbrevs mail-extr mail-utils mailheader netrc pop3 reporter rfc2104 rfc822 rmail rmail-mini rmailout sendmail smtpmail starttls tls)
    requires (eterm xemacs-base fsf-compat sh-script ecrypto)
    type regular
@@ -623,19 +748,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (jde
   (standards-version 1.1
-   version "1.46"
+   version "1.48"
    author-version "2.3.2"
-   date "2003-10-08"
-   build-date "2003-10-08"
+   date "2005-06-01"
+   build-date "2005-06-01"
    maintainer "Andy Piper <andy@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Integrated Development Environment for Java."
-   filename "jde-1.46-pkg.tar.gz"
-   md5sum "60f5d299a53be811f6ef6006f2566c20"
-   size 2403395
+   filename "jde-1.48-pkg.tar.gz"
+   md5sum "26a98e47f6358b465f423dc9d597c6f6"
+   size 2404962
    provides (beanshell efc jde-ant jde-bug jde-checkstyle jde-compat jde-compile jde-complete jde-db jde-dbo jde-dbs jde-ejb jde-gen jde-help jde-imenu jde-import jde-java-font-lock jde-java-grammar jde-javadoc-gen jde-javadoc jde-jdb jde-make jde-open-source jde-package jde-parse-class jde-parse jde-run jde-setnu jde-stat jde-util jde-which-method jde-widgets jde-wiz jde-xref jde tree-widget)
    requires (jde cc-mode semantic debug speedbar edit-utils eterm mail-lib xemacs-base xemacs-devel eieio elib sh-script fsf-compat)
    type regular
@@ -645,19 +770,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (fsf-compat
   (standards-version 1.1
-   version "1.13"
+   version "1.15"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-10-22"
+   build-date "2004-10-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "FSF Emacs compatibility files."
-   filename "fsf-compat-1.13-pkg.tar.gz"
-   md5sum "270a9deea6166bb38ac00f6191c7e8c0"
-   size 21687
+   filename "fsf-compat-1.15-pkg.tar.gz"
+   md5sum "a68d000cf16b054b20a56e917d57e712"
+   size 18912
    provides (overlay thingatpt timer x-popup-menu goto-addr)
    requires (xemacs-base)
    type single
@@ -667,19 +792,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (edit-utils
   (standards-version 1.1
-   version "2.10"
+   version "2.32"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-12-05"
+   build-date "2005-12-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "Miscellaneous editor extensions, you probably need this."
-   filename "edit-utils-2.10-pkg.tar.gz"
-   md5sum "8d3c77a3ae8fb443a608a148e32e0d48"
-   size 925330
+   filename "edit-utils-2.32-pkg.tar.gz"
+   md5sum "c858e39c25478b3797a5859c991d7bc9"
+   size 944596
    provides (abbrevlist after-save-commands atomic-extents avoid backup-dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w completion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select info-look iswitchb lazy-lock lazy-shot live-icon makesum man mic-paren paren mode-motion+ outl-mouse outln-18 page-ext blink-paren paren permanent-buffers popper power-macros recent-files redo reportmail resume rsz-minibuf saveconf savehist saveplace scroll-in-place setnu shell-font tempo toolbar-utils tree-menu uniquify vertical-mode where-was-i-db winring autorevert align allout outline narrow-stack highline)
    requires (xemacs-base xemacs-devel fsf-compat dired mail-lib)
    type single
@@ -711,19 +836,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (ps-print
   (standards-version 1.1
-   version "1.09"
+   version "1.11"
    author-version "6.5.6"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-08-10"
+   build-date "2004-08-10"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Printing functions and utilities"
-   filename "ps-print-1.09-pkg.tar.gz"
-   md5sum "9055fe7244e253e2a12cc7e4d69df041"
-   size 155737
+   filename "ps-print-1.11-pkg.tar.gz"
+   md5sum "a9460da8906bbbcbec37f28625b2bbad"
+   size 156222
    provides (lpr ps-bdf ps-mule ps-print)
    requires (text-modes)
    type regular
@@ -733,21 +858,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (sieve
   (standards-version 1.1
-   version "1.14"
+   version "1.18"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-09-26"
+   build-date "2005-09-26"
    maintainer "Simon Josefsson <simon@josefsson.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Manage Sieve email filtering scripts."
-   filename "sieve-1.14-pkg.tar.gz"
-   md5sum "6a9234ad3e59c485869db92a3637d91f"
-   size 25677
+   filename "sieve-1.18-pkg.tar.gz"
+   md5sum "254bfbb81e4204ab8e57066baee8e78f"
+   size 27387
    provides (sieve sieve-mode sieve-manage)
-   requires (xemacs-base mail-lib cc-mode sasl)
+   requires (xemacs-base mail-lib cc-mode sasl ecrypto sh-script)
    type regular
 ))
 ))
@@ -755,21 +880,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (mule-ucs
   (standards-version 1.1
-   version "1.05"
+   version "1.14"
    author-version "0.84"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-06-21"
+   build-date "2005-06-21"
    maintainer "Stephen J. Turnbull <stephen@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "MULE: Extended coding systems (including Unicode) for XEmacs."
-   filename "mule-ucs-1.05-pkg.tar.gz"
-   md5sum "772c06a697d0b3b4d7b78e8df76c019c"
-   size 1314530
+   filename "mule-ucs-1.14-pkg.tar.gz"
+   md5sum "b1e0eb84dc1675400b867a57d38ffb36"
+   size 1300714
    provides (mccl-font mucs-ccl mucs-error mucs-type mucs mule-uni tae tbl-mg trans-util txt-tbl un-data un-define un-supple un-tools un-trbase unicode unidata utf u-cns-1 u-cns-2 u-cns-3 u-cns-4 u-cns-5 u-cns-6 u-cns-7 uascii ubig5 uetiopic ugb2312 uipa uiscii uiso8859-1 uiso8859-14 uiso8859-15 uiso8859-2 uiso8859-3 uiso8859-4 uiso8859-5 uiso8859-6 uiso8859-7 uiso8859-8 uiso8859-9 ujisx0201 ujisx0208 ujisx0212 uksc5601 usisheng usupple utibetan utis620 uviscii)
-   requires (mule-base)
+   requires (mule-base latin-euro-standards)
    type regular
 ))
 ))
@@ -777,21 +902,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (clearcase
   (standards-version 1.0
-   version "1.08"
-   author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
-   maintainer "Michael Diers <mdiers@xemacs.org>"
+   version "1.10"
+   author-version "/main/laptop/165"
+   date "2005-06-04"
+   build-date "2005-06-04"
+   maintainer "Adrian Aichner <adrian@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "New Clearcase Version Control for XEmacs (UNIX, Windows)."
-   filename "clearcase-1.08-pkg.tar.gz"
-   md5sum "6fedc7464137eae08c25517276f8a7ab"
-   size 94543
+   filename "clearcase-1.10-pkg.tar.gz"
+   md5sum "956e445057c6c1afd48d898b9736bd22"
+   size 105865
    provides (clearcase)
-   requires (dired fsf-compat mail-lib xemacs-base)
+   requires (dired mail-lib xemacs-base sh-script)
    type regular
 ))
 ))
@@ -799,19 +924,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (dictionary
   (standards-version 1.1
-   version "1.12"
+   version "1.16"
    author-version "1.8"
-   date "2003-06-22"
-   build-date "2003-06-22"
+   date "2005-05-10"
+   build-date "2005-05-10"
    maintainer "Torsten Hilbrich <dictionary@myrkr.in-berlin.de>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Interface to RFC2229 dictionary servers."
-   filename "dictionary-1.12-pkg.tar.gz"
-   md5sum "717517bbad4e241f18941fd6c289b868"
-   size 39658
+   filename "dictionary-1.16-pkg.tar.gz"
+   md5sum "83011986c60b22aecb5c1246f66c7744"
+   size 40085
    provides (dictionary connection link)
    requires (xemacs-base)
    type regular
@@ -843,19 +968,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (xslt-process
   (standards-version 1.0
-   version "1.11"
+   version "1.12"
    author-version "1.2.1"
-   date "2002-10-08"
-   build-date "2002-10-08"
+   date "2005-07-27"
+   build-date "2005-07-27"
    maintainer "Ovidiu Predescu <ovidiu@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "XSLT processing support."
-   filename "xslt-process-1.11-pkg.tar.gz"
-   md5sum "30273cbe2e90ae703ea410879412e68b"
-   size 199873
+   filename "xslt-process-1.12-pkg.tar.gz"
+   md5sum "dde00a263877a3bb3a82c6fb96299aab"
+   size 59594
    provides (xslt-process)
    requires (jde cc-mode semantic debug speedbar edit-utils eterm mail-lib xemacs-base elib eieio sh-script fsf-compat xemacs-devel)
    type regular
@@ -931,19 +1056,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (lookup
   (standards-version 1.1
-   version "1.14"
+   version "1.15"
    author-version "1.0"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-05-10"
+   build-date "2005-05-10"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "MULE: Dictionary support"
-   filename "lookup-1.14-pkg.tar.gz"
-   md5sum "f48776563d7fbd0852ad73ac9c513260"
-   size 225996
+   filename "lookup-1.15-pkg.tar.gz"
+   md5sum "975f4d8435cae628e7c6338115a3a542"
+   size 225952
    provides (evi-mule evi lookup-content lookup-defs lookup-entry lookup-select lookup-package lookup-select lookup-types lookup-utils lookup-vars lookup-vse lookup ndcookie ndeb ndic ndict ndkks ndmisc ndnmz ndspell ndsrd ndtp sdicf stem)
    requires (mule-base cookie lookup)
    type regular
@@ -975,19 +1100,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (locale
   (standards-version 1.1
-   version "1.21"
+   version "1.22"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-12-07"
+   build-date "2004-12-07"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "MULE: Localized menubars and localized splash screens."
-   filename "locale-1.21-pkg.tar.gz"
-   md5sum "2256243bb8cdd282af7b40bc2cf30018"
-   size 36961
+   filename "locale-1.22-pkg.tar.gz"
+   md5sum "2a3accb220d0c67b3e76762fb2872ab9"
+   size 37968
    provides ()
    requires (mule-base)
    type regular
@@ -997,19 +1122,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (mule-base
   (standards-version 1.1
-   version "1.44"
+   version "1.47"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-05-10"
+   build-date "2005-05-10"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump nil
-   description "MULE: Basic Mule support, required for building with Mule."
-   filename "mule-base-1.44-pkg.tar.gz"
-   md5sum "9eaa93208008617bd8f0d34448dcfaa3"
-   size 444749
+   description "MULE: Basic Mule support."
+   filename "mule-base-1.47-pkg.tar.gz"
+   md5sum "f6f85c610f6bd604edcb252b20f32108"
+   size 444408
    provides (canna-leim canna char-table china-util cyril-util isearch-ext japan-util ccl can-n-egg mule-help)
    requires (fsf-compat xemacs-base apel)
    type regular
@@ -1085,19 +1210,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (sgml
   (standards-version 1.1
-   version "1.10"
+   version "1.11"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-01-27"
+   build-date "2004-01-27"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "SGML/Linuxdoc-SGML editing."
-   filename "sgml-1.10-pkg.tar.gz"
-   md5sum "ab80262877e3547dfb97e80a0a778e09"
-   size 27462
+   filename "sgml-1.11-pkg.tar.gz"
+   md5sum "8d1cec5b4b005210507b6fe57e2db9a8"
+   size 27506
    provides (sgml linuxdoc-sgml)
    requires (xemacs-base)
    type regular
@@ -1107,19 +1232,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (psgml
   (standards-version 1.1
-   version "1.41"
+   version "1.44"
    author-version "1.3.1"
-   date "2003-08-29"
-   build-date "2003-08-29"
+   date "2005-04-05"
+   build-date "2005-04-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Validated HTML/SGML editing."
-   filename "psgml-1.41-pkg.tar.gz"
-   md5sum "33baca4b85d3d9c48df682b748c9a273"
-   size 301000
+   filename "psgml-1.44-pkg.tar.gz"
+   md5sum "9edbc1b72754f45d23cf73b287b6a2aa"
+   size 302065
    provides (iso-sgml psgml-api psgml-charent psgml-debug psgml-dtd psgml-edit psgml-fs psgml-html psgml-info psgml-parse psgml-sysdep psgml-xemacs psgml sgml-mode)
    requires (xemacs-base edit-utils edebug xemacs-devel mail-lib fsf-compat eterm sh-script ps-print)
    type regular
@@ -1129,19 +1254,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (pc
   (standards-version 1.1
-   version "1.26"
+   version "1.28"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-04-26"
+   build-date "2005-04-26"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "PC style interface emulation."
-   filename "pc-1.26-pkg.tar.gz"
-   md5sum "47189d077b363012c4b17f527eef2ec7"
-   size 17611
+   filename "pc-1.28-pkg.tar.gz"
+   md5sum "b3722c793e2f9b977fc0967ed0805efa"
+   size 17720
    provides (delbs fusion pc-select pending-del s-region)
    requires (xemacs-base)
    type regular
@@ -1151,19 +1276,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (ispell
   (standards-version 1.1
-   version "1.26"
-   author-version "3.3"
-   date "2003-11-02"
-   build-date "2003-11-02"
+   version "1.32"
+   author-version "3.6"
+   date "2005-10-16"
+   build-date "2005-10-16"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Spell-checking with GNU ispell."
-   filename "ispell-1.26-pkg.tar.gz"
-   md5sum "85a9da0fe8ed41199388b5f41a0f7769"
-   size 72869
+   filename "ispell-1.32-pkg.tar.gz"
+   md5sum "0eceb13fd90b388f744f04bbf83fe4a1"
+   size 83587
    provides (ispell)
    requires ()
    type regular
@@ -1239,19 +1364,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (calendar
   (standards-version 1.1
-   version "1.22"
+   version "1.23"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-01-27"
+   build-date "2004-01-27"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Calendar and diary support."
-   filename "calendar-1.22-pkg.tar.gz"
-   md5sum "c9f0bdbcb3cbbb9eff338e4edd9d7f95"
-   size 253996
+   filename "calendar-1.23-pkg.tar.gz"
+   md5sum "de5fd826168913232c48aa88ec0f1d5c"
+   size 254025
    provides (appt cal-china cal-coptic cal-dst cal-french cal-hebrew cal-islam cal-iso cal-japanese cal-julian cal-mayan cal-move cal-persia cal-tex cal-x cal-xemacs calendar diary-lib holidays lunar solar)
    requires (xemacs-base)
    type regular
@@ -1261,19 +1386,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (calc
   (standards-version 1.1
-   version "1.24"
+   version "1.26"
    author-version "2.02fX3"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-09-07"
+   build-date "2004-09-07"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Emacs calculator"
-   filename "calc-1.24-pkg.tar.gz"
-   md5sum "61fa56abe04492e448a8549b5978ca3a"
-   size 1600141
+   filename "calc-1.26-pkg.tar.gz"
+   md5sum "2ebbdf5c8cba89d50ab6300287697a6b"
+   size 1600637
    provides (calc-ext calc-macs calc)
    requires (xemacs-base)
    type regular
@@ -1283,19 +1408,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (speedbar
   (standards-version 1.1
-   version "1.27"
+   version "1.28"
    author-version "0.14beta4"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-07-19"
+   build-date "2005-07-19"
    maintainer "Eric M. Ludlam <zappo@gnu.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Provides a separate frame with convenient references."
-   filename "speedbar-1.27-pkg.tar.gz"
-   md5sum "4df8d109364493dca814ef7429d560d2"
-   size 163245
+   filename "speedbar-1.28-pkg.tar.gz"
+   md5sum "1b82aee8431f3c8083689f7a6c3a6a33"
+   size 163269
    provides (bigclock dframe rpm sb-ant sb-gud sb-html sb-image sb-info sb-rmail sb-texinfo sb-w3 speedbar)
    requires (xemacs-base edebug)
    type regular
@@ -1305,19 +1430,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (pcomplete
   (standards-version 1.1
-   version "1.03"
+   version "1.04"
    author-version "1.1.6"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-01-23"
+   build-date "2005-01-23"
    maintainer "John Wiegley <johnw@gnu.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Provides programmatic completion."
-   filename "pcomplete-1.03-pkg.tar.gz"
-   md5sum "43bad91be873dd6ae2f9483e90c42226"
-   size 37443
+   filename "pcomplete-1.04-pkg.tar.gz"
+   md5sum "f8631085f1355707234110c9ab043a53"
+   size 37573
    provides (pcomplete)
    requires (sh-script xemacs-base)
    type regular
@@ -1327,19 +1452,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (eshell
   (standards-version 1.1
-   version "1.06"
+   version "1.10"
    author-version "2.4.1"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-06-27"
+   build-date "2005-06-27"
    maintainer "John Wiegley <johnw@gnu.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Command shell implemented entirely in Emacs Lisp"
-   filename "eshell-1.06-pkg.tar.gz"
-   md5sum "737f4d5caed7ffe8cb987f0e2459d6e8"
-   size 232041
+   filename "eshell-1.10-pkg.tar.gz"
+   md5sum "859fc15237a3d5177551614fecd88671"
+   size 232616
    provides (em-alias em-banner em-basic em-cmpl em-dirs em-glob em-hist em-ls em-pred em-prompt em-rebind em-script em-smart em-term em-unix em-xtra esh-arg esh-cmd esh-ext esh-io esh-maint esh-mode esh-module esh-opt esh-proc esh-test esh-toggle esh-util esh-var eshell)
    requires (xemacs-base eterm)
    type regular
@@ -1371,19 +1496,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (os-utils
   (standards-version 1.1
-   version "1.34"
+   version "1.36"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-01-31"
+   build-date "2005-01-31"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Miscellaneous O/S utilities."
-   filename "os-utils-1.34-pkg.tar.gz"
-   md5sum "98fa67e0d1b89febd16bfc952d552171"
-   size 225849
+   filename "os-utils-1.36-pkg.tar.gz"
+   md5sum "56d04bd914e392d03719206469964f20"
+   size 225865
    provides (archive-mode background crypt++ crypt ftelnet inf-lisp jka-compr mchat rlogin ssh tar-mode telnet terminal uncompress)
    requires (xemacs-base)
    type single
@@ -1415,19 +1540,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (igrep
   (standards-version 1.1
-   version "1.12"
-   author-version "2.95"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   version "1.14"
+   author-version "2.111"
+   date "2005-12-05"
+   build-date "2005-12-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Enhanced front-end for Grep."
-   filename "igrep-1.12-pkg.tar.gz"
-   md5sum "a46e749b903ad526dad1a898496e9812"
-   size 17316
+   filename "igrep-1.14-pkg.tar.gz"
+   md5sum "c67cfd9d4fbb5356784898a54cf957d1"
+   size 20838
    provides (igrep)
    requires (dired xemacs-base efs)
    type regular
@@ -1437,19 +1562,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (eterm
   (standards-version 1.1
-   version "1.15"
+   version "1.17"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-06-27"
+   build-date "2005-06-27"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Terminal emulation."
-   filename "eterm-1.15-pkg.tar.gz"
-   md5sum "4821611600abfb6f7e6d2d91b361e5dc"
-   size 109135
+   filename "eterm-1.17-pkg.tar.gz"
+   md5sum "3f0508fad96213912261afdc934e5ce8"
+   size 109229
    provides (eterm)
    requires (xemacs-base)
    type regular
@@ -1459,19 +1584,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (viper
   (standards-version 1.1
-   version "1.37"
+   version "1.47"
    author-version "3.09"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-11-25"
+   build-date "2005-11-25"
    maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "VI emulation support."
-   filename "viper-1.37-pkg.tar.gz"
-   md5sum "5bd6157ea98d1cc9399e91eb3b684c8c"
-   size 327719
+   filename "viper-1.47-pkg.tar.gz"
+   md5sum "66e3556c2421cf81083406bc92ad9f88"
+   size 335017
    provides (viper-cmd viper-ex viper-init viper-keym viper-macs viper-mous viper-util viper)
    requires (xemacs-base)
    type regular
@@ -1525,21 +1650,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (texinfo
   (standards-version 1.1
-   version "1.25"
+   version "1.30"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-09-26"
+   build-date "2005-09-26"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "XEmacs TeXinfo support."
-   filename "texinfo-1.25-pkg.tar.gz"
-   md5sum "a2755f74e1f4c76ba36d844abc718d3a"
-   size 133884
+   filename "texinfo-1.30-pkg.tar.gz"
+   md5sum "afa4dfa82a93fc7d4b85096621b8acdf"
+   size 145763
    provides (makeinfo tex-mode texinfmt texinfo texnfo-tex texnfo-upd)
-   requires (xemacs-base)
+   requires (text-modes xemacs-base)
    type regular
 ))
 ))
@@ -1547,21 +1672,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (reftex
   (standards-version 1.1
-   version "1.33"
+   version "1.34"
    author-version "4.21"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-03-15"
+   build-date "2004-03-15"
    maintainer "Carsten Dominik <dominik@science.uva.nl>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Emacs support for LaTeX cross-references, citations.."
-   filename "reftex-1.33-pkg.tar.gz"
-   md5sum "4d9a603199ad55c5d3f3cd31413a56de"
-   size 352053
+   filename "reftex-1.34-pkg.tar.gz"
+   md5sum "161d28002e1a7c80bdaf9facb3559fad"
+   size 352338
    provides (reftex-auc reftex-cite reftex-dcr reftex-vcr reftex-global reftex-index reftex-parse reftex-ref reftex-sel reftex-toc reftex-vars reftex)
-   requires (fsf-compat xemacs-base)
+   requires (xemacs-base)
    type regular
 ))
 ))
@@ -1591,19 +1716,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (crisp
   (standards-version 1.1
-   version "1.14"
+   version "1.15"
    author-version "1.34"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-04-26"
+   build-date "2005-04-26"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Crisp/Brief emulation."
-   filename "crisp-1.14-pkg.tar.gz"
-   md5sum "ba1bbc29153b1849e71d123b9f2021b1"
-   size 10361
+   filename "crisp-1.15-pkg.tar.gz"
+   md5sum "0efd73abddf2e032f520ed60b493d463"
+   size 10436
    provides (crisp scroll-lock)
    requires ()
    type regular
@@ -1613,20 +1738,20 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (auctex
   (standards-version 1.1
-   version "1.35"
-   author-version "11.13"
-   date "2003-01-03"
-   build-date "2003-01-03"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
+   version "1.46"
+   author-version "11.55"
+   date "2005-02-12"
+   build-date "2005-12-08"
+   maintainer "Uwe Brauer <oub@mat.ucm.es>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Basic TeX/LaTeX support."
-   filename "auctex-1.35-pkg.tar.gz"
-   md5sum "168e82155e152dab8c7c913bc9a4788b"
-   size 406466
-   provides (auc-old auc-tex bib-cite font-latex latex multi-prompt tex-buf tex-info tex-jp tex-mik tex-site tex texmathp)
+   filename "auctex-1.46-pkg.tar.gz"
+   md5sum "0d7170230b9300fcef5eb57a7b4e6fbf"
+   size 710140
+   provides (auc-old auc-tex bib-cite font-latex latex multi-prompt tex-buf tex-info tex-jp tex-mik tex-site tex texmathp hilit-LaTeX tex-font tex-fptex)
    requires (xemacs-base)
    type regular
 ))
@@ -1635,19 +1760,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (vhdl
   (standards-version 1.1
-   version "1.18"
-   author-version "3.31.20"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   version "1.20"
+   author-version "3.33.2"
+   date "2005-02-14"
+   build-date "2005-02-14"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Support for VHDL."
-   filename "vhdl-1.18-pkg.tar.gz"
-   md5sum "6a38f9e4428754114593b94089c71943"
-   size 273202
+   filename "vhdl-1.20-pkg.tar.gz"
+   md5sum "f4f9381623e0c14957f2ea064e5044d5"
+   size 300258
    provides (vhdl-mode)
    requires (xemacs-base edit-utils c-support speedbar ps-print os-utils)
    type regular
@@ -1657,19 +1782,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (x-symbol
   (standards-version 1.1
-   version "1.07"
+   version "1.10"
    author-version "4.5.1"
-   date "2003-10-26"
-   build-date "2003-10-26"
-   maintainer "Steve Youngs <sryoungs@bigpond.net.au>"
+   date "2004-02-16"
+   build-date "2004-02-16"
+   maintainer "Uwe Brauer <oub@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts."
-   filename "x-symbol-1.07-pkg.tar.gz"
-   md5sum "c4a1cfc1318d5eb87eb186f0972abad6"
-   size 679781
+   filename "x-symbol-1.10-pkg.tar.gz"
+   md5sum "f213f93f156cc9eb511094292caf6f51"
+   size 680100
    provides (x-symbol-bib x-symbol-hooks x-symbol-image x-symbol-macs x-symbol-mule x-symbol-nomule x-symbol-sgml x-symbol-tex x-symbol-texi x-symbol-vars x-symbol-xmacs x-symbol)
    requires (x-symbol xemacs-base auctex mail-lib)
    type regular
@@ -1679,19 +1804,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (vc
   (standards-version 1.1
-   version "1.38"
+   version "1.41"
    author-version "No-Upstream-Ver"
-   date "2003-10-27"
-   build-date "2003-10-27"
+   date "2005-06-05"
+   build-date "2005-06-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Version Control for Free systems."
-   filename "vc-1.38-pkg.tar.gz"
-   md5sum "b19fa9b253ec9335829c3289ea1b046b"
-   size 93835
+   filename "vc-1.41-pkg.tar.gz"
+   md5sum "78b4e9fefebd73d45e0953f719268d67"
+   size 94597
    provides (vc vc-hooks)
    requires (dired xemacs-base vc mail-lib ediff)
    type regular
@@ -1723,19 +1848,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (sh-script
   (standards-version 1.1
-   version "1.18"
-   author-version "2.0e"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   version "1.21"
+   author-version "2.0f"
+   date "2005-10-18"
+   build-date "2005-10-18"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Support for editing shell scripts."
-   filename "sh-script-1.18-pkg.tar.gz"
-   md5sum "4a0e2de6d1006c987dfd9e861b8562cd"
-   size 37055
+   filename "sh-script-1.21-pkg.tar.gz"
+   md5sum "c3cd67259af1073985af3d5ad83f4d2e"
+   size 70351
    provides (sh-script executable)
    requires (xemacs-base)
    type regular
@@ -1767,20 +1892,20 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (prog-modes
   (standards-version 1.1
-   version "1.91"
+   version "2.06"
    author-version "No-Upstream-Ver"
-   date "2003-10-29"
-   build-date "2003-10-29"
+   date "2005-12-05"
+   build-date "2005-12-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Support for various programming languages."
-   filename "prog-modes-1.91-pkg.tar.gz"
-   md5sum "b0203d7e022fdf730845ffbceaf41bf0"
-   size 715961
-   provides (autoconf-mode awk-mode c-mode cvs diff-mode eiffel-mode icon javascript-mode ksh-mode m4-mode make-mode makefile mode-compile mode-compile-kill modula2 p4 php-mode postscript rexx-mode rpm-spec-mode simula-mode sql tcl teco uil-mode verilog-mode)
+   filename "prog-modes-2.06-pkg.tar.gz"
+   md5sum "bf0e6a8a0ba1ad529fd945bc358b00c1"
+   size 777078
+   provides (autoconf-mode awk-mode c-mode cvs diff-mode eiffel-mode icon javascript-mode ksh-mode lua-mode m4-mode make-mode makefile mode-compile mode-compile-kill modula2 p4 php-mode postscript rexx-mode rpm-spec-mode simula-mode sql tcl teco uil-mode verilog-mode)
    requires (mail-lib xemacs-devel xemacs-base cc-mode fsf-compat edit-utils ediff emerge efs vc speedbar dired ilisp sh-script)
    type regular
 ))
@@ -1789,19 +1914,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (idlwave
   (standards-version 1.1
-   version "1.31"
+   version "1.32"
    author-version "5.1"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-05-07"
+   build-date "2005-05-07"
    maintainer "Carsten Dominik <dominik@astro.uva.nl>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Editing and Shell mode for the Interactive Data Language"
-   filename "idlwave-1.31-pkg.tar.gz"
-   md5sum "c5e8e00757efddd5d83d9acb31247102"
-   size 520952
+   filename "idlwave-1.32-pkg.tar.gz"
+   md5sum "3669f4554b9d1a487a5f3a279e5821e9"
+   size 520863
    provides (idlw-rinfo idlwave-rinfo idlw-shell idlwave-shell idlw-toolbar idlwave-toolbar idlwave)
    requires (fsf-compat xemacs-base mail-lib)
    type regular
@@ -1833,19 +1958,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (ediff
   (standards-version 1.1
-   version "1.49"
+   version "1.60"
    author-version "2.75"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-12-05"
+   build-date "2005-12-05"
    maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Interface over GNU patch."
-   filename "ediff-1.49-pkg.tar.gz"
-   md5sum "de66f77ac38f2df7dd4c5a94d9582f55"
-   size 305252
+   filename "ediff-1.60-pkg.tar.gz"
+   md5sum "1c33606ab5bce3bf0a8c5f8fe949e2ca"
+   size 313973
    provides (ediff-diff ediff-help ediff-hook ediff-init ediff-merg ediff-mult ediff-ptch ediff-tbar ediff-util ediff-vers ediff-wind ediff)
    requires (pcl-cvs elib dired xemacs-base edebug prog-modes)
    type regular
@@ -1877,19 +2002,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (c-support
   (standards-version 1.1
-   version "1.18"
+   version "1.22"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-07-27"
+   build-date "2005-07-27"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Basic single-file add-ons for editing C code."
-   filename "c-support-1.18-pkg.tar.gz"
-   md5sum "950c5d610fb614bd418863075cde1c4c"
-   size 70705
+   filename "c-support-1.22-pkg.tar.gz"
+   md5sum "972b0abd7158053f28a2c66c62ce0270"
+   size 78027
    provides (c-comment-edit cmacexp ctypes hideif hideshow)
    requires (cc-mode xemacs-base)
    type regular
@@ -1921,19 +2046,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (cc-mode
   (standards-version 1.1
-   version "1.41"
-   author-version "5.30.7"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   version "1.45"
+   author-version "5.30.10"
+   date "2005-05-24"
+   build-date "2005-05-24"
    maintainer "Martin Stjernholm <bug-cc-mode@gnu.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "C, C++, Objective-C, Java, CORBA IDL, Pike and AWK language support."
-   filename "cc-mode-1.41-pkg.tar.gz"
-   md5sum "31b9f8e38d95e6b5dd079c14f88ef360"
-   size 513369
+   filename "cc-mode-1.45-pkg.tar.gz"
+   md5sum "e1a2e251e57f29ce6e082181c13c7f04"
+   size 524116
    provides (cc-align cc-awk cc-bytecomp cc-cmds cc-compat cc-defs cc-engine cc-fix cc-fonts cc-guess cc-langs cc-lobotomy cc-menus cc-mode cc-styles cc-vars)
    requires (xemacs-base mail-lib)
    type regular
@@ -1943,19 +2068,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (semantic
   (standards-version 1.1
-   version "1.18"
+   version "1.19"
    author-version "1.4.2"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-10-31"
+   build-date "2004-10-31"
    maintainer "Eric M. Ludlam <zappo@gnu.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Semantic bovinator (Yacc/Lex for XEmacs). Includes Senator."
-   filename "semantic-1.18-pkg.tar.gz"
-   md5sum "bb333c47f371748a1e923893c98d7b3f"
-   size 443092
+   filename "semantic-1.19-pkg.tar.gz"
+   md5sum "b7fdaa9ad2d2e9d9aaba5c88df8f2fd0"
+   size 446114
    provides (document-vars document semantic-analyze semantic-bnf semantic-c semantic-cb semantic-chart semantic-ctxt semantic-el semantic-example semantic-ia-sb semantic-ia semantic-imenu semantic-java semantic-load semantic-make semantic-sb semantic-scm semantic-skel semantic-texi semantic-util-modes semantic-util semantic semanticdb senator sformat working)
    requires (eieio xemacs-base xemacs-devel edit-utils speedbar texinfo fsf-compat cc-mode edebug)
    type regular
@@ -2009,19 +2134,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (games
   (standards-version 1.1
-   version "1.15"
+   version "1.17"
    author-version "1.04"
-   date "2003-10-31"
-   build-date "2003-10-31"
-   maintainer "Glynn Clements <glynn@sensei.co.uk>"
+   date "2005-11-14"
+   build-date "2005-11-14"
+   maintainer "Glynn Clements <glynn@gclements.plus.com>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Tetris, Sokoban, and Snake."
-   filename "games-1.15-pkg.tar.gz"
-   md5sum "e50c1cd9ae0e9d32a022f52e795119b4"
-   size 37242
+   filename "games-1.17-pkg.tar.gz"
+   md5sum "42032b4568b5b46e588a6ffc63efd487"
+   size 37489
    provides (gamegrid snake tetris sokoban)
    requires (xemacs-base)
    type regular
@@ -2053,21 +2178,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (bbdb
   (standards-version 1.1
-   version "1.24"
+   version "1.29"
    author-version "2.34"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-10-12"
+   build-date "2005-10-12"
    maintainer "Ronan Waide <waider@waider.ie>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "The Big Brother Data Base"
-   filename "bbdb-1.24-pkg.tar.gz"
-   md5sum "bb9a7c33c742e28076643be7fda317ed"
-   size 373736
+   filename "bbdb-1.29-pkg.tar.gz"
+   md5sum "c8314f305d41335ac91bf5a2ff10d635"
+   size 379982
    provides (bbdb-com bbdb-ftp bbdb-gnus bbdb-gui bbdb-hooks bbdb-merge bbdb-mhe bbdb-migrate bbdb-print bbdb-reportmail bbdb-rmail bbdb-sc bbdb-snarf bbdb-srv bbdb-vm bbdb-w3 bbdb-whois bbdb-xemacs bbdb)
-   requires (bbdb edit-utils gnus mh-e rmail supercite vm tm apel mail-lib xemacs-base w3 fsf-compat eterm sh-script net-utils os-utils)
+   requires (bbdb edit-utils gnus mh-e rmail supercite vm tm apel mail-lib xemacs-base w3 fsf-compat eterm sh-script net-utils os-utils ecrypto)
    type regular
 ))
 ))
@@ -2075,19 +2200,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (zenirc
   (standards-version 1.1
-   version "1.14"
+   version "1.16"
    author-version "2.112"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-05-10"
+   build-date "2005-05-10"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "ZENIRC IRC Client."
-   filename "zenirc-1.14-pkg.tar.gz"
-   md5sum "9e40efa659a867dae6aac4673b474322"
-   size 277304
+   filename "zenirc-1.16-pkg.tar.gz"
+   md5sum "074e5d8aef2568e9e73bfb227faf61dd"
+   size 277377
    provides (zenirc-18 zenirc-8ball zenirc-away zenirc-bork zenirc-color zenirc-command-queue zenirc-complete zenirc-ctcp-flood zenirc-dcc zenirc-doto zenirc-fill zenirc-finnish zenirc-format zenirc-fortran zenirc-french zenirc-history zenirc-ignore zenirc-iwantop zenirc-klingon zenirc-latin zenirc-meditate zenirc-netsplit zenirc-notify zenirc-oink zenirc-ojnk zenirc-pjg zenirc-popup zenirc-random-away zenirc-random-nick zenirc-signal zenirc-stamp zenirc-swedish zenirc-trigger zenirc-yow-filter zenirc-yow zenirc)
    requires (zenirc)
    type regular
@@ -2097,19 +2222,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (mew
   (standards-version 1.1
-   version "1.18"
+   version "1.19"
    author-version "1.94.2"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-05-10"
+   build-date "2005-05-10"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Messaging in an Emacs World."
-   filename "mew-1.18-pkg.tar.gz"
-   md5sum "09533ddf67f0948c6b4a40b996d82fbd"
-   size 745829
+   filename "mew-1.19-pkg.tar.gz"
+   md5sum "c3bad6f65dfc096c707ed238b138c940"
+   size 745714
    provides (mew-addrbook mew-attach mew-bq mew-cache mew-complete mew-decode mew-demo mew-draft mew-encode mew-env mew-ext mew-fib mew-func mew-header mew-highlight mew-lang-jp mew-mark mew-message mew-mime mew-minibuf mew-mule mew-mule0 mew-mule2 mew-mule3 mew-os2 mew-pgp mew-pick mew-refile mew-scan mew-sort mew-summary mew-syntax mew-temacs mew-unix mew-vars mew-virtual mew-win32 mew-xemacs mew)
    requires (mew w3 efs mail-lib xemacs-base fsf-compat)
    type regular
@@ -2119,21 +2244,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (tm
   (standards-version 1.1
-   version "1.37"
+   version "1.38"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-04-09"
+   build-date "2005-04-09"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Emacs MIME support. Not needed for gnus >= 5.8.0"
-   filename "tm-1.37-pkg.tar.gz"
-   md5sum "9cd28b13243debe9a986dcbd332f1ccd"
-   size 334179
+   filename "tm-1.38-pkg.tar.gz"
+   md5sum "dcf814b84cbe6cae01153ba702ccd704"
+   size 333864
    provides (char-util cless gnus-art-mime gnus-charset gnus-mime gnus-sum-mime latex-math-symbol mel-b mel-g mel-q mel-u mel message-mime mime-setup mu-bbdb mu-cite range sc-setup signature texi-util tl-atype tl-list tl-misc tl-num tl-seq tl-str tm-bbdb tm-def tm-edit-mc tm-edit tm-ew-d tm-ew-e tm-file tm-ftp tm-html tm-image tm-latex tm-mail tm-mh-e tm-parse tm-partial tm-pgp tm-play tm-rmail tm-setup tm-tar tm-text tm-view tm-vm tmh-comp)
-   requires (gnus mh-e rmail vm mailcrypt mail-lib apel xemacs-base fsf-compat sh-script net-utils)
+   requires (gnus mh-e rmail vm mailcrypt mail-lib apel xemacs-base fsf-compat sh-script net-utils ecrypto)
    type regular
 ))
 ))
@@ -2141,21 +2266,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (gnus
   (standards-version 1.1
-   version "1.73"
-   author-version "5.10.2"
-   date "2003-10-13"
-   build-date "2003-10-13"
-   maintainer "Steve Youngs <sryoungs@bigpond.net.au>"
+   version "1.89"
+   author-version "5.10.7"
+   date "2006-01-04"
+   build-date "2006-01-04"
+   maintainer "Steve Youngs <steve@youngs.au.com>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "The Gnus Newsreader and Mailreader."
-   filename "gnus-1.73-pkg.tar.gz"
-   md5sum "a1259caa28482a71bc4dfa1e434f9511"
-   size 3245188
+   filename "gnus-1.89-pkg.tar.gz"
+   md5sum "e7707178416716eac643af29c437f619"
+   size 3457913
    provides (binhex canlock compface deuglify earcon flow-fill format-spec gnus-agent gnus-art gnus-async gnus-audio gnus-bcklg gnus-cache gnus-cite gnus-cus gnus-delay gnus-demon gnus-diary gnus-dired gnus-draft gnus-dup gnus-eform gnus-ems gnus-fun gnus-gl gnus-group gnus-int gnus-kill gnus-logic gnus-mh gnus-ml gnus-mlspl gnus-move gnus-msg gnus-nocem gnus-picon gnus-range gnus-registry gnus-salt gnus-score gnus-setup gnus-sieve gnus-soup gnus-spec gnus-srvr gnus-start gnus-sum gnus-topic gnus-undo gnus-util gnus-uu gnus-vm gnus-win gnus-xmas gnus ietf-drums imap mail-parse mail-prsvr mail-source mailcap message messagexmas messcompat mm-bodies mm-decode mm-encode mm-extern mm-partial mm-url mm-util mm-uu mm-view mml-sec mml-smime mml mml1991 mml2015 nnagent nnbabyl nndb nndiary nndir nndoc nndraft nneething nnfolder nngateway nnheader nnheaderxm nnimap nnkiboze nnlistserv nnmail nnmaildir nnmbox nnmh nnml nnnil nnoo nnrss nnslashdot nnsoup nnspool nntp nnultimate nnvirtual nnwarchive nnweb nnwfm parse-time qp rfc1843 rfc2045 rfc2047 rfc2231 score-mode smiley smime spam-report spam-stat spam time-date utf7 uudecode webmail yenc gnus-idna gpg-ring gpg hashcash vcard)
-   requires (gnus w3 mh-e mailcrypt rmail eterm mail-lib xemacs-base fsf-compat ecrypto tm apel pgg net-utils sh-script os-utils dired sieve sasl)
+   requires (gnus mail-lib xemacs-base eterm sh-script net-utils os-utils dired mh-e sieve ps-print w3 pgg mailcrypt ecrypto sasl)
    type regular
 ))
 ))
@@ -2185,19 +2310,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (mailcrypt
   (standards-version 1.1
-   version "2.13"
+   version "2.14"
    author-version "3.5.8"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-01-17"
+   build-date "2004-01-17"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Support for messaging encryption with PGP."
-   filename "mailcrypt-2.13-pkg.tar.gz"
-   md5sum "efe51870b559239cf48a102ea8a89e2f"
-   size 154111
+   filename "mailcrypt-2.14-pkg.tar.gz"
+   md5sum "df1654138b6a146868bb52addb33bf47"
+   size 154180
    provides (expect mailcrypt)
    requires (mail-lib fsf-compat xemacs-base cookie gnus mh-e rmail vm)
    type regular
@@ -2207,19 +2332,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (supercite
   (standards-version 1.1
-   version "1.20"
+   version "1.21"
    author-version "3.55x3"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-10-29"
+   build-date "2005-10-29"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "An Emacs citation tool for News & Mail messages."
-   filename "supercite-1.20-pkg.tar.gz"
-   md5sum "277fb688d3765c0434e34013e811e94d"
-   size 100553
+   filename "supercite-1.21-pkg.tar.gz"
+   md5sum "4fb516d03f2d95d9e0e092c994f79df7"
+   size 100802
    provides (supercite)
    requires (mail-lib xemacs-base)
    type regular
@@ -2229,21 +2354,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (mh-e
   (standards-version 1.1
-   version "1.27"
+   version "1.29"
    author-version "7.4.2"
-   date "2003-10-31"
-   build-date "2003-10-31"
-   maintainer "Steve Youngs <mh-e-devel@lists.sf.net>"
+   date "2005-03-14"
+   build-date "2005-03-14"
+   maintainer "XEmacs Beta <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
-   description "Front end support for MH."
-   filename "mh-e-1.27-pkg.tar.gz"
-   md5sum "5b886efc6e93f97a61237dade2f360ee"
-   size 577724
+   description "The XEmacs Interface to the MH Mail System."
+   filename "mh-e-1.29-pkg.tar.gz"
+   md5sum "c4009dbf4aa47d505dd8cb025e326ca3"
+   size 578385
    provides (mh-alias mh-comp mh-customize mh-e mh-funcs mh-gnus mh-identity mh-inc mh-index mh-junk mh-loaddefs mh-mime mh-pick mh-seq mh-speed mh-unit mh-utils mh-xemacs-compat mh-xemacs-icons)
-   requires (gnus mail-lib xemacs-base speedbar rmail tm apel sh-script fsf-compat xemacs-devel net-utils eterm os-utils)
+   requires (gnus mail-lib xemacs-base speedbar rmail tm apel sh-script fsf-compat xemacs-devel net-utils eterm os-utils ecrypto)
    type regular
 ))
 ))
@@ -2251,19 +2376,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (gnats
   (standards-version 1.1
-   version "1.16"
+   version "1.17"
    author-version "3.101"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-04-09"
+   build-date "2005-04-09"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "XEmacs bug reports."
-   filename "gnats-1.16-pkg.tar.gz"
-   md5sum "678c190f7cd184426dcccc0f3a6d10b2"
-   size 188963
+   filename "gnats-1.17-pkg.tar.gz"
+   md5sum "f048ff33f8b6f724613bd63173b9d9ef"
+   size 188959
    provides (gnats gnats-admin send-pr)
    requires (mail-lib xemacs-base)
    type regular
@@ -2317,21 +2442,23 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (net-utils
   (standards-version 1.1
-   version "1.33"
-   author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
+   version "1.48"
+   author-version "N/A"
+   date "2005-10-12"
+   build-date "2005-10-12"
+   maintainer "Steve Youngs <steve@youngs.au.com>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Miscellaneous Networking Utilities."
-   filename "net-utils-1.33-pkg.tar.gz"
-   md5sum "9470e0dc21c8dd3c1d859ce7541f31c0"
-   size 137514
-   provides (ilisp-browse-cltl2 xemacsbug feedmail metamail net-utils rcompile shadowfile webjump webster-www dig dns xml)
-   requires (bbdb w3 efs mail-lib xemacs-base fsf-compat eterm sh-script gnus rmail tm apel)
+   filename "net-utils-1.48-pkg.tar.gz"
+   md5sum "09cd58b37a72e17ff53c05ba1e67cf2f"
+   size 155120
+   provides (ilisp-browse-cltl2 xemacsbug feedmail metamail
+            net-utils rcompile shadowfile webjump webster-www
+            dig dns dns-mode xml google-query mozmail)
+   requires (bbdb w3 efs mail-lib xemacs-base eterm sh-script gnus rmail tm apel vm mh-e mew ecrypto)
    type single
 ))
 ))
@@ -2339,19 +2466,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (w3
   (standards-version 1.1
-   version "1.29"
+   version "1.32"
    author-version "4.0pre47"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-12-29"
+   build-date "2005-12-29"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "A Web browser."
-   filename "w3-1.29-pkg.tar.gz"
-   md5sum "088e276b855e95b2032aa58160ffeba2"
-   size 694178
+   filename "w3-1.32-pkg.tar.gz"
+   md5sum "92a3dcd5c51317ab8317fe6059491213"
+   size 695310
    provides (css devices w3-auto dsssl-flow dsssl font images mm mule-sysdp socks ssl urlauth url-cache url-cookie url-file url-gopher url-gw url-http url-ldap url-mail url-misc url-news url-ns url-parse url-vars url w3-about w3-auto w3-cfg w3-cus w3-display w3-emacs19 w3-e19 w3-e20 w3-elisp w3-emulate w3-forms w3-hot w3-hotindex w3-imap w3-java w3-jscript w3-keyword w3-latex w3-menu w3-mouse w3-parse w3-print w3-props w3-script w3-structure w3-speak w3-style w3-sysdp w3-toolbar w3-vars w3-widget w3-xemacs w3-xemac w3)
    requires (w3 mail-lib xemacs-base ecrypto)
    type regular
@@ -2361,19 +2488,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (vm
   (standards-version 1.1
-   version "7.18"
+   version "7.22"
    author-version "7.17"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-06-06"
+   build-date "2005-06-06"
    maintainer "Kyle Jones <kyle_jones@wonderworks.com>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "An Emacs mailer."
-   filename "vm-7.18-pkg.tar.gz"
-   md5sum "25a353d78f64c2dd2e1001719158a315"
-   size 812340
+   filename "vm-7.22-pkg.tar.gz"
+   md5sum "067b3cac6c8b6ee68a5fd2abf1e0acea"
+   size 822094
    provides (tapestry vm-byteopts vm-delete vm-digest vm-easymenu vm-edit vm-folder vm-imap vm-license vm-macro vm-mark vm-menu vm-message vm-mime vm-minibuf vm-misc vm-motion vm-mouse vm-page vm-pop vm-reply vm-save vm-search vm-sort vm-startup vm-summary vm-thread vm-toolbar vm-undo vm-user vm-vars vm vm-version vm-virtual vm-window)
    requires (mail-lib xemacs-base)
    type regular
@@ -2427,21 +2554,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (xemacs-devel
   (standards-version 1.1
-   version "1.60"
+   version "1.72"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2005-10-12"
+   build-date "2005-10-12"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority medium
    category "standard"
    dump nil
    description "Emacs Lisp developer support."
-   filename "xemacs-devel-1.60-pkg.tar.gz"
-   md5sum "db789317a15bf3a73bacd7b337ec7a34"
-   size 232116
+   filename "xemacs-devel-1.72-pkg.tar.gz"
+   md5sum "b11f75c8ab895518f9324c668cb5fd84"
+   size 243274
    provides (checkdoc docref eldoc elp eval-expr find-func hide-copyleft ielm patcher pp trace patch-keywords)
-   requires (xemacs-base ispell mail-lib gnus rmail tm apel sh-script net-utils eterm)
+   requires (xemacs-base ispell mail-lib gnus rmail tm apel sh-script net-utils eterm ecrypto)
    type single
 ))
 ))
@@ -2493,21 +2620,21 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (edebug
   (standards-version 1.1
-   version "1.20"
+   version "1.21"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-07-05"
+   build-date "2004-07-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "An Emacs Lisp debugger."
-   filename "edebug-1.20-pkg.tar.gz"
-   md5sum "ff397fa7dba09ab0a52a83649b8a14d8"
-   size 115244
+   filename "edebug-1.21-pkg.tar.gz"
+   md5sum "c3807d0c7bf76758b81f4d1837861758"
+   size 115585
    provides (edebug cl-read cust-print eval-reg cl-specs)
-   requires (xemacs-base)
+   requires (xemacs-base xemacs-devel)
    type regular
 ))
 ))
@@ -2515,19 +2642,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (Sun
   (standards-version 1.1
-   version "1.15"
+   version "1.16"
    author-version "No-Upstream-Ver"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   date "2004-09-06"
+   build-date "2004-09-06"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority low
    category "standard"
    dump nil
    description "Support for Sparcworks."
-   filename "Sun-1.15-pkg.tar.gz"
-   md5sum "ac4b09817681596ba032cf868c7c6dac"
-   size 64660
+   filename "Sun-1.16-pkg.tar.gz"
+   md5sum "e82c814a75cab21586f81c6aef7d6ea9"
+   size 64431
    provides (sccs eos-browser eos-common eos-debugger eos-debugger eos-editor eos-init eos-load eos-menubar eos-toolbar sunpro)
    requires (cc-mode xemacs-base)
    type regular
@@ -2537,19 +2664,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (apel
   (standards-version 1.1
-   version "1.27"
-   author-version "10.2"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   version "1.32"
+   author-version "10.6"
+   date "2005-12-06"
+   build-date "2005-12-06"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution xemacs
    priority high
    category "standard"
    dump nil
    description "A Portable Emacs Library.  Used by XEmacs MIME support."
-   filename "apel-1.27-pkg.tar.gz"
-   md5sum "2f35080836afe0730b2fe664f90b01be"
-   size 108585
+   filename "apel-1.32-pkg.tar.gz"
+   md5sum "0c3f9d60d3bdaf4a7f4eaf2bdf656e84"
+   size 121589
    provides (atype emu-20 emu-e19 emu-x20 emu-xemacs emu file-detect filename install mule-caesar path-util richtext std11-parse std11 tinyrich)
    requires (fsf-compat xemacs-base)
    type regular
@@ -2559,19 +2686,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (efs
   (standards-version 1.0
-   version "1.32"
-   author-version "1.22"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   version "1.33"
+   author-version "1.23"
+   date "2004-10-04"
+   build-date "2004-10-04"
    maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
    distribution stable
    priority medium
    category "standard"
    dump nil
    description "Treat files on remote systems the same as local files."
-   filename "efs-1.32-pkg.tar.gz"
-   md5sum "6123c11bc7a9c993429e9976f7bf42c4"
-   size 375800
+   filename "efs-1.33-pkg.tar.gz"
+   md5sum "d0e7badb65439e1ac144aa4588be4db1"
+   size 375842
    provides (efs)
    requires (xemacs-base dired)
    type regular
@@ -2581,19 +2708,19 @@ Hash: SHA1
 (package-get-update-base-entry (quote
 (dired
   (standards-version 1.0
-   version "1.15"
-   author-version "7.11"
-   date "2003-10-31"
-   build-date "2003-10-31"
+   version "1.17"
+   author-version "7.13"
+   date "2005-04-09"
+   build-date "2005-04-09"
    maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
    distribution stable
    priority medium
    category "standard"
    dump nil
    description "Manage file systems."
-   filename "dired-1.15-pkg.tar.gz"
-   md5sum "3bd864d76ba88c2a8a42772222a2743f"
-   size 198282
+   filename "dired-1.17-pkg.tar.gz"
+   md5sum "fc911843a2e768b657f61d4dc0137a6d"
+   size 201027
    provides (diff dired)
    requires (xemacs-base prog-modes)
    type regular
@@ -2602,10 +2729,9 @@ Hash: SHA1
 ;;;@@@
 ;; Package Index file ends here
 -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.2.3 (FreeBSD)
-Comment: The XEmacs Development Team
+Version: GnuPG v1.4.1 (GNU/Linux)
 
-iD4DBQE/s2HKgu3ywdHdhM0RAsIRAJiVkwgHSIPBMZBJlZdA06kOtKV2AKCqhmSb
-/TUbeZRrIemjq9es9VqYJg==
-=n9fY
+iD8DBQFDu3/3gu3ywdHdhM0RArnQAKC2oQEX2BRllTlQl4UiMYIZYEBeQQCeNTHj
+p3T7YxmbQDgZRUSOEEmtxs0=
+=EoNd
 -----END PGP SIGNATURE-----
index 5c36018..8d66cd0 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/cl.info, produced by makeinfo version 4.6 from cl.texi.
+This is ../info/cl.info, produced by makeinfo version 4.8 from cl.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
@@ -29,8 +29,8 @@ the original English.
 \1f
 File: cl.info,  Node: Top,  Next: Overview,  Up: (dir)
 
-Common Lisp Extensions
-**********************
+1 Common Lisp Extensions
+************************
 
 This document describes a set of Emacs Lisp facilities borrowed from
 Common Lisp.  All the facilities are described here in detail; for more
@@ -66,8 +66,8 @@ assume a basic familiarity with Emacs Lisp.
 \1f
 File: cl.info,  Node: Overview,  Next: Program Structure,  Prev: Top,  Up: Top
 
-Overview
-********
+2 Overview
+**********
 
 Common Lisp is a huge language, and Common Lisp systems tend to be
 massive and extremely complex.  Emacs Lisp, by contrast, is rather
@@ -118,8 +118,8 @@ the rest of the Emacs environment.
 \1f
 File: cl.info,  Node: Usage,  Next: Organization,  Prev: Overview,  Up: Overview
 
-Usage
-=====
+2.1 Usage
+=========
 
 Lisp code that uses features from the "CL" package should include at
 the beginning:
@@ -142,8 +142,8 @@ The second call will fail (with "`cl-19.el' not found") if the old
 \1f
 File: cl.info,  Node: Organization,  Next: Installation,  Prev: Usage,  Up: Overview
 
-Organization
-============
+2.2 Organization
+================
 
 The Common Lisp package is organized into four files:
 
@@ -185,8 +185,8 @@ the old-style multiple-values feature.  *Note Old CL Compatibility::.
 \1f
 File: cl.info,  Node: Installation,  Next: Naming Conventions,  Prev: Organization,  Up: Overview
 
-Installation
-============
+2.3 Installation
+================
 
 Installation of the "CL" package is simple:  Just put the byte-compiled
 files `cl.elc', `cl-extra.elc', `cl-seq.elc', `cl-macs.elc', and
@@ -212,8 +212,8 @@ of the list so the old "CL" package and its documentation are hidden.
 \1f
 File: cl.info,  Node: Naming Conventions,  Prev: Installation,  Up: Overview
 
-Naming Conventions
-==================
+2.4 Naming Conventions
+======================
 
 Except where noted, all functions defined by this package have the same
 names and calling conventions as their Common Lisp counterparts.
@@ -266,8 +266,8 @@ used.
 \1f
 File: cl.info,  Node: Program Structure,  Next: Predicates,  Prev: Overview,  Up: Top
 
-Program Structure
-*****************
+3 Program Structure
+*******************
 
 This section describes features of the "CL" package which have to do
 with programs as a whole: advanced argument lists for functions, and
@@ -282,8 +282,8 @@ the `eval-when' construct.
 \1f
 File: cl.info,  Node: Argument Lists,  Next: Time of Evaluation,  Prev: Program Structure,  Up: Program Structure
 
-Argument Lists
-==============
+3.1 Argument Lists
+==================
 
 Emacs Lisp's notation for argument lists of functions is a subset of
 the Common Lisp notation.  As well as the familiar `&optional' and
@@ -296,13 +296,13 @@ this package to implement Common Lisp argument lists seamlessly.
 Instead, this package defines alternates for several Lisp forms which
 you must use if you need Common Lisp argument lists.
 
- - Special Form: defun* name arglist body...
+ -- Special Form: defun* name arglist body...
      This form is identical to the regular `defun' form, except that
      ARGLIST is allowed to be a full Common Lisp argument list.  Also,
      the function body is enclosed in an implicit block called NAME;
      *note Blocks and Exits::.
 
- - Special Form: defsubst* name arglist body...
+ -- Special Form: defsubst* name arglist body...
      This is just like `defun*', except that the function that is
      defined is automatically proclaimed `inline', i.e., calls to it
      may be expanded into in-line code by the byte compiler.  This is
@@ -313,7 +313,7 @@ you must use if you need Common Lisp argument lists.
      processing of keyword arguments, default values, etc., to be done
      at compile-time whenever possible.
 
- - Special Form: defmacro* name arglist body...
+ -- Special Form: defmacro* name arglist body...
      This is identical to the regular `defmacro' form, except that
      ARGLIST is allowed to be a full Common Lisp argument list.  The
      `&environment' keyword is supported as described in Steele.  The
@@ -322,7 +322,7 @@ you must use if you need Common Lisp argument lists.
      Emacs Lisp interpreter.  The macro expander body is enclosed in an
      implicit block called NAME.
 
- - Special Form: function* symbol-or-lambda
+ -- Special Form: function* symbol-or-lambda
      This is identical to the regular `function' form, except that if
      the argument is a `lambda' form then that form may use a full
      Common Lisp argument list.
@@ -439,7 +439,7 @@ following two functions, except for a matter of stylistic taste:
 
      (defun* foo (a b &aux (c (+ a b)) d)
        BODY)
-     
+
      (defun* foo (a b)
        (let ((c (+ a b)) d)
          BODY))
@@ -479,8 +479,8 @@ rigorously checked.
 \1f
 File: cl.info,  Node: Time of Evaluation,  Next: Function Aliases,  Prev: Argument Lists,  Up: Program Structure
 
-Time of Evaluation
-==================
+3.2 Time of Evaluation
+======================
 
 Normally, the byte-compiler does not actually execute the forms in a
 file it compiles.  For example, if a file contains `(setq foo t)', the
@@ -491,7 +491,7 @@ certain top-level forms evaluated at compile-time.  For example, the
 compiler effectively evaluates `defmacro' forms at compile-time so that
 later parts of the file can refer to the macros that are defined.
 
- - Special Form: eval-when (situations...) forms...
+ -- Special Form: eval-when (situations...) forms...
      This form controls when the body FORMS are evaluated.  The
      SITUATIONS list may contain any set of the symbols `compile',
      `load', and `eval' (or their long-winded ANSI equivalents,
@@ -562,7 +562,7 @@ construct and is described below.  This package defines a version of
 `(eval-when (compile load eval) ...)' and so is not itself defined by
 this package.
 
- - Special Form: eval-when-compile forms...
+ -- Special Form: eval-when-compile forms...
      The FORMS are evaluated at compile-time; at execution time, this
      form acts like a quoted constant of the resulting value.  Used at
      top-level, `eval-when-compile' is just like `eval-when (compile
@@ -571,7 +571,7 @@ this package.
 
      This form is similar to the `#.' syntax of true Common Lisp.
 
- - Special Form: load-time-value form
+ -- Special Form: load-time-value form
      The FORM is evaluated at load-time; at execution time, this form
      acts like a quoted constant of the resulting value.
 
@@ -610,13 +610,13 @@ this package.
 \1f
 File: cl.info,  Node: Function Aliases,  Prev: Time of Evaluation,  Up: Program Structure
 
-Function Aliases
-================
+3.3 Function Aliases
+====================
 
 This section describes a feature from GNU Emacs 19 which this package
 makes available in other versions of Emacs.
 
- - Function: defalias symbol function
+ -- Function: defalias symbol function
      This function sets SYMBOL's function cell to FUNCTION.  It is
      equivalent to `fset', except that in GNU Emacs 19 it also records
      the setting in `load-history' so that it can be undone by a later
@@ -627,8 +627,8 @@ makes available in other versions of Emacs.
 \1f
 File: cl.info,  Node: Predicates,  Next: Control Structure,  Prev: Program Structure,  Up: Top
 
-Predicates
-**********
+4 Predicates
+************
 
 This section describes functions for testing whether various facts are
 true or false.
@@ -641,12 +641,12 @@ true or false.
 \1f
 File: cl.info,  Node: Type Predicates,  Next: Equality Predicates,  Prev: Predicates,  Up: Predicates
 
-Type Predicates
-===============
+4.1 Type Predicates
+===================
 
 The "CL" package defines a version of the Common Lisp `typep' predicate.
 
- - Function: typep object type
+ -- Function: typep object type
      Check if OBJECT is of type TYPE, where TYPE is a (quoted) type
      name of the sort used by Common Lisp.  For example, `(typep foo
      'integer)' is equivalent to `(integerp foo)'.
@@ -703,7 +703,7 @@ beginning with a symbol.
    The following function and macro (not technically predicates) are
 related to `typep'.
 
- - Function: coerce object type
+ -- Function: coerce object type
      This function attempts to convert OBJECT to the specified TYPE.
      If OBJECT is already of that type as determined by `typep', it is
      simply returned.  Otherwise, certain types of conversions will be
@@ -714,7 +714,7 @@ related to `typep'.
      integers can be coerced in versions of Emacs that support floats.
      In all other circumstances, `coerce' signals an error.
 
- - Special Form: deftype name arglist forms...
+ -- Special Form: deftype name arglist forms...
      This macro defines a new type called NAME.  It is similar to
      `defmacro' in many ways; when NAME is encountered as a type name,
      the body FORMS are evaluated and should return a type specifier
@@ -747,12 +747,12 @@ sequence to return.  *Note Sequences::.
 \1f
 File: cl.info,  Node: Equality Predicates,  Prev: Type Predicates,  Up: Predicates
 
-Equality Predicates
-===================
+4.2 Equality Predicates
+=======================
 
 This package defines two Common Lisp predicates, `eql' and `equalp'.
 
- - Function: eql a b
+ -- Function: eql a b
      This function is almost the same as `eq', except that if A and B
      are numbers of the same type, it compares them for numeric
      equality (as if by `equal' instead of `eq').  This makes a
@@ -783,7 +783,7 @@ This package defines two Common Lisp predicates, `eql' and `equalp'.
      fact the only known way to distinguish between the two zeros in
      Emacs Lisp is to `format' them and check for a minus sign.
 
- - Function: equalp a b
+ -- Function: equalp a b
      This function is a more flexible version of `equal'.  In
      particular, it compares strings and characters case-insensitively,
      and it compares numbers without regard to type (so that `(equalp 3
@@ -803,8 +803,8 @@ tradition and uses `equal' for these two functions.  In Emacs, use
 \1f
 File: cl.info,  Node: Control Structure,  Next: Macros,  Prev: Predicates,  Up: Top
 
-Control Structure
-*****************
+5 Control Structure
+*******************
 
 The features described in the following sections implement various
 advanced control structures, including the powerful `setf' facility and
@@ -824,13 +824,13 @@ a number of looping and conditional constructs.
 \1f
 File: cl.info,  Node: Assignment,  Next: Generalized Variables,  Prev: Control Structure,  Up: Control Structure
 
-Assignment
-==========
+5.1 Assignment
+==============
 
 The `psetq' form is just like `setq', except that multiple assignments
 are done in parallel rather than sequentially.
 
- - Special Form: psetq [symbol form]...
+ -- Special Form: psetq [symbol form]...
      This special form (actually a macro) is used to assign to several
      variables simultaneously.  Given only one SYMBOL and FORM, it has
      the same effect as `setq'.  Given several SYMBOL and FORM pairs,
@@ -859,8 +859,8 @@ are done in parallel rather than sequentially.
 \1f
 File: cl.info,  Node: Generalized Variables,  Next: Variable Bindings,  Prev: Assignment,  Up: Control Structure
 
-Generalized Variables
-=====================
+5.2 Generalized Variables
+=========================
 
 A "generalized variable" or "place form" is one of the many places in
 Lisp memory where values can be stored.  The simplest place form is a
@@ -889,13 +889,13 @@ variables in Lisp.
 \1f
 File: cl.info,  Node: Basic Setf,  Next: Modify Macros,  Prev: Generalized Variables,  Up: Generalized Variables
 
-Basic Setf
-----------
+5.2.1 Basic Setf
+----------------
 
 The `setf' macro is the most basic way to operate on generalized
 variables.
 
- - Special Form: setf [place form]...
+ -- Special Form: setf [place form]...
      This macro evaluates FORM and stores it in PLACE, which must be a
      valid generalized variable form.  If there are several PLACE and
      FORM pairs, the assignments are done sequentially just as with
@@ -1039,21 +1039,21 @@ variables.
 \1f
 File: cl.info,  Node: Modify Macros,  Next: Customizing Setf,  Prev: Basic Setf,  Up: Generalized Variables
 
-Modify Macros
--------------
+5.2.2 Modify Macros
+-------------------
 
 This package defines a number of other macros besides `setf' that
 operate on generalized variables.  Many are interesting and useful even
 when the PLACE is just a variable name.
 
- - Special Form: psetf [place form]...
+ -- Special Form: psetf [place form]...
      This macro is to `setf' what `psetq' is to `setq': When several
      PLACEs and FORMs are involved, the assignments take place in
      parallel rather than sequentially.  Specifically, all subforms are
      evaluated from left to right, then all the assignments are done
      (in an undefined order).
 
- - Special Form: incf place &optional x
+ -- Special Form: incf place &optional x
      This macro increments the number stored in PLACE by one, or by X
      if specified.  The incremented value is returned.  For example,
      `(incf i)' is equivalent to `(setq i (1+ i))', and `(incf (car x)
@@ -1081,28 +1081,28 @@ when the PLACE is just a variable name.
      As a more Emacs-specific example of `incf', the expression `(incf
      (point) N)' is essentially equivalent to `(forward-char N)'.
 
- - Special Form: decf place &optional x
+ -- Special Form: decf place &optional x
      This macro decrements the number stored in PLACE by one, or by X
      if specified.
 
- - Special Form: pop place
+ -- Special Form: pop place
      This macro removes and returns the first element of the list stored
      in PLACE.  It is analogous to `(prog1 (car PLACE) (setf PLACE (cdr
      PLACE)))', except that it takes care to evaluate all subforms only
      once.
 
- - Special Form: push x place
+ -- Special Form: push x place
      This macro inserts X at the front of the list stored in PLACE.  It
      is analogous to `(setf PLACE (cons X PLACE))', except for
      evaluation of the subforms.
 
- - Special Form: pushnew x place &key :test :test-not :key
+ -- Special Form: pushnew x place &key :test :test-not :key
      This macro inserts X at the front of the list stored in PLACE, but
      only if X was not `eql' to any existing element of the list.  The
      optional keyword arguments are interpreted in the same way as for
      `adjoin'.  *Note Lists as Sets::.
 
- - Special Form: shiftf place... newvalue
+ -- Special Form: shiftf place... newvalue
      This macro shifts the PLACEs left by one, shifting in the value of
      NEWVALUE (which may be any Lisp expression, not just a generalized
      variable), and returning the value shifted out of the first PLACE.
@@ -1117,7 +1117,7 @@ when the PLACE is just a variable name.
      except that the subforms of A, B, and C are actually evaluated
      only once each and in the apparent order.
 
- - Special Form: rotatef place...
+ -- Special Form: rotatef place...
      This macro rotates the PLACEs left by one in circular fashion.
      Thus, `(rotatef A B C D)' is equivalent to
 
@@ -1132,7 +1132,7 @@ when the PLACE is just a variable name.
    The following macros were invented for this package; they have no
 analogues in Common Lisp.
 
- - Special Form: letf (bindings...) forms...
+ -- Special Form: letf (bindings...) forms...
      This macro is analogous to `let', but for generalized variables
      rather than just symbols.  Each BINDING should be of the form
      `(PLACE VALUE)'; the original contents of the PLACEs are saved,
@@ -1177,11 +1177,11 @@ analogues in Common Lisp.
      not bound on entry, it is simply made unbound by `makunbound' or
      `fmakunbound' on exit.
 
- - Special Form: letf* (bindings...) forms...
+ -- Special Form: letf* (bindings...) forms...
      This macro is to `letf' what `let*' is to `let': It does the
      bindings in sequential rather than parallel order.
 
- - Special Form: callf FUNCTION PLACE ARGS...
+ -- Special Form: callf FUNCTION PLACE ARGS...
      This is the "generic" modify macro.  It calls FUNCTION, which
      should be an unquoted function name, macro name, or lambda.  It
      passes PLACE and ARGS as arguments, and assigns the result back to
@@ -1196,7 +1196,7 @@ analogues in Common Lisp.
      create even more concise notations for modify macros.  Note again
      that `callf' is an extension to standard Common Lisp.
 
- - Special Form: callf2 FUNCTION ARG1 PLACE ARGS...
+ -- Special Form: callf2 FUNCTION ARG1 PLACE ARGS...
      This macro is like `callf', except that PLACE is the _second_
      argument of FUNCTION rather than the first.  For example, `(push X
      PLACE)' is equivalent to `(callf2 cons X PLACE)'.
@@ -1209,14 +1209,14 @@ Macro Bindings::.
 \1f
 File: cl.info,  Node: Customizing Setf,  Prev: Modify Macros,  Up: Generalized Variables
 
-Customizing Setf
-----------------
+5.2.3 Customizing Setf
+----------------------
 
 Common Lisp defines three macros, `define-modify-macro', `defsetf', and
 `define-setf-method', that allow the user to extend generalized
 variables in various ways.
 
- - Special Form: define-modify-macro name arglist function [doc-string]
+ -- Special Form: define-modify-macro name arglist function [doc-string]
      This macro defines a "read-modify-write" macro similar to `incf'
      and `decf'.  The macro NAME is defined to take a PLACE argument
      followed by additional arguments described by ARGLIST.  The call
@@ -1246,7 +1246,7 @@ variables in various ways.
      `get-setf-method', or consult the source file `cl-macs.el' to see
      how to use the internal `setf' building blocks.
 
- - Special Form: defsetf access-fn update-fn
+ -- Special Form: defsetf access-fn update-fn
      This is the simpler of two `defsetf' forms.  Where ACCESS-FN is
      the name of a function which accesses a place, this declares
      UPDATE-FN to be the corresponding store function.  From now on,
@@ -1279,7 +1279,7 @@ variables in various ways.
           (defsetf symbol-value set)
           (defsetf buffer-name rename-buffer t)
 
- - Special Form: defsetf access-fn arglist (store-var) forms...
+ -- Special Form: defsetf access-fn arglist (store-var) forms...
      This is the second, more complex, form of `defsetf'.  It is rather
      like `defmacro' except for the additional STORE-VAR argument.  The
      FORMS should return a Lisp form which stores the value of
@@ -1304,7 +1304,7 @@ variables in various ways.
           (defsetf nth (n x) (store)
             (list 'setcar (list 'nthcdr n x) store))
 
- - Special Form: define-setf-method access-fn arglist forms...
+ -- Special Form: define-setf-method access-fn arglist forms...
      This is the most general way to create new place forms.  When a
      `setf' to ACCESS-FN with arguments described by ARGLIST is
      expanded, the FORMS are evaluated and must return a list of five
@@ -1343,7 +1343,7 @@ variables in various ways.
      optimize away most temporaries that turn out to be unnecessary, so
      there is little reason for the setf-method itself to optimize.
 
- - Function: get-setf-method place &optional env
+ -- Function: get-setf-method place &optional env
      This function returns the setf-method for PLACE, by invoking the
      definition previously recorded by `defsetf' or
      `define-setf-method'.  The result is a list of five values as
@@ -1376,8 +1376,8 @@ newer Common Lisps, this would not be an error since the function
 \1f
 File: cl.info,  Node: Variable Bindings,  Next: Conditionals,  Prev: Generalized Variables,  Up: Control Structure
 
-Variable Bindings
-=================
+5.3 Variable Bindings
+=====================
 
 These Lisp forms make bindings to variables and function names,
 analogous to Lisp's built-in `let' form.
@@ -1395,14 +1395,14 @@ also related to variable bindings.
 \1f
 File: cl.info,  Node: Dynamic Bindings,  Next: Lexical Bindings,  Prev: Variable Bindings,  Up: Variable Bindings
 
-Dynamic Bindings
-----------------
+5.3.1 Dynamic Bindings
+----------------------
 
 The standard `let' form binds variables whose names are known at
 compile-time.  The `progv' form provides an easy way to bind variables
 whose names are computed at run-time.
 
- - Special Form: progv symbols values forms...
+ -- Special Form: progv symbols values forms...
      This form establishes `let'-style variable bindings on a set of
      variables computed at run-time.  The expressions SYMBOLS and
      VALUES are evaluated, and must return lists of symbols and values,
@@ -1415,13 +1415,13 @@ whose names are computed at run-time.
 \1f
 File: cl.info,  Node: Lexical Bindings,  Next: Function Bindings,  Prev: Dynamic Bindings,  Up: Variable Bindings
 
-Lexical Bindings
-----------------
+5.3.2 Lexical Bindings
+----------------------
 
 The "CL" package defines the following macro which more closely follows
 the Common Lisp `let' form:
 
- - Special Form: lexical-let (bindings...) forms...
+ -- Special Form: lexical-let (bindings...) forms...
      This form is exactly like `let' except that the bindings it
      establishes are purely lexical.  Lexical bindings are similar to
      local variables in a language like C:  Only the code physically
@@ -1509,19 +1509,19 @@ the Common Lisp `let' form:
      The `lexical-let' form is an extension to Common Lisp.  In true
      Common Lisp, all bindings are lexical unless declared otherwise.
 
- - Special Form: lexical-let* (bindings...) forms...
+ -- Special Form: lexical-let* (bindings...) forms...
      This form is just like `lexical-let', except that the bindings are
      made sequentially in the manner of `let*'.
 
 \1f
 File: cl.info,  Node: Function Bindings,  Next: Macro Bindings,  Prev: Lexical Bindings,  Up: Variable Bindings
 
-Function Bindings
------------------
+5.3.3 Function Bindings
+-----------------------
 
 These forms make `let'-like bindings to functions instead of variables.
 
- - Special Form: flet (bindings...) forms...
+ -- Special Form: flet (bindings...) forms...
      This form establishes `let'-style bindings on the function cells
      of symbols rather than on the value cells.  Each BINDING must be a
      list of the form `(NAME ARGLIST FORMS...)', which defines a
@@ -1557,7 +1557,7 @@ These forms make `let'-like bindings to functions instead of variables.
      enclosed in an implicit block as if by `defun*'.  *Note Program
      Structure::.
 
- - Special Form: labels (bindings...) forms...
+ -- Special Form: labels (bindings...) forms...
      The `labels' form is a synonym for `flet'.  (In Common Lisp,
      `labels' and `flet' differ in ways that depend on their lexical
      scoping; these distinctions vanish in dynamically scoped Emacs
@@ -1566,12 +1566,12 @@ These forms make `let'-like bindings to functions instead of variables.
 \1f
 File: cl.info,  Node: Macro Bindings,  Prev: Function Bindings,  Up: Variable Bindings
 
-Macro Bindings
---------------
+5.3.4 Macro Bindings
+--------------------
 
 These forms create local macros and "symbol macros."
 
- - Special Form: macrolet (bindings...) forms...
+ -- Special Form: macrolet (bindings...) forms...
      This form is analogous to `flet', but for macros instead of
      functions.  Each BINDING is a list of the same form as the
      arguments to `defmacro*' (i.e., a macro name, argument list, and
@@ -1583,7 +1583,7 @@ These forms create local macros and "symbol macros."
      that appear physically within the body FORMS, possibly after
      expansion of other macros in the body.
 
- - Special Form: symbol-macrolet (bindings...) forms...
+ -- Special Form: symbol-macrolet (bindings...) forms...
      This form creates "symbol macros", which are macros that look like
      variable references rather than function calls.  Each BINDING is a
      list `(VAR EXPANSION)'; any reference to VAR within the body FORMS
@@ -1614,7 +1614,7 @@ These forms create local macros and "symbol macros."
               (list 'loop 'for var 'on list 'do
                     (list* 'symbol-macrolet (list (list x (list 'car var)))
                            body))))
-          
+
           (setq mylist '(1 2 3 4))
           (my-dolist (x mylist) (incf x))
           mylist
@@ -1640,13 +1640,13 @@ These forms create local macros and "symbol macros."
 \1f
 File: cl.info,  Node: Conditionals,  Next: Blocks and Exits,  Prev: Variable Bindings,  Up: Control Structure
 
-Conditionals
-============
+5.4 Conditionals
+================
 
 These conditional forms augment Emacs Lisp's simple `if', `and', `or',
 and `cond' forms.
 
- - Special Form: when test forms...
+ -- Special Form: when test forms...
      This is a variant of `if' where there are no "else" forms, and
      possibly several "then" forms.  In particular,
 
@@ -1656,7 +1656,7 @@ and `cond' forms.
 
           (if TEST (progn A B C) nil)
 
- - Special Form: unless test forms...
+ -- Special Form: unless test forms...
      This is a variant of `if' where there are no "then" forms, and
      possibly several "else" forms:
 
@@ -1666,7 +1666,7 @@ and `cond' forms.
 
           (when (not TEST) A B C)
 
- - Special Form: case keyform clause...
+ -- Special Form: case keyform clause...
      This macro evaluates KEYFORM, then compares it with the key values
      listed in the various CLAUSEs.  Whichever clause matches the key
      is executed; comparison is done by `eql'.  If no clause matches,
@@ -1694,12 +1694,12 @@ and `cond' forms.
             ((?\r ?\n) (do-ret-thing))
             (t (do-other-thing)))
 
- - Special Form: ecase keyform clause...
+ -- Special Form: ecase keyform clause...
      This macro is just like `case', except that if the key does not
      match any of the clauses, an error is signalled rather than simply
      returning `nil'.
 
- - Special Form: typecase keyform clause...
+ -- Special Form: typecase keyform clause...
      This macro is a version of `case' that checks for types rather
      than values.  Each CLAUSE is of the form `(TYPE BODY...)'.  *Note
      Type Predicates::, for a description of type specifiers.  For
@@ -1715,7 +1715,7 @@ and `cond' forms.
      `otherwise' is also allowed.  To make one clause match any of
      several types, use an `(or ...)' type specifier.
 
- - Special Form: etypecase keyform clause...
+ -- Special Form: etypecase keyform clause...
      This macro is just like `typecase', except that if the key does
      not match any of the clauses, an error is signalled rather than
      simply returning `nil'.
@@ -1723,8 +1723,8 @@ and `cond' forms.
 \1f
 File: cl.info,  Node: Blocks and Exits,  Next: Iteration,  Prev: Conditionals,  Up: Control Structure
 
-Blocks and Exits
-================
+5.5 Blocks and Exits
+====================
 
 Common Lisp "blocks" provide a non-local exit mechanism very similar to
 `catch' and `throw', but lexically rather than dynamically scoped.
@@ -1733,7 +1733,7 @@ the lexical scoping allows the optimizing byte-compiler to omit the
 costly `catch' step if the body of the block does not actually
 `return-from' the block.
 
- - Special Form: block name forms...
+ -- Special Form: block name forms...
      The FORMS are evaluated as if by a `progn'.  However, if any of
      the FORMS execute `(return-from NAME)', they will jump out and
      return directly from the `block' form.  The `block' returns the
@@ -1771,13 +1771,13 @@ costly `catch' step if the body of the block does not actually
      that `do' loops and `defun*' functions which don't use `return'
      don't pay the overhead to support it.
 
- - Special Form: return-from name [result]
+ -- Special Form: return-from name [result]
      This macro returns from the block named NAME, which must be an
      (unevaluated) symbol.  If a RESULT form is specified, it is
      evaluated to produce the result returned from the `block'.
      Otherwise, `nil' is returned.
 
- - Special Form: return [result]
+ -- Special Form: return [result]
      This macro is exactly like `(return-from nil RESULT)'.  Common
      Lisp loops like `do' and `dolist' implicitly enclose themselves in
      `nil' blocks.
@@ -1785,13 +1785,13 @@ costly `catch' step if the body of the block does not actually
 \1f
 File: cl.info,  Node: Iteration,  Next: Loop Facility,  Prev: Blocks and Exits,  Up: Control Structure
 
-Iteration
-=========
+5.6 Iteration
+=============
 
 The macros described here provide more sophisticated, high-level
 looping constructs to complement Emacs Lisp's basic `while' loop.
 
- - Special Form: loop forms...
+ -- Special Form: loop forms...
      The "CL" package supports both the simple, old-style meaning of
      `loop' and the extremely powerful and flexible feature known as
      the "Loop Facility" or "Loop Macro".  This more advanced facility
@@ -1815,7 +1815,7 @@ looping constructs to complement Emacs Lisp's basic `while' loop.
      the above notation would simply access and throw away the value of
      a variable.)
 
- - Special Form: do (spec...) (end-test [result...]) forms...
+ -- Special Form: do (spec...) (end-test [result...]) forms...
      This macro creates a general iterative loop.  Each SPEC is of the
      form
 
@@ -1854,7 +1854,7 @@ looping constructs to complement Emacs Lisp's basic `while' loop.
             ((or (null x) (null y))
              (nreverse z)))
 
- - Special Form: do* (spec...) (end-test [result...]) forms...
+ -- Special Form: do* (spec...) (end-test [result...]) forms...
      This is to `do' what `let*' is to `let'.  In particular, the
      initial values are bound as if by `let*' rather than `let', and
      the steps are assigned as if by `setq' rather than `psetq'.
@@ -1870,7 +1870,7 @@ looping constructs to complement Emacs Lisp's basic `while' loop.
              (nreverse z))
             (push (f x y) z))
 
- - Special Form: dolist (var list [result]) forms...
+ -- Special Form: dolist (var list [result]) forms...
      This is a more specialized loop which iterates across the elements
      of a list.  LIST should evaluate to a list; the body FORMS are
      executed with VAR bound to each element of the list in turn.
@@ -1878,7 +1878,7 @@ looping constructs to complement Emacs Lisp's basic `while' loop.
      `nil' to produce the result returned by the loop.  The loop is
      surrounded by an implicit `nil' block.
 
- - Special Form: dotimes (var count [result]) forms...
+ -- Special Form: dotimes (var count [result]) forms...
      This is a more specialized loop which iterates a specified number
      of times.  The body is executed with VAR bound to the integers
      from zero (inclusive) to COUNT (exclusive), in turn.  Then the
@@ -1887,7 +1887,7 @@ looping constructs to complement Emacs Lisp's basic `while' loop.
      return value for the loop form.  The loop is surrounded by an
      implicit `nil' block.
 
- - Special Form: do-symbols (var [obarray [result]]) forms...
+ -- Special Form: do-symbols (var [obarray [result]]) forms...
      This loop iterates over all interned symbols.  If OBARRAY is
      specified and is not `nil', it loops over all symbols in that
      obarray.  For each symbol, the body FORMS are evaluated with VAR
@@ -1896,7 +1896,7 @@ looping constructs to complement Emacs Lisp's basic `while' loop.
      bound to `nil') to get the return value.  The loop is surrounded
      by an implicit `nil' block.
 
- - Special Form: do-all-symbols (var [result]) forms...
+ -- Special Form: do-all-symbols (var [result]) forms...
      This is identical to `do-symbols' except that the OBARRAY argument
      is omitted; it always iterates over the default obarray.
 
@@ -1906,8 +1906,8 @@ iterating over vectors or lists.
 \1f
 File: cl.info,  Node: Loop Facility,  Next: Multiple Values,  Prev: Iteration,  Up: Control Structure
 
-Loop Facility
-=============
+5.7 Loop Facility
+=================
 
 A common complaint with Lisp's traditional looping constructs is that
 they are either too simple and limited, such as Common Lisp's `dotimes'
@@ -1930,8 +1930,8 @@ easy-to-use but very powerful and expressive syntax.
 \1f
 File: cl.info,  Node: Loop Basics,  Next: Loop Examples,  Prev: Loop Facility,  Up: Loop Facility
 
-Loop Basics
------------
+5.7.1 Loop Basics
+-----------------
 
 The `loop' macro essentially creates a mini-language within Lisp that
 is specially tailored for describing loops.  While this language is a
@@ -1942,7 +1942,7 @@ to be very easy to learn and well-suited to its purpose.
 place at byte-compile time; compiled `loop's are just as efficient as
 the equivalent `while' loops written longhand.
 
- - Special Form: loop clauses...
+ -- Special Form: loop clauses...
      A loop construct consists of a series of CLAUSEs, each introduced
      by a symbol like `for' or `do'.  Clauses are simply strung
      together in the argument list of `loop', with minimal extra
@@ -1986,8 +1986,8 @@ additional discussion and examples of the `loop' macro.
 \1f
 File: cl.info,  Node: Loop Examples,  Next: For Clauses,  Prev: Loop Basics,  Up: Loop Facility
 
-Loop Examples
--------------
+5.7.2 Loop Examples
+-------------------
 
 Before listing the full set of clauses that are allowed, let's look at
 a few example loops just to get a feel for the `loop' language.
@@ -2041,8 +2041,8 @@ you want nested loops.
 \1f
 File: cl.info,  Node: For Clauses,  Next: Iteration Clauses,  Prev: Loop Examples,  Up: Loop Facility
 
-For Clauses
------------
+5.7.3 For Clauses
+-----------------
 
 Most loops are governed by one or more `for' clauses.  A `for' clause
 simultaneously describes variables to be bound, how those variables are
@@ -2300,8 +2300,8 @@ may be nested, and dotted lists of variables like `(x . y)' are allowed.
 \1f
 File: cl.info,  Node: Iteration Clauses,  Next: Accumulation Clauses,  Prev: For Clauses,  Up: Loop Facility
 
-Iteration Clauses
------------------
+5.7.4 Iteration Clauses
+-----------------------
 
 Aside from `for' clauses, there are several other loop clauses that
 control the way the loop operates.  They might be used by themselves,
@@ -2352,8 +2352,8 @@ or in conjunction with one or more `for' clauses.
 \1f
 File: cl.info,  Node: Accumulation Clauses,  Next: Other Clauses,  Prev: Iteration Clauses,  Up: Loop Facility
 
-Accumulation Clauses
---------------------
+5.7.5 Accumulation Clauses
+--------------------------
 
 These clauses cause the loop to accumulate information about the
 specified Lisp FORM.  The accumulated result is returned from the loop
@@ -2418,8 +2418,8 @@ accumulate into the same place.  From Steele:
 \1f
 File: cl.info,  Node: Other Clauses,  Prev: Accumulation Clauses,  Up: Loop Facility
 
-Other Clauses
--------------
+5.7.6 Other Clauses
+-------------------
 
 This section describes the remaining loop clauses.
 
@@ -2556,8 +2556,8 @@ Emacs-specific extensions.
 \1f
 File: cl.info,  Node: Multiple Values,  Prev: Loop Facility,  Up: Control Structure
 
-Multiple Values
-===============
+5.8 Multiple Values
+===================
 
 Common Lisp functions can return zero or more results.  Emacs Lisp
 functions, by contrast, always return exactly one result.  This package
@@ -2570,14 +2570,14 @@ multiple values, but in Emacs Lisp these functions simply operate on
 lists instead.  The `values' form, for example, is a synonym for `list'
 in Emacs.
 
- - Special Form: multiple-value-bind (var...) values-form forms...
+ -- Special Form: multiple-value-bind (var...) values-form forms...
      This form evaluates VALUES-FORM, which must return a list of
      values.  It then binds the VARs to these respective values, as if
      by `let', and then executes the body FORMS.  If there are more
      VARs than values, the extra VARs are bound to `nil'.  If there are
      fewer VARs than values, the excess values are ignored.
 
- - Special Form: multiple-value-setq (var...) form
+ -- Special Form: multiple-value-setq (var...) form
      This form evaluates FORM, which must return a list of values.  It
      then sets the VARs to these respective values, as if by `setq'.
      Extra VARs or values are treated the same as in
@@ -2595,8 +2595,8 @@ package opts to keep it as simple and predictable as possible.
 \1f
 File: cl.info,  Node: Macros,  Next: Declarations,  Prev: Control Structure,  Up: Top
 
-Macros
-******
+6 Macros
+********
 
 This package implements the various Common Lisp features of `defmacro',
 such as destructuring, `&environment', and `&body'.  Top-level `&whole'
@@ -2606,7 +2606,7 @@ Argument Lists::.
    Destructuring is made available to the user by way of the following
 macro:
 
- - Special Form: destructuring-bind arglist expr forms...
+ -- Special Form: destructuring-bind arglist expr forms...
      This macro expands to code which executes FORMS, with the
      variables in ARGLIST bound to the list of values returned by EXPR.
      The ARGLIST can include all the features allowed for `defmacro'
@@ -2619,7 +2619,7 @@ macro:
 facility, which allows you to define compile-time expansions and
 optimizations for your functions.
 
- - Special Form: define-compiler-macro name arglist forms...
+ -- Special Form: define-compiler-macro name arglist forms...
      This form is similar to `defmacro', except that it only expands
      calls to NAME at compile-time; calls processed by the Lisp
      interpreter are not expanded, nor are they expanded by the
@@ -2651,7 +2651,7 @@ optimizations for your functions.
      optimizes a number of other cases, including common `:test'
      predicates.)
 
- - Function: compiler-macroexpand form
+ -- Function: compiler-macroexpand form
      This function is analogous to `macroexpand', except that it
      expands compiler macros rather than regular macros.  It returns
      FORM unchanged if it is not a call to a function for which a
@@ -2666,8 +2666,8 @@ optimizations for your functions.
 \1f
 File: cl.info,  Node: Declarations,  Next: Symbols,  Prev: Macros,  Up: Top
 
-Declarations
-************
+7 Declarations
+**************
 
 Common Lisp includes a complex and powerful "declaration" mechanism
 that allows you to give the compiler special hints about the types of
@@ -2684,12 +2684,12 @@ when the optimizing Emacs 19 byte compiler is being used, however.
 Under the earlier non-optimizing compiler, these declarations will
 effectively be ignored.
 
- - Function: proclaim decl-spec
+ -- Function: proclaim decl-spec
      This function records a "global" declaration specified by
      DECL-SPEC.  Since `proclaim' is a function, DECL-SPEC is evaluated
      and thus should normally be quoted.
 
- - Special Form: declaim decl-specs...
+ -- Special Form: declaim decl-specs...
      This macro is like `proclaim', except that it takes any number of
      DECL-SPEC arguments, and the arguments are unevaluated and
      unquoted.  The `declaim' macro also puts an `(eval-when (compile
@@ -2699,7 +2699,7 @@ effectively be ignored.
      compiler treats the rest of the file that contains the `declaim'
      form.)
 
- - Special Form: declare decl-specs...
+ -- Special Form: declare decl-specs...
      This macro is used to make declarations within functions and other
      code.  Common Lisp allows declarations in various locations,
      generally at the beginning of any of the many "implicit `progn's"
@@ -2707,10 +2707,10 @@ effectively be ignored.
      etc.  Currently the only declaration understood by `declare' is
      `special'.
 
- - Special Form: locally declarations... forms...
+ -- Special Form: locally declarations... forms...
      In this package, `locally' is no different from `progn'.
 
- - Special Form: the type form
+ -- Special Form: the type form
      Type information provided by `the' is ignored in this package; in
      other words, `(the TYPE FORM)' is equivalent to FORM.  Future
      versions of the optimizing byte-compiler may make use of this
@@ -2835,8 +2835,8 @@ such as `type' and `ftype', are silently ignored.
 \1f
 File: cl.info,  Node: Symbols,  Next: Numbers,  Prev: Declarations,  Up: Top
 
-Symbols
-*******
+8 Symbols
+*********
 
 This package defines several symbol-related features that were missing
 from Emacs Lisp.
@@ -2849,15 +2849,15 @@ from Emacs Lisp.
 \1f
 File: cl.info,  Node: Property Lists,  Next: Creating Symbols,  Prev: Symbols,  Up: Symbols
 
-Property Lists
-==============
+8.1 Property Lists
+==================
 
 These functions augment the standard Emacs Lisp functions `get' and
 `put' for operating on properties attached to objects.  There are also
 functions for working with property lists as first-class data
 structures not attached to particular objects.
 
- - Function: getf place property &optional default
+ -- Function: getf place property &optional default
      This function scans the list PLACE as if it were a property list,
      i.e., a list of alternating property names and values.  If an
      even-numbered element of PLACE is found which is `eq' to PROPERTY,
@@ -2888,7 +2888,7 @@ structures not attached to particular objects.
      When not used as a `setf' form, `getf' is just a regular function
      and its PLACE argument can actually be any Lisp expression.
 
- - Special Form: remf place property
+ -- Special Form: remf place property
      This macro removes the property-value pair for PROPERTY from the
      property list stored at PLACE, which is any `setf'-able place
      expression.  It returns true if the property was found.  Note that
@@ -2899,13 +2899,13 @@ structures not attached to particular objects.
 \1f
 File: cl.info,  Node: Creating Symbols,  Prev: Property Lists,  Up: Symbols
 
-Creating Symbols
-================
+8.2 Creating Symbols
+====================
 
 These functions create unique symbols, typically for use as temporary
 variables.
 
- - Function: gensym &optional x
+ -- Function: gensym &optional x
      This function creates a new, uninterned symbol (using
      `make-symbol') with a unique name.  (The name of an uninterned
      symbol is relevant only if the symbol is printed.)  By default,
@@ -2916,7 +2916,7 @@ variables.
      variables, to ensure that their names will not conflict with
      "real" variables in the user's code.
 
- - Variable: *gensym-counter*
+ -- Variable: *gensym-counter*
      This variable holds the counter used to generate `gensym' names.
      It is incremented after each use by `gensym'.  In Common Lisp this
      is initialized with 0, but this package initializes it with a
@@ -2929,7 +2929,7 @@ variables.
      and uninterned symbols, so their names had to be treated more
      carefully.
 
- - Function: gentemp &optional x
+ -- Function: gentemp &optional x
      This function is like `gensym', except that it produces a new
      _interned_ symbol.  If the symbol that is generated already
      exists, the function keeps incrementing the counter and trying
@@ -2944,8 +2944,8 @@ arguments, so the `defkeyword' form has been discontinued.
 \1f
 File: cl.info,  Node: Numbers,  Next: Sequences,  Prev: Symbols,  Up: Top
 
-Numbers
-*******
+9 Numbers
+*********
 
 This section defines a few simple Common Lisp operations on numbers
 which were left out of Emacs Lisp.
@@ -2960,29 +2960,29 @@ which were left out of Emacs Lisp.
 \1f
 File: cl.info,  Node: Predicates on Numbers,  Next: Numerical Functions,  Prev: Numbers,  Up: Numbers
 
-Predicates on Numbers
-=====================
+9.1 Predicates on Numbers
+=========================
 
 These functions return `t' if the specified condition is true of the
 numerical argument, or `nil' otherwise.
 
- - Function: plusp number
+ -- Function: plusp number
      This predicate tests whether NUMBER is positive.  It is an error
      if the argument is not a number.
 
- - Function: minusp number
+ -- Function: minusp number
      This predicate tests whether NUMBER is negative.  It is an error
      if the argument is not a number.
 
- - Function: oddp integer
+ -- Function: oddp integer
      This predicate tests whether INTEGER is odd.  It is an error if
      the argument is not an integer.
 
- - Function: evenp integer
+ -- Function: evenp integer
      This predicate tests whether INTEGER is even.  It is an error if
      the argument is not an integer.
 
- - Function: floatp-safe object
+ -- Function: floatp-safe object
      This predicate tests whether OBJECT is a floating-point number.
      On systems that support floating-point, this is equivalent to
      `floatp'.  On other systems, this always returns `nil'.
@@ -2990,39 +2990,39 @@ numerical argument, or `nil' otherwise.
 \1f
 File: cl.info,  Node: Numerical Functions,  Next: Random Numbers,  Prev: Predicates on Numbers,  Up: Numbers
 
-Numerical Functions
-===================
+9.2 Numerical Functions
+=======================
 
 These functions perform various arithmetic operations on numbers.
 
- - Function: abs number
+ -- Function: abs number
      This function returns the absolute value of NUMBER.  (Newer
      versions of Emacs provide this as a built-in function; this package
      defines `abs' only for Emacs 18 versions which don't provide it as
      a primitive.)
 
- - Function: expt base power
+ -- Function: expt base power
      This function returns BASE raised to the power of NUMBER.  (Newer
      versions of Emacs provide this as a built-in function; this
      package defines `expt' only for Emacs 18 versions which don't
      provide it as a primitive.)
 
- - Function: gcd &rest integers
+ -- Function: gcd &rest integers
      This function returns the Greatest Common Divisor of the arguments.
      For one argument, it returns the absolute value of that argument.
      For zero arguments, it returns zero.
 
- - Function: lcm &rest integers
+ -- Function: lcm &rest integers
      This function returns the Least Common Multiple of the arguments.
      For one argument, it returns the absolute value of that argument.
      For zero arguments, it returns one.
 
- - Function: isqrt integer
+ -- Function: isqrt integer
      This function computes the "integer square root" of its integer
      argument, i.e., the greatest integer less than or equal to the true
      square root of the argument.
 
- - Function: floor* number &optional divisor
+ -- Function: floor* number &optional divisor
      This function implements the Common Lisp `floor' function.  It is
      called `floor*' to avoid name conflicts with the simpler `floor'
      function built-in to Emacs 19.
@@ -3047,31 +3047,31 @@ These functions perform various arithmetic operations on numbers.
      function, except that it returns the two results in a list since
      Emacs Lisp does not support multiple-valued functions.
 
- - Function: ceiling* number &optional divisor
+ -- Function: ceiling* number &optional divisor
      This function implements the Common Lisp `ceiling' function, which
      is analogous to `floor' except that it rounds the argument or
      quotient of the arguments up toward plus infinity.  The remainder
      will be between 0 and minus R.
 
- - Function: truncate* number &optional divisor
+ -- Function: truncate* number &optional divisor
      This function implements the Common Lisp `truncate' function,
      which is analogous to `floor' except that it rounds the argument
      or quotient of the arguments toward zero.  Thus it is equivalent
      to `floor*' if the argument or quotient is positive, or to
      `ceiling*' otherwise.  The remainder has the same sign as NUMBER.
 
- - Function: round* number &optional divisor
+ -- Function: round* number &optional divisor
      This function implements the Common Lisp `round' function, which
      is analogous to `floor' except that it rounds the argument or
      quotient of the arguments to the nearest integer.  In the case of
      a tie (the argument or quotient is exactly halfway between two
      integers), it rounds to the even integer.
 
- - Function: mod* number divisor
+ -- Function: mod* number divisor
      This function returns the same value as the second return value of
      `floor'.
 
- - Function: rem* number divisor
+ -- Function: rem* number divisor
      This function returns the same value as the second return value of
      `truncate'.
 
@@ -3083,15 +3083,15 @@ mechanism for returning multiple values is different.
 \1f
 File: cl.info,  Node: Random Numbers,  Next: Implementation Parameters,  Prev: Numerical Functions,  Up: Numbers
 
-Random Numbers
-==============
+9.3 Random Numbers
+==================
 
 This package also provides an implementation of the Common Lisp random
 number generator.  It uses its own additive-congruential algorithm,
 which is much more likely to give statistically clean random numbers
 than the simple generators supplied by many operating systems.
 
- - Function: random* number &optional state
+ -- Function: random* number &optional state
      This function returns a random nonnegative number less than
      NUMBER, and of the same type (either integer or floating-point).
      The STATE argument should be a `random-state' object which holds
@@ -3100,7 +3100,7 @@ than the simple generators supplied by many operating systems.
      defaults to the variable `*random-state*', which contains a
      pre-initialized `random-state' object.
 
- - Variable: *random-state*
+ -- Variable: *random-state*
      This variable contains the system "default" `random-state' object,
      used for calls to `random*' that do not specify an alternative
      state object.  Since any number of programs in the Emacs process
@@ -3108,7 +3108,7 @@ than the simple generators supplied by many operating systems.
      sequence generated from this variable will be irreproducible for
      all intents and purposes.
 
- - Function: make-random-state &optional state
+ -- Function: make-random-state &optional state
      This function creates or copies a `random-state' object.  If STATE
      is omitted or `nil', it returns a new copy of `*random-state*'.
      This is a copy in the sense that future sequences of calls to
@@ -3131,23 +3131,23 @@ than the simple generators supplied by many operating systems.
      later rerun, it can read the original run's random-state from the
      file.
 
- - Function: random-state-p object
+ -- Function: random-state-p object
      This predicate returns `t' if OBJECT is a `random-state' object,
      or `nil' otherwise.
 
 \1f
 File: cl.info,  Node: Implementation Parameters,  Prev: Random Numbers,  Up: Numbers
 
-Implementation Parameters
-=========================
+9.4 Implementation Parameters
+=============================
 
 This package defines several useful constants having to with numbers.
 
- - Variable: most-positive-fixnum
+ -- Variable: most-positive-fixnum
      This constant equals the largest value a Lisp integer can hold.
      It is typically `2^23-1' or `2^25-1'.
 
- - Variable: most-negative-fixnum
+ -- Variable: most-negative-fixnum
      This constant equals the smallest (most negative) value a Lisp
      integer can hold.
 
@@ -3157,7 +3157,7 @@ floating-point arithmetic in various ways.  Because this operation
 might be slow, the code for initializing them is kept in a separate
 function that must be called before the parameters can be used.
 
- - Function: cl-float-limits
+ -- Function: cl-float-limits
      This function makes sure that the Common Lisp floating-point
      parameters like `most-positive-float' have been initialized.
      Until it is called, these parameters will be `nil'.  If this
@@ -3176,22 +3176,22 @@ precisions, it has families of constants like
 floating-point precision, so this package omits the precision word from
 the constants' names.
 
- - Variable: most-positive-float
+ -- Variable: most-positive-float
      This constant equals the largest value a Lisp float can hold.  For
      those systems whose arithmetic supports infinities, this is the
      largest _finite_ value.  For IEEE machines, the value is
      approximately `1.79e+308'.
 
- - Variable: most-negative-float
+ -- Variable: most-negative-float
      This constant equals the most-negative value a Lisp float can hold.
      (It is assumed to be equal to `(- most-positive-float)'.)
 
- - Variable: least-positive-float
+ -- Variable: least-positive-float
      This constant equals the smallest Lisp float value greater than
      zero.  For IEEE machines, it is about `4.94e-324' if denormals are
      supported or `2.22e-308' if not.
 
- - Variable: least-positive-normalized-float
+ -- Variable: least-positive-normalized-float
      This constant equals the smallest _normalized_ Lisp float greater
      than zero, i.e., the smallest value for which IEEE denormalization
      will not result in a loss of precision.  For IEEE machines, this
@@ -3199,21 +3199,21 @@ the constants' names.
      concept of denormalization and gradual underflow, this constant
      will always equal `least-positive-float'.
 
- - Variable: least-negative-float
+ -- Variable: least-negative-float
      This constant is the negative counterpart of
      `least-positive-float'.
 
- - Variable: least-negative-normalized-float
+ -- Variable: least-negative-normalized-float
      This constant is the negative counterpart of
      `least-positive-normalized-float'.
 
- - Variable: float-epsilon
+ -- Variable: float-epsilon
      This constant is the smallest positive Lisp float that can be added
      to 1.0 to produce a distinct value.  Adding a smaller number to 1.0
      will yield 1.0 again due to roundoff.  For IEEE machines, epsilon
      is about `2.22e-16'.
 
- - Variable: float-negative-epsilon
+ -- Variable: float-negative-epsilon
      This is the smallest positive value that can be subtracted from
      1.0 to produce a distinct value.  For IEEE machines, it is about
      `1.11e-16'.
@@ -3221,8 +3221,8 @@ the constants' names.
 \1f
 File: cl.info,  Node: Sequences,  Next: Lists,  Prev: Numbers,  Up: Top
 
-Sequences
-*********
+10 Sequences
+************
 
 Common Lisp defines a number of functions that operate on "sequences",
 which are either lists, strings, or vectors.  Emacs Lisp includes a few
@@ -3240,8 +3240,8 @@ rest.
 \1f
 File: cl.info,  Node: Sequence Basics,  Next: Mapping over Sequences,  Prev: Sequences,  Up: Sequences
 
-Sequence Basics
-===============
+10.1 Sequence Basics
+====================
 
 Many of the sequence functions take keyword arguments; *note Argument
 Lists::.  All keyword arguments are optional and, if specified, may
@@ -3309,14 +3309,14 @@ copied from STR into the result.
 \1f
 File: cl.info,  Node: Mapping over Sequences,  Next: Sequence Functions,  Prev: Sequence Basics,  Up: Sequences
 
-Mapping over Sequences
-======================
+10.2 Mapping over Sequences
+===========================
 
 These functions "map" the function you specify over the elements of
 lists or arrays.  They are all variations on the theme of the built-in
 function `mapcar'.
 
- - Function: mapcar* function seq &rest more-seqs
+ -- Function: mapcar* function seq &rest more-seqs
      This function calls FUNCTION on successive parallel sets of
      elements from its argument sequences.  Given a single SEQ argument
      it is equivalent to `mapcar'; given N sequences, it calls the
@@ -3332,7 +3332,7 @@ function `mapcar'.
      argument.  This package's `mapcar*' works as a compatible superset
      of both.
 
- - Function: map result-type function seq &rest more-seqs
+ -- Function: map result-type function seq &rest more-seqs
      This function maps FUNCTION over the argument sequences, just like
      `mapcar*', but it returns a sequence of type RESULT-TYPE rather
      than a list.  RESULT-TYPE must be one of the following symbols:
@@ -3340,7 +3340,7 @@ function `mapcar'.
      as for `mapcar*'), or `nil' (in which case the results are thrown
      away and `map' returns `nil').
 
- - Function: maplist function list &rest more-lists
+ -- Function: maplist function list &rest more-lists
      This function calls FUNCTION on each of its argument lists, then
      on the `cdr's of those lists, and so on, until the shortest list
      runs out.  The results are returned in the form of a list.  Thus,
@@ -3348,26 +3348,26 @@ function `mapcar'.
      pointers themselves rather than the `car's of the advancing
      pointers.
 
- - Function: mapc function seq &rest more-seqs
+ -- Function: mapc function seq &rest more-seqs
      This function is like `mapcar*', except that the values returned
      by FUNCTION are ignored and thrown away rather than being
      collected into a list.  The return value of `mapc' is SEQ, the
      first sequence.
 
- - Function: mapl function list &rest more-lists
+ -- Function: mapl function list &rest more-lists
      This function is like `maplist', except that it throws away the
      values returned by FUNCTION.
 
- - Function: mapcan function seq &rest more-seqs
+ -- Function: mapcan function seq &rest more-seqs
      This function is like `mapcar*', except that it concatenates the
      return values (which must be lists) using `nconc', rather than
      simply collecting them into a list.
 
- - Function: mapcon function list &rest more-lists
+ -- Function: mapcon function list &rest more-lists
      This function is like `maplist', except that it concatenates the
      return values using `nconc'.
 
- - Function: some predicate seq &rest more-seqs
+ -- Function: some predicate seq &rest more-seqs
      This function calls PREDICATE on each element of SEQ in turn; if
      PREDICATE returns a non-`nil' value, `some' returns that value,
      otherwise it returns `nil'.  Given several sequence arguments, it
@@ -3376,24 +3376,24 @@ function `mapcar'.
      order in which the elements are visited, and on the fact that
      mapping stops immediately as soon as PREDICATE returns non-`nil'.
 
- - Function: every predicate seq &rest more-seqs
+ -- Function: every predicate seq &rest more-seqs
      This function calls PREDICATE on each element of the sequence(s)
      in turn; it returns `nil' as soon as PREDICATE returns `nil' for
      any element, or `t' if the predicate was true for all elements.
 
- - Function: notany predicate seq &rest more-seqs
+ -- Function: notany predicate seq &rest more-seqs
      This function calls PREDICATE on each element of the sequence(s)
      in turn; it returns `nil' as soon as PREDICATE returns a non-`nil'
      value for any element, or `t' if the predicate was `nil' for all
      elements.
 
- - Function: notevery predicate seq &rest more-seqs
+ -- Function: notevery predicate seq &rest more-seqs
      This function calls PREDICATE on each element of the sequence(s)
      in turn; it returns a non-`nil' value as soon as PREDICATE returns
      `nil' for any element, or `t' if the predicate was true for all
      elements.
 
- - Function: reduce function seq &key :from-end :start :end
+ -- Function: reduce function seq &key :from-end :start :end
           :initial-value :key
      This function combines the elements of SEQ using an associative
      binary operation.  Suppose FUNCTION is `*' and SEQ is the list `(2
@@ -3431,13 +3431,13 @@ since it generates the loop as in-line code with no function calls.
 \1f
 File: cl.info,  Node: Sequence Functions,  Next: Searching Sequences,  Prev: Mapping over Sequences,  Up: Sequences
 
-Sequence Functions
-==================
+10.3 Sequence Functions
+=======================
 
 This section describes a number of Common Lisp functions for operating
 on sequences.
 
- - Function: subseq sequence start &optional end
+ -- Function: subseq sequence start &optional end
      This function returns a given subsequence of the argument
      SEQUENCE, which may be a list, string, or vector.  The indices
      START and END must be in range, and START must be no greater than
@@ -3455,18 +3455,18 @@ on sequences.
      of elements with elements from another sequence.  The replacement
      is done as if by `replace', described below.
 
- - Function: concatenate result-type &rest seqs
+ -- Function: concatenate result-type &rest seqs
      This function concatenates the argument sequences together to form
      a result sequence of type RESULT-TYPE, one of the symbols
      `vector', `string', or `list'.  The arguments are always copied,
      even in cases such as `(concatenate 'list '(1 2 3))' where the
      result is identical to an argument.
 
- - Function: fill seq item &key :start :end
+ -- Function: fill seq item &key :start :end
      This function fills the elements of the sequence (or the specified
      part of the sequence) with the value ITEM.
 
- - Function: replace seq1 seq2 &key :start1 :end1 :start2 :end2
+ -- Function: replace seq1 seq2 &key :start1 :end1 :start2 :end2
      This function copies part of SEQ2 into part of SEQ1.  The sequence
      SEQ1 is not stretched or resized; the amount of data copied is
      simply the shorter of the source and destination (sub)sequences.
@@ -3478,7 +3478,7 @@ on sequences.
      share storage but are not `eq', and the start and end arguments
      specify overlapping regions, the effect is undefined.
 
- - Function: remove* item seq &key :test :test-not :key :count :start
+ -- Function: remove* item seq &key :test :test-not :key :count :start
           :end :from-end
      This returns a copy of SEQ with all elements matching ITEM
      removed.  The result may share storage with or be `eq' to SEQ in
@@ -3494,7 +3494,7 @@ on sequences.
      sequence rather than the beginning (this matters only if COUNT was
      also specified).
 
- - Function: delete* item seq &key :test :test-not :key :count :start
+ -- Function: delete* item seq &key :test :test-not :key :count :start
           :end :from-end
      This deletes all elements of SEQ which match ITEM.  It is a
      destructive operation.  Since Emacs Lisp does not support
@@ -3508,22 +3508,22 @@ on sequences.
    The predicate-oriented functions `remove-if', `remove-if-not',
 `delete-if', and `delete-if-not' are defined similarly.
 
- - Function: delete item list
+ -- Function: delete item list
      This MacLisp-compatible function deletes from LIST all elements
      which are `equal' to ITEM.  The `delete' function is built-in to
      Emacs 19; this package defines it equivalently in Emacs 18.
 
- - Function: remove item list
+ -- Function: remove item list
      This function removes from LIST all elements which are `equal' to
      ITEM.  This package defines it for symmetry with `delete', even
      though `remove' is not built-in to Emacs 19.
 
- - Function: remq item list
+ -- Function: remq item list
      This function removes from LIST all elements which are `eq' to
      ITEM.  This package defines it for symmetry with `delq', even
      though `remq' is not built-in to Emacs 19.
 
- - Function: remove-duplicates seq &key :test :test-not :key :start
+ -- Function: remove-duplicates seq &key :test :test-not :key :start
           :end :from-end
      This function returns a copy of SEQ with duplicate elements
      removed.  Specifically, if two elements from the sequence match
@@ -3533,19 +3533,19 @@ on sequences.
      specified, only elements within that subsequence are examined or
      removed.
 
- - Function: delete-duplicates seq &key :test :test-not :key :start
+ -- Function: delete-duplicates seq &key :test :test-not :key :start
           :end :from-end
      This function deletes duplicate elements from SEQ.  It is a
      destructive version of `remove-duplicates'.
 
- - Function: substitute new old seq &key :test :test-not :key :count
+ -- Function: substitute new old seq &key :test :test-not :key :count
           :start :end :from-end
      This function returns a copy of SEQ, with all elements matching
      OLD replaced with NEW.  The `:count', `:start', `:end', and
      `:from-end' arguments may be used to limit the number of
      substitutions made.
 
- - Function: nsubstitute new old seq &key :test :test-not :key :count
+ -- Function: nsubstitute new old seq &key :test :test-not :key :count
           :start :end :from-end
      This is a destructive version of `substitute'; it performs the
      substitution using `setcar' or `aset' rather than by returning a
@@ -3558,13 +3558,13 @@ PREDICATE is given in place of the OLD argument.
 \1f
 File: cl.info,  Node: Searching Sequences,  Next: Sorting Sequences,  Prev: Sequence Functions,  Up: Sequences
 
-Searching Sequences
-===================
+10.4 Searching Sequences
+========================
 
 These functions search for elements or subsequences in a sequence.
 (See also `member*' and `assoc*'; *note Lists::.)
 
- - Function: find item seq &key :test :test-not :key :start :end
+ -- Function: find item seq &key :test :test-not :key :start :end
           :from-end
      This function searches SEQ for an element matching ITEM.  If it
      finds a match, it returns the matching element.  Otherwise, it
@@ -3573,7 +3573,7 @@ These functions search for elements or subsequences in a sequence.
      `:start' and `:end' arguments may be used to limit the range of
      elements that are searched.
 
- - Function: position item seq &key :test :test-not :key :start :end
+ -- Function: position item seq &key :test :test-not :key :start :end
           :from-end
      This function is like `find', except that it returns the integer
      position in the sequence of the matching item rather than the item
@@ -3581,15 +3581,15 @@ These functions search for elements or subsequences in a sequence.
      a whole, even if `:start' is non-zero.  The function returns `nil'
      if no matching element was found.
 
- - Function: count item seq &key :test :test-not :key :start :end
+ -- Function: count item seq &key :test :test-not :key :start :end
      This function returns the number of elements of SEQ which match
      ITEM.  The result is always a nonnegative integer.
 
    The `find-if', `find-if-not', `position-if', `position-if-not',
 `count-if', and `count-if-not' functions are defined similarly.
 
- - Function: mismatch seq1 seq2 &key :test :test-not :key :start1 :end1
-          :start2 :end2 :from-end
+ -- Function: mismatch seq1 seq2 &key :test :test-not :key :start1
+          :end1 :start2 :end2 :from-end
      This function compares the specified parts of SEQ1 and SEQ2.  If
      they are the same length and the corresponding elements match
      (according to `:test', `:test-not', and `:key'), the function
@@ -3607,7 +3607,7 @@ These functions search for elements or subsequences in a sequence.
      An interesting example is `(mismatch str1 str2 :key 'upcase)',
      which compares two strings case-insensitively.
 
- - Function: search seq1 seq2 &key :test :test-not :key :from-end
+ -- Function: search seq1 seq2 &key :test :test-not :key :from-end
           :start1 :end1 :start2 :end2
      This function searches SEQ2 for a subsequence that matches SEQ1
      (or part of it specified by `:start1' and `:end1'.)  Only matches
@@ -3620,10 +3620,10 @@ These functions search for elements or subsequences in a sequence.
 \1f
 File: cl.info,  Node: Sorting Sequences,  Prev: Searching Sequences,  Up: Sequences
 
-Sorting Sequences
-=================
+10.5 Sorting Sequences
+======================
 
- - Function: sort* seq predicate &key :key
+ -- Function: sort* seq predicate &key :key
      This function sorts SEQ into increasing order as determined by
      using PREDICATE to compare pairs of elements.  PREDICATE should
      return true (non-`nil') if and only if its first argument is less
@@ -3646,7 +3646,7 @@ Sorting Sequences
      The `sort*' function is destructive; it sorts lists by actually
      rearranging the `cdr' pointers in suitable fashion.
 
- - Function: stable-sort seq predicate &key :key
+ -- Function: stable-sort seq predicate &key :key
      This function sorts SEQ "stably", meaning two elements which are
      equal in terms of PREDICATE are guaranteed not to be rearranged
      out of their original order by the sort.
@@ -3656,7 +3656,7 @@ Sorting Sequences
      However, this package reserves the right to use non-stable methods
      for `sort*' in the future.
 
- - Function: merge type seq1 seq2 predicate &key :key
+ -- Function: merge type seq1 seq2 predicate &key :key
      This function merges two sequences SEQ1 and SEQ2 by interleaving
      their elements.  The result sequence, of type TYPE (in the sense
      of `concatenate'), has length equal to the sum of the lengths of
@@ -3673,8 +3673,8 @@ Sorting Sequences
 \1f
 File: cl.info,  Node: Lists,  Next: Hash Tables,  Prev: Sequences,  Up: Top
 
-Lists
-*****
+11 Lists
+********
 
 The functions described here operate on lists.
 
@@ -3688,40 +3688,40 @@ The functions described here operate on lists.
 \1f
 File: cl.info,  Node: List Functions,  Next: Substitution of Expressions,  Prev: Lists,  Up: Lists
 
-List Functions
-==============
+11.1 List Functions
+===================
 
 This section describes a number of simple operations on lists, i.e.,
 chains of cons cells.
 
- - Function: caddr x
+ -- Function: caddr x
      This function is equivalent to `(car (cdr (cdr X)))'.  Likewise,
      this package defines all 28 `cXXXr' functions where XXX is up to
      four `a's and/or `d's.  All of these functions are `setf'-able,
      and calls to them are expanded inline by the byte-compiler for
      maximum efficiency.
 
- - Function: first x
+ -- Function: first x
      This function is a synonym for `(car X)'.  Likewise, the functions
      `second', `third', ..., through `tenth' return the given element
      of the list X.
 
- - Function: rest x
+ -- Function: rest x
      This function is a synonym for `(cdr X)'.
 
- - Function: endp x
+ -- Function: endp x
      Common Lisp defines this function to act like `null', but
      signalling an error if `x' is neither a `nil' nor a cons cell.
      This package simply defines `endp' as a synonym for `null'.
 
- - Function: list-length x
+ -- Function: list-length x
      This function returns the length of list X, exactly like `(length
      X)', except that if X is a circular list (where the cdr-chain
      forms a loop rather than terminating with `nil'), this function
      returns `nil'.  (The regular `length' function would get stuck if
      given a circular list.)
 
- - Function: last x &optional n
+ -- Function: last x &optional n
      This function returns the last cons, or the Nth-to-last cons, of
      the list X.  If N is omitted it defaults to 1.  The "last cons"
      means the first cons cell of the list whose `cdr' is not another
@@ -3729,19 +3729,19 @@ chains of cons cells.
      `nil'.)  This function returns `nil' if X is `nil' or shorter than
      N.  Note that the last _element_ of the list is `(car (last X))'.
 
- - Function: butlast x &optional n
+ -- Function: butlast x &optional n
      This function returns the list X with the last element, or the
      last N elements, removed.  If N is greater than zero it makes a
      copy of the list so as not to damage the original list.  In
      general, `(append (butlast X N) (last X N))' will return a list
      equal to X.
 
- - Function: nbutlast x &optional n
+ -- Function: nbutlast x &optional n
      This is a version of `butlast' that works by destructively
      modifying the `cdr' of the appropriate element, rather than making
      a copy of the list.
 
- - Function: list* arg &rest others
+ -- Function: list* arg &rest others
      This function constructs a list of its arguments.  The final
      argument becomes the `cdr' of the last cell constructed.  Thus,
      `(list* A B C)' is equivalent to `(cons A (cons B C))', and
@@ -3751,7 +3751,7 @@ chains of cons cells.
      it is not a name invented for this package like `member*' or
      `defun*'.)
 
- - Function: ldiff list sublist
+ -- Function: ldiff list sublist
      If SUBLIST is a sublist of LIST, i.e., is `eq' to one of the cons
      cells of LIST, then this function returns a copy of the part of
      LIST up to but not including SUBLIST.  For example, `(ldiff x
@@ -3759,11 +3759,11 @@ chains of cons cells.
      result is a copy; the original LIST is not modified.  If SUBLIST
      is not a sublist of LIST, a copy of the entire LIST is returned.
 
- - Function: copy-list list
+ -- Function: copy-list list
      This function returns a copy of the list LIST.  It copies dotted
      lists like `(1 2 . 3)' correctly.
 
- - Function: copy-tree x &optional vecp
+ -- Function: copy-tree x &optional vecp
      This function returns a copy of the tree of cons cells X.  Unlike
      `copy-sequence' (and its alias `copy-list'), which copies only
      along the `cdr' direction, this function copies (recursively)
@@ -3772,7 +3772,7 @@ chains of cons cells.
      VECP argument is true, this function copies vectors (recursively)
      as well as cons cells.
 
- - Function: tree-equal x y &key :test :test-not :key
+ -- Function: tree-equal x y &key :test :test-not :key
      This function compares two trees of cons cells.  If X and Y are
      both cons cells, their `car's and `cdr's are compared recursively.
      If neither X nor Y is a cons cell, they are compared by `eql', or
@@ -3783,14 +3783,14 @@ chains of cons cells.
 \1f
 File: cl.info,  Node: Substitution of Expressions,  Next: Lists as Sets,  Prev: List Functions,  Up: Lists
 
-Substitution of Expressions
-===========================
+11.2 Substitution of Expressions
+================================
 
 These functions substitute elements throughout a tree of cons cells.
 (*Note Sequence Functions::, for the `substitute' function, which works
 on just the top-level elements of a list.)
 
- - Function: subst new old tree &key :test :test-not :key
+ -- Function: subst new old tree &key :test :test-not :key
      This function substitutes occurrences of OLD with NEW in TREE, a
      tree of cons cells.  It returns a substituted tree, which will be
      a copy except that it may share storage with the argument TREE in
@@ -3803,38 +3803,38 @@ on just the top-level elements of a list.)
      test (`eql' by default).  The `:key' function is applied to the
      elements of the tree but not to OLD.
 
- - Function: nsubst new old tree &key :test :test-not :key
+ -- Function: nsubst new old tree &key :test :test-not :key
      This function is like `subst', except that it works by destructive
      modification (by `setcar' or `setcdr') rather than copying.
 
    The `subst-if', `subst-if-not', `nsubst-if', and `nsubst-if-not'
 functions are defined similarly.
 
- - Function: sublis alist tree &key :test :test-not :key
+ -- Function: sublis alist tree &key :test :test-not :key
      This function is like `subst', except that it takes an association
      list ALIST of OLD-NEW pairs.  Each element of the tree (after
      applying the `:key' function, if any), is compared with the `car's
      of ALIST; if it matches, it is replaced by the corresponding `cdr'.
 
- - Function: nsublis alist tree &key :test :test-not :key
+ -- Function: nsublis alist tree &key :test :test-not :key
      This is a destructive version of `sublis'.
 
 \1f
 File: cl.info,  Node: Lists as Sets,  Next: Association Lists,  Prev: Substitution of Expressions,  Up: Lists
 
-Lists as Sets
-=============
+11.3 Lists as Sets
+==================
 
 These functions perform operations on lists which represent sets of
 elements.
 
- - Function: member item list
+ -- Function: member item list
      This MacLisp-compatible function searches LIST for an element
      which is `equal' to ITEM.  The `member' function is built-in to
      Emacs 19; this package defines it equivalently in Emacs 18.  See
      the following function for a Common-Lisp compatible version.
 
- - Function: member* item list &key :test :test-not :key
+ -- Function: member* item list &key :test :test-not :key
      This function searches LIST for an element matching ITEM.  If a
      match is found, it returns the cons cell whose `car' was the
      matching element.  Otherwise, it returns `nil'.  Elements are
@@ -3850,11 +3850,11 @@ elements.
    The `member-if' and `member-if-not' functions analogously search for
 elements which satisfy a given predicate.
 
- - Function: tailp sublist list
+ -- Function: tailp sublist list
      This function returns `t' if SUBLIST is a sublist of LIST, i.e.,
      if SUBLIST is `eql' to LIST or to any of its `cdr's.
 
- - Function: adjoin item list &key :test :test-not :key
+ -- Function: adjoin item list &key :test :test-not :key
      This function conses ITEM onto the front of LIST, like `(cons ITEM
      LIST)', but only if ITEM is not already present on the list (as
      determined by `member*').  If a `:key' argument is specified, it
@@ -3862,7 +3862,7 @@ elements which satisfy a given predicate.
      search, on the reasoning that ITEM is "about" to become part of
      the list.
 
- - Function: union list1 list2 &key :test :test-not :key
+ -- Function: union list1 list2 &key :test :test-not :key
      This function combines two lists which represent sets of items,
      returning a list that represents the union of those two sets.  The
      result list will contain all items which appear in LIST1 or LIST2,
@@ -3872,52 +3872,52 @@ elements which satisfy a given predicate.
      result list.  The order of elements in the result list is also
      undefined.
 
- - Function: nunion list1 list2 &key :test :test-not :key
+ -- Function: nunion list1 list2 &key :test :test-not :key
      This is a destructive version of `union'; rather than copying, it
      tries to reuse the storage of the argument lists if possible.
 
- - Function: intersection list1 list2 &key :test :test-not :key
+ -- Function: intersection list1 list2 &key :test :test-not :key
      This function computes the intersection of the sets represented by
      LIST1 and LIST2.  It returns the list of items which appear in
      both LIST1 and LIST2.
 
- - Function: nintersection list1 list2 &key :test :test-not :key
+ -- Function: nintersection list1 list2 &key :test :test-not :key
      This is a destructive version of `intersection'.  It tries to
      reuse storage of LIST1 rather than copying.  It does _not_ reuse
      the storage of LIST2.
 
- - Function: set-difference list1 list2 &key :test :test-not :key
+ -- Function: set-difference list1 list2 &key :test :test-not :key
      This function computes the "set difference" of LIST1 and LIST2,
      i.e., the set of elements that appear in LIST1 but _not_ in LIST2.
 
- - Function: nset-difference list1 list2 &key :test :test-not :key
+ -- Function: nset-difference list1 list2 &key :test :test-not :key
      This is a destructive `set-difference', which will try to reuse
      LIST1 if possible.
 
- - Function: set-exclusive-or list1 list2 &key :test :test-not :key
+ -- Function: set-exclusive-or list1 list2 &key :test :test-not :key
      This function computes the "set exclusive or" of LIST1 and LIST2,
      i.e., the set of elements that appear in exactly one of LIST1 and
      LIST2.
 
- - Function: nset-exclusive-or list1 list2 &key :test :test-not :key
+ -- Function: nset-exclusive-or list1 list2 &key :test :test-not :key
      This is a destructive `set-exclusive-or', which will try to reuse
      LIST1 and LIST2 if possible.
 
- - Function: subsetp list1 list2 &key :test :test-not :key
+ -- Function: subsetp list1 list2 &key :test :test-not :key
      This function checks whether LIST1 represents a subset of LIST2,
      i.e., whether every element of LIST1 also appears in LIST2.
 
 \1f
 File: cl.info,  Node: Association Lists,  Prev: Lists as Sets,  Up: Lists
 
-Association Lists
-=================
+11.4 Association Lists
+======================
 
 An "association list" is a list representing a mapping from one set of
 values to another; any list whose elements are cons cells is an
 association list.
 
- - Function: assoc* item a-list &key :test :test-not :key
+ -- Function: assoc* item a-list &key :test :test-not :key
      This function searches the association list A-LIST for an element
      whose `car' matches (in the sense of `:test', `:test-not', and
      `:key', or by comparison with `eql') a given ITEM.  It returns the
@@ -3927,12 +3927,12 @@ association list.
      `assoc' ignores `nil's but considers any other non-cons elements
      of A-LIST to be an error.)
 
- - Function: rassoc* item a-list &key :test :test-not :key
+ -- Function: rassoc* item a-list &key :test :test-not :key
      This function searches for an element whose `cdr' matches ITEM.
      If A-LIST represents a mapping, this applies the inverse of the
      mapping to ITEM.
 
- - Function: rassoc item a-list
+ -- Function: rassoc item a-list
      This function searches like `rassoc*' with a `:test' argument of
      `equal'.  It is analogous to Emacs Lisp's standard `assoc'
      function, which derives from the MacLisp rather than the Common
@@ -3943,17 +3943,17 @@ functions are defined similarly.
 
    Two simple functions for constructing association lists are:
 
- - Function: acons key value alist
+ -- Function: acons key value alist
      This is equivalent to `(cons (cons KEY VALUE) ALIST)'.
 
- - Function: pairlis keys values &optional alist
+ -- Function: pairlis keys values &optional alist
      This is equivalent to `(nconc (mapcar* 'cons KEYS VALUES) ALIST)'.
 
 \1f
 File: cl.info,  Node: Hash Tables,  Next: Structures,  Prev: Lists,  Up: Top
 
-Hash Tables
-***********
+12 Hash Tables
+**************
 
 Hash tables are now implemented directly in the C code and documented in
 *Note Hash Tables: (lispref)Hash Tables.
@@ -3961,8 +3961,8 @@ Hash tables are now implemented directly in the C code and documented in
 \1f
 File: cl.info,  Node: Structures,  Next: Assertions,  Prev: Hash Tables,  Up: Top
 
-Structures
-**********
+13 Structures
+*************
 
 The Common Lisp "structure" mechanism provides a general way to define
 data types similar to C's `struct' types.  A structure is a Lisp object
@@ -3977,7 +3977,7 @@ provides no way to create new distinct types, this package implements
 structures as vectors (or lists upon request) with a special "tag"
 symbol to identify them.
 
- - Special Form: defstruct name slots...
+ -- Special Form: defstruct name slots...
      The `defstruct' form defines a new structure type called NAME,
      with the specified SLOTS.  (The SLOTS may begin with a string
      which documents the structure type.)  In the simplest case, NAME
@@ -4174,17 +4174,17 @@ symbol to identify them.
                  helmet-size
                  (favorite-beverage 'tang))
                     => astronaut
-               
+
                (setq joe (make-person :name "Joe"))
                     => [cl-struct-person "Joe" 0 nil]
                (setq buzz (make-astronaut :name "Buzz"))
                     => [cl-struct-astronaut "Buzz" 45 nil nil tang]
-               
+
                (list (person-p joe) (person-p buzz))
                     => (t t)
                (list (astronaut-p joe) (astronaut-p buzz))
                     => (nil t)
-               
+
                (person-name buzz)
                     => "Buzz"
                (astronaut-name joe)
@@ -4231,14 +4231,14 @@ symbol to identify them.
                (defstruct (person1) name age sex)
                (defstruct (person2 (:type list) :named) name age sex)
                (defstruct (person3 (:type list)) name age sex)
-               
+
                (setq p1 (make-person1))
                     => [cl-struct-person1 nil nil nil]
                (setq p2 (make-person2))
                     => (person2 nil nil nil)
                (setq p3 (make-person3))
                     => (nil nil nil)
-               
+
                (person1-p p1)
                     => t
                (person2-p p2)
@@ -4272,8 +4272,8 @@ entirely compatible with that of Common Lisp.
 \1f
 File: cl.info,  Node: Assertions,  Next: Efficiency Concerns,  Prev: Structures,  Up: Top
 
-Assertions and Errors
-*********************
+14 Assertions and Errors
+************************
 
 This section describes two macros that test "assertions", i.e.,
 conditions which must be true if the program is operating correctly.
@@ -4285,7 +4285,7 @@ is less than 3, then the byte-compiler will optimize away the following
 assertions.  Because assertions might be optimized away, it is a bad
 idea for them to include side-effects.
 
- - Special Form: assert test-form [show-args string args...]
+ -- Special Form: assert test-form [show-args string args...]
      This form verifies that TEST-FORM is true (i.e., evaluates to a
      non-`nil' value).  If so, it returns `nil'.  If the test is not
      satisfied, `assert' signals an error.
@@ -4305,7 +4305,7 @@ idea for them to include side-effects.
      Common Lisp, the second argument gives a list of PLACES which can
      be `setf''d by the user before continuing from the error.
 
- - Special Form: check-type place type &optional string
+ -- Special Form: check-type place type &optional string
      This form verifies that PLACE evaluates to a value of type TYPE.
      If so, it returns `nil'.  If not, `check-type' signals a
      continuable `wrong-type-argument' error.  The default error
@@ -4325,7 +4325,7 @@ idea for them to include side-effects.
 
    The following error-related macro is also defined:
 
- - Special Form: ignore-errors forms...
+ -- Special Form: ignore-errors forms...
      This executes FORMS exactly like a `progn', except that errors are
      ignored during the FORMS.  More precisely, if an error is
      signalled then `ignore-errors' immediately aborts execution of the
@@ -4335,11 +4335,11 @@ idea for them to include side-effects.
 \1f
 File: cl.info,  Node: Efficiency Concerns,  Next: Common Lisp Compatibility,  Prev: Assertions,  Up: Top
 
-Efficiency Concerns
-*******************
+Appendix A Efficiency Concerns
+******************************
 
-Macros
-======
+A.1 Macros
+==========
 
 Many of the advanced features of this package, such as `defun*',
 `loop', and `setf', are implemented as Lisp macros.  In byte-compiled
@@ -4370,7 +4370,7 @@ thrown away a hundred times.
    You can find out how a macro expands by using the `cl-prettyexpand'
 function.
 
- - Function: cl-prettyexpand form &optional full
+ -- Function: cl-prettyexpand form &optional full
      This function takes a single Lisp form as an argument and inserts
      a nicely formatted copy of it in the current buffer (which must be
      in Lisp mode so that indentation works properly).  It also expands
@@ -4411,8 +4411,8 @@ function.
      compiler macros to optimize them in common cases.
 
 
-Error Checking
-==============
+A.2 Error Checking
+==================
 
 Common Lisp compliance has in general not been sacrificed for the sake
 of efficiency.  A few exceptions have been made for cases where
@@ -4448,8 +4448,8 @@ in this package such as `find' and `member*' do check their keyword
 arguments for validity.
 
 
-Optimizing Compiler
-===================
+A.3 Optimizing Compiler
+=======================
 
 The byte-compiler that comes with Emacs 18 normally fails to expand
 macros that appear in top-level positions in the file (i.e., outside of
@@ -4475,8 +4475,8 @@ not actually referenced by `return' or `return-from' inside the block.
 \1f
 File: cl.info,  Node: Common Lisp Compatibility,  Next: Old CL Compatibility,  Prev: Efficiency Concerns,  Up: Top
 
-Common Lisp Compatibility
-*************************
+Appendix B Common Lisp Compatibility
+************************************
 
 Following is a list of all known incompatibilities between this package
 and Common Lisp as documented in Steele (2nd edition).
@@ -4543,8 +4543,8 @@ distinct type.  Also, the `:type' slot option is ignored.
 \1f
 File: cl.info,  Node: Old CL Compatibility,  Next: Porting Common Lisp,  Prev: Common Lisp Compatibility,  Up: Top
 
-Old CL Compatibility
-********************
+Appendix C Old CL Compatibility
+*******************************
 
 Following is a list of all known incompatibilities between this package
 and the older Quiroz `cl.el' package.
@@ -4581,8 +4581,8 @@ and `letf'), this package does not export any non-`cl-' symbols which
 are not also part of Common Lisp.
 
 
-The `cl-compat' package
-=======================
+C.1 The `cl-compat' package
+===========================
 
 The "CL" package includes emulations of some features of the old
 `cl.el', in the form of a compatibility package `cl-compat'.  To use
@@ -4631,8 +4631,8 @@ use these names because they conflict with Emacs 19 built-ins.
 \1f
 File: cl.info,  Node: Porting Common Lisp,  Next: Function Index,  Prev: Old CL Compatibility,  Up: Top
 
-Porting Common Lisp
-*******************
+Appendix D Porting Common Lisp
+******************************
 
 This package is meant to be used as an extension to Emacs Lisp, not as
 an Emacs implementation of true Common Lisp.  Some of the remaining
@@ -4672,7 +4672,7 @@ Lisp code into Emacs.
             (loop for x in list
                   for flag = t then (not flag)
                   collect (if flag x (funcall func x))))
-          
+
           (defun add-odd-elements (list x)
             (map-odd-elements (function (lambda (a) (+ a x))) list))
 
@@ -4849,194 +4849,221 @@ File: cl.info,  Node: Function Index,  Next: Variable Index,  Prev: Porting Comm
 Function Index
 **************
 
+\0\b[index\0\b]
 * Menu:
 
-* abs:                                   Numerical Functions.
-* acons:                                 Association Lists.
-* adjoin:                                Lists as Sets.
-* assert:                                Assertions.
-* assoc*:                                Association Lists.
-* assoc-if:                              Association Lists.
-* assoc-if-not:                          Association Lists.
-* block:                                 Blocks and Exits.
-* butlast:                               List Functions.
-* caddr:                                 List Functions.
-* callf:                                 Modify Macros.
-* callf2:                                Modify Macros.
-* case:                                  Conditionals.
-* ceiling*:                              Numerical Functions.
-* check-type:                            Assertions.
+* abs:                                   Numerical Functions. (line   9)
+* acons:                                 Association Lists.   (line  37)
+* adjoin:                                Lists as Sets.       (line  36)
+* assert:                                Assertions.          (line  17)
+* assoc*:                                Association Lists.   (line  11)
+* assoc-if:                              Association Lists.   (line  31)
+* assoc-if-not:                          Association Lists.   (line  31)
+* block:                                 Blocks and Exits.    (line  14)
+* butlast:                               List Functions.      (line  45)
+* caddr:                                 List Functions.      (line  10)
+* callf:                                 Modify Macros.       (line 146)
+* callf2:                                Modify Macros.       (line 161)
+* case:                                  Conditionals.        (line  30)
+* ceiling*:                              Numerical Functions. (line  61)
+* check-type:                            Assertions.          (line  37)
 * cl-float-limits:                       Implementation Parameters.
-* cl-prettyexpand:                       Efficiency Concerns.
-* coerce:                                Type Predicates.
-* compiler-macroexpand:                  Macros.
-* concatenate:                           Sequence Functions.
-* copy-list:                             List Functions.
-* copy-tree:                             List Functions.
-* count:                                 Searching Sequences.
-* count-if:                              Searching Sequences.
-* count-if-not:                          Searching Sequences.
-* decf:                                  Modify Macros.
-* declaim:                               Declarations.
-* declare:                               Declarations.
-* defalias:                              Function Aliases.
-* define-compiler-macro:                 Macros.
-* define-modify-macro:                   Customizing Setf.
-* define-setf-method:                    Customizing Setf.
-* defmacro*:                             Argument Lists.
-* defsetf:                               Customizing Setf.
-* defstruct:                             Structures.
-* defsubst*:                             Argument Lists.
-* deftype:                               Type Predicates.
-* defun*:                                Argument Lists.
-* delete:                                Sequence Functions.
-* delete*:                               Sequence Functions.
-* delete-duplicates:                     Sequence Functions.
-* delete-if:                             Sequence Functions.
-* delete-if-not:                         Sequence Functions.
-* destructuring-bind:                    Macros.
-* do:                                    Iteration.
-* do*:                                   Iteration.
-* do-all-symbols:                        Iteration.
-* do-symbols:                            Iteration.
-* dolist:                                Iteration.
-* dotimes:                               Iteration.
-* ecase:                                 Conditionals.
-* endp:                                  List Functions.
-* eql:                                   Equality Predicates.
-* equalp:                                Equality Predicates.
-* etypecase:                             Conditionals.
-* eval-when:                             Time of Evaluation.
-* eval-when-compile:                     Time of Evaluation.
+                                                              (line  23)
+* cl-prettyexpand:                       Efficiency Concerns. (line  39)
+* coerce:                                Type Predicates.     (line  66)
+* compiler-macroexpand:                  Macros.              (line  60)
+* concatenate:                           Sequence Functions.  (line  28)
+* copy-list:                             List Functions.      (line  75)
+* copy-tree:                             List Functions.      (line  79)
+* count:                                 Searching Sequences. (line  27)
+* count-if:                              Searching Sequences. (line  30)
+* count-if-not:                          Searching Sequences. (line  30)
+* decf:                                  Modify Macros.       (line  46)
+* declaim:                               Declarations.        (line  27)
+* declare:                               Declarations.        (line  37)
+* defalias:                              Function Aliases.    (line  10)
+* define-compiler-macro:                 Macros.              (line  28)
+* define-modify-macro:                   Customizing Setf.    (line  11)
+* define-setf-method:                    Customizing Setf.    (line  99)
+* defmacro*:                             Argument Lists.      (line  35)
+* defsetf:                               Customizing Setf.    (line  41)
+* defstruct:                             Structures.          (line  20)
+* defsubst*:                             Argument Lists.      (line  24)
+* deftype:                               Type Predicates.     (line  77)
+* defun*:                                Argument Lists.      (line  18)
+* delete:                                Sequence Functions.  (line  81)
+* delete*:                               Sequence Functions.  (line  68)
+* delete-duplicates:                     Sequence Functions.  (line 107)
+* delete-if:                             Sequence Functions.  (line  77)
+* delete-if-not:                         Sequence Functions.  (line  77)
+* destructuring-bind:                    Macros.              (line  15)
+* do:                                    Iteration.           (line  34)
+* do*:                                   Iteration.           (line  73)
+* do-all-symbols:                        Iteration.           (line 115)
+* do-symbols:                            Iteration.           (line 106)
+* dolist:                                Iteration.           (line  89)
+* dotimes:                               Iteration.           (line  97)
+* ecase:                                 Conditionals.        (line  58)
+* endp:                                  List Functions.      (line  25)
+* eql:                                   Equality Predicates. (line   9)
+* equalp:                                Equality Predicates. (line  40)
+* etypecase:                             Conditionals.        (line  79)
+* eval-when:                             Time of Evaluation.  (line  16)
+* eval-when-compile:                     Time of Evaluation.  (line  87)
 * evenp:                                 Predicates on Numbers.
+                                                              (line  22)
 * every:                                 Mapping over Sequences.
-* expt:                                  Numerical Functions.
-* fill:                                  Sequence Functions.
-* find:                                  Searching Sequences.
-* find-if:                               Searching Sequences.
-* find-if-not:                           Searching Sequences.
-* first:                                 List Functions.
-* flet:                                  Function Bindings.
+                                                              (line  71)
+* expt:                                  Numerical Functions. (line  15)
+* fill:                                  Sequence Functions.  (line  35)
+* find:                                  Searching Sequences. (line  11)
+* find-if:                               Searching Sequences. (line  30)
+* find-if-not:                           Searching Sequences. (line  30)
+* first:                                 List Functions.      (line  17)
+* flet:                                  Function Bindings.   (line   9)
 * floatp-safe:                           Predicates on Numbers.
-* floor*:                                Numerical Functions.
-* function*:                             Argument Lists.
-* gcd:                                   Numerical Functions.
-* gensym:                                Creating Symbols.
-* gentemp:                               Creating Symbols.
-* get-setf-method:                       Customizing Setf.
-* getf:                                  Property Lists.
-* ignore-errors:                         Assertions.
-* incf:                                  Modify Macros.
-* intersection:                          Lists as Sets.
-* isqrt:                                 Numerical Functions.
-* labels:                                Function Bindings.
-* last:                                  List Functions.
-* lcm:                                   Numerical Functions.
-* ldiff:                                 List Functions.
-* letf:                                  Modify Macros.
-* letf*:                                 Modify Macros.
-* lexical-let:                           Lexical Bindings.
-* lexical-let*:                          Lexical Bindings.
-* list*:                                 List Functions.
-* list-length:                           List Functions.
-* load-time-value:                       Time of Evaluation.
-* locally:                               Declarations.
-* loop <1>:                              Loop Basics.
-* loop:                                  Iteration.
-* macrolet:                              Macro Bindings.
-* make-random-state:                     Random Numbers.
+                                                              (line  26)
+* floor*:                                Numerical Functions. (line  36)
+* function*:                             Argument Lists.      (line  44)
+* gcd:                                   Numerical Functions. (line  21)
+* gensym:                                Creating Symbols.    (line  10)
+* gentemp:                               Creating Symbols.    (line  34)
+* get-setf-method:                       Customizing Setf.    (line 138)
+* getf:                                  Property Lists.      (line  12)
+* ignore-errors:                         Assertions.          (line  57)
+* incf:                                  Modify Macros.       (line  18)
+* intersection:                          Lists as Sets.       (line  58)
+* isqrt:                                 Numerical Functions. (line  31)
+* labels:                                Function Bindings.   (line  45)
+* last:                                  List Functions.      (line  37)
+* lcm:                                   Numerical Functions. (line  26)
+* ldiff:                                 List Functions.      (line  67)
+* letf:                                  Modify Macros.       (line  97)
+* letf*:                                 Modify Macros.       (line 142)
+* lexical-let:                           Lexical Bindings.    (line  10)
+* lexical-let*:                          Lexical Bindings.    (line  98)
+* list*:                                 List Functions.      (line  57)
+* list-length:                           List Functions.      (line  30)
+* load-time-value:                       Time of Evaluation.  (line  96)
+* locally:                               Declarations.        (line  45)
+* loop <1>:                              Loop Basics.         (line  16)
+* loop:                                  Iteration.           (line  10)
+* macrolet:                              Macro Bindings.      (line   9)
+* make-random-state:                     Random Numbers.      (line  29)
 * map:                                   Mapping over Sequences.
+                                                              (line  27)
 * mapc:                                  Mapping over Sequences.
+                                                              (line  43)
 * mapcan:                                Mapping over Sequences.
+                                                              (line  53)
 * mapcar*:                               Mapping over Sequences.
+                                                              (line  11)
 * mapcon:                                Mapping over Sequences.
+                                                              (line  58)
 * mapl:                                  Mapping over Sequences.
+                                                              (line  49)
 * maplist:                               Mapping over Sequences.
-* member:                                Lists as Sets.
-* member*:                               Lists as Sets.
-* member-if:                             Lists as Sets.
-* member-if-not:                         Lists as Sets.
-* merge:                                 Sorting Sequences.
+                                                              (line  35)
+* member:                                Lists as Sets.       (line  10)
+* member*:                               Lists as Sets.       (line  16)
+* member-if:                             Lists as Sets.       (line  28)
+* member-if-not:                         Lists as Sets.       (line  28)
+* merge:                                 Sorting Sequences.   (line  40)
 * minusp:                                Predicates on Numbers.
-* mismatch:                              Searching Sequences.
-* mod*:                                  Numerical Functions.
-* multiple-value-bind:                   Multiple Values.
-* multiple-value-setq:                   Multiple Values.
-* nbutlast:                              List Functions.
-* nintersection:                         Lists as Sets.
+                                                              (line  14)
+* mismatch:                              Searching Sequences. (line  35)
+* mod*:                                  Numerical Functions. (line  81)
+* multiple-value-bind:                   Multiple Values.     (line  18)
+* multiple-value-setq:                   Multiple Values.     (line  25)
+* nbutlast:                              List Functions.      (line  52)
+* nintersection:                         Lists as Sets.       (line  63)
 * notany:                                Mapping over Sequences.
+                                                              (line  76)
 * notevery:                              Mapping over Sequences.
-* nset-difference:                       Lists as Sets.
-* nset-exclusive-or:                     Lists as Sets.
+                                                              (line  82)
+* nset-difference:                       Lists as Sets.       (line  72)
+* nset-exclusive-or:                     Lists as Sets.       (line  81)
 * nsublis:                               Substitution of Expressions.
+                                                              (line  37)
 * nsubst:                                Substitution of Expressions.
+                                                              (line  24)
 * nsubst-if:                             Substitution of Expressions.
+                                                              (line  27)
 * nsubst-if-not:                         Substitution of Expressions.
-* nsubstitute:                           Sequence Functions.
-* nsubstitute-if:                        Sequence Functions.
-* nsubstitute-if-not:                    Sequence Functions.
-* nunion:                                Lists as Sets.
+                                                              (line  27)
+* nsubstitute:                           Sequence Functions.  (line 119)
+* nsubstitute-if:                        Sequence Functions.  (line 123)
+* nsubstitute-if-not:                    Sequence Functions.  (line 123)
+* nunion:                                Lists as Sets.       (line  54)
 * oddp:                                  Predicates on Numbers.
-* pairlis:                               Association Lists.
+                                                              (line  18)
+* pairlis:                               Association Lists.   (line  40)
 * plusp:                                 Predicates on Numbers.
-* pop:                                   Modify Macros.
-* position:                              Searching Sequences.
-* position-if:                           Searching Sequences.
-* position-if-not:                       Searching Sequences.
-* proclaim:                              Declarations.
-* progv:                                 Dynamic Bindings.
-* psetf:                                 Modify Macros.
-* psetq:                                 Assignment.
-* push:                                  Modify Macros.
-* pushnew:                               Modify Macros.
-* random*:                               Random Numbers.
-* random-state-p:                        Random Numbers.
-* rassoc:                                Association Lists.
-* rassoc*:                               Association Lists.
-* rassoc-if:                             Association Lists.
-* rassoc-if-not:                         Association Lists.
+                                                              (line  10)
+* pop:                                   Modify Macros.       (line  50)
+* position:                              Searching Sequences. (line  20)
+* position-if:                           Searching Sequences. (line  30)
+* position-if-not:                       Searching Sequences. (line  30)
+* proclaim:                              Declarations.        (line  22)
+* progv:                                 Dynamic Bindings.    (line  11)
+* psetf:                                 Modify Macros.       (line  11)
+* psetq:                                 Assignment.          (line  10)
+* push:                                  Modify Macros.       (line  56)
+* pushnew:                               Modify Macros.       (line  61)
+* random*:                               Random Numbers.      (line  12)
+* random-state-p:                        Random Numbers.      (line  52)
+* rassoc:                                Association Lists.   (line  26)
+* rassoc*:                               Association Lists.   (line  21)
+* rassoc-if:                             Association Lists.   (line  31)
+* rassoc-if-not:                         Association Lists.   (line  31)
 * reduce:                                Mapping over Sequences.
-* rem*:                                  Numerical Functions.
-* remf:                                  Property Lists.
-* remove:                                Sequence Functions.
-* remove*:                               Sequence Functions.
-* remove-duplicates:                     Sequence Functions.
-* remove-if:                             Sequence Functions.
-* remove-if-not:                         Sequence Functions.
-* remq:                                  Sequence Functions.
-* replace:                               Sequence Functions.
-* rest:                                  List Functions.
-* return:                                Blocks and Exits.
-* return-from:                           Blocks and Exits.
-* rotatef:                               Modify Macros.
-* round*:                                Numerical Functions.
-* search:                                Searching Sequences.
-* set-difference:                        Lists as Sets.
-* set-exclusive-or:                      Lists as Sets.
-* setf:                                  Basic Setf.
-* shiftf:                                Modify Macros.
+                                                              (line  89)
+* rem*:                                  Numerical Functions. (line  85)
+* remf:                                  Property Lists.      (line  43)
+* remove:                                Sequence Functions.  (line  86)
+* remove*:                               Sequence Functions.  (line  52)
+* remove-duplicates:                     Sequence Functions.  (line  97)
+* remove-if:                             Sequence Functions.  (line  77)
+* remove-if-not:                         Sequence Functions.  (line  77)
+* remq:                                  Sequence Functions.  (line  91)
+* replace:                               Sequence Functions.  (line  39)
+* rest:                                  List Functions.      (line  22)
+* return:                                Blocks and Exits.    (line  58)
+* return-from:                           Blocks and Exits.    (line  52)
+* rotatef:                               Modify Macros.       (line  82)
+* round*:                                Numerical Functions. (line  74)
+* search:                                Searching Sequences. (line  54)
+* set-difference:                        Lists as Sets.       (line  68)
+* set-exclusive-or:                      Lists as Sets.       (line  76)
+* setf:                                  Basic Setf.          (line  10)
+* shiftf:                                Modify Macros.       (line  67)
 * some:                                  Mapping over Sequences.
-* sort*:                                 Sorting Sequences.
-* stable-sort:                           Sorting Sequences.
+                                                              (line  62)
+* sort*:                                 Sorting Sequences.   (line   7)
+* stable-sort:                           Sorting Sequences.   (line  30)
 * sublis:                                Substitution of Expressions.
-* subseq:                                Sequence Functions.
-* subsetp:                               Lists as Sets.
+                                                              (line  31)
+* subseq:                                Sequence Functions.  (line  10)
+* subsetp:                               Lists as Sets.       (line  85)
 * subst:                                 Substitution of Expressions.
+                                                              (line  11)
 * subst-if:                              Substitution of Expressions.
+                                                              (line  27)
 * subst-if-not:                          Substitution of Expressions.
-* substitute:                            Sequence Functions.
-* substitute-if:                         Sequence Functions.
-* substitute-if-not:                     Sequence Functions.
-* symbol-macrolet:                       Macro Bindings.
-* tailp:                                 Lists as Sets.
-* the:                                   Declarations.
-* tree-equal:                            List Functions.
-* truncate*:                             Numerical Functions.
-* typecase:                              Conditionals.
-* typep:                                 Type Predicates.
-* union:                                 Lists as Sets.
-* unless:                                Conditionals.
-* when:                                  Conditionals.
+                                                              (line  27)
+* substitute:                            Sequence Functions.  (line 112)
+* substitute-if:                         Sequence Functions.  (line 123)
+* substitute-if-not:                     Sequence Functions.  (line 123)
+* symbol-macrolet:                       Macro Bindings.      (line  21)
+* tailp:                                 Lists as Sets.       (line  32)
+* the:                                   Declarations.        (line  48)
+* tree-equal:                            List Functions.      (line  88)
+* truncate*:                             Numerical Functions. (line  67)
+* typecase:                              Conditionals.        (line  63)
+* typep:                                 Type Predicates.     (line   9)
+* union:                                 Lists as Sets.       (line  44)
+* unless:                                Conditionals.        (line  20)
+* when:                                  Conditionals.        (line  10)
 
 \1f
 File: cl.info,  Node: Variable Index,  Prev: Function Index,  Up: Top
@@ -5044,88 +5071,99 @@ File: cl.info,  Node: Variable Index,  Prev: Function Index,  Up: Top
 Variable Index
 **************
 
+\0\b[index\0\b]
 * Menu:
 
-* *gensym-counter*:                      Creating Symbols.
-* *random-state*:                        Random Numbers.
+* *gensym-counter*:                      Creating Symbols.     (line 21)
+* *random-state*:                        Random Numbers.       (line 21)
 * float-epsilon:                         Implementation Parameters.
+                                                               (line 73)
 * float-negative-epsilon:                Implementation Parameters.
+                                                               (line 79)
 * least-negative-float:                  Implementation Parameters.
+                                                               (line 65)
 * least-negative-normalized-float:       Implementation Parameters.
+                                                               (line 69)
 * least-positive-float:                  Implementation Parameters.
+                                                               (line 52)
 * least-positive-normalized-float:       Implementation Parameters.
+                                                               (line 57)
 * most-negative-fixnum:                  Implementation Parameters.
+                                                               (line 13)
 * most-negative-float:                   Implementation Parameters.
+                                                               (line 48)
 * most-positive-fixnum:                  Implementation Parameters.
+                                                               (line  9)
 * most-positive-float:                   Implementation Parameters.
+                                                               (line 42)
 
 
 \1f
 Tag Table:
 Node: Top\7f1164
-Node: Overview\7f2716
-Node: Usage\7f4995
-Node: Organization\7f5645
-Node: Installation\7f7468
-Node: Naming Conventions\7f8621
-Node: Program Structure\7f10748
-Node: Argument Lists\7f11216
-Node: Time of Evaluation\7f20999
-Node: Function Aliases\7f26979
-Node: Predicates\7f27563
-Node: Type Predicates\7f27883
-Node: Equality Predicates\7f32925
-Node: Control Structure\7f35701
-Node: Assignment\7f36505
-Node: Generalized Variables\7f37746
-Node: Basic Setf\7f39053
-Node: Modify Macros\7f46305
-Node: Customizing Setf\7f53514
-Node: Variable Bindings\7f60803
-Node: Dynamic Bindings\7f61384
-Node: Lexical Bindings\7f62274
-Node: Function Bindings\7f66378
-Node: Macro Bindings\7f68765
-Node: Conditionals\7f71688
-Node: Blocks and Exits\7f74771
-Node: Iteration\7f77827
-Node: Loop Facility\7f83300
-Node: Loop Basics\7f84227
-Node: Loop Examples\7f86827
-Node: For Clauses\7f89086
-Node: Iteration Clauses\7f100963
-Node: Accumulation Clauses\7f102804
-Node: Other Clauses\7f105148
-Node: Multiple Values\7f111217
-Node: Macros\7f113110
-Node: Declarations\7f116328
-Node: Symbols\7f124814
-Node: Property Lists\7f125095
-Node: Creating Symbols\7f127286
-Node: Numbers\7f129364
-Node: Predicates on Numbers\7f129844
-Node: Numerical Functions\7f130873
-Node: Random Numbers\7f135100
-Node: Implementation Parameters\7f137809
-Node: Sequences\7f141381
-Node: Sequence Basics\7f142054
-Node: Mapping over Sequences\7f145632
-Node: Sequence Functions\7f151486
-Node: Searching Sequences\7f157661
-Node: Sorting Sequences\7f160698
-Node: Lists\7f163246
-Node: List Functions\7f163671
-Node: Substitution of Expressions\7f167934
-Node: Lists as Sets\7f169820
-Node: Association Lists\7f173882
-Node: Hash Tables\7f175585
-Node: Structures\7f175805
-Node: Assertions\7f190588
-Node: Efficiency Concerns\7f193511
-Node: Common Lisp Compatibility\7f199838
-Node: Old CL Compatibility\7f202994
-Node: Porting Common Lisp\7f207377
-Node: Function Index\7f218388
-Node: Variable Index\7f229537
+Node: Overview\7f2720
+Node: Usage\7f5003
+Node: Organization\7f5661
+Node: Installation\7f7492
+Node: Naming Conventions\7f8653
+Node: Program Structure\7f10788
+Node: Argument Lists\7f11260
+Node: Time of Evaluation\7f21050
+Node: Function Aliases\7f27041
+Node: Predicates\7f27634
+Node: Type Predicates\7f27958
+Node: Equality Predicates\7f33011
+Node: Control Structure\7f35797
+Node: Assignment\7f36605
+Node: Generalized Variables\7f37855
+Node: Basic Setf\7f39170
+Node: Modify Macros\7f46435
+Node: Customizing Setf\7f53668
+Node: Variable Bindings\7f60974
+Node: Dynamic Bindings\7f61563
+Node: Lexical Bindings\7f62466
+Node: Function Bindings\7f66584
+Node: Macro Bindings\7f68985
+Node: Conditionals\7f71912
+Node: Blocks and Exits\7f75009
+Node: Iteration\7f78076
+Node: Loop Facility\7f83564
+Node: Loop Basics\7f84499
+Node: Loop Examples\7f87112
+Node: For Clauses\7f89383
+Node: Iteration Clauses\7f101272
+Node: Accumulation Clauses\7f103125
+Node: Other Clauses\7f105481
+Node: Multiple Values\7f111562
+Node: Macros\7f113465
+Node: Declarations\7f116690
+Node: Symbols\7f125185
+Node: Property Lists\7f125470
+Node: Creating Symbols\7f127671
+Node: Numbers\7f129760
+Node: Predicates on Numbers\7f130244
+Node: Numerical Functions\7f131286
+Node: Random Numbers\7f135532
+Node: Implementation Parameters\7f138253
+Node: Sequences\7f141844
+Node: Sequence Basics\7f142523
+Node: Mapping over Sequences\7f146111
+Node: Sequence Functions\7f151987
+Node: Searching Sequences\7f158185
+Node: Sorting Sequences\7f161237
+Node: Lists\7f163798
+Node: List Functions\7f164229
+Node: Substitution of Expressions\7f168515
+Node: Lists as Sets\7f170415
+Node: Association Lists\7f174500
+Node: Hash Tables\7f176218
+Node: Structures\7f176444
+Node: Assertions\7f191159
+Node: Efficiency Concerns\7f194091
+Node: Common Lisp Compatibility\7f200465
+Node: Old CL Compatibility\7f203643
+Node: Porting Common Lisp\7f208056
+Node: Function Index\7f219079
+Node: Variable Index\7f234539
 \1f
 End Tag Table
index 62ed588..e5e5875 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/custom.info, produced by makeinfo version 4.6 from
+This is ../info/custom.info, produced by makeinfo version 4.8 from
 custom.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -58,7 +58,7 @@ Declaring Groups
 
 Use `defgroup' to declare new customization groups.
 
- - Function: defgroup symbol members doc [keyword value]...
+ -- Function: defgroup symbol members doc [keyword value]...
      Declare SYMBOL as a customization group containing MEMBERS.
      SYMBOL does not need to be quoted.
 
@@ -89,7 +89,7 @@ Declaring Variables
 
 Use `defcustom' to declare user editable variables.
 
- - Function: defcustom symbol value doc [keyword value]...
+ -- Function: defcustom symbol value doc [keyword value]...
      Declare SYMBOL as a customizable variable that defaults to VALUE.
      Neither SYMBOL nor VALUE needs to be quoted.  If SYMBOL is not
      already bound, initialize it to VALUE.
@@ -155,13 +155,13 @@ default value, `saved-value' for a value saved by the user, and
 `variable-documentation' for the documentation string.
 
    Use `custom-add-option' to specify that a specific function is
-useful as an member of a hook.
+useful as a member of a hook.
 
- - Function: custom-add-option symbol option
+ -- Function: custom-add-option symbol option
      To the variable SYMBOL add OPTION.
 
      If SYMBOL is a hook variable, OPTION should be a hook member.  For
-     other types variables, the effect is undefined."
+     other types of variables, the effect is undefined."
 
 \1f
 File: custom.info,  Node: Declaring Faces,  Next: Usage for Package Authors,  Prev: Declaring Variables,  Up: Top
@@ -171,7 +171,7 @@ Declaring Faces
 
 Faces are declared with `defface'.
 
- - Function: defface face spec doc [keyword value]...
+ -- Function: defface face spec doc [keyword value]...
      Declare FACE as a customizable face that defaults to SPEC.  FACE
      does not need to be quoted.
 
@@ -237,22 +237,22 @@ Utilities
 
 These utilities can come in handy when adding customization support.
 
- - Widget: custom-manual
+ -- Widget: custom-manual
      Widget type for specifying the info manual entry for a
      customization option.  It takes one argument, an info address.
 
- - Function: custom-add-to-group group member widget
+ -- Function: custom-add-to-group group member widget
      To existing GROUP add a new MEMBER of type WIDGET, If there
      already is an entry for that member, overwrite it.
 
- - Function: custom-add-link symbol widget
+ -- Function: custom-add-link symbol widget
      To the custom option SYMBOL add the link WIDGET.
 
- - Function: custom-add-load symbol load
+ -- Function: custom-add-load symbol load
      To the custom option SYMBOL add the dependency LOAD.  LOAD should
      be either a library file name, or a feature name.
 
- - Function: customize-menu-create symbol &optional name
+ -- Function: customize-menu-create symbol &optional name
      Create menu for customization group SYMBOL.  If optional NAME is
      given, use that as the name of the menu.  Otherwise the menu will
      be named `Customize'.  The menu is in a format applicable to
@@ -397,11 +397,11 @@ Wishlist
 Tag Table:
 Node: Top\7f204
 Node: Declaring Groups\7f1622
-Node: Declaring Variables\7f2720
-Node: Declaring Faces\7f5809
-Node: Usage for Package Authors\7f7504
-Node: Utilities\7f8280
-Node: The Init File\7f9361
-Node: Wishlist\7f10388
+Node: Declaring Variables\7f2721
+Node: Declaring Faces\7f5814
+Node: Usage for Package Authors\7f7510
+Node: Utilities\7f8286
+Node: The Init File\7f9372
+Node: Wishlist\7f10399
 \1f
 End Tag Table
index ac1d26b..14137b7 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/emodules.info, produced by makeinfo version 4.6 from
+This is ../info/emodules.info, produced by makeinfo version 4.8 from
 emodules.texi.
 
    This file documents the module loading technology of XEmacs.
@@ -72,8 +72,8 @@ Defining Functions
 \1f
 File: emodules.info,  Node: Introduction,  Next: Anatomy of a Module,  Prev: Top,  Up: Top
 
-Introduction
-************
+1 Introduction
+**************
 
 XEmacs is a powerful, extensible editor.  The traditional way of
 extending the functionality of XEmacs is to use its built-in Lisp
@@ -156,8 +156,8 @@ done.
 \1f
 File: emodules.info,  Node: Anatomy of a Module,  Next: Using ellcc,  Prev: Introduction,  Up: Top
 
-Anatomy of a Module
-*******************
+2 Anatomy of a Module
+*********************
 
 Each dynamically loadable XEmacs extension (hereafter referred to as a
 module) has a certain compulsory format, and must contain several
@@ -176,8 +176,8 @@ sample.  The source for this sample can be found in the file
 \1f
 File: emodules.info,  Node: Required Header File,  Next: Required Functions,  Prev: Anatomy of a Module,  Up: Anatomy of a Module
 
-Required Header File
-====================
+2.1 Required Header File
+========================
 
 Every module must include the file `<emodules.h>'.  This will include
 several other XEmacs internal header files, and will set up certain
@@ -225,8 +225,8 @@ files included are:
 \1f
 File: emodules.info,  Node: Required Functions,  Next: Required Variables,  Prev: Required Header File,  Up: Anatomy of a Module
 
-Required Functions
-==================
+2.2 Required Functions
+======================
 
 Every module requires several initialization functions.  It is the
 responsibility of these functions to load in any dependent modules, and
@@ -277,8 +277,8 @@ place-holder, not an actual function name.
 \1f
 File: emodules.info,  Node: Required Variables,  Next: Loading other Modules,  Prev: Required Functions,  Up: Anatomy of a Module
 
-Required Variables
-==================
+2.3 Required Variables
+======================
 
 Not only does a module need to declare the initialization functions
 mentioned above, it is also required to provide certain variables which
@@ -331,8 +331,8 @@ discussed here simply for the sake of completeness.
 \1f
 File: emodules.info,  Node: Loading other Modules,  Prev: Required Variables,  Up: Anatomy of a Module
 
-Loading other Modules
-=====================
+2.4 Loading other Modules
+=========================
 
 During the loading of a module, it is the responsibility of the function
 `modules_of_module' to load in any modules which the current module
@@ -387,8 +387,8 @@ and Lisp variables accesses.
 \1f
 File: emodules.info,  Node: Using ellcc,  Next: Defining Functions,  Prev: Anatomy of a Module,  Up: Top
 
-Using `ellcc'
-*************
+3 Using `ellcc'
+***************
 
 Before discussing the anatomy of a module in greater detail, you should
 be aware of the steps required in order to correctly compile and link a
@@ -425,8 +425,8 @@ messages to be displayed on the standard output.
 \1f
 File: emodules.info,  Node: Compile Mode,  Next: Initialization Mode,  Prev: Using ellcc,  Up: Using ellcc
 
-Compile Mode
-============
+3.1 Compile Mode
+================
 
 By default, `ellcc' is in "compile" mode.  This means that it assumes
 that all of the command line arguments are C compiler arguments, and
@@ -446,7 +446,7 @@ and messages that your C compiler does.
 some appropriate place something similar to:
 
      CC=ellcc --mode=compile
-     
+
      .c.o:
          $(CC) $(CFLAGS) -c $<
 
@@ -459,8 +459,8 @@ below for details).
 \1f
 File: emodules.info,  Node: Initialization Mode,  Next: Link Mode,  Prev: Compile Mode,  Up: Using ellcc
 
-Initialization Mode
-===================
+3.2 Initialization Mode
+=======================
 
 XEmacs uses a rather bizarre way of documenting variables and
 functions.  Rather than have the documentation for compiled functions
@@ -522,28 +522,28 @@ required to populate the `docs_of_module' function.  Below is a sample
      LD=ellcc --mode=link
      MODINIT=ellcc --mode=init
      CFLAGS=-O2 -DSOME_STUFF
-     
+
      .c.o:
          $(CC) $(CFLAGS) -c $<
-     
+
      MODNAME=sample
      MODVER=1.0.0
      MODTITLE="Small sample module"
-     
+
      SRCS=modfile1.c modfile2.c modfile3.c
      OBJS=$(SRCS:.c=.o)
-     
+
      all: sample.ell
      clean:
          rm -f $(OBJS) sample_init.o sample.ell
-     
+
      install: all
          mkdir `ellcc --mod-location`/mymods > /dev/null
          cp sample.ell `ellcc --mod-location`/mymods/sample.ell
-     
+
      sample.ell: $(OBJS) sample_init.o
          $(LD) --mod-output=$ $(OBJS) sample_init.o
-     
+
      sample_init.o: sample_init.c
      sample_init.c: $(SRCS)
          $(MODINIT) --mod-name=$(MODNAME) --mod-version=$(MODVER) \
@@ -567,8 +567,8 @@ of these extensions, although `.ell' is the preferred extension.
 \1f
 File: emodules.info,  Node: Link Mode,  Next: Other ellcc options,  Prev: Initialization Mode,  Up: Using ellcc
 
-Link Mode
-=========
+3.3 Link Mode
+=============
 
 Once all of your source code files have been compiled (including the
 generated init file) you need to link them all together to create the
@@ -591,8 +591,8 @@ invoked the linker correctly.
 \1f
 File: emodules.info,  Node: Other ellcc options,  Next: Environment Variables,  Prev: Link Mode,  Up: Using ellcc
 
-Other `ellcc' options
-=====================
+3.4 Other `ellcc' options
+=========================
 
 Aside from the three main `ellcc' modes described above, `ellcc' can
 accept several other options.  These are typically used in a `Makefile'
@@ -659,8 +659,8 @@ variables.  Here is the complete list of options that `ellcc' accepts.
 \1f
 File: emodules.info,  Node: Environment Variables,  Prev: Other ellcc options,  Up: Using ellcc
 
-Environment Variables
-=====================
+3.5 Environment Variables
+=========================
 
 During its normal operation, `ellcc' uses the compiler and linker flags
 that were determined at the time XEmacs was configured.  In certain
@@ -706,8 +706,8 @@ recognizes.
 \1f
 File: emodules.info,  Node: Defining Functions,  Next: Defining Variables,  Prev: Using ellcc,  Up: Top
 
-Defining Functions
-******************
+4 Defining Functions
+********************
 
 One of the main reasons you would ever write a module is to provide one
 or more "functions" for the user or the editor to use.  The term
@@ -746,8 +746,8 @@ It is all taken care of in the `docs_of_module' function created by
 \1f
 File: emodules.info,  Node: Using DEFUN,  Next: Declaring Functions,  Prev: Defining Functions,  Up: Defining Functions
 
-Using `DEFUN'
-=============
+4.1 Using `DEFUN'
+=================
 
 Although the full syntax of a function declaration is discussed in the
 XEmacs internals manual in greater depth, what follows is a brief
@@ -756,16 +756,16 @@ module.  This is done using the `DEFUN' macro.  Here is a small example:
 
      DEFUN ("my-function", Fmy_function, 1, 1, "FFile name: ", /*
      Sample Emacs primitive function.
-     
+
      The specified FILE is frobnicated before it is fnozzled.
      */
          (file))
      {
        char *filename;
-     
+
        if (NILP(file))
          return Qnil;
-     
+
        filename = (char *)XSTRING_DATA(file);
        frob(filename);
        return Qt;
@@ -789,8 +789,8 @@ argument names, if any.
 \1f
 File: emodules.info,  Node: Declaring Functions,  Prev: Using DEFUN,  Up: Defining Functions
 
-Declaring Functions
-===================
+4.2 Declaring Functions
+=======================
 
 Simply writing the code for a function is not enough to make it
 available to the Lisp reader.  You have to, during module
@@ -820,8 +820,8 @@ XEmacs internals manual for more details.
 \1f
 File: emodules.info,  Node: Defining Variables,  Next: Index,  Prev: Defining Functions,  Up: Top
 
-Defining Variables
-******************
+5 Defining Variables
+********************
 
 Rarely will you write a module that only contains functions.  It is
 common to also provide variables which can be used to control the
@@ -856,20 +856,20 @@ a prudent thing to do.
 
      Lisp_Object Vsample_string;
      int sample_boolean;
-     
+
      void
      vars_of_module()
      {
        DEFVAR_LISP ("sample-string", &Vsample_string /*
      This is a sample string, declared in a module.
-     
+
      Nothing magical about it.
      */);
-     
+
        DEFVAR_BOOL("sample-boolean", &sample_boolean /*
      *Sample user-settable boolean.
      */);
-     
+
        sample_boolean = 0;
        Vsample_string = build_string("My string");
      }
@@ -880,93 +880,105 @@ File: emodules.info,  Node: Index,  Prev: Defining Variables,  Up: Top
 Index
 *****
 
+\0\b[index\0\b]
 * Menu:
 
-* anatomy:                               Anatomy of a Module.
-* compiler:                              Introduction.
-* compiling:                             Compile Mode.
-* config.h:                              Required Header File.
-* defining functions:                    Defining Functions.
-* defining objects:                      Defining Variables.
-* defining variables:                    Defining Variables.
-* DEFSUBR:                               Declaring Functions.
-* DEFUN:                                 Using DEFUN.
-* DEFVAR_BOOL:                           Defining Variables.
-* DEFVAR_INT:                            Defining Variables.
-* DEFVAR_LISP:                           Defining Variables.
+* anatomy:                               Anatomy of a Module.  (line  6)
+* compiler:                              Introduction.         (line 39)
+* compiling:                             Compile Mode.         (line  6)
+* config.h:                              Required Header File. (line  6)
+* defining functions:                    Defining Functions.   (line  6)
+* defining objects:                      Defining Variables.   (line  6)
+* defining variables:                    Defining Variables.   (line  6)
+* DEFSUBR:                               Declaring Functions.  (line  6)
+* DEFUN:                                 Using DEFUN.          (line  6)
+* DEFVAR_BOOL:                           Defining Variables.   (line  6)
+* DEFVAR_INT:                            Defining Variables.   (line  6)
+* DEFVAR_LISP:                           Defining Variables.   (line  6)
 * dependencies:                          Loading other Modules.
-* DLL:                                   Introduction.
-* docs_of_module:                        Required Functions.
-* documentation <1>:                     Initialization Mode.
-* documentation:                         Introduction.
-* DSO:                                   Introduction.
+                                                               (line  6)
+* DLL:                                   Introduction.         (line 25)
+* docs_of_module:                        Required Functions.   (line 47)
+* documentation <1>:                     Initialization Mode.  (line  6)
+* documentation:                         Introduction.         (line 69)
+* DSO:                                   Introduction.         (line 25)
 * ELLCC:                                 Environment Variables.
-* ellcc <1>:                             Using ellcc.
-* ellcc:                                 Introduction.
+                                                               (line 14)
+* ellcc <1>:                             Using ellcc.          (line  6)
+* ellcc:                                 Introduction.         (line 39)
 * ELLCFLAGS:                             Environment Variables.
+                                                               (line 22)
 * ELLDLLFLAGS:                           Environment Variables.
+                                                               (line 32)
 * ELLLD:                                 Environment Variables.
+                                                               (line 18)
 * ELLLDFLAGS:                            Environment Variables.
+                                                               (line 27)
 * ELLMAKEDOC:                            Environment Variables.
+                                                               (line 42)
 * ELLPICFLAGS:                           Environment Variables.
-* Emacs Modules:                         Introduction.
-* emodules.h:                            Required Header File.
+                                                               (line 36)
+* Emacs Modules:                         Introduction.         (line 25)
+* emodules.h:                            Required Header File. (line  6)
 * emodules_load:                         Loading other Modules.
+                                                               (line  6)
 * environment variables:                 Environment Variables.
-* format, module:                        Anatomy of a Module.
-* functions, declaring:                  Declaring Functions.
-* functions, defining:                   Using DEFUN.
-* functions, Lisp:                       Using DEFUN.
-* functions, required:                   Required Functions.
-* header files:                          Introduction.
-* help:                                  Introduction.
-* include files:                         Required Header File.
-* initialization <1>:                    Initialization Mode.
-* initialization <2>:                    Required Variables.
-* initialization:                        Required Functions.
-* linker:                                Introduction.
-* linking:                               Link Mode.
-* module compiler:                       Using ellcc.
-* module format:                         Anatomy of a Module.
-* module skeleton:                       Anatomy of a Module.
+                                                               (line  6)
+* format, module:                        Anatomy of a Module.  (line  6)
+* functions, declaring:                  Declaring Functions.  (line  6)
+* functions, defining:                   Using DEFUN.          (line  6)
+* functions, Lisp:                       Using DEFUN.          (line  6)
+* functions, required:                   Required Functions.   (line  6)
+* header files:                          Introduction.         (line 51)
+* help:                                  Introduction.         (line 69)
+* include files:                         Required Header File. (line  6)
+* initialization <1>:                    Initialization Mode.  (line  6)
+* initialization <2>:                    Required Variables.   (line  6)
+* initialization:                        Required Functions.   (line  6)
+* linker:                                Introduction.         (line 39)
+* linking:                               Link Mode.            (line  6)
+* module compiler:                       Using ellcc.          (line  6)
+* module format:                         Anatomy of a Module.  (line  6)
+* module skeleton:                       Anatomy of a Module.  (line  6)
 * modules_of_module <1>:                 Loading other Modules.
-* modules_of_module:                     Required Functions.
-* objects, defining:                     Defining Variables.
-* objects, Lisp:                         Defining Variables.
-* paths:                                 Other ellcc options.
-* required functions:                    Required Functions.
-* required header:                       Required Header File.
-* required variables:                    Required Variables.
-* samples:                               Introduction.
-* shared object:                         Introduction.
-* skeleton, module:                      Anatomy of a Module.
-* subrs:                                 Using DEFUN.
-* syms_of_module:                        Required Functions.
-* variables, defining:                   Defining Variables.
-* variables, Lisp:                       Defining Variables.
-* variables, required:                   Required Variables.
-* vars_of_module:                        Required Functions.
+                                                               (line  6)
+* modules_of_module:                     Required Functions.   (line 40)
+* objects, defining:                     Defining Variables.   (line  6)
+* objects, Lisp:                         Defining Variables.   (line  6)
+* paths:                                 Other ellcc options.  (line  6)
+* required functions:                    Required Functions.   (line  6)
+* required header:                       Required Header File. (line  6)
+* required variables:                    Required Variables.   (line  6)
+* samples:                               Introduction.         (line 61)
+* shared object:                         Introduction.         (line 25)
+* skeleton, module:                      Anatomy of a Module.  (line  6)
+* subrs:                                 Using DEFUN.          (line  6)
+* syms_of_module:                        Required Functions.   (line 20)
+* variables, defining:                   Defining Variables.   (line  6)
+* variables, Lisp:                       Defining Variables.   (line  6)
+* variables, required:                   Required Variables.   (line  6)
+* vars_of_module:                        Required Functions.   (line 26)
 
 
 \1f
 Tag Table:
 Node: Top\7f1536
 Node: Introduction\7f2883
-Node: Anatomy of a Module\7f7388
-Node: Required Header File\7f8199
-Node: Required Functions\7f10115
-Node: Required Variables\7f12836
-Node: Loading other Modules\7f15519
-Node: Using ellcc\7f18432
-Node: Compile Mode\7f20223
-Node: Initialization Mode\7f21588
-Node: Link Mode\7f26615
-Node: Other ellcc options\7f27757
-Node: Environment Variables\7f30333
-Node: Defining Functions\7f32022
-Node: Using DEFUN\7f34030
-Node: Declaring Functions\7f35738
-Node: Defining Variables\7f37078
-Node: Index\7f39318
+Node: Anatomy of a Module\7f7392
+Node: Required Header File\7f8207
+Node: Required Functions\7f10131
+Node: Required Variables\7f12860
+Node: Loading other Modules\7f15551
+Node: Using ellcc\7f18472
+Node: Compile Mode\7f20267
+Node: Initialization Mode\7f21635
+Node: Link Mode\7f26635
+Node: Other ellcc options\7f27785
+Node: Environment Variables\7f30369
+Node: Defining Functions\7f32066
+Node: Using DEFUN\7f34078
+Node: Declaring Functions\7f35779
+Node: Defining Variables\7f37127
+Node: Index\7f39351
 \1f
 End Tag Table
index e003b3a..81d6daa 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/external-widget.info, produced by makeinfo version 4.6
+This is ../info/external-widget.info, produced by makeinfo version 4.8
 from external-widget.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -23,8 +23,8 @@ powerful replacement for standard text widgets.
 \1f
 File: external-widget.info,  Node: Using an External Client Widget,  Next: External Client Widget Resource Settings,  Prev: Top,  Up: Top
 
-Using an External Client Widget
-*******************************
+1 Using an External Client Widget
+*********************************
 
 There are three different implementations of the external client widget.
 One is designed for use in Motif applications and is linked with the
@@ -57,8 +57,8 @@ any other frame in Emacs.
 \1f
 File: external-widget.info,  Node: External Client Widget Resource Settings,  Next: Motif-Specific Info About the External Client Widget,  Prev: Using an External Client Widget,  Up: Top
 
-External Client Widget Resource Settings
-****************************************
+2 External Client Widget Resource Settings
+******************************************
 
 The external client widget is a subclass of the Motif widget XmPrimitive
 and thus inherits all its resources.  In addition, the following new
@@ -113,8 +113,8 @@ made by parent or child widgets.
 \1f
 File: external-widget.info,  Node: Motif-Specific Info About the External Client Widget,  Next: External Client Widget Internals,  Prev: External Client Widget Resource Settings,  Up: Top
 
-Motif-Specific Info About the External Client Widget
-****************************************************
+3 Motif-Specific Info About the External Client Widget
+******************************************************
 
 By default, the external client widget has navigation type
 `XmTAB_GROUP'.
@@ -130,8 +130,8 @@ are not seen by Emacs.
 \1f
 File: external-widget.info,  Node: External Client Widget Internals,  Prev: Motif-Specific Info About the External Client Widget,  Up: Top
 
-External Client Widget Internals
-********************************
+4 External Client Widget Internals
+**********************************
 
 The following text is lifted verbatim from Ben Wing's comments in
 `ExternalShell.c'.
@@ -240,8 +240,8 @@ information.
 Tag Table:
 Node: Top\7f232
 Node: Using an External Client Widget\7f699
-Node: External Client Widget Resource Settings\7f2410
-Node: Motif-Specific Info About the External Client Widget\7f5150
-Node: External Client Widget Internals\7f5961
+Node: External Client Widget Resource Settings\7f2414
+Node: Motif-Specific Info About the External Client Widget\7f5158
+Node: External Client Widget Internals\7f5973
 \1f
 End Tag Table
index 47f47a4..7c40a00 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/info.info, produced by makeinfo version 4.6 from
+This is ../info/info.info, produced by makeinfo version 4.8 from
 info.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
@@ -46,8 +46,8 @@ program.  It brings you to a programmed instruction sequence.
 \1f
 File: info.info,  Node: Getting Started,  Next: Advanced Info,  Prev: Top,  Up: Top
 
-Getting Started
-***************
+1 Getting Started
+*****************
 
 This first part of the Info manual describes how to get around inside
 of Info.  The second part of the manual describes various advanced Info
@@ -67,8 +67,8 @@ The third part is about how to generate Info files from Texinfo files.
 \1f
 File: info.info,  Node: Help-Small-Screen,  Next: Help,  Up: Getting Started
 
-Starting Info on a Small Screen
-===============================
+1.1 Starting Info on a Small Screen
+===================================
 
 Since your terminal has an unusually small number of lines on its
 screen, it is necessary to give you special advice at the beginning.
@@ -131,8 +131,8 @@ the Return key afterward-- to get to the normal start of the course.
 \1f
 File: info.info,  Node: Help,  Next: Help-P,  Prev: Help-Small-Screen,  Up: Getting Started
 
-How to use Info
-===============
+1.2 How to use Info
+===================
 
 You are talking to the program Info, for reading documentation.
 
@@ -158,8 +158,8 @@ the quotes and do not type a <RET> afterward.
 \1f
 File: info.info,  Node: Help-P,  Next: Help-^L,  Prev: Help,  Up: Getting Started
 
-Returning to the Previous node
-==============================
+1.3 Returning to the Previous node
+==================================
 
 This node is called `Help-P'.  The `Previous' node, as you see, is
 `Help', which is the one you just came from using the `n' command.
@@ -179,8 +179,8 @@ may make Info skip past an important warning that was coming up.
 \1f
 File: info.info,  Node: Help-^L,  Next: Help-M,  Prev: Help-P,  Up: Getting Started
 
-The Space, Delete, B and ^L commands.
-=====================================
+1.4 The Space, Delete, B and ^L commands.
+=========================================
 
 This node's header tells you that you are now at node `Help-^L', and
 that `p' would get you back to `Help-P'.  The node's title is
@@ -243,8 +243,8 @@ screen, it would be impossible to warn you anyway.
 \1f
 File: info.info,  Node: Help-M,  Next: Help-Adv,  Prev: Help-^L,  Up: Getting Started
 
-Menus
-=====
+1.5 Menus
+=========
 
 Menus and the `m' command
 
@@ -379,8 +379,8 @@ if you want, or else try it (but then please come back to here).
 \1f
 File: info.info,  Node: Help-FOO,  Up: Help-M
 
-The `u' command
----------------
+1.5.1 The `u' command
+---------------------
 
 Congratulations!  This is the node `Help-FOO'.  Unlike the other nodes
 you have seen, this one has an `Up': `Help-M', the node you just came
@@ -398,8 +398,8 @@ you were reading you have to type some <SPC>s.
 \1f
 File: info.info,  Node: Help-Adv,  Next: Help-Q,  Prev: Help-M,  Up: Getting Started
 
-Some advanced Info commands
-===========================
+1.6 Some advanced Info commands
+===============================
 
 The course is almost over, so please stick with it to the end.
 
@@ -462,8 +462,8 @@ Then    type a `Control-g' and see how the `f' gives up.
 \1f
 File: info.info,  Node: Help-Cross,  Up: Help-Adv
 
-The node reached by the cross reference in Info
------------------------------------------------
+1.6.1 The node reached by the cross reference in Info
+-----------------------------------------------------
 
 This is the node reached by the cross reference named `Cross'.
 
@@ -479,8 +479,8 @@ back there.
 \1f
 File: info.info,  Node: Help-Q,  Prev: Help-Adv,  Up: Getting Started
 
-Quitting Info
-=============
+1.7 Quitting Info
+=================
 
 To get out of Info, back to what you were doing before, type `q' for
 "Quit".
@@ -498,8 +498,8 @@ available.
 \1f
 File: info.info,  Node: Advanced Info,  Next: Creating an Info File,  Prev: Getting Started,  Up: Top
 
-Info for Experts
-****************
+2 Info for Experts
+******************
 
 This chapter describes various advanced Info commands, and how to write
 an Info as distinct from a Texinfo file.  (However, in most cases,
@@ -521,8 +521,8 @@ Texinfo: (texinfo)Top.)
 \1f
 File: info.info,  Node: Expert,  Next: Add,  Up: Advanced Info
 
-Advanced Info Commands
-======================
+2.1 Advanced Info Commands
+==========================
 
 `g', `s', `1', - `9', and `e'
 
@@ -576,8 +576,8 @@ the variable `Info-enable-edit' is non-`nil'.
 \1f
 File: info.info,  Node: Add,  Next: Menus,  Prev: Expert,  Up: Advanced Info
 
-Adding a new node to Info
-=========================
+2.2 Adding a new node to Info
+=============================
 
 To add a new topic to the list in the Info directory, you must:
   1. Create some nodes, in some file, to document that topic.
@@ -643,8 +643,8 @@ to help identify the node for the user.
 \1f
 File: info.info,  Node: Menus,  Next: Cross-refs,  Prev: Add,  Up: Advanced Info
 
-How to Create Menus
-===================
+2.3 How to Create Menus
+=======================
 
 Any node in the Info hierarchy may have a "menu"--a list of subnodes.
 The `m' command searches the current node's menu for the topic which it
@@ -698,8 +698,8 @@ rather useless since nobody can ever find out that it exists.
 \1f
 File: info.info,  Node: Cross-refs,  Next: Tags,  Prev: Menus,  Up: Advanced Info
 
-Creating Cross References
-=========================
+2.4 Creating Cross References
+=============================
 
 A cross reference can be placed anywhere in the text, unlike a menu
 item which must go at the front of a line.  A cross reference looks
@@ -717,8 +717,8 @@ exist!
 \1f
 File: info.info,  Node: Tags,  Next: Checking,  Prev: Cross-refs,  Up: Advanced Info
 
-Tag Tables for Info Files
-=========================
+2.5 Tag Tables for Info Files
+=============================
 
 You can speed up the access to nodes of a large Info file by giving it
 a tag table.  Unlike the tag table for a program, the tag table for an
@@ -753,8 +753,8 @@ beginning of the node.
 \1f
 File: info.info,  Node: Checking,  Next: Emacs Info Variables,  Prev: Tags,  Up: Advanced Info
 
-Checking an Info File
-=====================
+2.6 Checking an Info File
+=========================
 
 When creating an Info file, it is easy to forget the name of a node when
 you are making a pointer to it from another node.  If you put in the
@@ -773,8 +773,8 @@ node of the file with Emacs Info mode.
 \1f
 File: info.info,  Node: Emacs Info Variables,  Prev: Checking,  Up: Advanced Info
 
-Emacs Info-mode Variables
-=========================
+2.7 Emacs Info-mode Variables
+=============================
 
 The following variables may modify the behavior of Info-mode in Emacs;
 you may wish to set one or several of these variables interactively, or
@@ -801,8 +801,8 @@ in your `~/.emacs' init file.  *Note Examining and Setting Variables:
 \1f
 File: info.info,  Node: Creating an Info File,  Prev: Advanced Info,  Up: Top
 
-Creating an Info File
-*********************
+3 Creating an Info File
+***********************
 
 *Note Overview of Texinfo: (texinfo)Top, to learn how to write a
 Texinfo file.
@@ -818,23 +818,23 @@ learn how to install an Info file after you have created one.
 Tag Table:
 Node: Top\7f1067
 Node: Getting Started\7f1609
-Node: Help-Small-Screen\7f2354
-Node: Help\7f4100
-Node: Help-P\7f5127
-Node: Help-^L\7f5986
-Node: Help-M\7f8861
-Node: Help-FOO\7f14838
-Node: Help-Adv\7f15574
-Node: Help-Cross\7f18246
-Node: Help-Q\7f18889
-Node: Advanced Info\7f19513
-Node: Expert\7f20488
-Node: Add\7f22999
-Node: Menus\7f26356
-Node: Cross-refs\7f29227
-Node: Tags\7f29926
-Node: Checking\7f31225
-Node: Emacs Info Variables\7f32175
-Node: Creating an Info File\7f33161
+Node: Help-Small-Screen\7f2358
+Node: Help\7f4112
+Node: Help-P\7f5147
+Node: Help-^L\7f6014
+Node: Help-M\7f8897
+Node: Help-FOO\7f14882
+Node: Help-Adv\7f15630
+Node: Help-Cross\7f18310
+Node: Help-Q\7f18965
+Node: Advanced Info\7f19597
+Node: Expert\7f20576
+Node: Add\7f23095
+Node: Menus\7f26460
+Node: Cross-refs\7f29339
+Node: Tags\7f30046
+Node: Checking\7f31353
+Node: Emacs Info Variables\7f32311
+Node: Creating an Info File\7f33305
 \1f
 End Tag Table
index 5ac1c97..98172aa 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.6 from
+This is ../info/internals.info, produced by makeinfo version 4.8 from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -41,156 +41,156 @@ Foundation instead of in the original English.
 \1f
 Indirect:
 internals.info-1: 1789
-internals.info-2: 301402
+internals.info-2: 300999
 \1f
 Tag Table:
 (Indirect)
 Node: Top\7f1789
 Node: A History of Emacs\7f7157
-Node: Through Version 18\7f8679
-Node: Lucid Emacs\7f12097
-Node: GNU Emacs 19\7f16138
-Node: GNU Emacs 20\7f18317
-Node: XEmacs\7f18741
-Node: XEmacs From the Outside\7f25850
-Node: The Lisp Language\7f27614
-Node: XEmacs From the Perspective of Building\7f37154
-Node: XEmacs From the Inside\7f43276
-Node: The XEmacs Object System (Abstractly Speaking)\7f51650
-Node: How Lisp Objects Are Represented in C\7f65733
-Node: Rules When Writing New C Code\7f71819
-Node: A Reader's Guide to XEmacs Coding Conventions\7f72715
-Node: General Coding Rules\7f77555
-Node: Writing Lisp Primitives\7f83378
-Node: Writing Good Comments\7f94538
-Node: Adding Global Lisp Variables\7f98074
-Node: Proper Use of Unsigned Types\7f102002
-Node: Coding for Mule\7f103249
-Node: Character-Related Data Types\7f104225
-Node: Working With Character and Byte Positions\7f107195
-Node: Conversion to and from External Data\7f110957
-Node: General Guidelines for Writing Mule-Aware Code\7f117095
-Node: An Example of Mule-Aware Code\7f119780
-Node: Techniques for XEmacs Developers\7f121758
-Node: Regression Testing XEmacs\7f130591
-Node: A Summary of the Various XEmacs Modules\7f135037
-Node: Low-Level Modules\7f135885
-Node: Basic Lisp Modules\7f143298
-Node: Modules for Standard Editing Operations\7f149892
-Node: Editor-Level Control Flow Modules\7f155780
-Node: Modules for the Basic Displayable Lisp Objects\7f159291
-Node: Modules for other Display-Related Lisp Objects\7f162244
-Node: Modules for the Redisplay Mechanism\7f163919
-Node: Modules for Interfacing with the File System\7f166291
-Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f169989
-Node: Modules for Interfacing with the Operating System\7f176696
-Node: Modules for Interfacing with X Windows\7f184252
-Node: Modules for Internationalization\7f187735
-Node: Modules for Regression Testing\7f190413
-Node: Allocation of Objects in XEmacs Lisp\7f191113
-Node: Introduction to Allocation\7f191634
-Node: Garbage Collection\7f195272
-Node: GCPROing\7f196426
-Node: Garbage Collection - Step by Step\7f203584
-Node: Invocation\7f203976
-Node: garbage_collect_1\7f206944
-Node: mark_object\7f216423
-Node: gc_sweep\7f218232
-Node: sweep_lcrecords_1\7f223293
-Node: compact_string_chars\7f224285
-Node: sweep_strings\7f226462
-Node: sweep_bit_vectors_1\7f227424
-Node: Integers and Characters\7f228097
-Node: Allocation from Frob Blocks\7f228846
-Node: lrecords\7f230447
-Node: Low-level allocation\7f242670
-Node: Cons\7f246774
-Node: Vector\7f247497
-Node: Bit Vector\7f248072
-Node: Symbol\7f248562
-Node: Marker\7f248913
-Node: String\7f249465
-Node: Compiled Function\7f253074
-Node: Dumping\7f253240
-Node: Overview\7f255458
-Node: Data descriptions\7f256009
-Node: Dumping phase\7f258011
-Node: Object inventory\7f258411
-Node: Address allocation\7f261322
-Node: The header\7f262708
-Node: Data dumping\7f263150
-Node: Pointers dumping\7f263808
-Node: Reloading phase\7f265195
-Node: Remaining issues\7f266731
-Node: Events and the Event Loop\7f267689
-Node: Introduction to Events\7f268139
-Node: Main Loop\7f270051
-Node: Specifics of the Event Gathering Mechanism\7f273623
-Node: Specifics About the Emacs Event\7f286073
-Node: The Event Stream Callback Routines\7f286328
-Node: Other Event Loop Functions\7f286573
-Node: Converting Events\7f287710
-Node: Dispatching Events; The Command Builder\7f288316
-Node: Evaluation; Stack Frames; Bindings\7f288548
-Node: Evaluation\7f288890
-Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f295399
-Node: Simple Special Forms\7f297783
-Node: Catch and Throw\7f298563
-Node: Symbols and Variables\7f301138
-Node: Introduction to Symbols\7f301402
-Node: Obarrays\7f302437
-Node: Symbol Values\7f305967
-Node: Buffers and Textual Representation\7f308252
-Node: Introduction to Buffers\7f308910
-Node: The Text in a Buffer\7f311570
-Node: Buffer Lists\7f318716
-Node: Markers and Extents\7f320664
-Node: Bufbytes and Emchars\7f322926
-Node: The Buffer Object\7f323138
-Node: MULE Character Sets and Encodings\7f326613
-Node: Character Sets\7f327672
-Node: Encodings\7f331112
-Node: Japanese EUC (Extended Unix Code)\7f332176
-Node: JIS7\7f332987
-Node: Internal Mule Encodings\7f334334
-Node: Internal String Encoding\7f336162
-Node: Internal Character Encoding\7f338273
-Node: CCL\7f339994
-Node: The Lisp Reader and Compiler\7f346747
-Node: Lstreams\7f346957
-Node: Creating an Lstream\7f347985
-Node: Lstream Types\7f349192
-Node: Lstream Functions\7f349445
-Node: Lstream Methods\7f353011
-Node: Consoles; Devices; Frames; Windows\7f356153
-Node: Introduction to Consoles; Devices; Frames; Windows\7f356468
-Node: Point\7f358955
-Node: Window Hierarchy\7f360231
-Node: The Window Object\7f364680
-Node: The Redisplay Mechanism\7f368114
-Node: Critical Redisplay Sections\7f368903
-Node: Line Start Cache\7f369855
-Node: Redisplay Piece by Piece\7f373088
-Node: Extents\7f375122
-Node: Introduction to Extents\7f375656
-Node: Extent Ordering\7f376779
-Node: Format of the Extent Info\7f378017
-Node: Zero-Length Extents\7f379901
-Node: Mathematics of Extent Ordering\7f381297
-Node: Extent Fragments\7f386052
-Node: Faces\7f387135
-Node: Glyphs\7f387248
-Node: Specifiers\7f393869
-Node: Menus\7f393995
-Node: Subprocesses\7f396250
-Node: Interface to the X Window System\7f398233
-Node: Lucid Widget Library\7f398511
-Node: Generic Widget Interface\7f399799
-Node: Scrollbars\7f403355
-Node: Menubars\7f403498
-Node: Checkboxes and Radio Buttons\7f403641
-Node: Progress Bars\7f403827
-Node: Tab Controls\7f403987
-Node: Index\7f404108
+Node: Through Version 18\7f8683
+Node: Lucid Emacs\7f12109
+Node: GNU Emacs 19\7f16158
+Node: GNU Emacs 20\7f18345
+Node: XEmacs\7f18777
+Node: XEmacs From the Outside\7f25894
+Node: The Lisp Language\7f27662
+Node: XEmacs From the Perspective of Building\7f37206
+Node: XEmacs From the Inside\7f43332
+Node: The XEmacs Object System (Abstractly Speaking)\7f51710
+Node: How Lisp Objects Are Represented in C\7f65799
+Node: Rules When Writing New C Code\7f71884
+Node: A Reader's Guide to XEmacs Coding Conventions\7f72784
+Node: General Coding Rules\7f77632
+Node: Writing Lisp Primitives\7f83463
+Node: Writing Good Comments\7f94611
+Node: Adding Global Lisp Variables\7f98155
+Node: Proper Use of Unsigned Types\7f102091
+Node: Coding for Mule\7f103346
+Node: Character-Related Data Types\7f104330
+Node: Working With Character and Byte Positions\7f107312
+Node: Conversion to and from External Data\7f111086
+Node: General Guidelines for Writing Mule-Aware Code\7f117236
+Node: An Example of Mule-Aware Code\7f119933
+Node: Techniques for XEmacs Developers\7f121918
+Node: Regression Testing XEmacs\7f130925
+Node: A Summary of the Various XEmacs Modules\7f135355
+Node: Low-Level Modules\7f136209
+Node: Basic Lisp Modules\7f143632
+Node: Modules for Standard Editing Operations\7f150236
+Node: Editor-Level Control Flow Modules\7f156134
+Node: Modules for the Basic Displayable Lisp Objects\7f159655
+Node: Modules for other Display-Related Lisp Objects\7f162618
+Node: Modules for the Redisplay Mechanism\7f164303
+Node: Modules for Interfacing with the File System\7f166685
+Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f170393
+Node: Modules for Interfacing with the Operating System\7f178412
+Node: Modules for Interfacing with X Windows\7f185980
+Node: Modules for Internationalization\7f189475
+Node: Modules for Regression Testing\7f192196
+Node: Allocation of Objects in XEmacs Lisp\7f192926
+Node: Introduction to Allocation\7f193453
+Node: Garbage Collection\7f197101
+Node: GCPROing\7f198265
+Node: Garbage Collection - Step by Step\7f205433
+Node: Invocation\7f205835
+Node: garbage_collect_1\7f208817
+Node: mark_object\7f218310
+Node: gc_sweep\7f220133
+Node: sweep_lcrecords_1\7f225208
+Node: compact_string_chars\7f226214
+Node: sweep_strings\7f228405
+Node: sweep_bit_vectors_1\7f229381
+Node: Integers and Characters\7f230068
+Node: Allocation from Frob Blocks\7f230827
+Node: lrecords\7f232438
+Node: Low-level allocation\7f244671
+Node: Cons\7f248785
+Node: Vector\7f249518
+Node: Bit Vector\7f250105
+Node: Symbol\7f250607
+Node: Marker\7f250970
+Node: String\7f251534
+Node: Compiled Function\7f255155
+Node: Dumping\7f255333
+Node: Overview\7f257567
+Node: Data descriptions\7f258128
+Node: Dumping phase\7f260140
+Node: Object inventory\7f260550
+Node: Address allocation\7f263475
+Node: The header\7f264875
+Node: Data dumping\7f265331
+Node: Pointers dumping\7f266003
+Node: Reloading phase\7f267404
+Node: Remaining issues\7f269034
+Node: Events and the Event Loop\7f270002
+Node: Introduction to Events\7f270458
+Node: Main Loop\7f272380
+Node: Specifics of the Event Gathering Mechanism\7f275962
+Node: Specifics About the Emacs Event\7f288423
+Node: The Event Stream Callback Routines\7f288688
+Node: Other Event Loop Functions\7f288943
+Node: Converting Events\7f290090
+Node: Dispatching Events; The Command Builder\7f290706
+Node: Evaluation; Stack Frames; Bindings\7f290948
+Node: Evaluation\7f291296
+Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f297815
+Node: Simple Special Forms\7f300209
+Node: Catch and Throw\7f300999
+Node: Symbols and Variables\7f303584
+Node: Introduction to Symbols\7f303854
+Node: Obarrays\7f304899
+Node: Symbol Values\7f308439
+Node: Buffers and Textual Representation\7f310734
+Node: Introduction to Buffers\7f311398
+Node: The Text in a Buffer\7f314068
+Node: Buffer Lists\7f321224
+Node: Markers and Extents\7f323182
+Node: Bufbytes and Emchars\7f325454
+Node: The Buffer Object\7f325676
+Node: MULE Character Sets and Encodings\7f329161
+Node: Character Sets\7f330226
+Node: Encodings\7f333676
+Node: Japanese EUC (Extended Unix Code)\7f334750
+Node: JIS7\7f335575
+Node: Internal Mule Encodings\7f336926
+Node: Internal String Encoding\7f338764
+Node: Internal Character Encoding\7f340889
+Node: CCL\7f342624
+Node: The Lisp Reader and Compiler\7f349302
+Node: Lstreams\7f349518
+Node: Creating an Lstream\7f350552
+Node: Lstream Types\7f351769
+Node: Lstream Functions\7f352032
+Node: Lstream Methods\7f355623
+Node: Consoles; Devices; Frames; Windows\7f358783
+Node: Introduction to Consoles; Devices; Frames; Windows\7f359104
+Node: Point\7f361601
+Node: Window Hierarchy\7f362887
+Node: The Window Object\7f367346
+Node: The Redisplay Mechanism\7f370790
+Node: Critical Redisplay Sections\7f371585
+Node: Line Start Cache\7f372547
+Node: Redisplay Piece by Piece\7f375790
+Node: Extents\7f377834
+Node: Introduction to Extents\7f378374
+Node: Extent Ordering\7f379507
+Node: Format of the Extent Info\7f380755
+Node: Zero-Length Extents\7f382649
+Node: Mathematics of Extent Ordering\7f384055
+Node: Extent Fragments\7f388820
+Node: Faces\7f389913
+Node: Glyphs\7f390032
+Node: Specifiers\7f396699
+Node: Menus\7f396831
+Node: Subprocesses\7f399092
+Node: Interface to the X Window System\7f401081
+Node: Lucid Widget Library\7f401365
+Node: Generic Widget Interface\7f402663
+Node: Scrollbars\7f406223
+Node: Menubars\7f406380
+Node: Checkboxes and Radio Buttons\7f406537
+Node: Progress Bars\7f406737
+Node: Tab Controls\7f406911
+Node: Index\7f407046
 \1f
 End Tag Table
index 06a85c5..db7c956 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.6 from
+This is ../info/internals.info, produced by makeinfo version 4.8 from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -247,8 +247,8 @@ Extents
 \1f
 File: internals.info,  Node: A History of Emacs,  Next: XEmacs From the Outside,  Prev: Top,  Up: Top
 
-A History of Emacs
-******************
+1 A History of Emacs
+********************
 
 XEmacs is a powerful, customizable text editor and development
 environment.  It began as Lucid Emacs, which was in turn derived from
@@ -278,8 +278,8 @@ language developed at MIT that underlies Emacs.)
 \1f
 File: internals.info,  Node: Through Version 18,  Next: Lucid Emacs,  Up: A History of Emacs
 
-Through Version 18
-==================
+1.1 Through Version 18
+======================
 
 Although the history of the early versions of GNU Emacs is unclear, the
 history is well-known from the middle of 1985.  A time line is:
@@ -390,8 +390,8 @@ history is well-known from the middle of 1985.  A time line is:
 \1f
 File: internals.info,  Node: Lucid Emacs,  Next: GNU Emacs 19,  Prev: Through Version 18,  Up: A History of Emacs
 
-Lucid Emacs
-===========
+1.2 Lucid Emacs
+===============
 
 Lucid Emacs was developed by the (now-defunct) Lucid Inc., a maker of
 C++ and Lisp development environments.  It began when Lucid decided they
@@ -503,8 +503,8 @@ Zawinski, who became "Mr. Lucid Emacs" for many releases.
 \1f
 File: internals.info,  Node: GNU Emacs 19,  Next: GNU Emacs 20,  Prev: Lucid Emacs,  Up: A History of Emacs
 
-GNU Emacs 19
-============
+1.3 GNU Emacs 19
+================
 
 About a year after the initial release of Lucid Emacs, the FSF released
 a beta of their version of Emacs 19 (referred to here as "GNU Emacs").
@@ -577,8 +577,8 @@ working on and using GNU Emacs for a long time (back as far as version
 \1f
 File: internals.info,  Node: GNU Emacs 20,  Next: XEmacs,  Prev: GNU Emacs 19,  Up: A History of Emacs
 
-GNU Emacs 20
-============
+1.4 GNU Emacs 20
+================
 
 On February 2, 1997 work began on GNU Emacs to integrate Mule.  The
 first release was made in September of that year.
@@ -594,8 +594,8 @@ first release was made in September of that year.
 \1f
 File: internals.info,  Node: XEmacs,  Prev: GNU Emacs 20,  Up: A History of Emacs
 
-XEmacs
-======
+1.5 XEmacs
+==========
 
 Around the time that Lucid was developing Energize, Sun Microsystems
 was developing their own development environment (called "SPARCWorks")
@@ -800,8 +800,8 @@ have consistently failed.
 \1f
 File: internals.info,  Node: XEmacs From the Outside,  Next: The Lisp Language,  Prev: A History of Emacs,  Up: Top
 
-XEmacs From the Outside
-***********************
+2 XEmacs From the Outside
+*************************
 
 XEmacs appears to the outside world as an editor, but it is really a
 Lisp environment.  At its heart is a Lisp interpreter; it also
@@ -838,8 +838,8 @@ have to write functions to do those operations in Lisp.
 \1f
 File: internals.info,  Node: The Lisp Language,  Next: XEmacs From the Perspective of Building,  Prev: XEmacs From the Outside,  Up: Top
 
-The Lisp Language
-*****************
+3 The Lisp Language
+*******************
 
 Lisp is a general-purpose language that is higher-level than C and in
 many ways more powerful than C.  Powerful dialects of Lisp such as
@@ -1029,8 +1029,8 @@ inside the real OS.
 \1f
 File: internals.info,  Node: XEmacs From the Perspective of Building,  Next: XEmacs From the Inside,  Prev: The Lisp Language,  Up: Top
 
-XEmacs From the Perspective of Building
-***************************************
+4 XEmacs From the Perspective of Building
+*****************************************
 
 The heart of XEmacs is the Lisp environment, which is written in C.
 This is contained in the `src/' subdirectory.  Underneath `src/' are
@@ -1138,8 +1138,8 @@ as allocation memory in one process, and freeing it in the next.
 \1f
 File: internals.info,  Node: XEmacs From the Inside,  Next: The XEmacs Object System (Abstractly Speaking),  Prev: XEmacs From the Perspective of Building,  Up: Top
 
-XEmacs From the Inside
-**********************
+5 XEmacs From the Inside
+************************
 
 Internally, XEmacs is quite complex, and can be very confusing.  To
 simplify things, it can be useful to think of XEmacs as containing an
@@ -1290,8 +1290,8 @@ change the C code.
 \1f
 File: internals.info,  Node: The XEmacs Object System (Abstractly Speaking),  Next: How Lisp Objects Are Represented in C,  Prev: XEmacs From the Inside,  Up: Top
 
-The XEmacs Object System (Abstractly Speaking)
-**********************************************
+6 The XEmacs Object System (Abstractly Speaking)
+************************************************
 
 At the heart of the Lisp interpreter is its management of objects.
 XEmacs Lisp contains many built-in objects, some of which are simple
@@ -1589,7 +1589,7 @@ character from the GB2312 character set.)
 looking up the string equivalent in the global variable `obarray',
 whose contents should be an obarray.  If no symbol is found, a new
 symbol with the name `"foobar"' is automatically created and added to
-`obarray'; this process is called "interning" the symbol.
+`obarray'; this process is called "interning" the symbol.  
 
      (foo . bar)
 
@@ -1644,8 +1644,8 @@ easily initialized through a read syntax.
 \1f
 File: internals.info,  Node: How Lisp Objects Are Represented in C,  Next: Rules When Writing New C Code,  Prev: The XEmacs Object System (Abstractly Speaking),  Up: Top
 
-How Lisp Objects Are Represented in C
-*************************************
+7 How Lisp Objects Are Represented in C
+***************************************
 
 Lisp objects are represented in C using a 32-bit or 64-bit machine word
 (depending on the processor; i.e. DEC Alphas use 64-bit Lisp objects and
@@ -1654,7 +1654,7 @@ stuffs a pointer together with a tag, as follows:
 
       [ 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 ]
       [ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ]
-     
+
         <---------------------------------------------------------> <->
                  a pointer to a structure, or an integer            tag
 
@@ -1752,8 +1752,8 @@ unless the corresponding configure error checking flag was specified.
 \1f
 File: internals.info,  Node: Rules When Writing New C Code,  Next: Regression Testing XEmacs,  Prev: How Lisp Objects Are Represented in C,  Up: Top
 
-Rules When Writing New C Code
-*****************************
+8 Rules When Writing New C Code
+*******************************
 
 The XEmacs C Code is extremely complex and intricate, and there are many
 rules that are more or less consistently followed throughout the code.
@@ -1776,8 +1776,8 @@ situations, often in code far away from where the actual breakage is.
 \1f
 File: internals.info,  Node: A Reader's Guide to XEmacs Coding Conventions,  Next: General Coding Rules,  Up: Rules When Writing New C Code
 
-A Reader's Guide to XEmacs Coding Conventions
-=============================================
+8.1 A Reader's Guide to XEmacs Coding Conventions
+=================================================
 
 Of course the low-level implementation language of XEmacs is C, but much
 of that uses the Lisp engine to do its work.  However, because the code
@@ -1863,8 +1863,8 @@ must be Lisp_Objects.  (This is hidden in the `DEFUN' macro.)
 \1f
 File: internals.info,  Node: General Coding Rules,  Next: Writing Lisp Primitives,  Prev: A Reader's Guide to XEmacs Coding Conventions,  Up: Rules When Writing New C Code
 
-General Coding Rules
-====================
+8.2 General Coding Rules
+========================
 
 The C code is actually written in a dialect of C called "Clean C",
 meaning that it can be compiled, mostly warning-free, with either a C or
@@ -1974,8 +1974,8 @@ elements from a lisp list satisfying some predicate.
 \1f
 File: internals.info,  Node: Writing Lisp Primitives,  Next: Writing Good Comments,  Prev: General Coding Rules,  Up: Rules When Writing New C Code
 
-Writing Lisp Primitives
-=======================
+8.3 Writing Lisp Primitives
+===========================
 
 Lisp primitives are Lisp functions implemented in C.  The details of
 interfacing the C function so that Lisp can call it are handled by a few
@@ -1997,14 +1997,14 @@ appearance.)
        /* This function can GC */
        REGISTER Lisp_Object val, form, tail;
        struct gcpro gcpro1;
-     
+
        val = Feval (XCAR (args));
-     
+
        GCPRO1 (val);
-     
+
        LIST_LOOP_3 (form, XCDR (args), tail)
          Feval (form);
-     
+
        UNGCPRO;
        return val;
      }
@@ -2205,8 +2205,8 @@ contains the definitions for important macros and functions.
 \1f
 File: internals.info,  Node: Writing Good Comments,  Next: Adding Global Lisp Variables,  Prev: Writing Lisp Primitives,  Up: Rules When Writing New C Code
 
-Writing Good Comments
-=====================
+8.4 Writing Good Comments
+=========================
 
 Comments are a lifeline for programmers trying to understand tricky
 code.  In general, the less obvious it is what you are doing, the more
@@ -2268,8 +2268,8 @@ as incorrect.
 \1f
 File: internals.info,  Node: Adding Global Lisp Variables,  Next: Proper Use of Unsigned Types,  Prev: Writing Good Comments,  Up: Rules When Writing New C Code
 
-Adding Global Lisp Variables
-============================
+8.5 Adding Global Lisp Variables
+================================
 
 Global variables whose names begin with `Q' are constants whose value
 is a symbol of a particular name.  The name of the variable should be
@@ -2336,8 +2336,8 @@ your variable got overwritten.
 \1f
 File: internals.info,  Node: Proper Use of Unsigned Types,  Next: Coding for Mule,  Prev: Adding Global Lisp Variables,  Up: Rules When Writing New C Code
 
-Proper Use of Unsigned Types
-============================
+8.6 Proper Use of Unsigned Types
+================================
 
 Avoid using `unsigned int' and `unsigned long' whenever possible.
 Unsigned types are viral - any arithmetic or comparisons involving
@@ -2365,8 +2365,8 @@ representing non-quantities - e.g. bit-oriented flags and such.
 \1f
 File: internals.info,  Node: Coding for Mule,  Next: Techniques for XEmacs Developers,  Prev: Proper Use of Unsigned Types,  Up: Rules When Writing New C Code
 
-Coding for Mule
-===============
+8.7 Coding for Mule
+===================
 
 Although Mule support is not compiled by default in XEmacs, many people
 are using it, and we consider it crucial that new code works correctly
@@ -2390,8 +2390,8 @@ of code generalization for future I18N work.
 \1f
 File: internals.info,  Node: Character-Related Data Types,  Next: Working With Character and Byte Positions,  Up: Coding for Mule
 
-Character-Related Data Types
-----------------------------
+8.7.1 Character-Related Data Types
+----------------------------------
 
 First, let's review the basic character-related datatypes used by
 XEmacs.  Note that the separate `typedef's are not mandatory in the
@@ -2461,8 +2461,8 @@ glance at the declaration can tell the intended use of the variable.
 \1f
 File: internals.info,  Node: Working With Character and Byte Positions,  Next: Conversion to and from External Data,  Prev: Character-Related Data Types,  Up: Coding for Mule
 
-Working With Character and Byte Positions
------------------------------------------
+8.7.2 Working With Character and Byte Positions
+-----------------------------------------------
 
 Now that we have defined the basic character-related types, we can look
 at the macros and functions designed for work with them and for
@@ -2560,8 +2560,8 @@ about them.
 \1f
 File: internals.info,  Node: Conversion to and from External Data,  Next: General Guidelines for Writing Mule-Aware Code,  Prev: Working With Character and Byte Positions,  Up: Coding for Mule
 
-Conversion to and from External Data
-------------------------------------
+8.7.3 Conversion to and from External Data
+------------------------------------------
 
 When an external function, such as a C library function, returns a
 `char' pointer, you should almost never treat it as `Bufbyte'.  This is
@@ -2703,8 +2703,8 @@ assertion failure if you try.
 \1f
 File: internals.info,  Node: General Guidelines for Writing Mule-Aware Code,  Next: An Example of Mule-Aware Code,  Prev: Conversion to and from External Data,  Up: Coding for Mule
 
-General Guidelines for Writing Mule-Aware Code
-----------------------------------------------
+8.7.4 General Guidelines for Writing Mule-Aware Code
+----------------------------------------------------
 
 This section contains some general guidance on how to write Mule-aware
 code, as well as some pitfalls you should avoid.
@@ -2755,8 +2755,8 @@ _Always convert external data_
 \1f
 File: internals.info,  Node: An Example of Mule-Aware Code,  Prev: General Guidelines for Writing Mule-Aware Code,  Up: Coding for Mule
 
-An Example of Mule-Aware Code
------------------------------
+8.7.5 An Example of Mule-Aware Code
+-----------------------------------
 
 As an example of Mule-aware code, we will analyze the `string'
 function, which conses up a Lisp string from the character arguments it
@@ -2769,7 +2769,7 @@ receives.  Here is the definition, pasted from `alloc.c':
      {
        Bufbyte *storage = alloca_array (Bufbyte, nargs * MAX_EMCHAR_LEN);
        Bufbyte *p = storage;
-     
+
        for (; nargs; nargs--, args++)
          {
            Lisp_Object lisp_char = *args;
@@ -2803,8 +2803,8 @@ writing new Mule-aware code.
 \1f
 File: internals.info,  Node: Techniques for XEmacs Developers,  Prev: Coding for Mule,  Up: Rules When Writing New C Code
 
-Techniques for XEmacs Developers
-================================
+8.8 Techniques for XEmacs Developers
+====================================
 
 To make a purified XEmacs, do: `make puremacs'.  To make a quantified
 XEmacs, do: `make quantmacs'.
@@ -2852,7 +2852,7 @@ buffer fragmentation into extents).
 
    * Speed up syntax highlighting.  It was suggested that "maybe moving
      some of the syntax highlighting capabilities into C would make a
-     difference."  Wrong idea, I think.  When processing one large file
+     difference."  Wrong idea, I think.  When processing one 400kB file
      a particular low-level routine was being called 40 _million_ times
      simply for _one_ call to `newline-and-indent'.  Syntax
      highlighting needs to be rewritten to use a reliable, fast parser,
@@ -2984,6 +2984,9 @@ reliable, please improve the test suite in `tests/automated'.
      directory _at compile time_.  The non-obvious C rule is that
      `#include "..."' means to search for the included file in the same
      directory as the including file, _not_ in the current directory.
+     Normally this is not a problem but when building with `--srcdir',
+     `make' will search the `VPATH' for you, while the C compiler knows
+     nothing about it.
 
    * Header files should _not_ include `<config.h>' and `"lisp.h"'.  It
      is the responsibility of the `.c' files that use it to do so.
@@ -3013,8 +3016,8 @@ type named FOO:
 \1f
 File: internals.info,  Node: Regression Testing XEmacs,  Next: A Summary of the Various XEmacs Modules,  Prev: Rules When Writing New C Code,  Up: Top
 
-Regression Testing XEmacs
-*************************
+9 Regression Testing XEmacs
+***************************
 
 The source directory `tests/automated' contains XEmacs' automated test
 suite.  The usual way of running all the tests is running `make check'
@@ -3057,7 +3060,7 @@ comparisons from `case-tests.el'.
          (Assert (eq (search-forward "Test buffer" nil t) 12))
          (goto-char (point-min))
          (Assert (eq (search-forward "Test Buffer" nil t) 12))
-     
+
          (setq case-fold-search nil)
          (goto-char (point-min))
          (Assert (not (search-forward "test buffer" nil t)))
@@ -3083,10 +3086,10 @@ hashtable.  Here's an example from `syntax-tests.el':
 
      ;; Test forward-comment at buffer boundaries
      (with-temp-buffer
-     
+
        ;; try to use exactly what you need: featurep, boundp, fboundp
        (if (not (fboundp 'c-mode))
-     
+
            ;; We should provide a standard function for this boilerplate,
            ;; probably called `Skip-Test' -- check for that API with C-h f
            (let* ((reason "c-mode unavailable")
@@ -3094,7 +3097,7 @@ hashtable.  Here's an example from `syntax-tests.el':
        (puthash reason (if (null count) 1 (1+ count))
                 skipped-test-reasons)
        (Print-Skip "comment and parse-partial-sexp tests" reason))
-     
+
          ;; and here's the test code
          (c-mode)
          (insert "// comment\n")
@@ -3116,8 +3119,8 @@ silently omit the test.
 \1f
 File: internals.info,  Node: A Summary of the Various XEmacs Modules,  Next: Allocation of Objects in XEmacs Lisp,  Prev: Regression Testing XEmacs,  Up: Top
 
-A Summary of the Various XEmacs Modules
-***************************************
+10 A Summary of the Various XEmacs Modules
+******************************************
 
 This is accurate as of XEmacs 20.0.
 
@@ -3140,8 +3143,8 @@ This is accurate as of XEmacs 20.0.
 \1f
 File: internals.info,  Node: Low-Level Modules,  Next: Basic Lisp Modules,  Up: A Summary of the Various XEmacs Modules
 
-Low-Level Modules
-=================
+10.1 Low-Level Modules
+======================
 
      config.h
 
@@ -3315,8 +3318,8 @@ checks provided by the `--error-check-*' configuration options.
 \1f
 File: internals.info,  Node: Basic Lisp Modules,  Next: Modules for Standard Editing Operations,  Prev: Low-Level Modules,  Up: A Summary of the Various XEmacs Modules
 
-Basic Lisp Modules
-==================
+10.2 Basic Lisp Modules
+=======================
 
      lisp-disunion.h
      lisp-union.h
@@ -3457,8 +3460,8 @@ structures.  Note that the byte-code _compiler_ is written in Lisp.
 \1f
 File: internals.info,  Node: Modules for Standard Editing Operations,  Next: Editor-Level Control Flow Modules,  Prev: Basic Lisp Modules,  Up: A Summary of the Various XEmacs Modules
 
-Modules for Standard Editing Operations
-=======================================
+10.3 Modules for Standard Editing Operations
+============================================
 
      buffer.c
      buffer.h
@@ -3594,8 +3597,8 @@ changes.  Most of this could be implemented in Lisp.
 \1f
 File: internals.info,  Node: Editor-Level Control Flow Modules,  Next: Modules for the Basic Displayable Lisp Objects,  Prev: Modules for Standard Editing Operations,  Up: A Summary of the Various XEmacs Modules
 
-Editor-Level Control Flow Modules
-=================================
+10.4 Editor-Level Control Flow Modules
+======================================
 
      event-Xt.c
      event-msw.c
@@ -3678,8 +3681,8 @@ before the echo-area Lisp code is loaded).
 \1f
 File: internals.info,  Node: Modules for the Basic Displayable Lisp Objects,  Next: Modules for other Display-Related Lisp Objects,  Prev: Editor-Level Control Flow Modules,  Up: A Summary of the Various XEmacs Modules
 
-Modules for the Basic Displayable Lisp Objects
-==============================================
+10.5 Modules for the Basic Displayable Lisp Objects
+===================================================
 
      console-msw.c
      console-msw.h
@@ -3754,8 +3757,8 @@ scrollbars.
 \1f
 File: internals.info,  Node: Modules for other Display-Related Lisp Objects,  Next: Modules for the Redisplay Mechanism,  Prev: Modules for the Basic Displayable Lisp Objects,  Up: A Summary of the Various XEmacs Modules
 
-Modules for other Display-Related Lisp Objects
-==============================================
+10.6 Modules for other Display-Related Lisp Objects
+===================================================
 
      faces.c
      faces.h
@@ -3821,8 +3824,8 @@ These files were removed due to Unisys patent infringement concerns.
 \1f
 File: internals.info,  Node: Modules for the Redisplay Mechanism,  Next: Modules for Interfacing with the File System,  Prev: Modules for other Display-Related Lisp Objects,  Up: A Summary of the Various XEmacs Modules
 
-Modules for the Redisplay Mechanism
-===================================
+10.7 Modules for the Redisplay Mechanism
+========================================
 
      redisplay-output.c
      redisplay-msw.c
@@ -3882,8 +3885,8 @@ should probably be merged into `redisplay-tty.c'.
 \1f
 File: internals.info,  Node: Modules for Interfacing with the File System,  Next: Modules for Other Aspects of the Lisp Interpreter and Object System,  Prev: Modules for the Redisplay Mechanism,  Up: A Summary of the Various XEmacs Modules
 
-Modules for Interfacing with the File System
-============================================
+10.8 Modules for Interfacing with the File System
+=================================================
 
      lstream.c
      lstream.h
@@ -3961,8 +3964,8 @@ a broken implementation.
 \1f
 File: internals.info,  Node: Modules for Other Aspects of the Lisp Interpreter and Object System,  Next: Modules for Interfacing with the Operating System,  Prev: Modules for Interfacing with the File System,  Up: A Summary of the Various XEmacs Modules
 
-Modules for Other Aspects of the Lisp Interpreter and Object System
-===================================================================
+10.9 Modules for Other Aspects of the Lisp Interpreter and Object System
+========================================================================
 
      elhash.c
      elhash.h
@@ -4040,6 +4043,33 @@ character of end sequence" _flag_.  The "comment-end" class allows the
 scanner to determine that no second character is needed to terminate
 the comment.
 
+   There used to be a syntax class `Sextword'.  A character of
+`Sextword' class is a word-constituent but a word boundary may exist
+between two such characters.  Ken'ichi HANDA <handa@etl.go.jp> explains
+the purpose of the Sextword syntax category:
+
+     Japanese words are not separated by spaces, which makes finding
+     word boundaries very difficult.  Theoretically it's impossible
+     without using natural language processing techniques.  But, by
+     defining pseudo-words as below (much simplified for letting you
+     understand it easily) for Japanese, we can have a convenient
+     forward-word function for Japanese.
+
+          A Japanese word is a sequence of characters that consists of
+          zero or more Kanji characters followed by zero or more
+          Hiragana characters.
+
+     Then, the problem is that now we can't say that a sequence of
+     word-constituents makes up a word.  For instance, both Hiragana "A"
+     and Kanji "KAN" are word-constituents but the sequence of these two
+     letters can't be a single word.
+
+     So, we introduced Sextword for Japanese letters.
+
+   There seems to have been some controversy about this category, as it
+has been removed, readded, and removed again.  Currently neither GNU
+Emacs (21.3.99) nor XEmacs (21.5.17) seems to use it.
+
      casefiddle.c
 
    This module implements various Lisp primitives for upcasing,
@@ -4103,8 +4133,8 @@ used for various security applications on the Internet.
 \1f
 File: internals.info,  Node: Modules for Interfacing with the Operating System,  Next: Modules for Interfacing with X Windows,  Prev: Modules for Other Aspects of the Lisp Interpreter and Object System,  Up: A Summary of the Various XEmacs Modules
 
-Modules for Interfacing with the Operating System
-=================================================
+10.10 Modules for Interfacing with the Operating System
+=======================================================
 
      callproc.c
      process.c
@@ -4285,8 +4315,8 @@ versions of AIX prior to 4.1.
 \1f
 File: internals.info,  Node: Modules for Interfacing with X Windows,  Next: Modules for Internationalization,  Prev: Modules for Interfacing with the Operating System,  Up: A Summary of the Various XEmacs Modules
 
-Modules for Interfacing with X Windows
-======================================
+10.11 Modules for Interfacing with X Windows
+============================================
 
      Emacs.ad.h
 
@@ -4392,8 +4422,8 @@ compiled into libraries that are then linked into your application.
 \1f
 File: internals.info,  Node: Modules for Internationalization,  Next: Modules for Regression Testing,  Prev: Modules for Interfacing with X Windows,  Up: A Summary of the Various XEmacs Modules
 
-Modules for Internationalization
-================================
+10.12 Modules for Internationalization
+======================================
 
      mule-canna.c
      mule-ccl.c
@@ -4442,8 +4472,8 @@ specify conversions of names of files and directories.  The standard C
 I/O functions like `open()' are wrapped so that conversion occurs
 automatically.
 
-   `mule.c' provides a few miscellaneous things that should probably be
-elsewhere.
+   `mule.c' contains a few miscellaneous things.  It currently seems to
+be unused and probably should be removed.
 
      intl.c
 
@@ -4459,8 +4489,8 @@ Asian-language support, and is not currently used.
 \1f
 File: internals.info,  Node: Modules for Regression Testing,  Prev: Modules for Internationalization,  Up: A Summary of the Various XEmacs Modules
 
-Modules for Regression Testing
-==============================
+10.13 Modules for Regression Testing
+====================================
 
      test-harness.el
      base64-tests.el
@@ -4477,6 +4507,7 @@ Modules for Regression Testing
      regexp-tests.el
      symbol-tests.el
      syntax-tests.el
+     tag-tests.el
 
    `test-harness.el' defines the macros `Assert', `Check-Error',
 `Check-Error-Message', and `Check-Message'.  The other files are test
@@ -4485,8 +4516,8 @@ files, testing various XEmacs modules.
 \1f
 File: internals.info,  Node: Allocation of Objects in XEmacs Lisp,  Next: Dumping,  Prev: A Summary of the Various XEmacs Modules,  Up: Top
 
-Allocation of Objects in XEmacs Lisp
-************************************
+11 Allocation of Objects in XEmacs Lisp
+***************************************
 
 * Menu:
 
@@ -4509,8 +4540,8 @@ Allocation of Objects in XEmacs Lisp
 \1f
 File: internals.info,  Node: Introduction to Allocation,  Next: Garbage Collection,  Up: Allocation of Objects in XEmacs Lisp
 
-Introduction to Allocation
-==========================
+11.1 Introduction to Allocation
+===============================
 
 Emacs Lisp, like all Lisps, has garbage collection.  This means that
 the programmer never has to explicitly free (destroy) an object; it
@@ -4577,8 +4608,8 @@ directly-tagged fashion.
 \1f
 File: internals.info,  Node: Garbage Collection,  Next: GCPROing,  Prev: Introduction to Allocation,  Up: Allocation of Objects in XEmacs Lisp
 
-Garbage Collection
-==================
+11.2 Garbage Collection
+=======================
 
 Garbage collection is simple in theory but tricky to implement.  Emacs
 Lisp uses the oldest garbage collection method, called "mark and
@@ -4600,8 +4631,8 @@ collection (according to `gc-cons-threshold').
 \1f
 File: internals.info,  Node: GCPROing,  Next: Garbage Collection - Step by Step,  Prev: Garbage Collection,  Up: Allocation of Objects in XEmacs Lisp
 
-`GCPRO'ing
-==========
+11.3 `GCPRO'ing
+===============
 
 `GCPRO'ing is one of the ugliest and trickiest parts of Emacs
 internals.  The basic idea is that whenever garbage collection occurs,
@@ -4741,8 +4772,8 @@ happen at any point at all, such as during object allocation.
 \1f
 File: internals.info,  Node: Garbage Collection - Step by Step,  Next: Integers and Characters,  Prev: GCPROing,  Up: Allocation of Objects in XEmacs Lisp
 
-Garbage Collection - Step by Step
-=================================
+11.4 Garbage Collection - Step by Step
+======================================
 
 * Menu:
 
@@ -4758,8 +4789,8 @@ Garbage Collection - Step by Step
 \1f
 File: internals.info,  Node: Invocation,  Next: garbage_collect_1,  Up: Garbage Collection - Step by Step
 
-Invocation
-----------
+11.4.1 Invocation
+-----------------
 
 The first thing that anyone should know about garbage collection is:
 when and how the garbage collector is invoked. One might think that this
@@ -4814,8 +4845,8 @@ after pressing Ctrl-g.
 \1f
 File: internals.info,  Node: garbage_collect_1,  Next: mark_object,  Prev: Invocation,  Up: Garbage Collection - Step by Step
 
-`garbage_collect_1'
--------------------
+11.4.2 `garbage_collect_1'
+--------------------------
 
 We can now describe exactly what happens after the invocation takes
 place.
@@ -4994,8 +5025,8 @@ place.
 \1f
 File: internals.info,  Node: mark_object,  Next: gc_sweep,  Prev: garbage_collect_1,  Up: Garbage Collection - Step by Step
 
-`mark_object'
--------------
+11.4.3 `mark_object'
+--------------------
 
 The first thing that is checked while marking an object is whether the
 object is a real Lisp object `Lisp_Type_Record' or just an integer or a
@@ -5030,8 +5061,8 @@ object.
 \1f
 File: internals.info,  Node: gc_sweep,  Next: sweep_lcrecords_1,  Prev: mark_object,  Up: Garbage Collection - Step by Step
 
-`gc_sweep'
-----------
+11.4.4 `gc_sweep'
+-----------------
 
 The job of this function is to free all unmarked records from memory. As
 we know, there are different types of objects implemented and managed,
@@ -5121,8 +5152,8 @@ set to the state it had before handling this block.
 \1f
 File: internals.info,  Node: sweep_lcrecords_1,  Next: compact_string_chars,  Prev: gc_sweep,  Up: Garbage Collection - Step by Step
 
-`sweep_lcrecords_1'
--------------------
+11.4.5 `sweep_lcrecords_1'
+--------------------------
 
 After nullifying the complete lcrecord statistics, we go over all
 lcrecords two separate times. They are all chained together in a list
@@ -5143,8 +5174,8 @@ by calling `tick_lcrecord_stats' with the right arguments,
 \1f
 File: internals.info,  Node: compact_string_chars,  Next: sweep_strings,  Prev: sweep_lcrecords_1,  Up: Garbage Collection - Step by Step
 
-`compact_string_chars'
-----------------------
+11.4.6 `compact_string_chars'
+-----------------------------
 
 The purpose of this function is to compact all the data parts of the
 strings that are held in so-called `string_chars_block', i.e. the
@@ -5187,8 +5218,8 @@ know that they just carry garbage) are explicitly `xfree'd.
 \1f
 File: internals.info,  Node: sweep_strings,  Next: sweep_bit_vectors_1,  Prev: compact_string_chars,  Up: Garbage Collection - Step by Step
 
-`sweep_strings'
----------------
+11.4.7 `sweep_strings'
+----------------------
 
 The sweeping for the fixed sized string objects is essentially exactly
 the same as it is for all other fixed size types. As before, the freeing
@@ -5210,8 +5241,8 @@ explicitly.
 \1f
 File: internals.info,  Node: sweep_bit_vectors_1,  Prev: sweep_strings,  Up: Garbage Collection - Step by Step
 
-`sweep_bit_vectors_1'
----------------------
+11.4.8 `sweep_bit_vectors_1'
+----------------------------
 
 Bit vectors are also one of the rare types that are `malloc'ed
 individually. Consequently, while sweeping, all further needless bit
@@ -5225,8 +5256,8 @@ garbage collector's output purposes is updated.
 \1f
 File: internals.info,  Node: Integers and Characters,  Next: Allocation from Frob Blocks,  Prev: Garbage Collection - Step by Step,  Up: Allocation of Objects in XEmacs Lisp
 
-Integers and Characters
-=======================
+11.5 Integers and Characters
+============================
 
 Integer and character Lisp objects are created from integers using the
 macros `XSETINT()' and `XSETCHAR()' or the equivalent functions
@@ -5242,8 +5273,8 @@ will at least be correct.
 \1f
 File: internals.info,  Node: Allocation from Frob Blocks,  Next: lrecords,  Prev: Integers and Characters,  Up: Allocation of Objects in XEmacs Lisp
 
-Allocation from Frob Blocks
-===========================
+11.6 Allocation from Frob Blocks
+================================
 
 The uninitialized memory required by a `Lisp_Object' of a particular
 type is allocated using `ALLOCATE_FIXED_TYPE()'.  This only occurs
@@ -5269,8 +5300,8 @@ more defensive but less efficient and is used for error-checking.)
 \1f
 File: internals.info,  Node: lrecords,  Next: Low-level allocation,  Prev: Allocation from Frob Blocks,  Up: Allocation of Objects in XEmacs Lisp
 
-lrecords
-========
+11.7 lrecords
+=============
 
 [see `lrecord.h']
 
@@ -5501,8 +5532,8 @@ into the enum's code at compile-time.
 \1f
 File: internals.info,  Node: Low-level allocation,  Next: Cons,  Prev: lrecords,  Up: Allocation of Objects in XEmacs Lisp
 
-Low-level allocation
-====================
+11.8 Low-level allocation
+=========================
 
 Memory that you want to allocate directly should be allocated using
 `xmalloc()' rather than `malloc()'.  This implements error-checking on
@@ -5573,8 +5604,8 @@ is reached.
 \1f
 File: internals.info,  Node: Cons,  Next: Vector,  Prev: Low-level allocation,  Up: Allocation of Objects in XEmacs Lisp
 
-Cons
-====
+11.9 Cons
+=========
 
 Conses are allocated in standard frob blocks.  The only thing to note
 is that conses can be explicitly freed using `free_cons()' and
@@ -5589,8 +5620,8 @@ BADLY BURNED, and it has happened before.
 \1f
 File: internals.info,  Node: Vector,  Next: Bit Vector,  Prev: Cons,  Up: Allocation of Objects in XEmacs Lisp
 
-Vector
-======
+11.10 Vector
+============
 
 As mentioned above, each vector is `malloc()'ed individually, and all
 are threaded through the variable `all_vectors'.  Vectors are marked
@@ -5603,8 +5634,8 @@ with the right size, however, and access to any element through the
 \1f
 File: internals.info,  Node: Bit Vector,  Next: Symbol,  Prev: Vector,  Up: Allocation of Objects in XEmacs Lisp
 
-Bit Vector
-==========
+11.11 Bit Vector
+================
 
 Bit vectors work exactly like vectors, except for more complicated code
 to access an individual bit, and except for the fact that bit vectors
@@ -5615,8 +5646,8 @@ field in bit vector Lisp words is "lrecord" rather than "vector".)
 \1f
 File: internals.info,  Node: Symbol,  Next: Marker,  Prev: Bit Vector,  Up: Allocation of Objects in XEmacs Lisp
 
-Symbol
-======
+11.12 Symbol
+============
 
 Symbols are also allocated in frob blocks.  Symbols in the awful
 horrible obarray structure are chained through their `next' field.
@@ -5627,8 +5658,8 @@ if necessary.
 \1f
 File: internals.info,  Node: Marker,  Next: String,  Prev: Symbol,  Up: Allocation of Objects in XEmacs Lisp
 
-Marker
-======
+11.13 Marker
+============
 
 Markers are allocated in frob blocks, as usual.  They are kept in a
 buffer unordered, but in a doubly-linked list so that they can easily
@@ -5641,8 +5672,8 @@ removed from a buffer in the finalize stage, in
 \1f
 File: internals.info,  Node: String,  Next: Compiled Function,  Prev: Marker,  Up: Allocation of Objects in XEmacs Lisp
 
-String
-======
+11.14 String
+============
 
 As mentioned above, strings are a special case.  A string is logically
 two parts, a fixed-size object (containing the length, property list,
@@ -5705,19 +5736,19 @@ handles it correctly.
 \1f
 File: internals.info,  Node: Compiled Function,  Prev: String,  Up: Allocation of Objects in XEmacs Lisp
 
-Compiled Function
-=================
+11.15 Compiled Function
+=======================
 
 Not yet documented.
 
 \1f
 File: internals.info,  Node: Dumping,  Next: Events and the Event Loop,  Prev: Allocation of Objects in XEmacs Lisp,  Up: Top
 
-Dumping
-*******
+12 Dumping
+**********
 
-What is dumping and its justification
-=====================================
+12.1 What is dumping and its justification
+==========================================
 
 The C code of XEmacs is just a Lisp engine with a lot of built-in
 primitives useful for writing an editor.  The editor itself is written
@@ -5763,8 +5794,8 @@ without any system-specific hacks.
 \1f
 File: internals.info,  Node: Overview,  Next: Data descriptions,  Up: Dumping
 
-Overview
-========
+12.2 Overview
+=============
 
 The portable dumping system has to:
 
@@ -5779,8 +5810,8 @@ The portable dumping system has to:
 \1f
 File: internals.info,  Node: Data descriptions,  Next: Dumping phase,  Prev: Overview,  Up: Dumping
 
-Data descriptions
-=================
+12.3 Data descriptions
+======================
 
 The more complex task of the dumper is to be able to write lisp objects
 (lrecords) and C structs to disk and reload them at a different address,
@@ -5820,8 +5851,8 @@ field and a pointer to an associated array of lrecord_description.
 \1f
 File: internals.info,  Node: Dumping phase,  Next: Reloading phase,  Prev: Data descriptions,  Up: Dumping
 
-Dumping phase
-=============
+12.4 Dumping phase
+==================
 
 Dumping is done by calling the function pdump() (in dumper.c) which is
 invoked from Fdump_emacs (in emacs.c).  This function performs a number
@@ -5838,8 +5869,8 @@ of tasks.
 \1f
 File: internals.info,  Node: Object inventory,  Next: Address allocation,  Up: Dumping phase
 
-Object inventory
-----------------
+12.4.1 Object inventory
+-----------------------
 
 The first task is to build the list of the objects to dump.  This
 includes:
@@ -5913,8 +5944,8 @@ not yet been a problem.
 \1f
 File: internals.info,  Node: Address allocation,  Next: The header,  Prev: Object inventory,  Up: Dumping phase
 
-Address allocation
-------------------
+12.4.2 Address allocation
+-------------------------
 
 The next step is to allocate the offsets of each of the objects in the
 final dump file.  This is done by `pdump_allocate_offset()' which is
@@ -5947,8 +5978,8 @@ alignments happy).
 \1f
 File: internals.info,  Node: The header,  Next: Data dumping,  Prev: Address allocation,  Up: Dumping phase
 
-The header
-----------
+12.4.3 The header
+-----------------
 
 The next step creates the file and writes a header with a signature and
 some random information in it.  The `reloc_address' field, which
@@ -5959,8 +5990,8 @@ offset for the objects).
 \1f
 File: internals.info,  Node: Data dumping,  Next: Pointers dumping,  Prev: The header,  Up: Dumping phase
 
-Data dumping
-------------
+12.4.4 Data dumping
+-------------------
 
 The data is dumped in the same order as the addresses were allocated by
 `pdump_dump_data()', called from `pdump_scan_by_alignment()'.  This
@@ -5974,8 +6005,8 @@ in step Address Allocation.
 \1f
 File: internals.info,  Node: Pointers dumping,  Prev: Data dumping,  Up: Dumping phase
 
-Pointers dumping
-----------------
+12.4.5 Pointers dumping
+-----------------------
 
 A bunch of tables needed to reassign properly the global pointers are
 then written.  They are:
@@ -6011,11 +6042,11 @@ enumeration.
 \1f
 File: internals.info,  Node: Reloading phase,  Next: Remaining issues,  Prev: Dumping phase,  Up: Dumping
 
-Reloading phase
-===============
+12.5 Reloading phase
+====================
 
-File loading
-------------
+12.5.1 File loading
+-------------------
 
 The file is mmap'ed in memory (which ensures a PAGESIZE alignment, at
 least 4096), or if mmap is unavailable or fails, a 256-bytes aligned
@@ -6026,31 +6057,31 @@ malloc is done and the file is loaded.
    The difference between the actual loading address and the
 reloc_address is computed and will be used for all the relocations.
 
-Putting back the pdump_opaques
-------------------------------
+12.5.2 Putting back the pdump_opaques
+-------------------------------------
 
 The memory contents are restored in the obvious and trivial way.
 
-Putting back the pdump_root_struct_ptrs
----------------------------------------
+12.5.3 Putting back the pdump_root_struct_ptrs
+----------------------------------------------
 
 The variables pointed to by pdump_root_struct_ptrs in the dump phase are
 reset to the right relocated object addresses.
 
-Object relocation
------------------
+12.5.4 Object relocation
+------------------------
 
 All the objects are relocated using their description and their offset
 by `pdump_reloc_one'.  This step is unnecessary if the reloc_address is
 equal to the file loading address.
 
-Putting back the pdump_root_objects and pdump_weak_object_chains
-----------------------------------------------------------------
+12.5.5 Putting back the pdump_root_objects and pdump_weak_object_chains
+-----------------------------------------------------------------------
 
 Same as Putting back the pdump_root_struct_ptrs.
 
-Reorganize the hash tables
---------------------------
+12.5.6 Reorganize the hash tables
+---------------------------------
 
 Since some of the hash values in the lisp hash tables are
 address-dependent, their layout is now wrong.  So we go through each of
@@ -6059,8 +6090,8 @@ them and have them resorted by calling `pdump_reorganize_hash_table'.
 \1f
 File: internals.info,  Node: Remaining issues,  Prev: Reloading phase,  Up: Dumping
 
-Remaining issues
-================
+12.6 Remaining issues
+=====================
 
 The build process will have to start a post-dump xemacs, ask it the
 loading address (which will, hopefully, be always the same between
@@ -6082,8 +6113,8 @@ comes to mind).
 \1f
 File: internals.info,  Node: Events and the Event Loop,  Next: Evaluation; Stack Frames; Bindings,  Prev: Dumping,  Up: Top
 
-Events and the Event Loop
-*************************
+13 Events and the Event Loop
+****************************
 
 * Menu:
 
@@ -6099,8 +6130,8 @@ Events and the Event Loop
 \1f
 File: internals.info,  Node: Introduction to Events,  Next: Main Loop,  Up: Events and the Event Loop
 
-Introduction to Events
-======================
+13.1 Introduction to Events
+===========================
 
 An event is an object that encapsulates information about an
 interesting occurrence in the operating system.  Events are generated
@@ -6138,8 +6169,8 @@ a one-to-one correspondence.
 \1f
 File: internals.info,  Node: Main Loop,  Next: Specifics of the Event Gathering Mechanism,  Prev: Introduction to Events,  Up: Events and the Event Loop
 
-Main Loop
-=========
+13.2 Main Loop
+==============
 
 The "command loop" is the top-level loop that the editor is always
 running.  It loops endlessly, calling `next-event' to retrieve an event
@@ -6204,13 +6235,14 @@ like when it invokes `command_loop_2()'.
 \1f
 File: internals.info,  Node: Specifics of the Event Gathering Mechanism,  Next: Specifics About the Emacs Event,  Prev: Main Loop,  Up: Events and the Event Loop
 
-Specifics of the Event Gathering Mechanism
-==========================================
+13.3 Specifics of the Event Gathering Mechanism
+===============================================
 
 Here is an approximate diagram of the collection processes at work in
 XEmacs, under TTY's (TTY's are simpler than X so we'll look at this
 first):
 
+
       asynch.      asynch.    asynch.   asynch.             [Collectors in
      kbd events  kbd events   process   process                the OS]
            |         |         output    output
@@ -6441,20 +6473,20 @@ it's the same as the above diagram):
 \1f
 File: internals.info,  Node: Specifics About the Emacs Event,  Next: The Event Stream Callback Routines,  Prev: Specifics of the Event Gathering Mechanism,  Up: Events and the Event Loop
 
-Specifics About the Emacs Event
-===============================
+13.4 Specifics About the Emacs Event
+====================================
 
 \1f
 File: internals.info,  Node: The Event Stream Callback Routines,  Next: Other Event Loop Functions,  Prev: Specifics About the Emacs Event,  Up: Events and the Event Loop
 
-The Event Stream Callback Routines
-==================================
+13.5 The Event Stream Callback Routines
+=======================================
 
 \1f
 File: internals.info,  Node: Other Event Loop Functions,  Next: Converting Events,  Prev: The Event Stream Callback Routines,  Up: Events and the Event Loop
 
-Other Event Loop Functions
-==========================
+13.6 Other Event Loop Functions
+===============================
 
 `detect_input_pending()' and `input-pending-p' look for input by
 calling `event_stream->event_pending_p' and looking in
@@ -6477,8 +6509,8 @@ With the right kind of input method support, it is possible for
 \1f
 File: internals.info,  Node: Converting Events,  Next: Dispatching Events; The Command Builder,  Prev: Other Event Loop Functions,  Up: Events and the Event Loop
 
-Converting Events
-=================
+13.7 Converting Events
+======================
 
 `character_to_event()', `event_to_character()', `event-to-character',
 and `character-to-event' convert between characters and keypress events
@@ -6490,16 +6522,16 @@ the split-up event representation (keysym plus mod keys).
 \1f
 File: internals.info,  Node: Dispatching Events; The Command Builder,  Prev: Converting Events,  Up: Events and the Event Loop
 
-Dispatching Events; The Command Builder
-=======================================
+13.8 Dispatching Events; The Command Builder
+============================================
 
 Not yet documented.
 
 \1f
 File: internals.info,  Node: Evaluation; Stack Frames; Bindings,  Next: Symbols and Variables,  Prev: Events and the Event Loop,  Up: Top
 
-Evaluation; Stack Frames; Bindings
-**********************************
+14 Evaluation; Stack Frames; Bindings
+*************************************
 
 * Menu:
 
@@ -6511,8 +6543,8 @@ Evaluation; Stack Frames; Bindings
 \1f
 File: internals.info,  Node: Evaluation,  Next: Dynamic Binding; The specbinding Stack; Unwind-Protects,  Up: Evaluation; Stack Frames; Bindings
 
-Evaluation
-==========
+14.1 Evaluation
+===============
 
 `Feval()' evaluates the form (a Lisp object) that is passed to it.
 Note that evaluation is only non-trivial for two types of objects:
@@ -6637,8 +6669,8 @@ uses `Fapply()' while the others use `Ffuncall()' to do the real work.
 \1f
 File: internals.info,  Node: Dynamic Binding; The specbinding Stack; Unwind-Protects,  Next: Simple Special Forms,  Prev: Evaluation,  Up: Evaluation; Stack Frames; Bindings
 
-Dynamic Binding; The specbinding Stack; Unwind-Protects
-=======================================================
+14.2 Dynamic Binding; The specbinding Stack; Unwind-Protects
+============================================================
 
      struct specbinding
      {
@@ -6689,8 +6721,8 @@ three types:
 \1f
 File: internals.info,  Node: Simple Special Forms,  Next: Catch and Throw,  Prev: Dynamic Binding; The specbinding Stack; Unwind-Protects,  Up: Evaluation; Stack Frames; Bindings
 
-Simple Special Forms
-====================
+14.3 Simple Special Forms
+=========================
 
 `or', `and', `if', `cond', `progn', `prog1', `prog2', `setq', `quote',
 `function', `let*', `let', `while'
@@ -6705,72 +6737,3 @@ typically called in real life only in interpreted code, since the byte
 compiler knows how to convert calls to these functions directly into
 byte code.
 
-\1f
-File: internals.info,  Node: Catch and Throw,  Prev: Simple Special Forms,  Up: Evaluation; Stack Frames; Bindings
-
-Catch and Throw
-===============
-
-     struct catchtag
-     {
-       Lisp_Object tag;
-       Lisp_Object val;
-       struct catchtag *next;
-       struct gcpro *gcpro;
-       jmp_buf jmp;
-       struct backtrace *backlist;
-       int lisp_eval_depth;
-       int pdlcount;
-     };
-
-   `catch' is a Lisp function that places a catch around a body of
-code.  A catch is a means of non-local exit from the code.  When a catch
-is created, a tag is specified, and executing a `throw' to this tag
-will exit from the body of code caught with this tag, and its value will
-be the value given in the call to `throw'.  If there is no such call,
-the code will be executed normally.
-
-   Information pertaining to a catch is held in a `struct catchtag',
-which is placed at the head of a linked list pointed to by `catchlist'.
-`internal_catch()' is passed a C function to call (`Fprogn()' when
-Lisp `catch' is called) and arguments to give it, and places a catch
-around the function.  Each `struct catchtag' is held in the stack frame
-of the `internal_catch()' instance that created the catch.
-
-   `internal_catch()' is fairly straightforward.  It stores into the
-`struct catchtag' the tag name and the current values of
-`backtrace_list', `lisp_eval_depth', `gcprolist', and the offset into
-the `specpdl' array, sets a jump point with `_setjmp()' (storing the
-jump point into the `struct catchtag'), and calls the function.
-Control will return to `internal_catch()' either when the function
-exits normally or through a `_longjmp()' to this jump point.  In the
-latter case, `throw' will store the value to be returned into the
-`struct catchtag' before jumping.  When it's done, `internal_catch()'
-removes the `struct catchtag' from the catchlist and returns the proper
-value.
-
-   `Fthrow()' goes up through the catchlist until it finds one with a
-matching tag.  It then calls `unbind_catch()' to restore everything to
-what it was when the appropriate catch was set, stores the return value
-in the `struct catchtag', and jumps (with `_longjmp()') to its jump
-point.
-
-   `unbind_catch()' removes all catches from the catchlist until it
-finds the correct one.  Some of the catches might have been placed for
-error-trapping, and if so, the appropriate entries on the handlerlist
-must be removed (see "errors").  `unbind_catch()' also restores the
-values of `gcprolist', `backtrace_list', and `lisp_eval', and calls
-`unbind_to()' to undo any specbindings created since the catch.
-
-\1f
-File: internals.info,  Node: Symbols and Variables,  Next: Buffers and Textual Representation,  Prev: Evaluation; Stack Frames; Bindings,  Up: Top
-
-Symbols and Variables
-*********************
-
-* Menu:
-
-* Introduction to Symbols::
-* Obarrays::
-* Symbol Values::
-
index 41bd915..7e4c44d 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.6 from
+This is ../info/internals.info, produced by makeinfo version 4.8 from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -39,10 +39,79 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: internals.info,  Node: Catch and Throw,  Prev: Simple Special Forms,  Up: Evaluation; Stack Frames; Bindings
+
+14.4 Catch and Throw
+====================
+
+     struct catchtag
+     {
+       Lisp_Object tag;
+       Lisp_Object val;
+       struct catchtag *next;
+       struct gcpro *gcpro;
+       jmp_buf jmp;
+       struct backtrace *backlist;
+       int lisp_eval_depth;
+       int pdlcount;
+     };
+
+   `catch' is a Lisp function that places a catch around a body of
+code.  A catch is a means of non-local exit from the code.  When a catch
+is created, a tag is specified, and executing a `throw' to this tag
+will exit from the body of code caught with this tag, and its value will
+be the value given in the call to `throw'.  If there is no such call,
+the code will be executed normally.
+
+   Information pertaining to a catch is held in a `struct catchtag',
+which is placed at the head of a linked list pointed to by `catchlist'.
+`internal_catch()' is passed a C function to call (`Fprogn()' when
+Lisp `catch' is called) and arguments to give it, and places a catch
+around the function.  Each `struct catchtag' is held in the stack frame
+of the `internal_catch()' instance that created the catch.
+
+   `internal_catch()' is fairly straightforward.  It stores into the
+`struct catchtag' the tag name and the current values of
+`backtrace_list', `lisp_eval_depth', `gcprolist', and the offset into
+the `specpdl' array, sets a jump point with `_setjmp()' (storing the
+jump point into the `struct catchtag'), and calls the function.
+Control will return to `internal_catch()' either when the function
+exits normally or through a `_longjmp()' to this jump point.  In the
+latter case, `throw' will store the value to be returned into the
+`struct catchtag' before jumping.  When it's done, `internal_catch()'
+removes the `struct catchtag' from the catchlist and returns the proper
+value.
+
+   `Fthrow()' goes up through the catchlist until it finds one with a
+matching tag.  It then calls `unbind_catch()' to restore everything to
+what it was when the appropriate catch was set, stores the return value
+in the `struct catchtag', and jumps (with `_longjmp()') to its jump
+point.
+
+   `unbind_catch()' removes all catches from the catchlist until it
+finds the correct one.  Some of the catches might have been placed for
+error-trapping, and if so, the appropriate entries on the handlerlist
+must be removed (see "errors").  `unbind_catch()' also restores the
+values of `gcprolist', `backtrace_list', and `lisp_eval', and calls
+`unbind_to()' to undo any specbindings created since the catch.
+
+\1f
+File: internals.info,  Node: Symbols and Variables,  Next: Buffers and Textual Representation,  Prev: Evaluation; Stack Frames; Bindings,  Up: Top
+
+15 Symbols and Variables
+************************
+
+* Menu:
+
+* Introduction to Symbols::
+* Obarrays::
+* Symbol Values::
+
+\1f
 File: internals.info,  Node: Introduction to Symbols,  Next: Obarrays,  Up: Symbols and Variables
 
-Introduction to Symbols
-=======================
+15.1 Introduction to Symbols
+============================
 
 A symbol is basically just an object with four fields: a name (a
 string), a value (some Lisp object), a function (some Lisp object), and
@@ -61,8 +130,8 @@ independent of the function and variable namespaces.
 \1f
 File: internals.info,  Node: Obarrays,  Next: Symbol Values,  Prev: Introduction to Symbols,  Up: Symbols and Variables
 
-Obarrays
-========
+15.2 Obarrays
+=============
 
 The identity of symbols with their names is accomplished through a
 structure called an obarray, which is just a poorly-implemented hash
@@ -130,8 +199,8 @@ an obarray.
 \1f
 File: internals.info,  Node: Symbol Values,  Prev: Obarrays,  Up: Symbols and Variables
 
-Symbol Values
-=============
+15.3 Symbol Values
+==================
 
 The value field of a symbol normally contains a Lisp object.  However,
 a symbol can be "unbound", meaning that it logically has no value.
@@ -174,8 +243,8 @@ well-documented in comments in `buffer.c', `symbols.c', and `lisp.h'.
 \1f
 File: internals.info,  Node: Buffers and Textual Representation,  Next: MULE Character Sets and Encodings,  Prev: Symbols and Variables,  Up: Top
 
-Buffers and Textual Representation
-**********************************
+16 Buffers and Textual Representation
+*************************************
 
 * Menu:
 
@@ -189,8 +258,8 @@ Buffers and Textual Representation
 \1f
 File: internals.info,  Node: Introduction to Buffers,  Next: The Text in a Buffer,  Up: Buffers and Textual Representation
 
-Introduction to Buffers
-=======================
+16.1 Introduction to Buffers
+============================
 
 A buffer is logically just a Lisp object that holds some text.  In
 this, it is like a string, but a buffer is optimized for frequent
@@ -242,8 +311,8 @@ on windows.)
 \1f
 File: internals.info,  Node: The Text in a Buffer,  Next: Buffer Lists,  Prev: Introduction to Buffers,  Up: Buffers and Textual Representation
 
-The Text in a Buffer
-====================
+16.2 The Text in a Buffer
+=========================
 
 The text in a buffer consists of a sequence of zero or more characters.
 A "character" is an integer that logically represents a letter,
@@ -380,8 +449,8 @@ possible alternative representations (e.g. EUC-encoded text, etc.).
 \1f
 File: internals.info,  Node: Buffer Lists,  Next: Markers and Extents,  Prev: The Text in a Buffer,  Up: Buffers and Textual Representation
 
-Buffer Lists
-============
+16.3 Buffer Lists
+=================
 
 Recall earlier that buffers are "permanent" objects, i.e.  that they
 remain around until explicitly deleted.  This entails that there is a
@@ -418,8 +487,8 @@ like the symbol operation `gensym'.
 \1f
 File: internals.info,  Node: Markers and Extents,  Next: Bufbytes and Emchars,  Prev: Buffer Lists,  Up: Buffers and Textual Representation
 
-Markers and Extents
-===================
+16.4 Markers and Extents
+========================
 
 Among the things associated with a buffer are things that are logically
 attached to certain buffer positions.  This can be used to keep track
@@ -461,16 +530,16 @@ deleted, and primitives do exist to enumerate the extents in a buffer.
 \1f
 File: internals.info,  Node: Bufbytes and Emchars,  Next: The Buffer Object,  Prev: Markers and Extents,  Up: Buffers and Textual Representation
 
-Bufbytes and Emchars
-====================
+16.5 Bufbytes and Emchars
+=========================
 
 Not yet documented.
 
 \1f
 File: internals.info,  Node: The Buffer Object,  Prev: Bufbytes and Emchars,  Up: Buffers and Textual Representation
 
-The Buffer Object
-=================
+16.6 The Buffer Object
+======================
 
 Buffers contain fields not directly accessible by the Lisp programmer.
 We describe them here, naming them by the names used in the C code.
@@ -564,8 +633,8 @@ Many are accessible indirectly in Lisp programs via Lisp primitives.
 \1f
 File: internals.info,  Node: MULE Character Sets and Encodings,  Next: The Lisp Reader and Compiler,  Prev: Buffers and Textual Representation,  Up: Top
 
-MULE Character Sets and Encodings
-*********************************
+17 MULE Character Sets and Encodings
+************************************
 
 Recall that there are two primary ways that text is represented in
 XEmacs.  The "buffer" representation sees the text as a series of bytes
@@ -589,8 +658,8 @@ representation is that it's compact and is compatible with ASCII.
 \1f
 File: internals.info,  Node: Character Sets,  Next: Encodings,  Up: MULE Character Sets and Encodings
 
-Character Sets
-==============
+17.1 Character Sets
+===================
 
 A character set (or "charset") is an ordered set of characters.  A
 particular character in a charset is indexed using one or more
@@ -667,8 +736,8 @@ character sets as follows:
 \1f
 File: internals.info,  Node: Encodings,  Next: Internal Mule Encodings,  Prev: Character Sets,  Up: MULE Character Sets and Encodings
 
-Encodings
-=========
+17.2 Encodings
+==============
 
 An "encoding" is a way of numerically representing characters from one
 or more character sets.  If an encoding only encompasses one character
@@ -696,8 +765,8 @@ common usage of "byte").
 \1f
 File: internals.info,  Node: Japanese EUC (Extended Unix Code),  Next: JIS7,  Up: Encodings
 
-Japanese EUC (Extended Unix Code)
----------------------------------
+17.2.1 Japanese EUC (Extended Unix Code)
+----------------------------------------
 
 This encompasses the character sets Printing-ASCII, Japanese-JISX0201,
 and Japanese-JISX0208-Kana (half-width katakana, the right half of
@@ -718,8 +787,8 @@ charsets, while Japanese-JISX0208 is a 94x94-character charset.
 \1f
 File: internals.info,  Node: JIS7,  Prev: Japanese EUC (Extended Unix Code),  Up: Encodings
 
-JIS7
-----
+17.2.2 JIS7
+-----------
 
 This encompasses the character sets Printing-ASCII,
 Japanese-JISX0201-Roman (the left half of JISX0201; this character set
@@ -739,8 +808,8 @@ the bytes are to be interpreted.  Special sequences of bytes (called
      Japanese-JISX0201-Roman    PC1
      Japanese-JISX0201-Kana     PC1
      Japanese-JISX0208          PC1 PC2
-     
-     
+
+
      Escape sequence   ASCII equivalent   Meaning
      ---------------   ----------------   -------
      0x1B 0x28 0x4A    ESC ( J            invoke Japanese-JISX0201-Roman
@@ -753,8 +822,8 @@ the bytes are to be interpreted.  Special sequences of bytes (called
 \1f
 File: internals.info,  Node: Internal Mule Encodings,  Next: CCL,  Prev: Encodings,  Up: MULE Character Sets and Encodings
 
-Internal Mule Encodings
-=======================
+17.3 Internal Mule Encodings
+============================
 
 In XEmacs/Mule, each character set is assigned a unique number, called a
 "leading byte".  This is used in the encodings of a character.  Leading
@@ -800,8 +869,8 @@ followed later by the exact details.)
 \1f
 File: internals.info,  Node: Internal String Encoding,  Next: Internal Character Encoding,  Up: Internal Mule Encodings
 
-Internal String Encoding
-------------------------
+17.3.1 Internal String Encoding
+-------------------------------
 
 ASCII characters are encoded using their position code directly.  Other
 characters are encoded using their leading byte followed by their
@@ -846,8 +915,8 @@ encodings must satisfy (2), in order to be unambiguous.)
 \1f
 File: internals.info,  Node: Internal Character Encoding,  Prev: Internal String Encoding,  Up: Internal Mule Encodings
 
-Internal Character Encoding
----------------------------
+17.3.2 Internal Character Encoding
+----------------------------------
 
 One 19-bit word represents a single character.  The word is separated
 into three fields:
@@ -881,26 +950,26 @@ encoding" described above.
 \1f
 File: internals.info,  Node: CCL,  Prev: Internal Mule Encodings,  Up: MULE Character Sets and Encodings
 
-CCL
-===
+17.4 CCL
+========
 
      CCL PROGRAM SYNTAX:
           CCL_PROGRAM := (CCL_MAIN_BLOCK
                           [ CCL_EOF_BLOCK ])
-     
+
           CCL_MAIN_BLOCK := CCL_BLOCK
           CCL_EOF_BLOCK := CCL_BLOCK
-     
+
           CCL_BLOCK := STATEMENT | (STATEMENT [STATEMENT ...])
           STATEMENT :=
                   SET | IF | BRANCH | LOOP | REPEAT | BREAK
                   | READ | WRITE
-     
+
           SET := (REG = EXPRESSION) | (REG SELF_OP EXPRESSION)
                  | INT-OR-CHAR
-     
+
           EXPRESSION := ARG | (EXPRESSION OP ARG)
-     
+
           IF := (if EXPRESSION CCL_BLOCK CCL_BLOCK)
           BRANCH := (branch EXPRESSION CCL_BLOCK [CCL_BLOCK ...])
           LOOP := (loop STATEMENT [STATEMENT ...])
@@ -915,7 +984,7 @@ CCL
                   | (write INT-OR-CHAR) | (write STRING) | STRING
                   | (write REG ARRAY)
           END := (end)
-     
+
           REG := r0 | r1 | r2 | r3 | r4 | r5 | r6 | r7
           ARG := REG | INT-OR-CHAR
           OP :=   + | - | * | / | % | & | '|' | ^ | << | >> | <8 | >8 | //
@@ -924,25 +993,25 @@ CCL
                   += | -= | *= | /= | %= | &= | '|=' | ^= | <<= | >>=
           ARRAY := '[' INT-OR-CHAR ... ']'
           INT-OR-CHAR := INT | CHAR
-     
+
      MACHINE CODE:
-     
+
      The machine code consists of a vector of 32-bit words.
      The first such word specifies the start of the EOF section of the code;
      this is the code executed to handle any stuff that needs to be done
      (e.g. designating back to ASCII and left-to-right mode) after all
      other encoded/decoded data has been written out.  This is not used for
      charset CCL programs.
-     
+
      REGISTER: 0..7  -- referred by RRR or rrr
-     
+
      OPERATOR BIT FIELD (27-bit): XXXXXXXXXXXXXXX RRR TTTTT
              TTTTT (5-bit): operator type
              RRR (3-bit): register number
              XXXXXXXXXXXXXXXX (15-bit):
                      CCCCCCCCCCCCCCC: constant or address
                      000000000000rrr: register number
-     
+
      AAAA:   00000 +
              00001 -
              00010 *
@@ -951,7 +1020,7 @@ CCL
              00101 &
              00110 |
              00111 ~
-     
+
              01000 <<
              01001 >>
              01010 <8
@@ -960,16 +1029,16 @@ CCL
              01101 not used
              01110 not used
              01111 not used
-     
+
              10000 <
              10001 >
              10010 ==
              10011 <=
              10100 >=
              10101 !=
-     
+
      OPERATORS:      TTTTT RRR XX..
-     
+
      SetCS:          00000 RRR C...C      RRR = C...C
      SetCL:          00001 RRR .....      RRR = c...c
                      c.............c
@@ -977,7 +1046,7 @@ CCL
      SetA:           00011 RRR ..rrr      RRR = array[rrr]
                      C.............C      size of array = C...C
                      c.............c      contents = c...c
-     
+
      Jump:           00100 000 c...c      jump to c...c
      JumpCond:       00101 RRR c...c      if (!RRR) jump to c...c
      WriteJump:      00110 RRR c...c      Write1 RRR, jump to c...c
@@ -1018,7 +1087,7 @@ CCL
                      c.............c      contents = c...c
                      ...
      End:            10110 000 .....      terminate the execution
-     
+
      SetSelfCS:      10111 RRR C...C      RRR AAAAA= C...C
                      ..........AAAAA
      SetSelfCL:      11000 RRR .....      RRR AAAAA= c...c
@@ -1048,16 +1117,16 @@ CCL
 \1f
 File: internals.info,  Node: The Lisp Reader and Compiler,  Next: Lstreams,  Prev: MULE Character Sets and Encodings,  Up: Top
 
-The Lisp Reader and Compiler
-****************************
+18 The Lisp Reader and Compiler
+*******************************
 
 Not yet documented.
 
 \1f
 File: internals.info,  Node: Lstreams,  Next: Consoles; Devices; Frames; Windows,  Prev: The Lisp Reader and Compiler,  Up: Top
 
-Lstreams
-********
+19 Lstreams
+***********
 
 An "lstream" is an internal Lisp object that provides a generic
 buffering stream implementation.  Conceptually, you send data to the
@@ -1079,8 +1148,8 @@ blocking data together in order to achieve efficiency.
 \1f
 File: internals.info,  Node: Creating an Lstream,  Next: Lstream Types,  Up: Lstreams
 
-Creating an Lstream
-===================
+19.1 Creating an Lstream
+========================
 
 Lstreams come in different types, depending on what is being interfaced
 to.  Although the primitive for creating new lstreams is
@@ -1114,8 +1183,8 @@ and he's probably right.
 \1f
 File: internals.info,  Node: Lstream Types,  Next: Lstream Functions,  Prev: Creating an Lstream,  Up: Lstreams
 
-Lstream Types
-=============
+19.2 Lstream Types
+==================
 
 stdio
 
@@ -1140,37 +1209,37 @@ encoding
 \1f
 File: internals.info,  Node: Lstream Functions,  Next: Lstream Methods,  Prev: Lstream Types,  Up: Lstreams
 
-Lstream Functions
-=================
+19.3 Lstream Functions
+======================
 
- - Function: Lstream * Lstream_new (Lstream_implementation *IMP, const
+ -- Function: Lstream * Lstream_new (Lstream_implementation *IMP, const
           char *MODE)
      Allocate and return a new Lstream.  This function is not really
      meant to be called directly; rather, each stream type should
      provide its own stream creation function, which creates the stream
      and does any other necessary creation stuff (e.g. opening a file).
 
- - Function: void Lstream_set_buffering (Lstream *LSTR,
+ -- Function: void Lstream_set_buffering (Lstream *LSTR,
           Lstream_buffering BUFFERING, int BUFFERING_SIZE)
      Change the buffering of a stream.  See `lstream.h'.  By default the
      buffering is `STREAM_BLOCK_BUFFERED'.
 
- - Function: int Lstream_flush (Lstream *LSTR)
+ -- Function: int Lstream_flush (Lstream *LSTR)
      Flush out any pending unwritten data in the stream.  Clear any
      buffered input data.  Returns 0 on success, -1 on error.
 
- - Macro: int Lstream_putc (Lstream *STREAM, int C)
+ -- Macro: int Lstream_putc (Lstream *STREAM, int C)
      Write out one byte to the stream.  This is a macro and so it is
      very efficient.  The C argument is only evaluated once but the
      STREAM argument is evaluated more than once.  Returns 0 on
      success, -1 on error.
 
- - Macro: int Lstream_getc (Lstream *STREAM)
+ -- Macro: int Lstream_getc (Lstream *STREAM)
      Read one byte from the stream.  This is a macro and so it is very
      efficient.  The STREAM argument is evaluated more than once.
      Return value is -1 for EOF or error.
 
- - Macro: void Lstream_ungetc (Lstream *STREAM, int C)
+ -- Macro: void Lstream_ungetc (Lstream *STREAM, int C)
      Push one byte back onto the input queue.  This will be the next
      byte read from the stream.  Any number of bytes can be pushed back
      and will be read in the reverse order they were pushed back--most
@@ -1180,49 +1249,49 @@ Lstream Functions
      and so it is very efficient.  The C argument is only evaluated
      once but the STREAM argument is evaluated more than once.
 
- - Function: int Lstream_fputc (Lstream *STREAM, int C)
- - Function: int Lstream_fgetc (Lstream *STREAM)
- - Function: void Lstream_fungetc (Lstream *STREAM, int C)
+ -- Function: int Lstream_fputc (Lstream *STREAM, int C)
+ -- Function: int Lstream_fgetc (Lstream *STREAM)
+ -- Function: void Lstream_fungetc (Lstream *STREAM, int C)
      Function equivalents of the above macros.
 
- - Function: ssize_t Lstream_read (Lstream *STREAM, void *DATA, size_t
+ -- Function: ssize_t Lstream_read (Lstream *STREAM, void *DATA, size_t
           SIZE)
      Read SIZE bytes of DATA from the stream.  Return the number of
      bytes read.  0 means EOF. -1 means an error occurred and no bytes
      were read.
 
- - Function: ssize_t Lstream_write (Lstream *STREAM, void *DATA, size_t
-          SIZE)
+ -- Function: ssize_t Lstream_write (Lstream *STREAM, void *DATA,
+          size_t SIZE)
      Write SIZE bytes of DATA to the stream.  Return the number of
      bytes written.  -1 means an error occurred and no bytes were
      written.
 
- - Function: void Lstream_unread (Lstream *STREAM, void *DATA, size_t
+ -- Function: void Lstream_unread (Lstream *STREAM, void *DATA, size_t
           SIZE)
      Push back SIZE bytes of DATA onto the input queue.  The next call
      to `Lstream_read()' with the same size will read the same bytes
      back.  Note that this will be the case even if there is other
      pending unread data.
 
- - Function: int Lstream_close (Lstream *STREAM)
+ -- Function: int Lstream_close (Lstream *STREAM)
      Close the stream.  All data will be flushed out.
 
- - Function: void Lstream_reopen (Lstream *STREAM)
+ -- Function: void Lstream_reopen (Lstream *STREAM)
      Reopen a closed stream.  This enables I/O on it again.  This is not
      meant to be called except from a wrapper routine that reinitializes
      variables and such--the close routine may well have freed some
      necessary storage structures, for example.
 
- - Function: void Lstream_rewind (Lstream *STREAM)
+ -- Function: void Lstream_rewind (Lstream *STREAM)
      Rewind the stream to the beginning.
 
 \1f
 File: internals.info,  Node: Lstream Methods,  Prev: Lstream Functions,  Up: Lstreams
 
-Lstream Methods
-===============
+19.4 Lstream Methods
+====================
 
- - Lstream Method: ssize_t reader (Lstream *STREAM, unsigned char
+ -- Lstream Method: ssize_t reader (Lstream *STREAM, unsigned char
           *DATA, size_t SIZE)
      Read some data from the stream's end and store it into DATA, which
      can hold SIZE bytes.  Return the number of bytes read.  A return
@@ -1240,8 +1309,8 @@ Lstream Methods
 
      This function can be `NULL' if the stream is output-only.
 
- - Lstream Method: ssize_t writer (Lstream *STREAM, const unsigned char
-          *DATA, size_t SIZE)
+ -- Lstream Method: ssize_t writer (Lstream *STREAM, const unsigned
+          char *DATA, size_t SIZE)
      Send some data to the stream's end.  Data to be sent is in DATA
      and is SIZE bytes.  Return the number of bytes sent.  This
      function can send and return fewer bytes than is passed in; in that
@@ -1253,29 +1322,29 @@ Lstream Methods
      descriptor and are getting `EWOULDBLOCK' errors.)  This function
      can be `NULL' if the stream is input-only.
 
- - Lstream Method: int rewinder (Lstream *STREAM)
+ -- Lstream Method: int rewinder (Lstream *STREAM)
      Rewind the stream.  If this is `NULL', the stream is not seekable.
 
- - Lstream Method: int seekable_p (Lstream *STREAM)
+ -- Lstream Method: int seekable_p (Lstream *STREAM)
      Indicate whether this stream is seekable--i.e. it can be rewound.
      This method is ignored if the stream does not have a rewind
      method.  If this method is not present, the result is determined
      by whether a rewind method is present.
 
- - Lstream Method: int flusher (Lstream *STREAM)
+ -- Lstream Method: int flusher (Lstream *STREAM)
      Perform any additional operations necessary to flush the data in
      this stream.
 
- - Lstream Method: int pseudo_closer (Lstream *STREAM)
+ -- Lstream Method: int pseudo_closer (Lstream *STREAM)
 
- - Lstream Method: int closer (Lstream *STREAM)
+ -- Lstream Method: int closer (Lstream *STREAM)
      Perform any additional operations necessary to close this stream
      down.  May be `NULL'.  This function is called when
      `Lstream_close()' is called or when the stream is
      garbage-collected.  When this function is called, all pending data
      in the stream will already have been written out.
 
- - Lstream Method: Lisp_Object marker (Lisp_Object LSTREAM, void
+ -- Lstream Method: Lisp_Object marker (Lisp_Object LSTREAM, void
           (*MARKFUN) (Lisp_Object))
      Mark this object for garbage collection.  Same semantics as a
      standard `Lisp_Object' marker.  This function can be `NULL'.
@@ -1283,8 +1352,8 @@ Lstream Methods
 \1f
 File: internals.info,  Node: Consoles; Devices; Frames; Windows,  Next: The Redisplay Mechanism,  Prev: Lstreams,  Up: Top
 
-Consoles; Devices; Frames; Windows
-**********************************
+20 Consoles; Devices; Frames; Windows
+*************************************
 
 * Menu:
 
@@ -1296,8 +1365,8 @@ Consoles; Devices; Frames; Windows
 \1f
 File: internals.info,  Node: Introduction to Consoles; Devices; Frames; Windows,  Next: Point,  Up: Consoles; Devices; Frames; Windows
 
-Introduction to Consoles; Devices; Frames; Windows
-==================================================
+20.1 Introduction to Consoles; Devices; Frames; Windows
+=======================================================
 
 A window-system window that you see on the screen is called a "frame"
 in Emacs terminology.  Each frame is subdivided into one or more
@@ -1341,8 +1410,8 @@ to devices and devices to frames.
 \1f
 File: internals.info,  Node: Point,  Next: Window Hierarchy,  Prev: Introduction to Consoles; Devices; Frames; Windows,  Up: Consoles; Devices; Frames; Windows
 
-Point
-=====
+20.2 Point
+==========
 
 Recall that every buffer has a current insertion position, called
 "point".  Now, two or more windows may be displaying the same buffer,
@@ -1365,8 +1434,8 @@ the buffer's point instead.  This is related to why
 \1f
 File: internals.info,  Node: Window Hierarchy,  Next: The Window Object,  Prev: Point,  Up: Consoles; Devices; Frames; Windows
 
-Window Hierarchy
-================
+20.3 Window Hierarchy
+=====================
 
 If a frame contains multiple windows (panes), they are always created
 by splitting an existing window along the horizontal or vertical axis.
@@ -1451,8 +1520,8 @@ combination window.
 \1f
 File: internals.info,  Node: The Window Object,  Prev: Window Hierarchy,  Up: Consoles; Devices; Frames; Windows
 
-The Window Object
-=================
+20.4 The Window Object
+======================
 
 Windows have the following accessible fields:
 
@@ -1558,8 +1627,8 @@ Windows have the following accessible fields:
 \1f
 File: internals.info,  Node: The Redisplay Mechanism,  Next: Extents,  Prev: Consoles; Devices; Frames; Windows,  Up: Top
 
-The Redisplay Mechanism
-***********************
+21 The Redisplay Mechanism
+**************************
 
 The redisplay mechanism is one of the most complicated sections of
 XEmacs, especially from a conceptual standpoint.  This is doubly so
@@ -1585,8 +1654,8 @@ of Redisplay:
 \1f
 File: internals.info,  Node: Critical Redisplay Sections,  Next: Line Start Cache,  Up: The Redisplay Mechanism
 
-Critical Redisplay Sections
-===========================
+21.1 Critical Redisplay Sections
+================================
 
 Within this section, we are defenseless and assume that the following
 cannot happen:
@@ -1615,8 +1684,8 @@ be preempting redisplay.
 \1f
 File: internals.info,  Node: Line Start Cache,  Next: Redisplay Piece by Piece,  Prev: Critical Redisplay Sections,  Up: The Redisplay Mechanism
 
-Line Start Cache
-================
+21.2 Line Start Cache
+=====================
 
 The traditional scrolling code in Emacs breaks in a variable height
 world.  It depends on the key assumption that the number of lines that
@@ -1677,8 +1746,8 @@ applicable.
 \1f
 File: internals.info,  Node: Redisplay Piece by Piece,  Prev: Line Start Cache,  Up: The Redisplay Mechanism
 
-Redisplay Piece by Piece
-========================
+21.3 Redisplay Piece by Piece
+=============================
 
 As you can begin to see redisplay is complex and also not well
 documented. Chuck no longer works on XEmacs so this section is my take
@@ -1727,8 +1796,8 @@ have been removed.
 \1f
 File: internals.info,  Node: Extents,  Next: Faces,  Prev: The Redisplay Mechanism,  Up: Top
 
-Extents
-*******
+22 Extents
+**********
 
 * Menu:
 
@@ -1742,8 +1811,8 @@ Extents
 \1f
 File: internals.info,  Node: Introduction to Extents,  Next: Extent Ordering,  Up: Extents
 
-Introduction to Extents
-=======================
+22.1 Introduction to Extents
+============================
 
 Extents are regions over a buffer, with a start and an end position
 denoting the region of the buffer included in the extent.  In addition,
@@ -1766,8 +1835,8 @@ complexifying and buggifying all the rest of the code.)
 \1f
 File: internals.info,  Node: Extent Ordering,  Next: Format of the Extent Info,  Prev: Introduction to Extents,  Up: Extents
 
-Extent Ordering
-===============
+22.2 Extent Ordering
+====================
 
 Extents are compared using memory indices.  There are two orderings for
 extents and both orders are kept current at all times.  The normal or
@@ -1799,8 +1868,8 @@ all occurrences of "display order" and "e-order", "less than" and
 \1f
 File: internals.info,  Node: Format of the Extent Info,  Next: Zero-Length Extents,  Prev: Extent Ordering,  Up: Extents
 
-Format of the Extent Info
-=========================
+22.3 Format of the Extent Info
+==============================
 
 An extent-info structure consists of a list of the buffer or string's
 extents and a "stack of extents" that lists all of the extents over a
@@ -1836,8 +1905,8 @@ handle integers and linked list equally well).
 \1f
 File: internals.info,  Node: Zero-Length Extents,  Next: Mathematics of Extent Ordering,  Prev: Format of the Extent Info,  Up: Extents
 
-Zero-Length Extents
-===================
+22.4 Zero-Length Extents
+========================
 
 Extents can be zero-length, and will end up that way if their endpoints
 are explicitly set that way or if their detachable property is `nil'
@@ -1865,8 +1934,8 @@ extents behave like the "point-type" marker in Mule.
 \1f
 File: internals.info,  Node: Mathematics of Extent Ordering,  Next: Extent Fragments,  Prev: Zero-Length Extents,  Up: Extents
 
-Mathematics of Extent Ordering
-==============================
+22.5 Mathematics of Extent Ordering
+===================================
 
 The extents in a buffer are ordered by "display order" because that is
 that order that the redisplay mechanism needs to process them in.  The
@@ -1982,8 +2051,8 @@ F2 includes I and thus is in S, and thus F2 >= F.
 \1f
 File: internals.info,  Node: Extent Fragments,  Prev: Mathematics of Extent Ordering,  Up: Extents
 
-Extent Fragments
-================
+22.6 Extent Fragments
+=====================
 
 Imagine that the buffer is divided up into contiguous, non-overlapping
 "runs" of text such that no extent starts or ends within a run (extents
@@ -2006,16 +2075,16 @@ determining which extents overly a particular position.
 \1f
 File: internals.info,  Node: Faces,  Next: Glyphs,  Prev: Extents,  Up: Top
 
-Faces
-*****
+23 Faces
+********
 
 Not yet documented.
 
 \1f
 File: internals.info,  Node: Glyphs,  Next: Specifiers,  Prev: Faces,  Up: Top
 
-Glyphs
-******
+24 Glyphs
+*********
 
 Glyphs are graphical elements that can be displayed in XEmacs buffers or
 gutters. We use the term graphical element here in the broadest possible
@@ -2048,8 +2117,8 @@ widget-glyphs are cached on an XEmacs window basis.
    Any action on a glyph first consults the cache before actually
 instantiating a widget.
 
-Glyph Instantiation
-===================
+24.1 Glyph Instantiation
+========================
 
 Glyph instantiation is a hairy topic and requires some explanation. The
 guts of glyph instantiation is contained within `image_instantiate'. A
@@ -2112,16 +2181,16 @@ other image-instances have a device as the governing-domain. The
 governing domain for an image-instance is determined using the
 governing_domain image-instance method.
 
-Widget-Glyphs
-=============
+24.2 Widget-Glyphs
+==================
 
-Widget-Glyphs in the MS-Windows Environment
-===========================================
+24.3 Widget-Glyphs in the MS-Windows Environment
+================================================
 
 To Do
 
-Widget-Glyphs in the X Environment
-==================================
+24.4 Widget-Glyphs in the X Environment
+=======================================
 
 Widget-glyphs under X make heavy use of lwlib (*note Lucid Widget
 Library::) for manipulating the native toolkit objects. This is
@@ -2150,16 +2219,16 @@ the widget is and how to set its properties.
 \1f
 File: internals.info,  Node: Specifiers,  Next: Menus,  Prev: Glyphs,  Up: Top
 
-Specifiers
-**********
+25 Specifiers
+*************
 
 Not yet documented.
 
 \1f
 File: internals.info,  Node: Menus,  Next: Subprocesses,  Prev: Specifiers,  Up: Top
 
-Menus
-*****
+26 Menus
+********
 
 A menu is set by setting the value of the variable `current-menubar'
 (which may be buffer-local) and then calling `set-menubar-dirty-flag'
@@ -2209,8 +2278,8 @@ description.
 \1f
 File: internals.info,  Node: Subprocesses,  Next: Interface to the X Window System,  Prev: Menus,  Up: Top
 
-Subprocesses
-************
+27 Subprocesses
+***************
 
 The fields of a process are:
 
@@ -2283,8 +2352,8 @@ The fields of a process are:
 \1f
 File: internals.info,  Node: Interface to the X Window System,  Next: Index,  Prev: Subprocesses,  Up: Top
 
-Interface to the X Window System
-********************************
+28 Interface to the X Window System
+***********************************
 
 Mostly undocumented.
 
@@ -2295,8 +2364,8 @@ Mostly undocumented.
 \1f
 File: internals.info,  Node: Lucid Widget Library,  Up: Interface to the X Window System
 
-Lucid Widget Library
-====================
+28.1 Lucid Widget Library
+=========================
 
 Lwlib is extremely poorly documented and quite hairy.  The author(s)
 blame that on X, Xt, and Motif, with some justice, but also sufficient
@@ -2328,8 +2397,8 @@ graphical user interface.
 \1f
 File: internals.info,  Node: Generic Widget Interface,  Next: Scrollbars,  Up: Lucid Widget Library
 
-Generic Widget Interface
-------------------------
+28.1.1 Generic Widget Interface
+-------------------------------
 
 In general in any toolkit a widget may be a composite object.  In Xt,
 all widgets have an X window that they manage, but typically a complex
@@ -2360,7 +2429,7 @@ member of `widget_value'.
                               +-------------+ next +-------------+
                               | grand child |----->| grand child |
                               +-------------+      +-------------+
-     
+
      The `widget_value' hierarchy of a composite widget with two simple
      children and one composite child.
 
@@ -2384,7 +2453,7 @@ tree.  As for the `widget_value', siblings are chained through the
                               +-------------+ next +-------------+
                               | grand child |----->| grand child |
                               +-------------+      +-------------+
-     
+
      The `widget_value' hierarchy of a composite widget with two simple
      children and one composite child.
 
@@ -2406,32 +2475,32 @@ of its tree.  Widget instances are further confi
 \1f
 File: internals.info,  Node: Scrollbars,  Next: Menubars,  Prev: Generic Widget Interface,  Up: Lucid Widget Library
 
-Scrollbars
-----------
+28.1.2 Scrollbars
+-----------------
 
 \1f
 File: internals.info,  Node: Menubars,  Next: Checkboxes and Radio Buttons,  Prev: Scrollbars,  Up: Lucid Widget Library
 
-Menubars
---------
+28.1.3 Menubars
+---------------
 
 \1f
 File: internals.info,  Node: Checkboxes and Radio Buttons,  Next: Progress Bars,  Prev: Menubars,  Up: Lucid Widget Library
 
-Checkboxes and Radio Buttons
-----------------------------
+28.1.4 Checkboxes and Radio Buttons
+-----------------------------------
 
 \1f
 File: internals.info,  Node: Progress Bars,  Next: Tab Controls,  Prev: Checkboxes and Radio Buttons,  Up: Lucid Widget Library
 
-Progress Bars
--------------
+28.1.5 Progress Bars
+--------------------
 
 \1f
 File: internals.info,  Node: Tab Controls,  Prev: Progress Bars,  Up: Lucid Widget Library
 
-Tab Controls
-------------
+28.1.6 Tab Controls
+-------------------
 
 \1f
 File: internals.info,  Node: Index,  Prev: Interface to the X Window System,  Up: Top
@@ -2439,419 +2508,638 @@ File: internals.info,  Node: Index,  Prev: Interface to the X Window System,  Up
 Index
 *****
 
+\0\b[index\0\b]
 * Menu:
 
 * allocation from frob blocks:           Allocation from Frob Blocks.
+                                                              (line   6)
 * allocation of objects in XEmacs Lisp:  Allocation of Objects in XEmacs Lisp.
+                                                              (line   6)
 * allocation, introduction to:           Introduction to Allocation.
+                                                              (line   6)
 * allocation, low-level:                 Low-level allocation.
-* Amdahl Corporation:                    XEmacs.
-* Andreessen, Marc:                      XEmacs.
+                                                              (line   6)
+* Amdahl Corporation:                    XEmacs.              (line   6)
+* Andreessen, Marc:                      XEmacs.              (line   6)
 * asynchronous subprocesses:             Modules for Interfacing with the Operating System.
-* bars, progress:                        Progress Bars.
-* Baur, Steve:                           XEmacs.
-* Benson, Eric:                          Lucid Emacs.
+                                                              (line  18)
+* bars, progress:                        Progress Bars.       (line   6)
+* Baur, Steve:                           XEmacs.              (line   6)
+* Benson, Eric:                          Lucid Emacs.         (line  28)
 * binding; the specbinding stack; unwind-protects, dynamic: Dynamic Binding; The specbinding Stack; Unwind-Protects.
+                                                              (line   6)
 * bindings, evaluation; stack frames;:   Evaluation; Stack Frames; Bindings.
-* bit vector:                            Bit Vector.
+                                                              (line   6)
+* bit vector:                            Bit Vector.          (line   6)
 * bridge, playing:                       XEmacs From the Outside.
-* Buchholz, Martin:                      XEmacs.
+                                                              (line  34)
+* Buchholz, Martin:                      XEmacs.              (line   6)
 * Bufbyte:                               Character-Related Data Types.
+                                                              (line  24)
 * Bufbytes and Emchars:                  Bufbytes and Emchars.
-* buffer lists:                          Buffer Lists.
-* buffer object, the:                    The Buffer Object.
+                                                              (line   6)
+* buffer lists:                          Buffer Lists.        (line   6)
+* buffer object, the:                    The Buffer Object.   (line   6)
 * buffer, the text in a:                 The Text in a Buffer.
+                                                              (line   6)
 * buffers and textual representation:    Buffers and Textual Representation.
+                                                              (line   6)
 * buffers, introduction to:              Introduction to Buffers.
+                                                              (line   6)
 * Bufpos:                                Character-Related Data Types.
+                                                              (line  47)
 * building, XEmacs from the perspective of: XEmacs From the Perspective of Building.
+                                                              (line   6)
 * buttons, checkboxes and radio:         Checkboxes and Radio Buttons.
+                                                              (line   6)
 * byte positions, working with character and: Working With Character and Byte Positions.
+                                                              (line   6)
 * Bytecount:                             Character-Related Data Types.
+                                                              (line  59)
 * bytecount_to_charcount:                Working With Character and Byte Positions.
+                                                              (line  82)
 * Bytind:                                Character-Related Data Types.
+                                                              (line  59)
 * C code, rules when writing new:        Rules When Writing New C Code.
-* C vs. Lisp:                            The Lisp Language.
+                                                              (line   6)
+* C vs. Lisp:                            The Lisp Language.   (line   6)
 * callback routines, the event stream:   The Event Stream Callback Routines.
+                                                              (line   6)
 * caller-protects (GCPRO rule):          Writing Lisp Primitives.
+                                                              (line 169)
 * case table:                            Modules for Other Aspects of the Lisp Interpreter and Object System.
-* catch and throw:                       Catch and Throw.
-* CCL:                                   CCL.
+                                                              (line  44)
+* catch and throw:                       Catch and Throw.     (line   6)
+* CCL:                                   CCL.                 (line   6)
 * character and byte positions, working with: Working With Character and Byte Positions.
+                                                              (line   6)
 * character encoding, internal:          Internal Character Encoding.
-* character sets:                        Character Sets.
+                                                              (line   6)
+* character sets:                        Character Sets.      (line   6)
 * character sets and encodings, Mule:    MULE Character Sets and Encodings.
+                                                              (line   6)
 * character-related data types:          Character-Related Data Types.
+                                                              (line   6)
 * characters, integers and:              Integers and Characters.
+                                                              (line   6)
 * Charcount:                             Character-Related Data Types.
+                                                              (line  47)
 * charcount_to_bytecount:                Working With Character and Byte Positions.
+                                                              (line  88)
 * charptr_emchar:                        Working With Character and Byte Positions.
+                                                              (line  36)
 * charptr_n_addr:                        Working With Character and Byte Positions.
+                                                              (line  94)
 * checkboxes and radio buttons:          Checkboxes and Radio Buttons.
-* closer:                                Lstream Methods.
+                                                              (line   6)
+* closer:                                Lstream Methods.     (line  53)
 * closure:                               The XEmacs Object System (Abstractly Speaking).
+                                                              (line  71)
 * code, an example of Mule-aware:        An Example of Mule-Aware Code.
+                                                              (line   6)
 * code, general guidelines for writing Mule-aware: General Guidelines for Writing Mule-Aware Code.
+                                                              (line   6)
 * code, rules when writing new C:        Rules When Writing New C Code.
+                                                              (line   6)
 * coding conventions:                    A Reader's Guide to XEmacs Coding Conventions.
-* coding for Mule:                       Coding for Mule.
+                                                              (line   6)
+* coding for Mule:                       Coding for Mule.     (line   6)
 * coding rules, general:                 General Coding Rules.
+                                                              (line   6)
 * coding rules, naming:                  A Reader's Guide to XEmacs Coding Conventions.
+                                                              (line   6)
 * command builder, dispatching events; the: Dispatching Events; The Command Builder.
+                                                              (line   6)
 * comments, writing good:                Writing Good Comments.
-* Common Lisp:                           The Lisp Language.
+                                                              (line   6)
+* Common Lisp:                           The Lisp Language.   (line   6)
 * compact_string_chars:                  compact_string_chars.
-* compiled function:                     Compiled Function.
+                                                              (line   6)
+* compiled function:                     Compiled Function.   (line   6)
 * compiler, the Lisp reader and:         The Lisp Reader and Compiler.
-* cons:                                  Cons.
-* conservative garbage collection:       GCPROing.
+                                                              (line   6)
+* cons:                                  Cons.                (line   6)
+* conservative garbage collection:       GCPROing.            (line 131)
 * consoles; devices; frames; windows:    Consoles; Devices; Frames; Windows.
+                                                              (line   6)
 * consoles; devices; frames; windows, introduction to: Introduction to Consoles; Devices; Frames; Windows.
+                                                              (line   6)
 * control flow modules, editor-level:    Editor-Level Control Flow Modules.
+                                                              (line   6)
 * conversion to and from external data:  Conversion to and from External Data.
-* converting events:                     Converting Events.
+                                                              (line   6)
+* converting events:                     Converting Events.   (line   6)
 * copy-on-write:                         General Coding Rules.
+                                                              (line  57)
 * creating Lisp object types:            Techniques for XEmacs Developers.
+                                                              (line 192)
 * critical redisplay sections:           Critical Redisplay Sections.
-* data dumping:                          Data dumping.
+                                                              (line   6)
+* data dumping:                          Data dumping.        (line   6)
 * data types, character-related:         Character-Related Data Types.
+                                                              (line   6)
 * DEC_CHARPTR:                           Working With Character and Byte Positions.
+                                                              (line  72)
 * developers, techniques for XEmacs:     Techniques for XEmacs Developers.
+                                                              (line   6)
 * devices; frames; windows, consoles;:   Consoles; Devices; Frames; Windows.
+                                                              (line   6)
 * devices; frames; windows, introduction to consoles;: Introduction to Consoles; Devices; Frames; Windows.
-* Devin, Matthieu:                       Lucid Emacs.
+                                                              (line   6)
+* Devin, Matthieu:                       Lucid Emacs.         (line  28)
 * dispatching events; the command builder: Dispatching Events; The Command Builder.
+                                                              (line   6)
 * display order of extents:              Mathematics of Extent Ordering.
+                                                              (line   6)
 * display-related Lisp objects, modules for other: Modules for other Display-Related Lisp Objects.
+                                                              (line   6)
 * displayable Lisp objects, modules for the basic: Modules for the Basic Displayable Lisp Objects.
-* dumping:                               Dumping.
-* dumping address allocation:            Address allocation.
-* dumping and its justification, what is: Dumping.
-* dumping data descriptions:             Data descriptions.
-* dumping object inventory:              Object inventory.
-* dumping overview:                      Overview.
-* dumping phase:                         Dumping phase.
-* dumping, data:                         Data dumping.
-* dumping, file loading:                 Reloading phase.
-* dumping, object relocation:            Reloading phase.
-* dumping, pointers:                     Pointers dumping.
-* dumping, putting back the pdump_opaques: Reloading phase.
+                                                              (line   6)
+* dumping:                               Dumping.             (line   6)
+* dumping address allocation:            Address allocation.  (line   6)
+* dumping and its justification, what is: Dumping.            (line   9)
+* dumping data descriptions:             Data descriptions.   (line   6)
+* dumping object inventory:              Object inventory.    (line   6)
+* dumping overview:                      Overview.            (line   6)
+* dumping phase:                         Dumping phase.       (line   6)
+* dumping, data:                         Data dumping.        (line   6)
+* dumping, file loading:                 Reloading phase.     (line   9)
+* dumping, object relocation:            Reloading phase.     (line  32)
+* dumping, pointers:                     Pointers dumping.    (line   6)
+* dumping, putting back the pdump_opaques: Reloading phase.   (line  21)
 * dumping, putting back the pdump_root_objects and pdump_weak_object_chains: Reloading phase.
+                                                              (line  39)
 * dumping, putting back the pdump_root_struct_ptrs: Reloading phase.
-* dumping, reloading phase:              Reloading phase.
-* dumping, remaining issues:             Remaining issues.
-* dumping, reorganize the hash tables:   Reloading phase.
-* dumping, the header:                   The header.
-* dynamic array:                         Low-Level Modules.
+                                                              (line  26)
+* dumping, reloading phase:              Reloading phase.     (line   6)
+* dumping, remaining issues:             Remaining issues.    (line   6)
+* dumping, reorganize the hash tables:   Reloading phase.     (line  44)
+* dumping, the header:                   The header.          (line   6)
+* dynamic array:                         Low-Level Modules.   (line 146)
 * dynamic binding; the specbinding stack; unwind-protects: Dynamic Binding; The specbinding Stack; Unwind-Protects.
-* dynamic scoping:                       The Lisp Language.
-* dynamic types:                         The Lisp Language.
+                                                              (line   6)
+* dynamic scoping:                       The Lisp Language.   (line   6)
+* dynamic types:                         The Lisp Language.   (line   6)
 * editing operations, modules for standard: Modules for Standard Editing Operations.
-* Emacs 19, GNU:                         GNU Emacs 19.
-* Emacs 20, GNU:                         GNU Emacs 20.
-* Emacs, a history of:                   A History of Emacs.
+                                                              (line   6)
+* Emacs 19, GNU:                         GNU Emacs 19.        (line   6)
+* Emacs 20, GNU:                         GNU Emacs 20.        (line   6)
+* Emacs, a history of:                   A History of Emacs.  (line   6)
 * Emchar:                                Character-Related Data Types.
+                                                              (line  13)
 * Emchars, Bufbytes and:                 Bufbytes and Emchars.
+                                                              (line   6)
 * encoding, internal character:          Internal Character Encoding.
+                                                              (line   6)
 * encoding, internal string:             Internal String Encoding.
+                                                              (line   6)
 * encodings, internal Mule:              Internal Mule Encodings.
-* encodings, Mule:                       Encodings.
+                                                              (line   6)
+* encodings, Mule:                       Encodings.           (line   6)
 * encodings, Mule character sets and:    MULE Character Sets and Encodings.
-* Energize:                              Lucid Emacs.
-* Epoch <1>:                             XEmacs.
-* Epoch:                                 Lucid Emacs.
+                                                              (line   6)
+* Energize:                              Lucid Emacs.         (line   6)
+* Epoch <1>:                             XEmacs.              (line   6)
+* Epoch:                                 Lucid Emacs.         (line   6)
 * error checking:                        Techniques for XEmacs Developers.
+                                                              (line  15)
 * EUC (Extended Unix Code), Japanese:    Japanese EUC (Extended Unix Code).
-* evaluation:                            Evaluation.
+                                                              (line   6)
+* evaluation:                            Evaluation.          (line   6)
 * evaluation; stack frames; bindings:    Evaluation; Stack Frames; Bindings.
+                                                              (line   6)
 * event gathering mechanism, specifics of the: Specifics of the Event Gathering Mechanism.
+                                                              (line   6)
 * event loop functions, other:           Other Event Loop Functions.
+                                                              (line   6)
 * event loop, events and the:            Events and the Event Loop.
+                                                              (line   6)
 * event stream callback routines, the:   The Event Stream Callback Routines.
+                                                              (line   6)
 * event, specifics about the Lisp object: Specifics About the Emacs Event.
+                                                              (line   6)
 * events and the event loop:             Events and the Event Loop.
-* events, converting:                    Converting Events.
+                                                              (line   6)
+* events, converting:                    Converting Events.   (line   6)
 * events, introduction to:               Introduction to Events.
-* events, main loop:                     Main Loop.
+                                                              (line   6)
+* events, main loop:                     Main Loop.           (line   6)
 * events; the command builder, dispatching: Dispatching Events; The Command Builder.
+                                                              (line   6)
 * Extbyte:                               Character-Related Data Types.
+                                                              (line  66)
 * Extcount:                              Character-Related Data Types.
+                                                              (line  66)
 * Extended Unix Code, Japanese EUC:      Japanese EUC (Extended Unix Code).
-* extent fragments:                      Extent Fragments.
+                                                              (line   6)
+* extent fragments:                      Extent Fragments.    (line   6)
 * extent info, format of the:            Format of the Extent Info.
+                                                              (line   6)
 * extent mathematics:                    Mathematics of Extent Ordering.
+                                                              (line   6)
 * extent ordering <1>:                   Mathematics of Extent Ordering.
-* extent ordering:                       Extent Ordering.
-* extents:                               Extents.
+                                                              (line   6)
+* extent ordering:                       Extent Ordering.     (line   6)
+* extents:                               Extents.             (line   6)
 * extents, display order:                Mathematics of Extent Ordering.
+                                                              (line   6)
 * extents, introduction to:              Introduction to Extents.
-* extents, markers and:                  Markers and Extents.
-* extents, zero-length:                  Zero-Length Extents.
+                                                              (line   6)
+* extents, markers and:                  Markers and Extents. (line   6)
+* extents, zero-length:                  Zero-Length Extents. (line   6)
 * external data, conversion to and from: Conversion to and from External Data.
+                                                              (line   6)
 * external widget:                       Modules for Interfacing with X Windows.
-* faces:                                 Faces.
+                                                              (line  93)
+* faces:                                 Faces.               (line   6)
 * file system, modules for interfacing with the: Modules for Interfacing with the File System.
-* flusher:                               Lstream Methods.
-* fragments, extent:                     Extent Fragments.
+                                                              (line   6)
+* flusher:                               Lstream Methods.     (line  47)
+* fragments, extent:                     Extent Fragments.    (line   6)
 * frames; windows, consoles; devices;:   Consoles; Devices; Frames; Windows.
+                                                              (line   6)
 * frames; windows, introduction to consoles; devices;: Introduction to Consoles; Devices; Frames; Windows.
-* Free Software Foundation:              A History of Emacs.
+                                                              (line   6)
+* Free Software Foundation:              A History of Emacs.  (line   6)
 * frob blocks, allocation from:          Allocation from Frob Blocks.
-* FSF:                                   A History of Emacs.
-* FSF Emacs <1>:                         GNU Emacs 20.
-* FSF Emacs:                             GNU Emacs 19.
-* function, compiled:                    Compiled Function.
-* garbage collection:                    Garbage Collection.
+                                                              (line   6)
+* FSF:                                   A History of Emacs.  (line   6)
+* FSF Emacs <1>:                         GNU Emacs 20.        (line   6)
+* FSF Emacs:                             GNU Emacs 19.        (line   6)
+* function, compiled:                    Compiled Function.   (line   6)
+* garbage collection:                    Garbage Collection.  (line   6)
 * garbage collection - step by step:     Garbage Collection - Step by Step.
-* garbage collection protection <1>:     GCPROing.
+                                                              (line   6)
+* garbage collection protection <1>:     GCPROing.            (line   6)
 * garbage collection protection:         Writing Lisp Primitives.
-* garbage collection, conservative:      GCPROing.
-* garbage collection, invocation:        Invocation.
-* garbage_collect_1:                     garbage_collect_1.
-* gc_sweep:                              gc_sweep.
-* GCPROing:                              GCPROing.
+                                                              (line  15)
+* garbage collection, conservative:      GCPROing.            (line 131)
+* garbage collection, invocation:        Invocation.          (line   6)
+* garbage_collect_1:                     garbage_collect_1.   (line   6)
+* gc_sweep:                              gc_sweep.            (line   6)
+* GCPROing:                              GCPROing.            (line   6)
 * global Lisp variables, adding:         Adding Global Lisp Variables.
-* glyph instantiation:                   Glyphs.
-* glyphs:                                Glyphs.
-* GNU Emacs 19:                          GNU Emacs 19.
-* GNU Emacs 20:                          GNU Emacs 20.
-* Gosling, James <1>:                    The Lisp Language.
-* Gosling, James:                        Through Version 18.
-* Great Usenet Renaming:                 Through Version 18.
-* Hackers (Steven Levy):                 A History of Emacs.
+                                                              (line   6)
+* glyph instantiation:                   Glyphs.              (line  40)
+* glyphs:                                Glyphs.              (line   6)
+* GNU Emacs 19:                          GNU Emacs 19.        (line   6)
+* GNU Emacs 20:                          GNU Emacs 20.        (line   6)
+* Gosling, James <1>:                    The Lisp Language.   (line   6)
+* Gosling, James:                        Through Version 18.  (line   6)
+* Great Usenet Renaming:                 Through Version 18.  (line   6)
+* Hackers (Steven Levy):                 A History of Emacs.  (line   6)
 * header files, inline functions:        Techniques for XEmacs Developers.
-* hierarchy of windows:                  Window Hierarchy.
-* history of Emacs, a:                   A History of Emacs.
-* Illinois, University of:               XEmacs.
+                                                              (line 146)
+* hierarchy of windows:                  Window Hierarchy.    (line   6)
+* history of Emacs, a:                   A History of Emacs.  (line   6)
+* Illinois, University of:               XEmacs.              (line   6)
 * INC_CHARPTR:                           Working With Character and Byte Positions.
+                                                              (line  72)
 * inline functions:                      Techniques for XEmacs Developers.
+                                                              (line 108)
 * inline functions, headers:             Techniques for XEmacs Developers.
+                                                              (line 146)
 * inside, XEmacs from the:               XEmacs From the Inside.
-* instantiation, glyph:                  Glyphs.
+                                                              (line   6)
+* instantiation, glyph:                  Glyphs.              (line  40)
 * integers and characters:               Integers and Characters.
+                                                              (line   6)
 * interactive:                           Modules for Standard Editing Operations.
+                                                              (line  93)
 * interfacing with the file system, modules for: Modules for Interfacing with the File System.
+                                                              (line   6)
 * interfacing with the operating system, modules for: Modules for Interfacing with the Operating System.
+                                                              (line   6)
 * interfacing with X Windows, modules for: Modules for Interfacing with X Windows.
+                                                              (line   6)
 * internal character encoding:           Internal Character Encoding.
+                                                              (line   6)
 * internal Mule encodings:               Internal Mule Encodings.
+                                                              (line   6)
 * internal string encoding:              Internal String Encoding.
+                                                              (line   6)
 * internationalization, modules for:     Modules for Internationalization.
+                                                              (line   6)
 * interning:                             The XEmacs Object System (Abstractly Speaking).
+                                                              (line 302)
 * interpreter and object system, modules for other aspects of the Lisp: Modules for Other Aspects of the Lisp Interpreter and Object System.
-* ITS (Incompatible Timesharing System): A History of Emacs.
+                                                              (line   6)
+* ITS (Incompatible Timesharing System): A History of Emacs.  (line   6)
 * Japanese EUC (Extended Unix Code):     Japanese EUC (Extended Unix Code).
-* Java:                                  The Lisp Language.
-* Java vs. Lisp:                         The Lisp Language.
-* JIS7:                                  JIS7.
-* Jones, Kyle:                           XEmacs.
-* Kaplan, Simon:                         XEmacs.
-* Levy, Steven:                          A History of Emacs.
+                                                              (line   6)
+* Java:                                  The Lisp Language.   (line   6)
+* Java vs. Lisp:                         The Lisp Language.   (line   6)
+* JIS7:                                  JIS7.                (line   6)
+* Jones, Kyle:                           XEmacs.              (line  45)
+* Kaplan, Simon:                         XEmacs.              (line   6)
+* Levy, Steven:                          A History of Emacs.  (line   6)
 * library, Lucid Widget:                 Lucid Widget Library.
-* line start cache:                      Line Start Cache.
+                                                              (line   6)
+* line start cache:                      Line Start Cache.    (line   6)
 * Lisp interpreter and object system, modules for other aspects of the: Modules for Other Aspects of the Lisp Interpreter and Object System.
-* Lisp language, the:                    The Lisp Language.
-* Lisp modules, basic:                   Basic Lisp Modules.
+                                                              (line   6)
+* Lisp language, the:                    The Lisp Language.   (line   6)
+* Lisp modules, basic:                   Basic Lisp Modules.  (line   6)
 * Lisp object types, creating:           Techniques for XEmacs Developers.
+                                                              (line 192)
 * Lisp objects are represented in C, how: How Lisp Objects Are Represented in C.
+                                                              (line   6)
 * Lisp objects, allocation of in XEmacs: Allocation of Objects in XEmacs Lisp.
+                                                              (line   6)
 * Lisp objects, modules for other display-related: Modules for other Display-Related Lisp Objects.
+                                                              (line   6)
 * Lisp objects, modules for the basic displayable: Modules for the Basic Displayable Lisp Objects.
+                                                              (line   6)
 * Lisp primitives, writing:              Writing Lisp Primitives.
+                                                              (line   6)
 * Lisp reader and compiler, the:         The Lisp Reader and Compiler.
-* Lisp vs. C:                            The Lisp Language.
-* Lisp vs. Java:                         The Lisp Language.
+                                                              (line   6)
+* Lisp vs. C:                            The Lisp Language.   (line   6)
+* Lisp vs. Java:                         The Lisp Language.   (line   6)
 * low-level allocation:                  Low-level allocation.
-* low-level modules:                     Low-Level Modules.
-* lrecords:                              lrecords.
+                                                              (line   6)
+* low-level modules:                     Low-Level Modules.   (line   6)
+* lrecords:                              lrecords.            (line   6)
 * lstream:                               Modules for Interfacing with the File System.
-* lstream functions:                     Lstream Functions.
-* lstream methods:                       Lstream Methods.
-* lstream types:                         Lstream Types.
-* lstream, creating an:                  Creating an Lstream.
-* Lstream_close:                         Lstream Functions.
-* Lstream_fgetc:                         Lstream Functions.
-* Lstream_flush:                         Lstream Functions.
-* Lstream_fputc:                         Lstream Functions.
-* Lstream_fungetc:                       Lstream Functions.
-* Lstream_getc:                          Lstream Functions.
-* Lstream_new:                           Lstream Functions.
-* Lstream_putc:                          Lstream Functions.
-* Lstream_read:                          Lstream Functions.
-* Lstream_reopen:                        Lstream Functions.
-* Lstream_rewind:                        Lstream Functions.
-* Lstream_set_buffering:                 Lstream Functions.
-* Lstream_ungetc:                        Lstream Functions.
-* Lstream_unread:                        Lstream Functions.
-* Lstream_write:                         Lstream Functions.
-* lstreams:                              Lstreams.
-* Lucid Emacs:                           Lucid Emacs.
-* Lucid Inc.:                            Lucid Emacs.
+                                                              (line  20)
+* lstream functions:                     Lstream Functions.   (line   6)
+* lstream methods:                       Lstream Methods.     (line   6)
+* lstream types:                         Lstream Types.       (line   6)
+* lstream, creating an:                  Creating an Lstream. (line   6)
+* Lstream_close:                         Lstream Functions.   (line  68)
+* Lstream_fgetc:                         Lstream Functions.   (line  45)
+* Lstream_flush:                         Lstream Functions.   (line  19)
+* Lstream_fputc:                         Lstream Functions.   (line  44)
+* Lstream_fungetc:                       Lstream Functions.   (line  46)
+* Lstream_getc:                          Lstream Functions.   (line  29)
+* Lstream_new:                           Lstream Functions.   (line   8)
+* Lstream_putc:                          Lstream Functions.   (line  23)
+* Lstream_read:                          Lstream Functions.   (line  50)
+* Lstream_reopen:                        Lstream Functions.   (line  71)
+* Lstream_rewind:                        Lstream Functions.   (line  77)
+* Lstream_set_buffering:                 Lstream Functions.   (line  15)
+* Lstream_ungetc:                        Lstream Functions.   (line  34)
+* Lstream_unread:                        Lstream Functions.   (line  62)
+* Lstream_write:                         Lstream Functions.   (line  56)
+* lstreams:                              Lstreams.            (line   6)
+* Lucid Emacs:                           Lucid Emacs.         (line   6)
+* Lucid Inc.:                            Lucid Emacs.         (line   6)
 * Lucid Widget Library:                  Lucid Widget Library.
+                                                              (line   6)
 * macro hygiene:                         Techniques for XEmacs Developers.
-* main loop:                             Main Loop.
-* mark and sweep:                        Garbage Collection.
-* mark method <1>:                       lrecords.
+                                                              (line  71)
+* main loop:                             Main Loop.           (line   6)
+* mark and sweep:                        Garbage Collection.  (line   6)
+* mark method <1>:                       lrecords.            (line 107)
 * mark method:                           Modules for Other Aspects of the Lisp Interpreter and Object System.
-* mark_object:                           mark_object.
-* marker <1>:                            Lstream Methods.
-* marker:                                Marker.
-* markers and extents:                   Markers and Extents.
+                                                              (line 132)
+* mark_object:                           mark_object.         (line   6)
+* marker <1>:                            Lstream Methods.     (line  61)
+* marker:                                Marker.              (line   6)
+* markers and extents:                   Markers and Extents. (line   6)
 * mathematics of extent ordering:        Mathematics of Extent Ordering.
+                                                              (line   6)
 * MAX_EMCHAR_LEN:                        Working With Character and Byte Positions.
-* menubars:                              Menubars.
-* menus:                                 Menus.
-* merging attempts:                      XEmacs.
-* MIT:                                   A History of Emacs.
-* Mlynarik, Richard:                     GNU Emacs 19.
+                                                              (line  14)
+* menubars:                              Menubars.            (line   6)
+* menus:                                 Menus.               (line   6)
+* merging attempts:                      XEmacs.              (line  52)
+* MIT:                                   A History of Emacs.  (line   6)
+* Mlynarik, Richard:                     GNU Emacs 19.        (line  68)
 * modules for interfacing with the file system: Modules for Interfacing with the File System.
+                                                              (line   6)
 * modules for interfacing with the operating system: Modules for Interfacing with the Operating System.
+                                                              (line   6)
 * modules for interfacing with X Windows: Modules for Interfacing with X Windows.
+                                                              (line   6)
 * modules for internationalization:      Modules for Internationalization.
+                                                              (line   6)
 * modules for other aspects of the Lisp interpreter and object system: Modules for Other Aspects of the Lisp Interpreter and Object System.
+                                                              (line   6)
 * modules for other display-related Lisp objects: Modules for other Display-Related Lisp Objects.
+                                                              (line   6)
 * modules for regression testing:        Modules for Regression Testing.
+                                                              (line   6)
 * modules for standard editing operations: Modules for Standard Editing Operations.
+                                                              (line   6)
 * modules for the basic displayable Lisp objects: Modules for the Basic Displayable Lisp Objects.
+                                                              (line   6)
 * modules for the redisplay mechanism:   Modules for the Redisplay Mechanism.
+                                                              (line   6)
 * modules, a summary of the various XEmacs: A Summary of the Various XEmacs Modules.
-* modules, basic Lisp:                   Basic Lisp Modules.
+                                                              (line   6)
+* modules, basic Lisp:                   Basic Lisp Modules.  (line   6)
 * modules, editor-level control flow:    Editor-Level Control Flow Modules.
-* modules, low-level:                    Low-Level Modules.
-* MS-Windows environment, widget-glyphs in the: Glyphs.
+                                                              (line   6)
+* modules, low-level:                    Low-Level Modules.   (line   6)
+* MS-Windows environment, widget-glyphs in the: Glyphs.       (line 107)
 * Mule character sets and encodings:     MULE Character Sets and Encodings.
-* Mule encodings:                        Encodings.
+                                                              (line   6)
+* Mule encodings:                        Encodings.           (line   6)
 * Mule encodings, internal:              Internal Mule Encodings.
-* MULE merged XEmacs appears:            XEmacs.
-* Mule, coding for:                      Coding for Mule.
+                                                              (line   6)
+* MULE merged XEmacs appears:            XEmacs.              (line  35)
+* Mule, coding for:                      Coding for Mule.     (line   6)
 * Mule-aware code, an example of:        An Example of Mule-Aware Code.
+                                                              (line   6)
 * Mule-aware code, general guidelines for writing: General Guidelines for Writing Mule-Aware Code.
+                                                              (line   6)
 * NAS:                                   Modules for Interfacing with the Operating System.
+                                                              (line 135)
 * native sound:                          Modules for Interfacing with the Operating System.
+                                                              (line 131)
 * network connections:                   Modules for Interfacing with the Operating System.
+                                                              (line  37)
 * network sound:                         Modules for Interfacing with the Operating System.
-* Niksic, Hrvoje:                        XEmacs.
-* obarrays:                              Obarrays.
+                                                              (line 135)
+* Niksic, Hrvoje:                        XEmacs.              (line  45)
+* obarrays:                              Obarrays.            (line   6)
 * object system (abstractly speaking), the XEmacs: The XEmacs Object System (Abstractly Speaking).
+                                                              (line   6)
 * object system, modules for other aspects of the Lisp interpreter and: Modules for Other Aspects of the Lisp Interpreter and Object System.
+                                                              (line   6)
 * object types, creating Lisp:           Techniques for XEmacs Developers.
-* object, the buffer:                    The Buffer Object.
-* object, the window:                    The Window Object.
+                                                              (line 192)
+* object, the buffer:                    The Buffer Object.   (line   6)
+* object, the window:                    The Window Object.   (line   6)
 * objects are represented in C, how Lisp: How Lisp Objects Are Represented in C.
+                                                              (line   6)
 * objects in XEmacs Lisp, allocation of: Allocation of Objects in XEmacs Lisp.
+                                                              (line   6)
 * objects, modules for the basic displayable Lisp: Modules for the Basic Displayable Lisp Objects.
+                                                              (line   6)
 * operating system, modules for interfacing with the: Modules for Interfacing with the Operating System.
+                                                              (line   6)
 * outside, XEmacs from the:              XEmacs From the Outside.
+                                                              (line   6)
 * pane:                                  Modules for the Basic Displayable Lisp Objects.
+                                                              (line  63)
 * permanent objects:                     The XEmacs Object System (Abstractly Speaking).
+                                                              (line 238)
 * pi, calculating:                       XEmacs From the Outside.
-* point:                                 Point.
-* pointers dumping:                      Pointers dumping.
+                                                              (line  34)
+* point:                                 Point.               (line   6)
+* pointers dumping:                      Pointers dumping.    (line   6)
 * positions, working with character and byte: Working With Character and Byte Positions.
+                                                              (line   6)
 * primitives, writing Lisp:              Writing Lisp Primitives.
-* progress bars:                         Progress Bars.
-* protection, garbage collection:        GCPROing.
-* pseudo_closer:                         Lstream Methods.
+                                                              (line   6)
+* progress bars:                         Progress Bars.       (line   6)
+* protection, garbage collection:        GCPROing.            (line   6)
+* pseudo_closer:                         Lstream Methods.     (line  51)
 * Purify:                                Techniques for XEmacs Developers.
+                                                              (line   6)
 * Quantify:                              Techniques for XEmacs Developers.
+                                                              (line   6)
 * radio buttons, checkboxes and:         Checkboxes and Radio Buttons.
+                                                              (line   6)
 * read syntax:                           The XEmacs Object System (Abstractly Speaking).
+                                                              (line 252)
 * read-eval-print:                       XEmacs From the Outside.
-* reader:                                Lstream Methods.
+                                                              (line   6)
+* reader:                                Lstream Methods.     (line   8)
 * reader and compiler, the Lisp:         The Lisp Reader and Compiler.
+                                                              (line   6)
 * reader's guide:                        A Reader's Guide to XEmacs Coding Conventions.
+                                                              (line   6)
 * redisplay mechanism, modules for the:  Modules for the Redisplay Mechanism.
+                                                              (line   6)
 * redisplay mechanism, the:              The Redisplay Mechanism.
+                                                              (line   6)
 * redisplay piece by piece:              Redisplay Piece by Piece.
+                                                              (line   6)
 * redisplay sections, critical:          Critical Redisplay Sections.
+                                                              (line   6)
 * regression testing, modules for:       Modules for Regression Testing.
-* reloading phase:                       Reloading phase.
-* relocating allocator:                  Low-Level Modules.
-* rename to XEmacs:                      XEmacs.
+                                                              (line   6)
+* reloading phase:                       Reloading phase.     (line   6)
+* relocating allocator:                  Low-Level Modules.   (line 105)
+* rename to XEmacs:                      XEmacs.              (line  21)
 * represented in C, how Lisp objects are: How Lisp Objects Are Represented in C.
-* rewinder:                              Lstream Methods.
-* RMS:                                   A History of Emacs.
+                                                              (line   6)
+* rewinder:                              Lstream Methods.     (line  38)
+* RMS:                                   A History of Emacs.  (line   6)
 * scanner:                               Modules for Other Aspects of the Lisp Interpreter and Object System.
-* scoping, dynamic:                      The Lisp Language.
-* scrollbars:                            Scrollbars.
-* seekable_p:                            Lstream Methods.
+                                                              (line  52)
+* scoping, dynamic:                      The Lisp Language.   (line   6)
+* scrollbars:                            Scrollbars.          (line   6)
+* seekable_p:                            Lstream Methods.     (line  41)
 * selections:                            Modules for Interfacing with X Windows.
+                                                              (line  55)
 * set_charptr_emchar:                    Working With Character and Byte Positions.
-* Sexton, Harlan:                        Lucid Emacs.
+                                                              (line  36)
+* Sexton, Harlan:                        Lucid Emacs.         (line  28)
 * sound, native:                         Modules for Interfacing with the Operating System.
+                                                              (line 131)
 * sound, network:                        Modules for Interfacing with the Operating System.
-* SPARCWorks:                            XEmacs.
+                                                              (line 135)
+* SPARCWorks:                            XEmacs.              (line   6)
 * specbinding stack; unwind-protects, dynamic binding; the: Dynamic Binding; The specbinding Stack; Unwind-Protects.
+                                                              (line   6)
 * special forms, simple:                 Simple Special Forms.
-* specifiers:                            Specifiers.
+                                                              (line   6)
+* specifiers:                            Specifiers.          (line   6)
 * stack frames; bindings, evaluation;:   Evaluation; Stack Frames; Bindings.
-* Stallman, Richard:                     A History of Emacs.
-* string:                                String.
+                                                              (line   6)
+* Stallman, Richard:                     A History of Emacs.  (line   6)
+* string:                                String.              (line   6)
 * string encoding, internal:             Internal String Encoding.
-* subprocesses:                          Subprocesses.
+                                                              (line   6)
+* subprocesses:                          Subprocesses.        (line   6)
 * subprocesses, asynchronous:            Modules for Interfacing with the Operating System.
+                                                              (line  18)
 * subprocesses, synchronous:             Modules for Interfacing with the Operating System.
-* Sun Microsystems:                      XEmacs.
-* sweep_bit_vectors_1:                   sweep_bit_vectors_1.
-* sweep_lcrecords_1:                     sweep_lcrecords_1.
-* sweep_strings:                         sweep_strings.
-* symbol:                                Symbol.
-* symbol values:                         Symbol Values.
+                                                              (line  13)
+* Sun Microsystems:                      XEmacs.              (line   6)
+* sweep_bit_vectors_1:                   sweep_bit_vectors_1. (line   6)
+* sweep_lcrecords_1:                     sweep_lcrecords_1.   (line   6)
+* sweep_strings:                         sweep_strings.       (line   6)
+* symbol:                                Symbol.              (line   6)
+* symbol values:                         Symbol Values.       (line   6)
 * symbols and variables:                 Symbols and Variables.
+                                                              (line   6)
 * symbols, introduction to:              Introduction to Symbols.
+                                                              (line   6)
 * synchronous subprocesses:              Modules for Interfacing with the Operating System.
-* tab controls:                          Tab Controls.
+                                                              (line  13)
+* tab controls:                          Tab Controls.        (line   6)
 * taxes, doing:                          XEmacs From the Outside.
+                                                              (line  34)
 * techniques for XEmacs developers:      Techniques for XEmacs Developers.
-* TECO:                                  A History of Emacs.
+                                                              (line   6)
+* TECO:                                  A History of Emacs.  (line   6)
 * temporary objects:                     The XEmacs Object System (Abstractly Speaking).
+                                                              (line 238)
 * testing, regression:                   Regression Testing XEmacs.
+                                                              (line   6)
 * text in a buffer, the:                 The Text in a Buffer.
+                                                              (line   6)
 * textual representation, buffers and:   Buffers and Textual Representation.
-* Thompson, Chuck:                       XEmacs.
-* throw, catch and:                      Catch and Throw.
-* types, dynamic:                        The Lisp Language.
-* types, lstream:                        Lstream Types.
+                                                              (line   6)
+* Thompson, Chuck:                       XEmacs.              (line   6)
+* throw, catch and:                      Catch and Throw.     (line   6)
+* types, dynamic:                        The Lisp Language.   (line   6)
+* types, lstream:                        Lstream Types.       (line   6)
 * types, proper use of unsigned:         Proper Use of Unsigned Types.
-* University of Illinois:                XEmacs.
+                                                              (line   6)
+* University of Illinois:                XEmacs.              (line   6)
 * unsigned types, proper use of:         Proper Use of Unsigned Types.
+                                                              (line   6)
 * unwind-protects, dynamic binding; the specbinding stack;: Dynamic Binding; The specbinding Stack; Unwind-Protects.
-* values, symbol:                        Symbol Values.
+                                                              (line   6)
+* values, symbol:                        Symbol Values.       (line   6)
 * variables, adding global Lisp:         Adding Global Lisp Variables.
+                                                              (line   6)
 * variables, symbols and:                Symbols and Variables.
-* vector:                                Vector.
-* vector, bit:                           Bit Vector.
-* version 18, through:                   Through Version 18.
-* version 19, GNU Emacs:                 GNU Emacs 19.
-* version 20, GNU Emacs:                 GNU Emacs 20.
+                                                              (line   6)
+* vector:                                Vector.              (line   6)
+* vector, bit:                           Bit Vector.          (line   6)
+* version 18, through:                   Through Version 18.  (line   6)
+* version 19, GNU Emacs:                 GNU Emacs 19.        (line   6)
+* version 20, GNU Emacs:                 GNU Emacs 20.        (line   6)
 * widget interface, generic:             Generic Widget Interface.
+                                                              (line   6)
 * widget library, Lucid:                 Lucid Widget Library.
-* widget-glyphs:                         Glyphs.
-* widget-glyphs in the MS-Windows environment: Glyphs.
-* widget-glyphs in the X environment:    Glyphs.
-* Win-Emacs:                             XEmacs.
+                                                              (line   6)
+* widget-glyphs:                         Glyphs.              (line 104)
+* widget-glyphs in the MS-Windows environment: Glyphs.        (line 107)
+* widget-glyphs in the X environment:    Glyphs.              (line 112)
+* Win-Emacs:                             XEmacs.              (line   6)
 * window (in Emacs):                     Modules for the Basic Displayable Lisp Objects.
-* window hierarchy:                      Window Hierarchy.
-* window object, the:                    The Window Object.
-* window point internals:                The Window Object.
+                                                              (line  63)
+* window hierarchy:                      Window Hierarchy.    (line   6)
+* window object, the:                    The Window Object.   (line   6)
+* window point internals:                The Window Object.   (line  22)
 * windows, consoles; devices; frames;:   Consoles; Devices; Frames; Windows.
+                                                              (line   6)
 * windows, introduction to consoles; devices; frames;: Introduction to Consoles; Devices; Frames; Windows.
-* Wing, Ben:                             XEmacs.
-* writer:                                Lstream Methods.
+                                                              (line   6)
+* Wing, Ben:                             XEmacs.              (line   6)
+* writer:                                Lstream Methods.     (line  26)
 * writing good comments:                 Writing Good Comments.
+                                                              (line   6)
 * writing Lisp primitives:               Writing Lisp Primitives.
+                                                              (line   6)
 * writing Mule-aware code, general guidelines for: General Guidelines for Writing Mule-Aware Code.
+                                                              (line   6)
 * writing new C code, rules when:        Rules When Writing New C Code.
-* X environment, widget-glyphs in the:   Glyphs.
+                                                              (line   6)
+* X environment, widget-glyphs in the:   Glyphs.              (line 112)
 * X Window System, interface to the:     Interface to the X Window System.
+                                                              (line   6)
 * X Windows, modules for interfacing with: Modules for Interfacing with X Windows.
-* XEmacs:                                XEmacs.
+                                                              (line   6)
+* XEmacs:                                XEmacs.              (line   6)
 * XEmacs from the inside:                XEmacs From the Inside.
+                                                              (line   6)
 * XEmacs from the outside:               XEmacs From the Outside.
+                                                              (line   6)
 * XEmacs from the perspective of building: XEmacs From the Perspective of Building.
-* XEmacs goes it alone:                  XEmacs.
+                                                              (line   6)
+* XEmacs goes it alone:                  XEmacs.              (line  45)
 * XEmacs object system (abstractly speaking), the: The XEmacs Object System (Abstractly Speaking).
-* Zawinski, Jamie:                       Lucid Emacs.
-* zero-length extents:                   Zero-Length Extents.
+                                                              (line   6)
+* Zawinski, Jamie:                       Lucid Emacs.         (line  28)
+* zero-length extents:                   Zero-Length Extents. (line   6)
 
 
index 774cfdb..42c4238 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -52,849 +52,868 @@ Foundation instead of in the original English.
 \1f
 Indirect:
 lispref.info-1: 2366
-lispref.info-2: 299153
-lispref.info-3: 596434
-lispref.info-4: 894447
-lispref.info-5: 1194382
-lispref.info-6: 1492927
-lispref.info-7: 1792530
-lispref.info-8: 2092512
-lispref.info-9: 2304231
+lispref.info-2: 300947
+lispref.info-3: 599882
+lispref.info-4: 898613
+lispref.info-5: 1197772
+lispref.info-6: 1495060
+lispref.info-7: 1791353
+lispref.info-8: 2090812
+lispref.info-9: 2361347
 \1f
 Tag Table:
 (Indirect)
 Node: Top\7f2366
-Node: Copying\7f50069
-Node: Introduction\7f69219
-Node: Caveats\7f70801
-Node: Lisp History\7f72477
-Node: Conventions\7f73730
-Node: Some Terms\7f74542
-Node: nil and t\7f75260
-Node: Evaluation Notation\7f76934
-Node: Printing Notation\7f77845
-Node: Error Messages\7f78715
-Node: Buffer Text Notation\7f79153
-Node: Format of Descriptions\7f80025
-Node: A Sample Function Description\7f80876
-Node: A Sample Variable Description\7f84859
-Node: Acknowledgements\7f85764
-Node: Packaging\7f87739
-Node: Package Overview\7f89486
-Node: The User View\7f91666
-Node: The Library Maintainer View\7f98125
-Node: Infrastructure\7f100037
-Node: Control Files\7f103981
-Node: Obtaining\7f106049
-Node: The Package Release Engineer View\7f106563
-Node: Package Terminology\7f107294
-Node: Building Packages\7f110118
-Node: Makefile Targets\7f111327
-Node: Local.rules File\7f113188
-Node: Creating Packages\7f120123
-Node: package-info.in\7f120657
-Node: Makefile\7f125512
-Node: Documenting Packages\7f139309
-Node: Issues\7f140602
-Node: Lisp Data Types\7f140717
-Node: Printed Representation\7f143266
-Node: Comments\7f145305
-Node: Primitive Types\7f146199
-Node: Programming Types\7f147855
-Node: Integer Type\7f149804
-Node: Floating Point Type\7f150838
-Node: Character Type\7f151454
-Node: Symbol Type\7f159355
-Node: Sequence Type\7f162047
-Node: Cons Cell Type\7f163563
-Node: Dotted Pair Notation\7f168044
-Node: Association List Type\7f170162
-Node: Array Type\7f171042
-Node: String Type\7f172505
-Node: Vector Type\7f175183
-Node: Bit Vector Type\7f175952
-Node: Function Type\7f176811
-Node: Macro Type\7f177921
-Node: Primitive Function Type\7f178615
-Node: Compiled-Function Type\7f180138
-Node: Autoload Type\7f180689
-Node: Char Table Type\7f181700
-Node: Hash Table Type\7f181871
-Node: Range Table Type\7f183022
-Node: Weak List Type\7f183872
-Node: Editing Types\7f184019
-Node: Buffer Type\7f185643
-Node: Marker Type\7f187667
-Node: Extent Type\7f188387
-Node: Window Type\7f189652
-Node: Frame Type\7f191060
-Node: Device Type\7f191852
-Node: Console Type\7f192675
-Node: Window Configuration Type\7f193873
-Node: Event Type\7f194568
-Node: Process Type\7f194729
-Node: Stream Type\7f195761
-Node: Keymap Type\7f196881
-Node: Syntax Table Type\7f197416
-Node: Display Table Type\7f198435
-Node: Database Type\7f198872
-Node: Charset Type\7f199035
-Node: Coding System Type\7f199196
-Node: ToolTalk Message Type\7f199377
-Node: ToolTalk Pattern Type\7f199573
-Node: Window-System Types\7f199742
-Node: Face Type\7f200885
-Node: Glyph Type\7f201013
-Node: Specifier Type\7f201166
-Node: Font Instance Type\7f201336
-Node: Color Instance Type\7f201523
-Node: Image Instance Type\7f201717
-Node: Toolbar Button Type\7f201912
-Node: Subwindow Type\7f202102
-Node: X Resource Type\7f202278
-Node: Type Predicates\7f202428
-Node: Equality Predicates\7f211554
-Node: Numbers\7f216362
-Node: Integer Basics\7f217814
-Node: Float Basics\7f220160
-Node: Predicates on Numbers\7f221899
-Node: Comparison of Numbers\7f223529
-Node: Numeric Conversions\7f227347
-Node: Arithmetic Operations\7f228810
-Node: Rounding Operations\7f234946
-Node: Bitwise Operations\7f236056
-Node: Math Functions\7f245099
-Node: Random Numbers\7f247631
-Node: Strings and Characters\7f249394
-Node: String Basics\7f250844
-Node: Predicates for Strings\7f253259
-Node: Creating Strings\7f254019
-Node: Predicates for Characters\7f259357
-Node: Character Codes\7f260428
-Node: Text Comparison\7f261848
-Node: String Conversion\7f265293
-Node: Modifying Strings\7f268960
-Node: String Properties\7f269598
-Node: Formatting Strings\7f270240
-Node: Character Case\7f279855
-Node: Case Tables\7f283406
-Node: Char Tables\7f287373
-Node: Char Table Types\7f288763
-Node: Working With Char Tables\7f290345
-Node: Lists\7f292362
-Node: Cons Cells\7f293482
-Node: Lists as Boxes\7f294815
-Node: List-related Predicates\7f297454
-Node: List Elements\7f299153
-Node: Building Lists\7f304179
-Node: Modifying Lists\7f310167
-Node: Setcar\7f310976
-Node: Setcdr\7f313404
-Node: Rearrangement\7f315922
-Node: Sets And Lists\7f321505
-Node: Association Lists\7f325730
-Ref: Association Lists-Footnote-1\7f335018
-Node: Property Lists\7f335223
-Node: Working With Normal Plists\7f336768
-Node: Working With Lax Plists\7f339105
-Node: Converting Plists To/From Alists\7f341382
-Node: Weak Lists\7f342730
-Node: Sequences Arrays Vectors\7f344890
-Node: Sequence Functions\7f347523
-Node: Arrays\7f351179
-Node: Array Functions\7f354240
-Node: Vectors\7f356770
-Node: Vector Functions\7f358265
-Node: Bit Vectors\7f360833
-Node: Bit Vector Functions\7f361675
-Node: Symbols\7f363971
-Node: Symbol Components\7f365017
-Node: Definitions\7f369197
-Node: Creating Symbols\7f371419
-Node: Symbol Properties\7f378450
-Node: Plists and Alists\7f379974
-Node: Object Plists\7f381720
-Node: Other Plists\7f384477
-Node: Evaluation\7f386273
-Node: Intro Eval\7f387075
-Ref: Intro Eval-Footnote-1\7f390425
-Node: Eval\7f390560
-Node: Forms\7f394976
-Node: Self-Evaluating Forms\7f396133
-Node: Symbol Forms\7f397643
-Node: Classifying Lists\7f398557
-Node: Function Indirection\7f399310
-Node: Function Forms\7f402406
-Node: Macro Forms\7f403400
-Node: Special Forms\7f404997
-Node: Autoloading\7f407303
-Node: Quoting\7f407798
-Node: Control Structures\7f409156
-Node: Sequencing\7f410774
-Node: Conditionals\7f413636
-Node: Combining Conditions\7f417056
-Node: Iteration\7f420323
-Node: Nonlocal Exits\7f422099
-Node: Catch and Throw\7f422797
-Node: Examples of Catch\7f426633
-Node: Errors\7f428649
-Node: Signaling Errors\7f430135
-Node: Processing of Errors\7f438879
-Node: Handling Errors\7f441154
-Node: Error Symbols\7f448390
-Node: Cleanups\7f452343
-Node: Variables\7f456118
-Node: Global Variables\7f457885
-Node: Constant Variables\7f458958
-Node: Local Variables\7f459581
-Node: Void Variables\7f464516
-Node: Defining Variables\7f468029
-Node: Accessing Variables\7f475190
-Node: Setting Variables\7f476612
-Node: Variable Scoping\7f481128
-Node: Scope\7f482724
-Node: Extent\7f484247
-Node: Impl of Scope\7f485723
-Node: Using Scoping\7f487683
-Node: Buffer-Local Variables\7f489202
-Node: Intro to Buffer-Local\7f490035
-Node: Creating Buffer-Local\7f492575
-Node: Default Value\7f498474
-Node: Variable Aliases\7f501614
-Node: Functions\7f503462
-Node: What Is a Function\7f504553
-Node: Lambda Expressions\7f508596
-Node: Lambda Components\7f509503
-Node: Simple Lambda\7f511328
-Node: Argument List\7f512982
-Node: Function Documentation\7f516707
-Node: Function Names\7f518646
-Node: Defining Functions\7f521216
-Node: Calling Functions\7f524253
-Node: Mapping Functions\7f528098
-Node: Anonymous Functions\7f530795
-Node: Function Cells\7f534037
-Node: Inline Functions\7f538852
-Node: Related Topics\7f540659
-Node: Macros\7f541709
-Node: Simple Macro\7f542990
-Node: Expansion\7f543722
-Node: Compiling Macros\7f546723
-Node: Defining Macros\7f548556
-Node: Backquote\7f549870
-Node: Problems with Macros\7f552264
-Node: Argument Evaluation\7f552955
-Node: Surprising Local Vars\7f555867
-Node: Eval During Expansion\7f557929
-Node: Repeated Expansion\7f559619
-Node: Customization\7f561532
-Node: Common Keywords\7f561998
-Node: Group Definitions\7f564839
-Node: Variable Definitions\7f567029
-Node: Customization Types\7f572016
-Node: Simple Types\7f573448
-Node: Composite Types\7f575602
-Node: Splicing into Lists\7f580289
-Node: Type Keywords\7f582121
-Node: Loading\7f585639
-Node: How Programs Do Loading\7f587311
-Node: Autoload\7f596434
-Node: Repeated Loading\7f602501
-Node: Named Features\7f604611
-Node: Unloading\7f611038
-Node: Hooks for Loading\7f613191
-Node: Byte Compilation\7f613908
-Node: Speed of Byte-Code\7f615972
-Node: Compilation Functions\7f617176
-Node: Compilation Options\7f623946
-Node: Docs and Compilation\7f633876
-Node: Dynamic Loading\7f636541
-Node: Eval During Compile\7f638917
-Node: Compiled-Function Objects\7f640179
-Node: Disassembly\7f644977
-Node: Different Behavior\7f652255
-Node: Debugging\7f653597
-Node: Debugger\7f655006
-Node: Error Debugging\7f656148
-Node: Infinite Loops\7f658898
-Node: Function Debugging\7f660139
-Node: Explicit Debug\7f662936
-Node: Using Debugger\7f663704
-Node: Debugger Commands\7f665563
-Node: Invoking the Debugger\7f669877
-Node: Internals of Debugger\7f673789
-Node: Syntax Errors\7f678673
-Node: Excess Open\7f679918
-Node: Excess Close\7f681790
-Node: Compilation Errors\7f683208
-Node: Edebug\7f684493
-Node: Using Edebug\7f686598
-Node: Instrumenting\7f689292
-Node: Edebug Execution Modes\7f692778
-Node: Jumping\7f695885
-Node: Edebug Misc\7f698226
-Node: Breakpoints\7f699612
-Node: Global Break Condition\7f702415
-Node: Embedded Breakpoints\7f703367
-Node: Trapping Errors\7f704319
-Node: Edebug Views\7f706392
-Node: Edebug Eval\7f708355
-Node: Eval List\7f709529
-Node: Reading in Edebug\7f712911
-Node: Printing in Edebug\7f713707
-Node: Tracing\7f715419
-Node: Coverage Testing\7f717304
-Node: The Outside Context\7f719342
-Node: Checking Whether to Stop\7f720288
-Node: Edebug Display Update\7f720932
-Node: Edebug Recursive Edit\7f722952
-Node: Instrumenting Macro Calls\7f724604
-Node: Specification List\7f727082
-Node: Backtracking\7f736492
-Node: Debugging Backquote\7f738427
-Node: Specification Examples\7f742130
-Node: Edebug Options\7f744194
-Node: Read and Print\7f749530
-Node: Streams Intro\7f750504
-Node: Input Streams\7f752519
-Node: Input Functions\7f757417
-Node: Output Streams\7f759474
-Node: Output Functions\7f763522
-Node: Output Variables\7f767819
-Node: Minibuffers\7f772620
-Node: Intro to Minibuffers\7f773769
-Node: Text from Minibuffer\7f775954
-Node: Object from Minibuffer\7f781045
-Node: Minibuffer History\7f785135
-Node: Completion\7f788111
-Node: Basic Completion\7f790083
-Node: Minibuffer Completion\7f794963
-Node: Completion Commands\7f798537
-Node: High-Level Completion\7f803191
-Node: Reading File Names\7f807937
-Node: Programmed Completion\7f811626
-Node: Yes-or-No Queries\7f814005
-Node: Multiple Queries\7f819739
-Node: Reading a Password\7f823803
-Node: Minibuffer Misc\7f825143
-Node: Command Loop\7f830020
-Node: Command Overview\7f831361
-Node: Defining Commands\7f834635
-Node: Using Interactive\7f835380
-Node: Interactive Codes\7f840150
-Node: Interactive Examples\7f845939
-Node: Interactive Call\7f847250
-Node: Command Loop Info\7f852661
-Node: Events\7f857637
-Node: Event Types\7f859095
-Node: Event Contents\7f861015
-Node: Event Predicates\7f865489
-Node: Accessing Mouse Event Positions\7f866804
-Node: Frame-Level Event Position Info\7f867500
-Node: Window-Level Event Position Info\7f868537
-Node: Event Text Position Info\7f870298
-Node: Event Glyph Position Info\7f872787
-Node: Event Toolbar Position Info\7f874107
-Node: Other Event Position Info\7f874778
-Node: Accessing Other Event Info\7f875187
-Node: Working With Events\7f876804
-Node: Converting Events\7f882802
-Node: Reading Input\7f886198
-Node: Key Sequence Input\7f887197
-Node: Reading One Event\7f889829
-Node: Dispatching an Event\7f892650
-Node: Quoted Character Input\7f893101
-Node: Peeking and Discarding\7f894447
-Node: Waiting\7f898349
-Node: Quitting\7f900660
-Node: Prefix Command Arguments\7f905065
-Node: Recursive Editing\7f910149
-Node: Disabling Commands\7f914940
-Node: Command History\7f917005
-Node: Keyboard Macros\7f918739
-Node: Keymaps\7f920953
-Node: Keymap Terminology\7f922527
-Node: Format of Keymaps\7f925453
-Node: Creating Keymaps\7f925861
-Node: Inheritance and Keymaps\7f927938
-Node: Key Sequences\7f930307
-Node: Prefix Keys\7f935100
-Node: Active Keymaps\7f938682
-Node: Key Lookup\7f948050
-Node: Functions for Key Lookup\7f953210
-Node: Changing Key Bindings\7f958908
-Node: Key Binding Commands\7f966067
-Node: Scanning Keymaps\7f968129
-Node: Other Keymap Functions\7f976695
-Node: Menus\7f977317
-Node: Menu Format\7f977909
-Node: Menubar Format\7f986552
-Node: Menubar\7f987174
-Node: Modifying Menus\7f990287
-Node: Menu Filters\7f995628
-Node: Pop-Up Menus\7f997521
-Node: Menu Accelerators\7f999849
-Node: Creating Menu Accelerators\7f1000602
-Node: Keyboard Menu Traversal\7f1001959
-Node: Menu Accelerator Functions\7f1002684
-Node: Buffers Menu\7f1005779
-Node: Dialog Boxes\7f1007070
-Node: Dialog Box Format\7f1007237
-Node: Dialog Box Functions\7f1008659
-Node: Toolbar\7f1009056
-Node: Toolbar Intro\7f1009491
-Node: Creating Toolbar\7f1011889
-Node: Toolbar Descriptor Format\7f1012806
-Node: Specifying the Toolbar\7f1017300
-Node: Other Toolbar Variables\7f1020904
-Node: Gutter\7f1025329
-Node: Gutter Intro\7f1025915
-Node: Creating Gutter\7f1027915
-Node: Gutter Descriptor Format\7f1030802
-Node: Specifying a Gutter\7f1035256
-Node: Other Gutter Variables\7f1038788
-Node: Common Gutter Widgets\7f1043172
-Node: Buffer Tabs\7f1044161
-Node: Progress Bars\7f1044299
-Node: Scrollbars\7f1044441
-Node: Drag and Drop\7f1044573
-Node: Supported Protocols\7f1045646
-Node: OffiX DND\7f1046146
-Node: CDE dt\7f1047150
-Node: MSWindows OLE\7f1047738
-Node: Loose ends\7f1047906
-Node: Drop Interface\7f1048295
-Node: Drag Interface\7f1049315
-Node: Modes\7f1049486
-Node: Major Modes\7f1050434
-Node: Major Mode Conventions\7f1053346
-Node: Example Major Modes\7f1059298
-Node: Auto Major Mode\7f1067329
-Node: Mode Help\7f1074776
-Node: Derived Modes\7f1075874
-Node: Minor Modes\7f1078062
-Node: Minor Mode Conventions\7f1079361
-Node: Keymaps and Minor Modes\7f1082221
-Node: Modeline Format\7f1083053
-Node: Modeline Data\7f1084818
-Node: Modeline Variables\7f1089968
-Node: %-Constructs\7f1094681
-Node: Hooks\7f1097665
-Node: Documentation\7f1104422
-Node: Documentation Basics\7f1105842
-Node: Accessing Documentation\7f1108890
-Node: Keys in Documentation\7f1115171
-Node: Describing Characters\7f1118651
-Node: Help Functions\7f1120997
-Node: Obsoleteness\7f1127444
-Node: Files\7f1130433
-Node: Visiting Files\7f1132355
-Node: Visiting Functions\7f1133857
-Node: Subroutines of Visiting\7f1139013
-Node: Saving Buffers\7f1141083
-Node: Reading from Files\7f1147173
-Node: Writing to Files\7f1149331
-Node: File Locks\7f1152045
-Node: Information about Files\7f1155109
-Node: Testing Accessibility\7f1155867
-Node: Kinds of Files\7f1159604
-Node: Truenames\7f1161282
-Node: File Attributes\7f1162281
-Node: Changing File Attributes\7f1167417
-Node: File Names\7f1172836
-Node: File Name Components\7f1174405
-Node: Directory Names\7f1176847
-Node: Relative File Names\7f1180074
-Node: File Name Expansion\7f1181040
-Node: Unique File Names\7f1184791
-Node: File Name Completion\7f1186403
-Node: User Name Completion\7f1189668
-Node: Contents of Directories\7f1191072
-Node: Create/Delete Dirs\7f1194382
-Node: Magic File Names\7f1195485
-Node: Partial Files\7f1201130
-Node: Intro to Partial Files\7f1201358
-Node: Creating a Partial File\7f1202595
-Node: Detached Partial Files\7f1203531
-Node: Format Conversion\7f1204650
-Node: Files and MS-DOS\7f1210145
-Node: Backups and Auto-Saving\7f1212206
-Node: Backup Files\7f1212878
-Node: Making Backups\7f1214272
-Node: Rename or Copy\7f1217021
-Node: Numbered Backups\7f1219511
-Node: Backup Names\7f1221743
-Node: Auto-Saving\7f1225032
-Node: Reverting\7f1233191
-Node: Buffers\7f1236524
-Node: Buffer Basics\7f1237937
-Node: Current Buffer\7f1239983
-Node: Buffer Names\7f1244684
-Node: Buffer File Name\7f1247888
-Node: Buffer Modification\7f1252004
-Node: Modification Time\7f1254244
-Node: Read Only Buffers\7f1257616
-Node: The Buffer List\7f1260852
-Node: Creating Buffers\7f1265666
-Node: Killing Buffers\7f1267809
-Node: Indirect Buffers\7f1271638
-Node: Windows\7f1274209
-Node: Basic Windows\7f1275684
-Node: Splitting Windows\7f1278779
-Node: Deleting Windows\7f1284102
-Node: Selecting Windows\7f1288017
-Node: Cyclic Window Ordering\7f1292237
-Node: Buffers and Windows\7f1297389
-Node: Displaying Buffers\7f1299164
-Node: Choosing Window\7f1304500
-Node: Window Point\7f1312415
-Node: Window Start\7f1314482
-Node: Vertical Scrolling\7f1319278
-Node: Horizontal Scrolling\7f1325473
-Node: Size of Window\7f1328999
-Node: Position of Window\7f1333714
-Node: Resizing Windows\7f1335964
-Node: Window Configurations\7f1341399
-Node: Frames\7f1344885
-Node: Creating Frames\7f1347223
-Node: Frame Properties\7f1348560
-Node: Property Access\7f1349373
-Node: Initial Properties\7f1350277
-Node: X Frame Properties\7f1352760
-Node: Size and Position\7f1357391
-Node: Frame Name\7f1359386
-Node: Frame Titles\7f1360297
-Node: Deleting Frames\7f1362118
-Node: Finding All Frames\7f1363089
-Node: Frames and Windows\7f1366317
-Node: Minibuffers and Frames\7f1369096
-Node: Input Focus\7f1370011
-Node: Visibility of Frames\7f1373113
-Node: Raising and Lowering\7f1375100
-Node: Frame Configurations\7f1377473
-Node: Frame Hooks\7f1378527
-Node: Consoles and Devices\7f1380329
-Node: Basic Console Functions\7f1383069
-Node: Basic Device Functions\7f1383492
-Node: Console Types and Device Classes\7f1384338
-Node: Connecting to a Console or Device\7f1386602
-Node: The Selected Console and Device\7f1388786
-Node: Console and Device I/O\7f1389812
-Node: Positions\7f1390576
-Node: Point\7f1391543
-Node: Motion\7f1394630
-Node: Character Motion\7f1395394
-Node: Word Motion\7f1397629
-Node: Buffer End Motion\7f1399016
-Node: Text Lines\7f1400550
-Node: Screen Lines\7f1405447
-Node: List Motion\7f1409507
-Node: Skipping Characters\7f1412987
-Node: Excursions\7f1415203
-Node: Narrowing\7f1418240
-Node: Markers\7f1423568
-Node: Overview of Markers\7f1424471
-Node: Predicates on Markers\7f1429160
-Node: Creating Markers\7f1430403
-Node: Information from Markers\7f1434600
-Node: Changing Markers\7f1435695
-Node: The Mark\7f1437220
-Node: The Region\7f1445721
-Node: Text\7f1451433
-Node: Near Point\7f1454129
-Node: Buffer Contents\7f1458313
-Node: Comparing Text\7f1459716
-Node: Insertion\7f1461121
-Node: Commands for Insertion\7f1465028
-Node: Deletion\7f1467919
-Node: User-Level Deletion\7f1471566
-Node: The Kill Ring\7f1475723
-Node: Kill Ring Concepts\7f1477894
-Node: Kill Functions\7f1478945
-Node: Yank Commands\7f1480865
-Node: Low-Level Kill Ring\7f1482733
-Node: Internals of Kill Ring\7f1485816
-Node: Undo\7f1488593
-Node: Maintaining Undo\7f1492927
-Node: Filling\7f1495542
-Node: Margins\7f1501533
-Node: Auto Filling\7f1505556
-Node: Sorting\7f1506734
-Node: Columns\7f1516045
-Node: Indentation\7f1519123
-Node: Primitive Indent\7f1519899
-Node: Mode-Specific Indent\7f1521221
-Node: Region Indent\7f1523750
-Node: Relative Indent\7f1526694
-Node: Indent Tabs\7f1529073
-Node: Motion by Indent\7f1530391
-Node: Case Changes\7f1531167
-Node: Text Properties\7f1534517
-Node: Examining Properties\7f1536327
-Node: Changing Properties\7f1538207
-Node: Property Search\7f1541795
-Node: Special Properties\7f1546511
-Node: Saving Properties\7f1546789
-Node: Substitution\7f1549928
-Node: Registers\7f1553195
-Node: Transposition\7f1555774
-Node: Change Hooks\7f1556665
-Node: Transformations\7f1558702
-Node: Searching and Matching\7f1563802
-Node: String Search\7f1564930
-Node: Regular Expressions\7f1569908
-Node: Syntax of Regexps\7f1571272
-Node: Regexp Example\7f1585872
-Node: Regexp Search\7f1588039
-Node: POSIX Regexps\7f1594373
-Node: Search and Replace\7f1596447
-Node: Match Data\7f1599812
-Node: Simple Match Data\7f1600939
-Node: Replacing Match\7f1605201
-Node: Entire Match Data\7f1607879
-Node: Saving Match Data\7f1610114
-Node: Searching and Case\7f1611499
-Node: Standard Regexps\7f1613530
-Node: Syntax Tables\7f1615725
-Node: Syntax Basics\7f1616836
-Node: Syntax Descriptors\7f1619812
-Node: Syntax Class Table\7f1621659
-Node: Syntax Flags\7f1627838
-Node: Syntax Table Functions\7f1632234
-Node: Motion and Syntax\7f1636529
-Node: Parsing Expressions\7f1637978
-Node: Standard Syntax Tables\7f1644073
-Node: Syntax Table Internals\7f1644914
-Node: Abbrevs\7f1645937
-Node: Abbrev Mode\7f1647738
-Node: Abbrev Tables\7f1648455
-Node: Defining Abbrevs\7f1649991
-Node: Abbrev Files\7f1651909
-Node: Abbrev Expansion\7f1653689
-Node: Standard Abbrev Tables\7f1658317
-Node: Extents\7f1659473
-Node: Intro to Extents\7f1660712
-Node: Creating and Modifying Extents\7f1664701
-Node: Extent Endpoints\7f1666282
-Node: Finding Extents\7f1669542
-Node: Mapping Over Extents\7f1673661
-Node: Extent Properties\7f1679781
-Node: Detached Extents\7f1690001
-Node: Extent Parents\7f1691857
-Node: Duplicable Extents\7f1693548
-Node: Extents and Events\7f1696766
-Node: Atomic Extents\7f1698724
-Node: Specifiers\7f1699168
-Node: Introduction to Specifiers\7f1701297
-Node: Simple Specifier Usage\7f1705478
-Node: Specifiers In-Depth\7f1711896
-Node: Specifier Instancing\7f1718530
-Node: Specifier Types\7f1721789
-Node: Adding Specifications\7f1726860
-Node: Retrieving Specifications\7f1738350
-Node: Specifier Tag Functions\7f1742095
-Node: Specifier Instancing Functions\7f1745326
-Node: Specifier Examples\7f1750181
-Node: Creating Specifiers\7f1757885
-Node: Specifier Validation Functions\7f1762228
-Node: Other Specification Functions\7f1764614
-Node: Faces and Window-System Objects\7f1768496
-Node: Faces\7f1768820
-Node: Merging Faces\7f1770434
-Node: Basic Face Functions\7f1772392
-Node: Face Properties\7f1774537
-Node: Face Convenience Functions\7f1784807
-Node: Other Face Display Functions\7f1788027
-Node: Fonts\7f1788839
-Node: Font Specifiers\7f1789537
-Node: Font Instances\7f1790722
-Node: Font Instance Names\7f1791689
-Node: Font Instance Size\7f1792530
-Node: Font Instance Characteristics\7f1793816
-Node: Font Convenience Functions\7f1794994
-Node: Colors\7f1796284
-Node: Color Specifiers\7f1796724
-Node: Color Instances\7f1799084
-Node: Color Instance Properties\7f1799825
-Node: Color Convenience Functions\7f1800451
-Node: Glyphs\7f1801504
-Node: Glyph Functions\7f1803163
-Node: Creating Glyphs\7f1803570
-Node: Glyph Properties\7f1816210
-Node: Glyph Convenience Functions\7f1825374
-Node: Glyph Dimensions\7f1829318
-Node: Images\7f1830398
-Node: Image Specifiers\7f1830847
-Node: Image Instantiator Conversion\7f1846336
-Node: Image Instances\7f1847701
-Node: Image Instance Types\7f1848449
-Node: Image Instance Functions\7f1851211
-Node: Glyph Types\7f1858268
-Node: Mouse Pointer\7f1860037
-Node: Redisplay Glyphs\7f1863037
-Node: Subwindows\7f1864070
-Node: Glyph Examples\7f1864333
-Node: Annotations\7f1872589
-Node: Annotation Basics\7f1873602
-Node: Annotation Primitives\7f1877537
-Node: Annotation Properties\7f1878876
-Node: Locating Annotations\7f1881916
-Node: Margin Primitives\7f1882753
-Node: Annotation Hooks\7f1884644
-Node: Display\7f1885301
-Node: Refresh Screen\7f1886276
-Node: Truncation\7f1888467
-Node: The Echo Area\7f1890989
-Node: Warnings\7f1897429
-Node: Invisible Text\7f1901862
-Node: Selective Display\7f1904573
-Node: Overlay Arrow\7f1908696
-Node: Temporary Displays\7f1910046
-Node: Blinking\7f1914165
-Node: Usual Display\7f1916346
-Node: Display Tables\7f1918892
-Node: Display Table Format\7f1919693
-Node: Active Display Table\7f1921132
-Node: Character Descriptors\7f1925124
-Node: Beeping\7f1925878
-Node: Hash Tables\7f1930643
-Node: Introduction to Hash Tables\7f1931251
-Node: Working With Hash Tables\7f1937807
-Node: Weak Hash Tables\7f1938924
-Node: Range Tables\7f1940938
-Node: Introduction to Range Tables\7f1941624
-Node: Working With Range Tables\7f1942070
-Node: Databases\7f1943029
-Node: Connecting to a Database\7f1943328
-Node: Working With a Database\7f1944435
-Node: Other Database Functions\7f1945309
-Node: Processes\7f1945878
-Node: Subprocess Creation\7f1948099
-Node: Synchronous Processes\7f1951547
-Node: MS-DOS Subprocesses\7f1958266
-Node: Asynchronous Processes\7f1959337
-Node: Deleting Processes\7f1963691
-Node: Process Information\7f1965559
-Node: Input to Processes\7f1969649
-Node: Signals to Processes\7f1972341
-Node: Output from Processes\7f1977153
-Node: Process Buffers\7f1977962
-Node: Filter Functions\7f1980838
-Node: Accepting Output\7f1986426
-Node: Sentinels\7f1987950
-Node: Process Window Size\7f1991437
-Node: Transaction Queues\7f1991786
-Node: Network\7f1993481
-Node: System Interface\7f1996112
-Node: Starting Up\7f1997379
-Node: Start-up Summary\7f1997970
-Node: Init File\7f2001521
-Node: Terminal-Specific\7f2003899
-Node: Command Line Arguments\7f2007055
-Node: Getting Out\7f2010541
-Node: Killing XEmacs\7f2011107
-Node: Suspending XEmacs\7f2012772
-Node: System Environment\7f2016148
-Node: User Identification\7f2022326
-Node: Time of Day\7f2025855
-Node: Time Conversion\7f2028639
-Node: Timers\7f2033878
-Node: Terminal Input\7f2036048
-Node: Input Modes\7f2036548
-Node: Translating Input\7f2039007
-Node: Recording Input\7f2043169
-Node: Terminal Output\7f2045269
-Node: Flow Control\7f2048887
-Node: Batch Mode\7f2052846
-Node: X-Windows\7f2054224
-Node: X Selections\7f2055093
-Node: X Server\7f2057841
-Node: Resources\7f2058289
-Node: Server Data\7f2063598
-Node: Grabs\7f2064802
-Node: X Miscellaneous\7f2066382
-Node: ToolTalk Support\7f2068767
-Node: XEmacs ToolTalk API Summary\7f2068984
-Node: Sending Messages\7f2070281
-Node: Example of Sending Messages\7f2070532
-Node: Elisp Interface for Sending Messages\7f2071591
-Node: Receiving Messages\7f2078187
-Node: Example of Receiving Messages\7f2078410
-Node: Elisp Interface for Receiving Messages\7f2079243
-Node: LDAP Support\7f2083100
-Node: Building XEmacs with LDAP support\7f2083591
-Node: XEmacs LDAP API\7f2084565
-Node: LDAP Variables\7f2085614
-Node: The High-Level LDAP API\7f2088214
-Node: The Low-Level LDAP API\7f2091684
-Node: The LDAP Lisp Object\7f2092512
-Node: Opening and Closing a LDAP Connection\7f2093064
-Node: Low-level Operations on a LDAP Server\7f2094879
-Node: LDAP Internationalization\7f2097600
-Node: LDAP Internationalization Variables\7f2098502
-Node: Encoder/Decoder Functions\7f2100233
-Node: Syntax of Search Filters\7f2101278
-Node: PostgreSQL Support\7f2102572
-Node: Building XEmacs with PostgreSQL support\7f2102964
-Node: XEmacs PostgreSQL libpq API\7f2104308
-Node: libpq Lisp Variables\7f2106184
-Node: libpq Lisp Symbols and DataTypes\7f2109178
-Node: Synchronous Interface Functions\7f2122435
-Node: Asynchronous Interface Functions\7f2126939
-Node: Large Object Support\7f2130441
-Node: Other libpq Functions\7f2131068
-Node: Unimplemented libpq Functions\7f2134105
-Node: XEmacs PostgreSQL libpq Examples\7f2139424
-Node: Internationalization\7f2145512
-Node: I18N Levels 1 and 2\7f2145855
-Node: I18N Level 3\7f2146558
-Node: Level 3 Basics\7f2146839
-Node: Level 3 Primitives\7f2147670
-Node: Dynamic Messaging\7f2149276
-Node: Domain Specification\7f2149736
-Node: Documentation String Extraction\7f2151403
-Node: I18N Level 4\7f2152318
-Node: MULE\7f2152507
-Node: Internationalization Terminology\7f2153553
-Node: Charsets\7f2165749
-Node: Charset Properties\7f2166442
-Node: Basic Charset Functions\7f2171154
-Node: Charset Property Functions\7f2173335
-Node: Predefined Charsets\7f2175550
-Node: MULE Characters\7f2178467
-Node: Composite Characters\7f2179342
-Node: Coding Systems\7f2180606
-Node: Coding System Types\7f2182743
-Node: ISO 2022\7f2186724
-Node: EOL Conversion\7f2198995
-Node: Coding System Properties\7f2200167
-Node: Basic Coding System Functions\7f2204490
-Node: Coding System Property Functions\7f2206524
-Node: Encoding and Decoding Text\7f2207082
-Node: Detection of Textual Encoding\7f2208218
-Node: Big5 and Shift-JIS Functions\7f2209754
-Node: Predefined Coding Systems\7f2210903
-Node: CCL\7f2222995
-Node: CCL Syntax\7f2226096
-Node: CCL Statements\7f2227669
-Node: CCL Expressions\7f2232299
-Node: Calling CCL\7f2234835
-Node: CCL Examples\7f2237837
-Node: Category Tables\7f2237971
-Node: Tips\7f2240327
-Node: Style Tips\7f2240966
-Node: Compilation Tips\7f2250841
-Node: Documentation Tips\7f2252752
-Node: Comment Tips\7f2258258
-Node: Library Headers\7f2261259
-Node: Building XEmacs and Object Allocation\7f2265227
-Node: Building XEmacs\7f2266107
-Node: Pure Storage\7f2272682
-Node: Garbage Collection\7f2275322
-Node: Standard Errors\7f2286163
-Node: Standard Buffer-Local Variables\7f2290369
-Node: Standard Keymaps\7f2293001
-Node: Standard Hooks\7f2296733
-Node: Index\7f2304231
+Node: Copying\7f50785
+Node: Introduction\7f69909
+Node: Caveats\7f71495
+Node: Lisp History\7f73179
+Node: Conventions\7f74440
+Node: Some Terms\7f75260
+Node: nil and t\7f75990
+Node: Evaluation Notation\7f77676
+Node: Printing Notation\7f78599
+Node: Error Messages\7f79481
+Node: Buffer Text Notation\7f79931
+Node: Format of Descriptions\7f80810
+Node: A Sample Function Description\7f81673
+Node: A Sample Variable Description\7f85674
+Node: Acknowledgements\7f86596
+Node: Packaging\7f88579
+Node: Package Overview\7f90330
+Node: The User View\7f92514
+Node: The Library Maintainer View\7f98981
+Node: Infrastructure\7f100901
+Node: Control Files\7f104857
+Node: Obtaining\7f106937
+Node: The Package Release Engineer View\7f107463
+Node: Package Terminology\7f108206
+Node: Building Packages\7f111066
+Node: Makefile Targets\7f112295
+Node: Local.rules File\7f114172
+Node: Creating Packages\7f121107
+Node: package-info.in\7f121645
+Node: Makefile\7f126504
+Node: Documenting Packages\7f140268
+Node: Issues\7f141561
+Node: Lisp Data Types\7f141684
+Node: Printed Representation\7f144237
+Node: Comments\7f146286
+Node: Primitive Types\7f147188
+Node: Programming Types\7f148852
+Node: Integer Type\7f150809
+Node: Floating Point Type\7f151855
+Node: Character Type\7f152483
+Node: Symbol Type\7f160396
+Node: Sequence Type\7f163100
+Node: Cons Cell Type\7f164628
+Node: Dotted Pair Notation\7f169121
+Node: Association List Type\7f171255
+Node: Array Type\7f172151
+Node: String Type\7f173626
+Node: Vector Type\7f176318
+Node: Bit Vector Type\7f177099
+Node: Function Type\7f177972
+Node: Macro Type\7f179096
+Node: Primitive Function Type\7f179804
+Node: Compiled-Function Type\7f181341
+Node: Autoload Type\7f181906
+Node: Char Table Type\7f182931
+Node: Hash Table Type\7f183116
+Node: Range Table Type\7f184281
+Node: Weak List Type\7f185145
+Node: Editing Types\7f185306
+Node: Buffer Type\7f186938
+Node: Marker Type\7f188974
+Node: Extent Type\7f189706
+Node: Window Type\7f190983
+Node: Frame Type\7f192403
+Node: Device Type\7f193207
+Node: Console Type\7f194042
+Node: Window Configuration Type\7f195252
+Node: Event Type\7f195959
+Node: Process Type\7f196132
+Node: Stream Type\7f197178
+Node: Keymap Type\7f198312
+Node: Syntax Table Type\7f198861
+Node: Display Table Type\7f199894
+Node: Database Type\7f200345
+Node: Charset Type\7f200522
+Node: Coding System Type\7f200697
+Node: ToolTalk Message Type\7f200892
+Node: ToolTalk Pattern Type\7f201102
+Node: Window-System Types\7f201285
+Node: Face Type\7f202436
+Node: Glyph Type\7f202576
+Node: Specifier Type\7f202741
+Node: Font Instance Type\7f202923
+Node: Color Instance Type\7f203122
+Node: Image Instance Type\7f203328
+Node: Toolbar Button Type\7f203535
+Node: Subwindow Type\7f203737
+Node: X Resource Type\7f203925
+Node: Type Predicates\7f204087
+Node: Equality Predicates\7f213222
+Node: Numbers\7f217921
+Node: Integer Basics\7f219377
+Node: Float Basics\7f221733
+Node: Predicates on Numbers\7f223481
+Node: Comparison of Numbers\7f225124
+Node: Numeric Conversions\7f228958
+Node: Arithmetic Operations\7f230434
+Node: Rounding Operations\7f236587
+Node: Bitwise Operations\7f237709
+Node: Math Functions\7f246666
+Node: Random Numbers\7f249224
+Node: Strings and Characters\7f250998
+Node: String Basics\7f252454
+Node: Predicates for Strings\7f254879
+Node: Creating Strings\7f255651
+Node: Predicates for Characters\7f261003
+Node: Character Codes\7f262086
+Node: Text Comparison\7f263520
+Node: String Conversion\7f266981
+Node: Modifying Strings\7f270662
+Node: String Properties\7f271311
+Node: Formatting Strings\7f271963
+Node: Character Case\7f281556
+Node: Case Tables\7f285082
+Node: Char Tables\7f289070
+Node: Char Table Types\7f290473
+Node: Working With Char Tables\7f292074
+Node: Lists\7f294115
+Node: Cons Cells\7f295241
+Node: Lists as Boxes\7f296584
+Node: List-related Predicates\7f299233
+Node: List Elements\7f300947
+Node: Building Lists\7f306017
+Node: Modifying Lists\7f312010
+Node: Setcar\7f312829
+Node: Setcdr\7f315262
+Node: Rearrangement\7f317795
+Node: Sets And Lists\7f323365
+Node: Association Lists\7f327604
+Ref: Association Lists-Footnote-1\7f336851
+Node: Property Lists\7f337056
+Node: Working With Normal Plists\7f338613
+Node: Working With Lax Plists\7f340971
+Node: Converting Plists To/From Alists\7f343269
+Node: Weak Lists\7f344635
+Node: Sequences Arrays Vectors\7f346812
+Node: Sequence Functions\7f349451
+Node: Arrays\7f353081
+Node: Array Functions\7f356152
+Node: Vectors\7f358636
+Node: Vector Functions\7f360141
+Node: Bit Vectors\7f362723
+Node: Bit Vector Functions\7f363575
+Node: Symbols\7f365886
+Node: Symbol Components\7f366952
+Node: Definitions\7f371142
+Node: Creating Symbols\7f373387
+Node: Symbol Properties\7f380425
+Node: Plists and Alists\7f381959
+Node: Object Plists\7f383719
+Node: Other Plists\7f386496
+Node: Evaluation\7f388310
+Node: Intro Eval\7f389118
+Ref: Intro Eval-Footnote-1\7f392491
+Node: Eval\7f392626
+Node: Forms\7f397059
+Node: Self-Evaluating Forms\7f398226
+Node: Symbol Forms\7f399750
+Node: Classifying Lists\7f400678
+Node: Function Indirection\7f401445
+Node: Function Forms\7f404556
+Node: Macro Forms\7f405564
+Node: Special Forms\7f407175
+Node: Autoloading\7f409495
+Node: Quoting\7f410004
+Node: Control Structures\7f411373
+Node: Sequencing\7f412997
+Node: Conditionals\7f415872
+Node: Combining Conditions\7f419304
+Node: Iteration\7f422584
+Node: Nonlocal Exits\7f424371
+Node: Catch and Throw\7f425079
+Node: Examples of Catch\7f428931
+Node: Errors\7f430951
+Node: Signaling Errors\7f432451
+Node: Processing of Errors\7f441173
+Node: Handling Errors\7f443468
+Node: Error Symbols\7f450693
+Node: Cleanups\7f454665
+Node: Variables\7f458455
+Node: Global Variables\7f460241
+Node: Constant Variables\7f461324
+Node: Local Variables\7f461957
+Node: Void Variables\7f466918
+Node: Defining Variables\7f470423
+Node: Accessing Variables\7f477597
+Node: Setting Variables\7f479000
+Node: Variable Scoping\7f483499
+Node: Scope\7f485105
+Node: Extent\7f486637
+Node: Impl of Scope\7f488127
+Node: Using Scoping\7f490101
+Node: Buffer-Local Variables\7f491634
+Node: Intro to Buffer-Local\7f492477
+Node: Creating Buffer-Local\7f495031
+Node: Default Value\7f500940
+Node: Variable Aliases\7f504078
+Node: Functions and Commands\7f505941
+Node: What Is a Function\7f507077
+Node: Lambda Expressions\7f511649
+Node: Lambda Components\7f512579
+Node: Simple Lambda\7f514418
+Node: Argument List\7f516086
+Node: Function Documentation\7f519825
+Node: Function Names\7f521778
+Node: Defining Functions\7f524371
+Node: Calling Functions\7f527414
+Node: Mapping Functions\7f531276
+Node: Anonymous Functions\7f533948
+Node: Function Cells\7f537214
+Node: Inline Functions\7f542036
+Node: Related Topics\7f543866
+Node: Macros\7f544941
+Node: Simple Macro\7f546241
+Node: Expansion\7f546983
+Node: Compiling Macros\7f549965
+Node: Defining Macros\7f551808
+Node: Backquote\7f553133
+Node: Problems with Macros\7f555532
+Node: Argument Evaluation\7f556233
+Node: Surprising Local Vars\7f559149
+Node: Eval During Expansion\7f561225
+Node: Repeated Expansion\7f562929
+Node: Customization\7f564851
+Node: Common Keywords\7f565323
+Node: Group Definitions\7f568174
+Node: Variable Definitions\7f570375
+Node: Customization Types\7f575373
+Node: Simple Types\7f576815
+Node: Composite Types\7f578983
+Node: Splicing into Lists\7f583684
+Node: Type Keywords\7f585530
+Node: Loading\7f589062
+Node: How Programs Do Loading\7f590740
+Node: Autoload\7f599882
+Node: Repeated Loading\7f605960
+Node: Named Features\7f608070
+Node: Unloading\7f614473
+Node: Hooks for Loading\7f616638
+Node: Byte Compilation\7f617366
+Node: Speed of Byte-Code\7f619436
+Node: Compilation Functions\7f620635
+Node: Compilation Options\7f627394
+Node: Docs and Compilation\7f637342
+Node: Dynamic Loading\7f640018
+Node: Eval During Compile\7f642406
+Node: Compiled-Function Objects\7f643680
+Node: Disassembly\7f648496
+Node: Different Behavior\7f655605
+Node: Debugging\7f656957
+Node: Debugger\7f658372
+Node: Error Debugging\7f659524
+Node: Infinite Loops\7f662291
+Node: Function Debugging\7f663547
+Node: Explicit Debug\7f666340
+Node: Using Debugger\7f667122
+Node: Debugger Commands\7f668995
+Node: Invoking the Debugger\7f673323
+Node: Internals of Debugger\7f677235
+Node: Syntax Errors\7f682119
+Node: Excess Open\7f683374
+Node: Excess Close\7f685260
+Node: Compilation Errors\7f686692
+Node: Edebug\7f687987
+Node: Using Edebug\7f690102
+Node: Instrumenting\7f692810
+Node: Edebug Execution Modes\7f696310
+Node: Jumping\7f699431
+Node: Edebug Misc\7f701786
+Node: Breakpoints\7f703186
+Node: Global Break Condition\7f706003
+Node: Embedded Breakpoints\7f706973
+Node: Trapping Errors\7f707943
+Node: Edebug Views\7f710030
+Node: Edebug Eval\7f712007
+Node: Eval List\7f713195
+Node: Reading in Edebug\7f716593
+Node: Printing in Edebug\7f717405
+Node: Tracing\7f719133
+Node: Coverage Testing\7f721034
+Node: The Outside Context\7f723089
+Node: Checking Whether to Stop\7f724051
+Node: Edebug Display Update\7f724715
+Node: Edebug Recursive Edit\7f726755
+Node: Instrumenting Macro Calls\7f728427
+Node: Specification List\7f730917
+Node: Backtracking\7f740347
+Node: Debugging Backquote\7f742302
+Node: Specification Examples\7f746015
+Node: Edebug Options\7f748084
+Node: Read and Print\7f753452
+Node: Streams Intro\7f754432
+Node: Input Streams\7f756457
+Node: Input Functions\7f761340
+Node: Output Streams\7f763400
+Node: Output Functions\7f767413
+Node: Output Variables\7f771726
+Node: Minibuffers\7f776535
+Node: Intro to Minibuffers\7f777690
+Node: Text from Minibuffer\7f779885
+Node: Object from Minibuffer\7f784989
+Node: Minibuffer History\7f789053
+Node: Completion\7f792048
+Node: Basic Completion\7f794030
+Node: Minibuffer Completion\7f798907
+Node: Completion Commands\7f802476
+Node: High-Level Completion\7f807155
+Node: Reading File Names\7f811858
+Node: Programmed Completion\7f815513
+Node: Yes-or-No Queries\7f817906
+Node: Multiple Queries\7f823575
+Node: Reading a Password\7f827650
+Node: Minibuffer Misc\7f829003
+Node: Command Loop\7f833908
+Node: Command Overview\7f835255
+Node: Defining Commands\7f838541
+Node: Using Interactive\7f839296
+Node: Interactive Codes\7f844084
+Node: Interactive Examples\7f849887
+Node: Interactive Call\7f851197
+Node: Command Loop Info\7f856583
+Node: Events\7f861576
+Node: Event Types\7f863045
+Node: Event Contents\7f864979
+Node: Event Predicates\7f869468
+Node: Accessing Mouse Event Positions\7f870808
+Node: Frame-Level Event Position Info\7f871518
+Node: Window-Level Event Position Info\7f872576
+Node: Event Text Position Info\7f874359
+Node: Event Glyph Position Info\7f876872
+Node: Event Toolbar Position Info\7f878214
+Node: Other Event Position Info\7f878905
+Node: Accessing Other Event Info\7f879333
+Node: Working With Events\7f880973
+Node: Converting Events\7f886918
+Node: Reading Input\7f890331
+Node: Key Sequence Input\7f891340
+Node: Reading One Event\7f893967
+Node: Dispatching an Event\7f896806
+Node: Quoted Character Input\7f897272
+Node: Peeking and Discarding\7f898613
+Node: Waiting\7f902535
+Node: Quitting\7f904858
+Node: Prefix Command Arguments\7f909276
+Node: Recursive Editing\7f914321
+Node: Disabling Commands\7f919129
+Node: Command History\7f921209
+Node: Keyboard Macros\7f922956
+Node: Keymaps\7f925186
+Node: Keymap Terminology\7f926766
+Node: Format of Keymaps\7f929702
+Node: Creating Keymaps\7f930121
+Node: Inheritance and Keymaps\7f932203
+Node: Key Sequences\7f934586
+Node: Prefix Keys\7f939390
+Node: Active Keymaps\7f942978
+Node: Key Lookup\7f952359
+Node: Functions for Key Lookup\7f957529
+Node: Changing Key Bindings\7f963234
+Node: Key Binding Commands\7f970358
+Node: Scanning Keymaps\7f972436
+Node: Other Keymap Functions\7f981020
+Node: Menus\7f981656
+Node: Menu Format\7f982254
+Node: Menubar Format\7f990908
+Node: Menubar\7f991540
+Node: Modifying Menus\7f994671
+Node: Menu Filters\7f1000031
+Node: Pop-Up Menus\7f1001937
+Node: Menu Accelerators\7f1004285
+Node: Creating Menu Accelerators\7f1005048
+Node: Keyboard Menu Traversal\7f1006419
+Node: Menu Accelerator Functions\7f1007158
+Node: Buffers Menu\7f1010272
+Node: Dialog Boxes\7f1011577
+Node: Dialog Box Format\7f1011750
+Node: Dialog Box Functions\7f1013182
+Node: Toolbar\7f1013590
+Node: Toolbar Intro\7f1014031
+Node: Creating Toolbar\7f1016439
+Node: Toolbar Descriptor Format\7f1017367
+Node: Specifying the Toolbar\7f1021873
+Node: Other Toolbar Variables\7f1025495
+Node: Gutter\7f1029943
+Node: Gutter Intro\7f1030535
+Node: Creating Gutter\7f1032545
+Node: Gutter Descriptor Format\7f1035445
+Node: Specifying a Gutter\7f1039911
+Node: Other Gutter Variables\7f1043461
+Node: Common Gutter Widgets\7f1047868
+Node: Buffer Tabs\7f1048867
+Node: Progress Bars\7f1049019
+Node: Scrollbars\7f1049175
+Node: Drag and Drop\7f1049313
+Node: Supported Protocols\7f1050392
+Node: OffiX DND\7f1050902
+Node: CDE dt\7f1051920
+Node: MSWindows OLE\7f1052522
+Node: Loose ends\7f1052704
+Node: Drop Interface\7f1053107
+Node: Drag Interface\7f1054137
+Node: Modes\7f1054318
+Node: Major Modes\7f1055272
+Node: Major Mode Conventions\7f1058749
+Node: Example Major Modes\7f1065249
+Node: Auto Major Mode\7f1073264
+Node: Mode Help\7f1080737
+Node: Derived Modes\7f1081851
+Node: Minor Modes\7f1084156
+Node: Minor Mode Conventions\7f1085465
+Node: Keymaps and Minor Modes\7f1088339
+Node: Modeline Format\7f1089185
+Node: Modeline Data\7f1090961
+Node: Modeline Variables\7f1096126
+Node: %-Constructs\7f1100861
+Node: Hooks\7f1103859
+Node: Documentation\7f1112117
+Node: Documentation Basics\7f1113543
+Node: Accessing Documentation\7f1116601
+Node: Keys in Documentation\7f1122868
+Node: Describing Characters\7f1126339
+Node: Help Functions\7f1128698
+Node: Obsoleteness\7f1135155
+Node: Files\7f1138317
+Node: Visiting Files\7f1140245
+Node: Visiting Functions\7f1141757
+Node: Subroutines of Visiting\7f1146934
+Node: Saving Buffers\7f1149020
+Node: Reading from Files\7f1155130
+Node: Writing to Files\7f1157299
+Node: File Locks\7f1160025
+Node: Information about Files\7f1163103
+Node: Testing Accessibility\7f1163871
+Node: Kinds of Files\7f1167629
+Node: Truenames\7f1169324
+Node: File Attributes\7f1170338
+Node: Changing File Attributes\7f1175451
+Node: File Names\7f1180868
+Node: File Name Components\7f1182447
+Node: Directory Names\7f1184907
+Node: Relative File Names\7f1188152
+Node: File Name Expansion\7f1189133
+Node: Unique File Names\7f1192902
+Node: File Name Completion\7f1194530
+Node: User Name Completion\7f1197772
+Node: Contents of Directories\7f1199193
+Node: Create/Delete Dirs\7f1202516
+Node: Magic File Names\7f1203633
+Node: Partial Files\7f1209295
+Node: Intro to Partial Files\7f1209535
+Node: Creating a Partial File\7f1210788
+Node: Detached Partial Files\7f1211741
+Node: Format Conversion\7f1212876
+Node: Files and MS-DOS\7f1218389
+Node: Backups and Auto-Saving\7f1220468
+Node: Backup Files\7f1221146
+Node: Making Backups\7f1222550
+Node: Rename or Copy\7f1225318
+Node: Numbered Backups\7f1227825
+Node: Backup Names\7f1230076
+Node: Auto-Saving\7f1233373
+Node: Reverting\7f1241559
+Node: Buffers\7f1244907
+Node: Buffer Basics\7f1246326
+Node: Current Buffer\7f1248383
+Node: Buffer Names\7f1253096
+Node: Buffer File Name\7f1256304
+Node: Buffer Modification\7f1260437
+Node: Modification Time\7f1262691
+Node: Read Only Buffers\7f1266078
+Node: The Buffer List\7f1269328
+Node: Creating Buffers\7f1274146
+Node: Killing Buffers\7f1276301
+Node: Indirect Buffers\7f1280127
+Node: Windows\7f1282713
+Node: Basic Windows\7f1284194
+Node: Splitting Windows\7f1287300
+Node: Deleting Windows\7f1292627
+Node: Selecting Windows\7f1296556
+Node: Cyclic Window Ordering\7f1300791
+Node: Buffers and Windows\7f1305957
+Node: Displaying Buffers\7f1307745
+Node: Choosing Window\7f1313095
+Node: Window Point\7f1321038
+Node: Window Start\7f1323117
+Node: Vertical Scrolling\7f1327899
+Node: Horizontal Scrolling\7f1334104
+Node: Size of Window\7f1337646
+Node: Position of Window\7f1342380
+Node: Resizing Windows\7f1344646
+Node: Window Configurations\7f1350102
+Node: Frames\7f1353604
+Node: Creating Frames\7f1355949
+Node: Frame Properties\7f1357297
+Node: Property Access\7f1358120
+Node: Initial Properties\7f1359042
+Node: X Frame Properties\7f1361542
+Node: Size and Position\7f1366187
+Node: Frame Name\7f1368202
+Node: Frame Titles\7f1369129
+Node: Deleting Frames\7f1370963
+Node: Finding All Frames\7f1371946
+Node: Frames and Windows\7f1375189
+Node: Minibuffers and Frames\7f1377985
+Node: Input Focus\7f1378911
+Node: Visibility of Frames\7f1382028
+Node: Raising and Lowering\7f1384032
+Node: Frame Configurations\7f1386423
+Node: Frame Hooks\7f1387491
+Node: Consoles and Devices\7f1389311
+Node: Basic Console Functions\7f1392059
+Node: Basic Device Functions\7f1392494
+Node: Console Types and Device Classes\7f1393354
+Node: Connecting to a Console or Device\7f1395634
+Node: The Selected Console and Device\7f1397837
+Node: Console and Device I/O\7f1398877
+Node: Positions\7f1399655
+Node: Point\7f1400628
+Node: Motion\7f1403731
+Node: Character Motion\7f1404505
+Node: Word Motion\7f1406757
+Node: Buffer End Motion\7f1408161
+Node: Text Lines\7f1409711
+Node: Screen Lines\7f1414636
+Node: List Motion\7f1418713
+Node: Skipping Characters\7f1422196
+Node: Excursions\7f1424408
+Node: Narrowing\7f1427460
+Node: Markers\7f1432782
+Node: Overview of Markers\7f1433691
+Node: Predicates on Markers\7f1438365
+Node: Creating Markers\7f1439623
+Node: Information from Markers\7f1443715
+Node: Changing Markers\7f1444812
+Node: The Mark\7f1446349
+Node: The Region\7f1454871
+Node: Text\7f1460605
+Node: Near Point\7f1463307
+Node: Buffer Contents\7f1467499
+Node: Comparing Text\7f1468894
+Node: Insertion\7f1470310
+Node: Commands for Insertion\7f1474212
+Node: Deletion\7f1477118
+Node: User-Level Deletion\7f1480780
+Node: The Kill Ring\7f1484892
+Node: Kill Ring Concepts\7f1487073
+Node: Kill Functions\7f1488138
+Node: Yank Commands\7f1490074
+Node: Low-Level Kill Ring\7f1491958
+Node: Internals of Kill Ring\7f1495060
+Node: Undo\7f1497854
+Node: Maintaining Undo\7f1502201
+Node: Filling\7f1504833
+Node: Margins\7f1510846
+Node: Auto Filling\7f1514892
+Node: Sorting\7f1516083
+Node: Columns\7f1525414
+Node: Indentation\7f1528506
+Node: Primitive Indent\7f1529294
+Node: Mode-Specific Indent\7f1530635
+Node: Region Indent\7f1533185
+Node: Relative Indent\7f1536149
+Node: Indent Tabs\7f1538546
+Node: Motion by Indent\7f1539882
+Node: Case Changes\7f1540677
+Node: Text Properties\7f1544025
+Node: Examining Properties\7f1545890
+Node: Changing Properties\7f1547790
+Node: Property Search\7f1551398
+Node: Special Properties\7f1556156
+Node: Saving Properties\7f1556450
+Node: Fields\7f1559622
+Node: Substitution\7f1565314
+Node: Registers\7f1568555
+Node: Transposition\7f1571151
+Node: Change Hooks\7f1572055
+Node: Transformations\7f1574109
+Node: Searching and Matching\7f1579196
+Node: String Search\7f1580330
+Node: Regular Expressions\7f1585282
+Node: Syntax of Regexps\7f1586656
+Node: Regexp Example\7f1602189
+Node: Regexp Search\7f1604370
+Node: POSIX Regexps\7f1610650
+Node: Search and Replace\7f1612738
+Node: Match Data\7f1616115
+Node: Simple Match Data\7f1617252
+Node: Replacing Match\7f1621501
+Node: Entire Match Data\7f1624194
+Node: Saving Match Data\7f1626445
+Node: Searching and Case\7f1627845
+Node: Standard Regexps\7f1629889
+Node: Syntax Tables\7f1632098
+Node: Syntax Basics\7f1633215
+Node: Syntax Descriptors\7f1636202
+Node: Syntax Class Table\7f1638059
+Node: Syntax Flags\7f1644266
+Node: Syntax Table Functions\7f1648676
+Node: Motion and Syntax\7f1652927
+Node: Parsing Expressions\7f1654389
+Node: Standard Syntax Tables\7f1660499
+Node: Syntax Table Internals\7f1661354
+Node: Abbrevs\7f1662387
+Node: Abbrev Mode\7f1664194
+Node: Abbrev Tables\7f1664923
+Node: Defining Abbrevs\7f1666474
+Node: Abbrev Files\7f1668405
+Node: Abbrev Expansion\7f1670200
+Node: Standard Abbrev Tables\7f1674829
+Node: Extents\7f1676001
+Node: Intro to Extents\7f1677247
+Node: Creating and Modifying Extents\7f1681246
+Node: Extent Endpoints\7f1682841
+Node: Finding Extents\7f1686115
+Node: Mapping Over Extents\7f1690248
+Node: Extent Properties\7f1696382
+Node: Detached Extents\7f1706635
+Node: Extent Parents\7f1708505
+Node: Duplicable Extents\7f1710210
+Node: Extents and Events\7f1713438
+Node: Atomic Extents\7f1715411
+Node: Specifiers\7f1715867
+Node: Introduction to Specifiers\7f1718003
+Node: Simple Specifier Usage\7f1722194
+Node: Specifiers In-Depth\7f1728607
+Node: Specifier Instancing\7f1735251
+Node: Specifier Types\7f1738520
+Node: Adding Specifications\7f1743611
+Node: Retrieving Specifications\7f1755119
+Node: Specifier Tag Functions\7f1758877
+Node: Specifier Instancing Functions\7f1762126
+Node: Specifier Examples\7f1766994
+Node: Creating Specifiers\7f1774585
+Node: Specifier Validation Functions\7f1778947
+Node: Other Specification Functions\7f1781356
+Node: Faces and Window-System Objects\7f1785264
+Node: Faces\7f1785594
+Node: Merging Faces\7f1787218
+Node: Basic Face Functions\7f1789190
+Node: Face Properties\7f1791353
+Node: Face Convenience Functions\7f1801686
+Node: Other Face Display Functions\7f1805445
+Node: Fonts\7f1806274
+Node: Font Specifiers\7f1806982
+Node: Font Instances\7f1808183
+Node: Font Instance Names\7f1809166
+Node: Font Instance Size\7f1810024
+Node: Font Instance Characteristics\7f1811327
+Node: Font Convenience Functions\7f1812525
+Node: Colors\7f1813832
+Node: Color Specifiers\7f1814282
+Node: Color Instances\7f1816659
+Node: Color Instance Properties\7f1817415
+Node: Color Convenience Functions\7f1818057
+Node: Glyphs\7f1819126
+Node: Glyph Intro\7f1820202
+Node: Images\7f1823219
+Node: Image Specifiers\7f1823582
+Node: Image Instantiator Conversion\7f1833189
+Node: Image Instantiator Formats\7f1834733
+Node: Image Instances\7f1849205
+Node: Image Instance Types\7f1849965
+Node: Image Instance Functions\7f1852955
+Node: Using Glyphs\7f1860449
+Node: Creating Glyphs\7f1864588
+Node: Buffer Glyphs\7f1869820
+Node: Redisplay Glyphs\7f1871256
+Node: Frame Glyphs\7f1873902
+Node: External Glyphs\7f1876050
+Node: Native GUI Widgets\7f1880930
+Node: Introduction to Widgets\7f1881596
+Node: Lisp API to Native Widgets\7f1882613
+Node: Layouts\7f1884217
+Node: Primitive Widgets\7f1887753
+Node: Subwindows\7f1888460
+Node: Manipulating Glyphs\7f1888723
+Node: Glyph Properties\7f1889417
+Node: Glyph Convenience Functions\7f1898751
+Node: Glyph Dimensions\7f1902724
+Node: Glyph Types\7f1903846
+Node: Glyph Examples\7f1905636
+Node: Annotations\7f1913901
+Node: Annotation Basics\7f1914920
+Node: Annotation Primitives\7f1918865
+Node: Annotation Properties\7f1920217
+Node: Locating Annotations\7f1923296
+Node: Margin Primitives\7f1924147
+Node: Annotation Hooks\7f1926054
+Node: Display\7f1926721
+Node: Refresh Screen\7f1927702
+Node: Truncation\7f1929907
+Node: The Echo Area\7f1932442
+Node: Warnings\7f1938872
+Node: Invisible Text\7f1943261
+Node: Selective Display\7f1945983
+Node: Overlay Arrow\7f1950078
+Node: Temporary Displays\7f1951440
+Node: Blinking\7f1955502
+Node: Usual Display\7f1957698
+Node: Display Tables\7f1960259
+Node: Display Table Format\7f1961072
+Node: Active Display Table\7f1962528
+Node: Character Descriptors\7f1966537
+Node: Beeping\7f1967307
+Node: Hash Tables\7f1972093
+Node: Introduction to Hash Tables\7f1972708
+Node: Working With Hash Tables\7f1979282
+Node: Weak Hash Tables\7f1980414
+Node: Range Tables\7f1982438
+Node: Introduction to Range Tables\7f1983131
+Node: Working With Range Tables\7f1983589
+Node: Databases\7f1984563
+Node: Connecting to a Database\7f1984869
+Node: Working With a Database\7f1985989
+Node: Other Database Functions\7f1986877
+Node: Processes\7f1987460
+Node: Subprocess Creation\7f1989688
+Node: Synchronous Processes\7f1993150
+Node: MS-DOS Subprocesses\7f1999821
+Node: Asynchronous Processes\7f2000904
+Node: Deleting Processes\7f2005231
+Node: Process Information\7f2007112
+Node: Input to Processes\7f2011222
+Node: Signals to Processes\7f2013907
+Node: Output from Processes\7f2018736
+Node: Process Buffers\7f2019555
+Node: Filter Functions\7f2022449
+Node: Accepting Output\7f2028053
+Node: Sentinels\7f2029592
+Node: Process Window Size\7f2033094
+Node: Transaction Queues\7f2033456
+Node: Network\7f2035166
+Node: System Interface\7f2037810
+Node: Starting Up\7f2039083
+Node: Start-up Summary\7f2039684
+Node: Init File\7f2043255
+Node: Terminal-Specific\7f2045651
+Node: Command Line Arguments\7f2048824
+Node: Getting Out\7f2052329
+Node: Killing XEmacs\7f2052905
+Node: Suspending XEmacs\7f2054587
+Node: System Environment\7f2057950
+Node: User Identification\7f2064131
+Node: Time of Day\7f2067678
+Node: Time Conversion\7f2070475
+Node: Timers\7f2075727
+Node: Terminal Input\7f2077909
+Node: Input Modes\7f2078419
+Node: Translating Input\7f2080894
+Node: Recording Input\7f2085062
+Node: Terminal Output\7f2087180
+Node: Flow Control\7f2090812
+Node: Batch Mode\7f2094785
+Node: X-Windows\7f2096177
+Node: X Selections\7f2097052
+Node: X Server\7f2099815
+Node: Resources\7f2100273
+Node: Server Data\7f2105600
+Node: Grabs\7f2106821
+Node: X Miscellaneous\7f2108419
+Node: ToolTalk Support\7f2110821
+Node: XEmacs ToolTalk API Summary\7f2111044
+Node: Sending Messages\7f2112351
+Node: Example of Sending Messages\7f2112612
+Node: Elisp Interface for Sending Messages\7f2113675
+Node: Receiving Messages\7f2120303
+Node: Example of Receiving Messages\7f2120536
+Node: Elisp Interface for Receiving Messages\7f2121373
+Node: LDAP Support\7f2125262
+Node: Building XEmacs with LDAP support\7f2125759
+Node: XEmacs LDAP API\7f2126743
+Node: LDAP Variables\7f2127802
+Node: The High-Level LDAP API\7f2130421
+Node: The Low-Level LDAP API\7f2133919
+Node: The LDAP Lisp Object\7f2134761
+Node: Opening and Closing a LDAP Connection\7f2135334
+Node: Low-level Operations on a LDAP Server\7f2137169
+Node: LDAP Internationalization\7f2139912
+Node: LDAP Internationalization Variables\7f2140829
+Node: Encoder/Decoder Functions\7f2142584
+Node: Syntax of Search Filters\7f2143653
+Node: PostgreSQL Support\7f2144957
+Node: Building XEmacs with PostgreSQL support\7f2145355
+Node: XEmacs PostgreSQL libpq API\7f2146709
+Node: libpq Lisp Variables\7f2148595
+Node: libpq Lisp Symbols and DataTypes\7f2151618
+Node: Synchronous Interface Functions\7f2164913
+Node: Asynchronous Interface Functions\7f2169436
+Node: Large Object Support\7f2172967
+Node: Other libpq Functions\7f2173610
+Node: Unimplemented libpq Functions\7f2176667
+Node: XEmacs PostgreSQL libpq Examples\7f2182029
+Node: Internationalization\7f2188122
+Node: I18N Levels 1 and 2\7f2188471
+Node: I18N Level 3\7f2189184
+Node: Level 3 Basics\7f2189475
+Node: Level 3 Primitives\7f2190320
+Node: Dynamic Messaging\7f2191945
+Node: Domain Specification\7f2192419
+Node: Documentation String Extraction\7f2194103
+Node: I18N Level 4\7f2195032
+Node: MULE\7f2195231
+Node: Internationalization Terminology\7f2196283
+Node: Charsets\7f2208489
+Node: Charset Properties\7f2209193
+Node: Basic Charset Functions\7f2213919
+Node: Charset Property Functions\7f2216121
+Node: Predefined Charsets\7f2218363
+Node: MULE Characters\7f2221294
+Node: Composite Characters\7f2222184
+Node: Coding Systems\7f2223462
+Node: Coding System Types\7f2225610
+Node: ISO 2022\7f2229605
+Node: EOL Conversion\7f2241871
+Node: Coding System Properties\7f2243057
+Node: Basic Coding System Functions\7f2247394
+Node: Coding System Property Functions\7f2249450
+Node: Encoding and Decoding Text\7f2250025
+Node: Detection of Textual Encoding\7f2251177
+Node: Big5 and Shift-JIS Functions\7f2252733
+Node: Predefined Coding Systems\7f2253900
+Node: CCL\7f2266006
+Node: CCL Syntax\7f2269129
+Node: CCL Statements\7f2270716
+Node: CCL Expressions\7f2275360
+Node: Calling CCL\7f2277910
+Node: CCL Example\7f2280930
+Node: Four bits to ASCII\7f2283432
+Node: URI Encoding constants\7f2285024
+Node: Numeric to ASCII-hexadecimal conversion\7f2286064
+Node: Characters to be preserved\7f2287435
+Ref: Characters to be preserved-Footnote-1\7f2288972
+Node: The program to decode to internal format\7f2289103
+Node: The program to encode from internal format\7f2291816
+Node: The actual coding system\7f2293507
+Node: Category Tables\7f2294891
+Node: Tips\7f2297264
+Node: Style Tips\7f2297925
+Node: Compilation Tips\7f2307808
+Node: Documentation Tips\7f2309717
+Node: Comment Tips\7f2315231
+Node: Library Headers\7f2318240
+Node: Building XEmacs and Object Allocation\7f2322201
+Node: Building XEmacs\7f2323103
+Node: Pure Storage\7f2329693
+Node: Garbage Collection\7f2332344
+Node: Standard Errors\7f2343191
+Node: Standard Buffer-Local Variables\7f2347419
+Node: Standard Keymaps\7f2350073
+Node: Standard Hooks\7f2353827
+Node: Index\7f2361347
 \1f
 End Tag Table
index a035092..359bb9d 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -74,8 +74,10 @@ Reference Manual, corresponding to XEmacs version 21.0.
 * Evaluation::              How Lisp expressions are evaluated.
 * Control Structures::      Conditionals, loops, nonlocal exits.
 * Variables::               Using symbols in programs to stand for values.
-* Functions::               A function is a Lisp program
-                              that can be invoked from other functions.
+
+* Functions and Commands::  A function is a Lisp program that can be
+                            invoked from other functions.
+
 * Macros::                  Macros are a way to extend the Lisp language.
 * Customization::           Writing customization declarations.
 
@@ -922,39 +924,57 @@ Colors
 
 Glyphs
 
-* Glyph Functions::    Functions for working with glyphs.
-* Images::             Graphical images displayed in a frame.
-* Glyph Types::         Each glyph has a particular type.
-* Mouse Pointer::      Controlling the mouse pointer.
-* Redisplay Glyphs::    Glyphs controlling various redisplay functions.
-* Subwindows::          Inserting an externally-controlled subwindow
-                          into a buffer.
-* Glyph Examples::      Examples of how to work with glyphs.
+* Glyph Intro::                Glyphs are abstract image specifications.
+* Images::             Specifying the appearance of glyphs.
+* Using Glyphs::       Creating and displaying glyphs.
+* Manipulating Glyphs::        Getting and setting glyph properties.
+* Glyph Examples::     Examples of how to work with glyphs.
 
-Glyph Functions
+Images
 
-* Creating Glyphs::    Creating new glyphs.
-* Glyph Properties::   Accessing and modifying a glyph's properties.
-* Glyph Convenience Functions::
-                       Convenience functions for accessing particular
-                         properties of a glyph.
-* Glyph Dimensions::    Determining the height, width, etc. of a glyph.
+* Image Specifiers::                   Specifying an image's appearance.
+* Image Instantiator Conversion::      Lazy realization of graphics.
+* Image Instantiator Formats::         A catalog of image descriptors.
+* Image Instances::                    Classes of graphical objects.
 
-Images
+Image Instances
+
+* Image Instance Types::         Each image instances has a particular type.
+* Image Instance Functions::    Functions for working with image instances.
+
+Using Glyphs
 
-* Image Specifiers::           Specifying how an image will appear.
-* Image Instantiator Conversion::
-                               Conversion is applied to image instantiators
-                                 at the time they are added to an
-                                 image specifier or at the time they
-                                 are passed to `make-image-instance'.
-* Image Instances::            What an image specifier gets instanced as.
 
 Image Instances
 
 * Image Instance Types::         Each image instances has a particular type.
 * Image Instance Functions::    Functions for working with image instances.
 
+Using Glyphs
+
+* Creating Glyphs::    Creating new glyphs.
+* Buffer Glyphs::      Annotations are glyphs that appear in a buffer.
+* Redisplay Glyphs::   Glyphs controlling various redisplay functions.
+* Frame Glyphs::       Displaying glyphs in GUI components of the frame.
+* External Glyphs::    Icons and mouse pointers for the window system.
+* Native GUI Widgets:: Complex active elements treated as a single glyph.
+* Subwindows::         Externally-controlled subwindows in buffers.
+
+Native GUI Widgets
+
+* Introduction to Widgets::     Native widgets provide tight integration of
+                                GUI features with the platform GUI.
+* Lisp API to Native Widgets::  Native widgets are glyphs.
+* Layouts::                     Specifying composite widgets from Lisp.
+* Primitive Widgets::           Catalogue of available native widgets.
+
+Manipulating Glyphs
+
+* Glyph Properties::   Accessing and modifying a glyph's properties.
+* Glyph Convenience Functions::  Accessing particular properties of a glyph.
+* Glyph Dimensions::   Determining the height, width, etc. of a glyph.
+* Glyph Types::                Each glyph has a particular type.
+
 Annotations
 
 * Annotation Basics::          Introduction to annotations.
@@ -1117,9 +1137,10 @@ GNU GENERAL PUBLIC LICENSE
 **************************
 
                          Version 2, June 1991
+
      Copyright (C) 1989, 1991 Free Software Foundation, Inc.
      675 Mass Ave, Cambridge, MA 02139, USA
-     
+
      Everyone is permitted to copy and distribute verbatim copies
      of this license document, but changing it is not allowed.
 
@@ -1381,7 +1402,6 @@ modification follow.
      and reuse of software generally.
 
                                 NO WARRANTY
-
  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
      WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
      LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
@@ -1405,7 +1425,6 @@ modification follow.
      ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 
                       END OF TERMS AND CONDITIONS
-
 How to Apply These Terms to Your New Programs
 =============================================
 
@@ -1421,17 +1440,17 @@ the "copyright" line and a pointer to where the full notice is found.
 
      ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
      Copyright (C) 19YY  NAME OF AUTHOR
-     
+
      This program is free software; you can redistribute it and/or
      modify it under the terms of the GNU General Public License
      as published by the Free Software Foundation; either version 2
      of the License, or (at your option) any later version.
-     
+
      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.
-     
+
      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
@@ -1462,7 +1481,7 @@ if necessary.  Here is a sample; alter the names:
      interest in the program `Gnomovision'
      (which makes passes at compilers) written
      by James Hacker.
-     
+
      SIGNATURE OF TY COON, 1 April 1989
      Ty Coon, President of Vice
 
@@ -1475,8 +1494,8 @@ GNU Library General Public License instead of this License.
 \1f
 File: lispref.info,  Node: Introduction,  Next: Packaging,  Prev: Copying,  Up: Top
 
-Introduction
-************
+1 Introduction
+**************
 
 Most of the XEmacs text editor is written in the programming language
 called XEmacs Lisp.  You can write new code in XEmacs Lisp and install
@@ -1511,8 +1530,8 @@ peculiar to XEmacs Lisp or relate specifically to editing.
 \1f
 File: lispref.info,  Node: Caveats,  Next: Lisp History,  Up: Introduction
 
-Caveats
-=======
+1.1 Caveats
+===========
 
 This manual has gone through numerous drafts.  It is nearly complete
 but not flawless.  There are a few topics that are not covered, either
@@ -1545,13 +1564,14 @@ corrections relating to XEmacs-specific portions of this manual to
    or post to the newsgroup
      comp.emacs.xemacs
 
-      --Ben Wing
+
+      -Ben Wing
 
 \1f
 File: lispref.info,  Node: Lisp History,  Next: Conventions,  Prev: Caveats,  Up: Introduction
 
-Lisp History
-============
+1.2 Lisp History
+================
 
 Lisp (LISt Processing language) was first developed in the late 1950's
 at the Massachusetts Institute of Technology for research in artificial
@@ -1576,8 +1596,8 @@ about it; this manual is self-contained.
 \1f
 File: lispref.info,  Node: Conventions,  Next: Acknowledgements,  Prev: Lisp History,  Up: Introduction
 
-Conventions
-===========
+1.3 Conventions
+===============
 
 This section explains the notational conventions that are used in this
 manual.  You may want to skip this section and refer back to it later.
@@ -1595,8 +1615,8 @@ manual.  You may want to skip this section and refer back to it later.
 \1f
 File: lispref.info,  Node: Some Terms,  Next: nil and t,  Up: Conventions
 
-Some Terms
-----------
+1.3.1 Some Terms
+----------------
 
 Throughout this manual, the phrases "the Lisp reader" and "the Lisp
 printer" are used to refer to those routines in Lisp that convert
@@ -1613,8 +1633,8 @@ this font or form: FIRST-NUMBER.
 \1f
 File: lispref.info,  Node: nil and t,  Next: Evaluation Notation,  Prev: Some Terms,  Up: Conventions
 
-`nil' and `t'
--------------
+1.3.2 `nil' and `t'
+-------------------
 
 In Lisp, the symbol `nil' has three separate meanings: it is a symbol
 with the name `nil'; it is the logical truth value FALSE; and it is the
@@ -1651,8 +1671,8 @@ Variables::.
 \1f
 File: lispref.info,  Node: Evaluation Notation,  Next: Printing Notation,  Prev: nil and t,  Up: Conventions
 
-Evaluation Notation
--------------------
+1.3.3 Evaluation Notation
+-------------------------
 
 A Lisp expression that you can evaluate is called a "form".  Evaluating
 a form always produces a result, which is a Lisp object.  In the
@@ -1680,8 +1700,8 @@ indicated with `=='.
 \1f
 File: lispref.info,  Node: Printing Notation,  Next: Error Messages,  Prev: Evaluation Notation,  Up: Conventions
 
-Printing Notation
------------------
+1.3.4 Printing Notation
+-----------------------
 
 Many of the examples in this manual print text when they are evaluated.
 If you execute example code in a Lisp Interaction buffer (such as the
@@ -1703,8 +1723,8 @@ the form (here `bar') follows on a separate line.
 \1f
 File: lispref.info,  Node: Error Messages,  Next: Buffer Text Notation,  Prev: Printing Notation,  Up: Conventions
 
-Error Messages
---------------
+1.3.5 Error Messages
+--------------------
 
 Some examples signal errors.  This normally displays an error message
 in the echo area.  We show the error message on a line starting with
@@ -1717,8 +1737,8 @@ area.
 \1f
 File: lispref.info,  Node: Buffer Text Notation,  Next: Format of Descriptions,  Prev: Error Messages,  Up: Conventions
 
-Buffer Text Notation
---------------------
+1.3.6 Buffer Text Notation
+--------------------------
 
 Some examples show modifications to text in a buffer, with "before" and
 "after" versions of the text.  These examples show the contents of the
@@ -1730,7 +1750,7 @@ indicates the place _between_ two characters where point is located.)
      ---------- Buffer: foo ----------
      This is the -!-contents of foo.
      ---------- Buffer: foo ----------
-     
+
      (insert "changed ")
           => nil
      ---------- Buffer: foo ----------
@@ -1740,8 +1760,8 @@ indicates the place _between_ two characters where point is located.)
 \1f
 File: lispref.info,  Node: Format of Descriptions,  Prev: Buffer Text Notation,  Up: Conventions
 
-Format of Descriptions
-----------------------
+1.3.7 Format of Descriptions
+----------------------------
 
 Functions, variables, macros, commands, user options, and special forms
 are described in this manual in a uniform format.  The first line of a
@@ -1761,8 +1781,8 @@ sometimes with examples.
 \1f
 File: lispref.info,  Node: A Sample Function Description,  Next: A Sample Variable Description,  Up: Format of Descriptions
 
-A Sample Function Description
-.............................
+1.3.7.1 A Sample Function Description
+.....................................
 
 In a function description, the name of the function being described
 appears first.  It is followed on the same line by a list of parameters.
@@ -1781,7 +1801,7 @@ Do not write `&rest' when you call the function.
 
    Here is a description of an imaginary function `foo':
 
- - Function: foo integer1 &optional integer2 &rest integers
+ -- Function: foo integer1 &optional integer2 &rest integers
      The function `foo' subtracts INTEGER1 from INTEGER2, then adds all
      the rest of the arguments to the result.  If INTEGER2 is not
      supplied, then the number 19 is used by default.
@@ -1823,7 +1843,7 @@ list down into separate arguments in more complicated ways.
 used when several arguments are grouped into additional levels of list
 structure.  Here is an example:
 
- - Special Form: count-loop (VAR [FROM TO [INC]]) BODY...
+ -- Special Form: count-loop (VAR [FROM TO [INC]]) BODY...
      This imaginary special form implements a loop that executes the
      BODY forms and then increments the variable VAR on each iteration.
      On the first iteration, the variable has the value FROM; on
@@ -1853,8 +1873,8 @@ structure.  Here is an example:
 \1f
 File: lispref.info,  Node: A Sample Variable Description,  Prev: A Sample Function Description,  Up: Format of Descriptions
 
-A Sample Variable Description
-.............................
+1.3.7.2 A Sample Variable Description
+.....................................
 
 A "variable" is a name that can hold a value.  Although any variable
 can be set by the user, certain variables that exist specifically so
@@ -1865,7 +1885,7 @@ functions except that there are no arguments.
    Here is a description of the imaginary `electric-future-map'
 variable.
 
- - Variable: electric-future-map
+ -- Variable: electric-future-map
      The value of this variable is a full keymap used by Electric
      Command Future mode.  The functions in this map allow you to edit
      commands you have not yet thought about executing.
@@ -1876,8 +1896,8 @@ replaced by `User Option'.
 \1f
 File: lispref.info,  Node: Acknowledgements,  Prev: Conventions,  Up: Introduction
 
-Acknowledgements
-================
+1.4 Acknowledgements
+====================
 
 This manual was based on the GNU Emacs Lisp Reference Manual, version
 2.4, written by Robert Krawitz, Bil Lewis, Dan LaLiberte, Richard M.
@@ -1912,8 +1932,8 @@ Wilding, Carl Witty, Dale Worley, Rusty Wright, and David D. Zuhn.
 \1f
 File: lispref.info,  Node: Packaging,  Next: Lisp Data Types,  Prev: Introduction,  Up: Top
 
-The XEmacs Packaging System
-***************************
+2 The XEmacs Packaging System
+*****************************
 
 The XEmacs distribution, starting with version 21, comes only with a
 very basic set of built-in modes and libraries.  Most of the libraries
@@ -1953,8 +1973,8 @@ Internals and Package Release Engineering:
 \1f
 File: lispref.info,  Node: Package Overview,  Next: Package Terminology,  Up: Packaging
 
-An overview of the XEmacs Packaging System
-******************************************
+3 An overview of the XEmacs Packaging System
+********************************************
 
 The XEmacs Packaging System is a system for administering the
 installation, upgrade, and removal of Lisp libraries.  For the end
@@ -1997,8 +2017,8 @@ package satisfies them.
 \1f
 File: lispref.info,  Node: The User View,  Next: The Library Maintainer View,  Up: Package Overview
 
-The User View
-=============
+3.1 The User View
+=================
 
 *N.B.*  Much of the discussion in this section undoubtedly belongs
 elsewhere, *Note Packages: (xemacs)Packages.
@@ -2124,8 +2144,8 @@ Lisp directories.
 \1f
 File: lispref.info,  Node: The Library Maintainer View,  Next: The Package Release Engineer View,  Prev: The User View,  Up: Package Overview
 
-The Library Maintainer View
-===========================
+3.2 The Library Maintainer View
+===============================
 
 From the library maintainer's viewpoint, the advantages to the XEmacs
 Packaging System stem from the convenience to the user of installation
@@ -2161,8 +2181,8 @@ package's source tree and provide administrative information.
 \1f
 File: lispref.info,  Node: Infrastructure,  Next: Control Files,  Up: The Library Maintainer View
 
-Infrastructure
---------------
+3.2.1 Infrastructure
+--------------------
 
 In order to get the greatest benefit from the XEmacs Packaging System,
 a library maintainer should place the package sources in an appropriate
@@ -2249,8 +2269,8 @@ in the next section, *Note Control Files::.
 \1f
 File: lispref.info,  Node: Control Files,  Next: Obtaining,  Prev: Infrastructure,  Up: The Library Maintainer View
 
-Control Files
--------------
+3.2.2 Control Files
+-------------------
 
 Each package source must contain a number of control files in the
 top-level directory.  These files in general can be created and then
@@ -2299,8 +2319,8 @@ removing library source files can be handled by generic rules.
 \1f
 File: lispref.info,  Node: Obtaining,  Prev: Control Files,  Up: The Library Maintainer View
 
-Obtaining the XEmacs Packaging System and Required Utilities
-------------------------------------------------------------
+3.2.3 Obtaining the XEmacs Packaging System and Required Utilities
+------------------------------------------------------------------
 
 Currently both the infrastructure for creating XEmacs packages and the
 package sources themselves are available only by CVS.  See
@@ -2312,8 +2332,8 @@ XEmacs, to build packages.
 \1f
 File: lispref.info,  Node: The Package Release Engineer View,  Prev: The Library Maintainer View,  Up: Package Overview
 
-The Package Release Engineer View
----------------------------------
+3.2.4 The Package Release Engineer View
+---------------------------------------
 
 The XEmacs Package Release Engineer is responsible for keeping the
 system coherent.  The changes to `packages/package-compile.el' and
@@ -2331,16 +2351,16 @@ File: lispref.info,  Node: Package Terminology,  Next: Building Packages,  Prev:
 Package Terminology:
 ====================
 
-Libraries and Packages
-----------------------
+3.2.5 Libraries and Packages
+----------------------------
 
 A Lisp "library" is a single loadable file containing Lisp code.  It
 may be in source or byte-compiled form.  A Lisp "package" is a set of
 one or more libraries, usually related to each other in some way,
 bundled with administrative information for convenient distribution.
 
-Package Flavors
----------------
+3.2.6 Package Flavors
+---------------------
 
 There are two main flavors of packages.
 
@@ -2359,8 +2379,8 @@ There are two main flavors of packages.
      If it's really that big a deal, request that the maintainers
      split the package into smaller aggregations.
 
-Package Distributions
----------------------
+3.2.7 Package Distributions
+---------------------------
 
 XEmacs Lisp packages are distributed in two ways.  "Binary packages"
 are used by system administrators and end users.  They are packaged in a
@@ -2374,7 +2394,7 @@ tarballs (Unix Tar format files, gzipped for space savings).
 renamed to `file.upstream'.)
 
    Currently, source packages are only available via CVS.  See
-<http://www.xemacs.org/Develop/cvsaccess.html> for details.
+`http://www.xemacs.org/Develop/cvsaccess.html' for details.
 
    The package distributions are also split according to major features
 required in XEmacs to support them.  At present there are "generic"
@@ -2394,11 +2414,11 @@ Building Packages:
 ==================
 
 Currently, source packages are only available via anonymous CVS.  See
-<http://www.xemacs.org/Develop/cvsaccess.html> for details of checking
+`http://www.xemacs.org/Develop/cvsaccess.html' for details of checking
 out the `packages' module.
 
-Prerequisites for Building Source Packages
-------------------------------------------
+3.2.8 Prerequisites for Building Source Packages
+------------------------------------------------
 
 `GNU cp'
 
@@ -2422,8 +2442,8 @@ Prerequisites for Building Source Packages
 
    And of course, XEmacs, 21.0 or higher.
 
-What You Can Do With Source Packages
-====================================
+3.3 What You Can Do With Source Packages
+========================================
 
 The packages CVS sources are most useful for creating XEmacs package
 tarballs for installation into your own XEmacs installations or for
@@ -2437,8 +2457,8 @@ source tree.
 \1f
 File: lispref.info,  Node: Makefile Targets,  Next: Local.rules File,  Prev: Building Packages,  Up: Packaging
 
-`Makefile' targets
-******************
+4 `Makefile' targets
+********************
 
 The following targets can be used when running `make' to build the
 packages:
@@ -2489,8 +2509,8 @@ packages:
 `compile'
      Does most of the work.  Builds the elcs, infos at a minimum.
 
-The targets that most people would be interested in would be:
--------------------------------------------------------------
+4.0.1 The targets that most people would be interested in would be:
+-------------------------------------------------------------------
 
    * `all'
 
@@ -2701,8 +2721,8 @@ Most people will probably only need to alter:
 \1f
 File: lispref.info,  Node: Creating Packages,  Next: Documenting Packages,  Prev: Local.rules File,  Up: Packaging
 
-Creating Packages:
-******************
+5 Creating Packages:
+********************
 
 Creating a package from an existing Lisp library is not very difficult.
 
@@ -2718,8 +2738,8 @@ by `XEmacs.rules', part of the packaging system infrastructure.
 \1f
 File: lispref.info,  Node: package-info.in,  Next: Makefile,  Up: Creating Packages
 
-package-info.in
-***************
+6 package-info.in
+*****************
 
 `package-info.in' contains information that gets injected into the
 `package-index' file when `make bindist' is run.  Here is a real world
@@ -2858,8 +2878,8 @@ variable, is auto-generated at build time, or is static.
 \1f
 File: lispref.info,  Node: Makefile,  Prev: package-info.in,  Up: Creating Packages
 
-`Makefile'
-**********
+7 `Makefile'
+************
 
 The `Makefile' is quite stylized.  The idea is similar to an
 `Imakefile' or an `automake' file: the complexity is hidden in generic
@@ -2879,27 +2899,27 @@ example.
    Here is a real world example, from the `build' package:
 
      # Makefile for build lisp code
-     
+
      # This file is part of XEmacs.
-     
+
      # XEmacs is free software; you can redistribute it and/or modify it
      # under the terms of the GNU General Public License as published by the
      # Free Software Foundation; either version 2, or (at your option) any
      # later version.
-     
+
      # XEmacs is distributed in the hope that it will be useful, but WITHOUT
      # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      # for more details.
-     
+
      # You should have received a copy of the GNU General Public License
      # along with XEmacs; see the file COPYING.  If not, write to
      # the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      # Boston, MA 02111-1307, USA.
-     
+
      # For the time being, remove MULE_ELCS from the all dependencies if
      # building without Mule.
-     
+
      VERSION = 1.10
      AUTHOR_VERSION = 2.02
      MAINTAINER = Adrian Aichner <adrian@xemacs.org>
@@ -2907,11 +2927,11 @@ example.
      PKG_TYPE = regular
      REQUIRES = xemacs-base pcl-cvs dired w3 prog-modes
      CATEGORY = standard
-     
+
      ELCS = build.elc build-report.elc
-     
+
      STANDARD_DOCS = t
-     
+
      include ../../XEmacs.rules
 
    Most packages don't need any more than what you see above.  It is
@@ -3144,8 +3164,8 @@ given in parentheses.
      any other `Makefile' variable.  You will need to write `Makefile'
      rules to build these files.
 
-`package-compile.el'
-====================
+7.1 `package-compile.el'
+========================
 
 The XEmacs Packaging System does not automatically become aware of your
 package simply because there is a new subtree.  If any package,
@@ -3223,16 +3243,16 @@ same information.
 \1f
 File: lispref.info,  Node: Issues,  Prev: Documenting Packages,  Up: Packaging
 
-Issues
-======
+7.2 Issues
+==========
 
 To be completed.
 
 \1f
 File: lispref.info,  Node: Lisp Data Types,  Next: Numbers,  Prev: Packaging,  Up: Top
 
-Lisp Data Types
-***************
+8 Lisp Data Types
+*****************
 
 A Lisp "object" is a piece of data used and manipulated by Lisp
 programs.  For our purposes, a "type" or "data type" is a set of
@@ -3285,8 +3305,8 @@ use these types can be found in later chapters.
 \1f
 File: lispref.info,  Node: Printed Representation,  Next: Comments,  Up: Lisp Data Types
 
-Printed Representation and Read Syntax
-======================================
+8.1 Printed Representation and Read Syntax
+==========================================
 
 The "printed representation" of an object is the format of the output
 generated by the Lisp printer (the function `prin1') for that object.
@@ -3309,7 +3329,7 @@ a read syntax.  Objects of these types are printed in "hash notation":
 the characters `#<' followed by a descriptive string (typically the
 type name followed by the name of the object), and closed with a
 matching `>'.  Hash notation cannot be read at all, so the Lisp reader
-signals the error `invalid-read-syntax' whenever it encounters `#<'.
+signals the error `invalid-read-syntax' whenever it encounters `#<'.  
 
      (current-buffer)
           => #<buffer "objects.texi">
@@ -3325,8 +3345,8 @@ not be evaluated later.  *Note Input Functions::, for a description of
 \1f
 File: lispref.info,  Node: Comments,  Next: Primitive Types,  Prev: Printed Representation,  Up: Lisp Data Types
 
-Comments
-========
+8.2 Comments
+============
 
 A "comment" is text that is written in a program only for the sake of
 humans that read the program, and that has no effect on the meaning of
@@ -3346,8 +3366,8 @@ Compilation::).  It isn't meant for source files, however.
 \1f
 File: lispref.info,  Node: Primitive Types,  Next: Programming Types,  Prev: Comments,  Up: Lisp Data Types
 
-Primitive Types
-===============
+8.3 Primitive Types
+===================
 
 For reference, here is a list of all the primitive types that may exist
 in XEmacs.  Note that some of these types may not exist in some XEmacs
@@ -3470,8 +3490,8 @@ of these objects.
 \1f
 File: lispref.info,  Node: Programming Types,  Next: Editing Types,  Prev: Primitive Types,  Up: Lisp Data Types
 
-Programming Types
-=================
+8.4 Programming Types
+=====================
 
 There are two general categories of types in XEmacs Lisp: those having
 to do with Lisp programming, and those having to do with editing.  The
@@ -3507,8 +3527,8 @@ latter are unique to XEmacs Lisp.
 \1f
 File: lispref.info,  Node: Integer Type,  Next: Floating Point Type,  Up: Programming Types
 
-Integer Type
-------------
+8.4.1 Integer Type
+------------------
 
 The range of values for integers in XEmacs Lisp is -134217728 to
 134217727 (28 bits; i.e., -2**27 to 2**27 - 1) on most machines.  (Some
@@ -3532,8 +3552,8 @@ by the Lisp interpreter never has a leading `+'.)
 \1f
 File: lispref.info,  Node: Floating Point Type,  Next: Character Type,  Prev: Integer Type,  Up: Programming Types
 
-Floating Point Type
--------------------
+8.4.2 Floating Point Type
+-------------------------
 
 XEmacs supports floating point numbers.  The precise range of floating
 point numbers is machine-specific.
@@ -3549,8 +3569,8 @@ They are all equivalent.
 \1f
 File: lispref.info,  Node: Character Type,  Next: Symbol Type,  Prev: Floating Point Type,  Up: Programming Types
 
-Character Type
---------------
+8.4.3 Character Type
+--------------------
 
 In XEmacs version 19, and in all versions of FSF GNU Emacs, a
 "character" in XEmacs Lisp is nothing more than an integer.  This is
@@ -3709,8 +3729,8 @@ character such as a tab.
 \1f
 File: lispref.info,  Node: Symbol Type,  Next: Sequence Type,  Prev: Character Type,  Up: Programming Types
 
-Symbol Type
------------
+8.4.4 Symbol Type
+-----------------
 
 A "symbol" in XEmacs Lisp is an object with a name.  The symbol name
 serves as the printed representation of the symbol.  In ordinary use,
@@ -3762,8 +3782,8 @@ makes it invalid as a number.
 \1f
 File: lispref.info,  Node: Sequence Type,  Next: Cons Cell Type,  Prev: Symbol Type,  Up: Programming Types
 
-Sequence Types
---------------
+8.4.5 Sequence Types
+--------------------
 
 A "sequence" is a Lisp object that represents an ordered set of
 elements.  There are two kinds of sequence in XEmacs Lisp, lists and
@@ -3793,8 +3813,8 @@ exception: the empty list `()' always stands for the same object, `nil'.
 \1f
 File: lispref.info,  Node: Cons Cell Type,  Next: Array Type,  Prev: Sequence Type,  Up: Programming Types
 
-Cons Cell and List Types
-------------------------
+8.4.6 Cons Cell and List Types
+------------------------------
 
 A "cons cell" is an object comprising two pointers named the CAR and
 the CDR.  Each of them can point to any Lisp object.
@@ -3891,8 +3911,8 @@ boxes and arrows:
 \1f
 File: lispref.info,  Node: Dotted Pair Notation,  Next: Association List Type,  Up: Cons Cell Type
 
-Dotted Pair Notation
-....................
+8.4.6.1 Dotted Pair Notation
+............................
 
 "Dotted pair notation" is an alternative syntax for cons cells that
 represents the CAR and CDR explicitly.  In this syntax, `(A . B)'
@@ -3949,8 +3969,8 @@ equivalent to `(rose . (violet . (buttercup)))'.  It looks like this:
 \1f
 File: lispref.info,  Node: Association List Type,  Prev: Dotted Pair Notation,  Up: Cons Cell Type
 
-Association List Type
-.....................
+8.4.6.2 Association List Type
+.............................
 
 An "association list" or "alist" is a specially-constructed list whose
 elements are cons cells.  In each element, the CAR is considered a
@@ -3973,8 +3993,8 @@ for functions that work on alists.
 \1f
 File: lispref.info,  Node: Array Type,  Next: String Type,  Prev: Cons Cell Type,  Up: Programming Types
 
-Array Type
-----------
+8.4.7 Array Type
+----------------
 
 An "array" is composed of an arbitrary number of slots for referring to
 other Lisp objects, arranged in a contiguous block of memory.
@@ -4004,8 +4024,8 @@ string type, the vector type, and the bit vector type.
 \1f
 File: lispref.info,  Node: String Type,  Next: Vector Type,  Prev: Array Type,  Up: Programming Types
 
-String Type
------------
+8.4.8 String Type
+-----------------
 
 A "string" is an array of characters.  Strings are used for many
 purposes in XEmacs, as can be expected in a text editor; for example, as
@@ -4033,7 +4053,7 @@ backslash, like this: `"this \" is an embedded quote"'.
 if you write a new line between the double-quotes, it becomes a
 character in the string.  But an escaped newline--one that is preceded
 by `\'--does not become part of the string; i.e., the Lisp reader
-ignores an escaped newline while reading a string.
+ignores an escaped newline while reading a string.  
 
      "It is useful to include newlines
      in documentation strings,
@@ -4060,8 +4080,8 @@ often counter-intuitive.
 \1f
 File: lispref.info,  Node: Vector Type,  Next: Bit Vector Type,  Prev: String Type,  Up: Programming Types
 
-Vector Type
------------
+8.4.9 Vector Type
+-----------------
 
 A "vector" is a one-dimensional array of elements of any type.  It
 takes a constant amount of time to access any element of a vector.  (In
@@ -4081,8 +4101,8 @@ for evaluation.
 \1f
 File: lispref.info,  Node: Bit Vector Type,  Next: Function Type,  Prev: Vector Type,  Up: Programming Types
 
-Bit Vector Type
----------------
+8.4.10 Bit Vector Type
+----------------------
 
 A "bit vector" is a one-dimensional array of 1's and 0's.  It takes a
 constant amount of time to access any element of a bit vector, as for
@@ -4103,8 +4123,8 @@ evaluation.
 \1f
 File: lispref.info,  Node: Function Type,  Next: Macro Type,  Prev: Bit Vector Type,  Up: Programming Types
 
-Function Type
--------------
+8.4.11 Function Type
+--------------------
 
 Just as functions in other programming languages are executable, "Lisp
 function" objects are pieces of executable code.  However, functions in
@@ -4126,8 +4146,8 @@ functions `funcall' and `apply'.  *Note Calling Functions::.
 \1f
 File: lispref.info,  Node: Macro Type,  Next: Primitive Function Type,  Prev: Function Type,  Up: Programming Types
 
-Macro Type
-----------
+8.4.12 Macro Type
+-----------------
 
 A "Lisp macro" is a user-defined construct that extends the Lisp
 language.  It is represented as an object much like a function, but with
@@ -4143,8 +4163,8 @@ write a macro.
 \1f
 File: lispref.info,  Node: Primitive Function Type,  Next: Compiled-Function Type,  Prev: Macro Type,  Up: Programming Types
 
-Primitive Function Type
------------------------
+8.4.13 Primitive Function Type
+------------------------------
 
 A "primitive function" is a function callable from Lisp but written in
 the C programming language.  Primitive functions are also called
@@ -4176,8 +4196,8 @@ with the name of the subroutine.
 \1f
 File: lispref.info,  Node: Compiled-Function Type,  Next: Autoload Type,  Prev: Primitive Function Type,  Up: Programming Types
 
-Compiled-Function Type
-----------------------
+8.4.14 Compiled-Function Type
+-----------------------------
 
 The byte compiler produces "compiled-function objects".  The evaluator
 handles this data type specially when it appears as a function to be
@@ -4191,8 +4211,8 @@ compiler.
 \1f
 File: lispref.info,  Node: Autoload Type,  Next: Char Table Type,  Prev: Compiled-Function Type,  Up: Programming Types
 
-Autoload Type
--------------
+8.4.15 Autoload Type
+--------------------
 
 An "autoload object" is a list whose first element is the symbol
 `autoload'.  It is stored as the function definition of a symbol as a
@@ -4214,16 +4234,16 @@ Autoload::, for more details.
 \1f
 File: lispref.info,  Node: Char Table Type,  Next: Hash Table Type,  Prev: Autoload Type,  Up: Programming Types
 
-Char Table Type
----------------
+8.4.16 Char Table Type
+----------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Hash Table Type,  Next: Range Table Type,  Prev: Char Table Type,  Up: Programming Types
 
-Hash Table Type
----------------
+8.4.17 Hash Table Type
+----------------------
 
 A "hash table" is a table providing an arbitrary mapping from one Lisp
 object to another, using an internal indexing method called "hashing".
@@ -4251,8 +4271,8 @@ hash tables.
 \1f
 File: lispref.info,  Node: Range Table Type,  Next: Weak List Type,  Prev: Hash Table Type,  Up: Programming Types
 
-Range Table Type
-----------------
+8.4.18 Range Table Type
+-----------------------
 
 A "range table" is a table that maps from ranges of integers to
 arbitrary Lisp objects.  Range tables automatically combine overlapping
@@ -4275,16 +4295,16 @@ range tables.
 \1f
 File: lispref.info,  Node: Weak List Type,  Prev: Range Table Type,  Up: Programming Types
 
-Weak List Type
---------------
+8.4.19 Weak List Type
+---------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Editing Types,  Next: Window-System Types,  Prev: Programming Types,  Up: Lisp Data Types
 
-Editing Types
-=============
+8.5 Editing Types
+=================
 
 The types in the previous section are common to many Lisp dialects.
 XEmacs Lisp provides several additional data types for purposes
@@ -4317,8 +4337,8 @@ connected with editing.
 \1f
 File: lispref.info,  Node: Buffer Type,  Next: Marker Type,  Up: Editing Types
 
-Buffer Type
------------
+8.5.1 Buffer Type
+-----------------
 
 A "buffer" is an object that holds text that can be edited (*note
 Buffers::).  Most buffers hold the contents of a disk file (*note
@@ -4370,8 +4390,8 @@ the buffer name.
 \1f
 File: lispref.info,  Node: Marker Type,  Next: Extent Type,  Prev: Buffer Type,  Up: Editing Types
 
-Marker Type
------------
+8.5.2 Marker Type
+-----------------
 
 A "marker" denotes a position in a specific buffer.  Markers therefore
 have two components: one for the buffer, and one for the position.
@@ -4391,8 +4411,8 @@ move markers.
 \1f
 File: lispref.info,  Node: Extent Type,  Next: Window Type,  Prev: Marker Type,  Up: Editing Types
 
-Extent Type
------------
+8.5.3 Extent Type
+-----------------
 
 An "extent" specifies temporary alteration of the display appearance of
 a part of a buffer (or string).  It contains markers delimiting a range
@@ -4423,8 +4443,8 @@ Properties::.
 \1f
 File: lispref.info,  Node: Window Type,  Next: Frame Type,  Prev: Extent Type,  Up: Editing Types
 
-Window Type
------------
+8.5.4 Window Type
+-----------------
 
 A "window" describes the portion of the frame that XEmacs uses to
 display a buffer. (In standard window-system usage, a "window" is what
@@ -4457,8 +4477,8 @@ windows.
 \1f
 File: lispref.info,  Node: Frame Type,  Next: Device Type,  Prev: Window Type,  Up: Editing Types
 
-Frame Type
-----------
+8.5.5 Frame Type
+----------------
 
 A FRAME is a rectangle on the screen (a "window" in standard
 window-system terminology) that contains one or more non-overlapping
@@ -4480,8 +4500,8 @@ frames.
 \1f
 File: lispref.info,  Node: Device Type,  Next: Console Type,  Prev: Frame Type,  Up: Editing Types
 
-Device Type
------------
+8.5.6 Device Type
+-----------------
 
 A "device" represents a single display on which frames exist.
 Normally, there is only one device object, but there may be more than
@@ -4503,8 +4523,8 @@ related to devices.
 \1f
 File: lispref.info,  Node: Console Type,  Next: Window Configuration Type,  Prev: Device Type,  Up: Editing Types
 
-Console Type
-------------
+8.5.7 Console Type
+------------------
 
 A "console" represents a single keyboard to which devices (i.e.
 displays on which frames exist) are connected.  Normally, there is only
@@ -4531,8 +4551,8 @@ related to consoles.
 \1f
 File: lispref.info,  Node: Window Configuration Type,  Next: Event Type,  Prev: Console Type,  Up: Editing Types
 
-Window Configuration Type
--------------------------
+8.5.8 Window Configuration Type
+-------------------------------
 
 A "window configuration" stores information about the positions, sizes,
 and contents of the windows in a frame, so you can recreate the same
@@ -4551,16 +4571,16 @@ related to window configurations.
 \1f
 File: lispref.info,  Node: Event Type,  Next: Process Type,  Prev: Window Configuration Type,  Up: Editing Types
 
-Event Type
-----------
+8.5.9 Event Type
+----------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Process Type,  Next: Stream Type,  Prev: Event Type,  Up: Editing Types
 
-Process Type
-------------
+8.5.10 Process Type
+-------------------
 
 The word "process" usually means a running program.  XEmacs itself runs
 in a process of this sort.  However, in XEmacs Lisp, a process is a
@@ -4586,8 +4606,8 @@ output from processes.
 \1f
 File: lispref.info,  Node: Stream Type,  Next: Keymap Type,  Prev: Process Type,  Up: Editing Types
 
-Stream Type
------------
+8.5.11 Stream Type
+------------------
 
 A "stream" is an object that can be used as a source or sink for
 characters--either to supply characters for input or to accept them as
@@ -4612,8 +4632,8 @@ streams, including parsing and printing functions.
 \1f
 File: lispref.info,  Node: Keymap Type,  Next: Syntax Table Type,  Prev: Stream Type,  Up: Editing Types
 
-Keymap Type
------------
+8.5.12 Keymap Type
+------------------
 
 A "keymap" maps keys typed by the user to commands.  This mapping
 controls how the user's command input is executed.
@@ -4627,8 +4647,8 @@ prefix keys, local as well as global keymaps, and changing key bindings.
 \1f
 File: lispref.info,  Node: Syntax Table Type,  Next: Display Table Type,  Prev: Keymap Type,  Up: Editing Types
 
-Syntax Table Type
------------------
+8.5.13 Syntax Table Type
+------------------------
 
 Under XEmacs 20, a "syntax table" is a particular type of char table.
 Under XEmacs 19, a syntax table a vector of 256 integers.  In both
@@ -4650,8 +4670,8 @@ make and modify syntax tables.
 \1f
 File: lispref.info,  Node: Display Table Type,  Next: Database Type,  Prev: Syntax Table Type,  Up: Editing Types
 
-Display Table Type
-------------------
+8.5.14 Display Table Type
+-------------------------
 
 A "display table" specifies how to display each character code.  Each
 buffer and each window can have its own display table.  A display table
@@ -4661,48 +4681,48 @@ change to be a particular type of char table.  *Note Display Tables::.
 \1f
 File: lispref.info,  Node: Database Type,  Next: Charset Type,  Prev: Display Table Type,  Up: Editing Types
 
-Database Type
--------------
+8.5.15 Database Type
+--------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Charset Type,  Next: Coding System Type,  Prev: Database Type,  Up: Editing Types
 
-Charset Type
-------------
+8.5.16 Charset Type
+-------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Coding System Type,  Next: ToolTalk Message Type,  Prev: Charset Type,  Up: Editing Types
 
-Coding System Type
-------------------
+8.5.17 Coding System Type
+-------------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: ToolTalk Message Type,  Next: ToolTalk Pattern Type,  Prev: Coding System Type,  Up: Editing Types
 
-ToolTalk Message Type
----------------------
+8.5.18 ToolTalk Message Type
+----------------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: ToolTalk Pattern Type,  Prev: ToolTalk Message Type,  Up: Editing Types
 
-ToolTalk Pattern Type
----------------------
+8.5.19 ToolTalk Pattern Type
+----------------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Window-System Types,  Next: Type Predicates,  Prev: Editing Types,  Up: Lisp Data Types
 
-Window-System Types
-===================
+8.6 Window-System Types
+=======================
 
 XEmacs also has some types that represent objects such as faces
 (collections of display characters), fonts, and pixmaps that are
@@ -4726,80 +4746,80 @@ commonly found in windowing systems.
 \1f
 File: lispref.info,  Node: Face Type,  Next: Glyph Type,  Up: Window-System Types
 
-Face Type
----------
+8.6.1 Face Type
+---------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Glyph Type,  Next: Specifier Type,  Prev: Face Type,  Up: Window-System Types
 
-Glyph Type
-----------
+8.6.2 Glyph Type
+----------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Specifier Type,  Next: Font Instance Type,  Prev: Glyph Type,  Up: Window-System Types
 
-Specifier Type
---------------
+8.6.3 Specifier Type
+--------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Font Instance Type,  Next: Color Instance Type,  Prev: Specifier Type,  Up: Window-System Types
 
-Font Instance Type
-------------------
+8.6.4 Font Instance Type
+------------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Color Instance Type,  Next: Image Instance Type,  Prev: Font Instance Type,  Up: Window-System Types
 
-Color Instance Type
--------------------
+8.6.5 Color Instance Type
+-------------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Image Instance Type,  Next: Toolbar Button Type,  Prev: Color Instance Type,  Up: Window-System Types
 
-Image Instance Type
--------------------
+8.6.6 Image Instance Type
+-------------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Toolbar Button Type,  Next: Subwindow Type,  Prev: Image Instance Type,  Up: Window-System Types
 
-Toolbar Button Type
--------------------
+8.6.7 Toolbar Button Type
+-------------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Subwindow Type,  Next: X Resource Type,  Prev: Toolbar Button Type,  Up: Window-System Types
 
-Subwindow Type
---------------
+8.6.8 Subwindow Type
+--------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: X Resource Type,  Prev: Subwindow Type,  Up: Window-System Types
 
-X Resource Type
----------------
+8.6.9 X Resource Type
+---------------------
 
 (not yet documented)
 
 \1f
 File: lispref.info,  Node: Type Predicates,  Next: Equality Predicates,  Prev: Window-System Types,  Up: Lisp Data Types
 
-Type Predicates
-===============
+8.7 Type Predicates
+===================
 
 The XEmacs Lisp interpreter itself does not perform type checking on
 the actual arguments passed to functions when they are called.  It could
@@ -5138,7 +5158,7 @@ one primitive type; `type-of' tells you which one (*note Lisp Data
 Types::).  But `type-of' knows nothing about non-primitive types.  In
 most cases, it is more convenient to use type predicates than `type-of'.
 
- - Function: type-of object
+ -- Function: type-of object
      This function returns a symbol naming the primitive type of
      OBJECT.  The value is one of `bit-vector', `buffer', `char-table',
      `character', `charset', `coding-system', `cons', `color-instance',
@@ -5162,15 +5182,15 @@ most cases, it is more convenient to use type predicates than `type-of'.
 \1f
 File: lispref.info,  Node: Equality Predicates,  Prev: Type Predicates,  Up: Lisp Data Types
 
-Equality Predicates
-===================
+8.8 Equality Predicates
+=======================
 
 Here we describe two functions that test for equality between any two
 objects.  Other functions test equality between objects of specific
 types, e.g., strings.  For these predicates, see the appropriate chapter
 describing the data type.
 
- - Function: eq object1 object2
+ -- Function: eq object1 object2
      This function returns `t' if OBJECT1 and OBJECT2 are the same
      object, `nil' otherwise.  The "same object" means that a change in
      one will be reflected by the same change in the other.
@@ -5196,31 +5216,31 @@ describing the data type.
 
           (eq 'foo 'foo)
                => t
-          
+
           (eq 456 456)
                => t
-          
+
           (eq "asdf" "asdf")
                => nil
-          
+
           (eq '(1 (2 (3))) '(1 (2 (3))))
                => nil
-          
+
           (setq foo '(1 (2 (3))))
                => (1 (2 (3)))
           (eq foo foo)
                => t
           (eq foo '(1 (2 (3))))
                => nil
-          
+
           (eq [(1 2) 3] [(1 2) 3])
                => nil
-          
+
           (eq (point-marker) (point-marker))
                => nil
 
 
- - Function: old-eq object1 object2
+ -- Function: old-eq object1 object2
      This function exists under XEmacs 20 and is exactly like `eq'
      except that it suffers from the char-int confoundance disease.  In
      other words, it returns `t' if given a character and the
@@ -5241,7 +5261,7 @@ describing the data type.
           (eq ?A 65)
                => nil             ; We are still healthy.
 
- - Function: equal object1 object2
+ -- Function: equal object1 object2
      This function returns `t' if OBJECT1 and OBJECT2 have equal
      components, `nil' otherwise.  Whereas `eq' tests if its arguments
      are the same object, `equal' looks inside nonidentical arguments
@@ -5250,28 +5270,28 @@ describing the data type.
 
           (equal 'foo 'foo)
                => t
-          
+
           (equal 456 456)
                => t
-          
+
           (equal "asdf" "asdf")
                => t
           (eq "asdf" "asdf")
                => nil
-          
+
           (equal '(1 (2 (3))) '(1 (2 (3))))
                => t
           (eq '(1 (2 (3))) '(1 (2 (3))))
                => nil
-          
+
           (equal [(1 2) 3] [(1 2) 3])
                => t
           (eq [(1 2) 3] [(1 2) 3])
                => nil
-          
+
           (equal (point-marker) (point-marker))
                => t
-          
+
           (eq (point-marker) (point-marker))
                => nil
 
@@ -5295,8 +5315,8 @@ may therefore cause infinite recursion (leading to an error).
 \1f
 File: lispref.info,  Node: Numbers,  Next: Strings and Characters,  Prev: Lisp Data Types,  Up: Top
 
-Numbers
-*******
+9 Numbers
+*********
 
 XEmacs supports two numeric data types: "integers" and "floating point
 numbers".  Integers are whole numbers such as -3, 0, #b0111, #xFEED,
@@ -5325,13 +5345,13 @@ of precision.
 \1f
 File: lispref.info,  Node: Integer Basics,  Next: Float Basics,  Up: Numbers
 
-Integer Basics
-==============
+9.1 Integer Basics
+==================
 
 The range of values for an integer depends on the machine.  The minimum
 range is -134217728 to 134217727 (28 bits; i.e., -2**27 to 2**27 - 1),
 but some machines may provide a wider range.  Many examples in this
-chapter assume an integer has 28 bits.
+chapter assume an integer has 28 bits.  
 
    The Lisp reader reads an integer as a sequence of digits with
 optional initial sign and optional final period.
@@ -5389,8 +5409,8 @@ value is a marker, its position value is used and its buffer is ignored.
 \1f
 File: lispref.info,  Node: Float Basics,  Next: Predicates on Numbers,  Prev: Integer Basics,  Up: Numbers
 
-Floating Point Basics
-=====================
+9.2 Floating Point Basics
+=========================
 
 XEmacs supports floating point numbers.  The precise range of floating
 point numbers is machine-specific; it is the same as the range of the C
@@ -5417,7 +5437,7 @@ NaNs or infinities; perhaps we should create a syntax in the future.
    You can use `logb' to extract the binary exponent of a floating
 point number (or estimate the logarithm of an integer):
 
- - Function: logb number
+ -- Function: logb number
      This function returns the binary exponent of NUMBER.  More
      precisely, the value is the logarithm of NUMBER base 2, rounded
      down to an integer.
@@ -5425,8 +5445,8 @@ point number (or estimate the logarithm of an integer):
 \1f
 File: lispref.info,  Node: Predicates on Numbers,  Next: Comparison of Numbers,  Prev: Float Basics,  Up: Numbers
 
-Type Predicates for Numbers
-===========================
+9.3 Type Predicates for Numbers
+===============================
 
 The functions in this section test whether the argument is a number or
 whether it is a certain sort of number.  The functions `integerp' and
@@ -5436,27 +5456,27 @@ a number as its argument.  See also `integer-or-marker-p',
 `integer-char-or-marker-p', `number-or-marker-p' and
 `number-char-or-marker-p', in *Note Predicates on Markers::.
 
- - Function: floatp object
+ -- Function: floatp object
      This predicate tests whether its argument is a floating point
      number and returns `t' if so, `nil' otherwise.
 
      `floatp' does not exist in Emacs versions 18 and earlier.
 
- - Function: integerp object
+ -- Function: integerp object
      This predicate tests whether its argument is an integer, and
      returns `t' if so, `nil' otherwise.
 
- - Function: numberp object
+ -- Function: numberp object
      This predicate tests whether its argument is a number (either
      integer or floating point), and returns `t' if so, `nil' otherwise.
 
- - Function: natnump object
+ -- Function: natnump object
      The `natnump' predicate (whose name comes from the phrase
      "natural-number-p") tests to see whether its argument is a
      nonnegative integer, and returns `t' if so, `nil' otherwise.  0 is
      considered non-negative.
 
- - Function: zerop number
+ -- Function: zerop number
      This predicate tests whether its argument is zero, and returns `t'
      if so, `nil' otherwise.  The argument must be a number.
 
@@ -5465,8 +5485,8 @@ a number as its argument.  See also `integer-or-marker-p',
 \1f
 File: lispref.info,  Node: Comparison of Numbers,  Next: Numeric Conversions,  Prev: Predicates on Numbers,  Up: Numbers
 
-Comparison of Numbers
-=====================
+9.4 Comparison of Numbers
+=========================
 
 To test numbers for numerical equality, you should normally use `=',
 not `eq'.  There can be many distinct floating point number objects
@@ -5506,7 +5526,7 @@ Here's a function to do this:
 characters and markers as arguments, and treat them as their number
 equivalents.
 
- - Function: = number &rest more-numbers
+ -- Function: = number &rest more-numbers
      This function returns `t' if all of its arguments are numerically
      equal, `nil' otherwise.
 
@@ -5519,7 +5539,7 @@ equivalents.
           (= 5 5 6)
                => nil
 
- - Function: /= number &rest more-numbers
+ -- Function: /= number &rest more-numbers
      This function returns `t' if no two arguments are numerically
      equal, `nil' otherwise.
 
@@ -5530,7 +5550,7 @@ equivalents.
           (/= 5 6 1)
                => t
 
- - Function: < number &rest more-numbers
+ -- Function: < number &rest more-numbers
      This function returns `t' if the sequence of its arguments is
      monotonically increasing, `nil' otherwise.
 
@@ -5541,7 +5561,7 @@ equivalents.
           (< 5 6 7)
                => t
 
- - Function: <= number &rest more-numbers
+ -- Function: <= number &rest more-numbers
      This function returns `t' if the sequence of its arguments is
      monotonically nondecreasing, `nil' otherwise.
 
@@ -5552,15 +5572,15 @@ equivalents.
           (<= 5 6 5)
                => nil
 
- - Function: > number &rest more-numbers
+ -- Function: > number &rest more-numbers
      This function returns `t' if the sequence of its arguments is
      monotonically decreasing, `nil' otherwise.
 
- - Function: >= number &rest more-numbers
+ -- Function: >= number &rest more-numbers
      This function returns `t' if the sequence of its arguments is
      monotonically nonincreasing, `nil' otherwise.
 
- - Function: max number &rest more-numbers
+ -- Function: max number &rest more-numbers
      This function returns the largest of its arguments.
 
           (max 20)
@@ -5570,7 +5590,7 @@ equivalents.
           (max 1 3 2.5)
                => 3
 
- - Function: min number &rest more-numbers
+ -- Function: min number &rest more-numbers
      This function returns the smallest of its arguments.
 
           (min -4 1)
@@ -5579,12 +5599,12 @@ equivalents.
 \1f
 File: lispref.info,  Node: Numeric Conversions,  Next: Arithmetic Operations,  Prev: Comparison of Numbers,  Up: Numbers
 
-Numeric Conversions
-===================
+9.5 Numeric Conversions
+=======================
 
 To convert an integer to floating point, use the function `float'.
 
- - Function: float number
+ -- Function: float number
      This returns NUMBER converted to floating point.  If NUMBER is
      already a floating point number, `float' returns it unchanged.
 
@@ -5592,11 +5612,11 @@ To convert an integer to floating point, use the function `float'.
 integers; they differ in how they round.  These functions accept
 integer arguments also, and return such arguments unchanged.
 
- - Function: truncate number
+ -- Function: truncate number
      This returns NUMBER, converted to an integer by rounding towards
      zero.
 
- - Function: floor number &optional divisor
+ -- Function: floor number &optional divisor
      This returns NUMBER, converted to an integer by rounding downward
      (towards negative infinity).
 
@@ -5604,11 +5624,11 @@ integer arguments also, and return such arguments unchanged.
      floor is taken; this is the division operation that corresponds to
      `mod'.  An `arith-error' results if DIVISOR is 0.
 
- - Function: ceiling number
+ -- Function: ceiling number
      This returns NUMBER, converted to an integer by rounding upward
      (towards positive infinity).
 
- - Function: round number
+ -- Function: round number
      This returns NUMBER, converted to an integer by rounding towards
      the nearest integer.  Rounding a value equidistant between two
      integers may choose the integer closer to zero, or it may prefer
@@ -5617,8 +5637,8 @@ integer arguments also, and return such arguments unchanged.
 \1f
 File: lispref.info,  Node: Arithmetic Operations,  Next: Rounding Operations,  Prev: Numeric Conversions,  Up: Numbers
 
-Arithmetic Operations
-=====================
+9.6 Arithmetic Operations
+=========================
 
 XEmacs Lisp provides the traditional four arithmetic operations:
 addition, subtraction, multiplication, and division.  Remainder and
@@ -5633,7 +5653,7 @@ any argument is floating.
 not check for overflow.  Thus `(1+ 134217727)' may evaluate to
 -134217728, depending on your hardware.
 
- - Function: 1+ number
+ -- Function: 1+ number
      This function returns NUMBER plus one.  NUMBER may be a number,
      character or marker.  Markers and characters are converted to
      integers.
@@ -5662,15 +5682,15 @@ not check for overflow.  Thus `(1+ 134217727)' may evaluate to
      more convenient and natural way to increment a variable is
      `(incf foo)'.
 
- - Function: 1- number
+ -- Function: 1- number
      This function returns NUMBER minus one.  NUMBER may be a number,
      character or marker.  Markers and characters are converted to
      integers.
 
- - Function: abs number
+ -- Function: abs number
      This returns the absolute value of NUMBER.
 
- - Function: + &rest numbers
+ -- Function: + &rest numbers
      This function adds its arguments together.  When given no
      arguments, `+' returns 0.
 
@@ -5684,7 +5704,7 @@ not check for overflow.  Thus `(1+ 134217727)' may evaluate to
           (+ 1 2 3 4)
                => 10
 
- - Function: - &optional number &rest other-numbers
+ -- Function: - &optional number &rest other-numbers
      The `-' function serves two purposes: negation and subtraction.
      When `-' has a single argument, the value is the negative of the
      argument.  When there are multiple arguments, `-' subtracts each of
@@ -5701,7 +5721,7 @@ not check for overflow.  Thus `(1+ 134217727)' may evaluate to
           (-)
                => 0
 
- - Function: * &rest numbers
+ -- Function: * &rest numbers
      This function multiplies its arguments together, and returns the
      product.  When given no arguments, `*' returns 1.
 
@@ -5715,7 +5735,7 @@ not check for overflow.  Thus `(1+ 134217727)' may evaluate to
           (* 1 2 3 4)
                => 24
 
- - Function: / dividend &rest divisors
+ -- Function: / dividend &rest divisors
      The `/' function serves two purposes: inversion and division.  When
      `/' has a single argument, the value is the inverse of the
      argument.  When there are multiple arguments, `/' divides DIVIDEND
@@ -5750,7 +5770,7 @@ not check for overflow.  Thus `(1+ 134217727)' may evaluate to
      The result of `(/ -17 6)' could in principle be -3 on some
      machines.
 
- - Function: % dividend divisor
+ -- Function: % dividend divisor
      This function returns the integer remainder after division of
      DIVIDEND by DIVISOR.  The arguments must be integers or markers.
 
@@ -5776,7 +5796,7 @@ not check for overflow.  Thus `(1+ 134217727)' may evaluate to
 
      always equals DIVIDEND.
 
- - Function: mod dividend divisor
+ -- Function: mod dividend divisor
      This function returns the value of DIVIDEND modulo DIVISOR; in
      other words, the remainder after division of DIVIDEND by DIVISOR,
      but with the same sign as DIVISOR.  The arguments must be numbers
@@ -5812,8 +5832,8 @@ not check for overflow.  Thus `(1+ 134217727)' may evaluate to
 \1f
 File: lispref.info,  Node: Rounding Operations,  Next: Bitwise Operations,  Prev: Arithmetic Operations,  Up: Numbers
 
-Rounding Operations
-===================
+9.7 Rounding Operations
+=======================
 
 The functions `ffloor', `fceiling', `fround' and `ftruncate' take a
 floating point argument and return a floating point result whose value
@@ -5821,27 +5841,27 @@ is a nearby integer.  `ffloor' returns the nearest integer below;
 `fceiling', the nearest integer above; `ftruncate', the nearest integer
 in the direction towards zero; `fround', the nearest integer.
 
- - Function: ffloor number
+ -- Function: ffloor number
      This function rounds NUMBER to the next lower integral value, and
      returns that value as a floating point number.
 
- - Function: fceiling number
+ -- Function: fceiling number
      This function rounds NUMBER to the next higher integral value, and
      returns that value as a floating point number.
 
- - Function: ftruncate number
+ -- Function: ftruncate number
      This function rounds NUMBER towards zero to an integral value, and
      returns that value as a floating point number.
 
- - Function: fround number
+ -- Function: fround number
      This function rounds NUMBER to the nearest integral value, and
      returns that value as a floating point number.
 
 \1f
 File: lispref.info,  Node: Bitwise Operations,  Next: Math Functions,  Prev: Rounding Operations,  Up: Numbers
 
-Bitwise Operations on Integers
-==============================
+9.8 Bitwise Operations on Integers
+==================================
 
 In a computer, an integer is represented as a binary number, a sequence
 of "bits" (digits which are either zero or one).  A bitwise operation
@@ -5851,7 +5871,7 @@ reproducing the same pattern "moved over".
 
    The bitwise operations in XEmacs Lisp apply only to integers.
 
- - Function: lsh integer1 count
+ -- Function: lsh integer1 count
      `lsh', which is an abbreviation for "logical shift", shifts the
      bits in INTEGER1 to the left COUNT places, or to the right if
      COUNT is negative, bringing zeros into the vacated bits.  If COUNT
@@ -5867,7 +5887,7 @@ reproducing the same pattern "moved over".
                => 10
           ;; Decimal 5 becomes decimal 10.
           00000101 => 00001010
-          
+
           (lsh 7 1)
                => 14
           ;; Decimal 7 becomes decimal 14.
@@ -5891,7 +5911,7 @@ reproducing the same pattern "moved over".
                => 3
           ;; Decimal 6 becomes decimal 3.
           00000110 => 00000011
-          
+
           (lsh 5 -1)
                => 2
           ;; Decimal 5 becomes decimal 2.
@@ -5919,7 +5939,7 @@ reproducing the same pattern "moved over".
           ;; Decimal -2
           1111  1111 1111  1111 1111  1111 1110
 
- - Function: ash integer1 count
+ -- Function: ash integer1 count
      `ash' ("arithmetic shift") shifts the bits in INTEGER1 to the left
      COUNT places, or to the right if COUNT is negative.
 
@@ -5949,7 +5969,7 @@ reproducing the same pattern "moved over".
      Here are other examples:
 
                              ;               28-bit binary values
-          
+
           (lsh 5 2)          ;   5  =  0000  0000 0000  0000 0000  0000 0101
                => 20         ;      =  0000  0000 0000  0000 0000  0001 0100
           (ash 5 2)
@@ -5967,7 +5987,7 @@ reproducing the same pattern "moved over".
           (ash -5 -2)        ;  -5  =  1111  1111 1111  1111 1111  1111 1011
                => -2         ;      =  1111  1111 1111  1111 1111  1111 1110
 
- - Function: logand &rest ints-or-markers
+ -- Function: logand &rest ints-or-markers
      This function returns the "logical and" of the arguments: the Nth
      bit is set in the result if, and only if, the Nth bit is set in
      all the arguments.  ("Set" means that the value of the bit is 1
@@ -5992,20 +6012,20 @@ reproducing the same pattern "moved over".
      just one argument, it returns that argument.
 
                              ;                28-bit binary values
-          
+
           (logand 14 13)     ; 14  =  0000  0000 0000  0000 0000  0000 1110
                              ; 13  =  0000  0000 0000  0000 0000  0000 1101
                => 12         ; 12  =  0000  0000 0000  0000 0000  0000 1100
-          
+
           (logand 14 13 4)   ; 14  =  0000  0000 0000  0000 0000  0000 1110
                              ; 13  =  0000  0000 0000  0000 0000  0000 1101
                              ;  4  =  0000  0000 0000  0000 0000  0000 0100
                => 4          ;  4  =  0000  0000 0000  0000 0000  0000 0100
-          
+
           (logand)
                => -1         ; -1  =  1111  1111 1111  1111 1111  1111 1111
 
- - Function: logior &rest ints-or-markers
+ -- Function: logior &rest ints-or-markers
      This function returns the "inclusive or" of its arguments: the Nth
      bit is set in the result if, and only if, the Nth bit is set in at
      least one of the arguments.  If there are no arguments, the result
@@ -6013,17 +6033,17 @@ reproducing the same pattern "moved over".
      `logior' is passed just one argument, it returns that argument.
 
                              ;               28-bit binary values
-          
+
           (logior 12 5)      ; 12  =  0000  0000 0000  0000 0000  0000 1100
                              ;  5  =  0000  0000 0000  0000 0000  0000 0101
                => 13         ; 13  =  0000  0000 0000  0000 0000  0000 1101
-          
+
           (logior 12 5 7)    ; 12  =  0000  0000 0000  0000 0000  0000 1100
                              ;  5  =  0000  0000 0000  0000 0000  0000 0101
                              ;  7  =  0000  0000 0000  0000 0000  0000 0111
                => 15         ; 15  =  0000  0000 0000  0000 0000  0000 1111
 
- - Function: logxor &rest ints-or-markers
+ -- Function: logxor &rest ints-or-markers
      This function returns the "exclusive or" of its arguments: the Nth
      bit is set in the result if, and only if, the Nth bit is set in an
      odd number of the arguments.  If there are no arguments, the
@@ -6031,17 +6051,17 @@ reproducing the same pattern "moved over".
      `logxor' is passed just one argument, it returns that argument.
 
                              ;               28-bit binary values
-          
+
           (logxor 12 5)      ; 12  =  0000  0000 0000  0000 0000  0000 1100
                              ;  5  =  0000  0000 0000  0000 0000  0000 0101
                => 9          ;  9  =  0000  0000 0000  0000 0000  0000 1001
-          
+
           (logxor 12 5 7)    ; 12  =  0000  0000 0000  0000 0000  0000 1100
                              ;  5  =  0000  0000 0000  0000 0000  0000 0101
                              ;  7  =  0000  0000 0000  0000 0000  0000 0111
                => 14         ; 14  =  0000  0000 0000  0000 0000  0000 1110
 
- - Function: lognot integer
+ -- Function: lognot integer
      This function returns the logical complement of its argument: the
      Nth bit is one in the result if, and only if, the Nth bit is zero
      in INTEGER, and vice-versa.
@@ -6055,78 +6075,78 @@ reproducing the same pattern "moved over".
 \1f
 File: lispref.info,  Node: Math Functions,  Next: Random Numbers,  Prev: Bitwise Operations,  Up: Numbers
 
-Standard Mathematical Functions
-===============================
+9.9 Standard Mathematical Functions
+===================================
 
 These mathematical functions are available if floating point is
 supported (which is the normal state of affairs).  They allow integers
 as well as floating point numbers as arguments.
 
- - Function: sin number
- - Function: cos number
- - Function: tan number
+ -- Function: sin number
+ -- Function: cos number
+ -- Function: tan number
      These are the ordinary trigonometric functions, with argument
      measured in radians.
 
- - Function: asin number
+ -- Function: asin number
      The value of `(asin NUMBER)' is a number between -pi/2 and pi/2
      (inclusive) whose sine is NUMBER; if, however, NUMBER is out of
      range (outside [-1, 1]), then the result is a NaN.
 
- - Function: acos number
+ -- Function: acos number
      The value of `(acos NUMBER)' is a number between 0 and pi
      (inclusive) whose cosine is NUMBER; if, however, NUMBER is out of
      range (outside [-1, 1]), then the result is a NaN.
 
- - Function: atan number &optional number2
+ -- Function: atan number &optional number2
      The value of `(atan NUMBER)' is a number between -pi/2 and pi/2
      (exclusive) whose tangent is NUMBER.
 
      If optional argument NUMBER2 is supplied, the function returns
      `atan2(NUMBER,NUMBER2)'.
 
- - Function: sinh number
- - Function: cosh number
- - Function: tanh number
+ -- Function: sinh number
+ -- Function: cosh number
+ -- Function: tanh number
      These are the ordinary hyperbolic trigonometric functions.
 
- - Function: asinh number
- - Function: acosh number
- - Function: atanh number
+ -- Function: asinh number
+ -- Function: acosh number
+ -- Function: atanh number
      These are the inverse hyperbolic trigonometric functions.
 
- - Function: exp number
+ -- Function: exp number
      This is the exponential function; it returns e to the power
      NUMBER.  e is a fundamental mathematical constant also called the
      base of natural logarithms.
 
- - Function: log number &optional base
+ -- Function: log number &optional base
      This function returns the logarithm of NUMBER, with base BASE.  If
      you don't specify BASE, the base `e' is used.  If NUMBER is
      negative, the result is a NaN.
 
- - Function: log10 number
+ -- Function: log10 number
      This function returns the logarithm of NUMBER, with base 10.  If
      NUMBER is negative, the result is a NaN.  `(log10 X)' == `(log X
      10)', at least approximately.
 
- - Function: expt x y
+ -- Function: expt x y
      This function returns X raised to power Y.  If both arguments are
      integers and Y is positive, the result is an integer; in this
      case, it is truncated to fit the range of possible integer values.
 
- - Function: sqrt number
+ -- Function: sqrt number
      This returns the square root of NUMBER.  If NUMBER is negative,
      the value is a NaN.
 
- - Function: cube-root number
+ -- Function: cube-root number
      This returns the cube root of NUMBER.
 
 \1f
 File: lispref.info,  Node: Random Numbers,  Prev: Math Functions,  Up: Numbers
 
-Random Numbers
-==============
+9.10 Random Numbers
+===================
 
 A deterministic computer program cannot generate true random numbers.
 For most purposes, "pseudo-random numbers" suffice.  A series of
@@ -6148,7 +6168,7 @@ debugging.
 t)'.  This chooses a new seed based on the current time of day and on
 XEmacs's process ID number.
 
- - Function: random &optional limit
+ -- Function: random &optional limit
      This function returns a pseudo-random integer.  Repeated calls
      return a series of pseudo-random integers.
 
@@ -6166,8 +6186,8 @@ XEmacs's process ID number.
 \1f
 File: lispref.info,  Node: Strings and Characters,  Next: Lists,  Prev: Numbers,  Up: Top
 
-Strings and Characters
-**********************
+10 Strings and Characters
+*************************
 
 A string in XEmacs Lisp is an array that contains an ordered sequence
 of characters.  Strings are used as names of symbols, buffers, and
@@ -6195,8 +6215,8 @@ Lisp programs use strings more often than individual characters.
 \1f
 File: lispref.info,  Node: String Basics,  Next: Predicates for Strings,  Up: Strings and Characters
 
-String and Character Basics
-===========================
+10.1 String and Character Basics
+================================
 
 Strings in XEmacs Lisp are arrays that contain an ordered sequence of
 characters.  Characters are their own primitive object type in XEmacs
@@ -6245,16 +6265,16 @@ Type::, for information about the syntax of characters and strings.
 \1f
 File: lispref.info,  Node: Predicates for Strings,  Next: Creating Strings,  Prev: String Basics,  Up: Strings and Characters
 
-The Predicates for Strings
-==========================
+10.2 The Predicates for Strings
+===============================
 
 For more information about general sequence and array predicates, see
 *Note Sequences Arrays Vectors::, and *Note Arrays::.
 
- - Function: stringp object
+ -- Function: stringp object
      This function returns `t' if OBJECT is a string, `nil' otherwise.
 
- - Function: char-or-string-p object
+ -- Function: char-or-string-p object
      This function returns `t' if OBJECT is a string or a character,
      `nil' otherwise.
 
@@ -6266,13 +6286,13 @@ For more information about general sequence and array predicates, see
 \1f
 File: lispref.info,  Node: Creating Strings,  Next: Predicates for Characters,  Prev: Predicates for Strings,  Up: Strings and Characters
 
-Creating Strings
-================
+10.3 Creating Strings
+=====================
 
 The following functions create strings, either from scratch, or by
 putting strings together, or by taking them apart.
 
- - Function: string &rest characters
+ -- Function: string &rest characters
      This function returns a new string made up of CHARACTERS.
 
           (string ?X ?E ?m ?a ?c ?s)
@@ -6285,7 +6305,7 @@ putting strings together, or by taking them apart.
      `bit-vector' (*note Bit Vectors::).  This function has not been
      available in XEmacs prior to 21.0 and FSF Emacs prior to 20.3.
 
- - Function: make-string length character
+ -- Function: make-string length character
      This function returns a new string consisting entirely of LENGTH
      successive copies of CHARACTER.  LENGTH must be a non-negative
      integer.
@@ -6299,7 +6319,7 @@ putting strings together, or by taking them apart.
      (*note String Conversion::), `make-vector' (*note Vectors::), and
      `make-list' (*note Building Lists::).
 
- - Function: substring string start &optional end
+ -- Function: substring string start &optional end
      This function returns a new string which consists of those
      characters from STRING in the range from (and including) the
      character at the index START up to (but excluding) the character
@@ -6355,7 +6375,7 @@ putting strings together, or by taking them apart.
      text in the current buffer.  The beginning of a string is at index
      0, but the beginning of a buffer is at index 1.
 
- - Function: concat &rest sequences
+ -- Function: concat &rest sequences
      This function returns a new string consisting of the characters in
      the arguments passed to it (along with their text properties, if
      any).  The arguments may be strings, lists of numbers, or vectors
@@ -6402,10 +6422,10 @@ putting strings together, or by taking them apart.
 \1f
 File: lispref.info,  Node: Predicates for Characters,  Next: Character Codes,  Prev: Creating Strings,  Up: Strings and Characters
 
-The Predicates for Characters
-=============================
+10.4 The Predicates for Characters
+==================================
 
- - Function: characterp object
+ -- Function: characterp object
      This function returns `t' if OBJECT is a character.
 
      Some functions that work on integers (e.g. the comparison functions
@@ -6419,16 +6439,16 @@ The Predicates for Characters
      in the future; therefore, do not rely on them.  Instead, convert
      the characters explicitly using `char-int'.
 
- - Function: integer-or-char-p object
+ -- Function: integer-or-char-p object
      This function returns `t' if OBJECT is an integer or character.
 
 \1f
 File: lispref.info,  Node: Character Codes,  Next: Text Comparison,  Prev: Predicates for Characters,  Up: Strings and Characters
 
-Character Codes
-===============
+10.5 Character Codes
+====================
 
- - Function: char-int character
+ -- Function: char-int character
      This function converts a character into an equivalent integer.
      The resulting integer will always be non-negative.  The integers in
      the range 0 - 255 map to characters as follows:
@@ -6451,27 +6471,27 @@ Character Codes
      XEmacs, the order in which character sets were loaded, etc., and
      you should not depend on them.
 
- - Function: int-char integer
+ -- Function: int-char integer
      This function converts an integer into the equivalent character.
      Not all integers correspond to valid characters; use `char-int-p'
      to determine whether this is the case.  If the integer cannot be
      converted, `nil' is returned.
 
- - Function: char-int-p object
+ -- Function: char-int-p object
      This function returns `t' if OBJECT is an integer that can be
      converted into a character.
 
- - Function: char-or-char-int-p object
+ -- Function: char-or-char-int-p object
      This function returns `t' if OBJECT is a character or an integer
      that can be converted into one.
 
 \1f
 File: lispref.info,  Node: Text Comparison,  Next: String Conversion,  Prev: Character Codes,  Up: Strings and Characters
 
-Comparison of Characters and Strings
-====================================
+10.6 Comparison of Characters and Strings
+=========================================
 
- - Function: char-equal character1 character2 &optional buffer
+ -- Function: char-equal character1 character2 &optional buffer
      This function returns `t' if the arguments represent the same
      character, `nil' otherwise.  This function ignores differences in
      case if the value of `case-fold-search' is non-`nil' in BUFFER,
@@ -6486,7 +6506,7 @@ Comparison of Characters and Strings
             (char-equal ?x ?X))
                => nil
 
- - Function: char= character1 character2
+ -- Function: char= character1 character2
      This function returns `t' if the arguments represent the same
      character, `nil' otherwise.  Case is significant.
 
@@ -6501,7 +6521,7 @@ Comparison of Characters and Strings
             (char-equal ?x ?X))
                => nil
 
- - Function: string= string1 string2
+ -- Function: string= string1 string2
      This function returns `t' if the characters of the two strings
      match exactly; case is significant.
 
@@ -6513,10 +6533,10 @@ Comparison of Characters and Strings
                => nil
 
 
- - Function: string-equal string1 string2
+ -- Function: string-equal string1 string2
      `string-equal' is another name for `string='.
 
- - Function: string< string1 string2
+ -- Function: string< string1 string2
      This function compares two strings a character at a time.  First it
      scans both the strings at once to find the first pair of
      corresponding characters that do not match.  If the lesser
@@ -6555,7 +6575,7 @@ Comparison of Characters and Strings
           (string< "" "")
                => nil
 
- - Function: string-lessp string1 string2
+ -- Function: string-lessp string1 string2
      `string-lessp' is another name for `string<'.
 
    See also `compare-buffer-substrings' in *Note Comparing Text::, for
@@ -6566,8 +6586,8 @@ of string comparison; see *Note Regexp Search::.
 \1f
 File: lispref.info,  Node: String Conversion,  Next: Modifying Strings,  Prev: Text Comparison,  Up: Strings and Characters
 
-Conversion of Characters and Strings
-====================================
+10.7 Conversion of Characters and Strings
+=========================================
 
 This section describes functions for conversions between characters,
 strings and integers.  `format' and `prin1-to-string' (*note Output
@@ -6580,7 +6600,7 @@ descriptions of text characters and general input events
 (`single-key-description' and `text-char-description').  These
 functions are used primarily for making help messages.
 
- - Function: char-to-string character
+ -- Function: char-to-string character
      This function returns a new string with a length of one character.
      The value of CHARACTER, modulo 256, is used to initialize the
      element of the string.
@@ -6597,7 +6617,7 @@ functions are used primarily for making help messages.
           (make-string 1 ?x)
                => "x"
 
- - Function: string-to-char string
+ -- Function: string-to-char string
      This function returns the first character in STRING.  If the
      string is empty, the function returns 0. (Under XEmacs 19, the
      value is also 0 when the first character of STRING is the null
@@ -6618,7 +6638,7 @@ functions are used primarily for making help messages.
      This function may be eliminated in the future if it does not seem
      useful enough to retain.
 
- - Function: number-to-string number
+ -- Function: number-to-string number
      This function returns a string consisting of the printed
      representation of NUMBER, which may be an integer or a floating
      point number.  The value starts with a sign if the argument is
@@ -6635,7 +6655,7 @@ functions are used primarily for making help messages.
 
      See also the function `format' in *Note Formatting Strings::.
 
- - Function: string-to-number string &optional base
+ -- Function: string-to-number string &optional base
      This function returns the numeric value represented by STRING,
      read in BASE.  It skips spaces and tabs at the beginning of
      STRING, then reads as much of STRING as it can interpret as a
@@ -6663,8 +6683,8 @@ functions are used primarily for making help messages.
 \1f
 File: lispref.info,  Node: Modifying Strings,  Next: String Properties,  Prev: String Conversion,  Up: Strings and Characters
 
-Modifying Strings
-=================
+10.8 Modifying Strings
+======================
 
 You can modify a string using the general array-modifying primitives.
 *Note Arrays::.  The function `aset' modifies a single character; the
@@ -6675,14 +6695,14 @@ character.
 string is created) and is incremented each time a change is made to that
 string.
 
- - Function: string-modified-tick string
+ -- Function: string-modified-tick string
      This function returns the tick counter for `string'.
 
 \1f
 File: lispref.info,  Node: String Properties,  Next: Formatting Strings,  Prev: Modifying Strings,  Up: Strings and Characters
 
-String Properties
-=================
+10.9 String Properties
+======================
 
 Just as with symbols, extents, faces, and glyphs, you can attach
 additional information to strings in the form of "string properties".
@@ -6697,8 +6717,8 @@ properties in a string.
 \1f
 File: lispref.info,  Node: Formatting Strings,  Next: Character Case,  Prev: String Properties,  Up: Strings and Characters
 
-Formatting Strings
-==================
+10.10 Formatting Strings
+========================
 
 "Formatting" means constructing a string by substitution of computed
 values at various places in a constant string.  This string controls
@@ -6710,7 +6730,7 @@ In fact, the functions `message' and `error' provide the same
 formatting feature described here; they differ from `format' only in
 how they use the result of formatting.
 
- - Function: format string &rest objects
+ -- Function: format string &rest objects
      This function returns a new string that is made by copying STRING
      and then replacing any format specification in the copy with
      encodings of the corresponding OBJECTS.  The arguments OBJECTS are
@@ -6804,10 +6824,10 @@ error.
 
      (format "The name of this buffer is %s." (buffer-name))
           => "The name of this buffer is strings.texi."
-     
+
      (format "The buffer object prints as %s." (current-buffer))
           => "The buffer object prints as #<buffer strings.texi>."
-     
+
      (format "The octal value of %d is %o,
               and the hex value is %x." 18 18 18)
           => "The octal value of 18 is 22,
@@ -6843,11 +6863,11 @@ the N+1'th argument, etc.
      (format "Can't find file `%s' in directory `%s'."
              "ignatius.c" "loyola/")
           => "Can't find file `ignatius.c' in directory `loyola/'."
-     
+
      (format "In directory `%2$s', the file `%1$s' was not found."
              "ignatius.c" "loyola/")
           => "In directory `loyola/', the file `ignatius.c' was not found."
-     
+
      (format
          "The numbers %d and %d are %1$x and %x in hex and %1$o and %o in octal."
          37 12)
@@ -6874,7 +6894,7 @@ the `0' flag character is given, zeros are used for padding.
 
      (format "%06d is padded on the left with zeros" 123)
           => "000123 is padded on the left with zeros"
-     
+
      (format "%-6d is padded on the right" 123)
           => "123    is padded on the right"
 
@@ -6892,11 +6912,11 @@ truncated.  In the third case, the padding is on the right.
      (format "The word `%7s' actually has %d letters in it."
              "foo" (length "foo"))
           => "The word `    foo' actually has 3 letters in it."
-     
+
      (format "The word `%7s' actually has %d letters in it."
              "specification" (length "specification"))
           => "The word `specification' actually has 13 letters in it."
-     
+
      (format "The word `%-7s' actually has %d letters in it."
              "foo" (length "foo"))
           => "The word `foo    ' actually has 3 letters in it."
@@ -6926,8 +6946,8 @@ default precision for floating-point conversions is six.
 \1f
 File: lispref.info,  Node: Character Case,  Next: Case Tables,  Prev: Formatting Strings,  Up: Strings and Characters
 
-Character Case
-==============
+10.11 Character Case
+====================
 
 The character case functions change the case of single characters or of
 the contents of strings.  The functions convert only alphabetic
@@ -6938,7 +6958,7 @@ that are passed to them as arguments.
    The examples below use the characters `X' and `x' which have ASCII
 codes 88 and 120 respectively.
 
- - Function: downcase string-or-char &optional buffer
+ -- Function: downcase string-or-char &optional buffer
      This function converts a character or a string to lower case.
 
      When the argument to `downcase' is a string, the function creates
@@ -6954,12 +6974,12 @@ codes 88 and 120 respectively.
 
           (downcase "The cat in the hat")
                => "the cat in the hat"
-          
+
           (downcase ?X)
                => ?x   ;; Under XEmacs 20.
                => 120  ;; Under XEmacs 19.
 
- - Function: upcase string-or-char &optional buffer
+ -- Function: upcase string-or-char &optional buffer
      This function converts a character or a string to upper case.
 
      When the argument to `upcase' is a string, the function creates
@@ -6977,12 +6997,12 @@ codes 88 and 120 respectively.
 
           (upcase "The cat in the hat")
                => "THE CAT IN THE HAT"
-          
+
           (upcase ?x)
                => ?X   ;; Under XEmacs 20.
                => 88   ;; Under XEmacs 19.
 
- - Function: capitalize string-or-char &optional buffer
+ -- Function: capitalize string-or-char &optional buffer
      This function capitalizes strings or characters.  If
      STRING-OR-CHAR is a string, the function creates and returns a new
      string, whose contents are a copy of STRING-OR-CHAR in which each
@@ -7002,10 +7022,10 @@ codes 88 and 120 respectively.
 
           (capitalize "The cat in the hat")
                => "The Cat In The Hat"
-          
+
           (capitalize "THE 77TH-HATTED CAT")
                => "The 77th-Hatted Cat"
-          
+
           (capitalize ?x)
                => ?X   ;; Under XEmacs 20.
                => 88   ;; Under XEmacs 19.
@@ -7013,8 +7033,8 @@ codes 88 and 120 respectively.
 \1f
 File: lispref.info,  Node: Case Tables,  Next: Char Tables,  Prev: Character Case,  Up: Strings and Characters
 
-The Case Table
-==============
+10.12 The Case Table
+====================
 
 You can customize case conversion by installing a special "case table".
 A case table specifies the mapping between upper case and lower case
@@ -7061,21 +7081,21 @@ Changing the standard case table doesn't affect any existing buffers.
 
    Here are the functions for working with case tables:
 
- - Function: case-table-p object
+ -- Function: case-table-p object
      This predicate returns non-`nil' if OBJECT is a valid case table.
 
- - Function: set-standard-case-table case-table
+ -- Function: set-standard-case-table case-table
      This function makes CASE-TABLE the standard case table, so that it
      will apply to any buffers created subsequently.
 
- - Function: standard-case-table
+ -- Function: standard-case-table
      This returns the standard case table.
 
- - Function: current-case-table &optional buffer
+ -- Function: current-case-table &optional buffer
      This function returns the case table of BUFFER, which defaults to
      the current buffer.
 
- - Function: set-case-table case-table
+ -- Function: set-case-table case-table
      This sets the current buffer's case table to CASE-TABLE.
 
    The following three functions are convenient subroutines for packages
@@ -7084,18 +7104,18 @@ DOWNCASE-TABLE provided as an argument; this should be a string to be
 used as the DOWNCASE part of a case table.  They also modify the
 standard syntax table.  *Note Syntax Tables::.
 
- - Function: set-case-syntax-pair uc lc downcase-table
+ -- Function: set-case-syntax-pair uc lc downcase-table
      This function specifies a pair of corresponding letters, one upper
      case and one lower case.
 
- - Function: set-case-syntax-delims l r downcase-table
+ -- Function: set-case-syntax-delims l r downcase-table
      This function makes characters L and R a matching pair of
      case-invariant delimiters.
 
- - Function: set-case-syntax char syntax downcase-table
+ -- Function: set-case-syntax char syntax downcase-table
      This function makes CHAR case-invariant, with syntax SYNTAX.
 
- - Command: describe-buffer-case-table
+ -- Command: describe-buffer-case-table
      This command displays a description of the contents of the current
      buffer's case table.
 
@@ -7105,8 +7125,8 @@ table and define a case table for the 8-bit ISO Latin 1 character set.
 \1f
 File: lispref.info,  Node: Char Tables,  Prev: Case Tables,  Up: Strings and Characters
 
-The Char Table
-==============
+10.13 The Char Table
+====================
 
 A char table is a table that maps characters (or ranges of characters)
 to values.  Char tables are specialized for characters, only allowing
@@ -7138,7 +7158,7 @@ assigned values are
 
    * a single character
 
- - Function: char-table-p object
+ -- Function: char-table-p object
      This function returns non-`nil' if OBJECT is a char table.
 
 * Menu:
@@ -7149,8 +7169,8 @@ assigned values are
 \1f
 File: lispref.info,  Node: Char Table Types,  Next: Working With Char Tables,  Up: Char Tables
 
-Char Table Types
-----------------
+10.13.1 Char Table Types
+------------------------
 
 Each char table type is used for a different purpose and allows
 different sorts of values.  The different char table types are
@@ -7180,27 +7200,27 @@ different sorts of values.  The different char table types are
      character.  Higher-level Lisp functions are provided for working
      with syntax tables.  The valid values are integers.
 
- - Function: char-table-type char-table
+ -- Function: char-table-type char-table
      This function returns the type of char table CHAR-TABLE.
 
- - Function: char-table-type-list
+ -- Function: char-table-type-list
      This function returns a list of the recognized char table types.
 
- - Function: valid-char-table-type-p type
+ -- Function: valid-char-table-type-p type
      This function returns `t' if TYPE if a recognized char table type.
 
 \1f
 File: lispref.info,  Node: Working With Char Tables,  Prev: Char Table Types,  Up: Char Tables
 
-Working With Char Tables
-------------------------
+10.13.2 Working With Char Tables
+--------------------------------
 
- - Function: make-char-table type
+ -- Function: make-char-table type
      This function makes a new, empty char table of type TYPE.  TYPE
      should be a symbol, one of `char', `category', `display',
      `generic', or `syntax'.
 
- - Function: put-char-table range value char-table
+ -- Function: put-char-table range value char-table
      This function sets the value for chars in RANGE to be VALUE in
      CHAR-TABLE.
 
@@ -7218,17 +7238,17 @@ Working With Char Tables
 
      VALUE must be a value appropriate for the type of CHAR-TABLE.
 
- - Function: get-char-table character char-table
+ -- Function: get-char-table character char-table
      This function finds the value for CHARACTER in CHAR-TABLE.
 
- - Function: get-range-char-table range char-table &optional multi
+ -- Function: get-range-char-table range char-table &optional multi
      This function finds the value for a range in CHAR-TABLE.  If there
      is more than one value, MULTI is returned (defaults to `nil').
 
- - Function: reset-char-table char-table
+ -- Function: reset-char-table char-table
      This function resets CHAR-TABLE to its default state.
 
- - Function: map-char-table function char-table &optional range
+ -- Function: map-char-table function char-table &optional range
      This function maps FUNCTION over entries in CHAR-TABLE, calling it
      with two args, each key and value in the table.
 
@@ -7236,19 +7256,19 @@ Working With Char Tables
      as the RANGE argument to `put-range-table'.  If omitted or `t', it
      defaults to the entire table.
 
- - Function: valid-char-table-value-p value char-table-type
+ -- Function: valid-char-table-value-p value char-table-type
      This function returns non-`nil' if VALUE is a valid value for
      CHAR-TABLE-TYPE.
 
- - Function: check-valid-char-table-value value char-table-type
+ -- Function: check-valid-char-table-value value char-table-type
      This function signals an error if VALUE is not a valid value for
      CHAR-TABLE-TYPE.
 
 \1f
 File: lispref.info,  Node: Lists,  Next: Sequences Arrays Vectors,  Prev: Strings and Characters,  Up: Top
 
-Lists
-*****
+11 Lists
+********
 
 A "list" represents a sequence of zero or more elements (which may be
 any Lisp objects).  The important difference between lists and vectors
@@ -7272,8 +7292,8 @@ the whole list.
 \1f
 File: lispref.info,  Node: Cons Cells,  Next: Lists as Boxes,  Up: Lists
 
-Lists and Cons Cells
-====================
+11.1 Lists and Cons Cells
+=========================
 
 Lists in Lisp are not a primitive data type; they are built up from
 "cons cells".  A cons cell is a data object that represents an ordered
@@ -7302,8 +7322,8 @@ of L except the first.
 \1f
 File: lispref.info,  Node: Lists as Boxes,  Next: List-related Predicates,  Prev: Cons Cells,  Up: Lists
 
-Lists as Linked Pairs of Boxes
-==============================
+11.2 Lists as Linked Pairs of Boxes
+===================================
 
 A cons cell can be illustrated as a pair of boxes.  The first box
 represents the CAR and the second box represents the CDR.  Here is an
@@ -7369,26 +7389,26 @@ and lists, and for more "box and arrow" illustrations of lists.
 \1f
 File: lispref.info,  Node: List-related Predicates,  Next: List Elements,  Prev: Lists as Boxes,  Up: Lists
 
-Predicates on Lists
-===================
+11.3 Predicates on Lists
+========================
 
 The following predicates test whether a Lisp object is an atom, is a
 cons cell or is a list, or whether it is the distinguished object
 `nil'.  (Many of these predicates can be defined in terms of the
 others, but they are used so often that it is worth having all of them.)
 
- - Function: consp object
+ -- Function: consp object
      This function returns `t' if OBJECT is a cons cell, `nil'
      otherwise.  `nil' is not a cons cell, although it _is_ a list.
 
- - Function: atom object
+ -- Function: atom object
      This function returns `t' if OBJECT is an atom, `nil' otherwise.
      All objects except cons cells are atoms.  The symbol `nil' is an
      atom and is also a list; it is the only Lisp object that is both.
 
           (atom OBJECT) == (not (consp OBJECT))
 
- - Function: listp object
+ -- Function: listp object
      This function returns `t' if OBJECT is a cons cell or `nil'.
      Otherwise, it returns `nil'.
 
@@ -7397,13 +7417,13 @@ others, but they are used so often that it is worth having all of them.)
           (listp '())
                => t
 
- - Function: nlistp object
+ -- Function: nlistp object
      This function is the opposite of `listp': it returns `t' if OBJECT
      is not a list.  Otherwise, it returns `nil'.
 
           (listp OBJECT) == (not (nlistp OBJECT))
 
- - Function: null object
+ -- Function: null object
      This function returns `t' if OBJECT is `nil', and returns `nil'
      otherwise.  This function is identical to `not', but as a matter
      of clarity we use `null' when OBJECT is considered a list and
index 6116d38..30caa62 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -52,10 +52,10 @@ Foundation instead of in the original English.
 \1f
 File: lispref.info,  Node: List Elements,  Next: Building Lists,  Prev: List-related Predicates,  Up: Lists
 
-Accessing Elements of Lists
-===========================
+11.4 Accessing Elements of Lists
+================================
 
- - Function: car cons-cell
+ -- Function: car cons-cell
      This function returns the value pointed to by the first pointer of
      the cons cell CONS-CELL.  Expressed another way, this function
      returns the CAR of CONS-CELL.
@@ -69,7 +69,7 @@ Accessing Elements of Lists
           (car '())
                => nil
 
- - Function: cdr cons-cell
+ -- Function: cdr cons-cell
      This function returns the value pointed to by the second pointer of
      the cons cell CONS-CELL.  Expressed another way, this function
      returns the CDR of CONS-CELL.
@@ -83,7 +83,7 @@ Accessing Elements of Lists
           (cdr '())
                => nil
 
- - Function: car-safe object
+ -- Function: car-safe object
      This function lets you take the CAR of a cons cell while avoiding
      errors for other data types.  It returns the CAR of OBJECT if
      OBJECT is a cons cell, `nil' otherwise.  This is in contrast to
@@ -96,7 +96,7 @@ Accessing Elements of Lists
                 (car x)
               nil))
 
- - Function: cdr-safe object
+ -- Function: cdr-safe object
      This function lets you take the CDR of a cons cell while avoiding
      errors for other data types.  It returns the CDR of OBJECT if
      OBJECT is a cons cell, `nil' otherwise.  This is in contrast to
@@ -109,7 +109,7 @@ Accessing Elements of Lists
                 (cdr x)
               nil))
 
- - Function: nth n list
+ -- Function: nth n list
      This function returns the Nth element of LIST.  Elements are
      numbered starting with zero, so the CAR of LIST is element number
      zero.  If the length of LIST is N or less, the value is `nil'.
@@ -122,10 +122,10 @@ Accessing Elements of Lists
                => nil
           (nth -3 '(1 2 3 4))
                => 1
-          
+
           (nth n x) == (car (nthcdr n x))
 
- - Function: nthcdr n list
+ -- Function: nthcdr n list
      This function returns the Nth CDR of LIST.  In other words, it
      removes the first N links of LIST and returns what follows.
 
@@ -143,34 +143,34 @@ Many convenience functions are provided to make it easier for you to
 access particular elements in a nested list.  All of these can be
 rewritten in terms of the functions just described.
 
- - Function: caar cons-cell
- - Function: cadr cons-cell
- - Function: cdar cons-cell
- - Function: cddr cons-cell
- - Function: caaar cons-cell
- - Function: caadr cons-cell
- - Function: cadar cons-cell
- - Function: caddr cons-cell
- - Function: cdaar cons-cell
- - Function: cdadr cons-cell
- - Function: cddar cons-cell
- - Function: cdddr cons-cell
- - Function: caaaar cons-cell
- - Function: caaadr cons-cell
- - Function: caadar cons-cell
- - Function: caaddr cons-cell
- - Function: cadaar cons-cell
- - Function: cadadr cons-cell
- - Function: caddar cons-cell
- - Function: cadddr cons-cell
- - Function: cdaaar cons-cell
- - Function: cdaadr cons-cell
- - Function: cdadar cons-cell
- - Function: cdaddr cons-cell
- - Function: cddaar cons-cell
- - Function: cddadr cons-cell
- - Function: cdddar cons-cell
- - Function: cddddr cons-cell
+ -- Function: caar cons-cell
+ -- Function: cadr cons-cell
+ -- Function: cdar cons-cell
+ -- Function: cddr cons-cell
+ -- Function: caaar cons-cell
+ -- Function: caadr cons-cell
+ -- Function: cadar cons-cell
+ -- Function: caddr cons-cell
+ -- Function: cdaar cons-cell
+ -- Function: cdadr cons-cell
+ -- Function: cddar cons-cell
+ -- Function: cdddr cons-cell
+ -- Function: caaaar cons-cell
+ -- Function: caaadr cons-cell
+ -- Function: caadar cons-cell
+ -- Function: caaddr cons-cell
+ -- Function: cadaar cons-cell
+ -- Function: cadadr cons-cell
+ -- Function: caddar cons-cell
+ -- Function: cadddr cons-cell
+ -- Function: cdaaar cons-cell
+ -- Function: cdaadr cons-cell
+ -- Function: cdadar cons-cell
+ -- Function: cdaddr cons-cell
+ -- Function: cddaar cons-cell
+ -- Function: cddadr cons-cell
+ -- Function: cdddar cons-cell
+ -- Function: cddddr cons-cell
      Each of these functions is equivalent to one or more applications
      of `car' and/or `cdr'.  For example,
 
@@ -191,37 +191,37 @@ rewritten in terms of the functions just described.
      That is to say, read the a's and d's from right to left and apply
      a `car' or `cdr' for each a or d found, respectively.
 
- - Function: first list
+ -- Function: first list
      This is equivalent to `(nth 0 LIST)', i.e. the first element of
      LIST. (Note that this is also equivalent to `car'.)
 
- - Function: second list
+ -- Function: second list
      This is equivalent to `(nth 1 LIST)', i.e. the second element of
      LIST.
 
- - Function: third list
- - Function: fourth list
- - Function: fifth list
- - Function: sixth list
- - Function: seventh list
- - Function: eighth list
- - Function: ninth list
- - Function: tenth list
+ -- Function: third list
+ -- Function: fourth list
+ -- Function: fifth list
+ -- Function: sixth list
+ -- Function: seventh list
+ -- Function: eighth list
+ -- Function: ninth list
+ -- Function: tenth list
      These are equivalent to `(nth 2 LIST)' through `(nth 9 LIST)'
      respectively, i.e. the third through tenth elements of LIST.
 
 \1f
 File: lispref.info,  Node: Building Lists,  Next: Modifying Lists,  Prev: List Elements,  Up: Lists
 
-Building Cons Cells and Lists
-=============================
+11.5 Building Cons Cells and Lists
+==================================
 
 Many functions build lists, as lists reside at the very heart of Lisp.
 `cons' is the fundamental list-building function; however, it is
 interesting to note that `list' is used more times in the source code
 for Emacs than `cons'.
 
- - Function: cons object1 object2
+ -- Function: cons object1 object2
      This function is the fundamental function used to build new list
      structure.  It creates a new cons cell, making OBJECT1 the CAR,
      and OBJECT2 the CDR.  It then returns the new cons cell.  The
@@ -245,7 +245,7 @@ for Emacs than `cons'.
      used in this example and the function named `list' described below;
      any symbol can serve both purposes.
 
- - Function: list &rest objects
+ -- Function: list &rest objects
      This function creates a list with OBJECTS as its elements.  The
      resulting list is always `nil'-terminated.  If no OBJECTS are
      given, the empty list is returned.
@@ -257,7 +257,7 @@ for Emacs than `cons'.
           (list)
                => nil
 
- - Function: make-list length object
+ -- Function: make-list length object
      This function creates a list of length LENGTH, in which all the
      elements have the identical value OBJECT.  Compare `make-list'
      with `make-string' (*note Creating Strings::).
@@ -267,7 +267,7 @@ for Emacs than `cons'.
           (make-list 0 'pigs)
                => nil
 
- - Function: append &rest sequences
+ -- Function: append &rest sequences
      This function returns a list containing all the elements of
      SEQUENCES.  The SEQUENCES may be lists, vectors, or strings, but
      the last one should be a list.  All arguments except the last one
@@ -290,7 +290,7 @@ for Emacs than `cons'.
                => (pine oak)
           (setq more-trees (append '(maple birch) trees))
                => (maple birch pine oak)
-          
+
           trees
                => (pine oak)
           more-trees
@@ -360,7 +360,7 @@ for Emacs than `cons'.
      number in this way is with `format' (*note Formatting Strings::)
      or `number-to-string' (*note String Conversion::).
 
- - Function: reverse list
+ -- Function: reverse list
      This function creates a new list whose elements are the elements of
      LIST, but in reverse order.  The original argument LIST is _not_
      altered.
@@ -375,8 +375,8 @@ for Emacs than `cons'.
 \1f
 File: lispref.info,  Node: Modifying Lists,  Next: Sets And Lists,  Prev: Building Lists,  Up: Lists
 
-Modifying Existing List Structure
-=================================
+11.6 Modifying Existing List Structure
+======================================
 
 You can modify the CAR and CDR contents of a cons cell with the
 primitives `setcar' and `setcdr'.
@@ -396,13 +396,13 @@ primitives `setcar' and `setcdr'.
 \1f
 File: lispref.info,  Node: Setcar,  Next: Setcdr,  Up: Modifying Lists
 
-Altering List Elements with `setcar'
-------------------------------------
+11.6.1 Altering List Elements with `setcar'
+-------------------------------------------
 
 Changing the CAR of a cons cell is done with `setcar'.  When used on a
 list, `setcar' replaces one element of a list with a different element.
 
- - Function: setcar cons-cell object
+ -- Function: setcar cons-cell object
      This function stores OBJECT as the new CAR of CONS-CELL, replacing
      its previous CAR.  It returns the value OBJECT.  For example:
 
@@ -422,7 +422,7 @@ lists.  Here is an example:
           => (a b c)
      (setq x2 (cons 'z (cdr x1)))
           => (z b c)
-     
+
      ;; Replace the CAR of a shared link.
      (setcar (cdr x1) 'foo)
           => foo
@@ -430,7 +430,7 @@ lists.  Here is an example:
           => (a foo c)
      x2
           => (z foo c)
-     
+
      ;; Replace the CAR of a link that is not shared.
      (setcar x1 'baz)
           => baz
@@ -475,12 +475,12 @@ relationship:
 \1f
 File: lispref.info,  Node: Setcdr,  Next: Rearrangement,  Prev: Setcar,  Up: Modifying Lists
 
-Altering the CDR of a List
---------------------------
+11.6.2 Altering the CDR of a List
+---------------------------------
 
 The lowest-level primitive for modifying a CDR is `setcdr':
 
- - Function: setcdr cons-cell object
+ -- Function: setcdr cons-cell object
      This function stores OBJECT as the new CDR of CONS-CELL, replacing
      its previous CDR.  It returns the value OBJECT.
 
@@ -551,8 +551,8 @@ list.
 \1f
 File: lispref.info,  Node: Rearrangement,  Prev: Setcdr,  Up: Modifying Lists
 
-Functions that Rearrange Lists
-------------------------------
+11.6.3 Functions that Rearrange Lists
+-------------------------------------
 
 Here are some functions that rearrange lists "destructively" by
 modifying the CDRs of their component cons cells.  We call these
@@ -562,7 +562,7 @@ to them as arguments, to produce a new list that is the returned value.
    See `delq', in *Note Sets And Lists::, for another function that
 modifies cons cells.
 
- - Function: nconc &rest lists
+ -- Function: nconc &rest lists
      This function returns a list containing all the elements of LISTS.
      Unlike `append' (*note Building Lists::), the LISTS are _not_
      copied.  Instead, the last CDR of each of the LISTS is changed to
@@ -594,21 +594,21 @@ modifies cons cells.
 
           (defun add-foo (x)            ; We want this function to add
             (nconc '(foo) x))           ;   `foo' to the front of its arg.
-          
+
           (symbol-function 'add-foo)
                => (lambda (x) (nconc (quote (foo)) x))
-          
+
           (setq xx (add-foo '(1 2)))    ; It seems to work.
                => (foo 1 2)
           (setq xy (add-foo '(3 4)))    ; What happened?
                => (foo 1 2 3 4)
           (eq xx xy)
                => t
-          
+
           (symbol-function 'add-foo)
                => (lambda (x) (nconc (quote (foo 1 2 3 4) x)))
 
- - Function: nreverse list
+ -- Function: nreverse list
      This function reverses the order of the elements of LIST.  Unlike
      `reverse', `nreverse' alters its argument by reversing the CDRs in
      the cons cells forming the list.  The cons cell that used to be
@@ -643,7 +643,7 @@ modifies cons cells.
                             |             |      |            |
                              -------------        ------------
 
- - Function: sort list predicate
+ -- Function: sort list predicate
      This function sorts LIST stably, though destructively, and returns
      the sorted list.  It compares elements using PREDICATE.  A stable
      sort is one in which elements with equal sort keys maintain their
@@ -692,8 +692,8 @@ modifies cons cells.
 \1f
 File: lispref.info,  Node: Sets And Lists,  Next: Association Lists,  Prev: Modifying Lists,  Up: Lists
 
-Using Lists as Sets
-===================
+11.7 Using Lists as Sets
+========================
 
 A list can represent an unordered mathematical set--simply consider a
 value an element of a set if it appears in the list, and ignore the
@@ -707,7 +707,7 @@ versions, `member' and `delete'.
      XEmacs Lisp does not have them.  You can write them in Lisp if you
      wish.
 
- - Function: memq object list
+ -- Function: memq object list
      This function tests to see whether OBJECT is a member of LIST.  If
      it is, `memq' returns a list starting with the first occurrence of
      OBJECT.  Otherwise, it returns `nil'.  The letter `q' in `memq'
@@ -719,7 +719,7 @@ versions, `member' and `delete'.
           (memq '(2) '((1) (2)))    ; `(2)' and `(2)' are not `eq'.
                => nil
 
- - Function: delq object list
+ -- Function: delq object list
      This function destructively removes all elements `eq' to OBJECT
      from LIST.  The letter `q' in `delq' says that it uses `eq' to
      compare OBJECT against the elements of the list, like `memq'.
@@ -763,7 +763,7 @@ and the `(4)' in the `sample-list' are not `eq':
    The following two functions are like `memq' and `delq' but use
 `equal' rather than `eq' to compare elements.  They are new in Emacs 19.
 
- - Function: member object list
+ -- Function: member object list
      The function `member' tests to see whether OBJECT is a member of
      LIST, comparing members with OBJECT using `equal'.  If OBJECT is a
      member, `member' returns a list starting with its first occurrence
@@ -779,7 +779,7 @@ and the `(4)' in the `sample-list' are not `eq':
           (member "foo" '("foo" "bar"))
                => ("foo" "bar")
 
- - Function: delete object list
+ -- Function: delete object list
      This function destructively removes all elements `equal' to OBJECT
      from LIST.  It is to `delq' as `member' is to `memq': it uses
      `equal' to compare elements with OBJECT, like `member'; when it
@@ -799,8 +799,8 @@ for another way to add an element to a list stored in a variable.
 \1f
 File: lispref.info,  Node: Association Lists,  Next: Property Lists,  Prev: Sets And Lists,  Up: Lists
 
-Association Lists
-=================
+11.8 Association Lists
+======================
 
 An "association list", or "alist" for short, records a mapping from
 keys to values.  It is a list of cons cells called "associations": the
@@ -853,7 +853,7 @@ respects.  A property list behaves like an association list in which
 each key can occur only once.  *Note Property Lists::, for a comparison
 of property lists and association lists.
 
- - Function: assoc key alist
+ -- Function: assoc key alist
      This function returns the first association for KEY in ALIST.  It
      compares KEY against the alist elements using `equal' (*note
      Equality Predicates::).  It returns `nil' if no association in
@@ -875,13 +875,13 @@ of property lists and association lists.
                 '((2 "Austrian Pine" "Red Pine")
                   (3 "Pitch Pine")
                   (5 "White Pine")))
-          
+
           (cdr (assoc 3 needles-per-cluster))
                => ("Pitch Pine")
           (cdr (assoc 2 needles-per-cluster))
                => ("Austrian Pine" "Red Pine")
 
- - Function: rassoc value alist
+ -- Function: rassoc value alist
      This function returns the first association with value VALUE in
      ALIST.  It returns `nil' if no association in ALIST has a CDR
      `equal' to VALUE.
@@ -890,7 +890,7 @@ of property lists and association lists.
      ALIST association instead of the CAR.  You can think of this as
      "reverse `assoc'", finding the key for a given value.
 
- - Function: assq key alist
+ -- Function: assq key alist
      This function is like `assoc' in that it returns the first
      association for KEY in ALIST, but it makes the comparison using
      `eq' instead of `equal'.  `assq' returns `nil' if no association
@@ -909,13 +909,13 @@ of property lists and association lists.
           (setq leaves
                 '(("simple leaves" . oak)
                   ("compound leaves" . horsechestnut)))
-          
+
           (assq "simple leaves" leaves)
                => nil
           (assoc "simple leaves" leaves)
                => ("simple leaves" . oak)
 
- - Function: rassq value alist
+ -- Function: rassq value alist
      This function returns the first association with value VALUE in
      ALIST.  It returns `nil' if no association in ALIST has a CDR `eq'
      to VALUE.
@@ -927,7 +927,7 @@ of property lists and association lists.
      For example:
 
           (setq trees '((pine . cones) (oak . acorns) (maple . seeds)))
-          
+
           (rassq 'acorns trees)
                => (oak . acorns)
           (rassq 'spores trees)
@@ -937,7 +937,7 @@ of property lists and association lists.
      the CDR of an element:
 
           (setq colors '((rose red) (lily white) (buttercup yellow)))
-          
+
           (rassq 'white colors)
                => nil
 
@@ -947,7 +947,7 @@ of property lists and association lists.
 
           (lily white) == (lily . (white))
 
- - Function: remassoc key alist
+ -- Function: remassoc key alist
      This function deletes by side effect any associations with key KEY
      in ALIST--i.e. it removes any elements from ALIST whose `car' is
      `equal' to KEY.  The modified ALIST is returned.
@@ -957,7 +957,7 @@ of property lists and association lists.
      `(setq foo (remassoc key foo))' to be sure of changing the value
      of `foo'.
 
- - Function: remassq key alist
+ -- Function: remassq key alist
      This function deletes by side effect any associations with key KEY
      in ALIST--i.e. it removes any elements from ALIST whose `car' is
      `eq' to KEY.  The modified ALIST is returned.
@@ -965,7 +965,7 @@ of property lists and association lists.
      This function is exactly like `remassoc', but comparisons between
      KEY and keys in ALIST are done using `eq' instead of `equal'.
 
- - Function: remrassoc value alist
+ -- Function: remrassoc value alist
      This function deletes by side effect any associations with value
      VALUE in ALIST--i.e. it removes any elements from ALIST whose
      `cdr' is `equal' to VALUE.  The modified ALIST is returned.
@@ -980,7 +980,7 @@ of property lists and association lists.
      as "reverse `remassoc'", removing an association based on its
      value instead of its key.
 
- - Function: remrassq value alist
+ -- Function: remrassq value alist
      This function deletes by side effect any associations with value
      VALUE in ALIST--i.e. it removes any elements from ALIST whose
      `cdr' is `eq' to VALUE.  The modified ALIST is returned.
@@ -988,7 +988,7 @@ of property lists and association lists.
      This function is exactly like `remrassoc', but comparisons between
      VALUE and values in ALIST are done using `eq' instead of `equal'.
 
- - Function: copy-alist alist
+ -- Function: copy-alist alist
      This function returns a two-level deep copy of ALIST: it creates a
      new copy of each association, so that you can alter the
      associations of the new alist without changing the old one.
@@ -1001,13 +1001,13 @@ of property lists and association lists.
           ((2 "Austrian Pine" "Red Pine")
            (3 "Pitch Pine")
            (5 "White Pine"))
-          
+
           (setq copy (copy-alist needles-per-cluster))
           =>
           ((2 "Austrian Pine" "Red Pine")
            (3 "Pitch Pine")
            (5 "White Pine"))
-          
+
           (eq needles-per-cluster copy)
                => nil
           (equal needles-per-cluster copy)
@@ -1036,8 +1036,8 @@ table is the alist, and the alist associations are the items.
 \1f
 File: lispref.info,  Node: Property Lists,  Next: Weak Lists,  Prev: Association Lists,  Up: Lists
 
-Property Lists
-==============
+11.9 Property Lists
+===================
 
 A "property list" (or "plist") is another way of representing a mapping
 from keys to values.  Instead of the list consisting of conses of a key
@@ -1059,13 +1059,13 @@ association lists generally are not.
 compared with `eq', and "lax" plists, whose keys are compared with
 `equal',
 
- - Function: valid-plist-p plist
+ -- Function: valid-plist-p plist
      Given a plist, this function returns non-`nil' if its format is
      correct.  If it returns `nil', `check-valid-plist' will signal an
      error when given the plist; that means it's a malformed or circular
      plist or has non-symbols as keywords.
 
- - Function: check-valid-plist plist
+ -- Function: check-valid-plist plist
      Given a plist, this function signals an error if there is anything
      wrong with it.  This means that it's a malformed or circular plist.
 
@@ -1078,15 +1078,15 @@ compared with `eq', and "lax" plists, whose keys are compared with
 \1f
 File: lispref.info,  Node: Working With Normal Plists,  Next: Working With Lax Plists,  Up: Property Lists
 
-Working With Normal Plists
---------------------------
+11.9.1 Working With Normal Plists
+---------------------------------
 
- - Function: plist-get plist property &optional default
+ -- Function: plist-get plist property &optional default
      This function extracts a value from a property list.  The function
      returns the value corresponding to the given PROPERTY, or DEFAULT
      if PROPERTY is not one of the properties on the list.
 
- - Function: plist-put plist property value
+ -- Function: plist-put plist property value
      This function changes the value in PLIST of PROPERTY to VALUE.  If
      PROPERTY is already a property on the list, its value is set to
      VALUE, otherwise the new PROPERTY VALUE pair is added.  The new
@@ -1094,13 +1094,13 @@ Working With Normal Plists
      be sure to use the new value.  The PLIST is modified by side
      effects.
 
- - Function: plist-remprop plist property
+ -- Function: plist-remprop plist property
      This function removes from PLIST the property PROPERTY and its
      value.  The new plist is returned; use `(setq x (plist-remprop x
      property))' to be sure to use the new value.  The PLIST is
      modified by side effects.
 
- - Function: plist-member plist property
+ -- Function: plist-member plist property
      This function returns `t' if PROPERTY has a value specified in
      PLIST.
 
@@ -1110,16 +1110,16 @@ This feature is a virus that has infected old Lisp implementations (and
 thus E-Lisp, due to RMS's enamorment with old Lisps), but should not be
 used except for backward compatibility.
 
- - Function: plists-eq a b &optional nil-means-not-present
+ -- Function: plists-eq a b &optional nil-means-not-present
      This function returns non-`nil' if property lists A and B are `eq'
      (i.e. their values are `eq').
 
- - Function: plists-equal a b &optional nil-means-not-present
+ -- Function: plists-equal a b &optional nil-means-not-present
      This function returns non-`nil' if property lists A and B are
      `equal' (i.e. their values are `equal'; their keys are still
      compared using `eq').
 
- - Function: canonicalize-plist plist &optional nil-means-not-present
+ -- Function: canonicalize-plist plist &optional nil-means-not-present
      This function destructively removes any duplicate entries from a
      plist.  In such cases, the first entry applies.
 
@@ -1130,27 +1130,27 @@ used except for backward compatibility.
 \1f
 File: lispref.info,  Node: Working With Lax Plists,  Next: Converting Plists To/From Alists,  Prev: Working With Normal Plists,  Up: Property Lists
 
-Working With Lax Plists
------------------------
+11.9.2 Working With Lax Plists
+------------------------------
 
 Recall that a "lax plist" is a property list whose keys are compared
 using `equal' instead of `eq'.
 
- - Function: lax-plist-get lax-plist property &optional default
+ -- Function: lax-plist-get lax-plist property &optional default
      This function extracts a value from a lax property list.  The
      function returns the value corresponding to the given PROPERTY, or
      DEFAULT if PROPERTY is not one of the properties on the list.
 
- - Function: lax-plist-put lax-plist property value
+ -- Function: lax-plist-put lax-plist property value
      This function changes the value in LAX-PLIST of PROPERTY to VALUE.
 
- - Function: lax-plist-remprop lax-plist property
+ -- Function: lax-plist-remprop lax-plist property
      This function removes from LAX-PLIST the property PROPERTY and its
      value.  The new plist is returned; use `(setq x (lax-plist-remprop
      x property))' to be sure to use the new value.  The LAX-PLIST is
      modified by side effects.
 
- - Function: lax-plist-member lax-plist property
+ -- Function: lax-plist-member lax-plist property
      This function returns `t' if PROPERTY has a value specified in
      LAX-PLIST.
 
@@ -1160,16 +1160,16 @@ This feature is a virus that has infected old Lisp implementations (and
 thus E-Lisp, due to RMS's enamorment with old Lisps), but should not be
 used except for backward compatibility.
 
- - Function: lax-plists-eq a b &optional nil-means-not-present
+ -- Function: lax-plists-eq a b &optional nil-means-not-present
      This function returns non-`nil' if lax property lists A and B are
      `eq' (i.e. their values are `eq'; their keys are still compared
      using `equal').
 
- - Function: lax-plists-equal a b &optional nil-means-not-present
+ -- Function: lax-plists-equal a b &optional nil-means-not-present
      This function returns non-`nil' if lax property lists A and B are
      `equal' (i.e. their values are `equal').
 
- - Function: canonicalize-lax-plist lax-plist &optional
+ -- Function: canonicalize-lax-plist lax-plist &optional
           nil-means-not-present
      This function destructively removes any duplicate entries from a
      lax plist.  In such cases, the first entry applies.
@@ -1181,10 +1181,10 @@ used except for backward compatibility.
 \1f
 File: lispref.info,  Node: Converting Plists To/From Alists,  Prev: Working With Lax Plists,  Up: Property Lists
 
-Converting Plists To/From Alists
---------------------------------
+11.9.3 Converting Plists To/From Alists
+---------------------------------------
 
- - Function: alist-to-plist alist
+ -- Function: alist-to-plist alist
      This function converts association list ALIST into the equivalent
      property-list form.  The plist is returned.  This converts from
 
@@ -1196,7 +1196,7 @@ Converting Plists To/From Alists
 
      The original alist is not modified.
 
- - Function: plist-to-alist plist
+ -- Function: plist-to-alist plist
      This function converts property list PLIST into the equivalent
      association-list form.  The alist is returned.  This converts from
 
@@ -1213,19 +1213,19 @@ except that they destructively modify their arguments, using cons cells
 from the original list to form the new list rather than allocating new
 cons cells.
 
- - Function: destructive-alist-to-plist alist
+ -- Function: destructive-alist-to-plist alist
      This function destructively converts association list ALIST into
      the equivalent property-list form.  The plist is returned.
 
- - Function: destructive-plist-to-alist plist
+ -- Function: destructive-plist-to-alist plist
      This function destructively converts property list PLIST into the
      equivalent association-list form.  The alist is returned.
 
 \1f
 File: lispref.info,  Node: Weak Lists,  Prev: Property Lists,  Up: Lists
 
-Weak Lists
-==========
+11.10 Weak Lists
+================
 
 A "weak list" is a special sort of list whose members are not counted
 as references for the purpose of garbage collection.  This means that,
@@ -1244,7 +1244,7 @@ its parent's list of children.
    Weak lists are similar to weak hash tables (*note Weak Hash
 Tables::).
 
- - Function: weak-list-p object
+ -- Function: weak-list-p object
      This function returns non-`nil' if OBJECT is a weak list.
 
    Weak lists come in one of four types:
@@ -1265,25 +1265,25 @@ Tables::).
      Objects in the list disappear if they are conses and the cdr is not
      referenced outside of the list.
 
- - Function: make-weak-list &optional type
+ -- Function: make-weak-list &optional type
      This function creates a new weak list of type TYPE.  TYPE is a
      symbol (one of `simple', `assoc', `key-assoc', or `value-assoc',
      as described above) and defaults to `simple'.
 
- - Function: weak-list-type weak
+ -- Function: weak-list-type weak
      This function returns the type of the given weak-list object.
 
- - Function: weak-list-list weak
+ -- Function: weak-list-list weak
      This function returns the list contained in a weak-list object.
 
- - Function: set-weak-list-list weak new-list
+ -- Function: set-weak-list-list weak new-list
      This function changes the list contained in a weak-list object.
 
 \1f
 File: lispref.info,  Node: Sequences Arrays Vectors,  Next: Symbols,  Prev: Lists,  Up: Top
 
-Sequences, Arrays, and Vectors
-******************************
+12 Sequences, Arrays, and Vectors
+*********************************
 
 Recall that the "sequence" type is the union of four other Lisp types:
 lists, vectors, bit vectors, and strings.  In other words, any list is
@@ -1338,19 +1338,19 @@ are the numbers 0 and 1.
 \1f
 File: lispref.info,  Node: Sequence Functions,  Next: Arrays,  Up: Sequences Arrays Vectors
 
-Sequences
-=========
+12.1 Sequences
+==============
 
 In XEmacs Lisp, a "sequence" is either a list, a vector, a bit vector,
 or a string.  The common property that all sequences have is that each
 is an ordered collection of elements.  This section describes functions
 that accept any kind of sequence.
 
- - Function: sequencep object
+ -- Function: sequencep object
      Returns `t' if OBJECT is a list, vector, bit vector, or string,
      `nil' otherwise.
 
- - Function: copy-sequence sequence
+ -- Function: copy-sequence sequence
      Returns a copy of SEQUENCE.  The copy is the same type of object
      as the original sequence, and it has the same elements in the same
      order.
@@ -1379,29 +1379,29 @@ that accept any kind of sequence.
                => [foo (1 2)]
           (setq y (copy-sequence x))
                => [foo (1 2)]
-          
+
           (eq x y)
                => nil
           (equal x y)
                => t
           (eq (elt x 1) (elt y 1))
                => t
-          
+
           ;; Replacing an element of one sequence.
           (aset x 0 'quux)
           x => [quux (1 2)]
           y => [foo (1 2)]
-          
+
           ;; Modifying the inside of a shared element.
           (setcar (aref x 1) 69)
           x => [quux (69 2)]
           y => [foo (69 2)]
-          
+
           ;; Creating a bit vector.
           (bit-vector 1 0 1 1 0 1 0 0)
                => #*10110100
 
- - Function: length sequence
+ -- Function: length sequence
      Returns the number of elements in SEQUENCE.  If SEQUENCE is a cons
      cell that is not a list (because the final CDR is not `nil'), a
      `wrong-type-argument' error is signaled.
@@ -1417,7 +1417,7 @@ that accept any kind of sequence.
           (length #*01101)
               => 5
 
- - Function: elt sequence index
+ -- Function: elt sequence index
      This function returns the element of SEQUENCE indexed by INDEX.
      Legitimate values of INDEX are integers ranging from 0 up to one
      less than the length of SEQUENCE.  If SEQUENCE is a list, then
@@ -1443,8 +1443,8 @@ that accept any kind of sequence.
 \1f
 File: lispref.info,  Node: Arrays,  Next: Array Functions,  Prev: Sequence Functions,  Up: Sequences Arrays Vectors
 
-Arrays
-======
+12.2 Arrays
+===========
 
 An "array" object has slots that hold a number of other Lisp objects,
 called the elements of the array.  Any element of an array may be
@@ -1513,13 +1513,13 @@ following advantages over a regular vector:
 \1f
 File: lispref.info,  Node: Array Functions,  Next: Vectors,  Prev: Arrays,  Up: Sequences Arrays Vectors
 
-Functions that Operate on Arrays
-================================
+12.3 Functions that Operate on Arrays
+=====================================
 
 In this section, we describe the functions that accept strings, vectors,
 and bit vectors.
 
- - Function: arrayp object
+ -- Function: arrayp object
      This function returns `t' if OBJECT is an array (i.e., a string,
      vector, or bit vector).
 
@@ -1530,7 +1530,7 @@ and bit vectors.
           (arrayp #*101)
           => t
 
- - Function: aref array index
+ -- Function: aref array index
      This function returns the INDEXth element of ARRAY.  The first
      element is at index zero.
 
@@ -1540,16 +1540,16 @@ and bit vectors.
                => 11
           (elt primes 4)
                => 11
-          
+
           (aref "abcdefg" 1)
                => ?b
-          
+
           (aref #*1101 2)
                => 0
 
      See also the function `elt', in *Note Sequence Functions::.
 
- - Function: aset array index object
+ -- Function: aset array index object
      This function sets the INDEXth element of ARRAY to be OBJECT.  It
      returns OBJECT.
 
@@ -1559,14 +1559,14 @@ and bit vectors.
                => fu
           w
                => [fu bar baz]
-          
+
           (setq x "asdfasfd")
                => "asdfasfd"
           (aset x 3 ?Z)
                => ?Z
           x
                => "asdZasfd"
-          
+
           (setq bv #*1111)
                => #*1111
           (aset bv 2 0)
@@ -1577,7 +1577,7 @@ and bit vectors.
      If ARRAY is a string and OBJECT is not a character, a
      `wrong-type-argument' error results.
 
- - Function: fillarray array object
+ -- Function: fillarray array object
      This function fills the array ARRAY with OBJECT, so that each
      element of ARRAY is OBJECT.  It returns ARRAY.
 
@@ -1587,12 +1587,12 @@ and bit vectors.
                => [0 0 0 0 0 0 0]
           a
                => [0 0 0 0 0 0 0]
-          
+
           (setq s "When in the course")
                => "When in the course"
           (fillarray s ?-)
                => "------------------"
-          
+
           (setq bv #*1101)
                => #*1101
           (fillarray bv 0)
@@ -1608,8 +1608,8 @@ Functions::.
 \1f
 File: lispref.info,  Node: Vectors,  Next: Vector Functions,  Prev: Array Functions,  Up: Sequences Arrays Vectors
 
-Vectors
-=======
+12.4 Vectors
+============
 
 Arrays in Lisp, like arrays in most languages, are blocks of memory
 whose elements can be accessed in constant time.  A "vector" is a
@@ -1645,12 +1645,12 @@ Self-Evaluating Forms::.
 \1f
 File: lispref.info,  Node: Vector Functions,  Next: Bit Vectors,  Prev: Vectors,  Up: Sequences Arrays Vectors
 
-Functions That Operate on Vectors
-=================================
+12.5 Functions That Operate on Vectors
+======================================
 
 Here are some functions that relate to vectors:
 
- - Function: vectorp object
+ -- Function: vectorp object
      This function returns `t' if OBJECT is a vector.
 
           (vectorp [a])
@@ -1658,7 +1658,7 @@ Here are some functions that relate to vectors:
           (vectorp "asdf")
                => nil
 
- - Function: vector &rest objects
+ -- Function: vector &rest objects
      This function creates and returns a vector whose elements are the
      arguments, OBJECTS.
 
@@ -1667,14 +1667,14 @@ Here are some functions that relate to vectors:
           (vector)
                => []
 
- - Function: make-vector length object
+ -- Function: make-vector length object
      This function returns a new vector consisting of LENGTH elements,
      each initialized to OBJECT.
 
           (setq sleepy (make-vector 9 'Z))
                => [Z Z Z Z Z Z Z Z Z]
 
- - Function: vconcat &rest sequences
+ -- Function: vconcat &rest sequences
      This function returns a new vector containing all the elements of
      the SEQUENCES.  The arguments SEQUENCES may be lists, vectors, or
      strings.  If no SEQUENCES are given, an empty vector is returned.
@@ -1716,8 +1716,8 @@ with the same elements (*note Building Lists::):
 \1f
 File: lispref.info,  Node: Bit Vectors,  Next: Bit Vector Functions,  Prev: Vector Functions,  Up: Sequences Arrays Vectors
 
-Bit Vectors
-===========
+12.6 Bit Vectors
+================
 
 Bit vectors are specialized vectors that can only represent arrays of
 1's and 0's.  Bit vectors have a very efficient representation and are
@@ -1739,12 +1739,12 @@ strings, and numbers.  *Note Self-Evaluating Forms::.
 \1f
 File: lispref.info,  Node: Bit Vector Functions,  Prev: Bit Vectors,  Up: Sequences Arrays Vectors
 
-Functions That Operate on Bit Vectors
-=====================================
+12.7 Functions That Operate on Bit Vectors
+==========================================
 
 Here are some functions that relate to bit vectors:
 
- - Function: bit-vector-p object
+ -- Function: bit-vector-p object
      This function returns `t' if OBJECT is a bit vector.
 
           (bit-vector-p #*01)
@@ -1754,10 +1754,10 @@ Here are some functions that relate to bit vectors:
           (bit-vector-p "01")
                => nil
 
- - Function: bitp object
+ -- Function: bitp object
      This function returns `t' if OBJECT is either 0 or 1.
 
- - Function: bit-vector &rest bits
+ -- Function: bit-vector &rest bits
      This function creates and returns a bit vector whose elements are
      the arguments BITS.  Each argument must be a bit, i.e. one of the
      two integers 0 or 1.
@@ -1767,7 +1767,7 @@ Here are some functions that relate to bit vectors:
           (bit-vector)
                => #*
 
- - Function: make-bit-vector length bit
+ -- Function: make-bit-vector length bit
      This function creates and returns a bit vector consisting of
      LENGTH elements, each initialized to BIT, which must be one of the
      two integers 0 or 1.
@@ -1775,7 +1775,7 @@ Here are some functions that relate to bit vectors:
           (setq picket-fence (make-bit-vector 9 1))
                => #*111111111
 
- - Function: bvconcat &rest sequences
+ -- Function: bvconcat &rest sequences
      This function returns a new bit vector containing all the elements
      of the SEQUENCES.  The arguments SEQUENCES may be lists, vectors,
      or bit vectors, all of whose elements are the integers 0 or 1.  If
@@ -1809,20 +1809,20 @@ list with the same elements (*note Building Lists::):
 \1f
 File: lispref.info,  Node: Symbols,  Next: Evaluation,  Prev: Sequences Arrays Vectors,  Up: Top
 
-Symbols
-*******
+13 Symbols
+**********
 
 A "symbol" is an object with a unique name.  This chapter describes
 symbols, their components, their property lists, and how they are
 created and interned.  Separate chapters describe the use of symbols as
 variables and as function names; see *Note Variables::, and *Note
-Functions::.  For the precise read syntax for symbols, see *Note Symbol
-Type::.
+Functions and Commands::.  For the precise read syntax for symbols, see
+*Note Symbol Type::.
 
    You can test whether an arbitrary Lisp object is a symbol with
 `symbolp':
 
- - Function: symbolp object
+ -- Function: symbolp object
      This function returns `t' if OBJECT is a symbol, `nil' otherwise.
 
 * Menu:
@@ -1837,8 +1837,8 @@ Type::.
 \1f
 File: lispref.info,  Node: Symbol Components,  Next: Definitions,  Up: Symbols
 
-Symbol Components
-=================
+13.1 Symbol Components
+======================
 
 Each symbol has four components (or "cells"), each of which references
 another object:
@@ -1929,8 +1929,8 @@ symbol naming a function written in Lisp would have a lambda expression
 \1f
 File: lispref.info,  Node: Definitions,  Next: Creating Symbols,  Prev: Symbol Components,  Up: Symbols
 
-Defining Symbols
-================
+13.2 Defining Symbols
+=====================
 
 A "definition" in Lisp is a special form that announces your intention
 to use a certain symbol in a particular way.  In XEmacs Lisp, you can
@@ -1953,7 +1953,7 @@ expression thus becomes the function definition of the symbol.  (The
 term "function definition", meaning the contents of the function cell,
 is derived from the idea that `defun' gives the symbol its definition
 as a function.)  `defsubst', `define-function' and `defalias' are other
-ways of defining a function.  *Note Functions::.
+ways of defining a function.  *Note Functions and Commands::.
 
    `defmacro' defines a symbol as a macro.  It creates a macro object
 and stores it in the function cell of the symbol.  Note that a given
@@ -1974,8 +1974,8 @@ Accessing Documentation::.
 \1f
 File: lispref.info,  Node: Creating Symbols,  Next: Symbol Properties,  Prev: Definitions,  Up: Symbols
 
-Creating and Interning Symbols
-==============================
+13.3 Creating and Interning Symbols
+===================================
 
 To understand how symbols are created in XEmacs Lisp, you must know how
 Lisp reads them.  Lisp must ensure that it finds the same symbol every
@@ -2040,7 +2040,7 @@ Abbrevs::).
 arguments.  A `wrong-type-argument' error is signaled if the name is
 not a string, or if the obarray is not a vector.
 
- - Function: symbol-name symbol
+ -- Function: symbol-name symbol
      This function returns the string that is SYMBOL's name.  For
      example:
 
@@ -2051,7 +2051,7 @@ not a string, or if the obarray is not a vector.
      the name of the symbol, but fails to update the obarray, so don't
      do it!
 
- - Function: make-symbol name
+ -- Function: make-symbol name
      This function returns a newly-allocated, uninterned symbol whose
      name is NAME (which must be a string).  Its value and function
      definition are void, and its property list is `nil'.  In the
@@ -2063,7 +2063,7 @@ not a string, or if the obarray is not a vector.
           (eq sym 'foo)
                => nil
 
- - Function: intern name &optional obarray
+ -- Function: intern name &optional obarray
      This function returns the interned symbol whose name is NAME.  If
      there is no such symbol in the obarray OBARRAY, `intern' creates a
      new one, adds it to the obarray, and returns it.  If OBARRAY is
@@ -2073,13 +2073,13 @@ not a string, or if the obarray is not a vector.
                => foo
           (eq sym 'foo)
                => t
-          
+
           (setq sym1 (intern "foo" other-obarray))
                => foo
           (eq sym 'foo)
                => nil
 
- - Function: intern-soft name &optional obarray
+ -- Function: intern-soft name &optional obarray
      This function returns the symbol in OBARRAY whose name is NAME, or
      `nil' if OBARRAY has no symbol with that name.  Therefore, you can
      use `intern-soft' to test whether a symbol with a given name is
@@ -2099,11 +2099,11 @@ not a string, or if the obarray is not a vector.
           (eq sym 'frazzle)              ; And it is the same one.
                => t
 
- - Variable: obarray
+ -- Variable: obarray
      This variable is the standard obarray for use by `intern' and
      `read'.
 
- - Function: mapatoms function &optional obarray
+ -- Function: mapatoms function &optional obarray
      This function calls FUNCTION for each symbol in the obarray
      OBARRAY.  It returns `nil'.  If OBARRAY is omitted, it defaults to
      the value of `obarray', the standard obarray for ordinary symbols.
@@ -2121,7 +2121,7 @@ not a string, or if the obarray is not a vector.
      See `documentation' in *Note Accessing Documentation::, for another
      example using `mapatoms'.
 
- - Function: unintern symbol &optional obarray
+ -- Function: unintern symbol &optional obarray
      This function deletes SYMBOL from the obarray OBARRAY.  If
      `symbol' is not actually in the obarray, `unintern' does nothing.
      If OBARRAY is `nil', the current obarray is used.
@@ -2137,8 +2137,8 @@ not a string, or if the obarray is not a vector.
 \1f
 File: lispref.info,  Node: Symbol Properties,  Prev: Creating Symbols,  Up: Symbols
 
-Symbol Properties
-=================
+13.4 Symbol Properties
+======================
 
 A "property list" ("plist" for short) is a list of paired elements,
 often stored in the property list cell of a symbol.  Each of the pairs
@@ -2172,8 +2172,8 @@ the other two elements are the corresponding values.
 \1f
 File: lispref.info,  Node: Plists and Alists,  Next: Object Plists,  Up: Symbol Properties
 
-Property Lists and Association Lists
-------------------------------------
+13.4.1 Property Lists and Association Lists
+-------------------------------------------
 
 Association lists (*note Association Lists::) are very similar to
 property lists.  In contrast to association lists, the order of the
@@ -2205,21 +2205,21 @@ possible with a property list.
 \1f
 File: lispref.info,  Node: Object Plists,  Next: Other Plists,  Prev: Plists and Alists,  Up: Symbol Properties
 
-Property List Functions for Objects
------------------------------------
+13.4.2 Property List Functions for Objects
+------------------------------------------
 
 Once upon a time, only symbols had property lists.  Now, several other
 object types, including strings, extents, faces and glyphs also have
 property lists.
 
- - Function: symbol-plist symbol
+ -- Function: symbol-plist symbol
      This function returns the property list of SYMBOL.
 
- - Function: object-plist object
+ -- Function: object-plist object
      This function returns the property list of OBJECT.  If OBJECT is a
      symbol, this is identical to `symbol-plist'.
 
- - Function: setplist symbol plist
+ -- Function: setplist symbol plist
      This function sets SYMBOL's property list to PLIST.  Normally,
      PLIST should be a well-formed property list, but this is not
      enforced.
@@ -2236,7 +2236,7 @@ property lists.
      instead.  `setplist' can only be used with symbols, not other
      object types.
 
- - Function: get object property &optional default
+ -- Function: get object property &optional default
      This function finds the value of the property named PROPERTY in
      OBJECT's property list.  If there is no such property, `default'
      (which itself defaults to `nil') is returned.
@@ -2246,7 +2246,7 @@ property lists.
 
      See `put' for an example.
 
- - Function: put object property value
+ -- Function: put object property value
      This function puts VALUE onto OBJECT's property list under the
      property name PROPERTY, replacing any previous property value.
      The `put' function returns VALUE.
@@ -2260,7 +2260,7 @@ property lists.
           (object-plist 'fly)
                => (verb transitive noun (a buzzing little bug))
 
- - Function: remprop object property
+ -- Function: remprop object property
      This function removes the entry for PROPERTY from the property
      list of OBJECT.  It returns `t' if the property was indeed found
      and removed, or `nil' if there was no such property.  (This
@@ -2273,20 +2273,20 @@ property lists.
 \1f
 File: lispref.info,  Node: Other Plists,  Prev: Object Plists,  Up: Symbol Properties
 
-Property Lists Not Associated with Objects
-------------------------------------------
+13.4.3 Property Lists Not Associated with Objects
+-------------------------------------------------
 
 These functions are useful for manipulating property lists that are
 stored in places other than symbols:
 
- - Function: getf plist property &optional default
+ -- Function: getf plist property &optional default
      This returns the value of the PROPERTY property stored in the
      property list PLIST.  For example,
 
           (getf '(foo 4) 'foo)
                => 4
 
- - Macro: putf plist property value
+ -- Macro: putf plist property value
      This stores VALUE as the value of the PROPERTY property in the
      property list PLIST.  It may modify PLIST destructively, or it may
      construct a new list structure without altering the old.  The
@@ -2300,13 +2300,13 @@ stored in places other than symbols:
           (setq my-plist (putf my-plist 'quux '(a)))
                => (quux (a) bar t foo 5)
 
- - Function: plists-eq a b
+ -- Function: plists-eq a b
      This function returns non-`nil' if property lists A and B are
      `eq'.  This means that the property lists have the same values for
      all the same properties, where comparison between values is done
      using `eq'.
 
- - Function: plists-equal a b
+ -- Function: plists-equal a b
      This function returns non-`nil' if property lists A and B are
      `equal'.
 
@@ -2322,8 +2322,8 @@ stored in places other than symbols:
 \1f
 File: lispref.info,  Node: Evaluation,  Next: Control Structures,  Prev: Symbols,  Up: Top
 
-Evaluation
-**********
+14 Evaluation
+*************
 
 The "evaluation" of expressions in XEmacs Lisp is performed by the
 "Lisp interpreter"--a program that receives a Lisp object as input and
@@ -2343,8 +2343,8 @@ function `eval'.
 \1f
 File: lispref.info,  Node: Intro Eval,  Next: Eval,  Up: Evaluation
 
-Introduction to Evaluation
-==========================
+14.1 Introduction to Evaluation
+===============================
 
 The Lisp interpreter, or evaluator, is the program that computes the
 value of an expression that is given to it.  When a function written in
@@ -2387,10 +2387,10 @@ recursively, so that its value can be passed as an argument to the
 function `car'.
 
    Evaluation of a function call ultimately calls the function specified
-in it.  *Note Functions::.  The execution of the function may itself
-work by evaluating the function definition; or the function may be a
-Lisp primitive implemented in C, or it may be a byte-compiled function
-(*note Byte Compilation::).
+in it.  *Note Functions and Commands::.  The execution of the function
+may itself work by evaluating the function definition; or the function
+may be a Lisp primitive implemented in C, or it may be a byte-compiled
+function (*note Byte Compilation::).
 
    The evaluation of forms takes place in a context called the
 "environment", which consists of the current values and bindings of all
@@ -2416,8 +2416,8 @@ include all the data that can affect the result of a program.
 \1f
 File: lispref.info,  Node: Eval,  Next: Forms,  Prev: Intro Eval,  Up: Evaluation
 
-Eval
-====
+14.2 Eval
+=========
 
 Most often, forms are evaluated automatically, by virtue of their
 occurrence in a program being run.  On rare occasions, you may need to
@@ -2434,7 +2434,7 @@ ability to pass information to them as arguments.
 specify limits to the evaluation process, or record recently returned
 values.  Loading a file also does evaluation (*note Loading::).
 
- - Function: eval form
+ -- Function: eval form
      This is the basic function for performing evaluation.  It evaluates
      FORM in the current environment and returns the result.  How the
      evaluation proceeds depends on the type of the object (*note
@@ -2458,7 +2458,7 @@ values.  Loading a file also does evaluation (*note Loading::).
      The number of currently active calls to `eval' is limited to
      `max-lisp-eval-depth' (see below).
 
- - Command: eval-region start end &optional stream
+ -- Command: eval-region start end &optional stream
      This function evaluates the forms in the current buffer in the
      region defined by the positions START and END.  It reads forms from
      the region and calls `eval' on them until the end of the region is
@@ -2473,11 +2473,11 @@ values.  Loading a file also does evaluation (*note Loading::).
 
      `eval-region' always returns `nil'.
 
- - Command: eval-buffer buffer &optional stream
+ -- Command: eval-buffer buffer &optional stream
      This is like `eval-region' except that it operates on the whole
      contents of BUFFER.
 
- - Variable: max-lisp-eval-depth
+ -- Variable: max-lisp-eval-depth
      This variable defines the maximum depth allowed in calls to `eval',
      `apply', and `funcall' before an error is signaled (with error
      message `"Lisp nesting exceeds max-lisp-eval-depth"').  This counts
@@ -2486,7 +2486,7 @@ values.  Loading a file also does evaluation (*note Loading::).
      function call arguments and function body forms.
 
      This limit, with the associated error when it is exceeded, is one
-     way that Lisp avoids infinite recursion on an ill-defined function.
+     way that Lisp avoids infinite recursion on an ill-defined function.  
 
      The default value of this variable is 1000.  If you set it to a
      value less than 100, Lisp will reset it to 100 if the given value
@@ -2495,7 +2495,7 @@ values.  Loading a file also does evaluation (*note Loading::).
      `max-specpdl-size' provides another limit on nesting.  *Note Local
      Variables::.
 
- - Variable: values
+ -- Variable: values
      The value of this variable is a list of the values returned by all
      the expressions that were read from buffers (including the
      minibuffer), evaluated, and printed.  The elements are ordered
@@ -2528,8 +2528,8 @@ values.  Loading a file also does evaluation (*note Loading::).
 \1f
 File: lispref.info,  Node: Forms,  Next: Quoting,  Prev: Eval,  Up: Evaluation
 
-Kinds of Forms
-==============
+14.3 Kinds of Forms
+===================
 
 A Lisp object that is intended to be evaluated is called a "form".  How
 XEmacs evaluates a form depends on its data type.  XEmacs has three
@@ -2554,8 +2554,8 @@ starting with "all other types" which are self-evaluating forms.
 \1f
 File: lispref.info,  Node: Self-Evaluating Forms,  Next: Symbol Forms,  Up: Forms
 
-Self-Evaluating Forms
----------------------
+14.3.1 Self-Evaluating Forms
+----------------------------
 
 A "self-evaluating form" is any form that is not a list or symbol.
 Self-evaluating forms evaluate to themselves: the result of evaluation
@@ -2591,8 +2591,8 @@ program.  Here is an example:
 \1f
 File: lispref.info,  Node: Symbol Forms,  Next: Classifying Lists,  Prev: Self-Evaluating Forms,  Up: Forms
 
-Symbol Forms
-------------
+14.3.2 Symbol Forms
+-------------------
 
 When a symbol is evaluated, it is treated as a variable.  The result is
 the variable's value, if it has one.  If it has none (if its value cell
@@ -2618,8 +2618,8 @@ other symbol.
 \1f
 File: lispref.info,  Node: Classifying Lists,  Next: Function Indirection,  Prev: Symbol Forms,  Up: Forms
 
-Classification of List Forms
-----------------------------
+14.3.3 Classification of List Forms
+-----------------------------------
 
 A form that is a nonempty list is either a function call, a macro call,
 or a special form, according to its first element.  These three kinds
@@ -2635,8 +2635,8 @@ _not_ evaluated, as it would be in some Lisp dialects such as Scheme.
 \1f
 File: lispref.info,  Node: Function Indirection,  Next: Function Forms,  Prev: Classifying Lists,  Up: Forms
 
-Symbol Function Indirection
----------------------------
+14.3.4 Symbol Function Indirection
+----------------------------------
 
 If the first element of the list is a symbol then evaluation examines
 the symbol's function cell, and uses its contents instead of the
@@ -2693,7 +2693,7 @@ symbol function indirection when calling `erste'.
    The built-in function `indirect-function' provides an easy way to
 perform symbol function indirection explicitly.
 
- - Function: indirect-function object
+ -- Function: indirect-function object
      This function returns the meaning of OBJECT as a function.  If
      OBJECT is a symbol, then it finds OBJECT's function definition and
      starts over with that value.  If OBJECT is not a symbol, then it
@@ -2709,8 +2709,8 @@ perform symbol function indirection explicitly.
 \1f
 File: lispref.info,  Node: Function Forms,  Next: Macro Forms,  Prev: Function Indirection,  Up: Forms
 
-Evaluation of Function Forms
-----------------------------
+14.3.5 Evaluation of Function Forms
+-----------------------------------
 
 If the first element of a list being evaluated is a Lisp function
 object, byte-code object or primitive function object, then that list is
@@ -2731,8 +2731,8 @@ form becomes the value of the function call.
 \1f
 File: lispref.info,  Node: Macro Forms,  Next: Special Forms,  Prev: Function Forms,  Up: Forms
 
-Lisp Macro Evaluation
----------------------
+14.3.6 Lisp Macro Evaluation
+----------------------------
 
 If the first element of a list being evaluated is a macro object, then
 the list is a "macro call".  When a macro call is evaluated, the
@@ -2770,8 +2770,8 @@ Note that the argument `(assq 'handler list)' appears in the expansion.
 \1f
 File: lispref.info,  Node: Special Forms,  Next: Autoloading,  Prev: Macro Forms,  Up: Forms
 
-Special Forms
--------------
+14.3.7 Special Forms
+--------------------
 
 A "special form" is a primitive function specially marked so that its
 arguments are not all evaluated.  Most special forms define control
@@ -2875,8 +2875,8 @@ XEmacs Lisp with a reference to where each is described.
 \1f
 File: lispref.info,  Node: Autoloading,  Prev: Special Forms,  Up: Forms
 
-Autoloading
------------
+14.3.8 Autoloading
+------------------
 
 The "autoload" feature allows you to call a function or macro whose
 function definition has not yet been loaded into XEmacs.  It specifies
@@ -2888,8 +2888,8 @@ definition loaded from that file.  *Note Autoload::.
 \1f
 File: lispref.info,  Node: Quoting,  Prev: Forms,  Up: Evaluation
 
-Quoting
-=======
+14.4 Quoting
+============
 
 The special form `quote' returns its single argument, as written,
 without evaluating it.  This provides a way to include constant symbols
@@ -2897,7 +2897,7 @@ and lists, which are not self-evaluating objects, in a program.  (It is
 not necessary to quote self-evaluating objects such as numbers, strings,
 and vectors.)
 
- - Special Form: quote object
+ -- Special Form: quote object
      This special form returns OBJECT, without evaluating it.
 
    Because `quote' is used so often in programs, Lisp provides a
@@ -2929,8 +2929,8 @@ only part of a list, while computing and substituting other parts.
 \1f
 File: lispref.info,  Node: Control Structures,  Next: Variables,  Prev: Evaluation,  Up: Top
 
-Control Structures
-******************
+15 Control Structures
+*********************
 
 A Lisp program consists of expressions or "forms" (*note Forms::).  We
 control the order of execution of the forms by enclosing them in
@@ -2967,8 +2967,8 @@ structure constructs (*note Macros::).
 \1f
 File: lispref.info,  Node: Sequencing,  Next: Conditionals,  Up: Control Structures
 
-Sequencing
-==========
+15.1 Sequencing
+===============
 
 Evaluating forms in the order they appear is the most common way
 control passes from one form to another.  In some contexts, such as in a
@@ -2994,7 +2994,7 @@ structures likewise contain an implicit `progn'.  As a result, `progn'
 is not used as often as it used to be.  It is needed now most often
 inside an `unwind-protect', `and', `or', or in the THEN-part of an `if'.
 
- - Special Form: progn forms...
+ -- Special Form: progn forms...
      This special form evaluates all of the FORMS, in textual order,
      returning the result of the final form.
 
@@ -3009,7 +3009,7 @@ inside an `unwind-protect', `and', `or', or in the THEN-part of an `if'.
    Two other control constructs likewise evaluate a series of forms but
 return a different value:
 
- - Special Form: prog1 form1 forms...
+ -- Special Form: prog1 form1 forms...
      This special form evaluates FORM1 and all of the FORMS, in textual
      order, returning the result of FORM1.
 
@@ -3026,7 +3026,7 @@ return a different value:
 
           (prog1 (car x) (setq x (cdr x)))
 
- - Special Form: prog2 form1 form2 forms...
+ -- Special Form: prog2 form1 form2 forms...
      This special form evaluates FORM1, FORM2, and all of the following
      FORMS, in textual order, returning the result of FORM2.
 
@@ -3041,14 +3041,14 @@ return a different value:
 \1f
 File: lispref.info,  Node: Conditionals,  Next: Combining Conditions,  Prev: Sequencing,  Up: Control Structures
 
-Conditionals
-============
+15.2 Conditionals
+=================
 
 Conditional control structures choose among alternatives.  XEmacs Lisp
 has two conditional forms: `if', which is much the same as in other
 languages, and `cond', which is a generalized case statement.
 
- - Special Form: if condition then-form else-forms...
+ -- Special Form: if condition then-form else-forms...
      `if' chooses between the THEN-FORM and the ELSE-FORMS based on the
      value of CONDITION.  If the evaluated CONDITION is non-`nil',
      THEN-FORM is evaluated and the result returned.  Otherwise, the
@@ -3068,7 +3068,7 @@ languages, and `cond', which is a generalized case statement.
             'very-false)
           => very-false
 
- - Special Form: cond clause...
+ -- Special Form: cond clause...
      `cond' chooses among an arbitrary number of alternatives.  Each
      CLAUSE in the `cond' must be a list.  The CAR of this list is the
      CONDITION; the remaining elements, if any, the BODY-FORMS.  Thus,
@@ -3131,21 +3131,21 @@ Therefore, the choice between them is a matter of style.  For example:
 \1f
 File: lispref.info,  Node: Combining Conditions,  Next: Iteration,  Prev: Conditionals,  Up: Control Structures
 
-Constructs for Combining Conditions
-===================================
+15.3 Constructs for Combining Conditions
+========================================
 
 This section describes three constructs that are often used together
 with `if' and `cond' to express complicated conditions.  The constructs
 `and' and `or' can also be used individually as kinds of multiple
 conditional constructs.
 
- - Function: not condition
+ -- Function: not condition
      This function tests for the falsehood of CONDITION.  It returns
      `t' if CONDITION is `nil', and `nil' otherwise.  The function
      `not' is identical to `null', and we recommend using the name
      `null' if you are testing for an empty list.
 
- - Special Form: and conditions...
+ -- Special Form: and conditions...
      The `and' special form tests whether all the CONDITIONS are true.
      It works by evaluating the CONDITIONS one by one in the order
      written.
@@ -3184,7 +3184,7 @@ conditional constructs.
           ==
           (cond (ARG1 (cond (ARG2 ARG3))))
 
- - Special Form: or conditions...
+ -- Special Form: or conditions...
      The `or' special form tests whether at least one of the CONDITIONS
      is true.  It works by evaluating all the CONDITIONS one by one in
      the order written.
@@ -3224,15 +3224,15 @@ conditional constructs.
 \1f
 File: lispref.info,  Node: Iteration,  Next: Nonlocal Exits,  Prev: Combining Conditions,  Up: Control Structures
 
-Iteration
-=========
+15.4 Iteration
+==============
 
 Iteration means executing part of a program repetitively.  For example,
 you might want to repeat some computation once for each element of a
 list, or once for each integer from 0 to N.  You can do this in XEmacs
 Lisp with the special form `while':
 
- - Special Form: while condition forms...
+ -- Special Form: while condition forms...
      `while' first evaluates CONDITION.  If the result is non-`nil', it
      evaluates FORMS in textual order.  Then it reevaluates CONDITION,
      and if the result is non-`nil', it evaluates FORMS again.  This
@@ -3270,8 +3270,8 @@ Lisp with the special form `while':
 \1f
 File: lispref.info,  Node: Nonlocal Exits,  Prev: Iteration,  Up: Control Structures
 
-Nonlocal Exits
-==============
+15.5 Nonlocal Exits
+===================
 
 A "nonlocal exit" is a transfer of control from one point in a program
 to another remote point.  Nonlocal exits can occur in XEmacs Lisp as a
@@ -3289,8 +3289,8 @@ exited.
 \1f
 File: lispref.info,  Node: Catch and Throw,  Next: Examples of Catch,  Up: Nonlocal Exits
 
-Explicit Nonlocal Exits: `catch' and `throw'
---------------------------------------------
+15.5.1 Explicit Nonlocal Exits: `catch' and `throw'
+---------------------------------------------------
 
 Most control constructs affect only the flow of control within the
 construct itself.  The function `throw' is the exception to this rule
@@ -3341,7 +3341,7 @@ command loop (*note Recursive Editing::).
      `return', `return-from', and `go', for example.  XEmacs Lisp has
      only `throw'.
 
- - Special Form: catch tag body...
+ -- Special Form: catch tag body...
      `catch' establishes a return point for the `throw' function.  The
      return point is distinguished from other such return points by TAG,
      which may be any Lisp object.  The argument TAG is evaluated
@@ -3356,7 +3356,7 @@ command loop (*note Recursive Editing::).
      the `catch' exits immediately; the value it returns is whatever
      was specified as the second argument of `throw'.
 
- - Function: throw tag value
+ -- Function: throw tag value
      The purpose of `throw' is to return from a return point previously
      established with `catch'.  The argument TAG is used to choose
      among the various existing return points; it must be `eq' to the
@@ -3372,8 +3372,8 @@ command loop (*note Recursive Editing::).
 \1f
 File: lispref.info,  Node: Examples of Catch,  Next: Errors,  Prev: Catch and Throw,  Up: Nonlocal Exits
 
-Examples of `catch' and `throw'
--------------------------------
+15.5.2 Examples of `catch' and `throw'
+--------------------------------------
 
 One way to use `catch' and `throw' is to exit from a doubly nested
 loop.  (In most languages, this would be done with a "go to".)  Here we
@@ -3402,7 +3402,7 @@ points at once.  First, two return points with the same tag, `hack':
        (catch tag
          (throw 'hack 'yes)))
      => catch2
-     
+
      (catch 'hack
        (print (catch2 'hack))
        'no)
@@ -3421,7 +3421,7 @@ and returned from the outer `catch'.
        (catch tag
          (throw 'hack 'yes)))
      => catch2
-     
+
      (catch 'hack
        (print (catch2 'quux))
        'no)
@@ -3435,8 +3435,8 @@ the tag `hack'; the inner one has the tag `quux' instead.  Therefore,
 \1f
 File: lispref.info,  Node: Errors,  Next: Cleanups,  Prev: Examples of Catch,  Up: Nonlocal Exits
 
-Errors
-------
+15.5.3 Errors
+-------------
 
 When XEmacs Lisp attempts to evaluate a form that, for some reason,
 cannot be evaluated, it "signals" an "error".
@@ -3470,8 +3470,8 @@ one part of the program to another; use `catch' and `throw' instead.
 \1f
 File: lispref.info,  Node: Signaling Errors,  Next: Processing of Errors,  Up: Errors
 
-How to Signal an Error
-......................
+15.5.3.1 How to Signal an Error
+...............................
 
 Most errors are signaled "automatically" within Lisp primitives which
 you call for other purposes, such as if you try to take the CAR of an
@@ -3493,20 +3493,20 @@ an error, but it is handled almost like an error.  *Note Quitting::.
              malformed-property-list
            circular-list
              circular-property-list
-     
+
        invalid-argument
          wrong-type-argument
          args-out-of-range
          wrong-number-of-arguments
          invalid-function
          no-catch
-     
+
        invalid-state
          void-function
          cyclic-function-indirection
          void-variable
          cyclic-variable-indirection
-     
+
        invalid-operation
          invalid-change
            setting-constant
@@ -3549,7 +3549,7 @@ differences:
      errors (e.g. running off the end of a buffer), `invalid-change' as
      just mentioned, and arithmetic errors.
 
- - Function: error datum &rest args
+ -- Function: error datum &rest args
      This function signals a non-continuable error.
 
      DATUM should normally be an error symbol, i.e. a symbol defined
@@ -3600,12 +3600,12 @@ differences:
           (error 'syntax-error
                  "Dialog descriptor must supply at least one button"
                descriptor)
-          
+
           (error "You have committed an error.
                   Try something else.")
                error--> You have committed an error.
                   Try something else.
-          
+
           (error "You have committed %d errors." 10)
                error--> You have committed 10 errors.
 
@@ -3614,12 +3614,12 @@ differences:
      will be interpreted as a format specifier, with undesirable
      results.  Instead, use `(error "%s" STRING)'.
 
- - Function: cerror datum &rest args
+ -- Function: cerror datum &rest args
      This function behaves like `error', except that the error it
      signals is continuable.  That means that debugger commands `c' and
      `r' can resume execution.
 
- - Function: signal error-symbol data
+ -- Function: signal error-symbol data
      This function signals a continuable error named by ERROR-SYMBOL.
      The argument DATA is a list of additional Lisp objects relevant to
      the circumstances of the error.
@@ -3648,15 +3648,15 @@ differences:
 
           (signal 'wrong-number-of-arguments '(x y))
                error--> Wrong number of arguments: x, y
-          
+
           (signal 'no-such-error '("My unknown error condition"))
                error--> Peculiar error (no-such-error "My unknown error condition")
 
- - Function: signal-error error-symbol data
+ -- Function: signal-error error-symbol data
      This function behaves like `signal', except that the error it
      signals is not continuable.
 
- - Macro: check-argument-type predicate argument
+ -- Macro: check-argument-type predicate argument
      This macro checks that ARGUMENT satisfies PREDICATE.  If that is
      not the case, it signals a continuable `wrong-type-argument' error
      until the returned value satisfies PREDICATE, and assigns the
@@ -3679,8 +3679,8 @@ differences:
 \1f
 File: lispref.info,  Node: Processing of Errors,  Next: Handling Errors,  Prev: Signaling Errors,  Up: Errors
 
-How XEmacs Processes Errors
-...........................
+15.5.3.2 How XEmacs Processes Errors
+....................................
 
 When an error is signaled, `signal' searches for an active "handler"
 for the error.  A handler is a sequence of Lisp expressions designated
@@ -3702,7 +3702,7 @@ function, which takes care of some necessary cleanup, and prints a
 formatted error message to the echo area.  The functions that do the
 formatting are explained below.
 
- - Function: display-error error-object stream
+ -- Function: display-error error-object stream
      This function displays ERROR-OBJECT on STREAM.  ERROR-OBJECT is a
      cons of error type, a symbol, and error arguments, a list.  If the
      error type symbol of one of its error condition superclasses has a
@@ -3710,7 +3710,7 @@ formatting are explained below.
      the actual error message.  Otherwise, the error is printed as
      `Error: arg1, arg2, ...'.
 
- - Function: error-message-string error-object
+ -- Function: error-message-string error-object
      This function converts ERROR-OBJECT to an error message string,
      and returns it.  The message is equivalent to the one that would be
      printed by `display-error', except that it is conveniently returned
@@ -3725,8 +3725,8 @@ variables precisely as they were at the time of the error.
 \1f
 File: lispref.info,  Node: Handling Errors,  Next: Error Symbols,  Prev: Processing of Errors,  Up: Errors
 
-Writing Code to Handle Errors
-.............................
+15.5.3.3 Writing Code to Handle Errors
+......................................
 
 The usual effect of signaling an error is to terminate the command that
 is running and return immediately to the XEmacs editor command loop.
@@ -3795,7 +3795,7 @@ caught by a `catch', and a `throw' cannot be handled by an error
 handler (though using `throw' when there is no suitable `catch' signals
 an error that can be handled).
 
- - Special Form: condition-case var protected-form handlers...
+ -- Special Form: condition-case var protected-form handlers...
      This special form establishes the error handlers HANDLERS around
      the execution of PROTECTED-FORM.  If PROTECTED-FORM executes
      without error, the value it returns becomes the value of the
@@ -3810,9 +3810,9 @@ an error that can be handled).
      of handlers:
 
           (error nil)
-          
+
           (arith-error (message "Division by zero"))
-          
+
           ((arith-error file-error)
            (message
             "Either division by zero or failure to open a file"))
@@ -3853,7 +3853,7 @@ message and returns a very large number.
           (princ (format "Arithmetic error: %s" err))
           1000000)))
      => safe-divide
-     
+
      (safe-divide 5 0)
           -| Arithmetic error: (arith-error)
      => 1000000
@@ -3870,7 +3870,7 @@ including those signaled with `error':
 
      (setq baz 34)
           => 34
-     
+
      (condition-case err
          (if (eq baz 35)
              t
@@ -3885,8 +3885,8 @@ including those signaled with `error':
 \1f
 File: lispref.info,  Node: Error Symbols,  Prev: Handling Errors,  Up: Errors
 
-Error Symbols and Condition Names
-.................................
+15.5.3.4 Error Symbols and Condition Names
+..........................................
 
 When you signal an error, you specify an "error symbol" to specify the
 kind of error you have in mind.  Each error has one and only one error
@@ -3905,7 +3905,7 @@ condition names: `error', the error symbol if that is distinct from
    In other words, each error condition "inherits" from another error
 condition, with `error' sitting at the top of the inheritance hierarchy.
 
- - Function: define-error error-symbol error-message &optional
+ -- Function: define-error error-symbol error-message &optional
           inherits-from
      This function defines a new error, denoted by ERROR-SYMBOL.
      ERROR-MESSAGE is an informative message explaining the error, and
@@ -3971,14 +3971,14 @@ and their conditions.
 \1f
 File: lispref.info,  Node: Cleanups,  Prev: Errors,  Up: Nonlocal Exits
 
-Cleaning Up from Nonlocal Exits
--------------------------------
+15.5.4 Cleaning Up from Nonlocal Exits
+--------------------------------------
 
 The `unwind-protect' construct is essential whenever you temporarily
 put a data structure in an inconsistent state; it permits you to ensure
 the data are consistent in the event of an error or throw.
 
- - Special Form: unwind-protect body cleanup-forms...
+ -- Special Form: unwind-protect body cleanup-forms...
      `unwind-protect' executes the BODY with a guarantee that the
      CLEANUP-FORMS will be evaluated if control leaves BODY, no matter
      how that happens.  The BODY may complete normally, or execute a
@@ -4055,10 +4055,10 @@ kill a temporary buffer.  In this example, the value returned by
            (kill-buffer (current-buffer)))))
 
 \1f
-File: lispref.info,  Node: Variables,  Next: Functions,  Prev: Control Structures,  Up: Top
+File: lispref.info,  Node: Variables,  Next: Functions and Commands,  Prev: Control Structures,  Up: Top
 
-Variables
-*********
+16 Variables
+************
 
 A "variable" is a name used in a program to stand for a value.  Nearly
 all programming languages have variables of some sort.  In the text of
@@ -4094,8 +4094,8 @@ variable.
 \1f
 File: lispref.info,  Node: Global Variables,  Next: Constant Variables,  Up: Variables
 
-Global Variables
-================
+16.1 Global Variables
+=====================
 
 The simplest way to use a variable is "globally".  This means that the
 variable has just one value at a time, and this value is in effect (at
@@ -4130,8 +4130,8 @@ assuming the `setq' form shown above has already been executed.
 \1f
 File: lispref.info,  Node: Constant Variables,  Next: Local Variables,  Prev: Global Variables,  Up: Variables
 
-Variables That Never Change
-===========================
+16.2 Variables That Never Change
+================================
 
 In XEmacs Lisp, some symbols always evaluate to themselves: the two
 special symbols `nil' and `t', as well as "keyword symbols", that is,
@@ -4147,8 +4147,8 @@ change the value of `nil' or `t' signals a `setting-constant' error.
 \1f
 File: lispref.info,  Node: Local Variables,  Next: Void Variables,  Prev: Constant Variables,  Up: Variables
 
-Local Variables
-===============
+16.3 Local Variables
+====================
 
 Global variables have values that last until explicitly superseded with
 new values.  Sometimes it is useful to create variable values that
@@ -4195,7 +4195,7 @@ binding.
 
    The special forms `let' and `let*' exist to create local bindings.
 
- - Special Form: let (bindings...) forms...
+ -- Special Form: let (bindings...) forms...
      This special form binds variables according to BINDINGS and then
      evaluates all of the FORMS in textual order.  The `let'-form
      returns the value of the last form in FORMS.
@@ -4217,7 +4217,7 @@ binding.
             (list Y Z))
                => (1 2)
 
- - Special Form: let* (bindings...) forms...
+ -- Special Form: let* (bindings...) forms...
      This special form is like `let', but it binds each variable right
      after computing its local value, before computing the local value
      for the next variable.  Therefore, an expression in BINDINGS can
@@ -4235,7 +4235,7 @@ binding.
    Here is a complete list of the other facilities that create local
 bindings:
 
-   * Function calls (*note Functions::).
+   * Function calls (*note Functions and Commands::).
 
    * Macro calls (*note Macros::).
 
@@ -4246,7 +4246,7 @@ Variables::).  These kinds of bindings work somewhat like ordinary local
 bindings, but they are localized depending on "where" you are in Emacs,
 rather than localized in time.
 
- - Variable: max-specpdl-size
+ -- Variable: max-specpdl-size
      This variable defines the limit on the total number of local
      variable bindings and `unwind-protect' cleanups (*note Nonlocal
      Exits::) that are allowed before signaling an error (with data
@@ -4263,8 +4263,8 @@ rather than localized in time.
 \1f
 File: lispref.info,  Node: Void Variables,  Next: Defining Variables,  Prev: Local Variables,  Up: Variables
 
-When a Variable is "Void"
-=========================
+16.4 When a Variable is "Void"
+==============================
 
 If you have never given a symbol any value as a global variable, we say
 that that symbol's global value is "void".  In other words, the
@@ -4280,7 +4280,7 @@ have any value.
    After you have given a variable a value, you can make it void once
 more using `makunbound'.
 
- - Function: makunbound symbol
+ -- Function: makunbound symbol
      This function makes the current binding of SYMBOL void.
      Subsequent attempts to use this symbol's value as a variable will
      signal the error `void-variable', unless or until you set it again.
@@ -4310,13 +4310,13 @@ more using `makunbound'.
           error--> Symbol's value as variable is void: x
           x                        ; The global binding is unchanged.
                => 1
-          
+
           (let ((x 2))             ; Locally bind it.
             (let ((x 3))           ; And again.
               (makunbound 'x)      ; Void the innermost-local binding.
               x))                  ; And refer: it's void.
           error--> Symbol's value as variable is void: x
-          
+
           (let ((x 2))
             (let ((x 3))
               (makunbound 'x))     ; Void inner binding, then remove it.
@@ -4330,7 +4330,7 @@ always been void.
    You can use the function `boundp' to test whether a variable is
 currently void.
 
- - Function: boundp variable
+ -- Function: boundp variable
      `boundp' returns `t' if VARIABLE (a symbol) is not void; more
      precisely, if its current binding is not void.  It returns `nil'
      otherwise.
@@ -4350,8 +4350,8 @@ currently void.
 \1f
 File: lispref.info,  Node: Defining Variables,  Next: Accessing Variables,  Prev: Void Variables,  Up: Variables
 
-Defining Global Variables
-=========================
+16.5 Defining Global Variables
+==============================
 
 You may announce your intention to use a symbol as a global variable
 with a "variable definition": a special form, either `defconst' or
@@ -4380,7 +4380,7 @@ Users would like to be able to set user options in their init files,
 and override the default values given in the definitions.  For this
 reason, user options must be defined with `defvar'.
 
- - Special Form: defvar symbol [value [doc-string]]
+ -- Special Form: defvar symbol [value [doc-string]]
      This special form defines SYMBOL as a value and initializes it.
      The definition informs a person reading your code that SYMBOL is
      used as a variable that programs are likely to set or change.  It
@@ -4452,7 +4452,7 @@ reason, user options must be defined with `defvar'.
      The `defvar' form returns SYMBOL, but it is normally used at top
      level in a file where its value does not matter.
 
- - Special Form: defconst symbol [value [doc-string]]
+ -- Special Form: defconst symbol [value [doc-string]]
      This special form defines SYMBOL as a value and initializes it.
      It informs a person reading your code that SYMBOL has a global
      value, established here, that will not normally be changed or
@@ -4483,7 +4483,7 @@ reason, user options must be defined with `defvar'.
           pi
                => 3
 
- - Function: user-variable-p variable
+ -- Function: user-variable-p variable
      This function returns `t' if VARIABLE is a user option--a variable
      intended to be set by the user for customization--and `nil'
      otherwise.  (Variables other than user options exist for the
@@ -4510,8 +4510,8 @@ file before making a local binding for the variable.
 \1f
 File: lispref.info,  Node: Accessing Variables,  Next: Setting Variables,  Prev: Defining Variables,  Up: Variables
 
-Accessing Variable Values
-=========================
+16.6 Accessing Variable Values
+==============================
 
 The usual way to reference a variable is to write the symbol which
 names it (*note Symbol Forms::).  This requires you to specify the
@@ -4519,7 +4519,7 @@ variable name when you write the program.  Usually that is exactly what
 you want to do.  Occasionally you need to choose at run time which
 variable to reference; then you can use `symbol-value'.
 
- - Function: symbol-value symbol
+ -- Function: symbol-value symbol
      This function returns the value of SYMBOL.  This is the value in
      the innermost local binding of the symbol, or its global value if
      it has no local bindings.
@@ -4528,20 +4528,20 @@ variable to reference; then you can use `symbol-value'.
                => 5
           (setq foo 9)
                => 9
-          
+
           ;; Here the symbol `abracadabra'
           ;;   is the symbol whose value is examined.
           (let ((abracadabra 'foo))
             (symbol-value 'abracadabra))
                => foo
-          
+
           ;; Here the value of `abracadabra',
           ;;   which is `foo',
           ;;   is the symbol whose value is examined.
           (let ((abracadabra 'foo))
             (symbol-value abracadabra))
                => 9
-          
+
           (symbol-value 'abracadabra)
                => 5
 
@@ -4551,14 +4551,14 @@ variable to reference; then you can use `symbol-value'.
 \1f
 File: lispref.info,  Node: Setting Variables,  Next: Variable Scoping,  Prev: Accessing Variables,  Up: Variables
 
-How to Alter a Variable Value
-=============================
+16.7 How to Alter a Variable Value
+==================================
 
 The usual way to change the value of a variable is with the special
 form `setq'.  When you need to compute the choice of variable at run
 time, use the function `set'.
 
- - Special Form: setq [symbol form]...
+ -- Special Form: setq [symbol form]...
      This special form is the most common method of changing a
      variable's value.  Each SYMBOL is given a new value, which is the
      result of evaluating the corresponding FORM.  The most-local
@@ -4589,7 +4589,7 @@ time, use the function `set'.
                 y (1+ x))     ;   the value of `y' is computed.
                => 11
 
- - Function: set symbol value
+ -- Function: set symbol value
      This function sets SYMBOL's value to VALUE, then returns VALUE.
      Since `set' is a function, the expression written for SYMBOL is
      evaluated to obtain the symbol to set.
@@ -4638,7 +4638,7 @@ time, use the function `set'.
    One other function for setting a variable is designed to add an
 element to a list if it is not already present in the list.
 
- - Function: add-to-list symbol element
+ -- Function: add-to-list symbol element
      This function sets the variable SYMBOL by consing ELEMENT onto the
      old value, if ELEMENT is not already a member of that value.  It
      returns the resulting list, whether updated or not.  The value of
@@ -4652,13 +4652,13 @@ element to a list if it is not already present in the list.
 
           (setq foo '(a b))
                => (a b)
-          
+
           (add-to-list 'foo 'c)     ;; Add `c'.
                => (c a b)
-          
+
           (add-to-list 'foo 'b)     ;; No effect.
                => (c a b)
-          
+
           foo                       ;; `foo' was changed.
                => (c a b)
 
@@ -4670,8 +4670,8 @@ element to a list if it is not already present in the list.
 \1f
 File: lispref.info,  Node: Variable Scoping,  Next: Buffer-Local Variables,  Prev: Setting Variables,  Up: Variables
 
-Scoping Rules for Variable Bindings
-===================================
+16.8 Scoping Rules for Variable Bindings
+========================================
 
 A given symbol `foo' may have several local variable bindings,
 established at different places in the Lisp program, as well as a global
@@ -4705,8 +4705,8 @@ located textually within the function or block that binds the variable.
 \1f
 File: lispref.info,  Node: Scope,  Next: Extent,  Up: Variable Scoping
 
-Scope
------
+16.8.1 Scope
+------------
 
 XEmacs Lisp uses "indefinite scope" for local variable bindings.  This
 means that any function anywhere in the program text might access a
@@ -4715,7 +4715,7 @@ definitions:
 
      (defun binder (x)   ; `x' is bound in `binder'.
         (foo 5))         ; `foo' is some other function.
-     
+
      (defun user ()      ; `x' is used in `user'.
        (list x))
 
@@ -4748,8 +4748,8 @@ established in `binder', depending on circumstances:
 \1f
 File: lispref.info,  Node: Extent,  Next: Impl of Scope,  Prev: Scope,  Up: Variable Scoping
 
-Extent
-------
+16.8.2 Extent
+-------------
 
 "Extent" refers to the time during program execution that a variable
 name is valid.  In XEmacs Lisp, a variable is valid only while the form
@@ -4784,8 +4784,8 @@ closures.
 \1f
 File: lispref.info,  Node: Impl of Scope,  Next: Using Scoping,  Prev: Extent,  Up: Variable Scoping
 
-Implementation of Dynamic Scoping
----------------------------------
+16.8.3 Implementation of Dynamic Scoping
+----------------------------------------
 
 A simple sample implementation (which is not how XEmacs Lisp actually
 works) may help you understand dynamic binding.  This technique is
@@ -4825,8 +4825,8 @@ binding.
 \1f
 File: lispref.info,  Node: Using Scoping,  Prev: Impl of Scope,  Up: Variable Scoping
 
-Proper Use of Dynamic Scoping
------------------------------
+16.8.4 Proper Use of Dynamic Scoping
+------------------------------------
 
 Binding a variable in one function and using it in another is a
 powerful technique, but if used without restraint, it can make programs
@@ -4859,8 +4859,8 @@ names like `x'.
 \1f
 File: lispref.info,  Node: Buffer-Local Variables,  Next: Variable Aliases,  Prev: Variable Scoping,  Up: Variables
 
-Buffer-Local Variables
-======================
+16.9 Buffer-Local Variables
+===========================
 
 Global and local variable bindings are found in most programming
 languages in one form or another.  XEmacs also supports another, unusual
@@ -4879,8 +4879,8 @@ important customization method.
 \1f
 File: lispref.info,  Node: Intro to Buffer-Local,  Next: Creating Buffer-Local,  Up: Buffer-Local Variables
 
-Introduction to Buffer-Local Variables
---------------------------------------
+16.9.1 Introduction to Buffer-Local Variables
+---------------------------------------------
 
 A buffer-local variable has a buffer-local binding associated with a
 particular buffer.  The binding is in effect when that buffer is
@@ -4927,10 +4927,10 @@ buffer-local bindings for the buffer that holds the file within XEmacs.
 \1f
 File: lispref.info,  Node: Creating Buffer-Local,  Next: Default Value,  Prev: Intro to Buffer-Local,  Up: Buffer-Local Variables
 
-Creating and Deleting Buffer-Local Bindings
--------------------------------------------
+16.9.2 Creating and Deleting Buffer-Local Bindings
+--------------------------------------------------
 
- - Command: make-local-variable variable
+ -- Command: make-local-variable variable
      This function creates a buffer-local binding in the current buffer
      for VARIABLE (a symbol).  Other buffers are not affected.  The
      value returned is VARIABLE.
@@ -4949,7 +4949,7 @@ Creating and Deleting Buffer-Local Bindings
                => 6                   ;   in `b1'.
           foo
                => 6
-          
+
           ;; In buffer `b2', the value hasn't changed.
           (save-excursion
             (set-buffer "b2")
@@ -4964,14 +4964,14 @@ Creating and Deleting Buffer-Local Bindings
      *Please note:* do not use `make-local-variable' for a hook
      variable.  Instead, use `make-local-hook'.  *Note Hooks::.
 
- - Command: make-variable-buffer-local variable
+ -- Command: make-variable-buffer-local variable
      This function marks VARIABLE (a symbol) automatically
      buffer-local, so that any subsequent attempt to set it will make it
      local to the current buffer at the time.
 
      The value returned is VARIABLE.
 
- - Function: local-variable-p variable buffer &optional after-set
+ -- Function: local-variable-p variable buffer &optional after-set
      This returns `t' if VARIABLE is buffer-local in buffer BUFFER;
      else `nil'.
 
@@ -4992,7 +4992,7 @@ Creating and Deleting Buffer-Local Bindings
      indicates that the variable has had `make-variable-buffer-local'
      applied to it.
 
- - Function: buffer-local-variables &optional buffer
+ -- Function: buffer-local-variables &optional buffer
      This function returns a list describing the buffer-local variables
      in buffer BUFFER.  It returns an association list (*note
      Association Lists::) in which each association contains one
@@ -5019,7 +5019,7 @@ Creating and Deleting Buffer-Local Bindings
      Note that storing new values into the CDRs of cons cells in this
      list does _not_ change the local values of the variables.
 
- - Command: kill-local-variable variable
+ -- Command: kill-local-variable variable
      This function deletes the buffer-local binding (if any) for
      VARIABLE (a symbol) in the current buffer.  As a result, the
      global (default) binding of VARIABLE becomes visible in this
@@ -5038,7 +5038,7 @@ Creating and Deleting Buffer-Local Bindings
      one buffer-local variable interactively, just as it is useful to
      create buffer-local variables interactively.
 
- - Function: kill-all-local-variables
+ -- Function: kill-all-local-variables
      This function eliminates all the buffer-local variable bindings of
      the current buffer except for variables marked as "permanent".  As
      a result, the buffer will see the default values of most variables.
@@ -5064,8 +5064,8 @@ save it, rather than with how to edit the contents.
 \1f
 File: lispref.info,  Node: Default Value,  Prev: Creating Buffer-Local,  Up: Buffer-Local Variables
 
-The Default Value of a Buffer-Local Variable
---------------------------------------------
+16.9.3 The Default Value of a Buffer-Local Variable
+---------------------------------------------------
 
 The global value of a variable with buffer-local bindings is also
 called the "default" value, because it is the value that is in effect
@@ -5081,13 +5081,13 @@ buffer-local value for this variable.
    The special forms `defvar' and `defconst' also set the default value
 (if they set the variable at all), rather than any local value.
 
- - Function: default-value symbol
+ -- Function: default-value symbol
      This function returns SYMBOL's default value.  This is the value
      that is seen in buffers that do not have their own values for this
      variable.  If SYMBOL is not buffer-local, this is equivalent to
      `symbol-value' (*note Accessing Variables::).
 
- - Function: default-boundp symbol
+ -- Function: default-boundp symbol
      The function `default-boundp' tells you whether SYMBOL's default
      value is nonvoid.  If `(default-boundp 'foo)' returns `nil', then
      `(default-value 'foo)' would get an error.
@@ -5095,7 +5095,7 @@ buffer-local value for this variable.
      `default-boundp' is to `default-value' as `boundp' is to
      `symbol-value'.
 
- - Special Form: setq-default symbol value
+ -- Special Form: setq-default symbol value
      This sets the default value of SYMBOL to VALUE.  It does not
      evaluate SYMBOL, but does evaluate VALUE.  The value of the
      `setq-default' form is VALUE.
@@ -5118,7 +5118,7 @@ buffer-local value for this variable.
                => value-in-foo
           (default-value 'local)
                => new-default
-          
+
           ;; In (the new) buffer `bar':
           local
                => new-default
@@ -5128,14 +5128,14 @@ buffer-local value for this variable.
                => another-default
           (default-value 'local)
                => another-default
-          
+
           ;; Back in buffer `foo':
           local
                => value-in-foo
           (default-value 'local)
                => another-default
 
- - Function: set-default symbol value
+ -- Function: set-default symbol value
      This function is like `setq-default', except that SYMBOL is
      evaluated.
 
@@ -5147,8 +5147,8 @@ buffer-local value for this variable.
 \1f
 File: lispref.info,  Node: Variable Aliases,  Prev: Buffer-Local Variables,  Up: Variables
 
-Variable Aliases
-================
+16.10 Variable Aliases
+======================
 
 You can define a variable as an "alias" for another.  Any time you
 reference the former variable, the current value of the latter is
@@ -5157,7 +5157,7 @@ value of the latter is actually changed.  This is useful in cases where
 you want to rename a variable but still make old code work (*note
 Obsoleteness::).
 
- - Function: defvaralias variable alias
+ -- Function: defvaralias variable alias
      This function defines VARIABLE as an alias for ALIAS.
      Thenceforth, any operations performed on VARIABLE will actually be
      performed on ALIAS.  Both VARIABLE and ALIAS should be symbols.
@@ -5169,12 +5169,12 @@ Obsoleteness::).
      variable, a variable that has a buffer-local value in any buffer,
      or the symbols `nil' or `t'.
 
- - Function: variable-alias variable &optional follow-past-lisp-magic
+ -- Function: variable-alias variable &optional follow-past-lisp-magic
      If VARIABLE is aliased to another variable, this function returns
      that variable.  VARIABLE should be a symbol.  If VARIABLE is not
      aliased, this function returns `nil'.
 
- - Function: indirect-variable object &optional follow-past-lisp-magic
+ -- Function: indirect-variable object &optional follow-past-lisp-magic
      This function returns the variable at the end of OBJECT's
      variable-alias chain.  If OBJECT is a symbol, follow all variable
      aliases and return the final (non-aliased) symbol.  If OBJECT is
@@ -5183,10 +5183,10 @@ Obsoleteness::).
      variable chain of symbols.
 
 \1f
-File: lispref.info,  Node: Functions,  Next: Macros,  Prev: Variables,  Up: Top
+File: lispref.info,  Node: Functions and Commands,  Next: Macros,  Prev: Variables,  Up: Top
 
-Functions
-*********
+17 Functions and Commands
+*************************
 
 A Lisp program is composed mainly of Lisp functions.  This chapter
 explains what functions are, how they accept arguments, and how to
@@ -5208,10 +5208,10 @@ define them.
                             that have a special bearing on how functions work.
 
 \1f
-File: lispref.info,  Node: What Is a Function,  Next: Lambda Expressions,  Up: Functions
+File: lispref.info,  Node: What Is a Function,  Next: Lambda Expressions,  Up: Functions and Commands
 
-What Is a Function?
-===================
+17.1 What Is a Function?
+========================
 
 In a general sense, a function is a rule for carrying on a computation
 given several values called "arguments".  The result of the computation
@@ -5228,6 +5228,39 @@ function-like objects.
      specifically to mean a function written in Lisp.  Special forms and
      macros are not functions.
 
+"command"
+     A "command" is a possible definition for a key sequence--we count
+     mouse events and menu accesses as key sequences for this purpose.
+     More formally, within XEmacs lisp, a command is something that
+     `command-execute' can invoke.
+
+     Some functions are commands; a function written in Lisp is a
+     command if it contains an interactive declaration. A trivial
+     interactive declaration is a line `(interactive)' immediately
+     after the documentation string. For more complex examples, with
+     prompting and completion, see *Note Defining Commands::. Such a
+     function can be called from Lisp expressions like other functions;
+     in this case, the fact that the function is a command makes no
+     difference.
+
+     Keyboard macros (strings and vectors) are commands also, even
+     though they are not functions.  A symbol is a command if its
+     function definition is a command; such symbols can be invoked with
+     `M-x'.  The symbol is a function as well if the definition is a
+     function.
+
+     In the case where you want to call a command in reaction to a
+     user-generated event, you'll need to bind it to that event.  For
+     how to do this, see *Note Key Binding Commands::.  *Note Command
+     Overview::.
+
+"keystroke command"
+     A "keystroke command" is a command that is bound to a key sequence
+     (typically one to three keystrokes).  The distinction is made here
+     merely to avoid confusion with the meaning of "command" in
+     non-Emacs editors; for Lisp programs, the distinction is normally
+     unimportant.
+
 "primitive"
      A "primitive" is a function callable from Lisp that is written in
      C, such as `car' or `append'.  These functions are also called
@@ -5260,33 +5293,11 @@ function-like objects.
      programmers to do the sorts of things that special forms can do.
      *Note Macros::, for how to define and use macros.
 
-"command"
-     A "command" is an object that `command-execute' can invoke; it is
-     a possible definition for a key sequence.  Some functions are
-     commands; a function written in Lisp is a command if it contains an
-     interactive declaration (*note Defining Commands::).  Such a
-     function can be called from Lisp expressions like other functions;
-     in this case, the fact that the function is a command makes no
-     difference.
-
-     Keyboard macros (strings and vectors) are commands also, even
-     though they are not functions.  A symbol is a command if its
-     function definition is a command; such symbols can be invoked with
-     `M-x'.  The symbol is a function as well if the definition is a
-     function.  *Note Command Overview::.
-
-"keystroke command"
-     A "keystroke command" is a command that is bound to a key sequence
-     (typically one to three keystrokes).  The distinction is made here
-     merely to avoid confusion with the meaning of "command" in
-     non-Emacs editors; for Lisp programs, the distinction is normally
-     unimportant.
-
 "compiled function"
      A "compiled function" is a function that has been compiled by the
      byte compiler.  *Note Compiled-Function Type::.
 
- - Function: subrp object
+ -- Function: subrp object
      This function returns `t' if OBJECT is a built-in function (i.e.,
      a Lisp primitive).
 
@@ -5295,7 +5306,7 @@ function-like objects.
           (subrp (symbol-function 'message))
                => t
 
- - Function: compiled-function-p object
+ -- Function: compiled-function-p object
      This function returns `t' if OBJECT is a compiled function.  For
      example:
 
@@ -5303,10 +5314,10 @@ function-like objects.
                => t
 
 \1f
-File: lispref.info,  Node: Lambda Expressions,  Next: Function Names,  Prev: What Is a Function,  Up: Functions
+File: lispref.info,  Node: Lambda Expressions,  Next: Function Names,  Prev: What Is a Function,  Up: Functions and Commands
 
-Lambda Expressions
-==================
+17.2 Lambda Expressions
+=======================
 
 A function written in Lisp is a list that looks like this:
 
@@ -5331,8 +5342,8 @@ expression, but to be called as a function.
 \1f
 File: lispref.info,  Node: Lambda Components,  Next: Simple Lambda,  Up: Lambda Expressions
 
-Components of a Lambda Expression
----------------------------------
+17.2.1 Components of a Lambda Expression
+----------------------------------------
 
 A function written in Lisp (a "lambda expression") is a list that looks
 like this:
@@ -5373,8 +5384,8 @@ function is the value returned by the last element of the body.
 \1f
 File: lispref.info,  Node: Simple Lambda,  Next: Argument List,  Prev: Lambda Components,  Up: Lambda Expressions
 
-A Simple Lambda-Expression Example
-----------------------------------
+17.2.2 A Simple Lambda-Expression Example
+-----------------------------------------
 
 Consider for example the following function:
 
@@ -5416,8 +5427,8 @@ time, they were the only way to bind and initialize local variables.
 \1f
 File: lispref.info,  Node: Argument List,  Next: Function Documentation,  Prev: Simple Lambda,  Up: Lambda Expressions
 
-Advanced Features of Argument Lists
------------------------------------
+17.2.3 Advanced Features of Argument Lists
+------------------------------------------
 
 Our simple sample function, `(lambda (a b c) (+ a b c))', specifies
 three argument variables, so it must be called with three arguments: if
@@ -5498,8 +5509,8 @@ arguments (either required or optional) after a `&rest' argument.
 \1f
 File: lispref.info,  Node: Function Documentation,  Prev: Argument List,  Up: Lambda Expressions
 
-Documentation Strings of Functions
-----------------------------------
+17.2.4 Documentation Strings of Functions
+-----------------------------------------
 
 A lambda expression may optionally have a "documentation string" just
 after the lambda list.  This string does not affect execution of the
@@ -5535,10 +5546,10 @@ body and the documentation string; if the only body form is a string
 then it serves both as the return value and as the documentation.
 
 \1f
-File: lispref.info,  Node: Function Names,  Next: Defining Functions,  Prev: Lambda Expressions,  Up: Functions
+File: lispref.info,  Node: Function Names,  Next: Defining Functions,  Prev: Lambda Expressions,  Up: Functions and Commands
 
-Naming a Function
-=================
+17.3 Naming a Function
+======================
 
 In most computer languages, every function has a name; the idea of a
 function without a name is nonsensical.  In Lisp, a function in the
@@ -5586,16 +5597,16 @@ equally well a name for the same function.
 these two uses of a symbol are independent and do not conflict.
 
 \1f
-File: lispref.info,  Node: Defining Functions,  Next: Calling Functions,  Prev: Function Names,  Up: Functions
+File: lispref.info,  Node: Defining Functions,  Next: Calling Functions,  Prev: Function Names,  Up: Functions and Commands
 
-Defining Functions
-==================
+17.4 Defining Functions
+=======================
 
 We usually give a name to a function when it is first created.  This is
 called "defining a function", and it is done with the `defun' special
 form.
 
- - Special Form: defun name argument-list body-forms
+ -- Special Form: defun name argument-list body-forms
      `defun' is the usual way to define new Lisp functions.  It defines
      the symbol NAME as a function that looks like this:
 
@@ -5620,7 +5631,7 @@ form.
                => foo
           (foo)
                => 5
-          
+
           (defun bar (a &optional b &rest c)
               (list a b c))
                => bar
@@ -5630,7 +5641,7 @@ form.
                => (1 nil nil)
           (bar)
           error--> Wrong number of arguments.
-          
+
           (defun capitalize-backwards ()
             "Upcase the last letter of a word."
             (interactive)
@@ -5647,8 +5658,8 @@ form.
      distinguish deliberate redefinition from unintentional
      redefinition.
 
- - Function: define-function name definition
- - Function: defalias name definition
+ -- Function: define-function name definition
+ -- Function: defalias name definition
      These equivalent special forms define the symbol NAME as a
      function, with definition DEFINITION (which can be any valid Lisp
      function).
@@ -5667,10 +5678,10 @@ form.
 the Lisp compiler to open-code it.  *Note Inline Functions::.
 
 \1f
-File: lispref.info,  Node: Calling Functions,  Next: Mapping Functions,  Prev: Defining Functions,  Up: Functions
+File: lispref.info,  Node: Calling Functions,  Next: Mapping Functions,  Prev: Defining Functions,  Up: Functions and Commands
 
-Calling Functions
-=================
+17.5 Calling Functions
+======================
 
 Defining functions is only half the battle.  Functions don't do
 anything until you "call" them, i.e., tell them to run.  Calling a
@@ -5688,7 +5699,7 @@ Usually that's just what you want.  Occasionally you need to decide at
 run time which function to call.  To do that, use the functions
 `funcall' and `apply'.
 
- - Function: funcall function &rest arguments
+ -- Function: funcall function &rest arguments
      `funcall' calls FUNCTION with ARGUMENTS, and returns whatever
      FUNCTION returns.
 
@@ -5718,7 +5729,7 @@ run time which function to call.  To do that, use the functions
 
      Compare these example with the examples of `apply'.
 
- - Function: apply function &rest arguments
+ -- Function: apply function &rest arguments
      `apply' calls FUNCTION with ARGUMENTS, just like `funcall' but
      with one difference: the last of ARGUMENTS is a list of arguments
      to give to FUNCTION, rather than a single argument.  We also say
@@ -5737,7 +5748,7 @@ run time which function to call.  To do that, use the functions
                => 10
           (apply '+ '(1 2 3 4))
                => 10
-          
+
           (apply 'append '((a b c) nil (x y z) nil))
                => (a b c x y z)
 
@@ -5753,17 +5764,17 @@ function arguments are often called "functionals".
 function as the argument.  Here are two different kinds of no-op
 function:
 
- - Function: identity arg
+ -- Function: identity arg
      This function returns ARG and has no side effects.
 
- - Command: ignore &rest args
+ -- Command: ignore &rest args
      This function ignores any arguments and returns `nil'.
 
 \1f
-File: lispref.info,  Node: Mapping Functions,  Next: Anonymous Functions,  Prev: Calling Functions,  Up: Functions
+File: lispref.info,  Node: Mapping Functions,  Next: Anonymous Functions,  Prev: Calling Functions,  Up: Functions and Commands
 
-Mapping Functions
-=================
+17.6 Mapping Functions
+======================
 
 A "mapping function" applies a given function to each element of a list
 or other collection.  XEmacs Lisp has several such functions; `mapcar'
@@ -5774,7 +5785,7 @@ symbols in an obarray.
    Mapping functions should never modify the sequence being mapped over.
 The results are unpredictable.
 
- - Function: mapcar function sequence
+ -- Function: mapcar function sequence
      `mapcar' applies FUNCTION to each element of SEQUENCE in turn, and
      returns a list of the results.
 
@@ -5784,17 +5795,17 @@ The results are unpredictable.
      SEQUENCE.
 
      For example:
-          
+
           (mapcar 'car '((a b) (c d) (e f)))
                => (a c e)
           (mapcar '1+ [1 2 3])
                => (2 3 4)
           (mapcar 'char-to-string "abc")
                => ("a" "b" "c")
-          
+
           ;; Call each function in `my-hooks'.
           (mapcar 'funcall my-hooks)
-          
+
           (defun mapcar* (f &rest args)
             "Apply FUNCTION to successive cars of all ARGS.
           Return the list of results."
@@ -5805,11 +5816,11 @@ The results are unpredictable.
                       (apply 'mapcar* f
                              ;; Recurse for rest of elements.
                              (mapcar 'cdr args)))))
-          
+
           (mapcar* 'cons '(a b c) '(1 2 3 4))
                => ((a . 1) (b . 2) (c . 3))
 
- - Function: mapconcat function sequence separator
+ -- Function: mapconcat function sequence separator
      `mapconcat' applies FUNCTION to each element of SEQUENCE: the
      results, which must be strings, are concatenated.  Between each
      pair of result strings, `mapconcat' inserts the string SEPARATOR.
@@ -5825,17 +5836,17 @@ The results are unpredictable.
                      '(The cat in the hat)
                      " ")
                => "The cat in the hat"
-          
+
           (mapconcat (function (lambda (x) (format "%c" (1+ x))))
                      "HAL-8000"
                      "")
                => "IBM.9111"
 
 \1f
-File: lispref.info,  Node: Anonymous Functions,  Next: Function Cells,  Prev: Mapping Functions,  Up: Functions
+File: lispref.info,  Node: Anonymous Functions,  Next: Function Cells,  Prev: Mapping Functions,  Up: Functions and Commands
 
-Anonymous Functions
-===================
+17.7 Anonymous Functions
+========================
 
 In Lisp, a function is a list that starts with `lambda', a byte-code
 function compiled from such a list, or alternatively a primitive
@@ -5877,7 +5888,7 @@ a number by two:
 In such cases, we usually use the special form `function' instead of
 simple quotation to quote the anonymous function.
 
- - Special Form: function function-object
+ -- Special Form: function function-object
      This special form returns FUNCTION-OBJECT without evaluating it.
      In this, it is equivalent to `quote'.  However, it serves as a
      note to the XEmacs Lisp compiler that FUNCTION-OBJECT is intended
@@ -5915,10 +5926,10 @@ name of a function, but this usage is just a sort of comment.
 realistic example using `function' and an anonymous function.
 
 \1f
-File: lispref.info,  Node: Function Cells,  Next: Inline Functions,  Prev: Anonymous Functions,  Up: Functions
+File: lispref.info,  Node: Function Cells,  Next: Inline Functions,  Prev: Anonymous Functions,  Up: Functions and Commands
 
-Accessing Function Cell Contents
-================================
+17.8 Accessing Function Cell Contents
+=====================================
 
 The "function definition" of a symbol is the object stored in the
 function cell of the symbol.  The functions described here access, test,
@@ -5927,7 +5938,7 @@ and set the function cell of symbols.
    See also the function `indirect-function' in *Note Function
 Indirection::.
 
- - Function: symbol-function symbol
+ -- Function: symbol-function symbol
      This returns the object in the function cell of SYMBOL.  If the
      symbol's function cell is void, a `void-function' error is
      signaled.
@@ -5959,12 +5970,12 @@ cell contains no object whatsoever.
 `fboundp'.  After you have given a symbol a function definition, you
 can make it void once more using `fmakunbound'.
 
- - Function: fboundp symbol
+ -- Function: fboundp symbol
      This function returns `t' if SYMBOL has an object in its function
      cell, `nil' otherwise.  It does not check that the object is a
      legitimate function.
 
- - Function: fmakunbound symbol
+ -- Function: fmakunbound symbol
      This function makes SYMBOL's function cell void, so that a
      subsequent attempt to access this cell will cause a `void-function'
      error.  (See also `makunbound', in *Note Local Variables::.)
@@ -5978,7 +5989,7 @@ can make it void once more using `fmakunbound'.
           (foo 1)
           error--> Symbol's function definition is void: foo
 
- - Function: fset symbol object
+ -- Function: fset symbol object
      This function stores OBJECT in the function cell of SYMBOL.  The
      result is OBJECT.  Normally OBJECT should be a function or the
      name of a function, but this is not checked.
@@ -6005,7 +6016,7 @@ can make it void once more using `fmakunbound'.
                => #<subr car>
           (first '(1 2 3))
                => 1
-          
+
           ;; Make the symbol `car' the function definition of `xfirst'.
           (fset 'xfirst 'car)
                => car
@@ -6015,7 +6026,7 @@ can make it void once more using `fmakunbound'.
                => car
           (symbol-function (symbol-function 'xfirst))
                => #<subr car>
-          
+
           ;; Define a named keyboard macro.
           (fset 'kill-two-lines "\^u2\^k")
                => "\^u2\^k"
@@ -6043,10 +6054,10 @@ before moving aside the old definition of `foo'.
 redefine a function defined elsewhere.
 
 \1f
-File: lispref.info,  Node: Inline Functions,  Next: Related Topics,  Prev: Function Cells,  Up: Functions
+File: lispref.info,  Node: Inline Functions,  Next: Related Topics,  Prev: Function Cells,  Up: Functions and Commands
 
-Inline Functions
-================
+17.9 Inline Functions
+=====================
 
 You can define an "inline function" by using `defsubst' instead of
 `defun'.  An inline function works just like an ordinary function
@@ -6079,10 +6090,10 @@ do for macros.  (*Note Argument Evaluation::.)
 file, following the definition, just like macros.
 
 \1f
-File: lispref.info,  Node: Related Topics,  Prev: Inline Functions,  Up: Functions
+File: lispref.info,  Node: Related Topics,  Prev: Inline Functions,  Up: Functions and Commands
 
-Other Topics Related to Functions
-=================================
+17.10 Other Topics Related to Functions
+=======================================
 
 Here is a table of several functions that do things related to function
 calling and function definitions.  They are documented elsewhere, but
@@ -6134,10 +6145,10 @@ we provide cross references here.
      See *Note Key Lookup::.
 
 \1f
-File: lispref.info,  Node: Macros,  Next: Loading,  Prev: Functions,  Up: Top
+File: lispref.info,  Node: Macros,  Next: Loading,  Prev: Functions and Commands,  Up: Top
 
-Macros
-******
+18 Macros
+*********
 
 "Macros" enable you to define new control constructs and other language
 features.  A macro is defined much like a function, but instead of
@@ -6167,8 +6178,8 @@ instead.  *Note Inline Functions::.
 \1f
 File: lispref.info,  Node: Simple Macro,  Next: Expansion,  Up: Macros
 
-A Simple Example of a Macro
-===========================
+18.1 A Simple Example of a Macro
+================================
 
 Suppose we would like to define a Lisp construct to increment a
 variable value, much like the `++' operator in C.  We would like to
@@ -6187,8 +6198,8 @@ incrementing `x'.
 \1f
 File: lispref.info,  Node: Expansion,  Next: Compiling Macros,  Prev: Simple Macro,  Up: Macros
 
-Expansion of a Macro Call
-=========================
+18.2 Expansion of a Macro Call
+==============================
 
 A macro call looks just like a function call in that it is a list which
 starts with the name of the macro.  The rest of the elements of the list
@@ -6220,7 +6231,7 @@ this is unusual.
    You can see the expansion of a given macro call by calling
 `macroexpand'.
 
- - Function: macroexpand form &optional environment
+ -- Function: macroexpand form &optional environment
      This function expands FORM, if it is a macro call.  If the result
      is another macro call, it is expanded in turn, until something
      which is not a macro call results.  That is the value returned by
@@ -6243,22 +6254,22 @@ this is unusual.
           (defmacro inc (var)
               (list 'setq var (list '1+ var)))
                => inc
-          
+
           (macroexpand '(inc r))
                => (setq r (1+ r))
-          
+
           (defmacro inc2 (var1 var2)
               (list 'progn (list 'inc var1) (list 'inc var2)))
                => inc2
-          
+
           (macroexpand '(inc2 r s))
                => (progn (inc r) (inc s))  ; `inc' not expanded here.
 
 \1f
 File: lispref.info,  Node: Compiling Macros,  Next: Defining Macros,  Prev: Expansion,  Up: Macros
 
-Macros and Byte Compilation
-===========================
+18.3 Macros and Byte Compilation
+================================
 
 You might ask why we take the trouble to compute an expansion for a
 macro and then evaluate the expansion.  Why not have the macro body
@@ -6293,8 +6304,8 @@ Compile::).
 \1f
 File: lispref.info,  Node: Defining Macros,  Next: Backquote,  Prev: Compiling Macros,  Up: Macros
 
-Defining Macros
-===============
+18.4 Defining Macros
+====================
 
 A Lisp macro is a list whose CAR is `macro'.  Its CDR should be a
 function; expansion of the macro works by applying the function (with
@@ -6307,7 +6318,7 @@ an anonymous macro to functionals such as `mapcar'.  In practice, all
 Lisp macros have names, and they are usually defined with the special
 form `defmacro'.
 
- - Special Form: defmacro name argument-list body-forms...
+ -- Special Form: defmacro name argument-list body-forms...
      `defmacro' defines the symbol NAME as a macro that looks like this:
 
           (macro lambda ARGUMENT-LIST . BODY-FORMS)
@@ -6325,8 +6336,8 @@ form `defmacro'.
 \1f
 File: lispref.info,  Node: Backquote,  Next: Problems with Macros,  Prev: Defining Macros,  Up: Macros
 
-Backquote
-=========
+18.5 Backquote
+==============
 
 Macros often need to construct large list structures from a mixture of
 constants and nonconstant parts.  To make this easier, use the macro
@@ -6363,7 +6374,7 @@ some examples:
           => (1 2 3 4 2 3)
      `(1 ,@some-list 4 ,@some-list)
           => (1 2 3 4 2 3)
-     
+
      (setq list '(hack foo bar))
           => (hack foo bar)
      (cons 'use
@@ -6387,8 +6398,8 @@ some examples:
 \1f
 File: lispref.info,  Node: Problems with Macros,  Prev: Backquote,  Up: Macros
 
-Common Problems Using Macros
-============================
+18.6 Common Problems Using Macros
+=================================
 
 The basic facts of macro expansion have counterintuitive consequences.
 This section describes some important consequences that can lead to
@@ -6405,8 +6416,8 @@ trouble, and rules to follow to avoid trouble.
 \1f
 File: lispref.info,  Node: Argument Evaluation,  Next: Surprising Local Vars,  Up: Problems with Macros
 
-Evaluating Macro Arguments Repeatedly
--------------------------------------
+18.6.1 Evaluating Macro Arguments Repeatedly
+--------------------------------------------
 
 When defining a macro you must pay attention to the number of times the
 arguments will be evaluated when the expansion is executed.  The
@@ -6421,7 +6432,7 @@ find in Pascal.
              (cons 'while (cons (list '<= var final)
                                 (append body (list (list 'inc var)))))))
      => for
-     
+
      (for i from 1 to 3 do
         (setq square (* i i))
         (princ (format "\n%d %d" i square)))
@@ -6431,7 +6442,7 @@ find in Pascal.
          (setq square (* i i))
          (princ (format "%d      %d" i square))
          (inc i)))
-     
+
           -|1       1
           -|2       4
           -|3       9
@@ -6487,8 +6498,8 @@ following node.
 \1f
 File: lispref.info,  Node: Surprising Local Vars,  Next: Eval During Expansion,  Prev: Argument Evaluation,  Up: Problems with Macros
 
-Local Variables in Macro Expansions
------------------------------------
+18.6.2 Local Variables in Macro Expansions
+------------------------------------------
 
 In the previous section, the definition of `for' was fixed as follows
 to make the expansion evaluate the macro arguments the proper number of
@@ -6540,8 +6551,8 @@ expressions ordinarily.
 \1f
 File: lispref.info,  Node: Eval During Expansion,  Next: Repeated Expansion,  Prev: Surprising Local Vars,  Up: Problems with Macros
 
-Evaluating Macro Arguments in Expansion
----------------------------------------
+18.6.3 Evaluating Macro Arguments in Expansion
+----------------------------------------------
 
 Another problem can happen if you evaluate any of the macro argument
 expressions during the computation of the expansion, such as by calling
@@ -6579,8 +6590,8 @@ computed as part of executing the expansion.
 \1f
 File: lispref.info,  Node: Repeated Expansion,  Prev: Eval During Expansion,  Up: Problems with Macros
 
-How Many Times is the Macro Expanded?
--------------------------------------
+18.6.4 How Many Times is the Macro Expanded?
+--------------------------------------------
 
 Occasionally problems result from the fact that a macro call is
 expanded each time it is evaluated in an interpreted function, but is
@@ -6600,7 +6611,7 @@ example:
 
      (defmacro empty-object ()
        (list 'quote (cons nil nil)))
-     
+
      (defun initialize (condition)
        (let ((object (empty-object)))
          (if condition
@@ -6621,8 +6632,8 @@ so naturally you won't use it on `(empty-object)' either.
 \1f
 File: lispref.info,  Node: Customization,  Up: Top
 
-Writing Customization Definitions
-*********************************
+19 Writing Customization Definitions
+************************************
 
 This chapter describes how to declare user options for customization,
 and also customization groups for classifying them.  We use the term
@@ -6639,8 +6650,8 @@ definitions--as well as face definitions.
 \1f
 File: lispref.info,  Node: Common Keywords,  Next: Group Definitions,  Up: Customization
 
-Common Keywords for All Kinds of Items
-======================================
+19.1 Common Keywords for All Kinds of Items
+===========================================
 
 All kinds of customization declarations (for variables and groups, and
 for faces) accept keyword arguments for specifying various information.
@@ -6709,8 +6720,8 @@ one name.
 \1f
 File: lispref.info,  Node: Group Definitions,  Next: Variable Definitions,  Prev: Common Keywords,  Up: Customization
 
-Defining Custom Groups
-======================
+19.2 Defining Custom Groups
+===========================
 
 Each Emacs Lisp package should have one main customization group which
 contains all the options, faces and other groups in the package.  If the
@@ -6728,7 +6739,7 @@ and add your group to each of them using the `:group' keyword.
 
    The way to declare new customization groups is with `defgroup'.
 
- - Macro: defgroup group members doc [keyword value]...
+ -- Macro: defgroup group members doc [keyword value]...
      Declare GROUP as a customization group containing MEMBERS.  Do not
      quote the symbol GROUP.  The argument DOC specifies the
      documentation string for the group.
@@ -6757,12 +6768,12 @@ and add your group to each of them using the `:group' keyword.
 \1f
 File: lispref.info,  Node: Variable Definitions,  Next: Customization Types,  Prev: Group Definitions,  Up: Customization
 
-Defining Customization Variables
-================================
+19.3 Defining Customization Variables
+=====================================
 
 Use `defcustom' to declare user-editable variables.
 
- - Macro: defcustom option default doc [keyword value]...
+ -- Macro: defcustom option default doc [keyword value]...
      Declare OPTION as a customizable user option variable.  Do not
      quote OPTION.  The argument DOC specifies the documentation string
      for the variable.
@@ -6869,8 +6880,8 @@ which evaluates to the value.
 \1f
 File: lispref.info,  Node: Customization Types,  Prev: Variable Definitions,  Up: Customization
 
-Customization Types
-===================
+19.4 Customization Types
+========================
 
 When you define a user option with `defcustom', you must specify its
 "customization type".  That is a Lisp object which describes (1) which
@@ -6909,8 +6920,8 @@ example just `string' as a customization type is equivalent to
 \1f
 File: lispref.info,  Node: Simple Types,  Next: Composite Types,  Up: Customization Types
 
-Simple Types
-------------
+19.4.1 Simple Types
+-------------------
 
 This section describes all the simple customization types.
 
@@ -6979,8 +6990,8 @@ This section describes all the simple customization types.
 \1f
 File: lispref.info,  Node: Composite Types,  Next: Splicing into Lists,  Prev: Simple Types,  Up: Customization Types
 
-Composite Types
----------------
+19.4.2 Composite Types
+----------------------
 
 When none of the simple types is appropriate, you can use composite
 types, which build new types from other types.  Here are several ways of
@@ -7096,8 +7107,8 @@ doing that:
 \1f
 File: lispref.info,  Node: Splicing into Lists,  Next: Type Keywords,  Prev: Composite Types,  Up: Customization Types
 
-Splicing into Lists
--------------------
+19.4.3 Splicing into Lists
+--------------------------
 
 The `:inline' feature lets you splice a variable number of elements
 into the middle of a list or vector.  You use it in a `set', `choice'
@@ -7142,8 +7153,8 @@ elements and the second and third must be strings.
 \1f
 File: lispref.info,  Node: Type Keywords,  Prev: Splicing into Lists,  Up: Customization Types
 
-Type Keywords
--------------
+19.4.4 Type Keywords
+--------------------
 
 You can specify keyword-argument pairs in a customization type after the
 type name symbol.  Here are the keywords you can use, and their
@@ -7249,8 +7260,8 @@ meanings:
 \1f
 File: lispref.info,  Node: Loading,  Next: Byte Compilation,  Prev: Macros,  Up: Top
 
-Loading
-*******
+20 Loading
+**********
 
 Loading a file of Lisp code means bringing its contents into the Lisp
 environment in the form of Lisp objects.  XEmacs finds and opens the
@@ -7285,8 +7296,8 @@ the forms are function definitions and variable definitions.
 \1f
 File: lispref.info,  Node: How Programs Do Loading,  Next: Autoload,  Up: Loading
 
-How Programs Do Loading
-=======================
+20.1 How Programs Do Loading
+============================
 
 XEmacs Lisp has several interfaces for loading.  For example,
 `autoload' creates a placeholder object for a function in a file;
@@ -7295,7 +7306,7 @@ function's real definition (*note Autoload::).  `require' loads a file
 if it isn't already loaded (*note Named Features::).  Ultimately, all
 these facilities call the `load' function to do the work.
 
- - Function: load filename &optional missing-ok nomessage nosuffix
+ -- Function: load filename &optional missing-ok nomessage nosuffix
      This function finds and opens a file of Lisp code, evaluates all
      the forms in it, and closes the file.
 
@@ -7345,7 +7356,7 @@ these facilities call the `load' function to do the work.
 
      `load' returns `t' if the file loads successfully.
 
- - User Option: load-path
+ -- User Option: load-path
      The value of this variable is a list of directories to search when
      loading files with `load'.  Each element is a string (which must be
      a directory name) or `nil' (which stands for the current working
@@ -7400,7 +7411,7 @@ these facilities call the `load' function to do the work.
      should bind `load-path' locally with `let' around the calls to
      `load'.
 
- - Function: locate-file filename path-list &optional suffixes mode
+ -- Function: locate-file filename path-list &optional suffixes mode
      This function searches for a file in the same way that `load' does,
      and returns the file found (if any). (In fact, `load' uses this
      function to search through `load-path'.) It searches for FILENAME
@@ -7415,7 +7426,7 @@ these facilities call the `load' function to do the work.
      you will have to call `locate-file-clear-hashing' to get it back
      on track.  See that function for details.
 
- - Function: locate-file-clear-hashing path
+ -- Function: locate-file-clear-hashing path
      This function clears the hash records for the specified list of
      directories.  `locate-file' uses a hashing scheme to speed lookup,
      and will correctly track the following environmental changes:
@@ -7432,11 +7443,11 @@ these facilities call the `load' function to do the work.
      the directory list.  In this case, you must call
      `locate-file-clear-hashing'.
 
- - Variable: load-in-progress
+ -- Variable: load-in-progress
      This variable is non-`nil' if Emacs is in the process of loading a
      file, and it is `nil' otherwise.
 
- - Variable: load-read-function
+ -- Variable: load-read-function
      This variable specifies an alternate expression-reading function
      for `load' and `eval-region' to use instead of `read'.  The
      function should accept one argument, just as `read' does.
@@ -7444,14 +7455,14 @@ these facilities call the `load' function to do the work.
      Normally, the variable's value is `nil', which means those
      functions should use `read'.
 
- - User Option: load-warn-when-source-newer
+ -- User Option: load-warn-when-source-newer
      This variable specifies whether `load' should check whether the
      source is newer than the binary.  If this variable is true, then
      when a `.elc' file is being loaded and the corresponding `.el' is
      newer, a warning message will be printed.  The default is `nil',
      but it is bound to `t' during the initial loadup.
 
- - User Option: load-warn-when-source-only
+ -- User Option: load-warn-when-source-only
      This variable specifies whether `load' should warn when loading a
      `.el' file instead of an `.elc'.  If this variable is true, then
      when `load' is called with a filename without an extension, and
@@ -7460,7 +7471,7 @@ these facilities call the `load' function to do the work.
      `load', no warning will be printed.  The default is `nil', but it
      is bound to `t' during the initial loadup.
 
- - User Option: load-ignore-elc-files
+ -- User Option: load-ignore-elc-files
      This variable specifies whether `load' should ignore `.elc' files
      when a suffix is not given.  This is normally used only to
      bootstrap the `.elc' files when building XEmacs, when you use the
index 9f2d6df..141d4e5 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -52,8 +52,8 @@ Foundation instead of in the original English.
 \1f
 File: lispref.info,  Node: Autoload,  Next: Repeated Loading,  Prev: How Programs Do Loading,  Up: Loading
 
-Autoload
-========
+20.2 Autoload
+=============
 
 The "autoload" facility allows you to make a function or macro known in
 Lisp, but put off loading the file that defines it.  The first call to
@@ -71,8 +71,8 @@ arranges to execute them when Emacs is built.  Magic comments are the
 most convenient way to make a function autoload, but only for packages
 installed along with Emacs.
 
- - Function: autoload function filename &optional docstring interactive
-          type
+ -- Function: autoload function filename &optional docstring
+          interactive type
      This function defines the function (or macro) named FUNCTION so as
      to load automatically from FILENAME.  The string FILENAME
      specifies the file to load to get the real definition of FUNCTION.
@@ -180,8 +180,8 @@ file.  *Note Building XEmacs::.
 \1f
 File: lispref.info,  Node: Repeated Loading,  Next: Named Features,  Prev: Autoload,  Up: Loading
 
-Repeated Loading
-================
+20.3 Repeated Loading
+=====================
 
 You may load one file more than once in an Emacs session.  For example,
 after you have rewritten and reinstalled a function definition by
@@ -222,10 +222,10 @@ already been loaded.  Here's one way to test, in a library, whether it
 has been loaded before:
 
      (defvar foo-was-loaded)
-     
+
      (if (not (boundp 'foo-was-loaded))
          EXECUTE-FIRST-TIME-ONLY)
-     
+
      (setq foo-was-loaded t)
 
 If the library uses `provide' to provide a named feature, you can use
@@ -235,8 +235,8 @@ Features::.
 \1f
 File: lispref.info,  Node: Named Features,  Next: Unloading,  Prev: Repeated Loading,  Up: Loading
 
-Features
-========
+20.4 Features
+=============
 
 `provide' and `require' are an alternative to `autoload' for loading
 files automatically.  They work in terms of named "features".
@@ -254,7 +254,7 @@ feature name as argument.  `require' looks in the global variable
 `features' to see whether the desired feature has been provided
 already.  If not, it loads the feature from the appropriate file.  This
 file should call `provide' at the top level to add the feature to
-`features'; if it fails to do so, `require' signals an error.
+`features'; if it fails to do so, `require' signals an error.  
 
    Features are normally named after the files that provide them, so
 that `require' need not be given the file name.
@@ -299,7 +299,7 @@ loading the file in question.  Loading the file does execute the
 `provide' call, so the subsequent `require' call does nothing while
 loading.
 
- - Function: provide feature
+ -- Function: provide feature
      This function announces that FEATURE is now loaded, or being
      loaded, into the current XEmacs session.  This means that the
      facilities associated with FEATURE are or will be available for
@@ -311,7 +311,7 @@ loading.
 
           features
                => (bar bish)
-          
+
           (provide 'foo)
                => foo
           features
@@ -322,7 +322,7 @@ loading.
      or `provide' calls that occurred during the load are undone.
      *Note Autoload::.
 
- - Function: require feature &optional filename
+ -- Function: require feature &optional filename
      This function checks whether FEATURE is present in the current
      XEmacs session (using `(featurep FEATURE)'; see below).  If it is
      not, then `require' loads FILENAME with `load'.  If FILENAME is
@@ -332,7 +332,7 @@ loading.
      If loading the file fails to provide FEATURE, `require' signals an
      error, `Required feature FEATURE was not provided'.
 
- - Function: featurep fexp
+ -- Function: featurep fexp
      This function returns `t' if feature FEXP is present in this
      Emacs.  Use this to conditionalize execution of lisp code based on
      the presence or absence of emacs or environment extensions.
@@ -363,13 +363,13 @@ loading.
 
           (featurep 'xemacs)
                => ; t on XEmacs.
-          
+
           (featurep '(and xemacs gnus))
                => ; t on XEmacs with Gnus loaded.
-          
+
           (featurep '(or tty-frames (and emacs 19.30)))
                => ; t if this Emacs supports TTY frames.
-          
+
           (featurep '(or (and xemacs 19.15) (and emacs 19.34)))
                => ; t on XEmacs 19.15 and later, or on
                          ; FSF Emacs 19.34 and later.
@@ -379,7 +379,7 @@ loading.
      feel they are useful for supporting multiple Emacs variants, lobby
      Richard Stallman at `<bug-gnu-emacs@prep.ai.mit.edu>'.
 
- - Variable: features
+ -- Variable: features
      The value of this variable is a list of symbols that are the
      features loaded in the current XEmacs session.  Each symbol was
      put in this list with a call to `provide'.  The order of the
@@ -388,14 +388,14 @@ loading.
 \1f
 File: lispref.info,  Node: Unloading,  Next: Hooks for Loading,  Prev: Named Features,  Up: Loading
 
-Unloading
-=========
+20.5 Unloading
+==============
 
 You can discard the functions and variables loaded by a library to
 reclaim memory for other Lisp objects.  To do this, use the function
 `unload-feature':
 
- - Command: unload-feature feature &optional force
+ -- Command: unload-feature feature &optional force
      This command unloads the library that provided feature FEATURE.
      It undefines all functions, macros, and variables defined in that
      library with `defconst', `defvar', `defun', `defmacro',
@@ -412,7 +412,7 @@ reclaim memory for other Lisp objects.  To do this, use the function
    The `unload-feature' function is written in Lisp; its actions are
 based on the variable `load-history'.
 
- - Variable: load-history
+ -- Variable: load-history
      This variable's value is an alist connecting library names with the
      names of functions and variables they define, the features they
      provide, and the features they require.
@@ -440,10 +440,10 @@ rather than replacing that element.
 \1f
 File: lispref.info,  Node: Hooks for Loading,  Prev: Unloading,  Up: Loading
 
-Hooks for Loading
-=================
+20.6 Hooks for Loading
+======================
 
- - Variable: after-load-alist
+ -- Variable: after-load-alist
      An alist of expressions to evaluate if and when particular
      libraries are loaded.  Each element looks like this:
 
@@ -462,8 +462,8 @@ Hooks for Loading
 \1f
 File: lispref.info,  Node: Byte Compilation,  Next: Debugging,  Prev: Loading,  Up: Top
 
-Byte Compilation
-****************
+21 Byte Compilation
+*******************
 
 XEmacs Lisp has a "compiler" that translates functions written in Lisp
 into a special representation called "byte-code" that can be executed
@@ -506,8 +506,8 @@ in byte compilation.
 \1f
 File: lispref.info,  Node: Speed of Byte-Code,  Next: Compilation Functions,  Up: Byte Compilation
 
-Performance of Byte-Compiled Code
-=================================
+21.1 Performance of Byte-Compiled Code
+======================================
 
 A byte-compiled function is not as efficient as a primitive function
 written in C, but runs much faster than the version written in Lisp.
@@ -520,11 +520,11 @@ Here is an example:
                    0))
          (list t1 (current-time-string))))
      => silly-loop
-     
+
      (silly-loop 5000000)
      => ("Mon Sep 14 15:51:49 1998"
          "Mon Sep 14 15:52:07 1998")  ; 18 seconds
-     
+
      (byte-compile 'silly-loop)
      => #<compiled-function
      (n)
@@ -532,7 +532,7 @@ Here is an example:
      [current-time-string t1 n 0]
      2
      "Return time before and after N iterations of a loop.">
-     
+
      (silly-loop 5000000)
      => ("Mon Sep 14 15:53:43 1998"
          "Mon Sep 14 15:53:49 1998")  ; 6 seconds
@@ -544,8 +544,8 @@ representative, but actual results will vary greatly.
 \1f
 File: lispref.info,  Node: Compilation Functions,  Next: Compilation Options,  Prev: Speed of Byte-Code,  Up: Byte Compilation
 
-The Compilation Functions
-=========================
+21.2 The Compilation Functions
+==============================
 
 You can byte-compile an individual function or macro definition with
 the `byte-compile' function.  You can compile a whole file with
@@ -569,7 +569,7 @@ available during compilation is to `require' the file that defines them
 when someone _runs_ the compiled program, write `eval-when-compile'
 around the `require' calls (*note Eval During Compile::).
 
- - Function: byte-compile symbol
+ -- Function: byte-compile symbol
      This function byte-compiles the function definition of SYMBOL,
      replacing the previous definition with the compiled one.  The
      function definition of SYMBOL must be the actual code for the
@@ -588,7 +588,7 @@ around the `require' calls (*note Eval During Compile::).
             (if (= 1 integer) 1
               (* integer (factorial (1- integer)))))
           => factorial
-          
+
           (byte-compile 'factorial)
           => #<compiled-function
           (integer)
@@ -604,7 +604,7 @@ around the `require' calls (*note Eval During Compile::).
      except for certain primitives that are coded as special
      instructions.
 
- - Command: compile-defun &optional arg
+ -- Command: compile-defun &optional arg
      This command reads the defun containing point, compiles it, and
      evaluates the result.  If you use this on a defun that is actually
      a function definition, the effect is to install a compiled version
@@ -613,7 +613,7 @@ around the `require' calls (*note Eval During Compile::).
      If ARG is non-`nil', the result is inserted in the current buffer
      after the form; otherwise, it is printed in the minibuffer.
 
- - Command: byte-compile-file filename &optional load
+ -- Command: byte-compile-file filename &optional load
      This function compiles a file of Lisp code named FILENAME into a
      file of byte-code.  The output file's name is made by appending
      `c' to the end of FILENAME.
@@ -633,15 +633,15 @@ around the `require' calls (*note Eval During Compile::).
 
           % ls -l push*
           -rw-r--r--  1 lewis     791 Oct  5 20:31 push.el
-          
+
           (byte-compile-file "~/emacs/push.el")
                => t
-          
+
           % ls -l push*
           -rw-r--r--  1 lewis     791 Oct  5 20:31 push.el
           -rw-r--r--  1 lewis     638 Oct  8 20:25 push.elc
 
- - Command: byte-recompile-directory directory &optional flag
+ -- Command: byte-recompile-directory directory &optional flag
           norecursion force
      This function recompiles every `.el' file in DIRECTORY that needs
      recompilation.  A file needs recompilation if a `.elc' file exists
@@ -659,7 +659,7 @@ around the `require' calls (*note Eval During Compile::).
 
      The return value of this command is unpredictable.
 
- - Function: batch-byte-compile
+ -- Function: batch-byte-compile
      This function runs `byte-compile-file' on files specified on the
      command line.  This function must be used only in a batch
      execution of Emacs, as it kills Emacs on completion.  An error in
@@ -669,21 +669,21 @@ around the `require' calls (*note Eval During Compile::).
 
           % xemacs -batch -f batch-byte-compile *.el
 
- - Function: batch-byte-recompile-directory
+ -- Function: batch-byte-recompile-directory
      This function is similar to `batch-byte-compile' but runs the
      command `byte-recompile-directory' on the files remaining on the
      command line.
 
- - Variable: byte-recompile-directory-ignore-errors-p
+ -- Variable: byte-recompile-directory-ignore-errors-p
      When non-`nil', `byte-recompile-directory' will continue compiling
      even when an error occurs in a file.  Default: `nil', but bound to
      `t' by `batch-byte-recompile-directory'.
 
- - Variable: byte-recompile-directory-recursively
+ -- Variable: byte-recompile-directory-recursively
      When non-`nil', `byte-recompile-directory' will recurse on
      subdirectories.  Default: `t'.
 
- - Function: byte-code instructions constants stack-depth
+ -- Function: byte-code instructions constants stack-depth
      This function actually interprets byte-code.  Don't call this
      function yourself.  Only the byte compiler knows how to generate
      valid calls to this function.
@@ -698,8 +698,8 @@ around the `require' calls (*note Eval During Compile::).
 \1f
 File: lispref.info,  Node: Compilation Options,  Next: Docs and Compilation,  Prev: Compilation Functions,  Up: Byte Compilation
 
-Options for the Byte Compiler
-=============================
+21.3 Options for the Byte Compiler
+==================================
 
 Warning: this node is a quick draft based on docstrings.  There may be
 inaccuracies, as the docstrings occasionally disagree with each other.
@@ -709,22 +709,22 @@ This has not been checked yet.
 variables.  The `byte-compiler-options' macro described below provides
 a convenient way to set most of them on a file-by-file basis.
 
- - Variable: emacs-lisp-file-regexp
+ -- Variable: emacs-lisp-file-regexp
      Regexp which matches Emacs Lisp source files.  You may want to
      redefine `byte-compile-dest-file' if you change this.  Default:
      `"\\.el$"'.
 
- - Function: byte-compile-dest-file filename
+ -- Function: byte-compile-dest-file filename
      Convert an Emacs Lisp source file name to a compiled file name.
      This function may be redefined by the user, if necessary, for
      compatibility with `emacs-lisp-file-regexp'.
 
- - Variable: byte-compile-verbose
+ -- Variable: byte-compile-verbose
      When non-`nil', print messages describing progress of
      byte-compiler.  Default: `t' if interactive on a not-too-slow
      terminal (see `search-slow-speed'), otherwise `nil'.
 
- - Variable: byte-optimize
+ -- Variable: byte-optimize
      Level of optimization in the byte compiler.
 
     `nil'
@@ -741,13 +741,13 @@ a convenient way to set most of them on a file-by-file basis.
           code) only.
      Default: `t'.
 
- - Variable: byte-compile-delete-errors
+ -- Variable: byte-compile-delete-errors
      When non-`nil', the optimizer may delete forms that may signal an
      error if that is the only change in the function's behavior.  This
      includes variable references and calls to functions such as `car'.
      Default: `t'.
 
- - Variable: byte-optimize-log nil
+ -- Variable: byte-optimize-log nil
      When non-`nil', the byte-compiler logs optimizations into
      `*Compile-Log*'.
 
@@ -765,16 +765,16 @@ a convenient way to set most of them on a file-by-file basis.
           code) only.
      Default: `nil'.
 
- - Variable: byte-compile-error-on-warn
+ -- Variable: byte-compile-error-on-warn
      When non-`nil', the byte-compiler reports warnings with `error'.
      Default:  `nil'.
 
- - Variable: byte-compile-default-warnings
+ -- Variable: byte-compile-default-warnings
      The warnings used when `byte-compile-warnings' is `t'.  Called
      `byte-compile-warning-types' in GNU Emacs.  Default: `(redefine
      callargs subr-callargs free-vars unresolved unused-vars obsolete)'.
 
- - Variable: byte-compile-warnings
+ -- Variable: byte-compile-warnings
      List of warnings that the compiler should issue (`t' for the
      default set).  Elements of the list may be:
 
@@ -811,7 +811,7 @@ a convenient way to set most of them on a file-by-file basis.
    The compiler can generate a call graph, which gives information about
 which functions call which functions.
 
- - Variable: byte-compile-generate-call-tree
+ -- Variable: byte-compile-generate-call-tree
      When non-`nil', the compiler generates a call graph.  This records
      functions that were called and from where.  If the value is `t',
      compilation displays the call graph when it finishes.  If the
@@ -827,7 +827,7 @@ which functions call which functions.
      which can be invoked interactively are excluded from this list.
      Default: `nil'.
 
- - Variable: byte-compile-call-tree nil
+ -- Variable: byte-compile-call-tree nil
      Alist of functions and their call tree, used internally.  Each
      element takes the form
 
@@ -837,7 +837,7 @@ which functions call which functions.
      is a list of functions for which calls were generated while
      compiling FUNCTION.
 
- - Variable: byte-compile-call-tree-sort
+ -- Variable: byte-compile-call-tree-sort
      When non-`nil', sort the call tree.  The values `name', `callers',
      `calls', and `calls+callers' specify different fields to sort
      on.")  Default: `name'.
@@ -845,7 +845,7 @@ which functions call which functions.
    `byte-compile-overwrite-file' controls treatment of existing
 compiled files.
 
- - Variable: byte-compile-overwrite-file
+ -- Variable: byte-compile-overwrite-file
      When non-`nil', do not preserve backups of `.elc's.  Precisely, if
      `nil', old `.elc' files are deleted before the new one is saved,
      and `.elc' files will have the same modes as the corresponding
@@ -879,17 +879,17 @@ perfectly well on the other, this is very dangerous, and can result in
 crashes or data loss.  Always recompile your Lisp when moving between
 XEmacs and GNU Emacs.
 
- - Variable: byte-compile-single-version nil
+ -- Variable: byte-compile-single-version nil
      When non-`nil', the choice of emacs version (v19 or v20) byte-codes
      will be hard-coded into bytecomp when it compiles itself.  If the
      compiler itself is compiled with optimization, this causes a
      speedup.  Default: `nil'.
 
- - Variable: byte-compile-emacs19-compatibility
+ -- Variable: byte-compile-emacs19-compatibility
      When non-`nil' generate output that can run in Emacs 19.  Default:
      `nil' when Emacs version is 20 or above, otherwise `t'.
 
- - Variable: byte-compile-print-gensym
+ -- Variable: byte-compile-print-gensym
      When non-`nil', the compiler may generate code that creates unique
      symbols at run-time.  This is achieved by printing uninterned
      symbols using the `#:' notation, so that they will be read
@@ -901,10 +901,10 @@ XEmacs and GNU Emacs.
      Default: When `byte-compile-emacs19-compatibility' is non-nil, this
      variable is ignored and considered to be `nil'.  Otherwise `t'.
 
- - Variable: byte-compile-new-bytecodes
+ -- Variable: byte-compile-new-bytecodes
      This is completely ignored.  For backwards compatibility.
 
- - Function: byte-compiler-options &rest args
+ -- Function: byte-compiler-options &rest args
      Set some compilation-parameters for this file.  This will affect
      only the file in which it appears; this does nothing when
      evaluated, or when loaded from a `.el' file.
@@ -913,7 +913,7 @@ XEmacs and GNU Emacs.
      (#### Need to check whether the newer variables are settable here.)
 
             Keys:                Values:               Corresponding variable:
-          
+
             verbose      t, nil                byte-compile-verbose
             optimize     t, nil, source, byte  byte-optimize
             warnings     list of warnings      byte-compile-warnings
@@ -946,8 +946,8 @@ XEmacs and GNU Emacs.
 \1f
 File: lispref.info,  Node: Docs and Compilation,  Next: Dynamic Loading,  Prev: Compilation Options,  Up: Byte Compilation
 
-Documentation Strings and Compilation
-=====================================
+21.4 Documentation Strings and Compilation
+==========================================
 
 Functions and variables loaded from a byte-compiled file access their
 documentation strings dynamically from the file whenever needed.  This
@@ -988,7 +988,7 @@ binding for the variable.  Here's one way to do that:
 
      -*-byte-compile-dynamic-docstrings: nil;-*-
 
- - Variable: byte-compile-dynamic-docstrings
+ -- Variable: byte-compile-dynamic-docstrings
      If this is non-`nil', the byte compiler generates compiled files
      that are set up for dynamic loading of documentation strings.
      Default: t.
@@ -1002,8 +1002,8 @@ these constructs in Lisp source files.
 \1f
 File: lispref.info,  Node: Dynamic Loading,  Next: Eval During Compile,  Prev: Docs and Compilation,  Up: Byte Compilation
 
-Dynamic Loading of Individual Functions
-=======================================
+21.5 Dynamic Loading of Individual Functions
+============================================
 
 When you compile a file, you can optionally enable the "dynamic
 function loading" feature (also known as "lazy loading").  With dynamic
@@ -1042,11 +1042,11 @@ files with file-local variable bindings, like this:
 
      -*-byte-compile-dynamic: t;-*-
 
- - Variable: byte-compile-dynamic
+ -- Variable: byte-compile-dynamic
      If this is non-`nil', the byte compiler generates compiled files
      that are set up for dynamic function loading.  Default: nil.
 
- - Function: fetch-bytecode function
+ -- Function: fetch-bytecode function
      This immediately finishes loading the definition of FUNCTION from
      its byte-compiled file, if it is not fully loaded already.  The
      argument FUNCTION may be a compiled-function object or a function
@@ -1055,13 +1055,13 @@ files with file-local variable bindings, like this:
 \1f
 File: lispref.info,  Node: Eval During Compile,  Next: Compiled-Function Objects,  Prev: Dynamic Loading,  Up: Byte Compilation
 
-Evaluation During Compilation
-=============================
+21.6 Evaluation During Compilation
+==================================
 
 These features permit you to write code to be evaluated during
 compilation of a program.
 
- - Special Form: eval-and-compile body
+ -- Special Form: eval-and-compile body
      This form marks BODY to be evaluated both when you compile the
      containing code and when you run it (whether compiled or not).
 
@@ -1070,7 +1070,7 @@ compilation of a program.
      preferable if there is a substantial amount of code to be executed
      in this way.
 
- - Special Form: eval-when-compile body
+ -- Special Form: eval-when-compile body
      This form marks BODY to be evaluated at compile time and not when
      the compiled program is loaded.  The result of evaluation by the
      compiler becomes a constant which appears in the compiled program.
@@ -1085,8 +1085,8 @@ compilation of a program.
 \1f
 File: lispref.info,  Node: Compiled-Function Objects,  Next: Disassembly,  Prev: Eval During Compile,  Up: Byte Compilation
 
-Compiled-Function Objects
-=========================
+21.7 Compiled-Function Objects
+==============================
 
 Byte-compiled functions have a special data type: they are
 "compiled-function objects". The evaluator handles this data type
@@ -1146,7 +1146,7 @@ representation.  It is the definition of the command `backward-sexp'.
    The primitive way to create a compiled-function object is with
 `make-byte-code':
 
- - Function: make-byte-code arglist instructions constants stack-depth
+ -- Function: make-byte-code arglist instructions constants stack-depth
           &optional doc-string interactive
      This function constructs and returns a compiled-function object
      with the specified attributes.
@@ -1169,34 +1169,34 @@ byte compiler to create these objects; it makes the elements consistent
    The following primitives are provided for accessing the elements of
 a compiled-function object.
 
- - Function: compiled-function-arglist function
+ -- Function: compiled-function-arglist function
      This function returns the argument list of compiled-function object
      FUNCTION.
 
- - Function: compiled-function-instructions function
+ -- Function: compiled-function-instructions function
      This function returns a string describing the byte-code
      instructions of compiled-function object FUNCTION.
 
- - Function: compiled-function-constants function
+ -- Function: compiled-function-constants function
      This function returns the vector of Lisp objects referenced by
      compiled-function object FUNCTION.
 
- - Function: compiled-function-stack-depth function
+ -- Function: compiled-function-stack-depth function
      This function returns the maximum stack size needed by
      compiled-function object FUNCTION.
 
- - Function: compiled-function-doc-string function
+ -- Function: compiled-function-doc-string function
      This function returns the doc string of compiled-function object
      FUNCTION, if available.
 
- - Function: compiled-function-interactive function
+ -- Function: compiled-function-interactive function
      This function returns the interactive spec of compiled-function
      object FUNCTION, if any.  The return value is `nil' or a
      two-element list, the first element of which is the symbol
      `interactive' and the second element is the interactive spec (a
      string or Lisp form).
 
- - Function: compiled-function-domain function
+ -- Function: compiled-function-domain function
      This function returns the domain of compiled-function object
      FUNCTION, if any.  The result will be a string or `nil'.  *Note
      Domain Specification::.
@@ -1204,8 +1204,8 @@ a compiled-function object.
 \1f
 File: lispref.info,  Node: Disassembly,  Next: Different Behavior,  Prev: Compiled-Function Objects,  Up: Byte Compilation
 
-Disassembled Byte-Code
-======================
+21.8 Disassembled Byte-Code
+===========================
 
 People do not write byte-code; that job is left to the byte compiler.
 But we provide a disassembler to satisfy a cat-like curiosity.  The
@@ -1221,7 +1221,7 @@ returns it as the value of the function.
 ordinary Lisp variables, by transferring values between variables and
 the stack.
 
- - Command: disassemble object &optional stream
+ -- Command: disassemble object &optional stream
      This function prints the disassembled code for OBJECT.  If STREAM
      is supplied, then output goes there.  Otherwise, the disassembled
      code is printed to the stream `standard-output'.  The argument
@@ -1239,64 +1239,64 @@ source; these do not appear in the output of `disassemble'.
        (if (= 1 integer) 1
          (* integer (factorial (1- integer)))))
           => factorial
-     
+
      (factorial 4)
           => 24
-     
+
      (disassemble 'factorial)
           -| byte-code for factorial:
       doc: Compute factorial of an integer.
       args: (integer)
-     
+
      0   varref   integer        ; Get value of `integer'
                                  ;   from the environment
                                  ;   and push the value
                                  ;   onto the stack.
-     
+
      1   constant 1              ; Push 1 onto stack.
-     
+
      2   eqlsign                 ; Pop top two values off stack,
                                  ;   compare them,
                                  ;   and push result onto stack.
-     
+
      3   goto-if-nil 1           ; Pop and test top of stack;
                                  ;   if `nil',
                                  ;   go to label 1 (which is also byte 7),
                                  ;   else continue.
-     
+
      5   constant 1              ; Push 1 onto top of stack.
-     
+
      6   return                  ; Return the top element
                                  ;   of the stack.
-     
+
      7:1 varref   integer        ; Push value of `integer' onto stack.
-     
+
      8   constant factorial      ; Push `factorial' onto stack.
-     
+
      9   varref   integer        ; Push value of `integer' onto stack.
-     
+
      10  sub1                    ; Pop `integer', decrement value,
                                  ;   push new value onto stack.
-     
+
                                  ; Stack now contains:
                                  ;   - decremented value of `integer'
                                  ;   - `factorial'
                                  ;   - value of `integer'
-     
+
      15  call     1              ; Call function `factorial' using
                                  ;   the first (i.e., the top) element
                                  ;   of the stack as the argument;
                                  ;   push returned value onto stack.
-     
+
                                  ; Stack now contains:
                                  ;   - result of recursive
                                  ;        call to `factorial'
                                  ;   - value of `integer'
-     
+
      12  mult                    ; Pop top two values off the stack,
                                  ;   multiply them,
                                  ;   pushing the result onto the stack.
-     
+
      13  return                  ; Return the top element
                                  ;   of the stack.
           => nil
@@ -1310,76 +1310,76 @@ source; these do not appear in the output of `disassemble'.
                    0))
          (list t1 (current-time-string))))
           => silly-loop
-     
+
      (disassemble 'silly-loop)
           -| byte-code for silly-loop:
       doc: Return time before and after N iterations of a loop.
       args: (n)
-     
+
      0   constant current-time-string  ; Push
                                        ;   `current-time-string'
                                        ;   onto top of stack.
-     
+
      1   call     0              ; Call `current-time-string'
                                  ;    with no argument,
                                  ;    pushing result onto stack.
-     
+
      2   varbind  t1             ; Pop stack and bind `t1'
                                  ;   to popped value.
-     
+
      3:1 varref   n              ; Get value of `n' from
                                  ;   the environment and push
                                  ;   the value onto the stack.
-     
+
      4   sub1                    ; Subtract 1 from top of stack.
-     
+
      5   dup                     ; Duplicate the top of the stack;
                                  ;   i.e., copy the top of
                                  ;   the stack and push the
                                  ;   copy onto the stack.
-     
+
      6   varset   n              ; Pop the top of the stack,
                                  ;   and set `n' to the value.
-     
+
                                  ; In effect, the sequence `dup varset'
                                  ;   copies the top of the stack
                                  ;   into the value of `n'
                                  ;   without popping it.
-     
+
      7   constant 0              ; Push 0 onto stack.
-     
+
      8   gtr                     ; Pop top two values off stack,
                                  ;   test if N is greater than 0
                                  ;   and push result onto stack.
-     
+
      9   goto-if-not-nil 1       ; Goto label 1 (byte 3) if `n' <= 0
                                  ;   (this exits the while loop).
                                  ;   else pop top of stack
                                  ;   and continue
-     
+
      11  varref   t1             ; Push value of `t1' onto stack.
-     
+
      12  constant current-time-string  ; Push
                                        ;   `current-time-string'
                                        ;   onto top of stack.
-     
+
      13  call     0              ; Call `current-time-string' again.
-     
+
      14  unbind   1              ; Unbind `t1' in local environment.
-     
+
      15  list2                   ; Pop top two elements off stack,
                                  ;   create a list of them,
                                  ;   and push list onto stack.
-     
+
      16  return                  ; Return the top element of the stack.
-     
+
           => nil
 
 \1f
 File: lispref.info,  Node: Different Behavior,  Prev: Disassembly,  Up: Byte Compilation
 
-Different Behavior
-==================
+21.9 Different Behavior
+=======================
 
 The intent is that compiled byte-code and the corresponding code
 executed by the Lisp interpreter produce identical results.  However,
@@ -1408,8 +1408,8 @@ be set to `nil', but this is not recommended.
 \1f
 File: lispref.info,  Node: Debugging,  Next: Read and Print,  Prev: Byte Compilation,  Up: Top
 
-Debugging Lisp Programs
-***********************
+22 Debugging Lisp Programs
+**************************
 
 There are three ways to investigate a problem in an XEmacs Lisp program,
 depending on what you are doing with the program when the problem
@@ -1445,8 +1445,8 @@ Afterward, you can examine the file to find out what input was used.
 \1f
 File: lispref.info,  Node: Debugger,  Next: Syntax Errors,  Up: Debugging
 
-The Lisp Debugger
-=================
+22.1 The Lisp Debugger
+======================
 
 The "Lisp debugger" provides the ability to suspend evaluation of a
 form.  While evaluation is suspended (a state that is commonly known as
@@ -1470,8 +1470,8 @@ recursively.  *Note Recursive Editing::.
 \1f
 File: lispref.info,  Node: Error Debugging,  Next: Infinite Loops,  Up: Debugger
 
-Entering the Debugger on an Error
----------------------------------
+22.1.1 Entering the Debugger on an Error
+----------------------------------------
 
 The most important time to enter the debugger is when a Lisp error
 happens.  This allows you to investigate the immediate causes of the
@@ -1484,7 +1484,7 @@ during ordinary editing it would be very unpleasant to enter the
 debugger each time this happens.  If you want errors to enter the
 debugger, set the variable `debug-on-error' to non-`nil'.
 
- - User Option: debug-on-error
+ -- User Option: debug-on-error
      This variable determines whether the debugger is called when an
      error is signaled and not handled.  If `debug-on-error' is `t', all
      errors call the debugger.  If it is `nil', none call the debugger.
@@ -1498,11 +1498,11 @@ debugger, set the variable `debug-on-error' to non-`nil'.
      happen in process filter functions and sentinels.  Therefore, these
      errors also can invoke the debugger.  *Note Processes::.
 
- - User Option: debug-on-signal
+ -- User Option: debug-on-signal
      This variable is similar to `debug-on-error' but breaks whenever
      an error is signalled, regardless of whether it would be handled.
 
- - User Option: debug-ignored-errors
+ -- User Option: debug-ignored-errors
      This variable specifies certain kinds of errors that should not
      enter the debugger.  Its value is a list of error condition
      symbols and/or regular expressions.  If the error has any of those
@@ -1530,8 +1530,8 @@ best way to make `.emacs' set `debug-on-error' permanently is with
 \1f
 File: lispref.info,  Node: Infinite Loops,  Next: Function Debugging,  Prev: Error Debugging,  Up: Debugger
 
-Debugging Infinite Loops
-------------------------
+22.1.2 Debugging Infinite Loops
+-------------------------------
 
 When a program loops infinitely and fails to return, your first problem
 is to stop the loop.  On most operating systems, you can do this with
@@ -1548,7 +1548,7 @@ loop, you can proceed from the debugger using the stepping commands.
 If you step through the entire loop, you will probably get enough
 information to solve the problem.
 
- - User Option: debug-on-quit
+ -- User Option: debug-on-quit
      This variable determines whether the debugger is called when `quit'
      is signaled and not handled.  If `debug-on-quit' is non-`nil',
      then the debugger is called whenever you quit (that is, type
@@ -1558,8 +1558,8 @@ information to solve the problem.
 \1f
 File: lispref.info,  Node: Function Debugging,  Next: Explicit Debug,  Prev: Infinite Loops,  Up: Debugger
 
-Entering the Debugger on a Function Call
-----------------------------------------
+22.1.3 Entering the Debugger on a Function Call
+-----------------------------------------------
 
 To investigate a problem that happens in the middle of a program, one
 useful technique is to enter the debugger whenever a certain function is
@@ -1568,7 +1568,7 @@ and then step through the function, or you can do this to a function
 called shortly before the problem, step quickly over the call to that
 function, and then step through its caller.
 
- - Command: debug-on-entry function-name
+ -- Command: debug-on-entry function-name
      This function requests FUNCTION-NAME to invoke the debugger each
      time it is called.  It works by inserting the form `(debug
      'debug)' into the function definition as the first form.
@@ -1598,7 +1598,7 @@ function, and then step through its caller.
           (debug-on-entry 'fact)
                => fact
           (fact 3)
-          
+
           ------ Buffer: *Backtrace* ------
           Entering:
           * fact(3)
@@ -1609,13 +1609,13 @@ function, and then step through its caller.
             eval-insert-last-sexp(nil)
           * call-interactively(eval-insert-last-sexp)
           ------ Buffer: *Backtrace* ------
-          
+
           (symbol-function 'fact)
                => (lambda (n)
                     (debug (quote debug))
                     (if (zerop n) 1 (* n (fact (1- n)))))
 
- - Command: cancel-debug-on-entry &optional function-name
+ -- Command: cancel-debug-on-entry &optional function-name
      This function undoes the effect of `debug-on-entry' on
      FUNCTION-NAME.  When called interactively, it prompts for
      FUNCTION-NAME in the minibuffer.  If FUNCTION-NAME is `nil' or the
@@ -1628,8 +1628,8 @@ function, and then step through its caller.
 \1f
 File: lispref.info,  Node: Explicit Debug,  Next: Using Debugger,  Prev: Function Debugging,  Up: Debugger
 
-Explicit Entry to the Debugger
-------------------------------
+22.1.4 Explicit Entry to the Debugger
+-------------------------------------
 
 You can cause the debugger to be called at a certain point in your
 program by writing the expression `(debug)' at that point.  To do this,
@@ -1646,8 +1646,8 @@ implicit `progn' (*note Sequencing::).
 \1f
 File: lispref.info,  Node: Using Debugger,  Next: Debugger Commands,  Prev: Explicit Debug,  Up: Debugger
 
-Using the Debugger
-------------------
+22.1.5 Using the Debugger
+-------------------------
 
 When the debugger is entered, it displays the previously selected
 buffer in one window and a buffer named `*Backtrace*' in another
@@ -1684,8 +1684,8 @@ interpreted.
 \1f
 File: lispref.info,  Node: Debugger Commands,  Next: Invoking the Debugger,  Prev: Using Debugger,  Up: Debugger
 
-Debugger Commands
------------------
+22.1.6 Debugger Commands
+------------------------
 
 Inside the debugger (in Debugger mode), these special commands are
 available in addition to the usual cursor motion commands.  (Keep in
@@ -1779,12 +1779,12 @@ type `C-M-x' on its definition.)
 \1f
 File: lispref.info,  Node: Invoking the Debugger,  Next: Internals of Debugger,  Prev: Debugger Commands,  Up: Debugger
 
-Invoking the Debugger
----------------------
+22.1.7 Invoking the Debugger
+----------------------------
 
 Here we describe fully the function used to invoke the debugger.
 
- - Function: debug &rest debugger-args
+ -- Function: debug &rest debugger-args
      This function enters the debugger.  It switches buffers to a buffer
      named `*Backtrace*' (or `*Backtrace*<2>' if it is the second
      recursive entry to the debugger, etc.), and fills it with
@@ -1848,7 +1848,7 @@ Here we describe fully the function used to invoke the debugger.
 
                (let ((debug-on-error t))
                  (/ 1 0))
-               
+
                ------ Buffer: *Backtrace* ------
                Signaling: (arith-error)
                  /(1 0)
@@ -1869,13 +1869,13 @@ Here we describe fully the function used to invoke the debugger.
 \1f
 File: lispref.info,  Node: Internals of Debugger,  Prev: Invoking the Debugger,  Up: Debugger
 
-Internals of the Debugger
--------------------------
+22.1.8 Internals of the Debugger
+--------------------------------
 
 This section describes functions and variables used internally by the
 debugger.
 
- - Variable: debugger
+ -- Variable: debugger
      The value of this variable is the function to call to invoke the
      debugger.  Its value must be a function of any number of arguments
      (or, more typically, the name of a function).  Presumably this
@@ -1886,7 +1886,7 @@ debugger.
      was called.  The convention for arguments is detailed in the
      description of `debug'.
 
- - Command: backtrace &optional stream detailed
+ -- Command: backtrace &optional stream detailed
      This function prints a trace of Lisp function calls currently
      active.  This is the function used by `debug' to fill up the
      `*Backtrace*' buffer.  It is written in C, since it must have
@@ -1913,9 +1913,9 @@ debugger.
                 (setq var (eval '(progn
                                    (1+ var)
                                    (list 'testing (backtrace))))))))
-          
+
                => nil
-          
+
           ----------- Buffer: backtrace-output ------------
             backtrace()
             (list ...computing arguments...)
@@ -1934,14 +1934,14 @@ debugger.
      The character `*' indicates a frame whose debug-on-exit flag is
      set.
 
- - Variable: debug-on-next-call
+ -- Variable: debug-on-next-call
      If this variable is non-`nil', it says to call the debugger before
      the next `eval', `apply' or `funcall'.  Entering the debugger sets
      `debug-on-next-call' to `nil'.
 
      The `d' command in the debugger works by setting this variable.
 
- - Function: backtrace-debug level flag
+ -- Function: backtrace-debug level flag
      This function sets the debug-on-exit flag of the stack frame LEVEL
      levels down the stack, giving it the value FLAG.  If FLAG is
      non-`nil', this will cause the debugger to be entered when that
@@ -1950,7 +1950,7 @@ debugger.
 
      This function is used only by the debugger.
 
- - Variable: command-debug-status
+ -- Variable: command-debug-status
      This variable records the debugging status of the current
      interactive command.  Each time a command is called interactively,
      this variable is bound to `nil'.  The debugger can set this
@@ -1961,7 +1961,7 @@ debugger.
      another global variable is that the data will never carry over to a
      subsequent command invocation.
 
- - Function: backtrace-frame frame-number
+ -- Function: backtrace-frame frame-number
      The function `backtrace-frame' is intended for use in Lisp
      debuggers.  It returns information about what computation is
      happening in the stack frame FRAME-NUMBER levels down.
@@ -1982,8 +1982,8 @@ debugger.
 \1f
 File: lispref.info,  Node: Syntax Errors,  Next: Compilation Errors,  Prev: Debugger,  Up: Debugging
 
-Debugging Invalid Lisp Syntax
-=============================
+22.2 Debugging Invalid Lisp Syntax
+==================================
 
 The Lisp reader reports invalid syntax, but cannot say where the real
 problem is.  For example, the error "End of file during parsing" in
@@ -2010,8 +2010,8 @@ Lisp, and we can give further advice for those cases.
 \1f
 File: lispref.info,  Node: Excess Open,  Next: Excess Close,  Up: Syntax Errors
 
-Excess Open Parentheses
------------------------
+22.2.1 Excess Open Parentheses
+------------------------------
 
 The first step is to find the defun that is unbalanced.  If there is an
 excess open parenthesis, the way to do this is to insert a close
@@ -2048,8 +2048,8 @@ anything.
 \1f
 File: lispref.info,  Node: Excess Close,  Prev: Excess Open,  Up: Syntax Errors
 
-Excess Close Parentheses
-------------------------
+22.2.2 Excess Close Parentheses
+-------------------------------
 
 To deal with an excess close parenthesis, first insert an open
 parenthesis at the beginning of the file, back up over it, and type
@@ -2078,8 +2078,8 @@ anything.
 \1f
 File: lispref.info,  Node: Compilation Errors,  Next: Edebug,  Prev: Syntax Errors,  Up: Debugging
 
-Debugging Problems in Compilation
-=================================
+22.3 Debugging Problems in Compilation
+======================================
 
 When an error happens during byte compilation, it is normally due to
 invalid syntax in the program you are compiling.  The compiler prints a
@@ -2106,8 +2106,8 @@ show you which function to check.
 \1f
 File: lispref.info,  Node: Edebug,  Prev: Compilation Errors,  Up: Top
 
-Edebug
-======
+22.4 Edebug
+===========
 
 Edebug is a source-level debugger for XEmacs Lisp programs that
 provides the following features:
@@ -2166,8 +2166,8 @@ enable you to use it.
 \1f
 File: lispref.info,  Node: Using Edebug,  Next: Instrumenting,  Up: Edebug
 
-Using Edebug
-------------
+22.4.1 Using Edebug
+-------------------
 
 To debug an XEmacs Lisp program with Edebug, you must first
 "instrument" the Lisp code that you want to debug.  If you want to just
@@ -2233,8 +2233,8 @@ commands.
 \1f
 File: lispref.info,  Node: Instrumenting,  Next: Edebug Execution Modes,  Prev: Using Edebug,  Up: Edebug
 
-Instrumenting for Edebug
-------------------------
+22.4.2 Instrumenting for Edebug
+-------------------------------
 
 In order to use Edebug to debug Lisp code, you must first "instrument"
 the code.  Instrumenting a form inserts additional code into it which
@@ -2302,8 +2302,8 @@ inside of Edebug.
 \1f
 File: lispref.info,  Node: Edebug Execution Modes,  Next: Jumping,  Prev: Instrumenting,  Up: Edebug
 
-Edebug Execution Modes
-----------------------
+22.4.3 Edebug Execution Modes
+-----------------------------
 
 Edebug supports several execution modes for running the program you are
 debugging.  We call these alternatives "Edebug execution modes"; do not
@@ -2383,8 +2383,8 @@ Edebug.  This is usually an advantage.  But see
 \1f
 File: lispref.info,  Node: Jumping,  Next: Edebug Misc,  Prev: Edebug Execution Modes,  Up: Edebug
 
-Jumping
--------
+22.4.4 Jumping
+--------------
 
 Commands described here let you jump to a specified location.  All,
 except `i', use temporary breakpoints to establish the stop point and
@@ -2441,8 +2441,8 @@ breakpoint where you expected the program to stop.
 \1f
 File: lispref.info,  Node: Edebug Misc,  Next: Breakpoints,  Prev: Jumping,  Up: Edebug
 
-Miscellaneous
--------------
+22.4.5 Miscellaneous
+--------------------
 
 Some miscellaneous commands are described here.
 
@@ -2485,8 +2485,8 @@ You can display a backtrace of all the pending evaluations with `d'.
 \1f
 File: lispref.info,  Node: Breakpoints,  Next: Trapping Errors,  Prev: Edebug Misc,  Up: Edebug
 
-Breakpoints
------------
+22.4.6 Breakpoints
+------------------
 
 There are three more ways to stop execution once it has started:
 breakpoints, the global break condition, and embedded breakpoints.
@@ -2554,8 +2554,8 @@ does not continue execution--it just moves point in the buffer.
 \1f
 File: lispref.info,  Node: Global Break Condition,  Next: Embedded Breakpoints,  Up: Breakpoints
 
-Global Break Condition
-......................
+22.4.6.1 Global Break Condition
+...............................
 
 In contrast to breaking when execution reaches specified locations, you
 can also cause a break when a certain event occurs.  The "global break
@@ -2576,8 +2576,8 @@ you should reset the condition to `nil' when not in use.
 \1f
 File: lispref.info,  Node: Embedded Breakpoints,  Prev: Global Break Condition,  Up: Breakpoints
 
-Embedded Breakpoints
-....................
+22.4.6.2 Embedded Breakpoints
+.............................
 
 Since all breakpoints in a definition are cleared each time you
 reinstrument it, you might rather create an "embedded breakpoint" which
@@ -2602,8 +2602,8 @@ standard backtrace debugger.
 \1f
 File: lispref.info,  Node: Trapping Errors,  Next: Edebug Views,  Prev: Breakpoints,  Up: Edebug
 
-Trapping Errors
----------------
+22.4.7 Trapping Errors
+----------------------
 
 An error may be signaled by subroutines or XEmacs Lisp code.  If a
 signal is not handled by a `condition-case', this indicates an
@@ -2643,8 +2643,8 @@ can only trap errors that are handled if they are signaled in Lisp code
 \1f
 File: lispref.info,  Node: Edebug Views,  Next: Edebug Eval,  Prev: Trapping Errors,  Up: Edebug
 
-Edebug Views
-------------
+22.4.8 Edebug Views
+-------------------
 
 The following Edebug commands let you view aspects of the buffer and
 window status that obtained before entry to Edebug.
@@ -2691,8 +2691,8 @@ to see unless you have enough windows open.
 \1f
 File: lispref.info,  Node: Edebug Eval,  Next: Eval List,  Prev: Edebug Views,  Up: Edebug
 
-Evaluation
-----------
+22.4.9 Evaluation
+-----------------
 
 While within Edebug, you can evaluate expressions "as if" Edebug were
 not running.  Edebug tries to be invisible to the expression's
@@ -2722,8 +2722,8 @@ lexically bound symbols created by the following constructs in `cl.el'
 \1f
 File: lispref.info,  Node: Eval List,  Next: Reading in Edebug,  Prev: Edebug Eval,  Up: Edebug
 
-Evaluation List Buffer
-----------------------
+22.4.10 Evaluation List Buffer
+------------------------------
 
 You can use the "evaluation list buffer", called `*edebug*', to
 evaluate expressions interactively.  You can also set up the
@@ -2810,8 +2810,8 @@ execution, and recreated next time it is needed.
 \1f
 File: lispref.info,  Node: Reading in Edebug,  Next: Printing in Edebug,  Prev: Eval List,  Up: Edebug
 
-Reading in Edebug
------------------
+22.4.11 Reading in Edebug
+-------------------------
 
 To instrument a form, Edebug first reads the whole form.  Edebug
 replaces the standard Lisp Reader with its own reader that remembers the
@@ -2829,8 +2829,8 @@ macros for Edebug.
 \1f
 File: lispref.info,  Node: Printing in Edebug,  Next: Tracing,  Prev: Reading in Edebug,  Up: Edebug
 
-Printing in Edebug
-------------------
+22.4.12 Printing in Edebug
+--------------------------
 
 If the result of an expression in your program contains a circular
 reference, you may get an error when Edebug attempts to print it.  You
@@ -2868,8 +2868,8 @@ simply cannot be printed readably.
 \1f
 File: lispref.info,  Node: Tracing,  Next: Coverage Testing,  Prev: Printing in Edebug,  Up: Edebug
 
-Tracing
--------
+22.4.13 Tracing
+---------------
 
 In addition to automatic stepping through source code, which is also
 called _tracing_ (see *Note Edebug Execution Modes::), Edebug can
@@ -2908,8 +2908,8 @@ list.)
 \1f
 File: lispref.info,  Node: Coverage Testing,  Next: The Outside Context,  Prev: Tracing,  Up: Edebug
 
-Coverage Testing
-----------------
+22.4.14 Coverage Testing
+------------------------
 
 Edebug provides a rudimentary coverage tester and display of execution
 frequency.  Frequency counts are always accumulated, both before and
@@ -2919,7 +2919,7 @@ mode is `Go-nonstop'.  Coverage testing is only done if the option
 expensive.  Both data sets are displayed by `M-x
 edebug-display-freq-count'.
 
- - Command: edebug-display-freq-count
+ -- Command: edebug-display-freq-count
      Display the frequency count data for each line of the current
      definition.  The frequency counts are inserted as comment lines
      after each line, and you can undo all insertions with one `undo'
@@ -2959,8 +2959,8 @@ recursive call of `fac' has not returned at all.
 \1f
 File: lispref.info,  Node: The Outside Context,  Next: Instrumenting Macro Calls,  Prev: Coverage Testing,  Up: Edebug
 
-The Outside Context
--------------------
+22.4.15 The Outside Context
+---------------------------
 
 Edebug tries to be transparent to the program you are debugging.  In
 addition, most evaluations you do within Edebug (see *Note Edebug
@@ -2981,8 +2981,8 @@ the course of debugging will be defeated.
 \1f
 File: lispref.info,  Node: Checking Whether to Stop,  Next: Edebug Display Update,  Up: The Outside Context
 
-Checking Whether to Stop
-........................
+22.4.15.1 Checking Whether to Stop
+..................................
 
 Whenever Edebug is entered just to think about whether to take some
 action, it needs to save and restore certain data.
@@ -2999,8 +2999,8 @@ action, it needs to save and restore certain data.
 \1f
 File: lispref.info,  Node: Edebug Display Update,  Next: Edebug Recursive Edit,  Prev: Checking Whether to Stop,  Up: The Outside Context
 
-Edebug Display Update
-.....................
+22.4.15.2 Edebug Display Update
+...............................
 
 When Edebug needs to display something (e.g., in trace mode), it saves
 the current window configuration from "outside" Edebug.  When you exit
@@ -3046,8 +3046,8 @@ error or quit signal occurs.
 \1f
 File: lispref.info,  Node: Edebug Recursive Edit,  Prev: Edebug Display Update,  Up: The Outside Context
 
-Edebug Recursive Edit
-.....................
+22.4.15.3 Edebug Recursive Edit
+...............................
 
 When Edebug is entered and actually reads commands from the user, it
 saves (and later restores) these additional data:
@@ -3088,8 +3088,8 @@ saves (and later restores) these additional data:
 \1f
 File: lispref.info,  Node: Instrumenting Macro Calls,  Next: Edebug Options,  Prev: The Outside Context,  Up: Edebug
 
-Instrumenting Macro Calls
--------------------------
+22.4.16 Instrumenting Macro Calls
+---------------------------------
 
 When Edebug instruments an expression that calls a Lisp macro, it needs
 additional advice to do the job properly.  This is because there is no
@@ -3099,7 +3099,7 @@ resulting expansion is evaluated, or any time later.)  You must explain
 the format of macro call arguments by using `def-edebug-spec' to define
 an "Edebug specification" for each macro.
 
- - Macro: def-edebug-spec macro specification
+ -- Macro: def-edebug-spec macro specification
      Specify which expressions of a call to macro MACRO are forms to be
      evaluated.  For simple macros, the SPECIFICATION often looks very
      similar to the formal argument list of the macro definition, but
@@ -3118,7 +3118,7 @@ an alternative, equivalent specification.
 
      (def-edebug-spec for
        (symbolp "from" form "to" form "do" &rest form))
-     
+
      (def-edebug-spec for
        (symbolp ['from form] ['to form] ['do body]))
 
@@ -3152,8 +3152,8 @@ directs processing of arguments.
 \1f
 File: lispref.info,  Node: Specification List,  Next: Backtracking,  Up: Instrumenting Macro Calls
 
-Specification List
-..................
+22.4.16.1 Specification List
+............................
 
 A "specification list" is required for an Edebug specification if some
 arguments of a macro call are evaluated while others are not.  Some
@@ -3370,8 +3370,8 @@ with the corresponding type of argument:
 \1f
 File: lispref.info,  Node: Backtracking,  Next: Debugging Backquote,  Prev: Specification List,  Up: Instrumenting Macro Calls
 
-Backtracking
-............
+22.4.16.2 Backtracking
+......................
 
 If a specification fails to match at some point, this does not
 necessarily mean a syntax error will be signaled; instead,
@@ -3411,8 +3411,8 @@ alternatives may apply.
 \1f
 File: lispref.info,  Node: Debugging Backquote,  Next: Specification Examples,  Prev: Backtracking,  Up: Instrumenting Macro Calls
 
-Debugging Backquote
-...................
+22.4.16.3 Debugging Backquote
+.............................
 
 Backquote (``') is a macro that results in an expression that may or
 may not be evaluated.  It is often used to simplify the definition of a
@@ -3451,7 +3451,7 @@ with Macros.) is shown here but with `edebug-`' substituted for regular
 
      (defmacro inc (var)
        (list 'setq var (list '1+ var)))
-     
+
      (defmacro for (var from init to final do &rest body)
        (let ((tempvar (make-symbol "max")))
          (edebug-` (let (((, var) (, init))
@@ -3465,7 +3465,7 @@ that calls the macro:
 
      (def-edebug-spec for
        (symbolp "from" def-form "to" def-form "do" &rest def-form))
-     
+
      (let ((n 5))
        (for i from n to (* n (+ n 1)) do
          (message "%s" i)))
@@ -3489,8 +3489,8 @@ always do this.
 \1f
 File: lispref.info,  Node: Specification Examples,  Prev: Debugging Backquote,  Up: Instrumenting Macro Calls
 
-Specification Examples
-......................
+22.4.16.4 Specification Examples
+................................
 
 Here we provide several examples of Edebug specifications to show many
 of its capabilities.
@@ -3516,13 +3516,13 @@ specially since it is actually evaluated outside of the function body.
                 [&optional stringp]        ; Match the doc string, if present.
                 [&optional ("interactive" interactive)]
                 def-body))
-     
+
      (def-edebug-spec lambda-list
        (([&rest arg]
          [&optional ["&optional" arg &rest arg]]
          &optional ["&rest" arg]
          )))
-     
+
      (def-edebug-spec interactive
        (&optional &or stringp def-form))    ; Notice: `def-form'
 
@@ -3533,7 +3533,7 @@ provided by Edebug does not support dotted lists because doing so
 causes very deep recursion that could fail.)
 
      (def-edebug-spec ` (backquote-form))  ;; alias just for clarity
-     
+
      (def-edebug-spec backquote-form
        (&or ([&or "," ",@"] &or ("quote" backquote-form) form)
             (backquote-form . [&or nil backquote-form])
@@ -3543,19 +3543,19 @@ causes very deep recursion that could fail.)
 \1f
 File: lispref.info,  Node: Edebug Options,  Prev: Instrumenting Macro Calls,  Up: Edebug
 
-Edebug Options
---------------
+22.4.17 Edebug Options
+----------------------
 
 These options affect the behavior of Edebug:
 
- - User Option: edebug-setup-hook
+ -- User Option: edebug-setup-hook
      Functions to call before Edebug is used.  Each time it is set to a
      new value, Edebug will call those functions once and then
      `edebug-setup-hook' is reset to `nil'.  You could use this to load
      up Edebug specifications associated with a package you are using
      but only when you also use Edebug.  See *Note Instrumenting::.
 
- - User Option: edebug-all-defs
+ -- User Option: edebug-all-defs
      If non-`nil', normal evaluation of any defining forms (e.g.
      `defun' and `defmacro') will instrument them for Edebug.  This
      applies to `eval-defun', `eval-region', and `eval-current-buffer'.
@@ -3565,7 +3565,7 @@ These options affect the behavior of Edebug:
      by calling `(make-local-variable 'edebug-all-defs)' in your
      `emacs-lisp-mode-hook'.  See *Note Instrumenting::.
 
- - User Option: edebug-all-forms
+ -- User Option: edebug-all-forms
      If non-`nil', normal evaluation of any forms by `eval-defun',
      `eval-region', and `eval-current-buffer' will instrument them for
      Edebug.
@@ -3573,7 +3573,7 @@ These options affect the behavior of Edebug:
      Use the command `M-x edebug-all-forms' to toggle the value of this
      option.  See *Note Instrumenting::.
 
- - User Option: edebug-save-windows
+ -- User Option: edebug-save-windows
      If non-`nil', save and restore window configuration on Edebug
      calls.  It takes some time to do this, so if your program does not
      care what happens to data about windows, you may want to set this
@@ -3586,7 +3586,7 @@ These options affect the behavior of Edebug:
      variable.  This command is bound to `W' in source code buffers.
      See *Note Edebug Display Update::.
 
- - User Option: edebug-save-displayed-buffer-points
+ -- User Option: edebug-save-displayed-buffer-points
      If non-`nil', save and restore point in all displayed buffers.
      This is necessary if you are debugging code that changes the point
      of a buffer which is displayed in a non-selected window.  If
@@ -3598,7 +3598,7 @@ These options affect the behavior of Edebug:
      so it is best to avoid it if you can.  See *Note Edebug Display
      Update::.
 
- - User Option: edebug-initial-mode
+ -- User Option: edebug-initial-mode
      If this variable is non-`nil', it specifies the initial execution
      mode for Edebug when it is first activated.  Possible values are
      `step', `next', `go', `Go-nonstop', `trace', `Trace-fast',
@@ -3606,7 +3606,7 @@ These options affect the behavior of Edebug:
 
      The default value is `step'.  See *Note Edebug Execution Modes::.
 
- - User Option: edebug-trace
+ -- User Option: edebug-trace
      Non-`nil' means display a trace of function entry and exit.
      Tracing output is displayed in a buffer named `*edebug-trace*', one
      function entry or exit per line, indented by the recursion level.
@@ -3615,7 +3615,7 @@ These options affect the behavior of Edebug:
 
      Also see `edebug-tracing'.  See *Note Tracing::.
 
- - User Option: edebug-test-coverage
+ -- User Option: edebug-test-coverage
      If non-`nil', Edebug tests coverage of all expressions debugged.
      This is done by comparing the result of each expression with the
      previous result. Coverage is considered OK if two different
@@ -3628,40 +3628,40 @@ These options affect the behavior of Edebug:
      and coverage information for a definition.  See *Note Coverage
      Testing::.
 
- - User Option: edebug-continue-kbd-macro
+ -- User Option: edebug-continue-kbd-macro
      If non-`nil', continue defining or executing any keyboard macro
      that is executing outside of Edebug.   Use this with caution since
      it is not debugged.  See *Note Edebug Execution Modes::.
 
- - User Option: edebug-print-length
+ -- User Option: edebug-print-length
      If non-`nil', bind `print-length' to this while printing results
      in Edebug.  The default value is `50'.  See *Note Printing in
      Edebug::.
 
- - User Option: edebug-print-level
+ -- User Option: edebug-print-level
      If non-`nil', bind `print-level' to this while printing results in
      Edebug.  The default value is `50'.
 
- - User Option: edebug-print-circle
+ -- User Option: edebug-print-circle
      If non-`nil', bind `print-circle' to this while printing results
      in Edebug.  The default value is `nil'.
 
- - User Option: edebug-on-error
+ -- User Option: edebug-on-error
      `debug-on-error' is bound to this while Edebug is active.  See
      *Note Trapping Errors::.
 
- - User Option: edebug-on-quit
+ -- User Option: edebug-on-quit
      `debug-on-quit' is bound to this while Edebug is active.  See
      *Note Trapping Errors::.
 
- - User Option: edebug-unwrap-results
+ -- User Option: edebug-unwrap-results
      Non-`nil' if Edebug should unwrap results of expressions.  This is
      useful when debugging macros where the results of expressions are
      instrumented expressions.  But don't do this when results might be
      circular or an infinite loop will result.  See *Note Debugging
      Backquote::.
 
- - User Option: edebug-global-break-condition
+ -- User Option: edebug-global-break-condition
      If non-`nil', an expression to test for at every stop point.  If
      the result is non-`nil', then break.  Errors are ignored.  See
      *Note Global Break Condition::.
@@ -3669,8 +3669,8 @@ These options affect the behavior of Edebug:
 \1f
 File: lispref.info,  Node: Read and Print,  Next: Minibuffers,  Prev: Debugging,  Up: Top
 
-Reading and Printing Lisp Objects
-*********************************
+23 Reading and Printing Lisp Objects
+************************************
 
 "Printing" and "reading" are the operations of converting Lisp objects
 to textual form and vice versa.  They use the printed representations
@@ -3692,8 +3692,8 @@ reading) or where to put it (if printing).
 \1f
 File: lispref.info,  Node: Streams Intro,  Next: Input Streams,  Up: Read and Print
 
-Introduction to Reading and Printing
-====================================
+23.1 Introduction to Reading and Printing
+=========================================
 
 "Reading" a Lisp object means parsing a Lisp expression in textual form
 and producing a corresponding Lisp object.  This is how Lisp programs
@@ -3733,8 +3733,8 @@ three kinds of exceptions:
 \1f
 File: lispref.info,  Node: Input Streams,  Next: Input Functions,  Prev: Streams Intro,  Up: Read and Print
 
-Input Streams
-=============
+23.2 Input Streams
+==================
 
 Most of the Lisp functions for reading text take an "input stream" as
 an argument.  The input stream specifies where or how to get the
@@ -3789,12 +3789,12 @@ where point is located before and after:
      ---------- Buffer: foo ----------
      This-!- is the contents of foo.
      ---------- Buffer: foo ----------
-     
+
      (read (get-buffer "foo"))
           => is
      (read (get-buffer "foo"))
           => the
-     
+
      ---------- Buffer: foo ----------
      This is the-!- contents of foo.
      ---------- Buffer: foo ----------
@@ -3816,7 +3816,7 @@ read is the symbol `This'.
      ---------- Buffer: foo ----------
      This is the contents of foo.
      ---------- Buffer: foo ----------
-     
+
      (setq m (set-marker (make-marker) 1 (get-buffer "foo")))
           => #<marker at 1 in foo>
      (read m)
@@ -3847,7 +3847,7 @@ character by adding it to the front of the list.
 
      (setq useless-list (append "XY()" nil))
           => (88 89 40 41)
-     
+
      (defun useless-stream (&optional unread)
        (if unread
            (setq useless-list (cons unread useless-list))
@@ -3859,7 +3859,7 @@ Now we read using the stream thus constructed:
 
      (read 'useless-stream)
           => XY
-     
+
      useless-list
           => (40 41)
 
@@ -3871,8 +3871,8 @@ point would read `()' and return `nil'.
 \1f
 File: lispref.info,  Node: Input Functions,  Next: Output Streams,  Prev: Input Streams,  Up: Read and Print
 
-Input Functions
-===============
+23.3 Input Functions
+====================
 
 This section describes the Lisp functions and variables that pertain to
 reading.
@@ -3884,12 +3884,12 @@ value of `standard-input'.
    An `end-of-file' error is signaled if reading encounters an
 unterminated list, vector, or string.
 
- - Function: read &optional stream
+ -- Function: read &optional stream
      This function reads one textual Lisp expression from STREAM,
      returning it as a Lisp object.  This is the basic Lisp input
      function.
 
- - Function: read-from-string string &optional start end
+ -- Function: read-from-string string &optional start end
      This function reads the first textual Lisp expression from the
      text in STRING.  It returns a cons cell whose CAR is that
      expression, and whose CDR is an integer giving the position of the
@@ -3907,7 +3907,7 @@ unterminated list, vector, or string.
                => ((setq x 55) . 11)
           (read-from-string "\"A short string\"")
                => ("A short string" . 16)
-          
+
           ;; Read starting at the first character.
           (read-from-string "(list 112)" 0)
                => ((list 112) . 10)
@@ -3919,15 +3919,15 @@ unterminated list, vector, or string.
           (read-from-string "(list 112)" 6 8)
                => (11 . 8)
 
- - Variable: standard-input
+ -- Variable: standard-input
      This variable holds the default input stream--the stream that
      `read' uses when the STREAM argument is `nil'.
 
 \1f
 File: lispref.info,  Node: Output Streams,  Next: Output Functions,  Prev: Input Functions,  Up: Read and Print
 
-Output Streams
-==============
+23.4 Output Streams
+===================
 
 An output stream specifies what to do with the characters produced by
 printing.  Most print functions accept an output stream as an optional
@@ -3972,10 +3972,10 @@ end, point is located directly before that same `h'.
      ---------- Buffer: foo ----------
      This is t-!-he contents of foo.
      ---------- Buffer: foo ----------
-     
+
      (print "This is the output" (get-buffer "foo"))
           => "This is the output"
-     
+
      ---------- Buffer: foo ----------
      This is t
      "This is the output"
@@ -3991,19 +3991,19 @@ of point, shown in the usual fashion, has no effect.
      ---------- Buffer: foo ----------
      "This is the -!-output"
      ---------- Buffer: foo ----------
-     
+
      m
           => #<marker at 11 in foo>
-     
+
      (print "More output for foo." m)
           => "More output for foo."
-     
+
      ---------- Buffer: foo ----------
      "This is t
      "More output for foo."
      he -!-output"
      ---------- Buffer: foo ----------
-     
+
      m
           => #<marker at 35 in foo>
 
@@ -4023,14 +4023,14 @@ order.
 
      (setq last-output nil)
           => nil
-     
+
      (defun eat-output (c)
        (setq last-output (cons c last-output)))
           => eat-output
-     
+
      (print "This is the output" 'eat-output)
           => "This is the output"
-     
+
      last-output
           => (?\n ?\" ?t ?u ?p ?t ?u ?o ?\  ?e ?h ?t
                      ?\  ?s ?i ?\  ?s ?i ?h ?T ?\" ?\n)
@@ -4048,8 +4048,8 @@ contents more clearly.
 \1f
 File: lispref.info,  Node: Output Functions,  Next: Output Variables,  Prev: Output Streams,  Up: Read and Print
 
-Output Functions
-================
+23.5 Output Functions
+=====================
 
 This section describes the Lisp functions for printing Lisp objects.
 
@@ -4083,7 +4083,7 @@ the current print operation:
 the previous section for a description of output streams.)  If STREAM
 is `nil' or omitted, it defaults to the value of `standard-output'.
 
- - Function: print object &optional stream
+ -- Function: print object &optional stream
      The `print' function is a convenient way of printing.  It outputs
      the printed representation of OBJECT to STREAM, printing in
      addition one newline before OBJECT and another after it.  Quoting
@@ -4101,7 +4101,7 @@ is `nil' or omitted, it defaults to the value of `standard-output'.
                -|
                => " came back"
 
- - Function: prin1 object &optional stream
+ -- Function: prin1 object &optional stream
      This function outputs the printed representation of OBJECT to
      STREAM.  It does not print newlines to separate output as `print'
      does, but it does use quoting characters just like `print'.  It
@@ -4113,7 +4113,7 @@ is `nil' or omitted, it defaults to the value of `standard-output'.
                -| The\ cat\ in"the hat"" came back"
                => " came back"
 
- - Function: princ object &optional stream
+ -- Function: princ object &optional stream
      This function outputs the printed representation of OBJECT to
      STREAM.  It returns OBJECT.
 
@@ -4128,14 +4128,14 @@ is `nil' or omitted, it defaults to the value of `standard-output'.
                -| The cat in the "hat"
                => " in the \"hat\""
 
- - Function: terpri &optional stream
+ -- Function: terpri &optional stream
      This function outputs a newline to STREAM.  The name stands for
      "terminate print".
 
- - Function: write-char character &optional stream
+ -- Function: write-char character &optional stream
      This function outputs CHARACTER to STREAM.  It returns CHARACTER.
 
- - Function: prin1-to-string object &optional noescape
+ -- Function: prin1-to-string object &optional noescape
      This function returns a string containing the text that `prin1'
      would have printed for the same argument.
 
@@ -4159,14 +4159,14 @@ is `nil' or omitted, it defaults to the value of `standard-output'.
 \1f
 File: lispref.info,  Node: Output Variables,  Prev: Output Functions,  Up: Read and Print
 
-Variables Affecting Output
-==========================
+23.6 Variables Affecting Output
+===============================
 
- - Variable: standard-output
+ -- Variable: standard-output
      The value of this variable is the default output stream--the stream
      that print functions use when the STREAM argument is `nil'.
 
- - Variable: print-escape-newlines
+ -- Variable: print-escape-newlines
      If this variable is non-`nil', then newline characters in strings
      are printed as `\n' and formfeeds are printed as `\f'.  Normally
      these characters are printed as actual newlines and formfeeds.
@@ -4180,7 +4180,7 @@ Variables Affecting Output
                -| b"
                => "a
           b"
-          
+
           (let ((print-escape-newlines t))
             (prin1 "a\nb"))
                -| "a\nb"
@@ -4191,7 +4191,7 @@ Variables Affecting Output
      `print-escape-newlines' is in effect during the call to `prin1',
      but not during the printing of the result.
 
- - Variable: print-readably
+ -- Variable: print-readably
      If non-`nil', then all objects will be printed in a readable form.
      If an object has no readable representation, then an error is
      signalled.  When `print-readably' is true, compiled-function
@@ -4200,7 +4200,7 @@ Variables Affecting Output
      form `(quote object)' will be written as the equivalent `'object'.
      Do not _set_ this variable; bind it instead.
 
- - Variable: print-length
+ -- Variable: print-length
      The value of this variable is the maximum number of elements of a
      list that will be printed.  If a list being printed has more than
      this many elements, it is abbreviated with an ellipsis.
@@ -4213,7 +4213,7 @@ Variables Affecting Output
                -| (1 2 ...)
                => (1 2 ...)
 
- - Variable: print-level
+ -- Variable: print-level
      The value of this variable is the maximum depth of nesting of
      parentheses and brackets when printed.  Any list or vector at a
      depth exceeding this limit is abbreviated with an ellipsis.  A
@@ -4221,12 +4221,12 @@ Variables Affecting Output
 
      This variable exists in version 19 and later versions.
 
- - Variable: print-string-length
+ -- Variable: print-string-length
      The value of this variable is the maximum number of characters of
      a string that will be printed.  If a string being printed has more
      than this many characters, it is abbreviated with an ellipsis.
 
- - Variable: print-gensym
+ -- Variable: print-gensym
      If non-`nil', then uninterned symbols will be printed specially.
      Uninterned symbols are those which are not present in `obarray',
      that is, those which were made with `make-symbol' or by calling
@@ -4243,7 +4243,7 @@ Variables Affecting Output
      for the printer to distinguish between symbols interned in no
      obarray, and symbols interned in an alternate obarray.
 
- - Variable: float-output-format
+ -- Variable: float-output-format
      This variable holds the format descriptor string that Lisp uses to
      print floats.  This is a `%'-spec like those accepted by `printf'
      in C, but with some restrictions.  It must start with the two
@@ -4274,8 +4274,8 @@ Variables Affecting Output
 \1f
 File: lispref.info,  Node: Minibuffers,  Next: Command Loop,  Prev: Read and Print,  Up: Top
 
-Minibuffers
-***********
+24 Minibuffers
+**************
 
 A "minibuffer" is a special buffer that XEmacs commands use to read
 arguments more complicated than the single numeric prefix argument.
@@ -4300,8 +4300,8 @@ for reading an argument.
 \1f
 File: lispref.info,  Node: Intro to Minibuffers,  Next: Text from Minibuffer,  Up: Minibuffers
 
-Introduction to Minibuffers
-===========================
+24.1 Introduction to Minibuffers
+================================
 
 In most ways, a minibuffer is a normal XEmacs buffer.  Most operations
 _within_ a buffer, such as editing commands, work normally in a
@@ -4344,8 +4344,8 @@ completion commands (*note Completion::).
 \1f
 File: lispref.info,  Node: Text from Minibuffer,  Next: Object from Minibuffer,  Prev: Intro to Minibuffers,  Up: Minibuffers
 
-Reading Text Strings with the Minibuffer
-========================================
+24.2 Reading Text Strings with the Minibuffer
+=============================================
 
 Most often, the minibuffer is used to read text as a string.  It can
 also be used to read a Lisp object in textual form.  The most basic
@@ -4357,7 +4357,7 @@ middle of a Lisp function.  Instead, do all minibuffer input as part of
 reading the arguments for a command, in the `interactive' spec.  *Note
 Defining Commands::.
 
- - Function: read-from-minibuffer prompt-string &optional
+ -- Function: read-from-minibuffer prompt-string &optional
           initial-contents keymap read hist abbrev-table default
      This function is the most general way to get input through the
      minibuffer.  By default, it accepts arbitrary text and returns it
@@ -4416,7 +4416,7 @@ Defining Commands::.
      from the minibuffer on other occasions.  However, if user is
      supposed to edit default value, INITIAL-CONTENTS may be preferred.
 
- - Function: read-string prompt &optional initial history default-value
+ -- Function: read-string prompt &optional initial history default-value
      This function reads a string from the minibuffer and returns it.
      The arguments PROMPT and INITIAL are used as in
      `read-from-minibuffer'.  The keymap used is `minibuffer-local-map'.
@@ -4434,7 +4434,7 @@ Defining Commands::.
           (read-from-minibuffer PROMPT INITIAL nil nil
                                 HISTORY nil DEFAULT)))
 
- - Variable: minibuffer-local-map
+ -- Variable: minibuffer-local-map
      This is the default local keymap for reading from the minibuffer.
      By default, it makes the following bindings:
 
@@ -4462,13 +4462,13 @@ Defining Commands::.
 \1f
 File: lispref.info,  Node: Object from Minibuffer,  Next: Minibuffer History,  Prev: Text from Minibuffer,  Up: Minibuffers
 
-Reading Lisp Objects with the Minibuffer
-========================================
+24.3 Reading Lisp Objects with the Minibuffer
+=============================================
 
 This section describes functions for reading Lisp objects with the
 minibuffer.
 
- - Function: read-expression prompt &optional initial history
+ -- Function: read-expression prompt &optional initial history
           default-value
      This function reads a Lisp object using the minibuffer, and
      returns it without evaluating it.  The arguments PROMPT and
@@ -4492,9 +4492,9 @@ minibuffer.
 
           (read-expression
            "Enter an expression: " (format "%s" '(testing)))
-          
+
           ;; Here is how the minibuffer is displayed:
-          
+
           ---------- Buffer: Minibuffer ----------
           Enter an expression: (testing)-!-
           ---------- Buffer: Minibuffer ----------
@@ -4502,12 +4502,12 @@ minibuffer.
      The user can type <RET> immediately to use the initial input as a
      default, or can edit the input.
 
- - Function: read-minibuffer prompt &optional initial history
+ -- Function: read-minibuffer prompt &optional initial history
           default-value
      This is a FSF Emacs compatible function.  Use `read-expression'
      instead.
 
- - Function: eval-minibuffer prompt &optional initial history
+ -- Function: eval-minibuffer prompt &optional initial history
           default-value
      This function reads a Lisp expression using the minibuffer,
      evaluates it, then returns the result.  The arguments PROMPT and
@@ -4525,7 +4525,7 @@ minibuffer.
           ==
           (eval (read-expression PROMPT INITIAL))
 
- - Function: edit-and-eval-command prompt form &optional history
+ -- Function: edit-and-eval-command prompt form &optional history
      This function reads a Lisp expression in the minibuffer, and then
      evaluates it.  The difference between this command and
      `eval-minibuffer' is that here the initial FORM is not optional
@@ -4545,10 +4545,10 @@ minibuffer.
      initial text which is a valid form already:
 
           (edit-and-eval-command "Please edit: " '(forward-word 1))
-          
+
           ;; After evaluation of the preceding expression,
           ;;   the following appears in the minibuffer:
-          
+
           ---------- Buffer: Minibuffer ----------
           Please edit: (forward-word 1)-!-
           ---------- Buffer: Minibuffer ----------
@@ -4560,8 +4560,8 @@ minibuffer.
 \1f
 File: lispref.info,  Node: Minibuffer History,  Next: Completion,  Prev: Object from Minibuffer,  Up: Minibuffers
 
-Minibuffer History
-==================
+24.4 Minibuffer History
+=======================
 
 A "minibuffer history list" records previous minibuffer inputs so the
 user can reuse them conveniently.  A history list is actually a symbol,
@@ -4601,32 +4601,32 @@ by hand when the minibuffer input functions are not using it.
 
    Here are some of the standard minibuffer history list variables:
 
- - Variable: minibuffer-history
+ -- Variable: minibuffer-history
      The default history list for minibuffer history input.
 
- - Variable: query-replace-history
+ -- Variable: query-replace-history
      A history list for arguments to `query-replace' (and similar
      arguments to other commands).
 
- - Variable: file-name-history
+ -- Variable: file-name-history
      A history list for file name arguments.
 
- - Variable: regexp-history
+ -- Variable: regexp-history
      A history list for regular expression arguments.
 
- - Variable: extended-command-history
+ -- Variable: extended-command-history
      A history list for arguments that are names of extended commands.
 
- - Variable: shell-command-history
+ -- Variable: shell-command-history
      A history list for arguments that are shell commands.
 
- - Variable: read-expression-history
+ -- Variable: read-expression-history
      A history list for arguments that are Lisp expressions to evaluate.
 
- - Variable: Info-minibuffer-history
+ -- Variable: Info-minibuffer-history
      A history list for Info mode's minibuffer.
 
- - Variable: Manual-page-minibuffer-history
+ -- Variable: Manual-page-minibuffer-history
      A history list for `manual-entry'.
 
    There are many other minibuffer history lists, defined by various
@@ -4636,8 +4636,8 @@ in discovering them.
 \1f
 File: lispref.info,  Node: Completion,  Next: Yes-or-No Queries,  Prev: Minibuffer History,  Up: Minibuffers
 
-Completion
-==========
+24.5 Completion
+===============
 
 "Completion" is a feature that fills in the rest of a name starting
 from an abbreviation for it.  Completion works by comparing the user's
@@ -4677,15 +4677,15 @@ certain kinds of names with completion.
 \1f
 File: lispref.info,  Node: Basic Completion,  Next: Minibuffer Completion,  Up: Completion
 
-Basic Completion Functions
---------------------------
+24.5.1 Basic Completion Functions
+---------------------------------
 
 The two functions `try-completion' and `all-completions' have nothing
 in themselves to do with minibuffers.  We describe them in this chapter
 so as to keep them near the higher-level completion features that do
 use the minibuffer.
 
- - Function: try-completion string collection &optional predicate
+ -- Function: try-completion string collection &optional predicate
      This function returns the longest common prefix of all possible
      completions of STRING in COLLECTION.  The value of COLLECTION must
      be an alist, an obarray, or a function that implements a virtual
@@ -4737,7 +4737,7 @@ use the minibuffer.
            "foo"
            '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4)))
                => "fooba"
-          
+
           (try-completion "foo" '(("barfoo" 2) ("foo" 3)))
                => t
 
@@ -4762,7 +4762,7 @@ use the minibuffer.
            'test)
                => "foobar"
 
- - Function: all-completions string collection &optional predicate
+ -- Function: all-completions string collection &optional predicate
      This function returns a list of all possible completions of STRING.
      The arguments to this function are the same as those of
      `try-completion'.
@@ -4777,27 +4777,27 @@ use the minibuffer.
           (defun test (s)
             (> (length (car s)) 6))
                => test
-          
+
           (all-completions
            "foo"
            '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
            'test)
                => ("foobar1" "foobar2")
 
- - Variable: completion-ignore-case
+ -- Variable: completion-ignore-case
      If the value of this variable is non-`nil', XEmacs does not
      consider case significant in completion.
 
 \1f
 File: lispref.info,  Node: Minibuffer Completion,  Next: Completion Commands,  Prev: Basic Completion,  Up: Completion
 
-Completion and the Minibuffer
------------------------------
+24.5.2 Completion and the Minibuffer
+------------------------------------
 
 This section describes the basic interface for reading from the
 minibuffer with completion.
 
- - Function: completing-read prompt collection &optional predicate
+ -- Function: completing-read prompt collection &optional predicate
           require-match initial hist default
      This function reads a string in the minibuffer, assisting the user
      by providing completion.  It activates the minibuffer with prompt
@@ -4848,10 +4848,10 @@ minibuffer with completion.
            "Complete a foo: "
            '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
            nil t "fo")
-          
+
           ;; After evaluation of the preceding expression,
           ;;   the following appears in the minibuffer:
-          
+
           ---------- Buffer: Minibuffer ----------
           Complete a foo: fo-!-
           ---------- Buffer: Minibuffer ----------
@@ -4869,13 +4869,13 @@ minibuffer with completion.
 \1f
 File: lispref.info,  Node: Completion Commands,  Next: High-Level Completion,  Prev: Minibuffer Completion,  Up: Completion
 
-Minibuffer Commands That Do Completion
---------------------------------------
+24.5.3 Minibuffer Commands That Do Completion
+---------------------------------------------
 
 This section describes the keymaps, commands and user options used in
 the minibuffer to do completion.
 
- - Variable: minibuffer-local-completion-map
+ -- Variable: minibuffer-local-completion-map
      `completing-read' uses this value as the local keymap when an
      exact match of one of the completions is not required.  By
      default, this keymap makes the following bindings:
@@ -4892,7 +4892,7 @@ the minibuffer to do completion.
      with other characters bound as in `minibuffer-local-map' (*note
      Text from Minibuffer::).
 
- - Variable: minibuffer-local-must-match-map
+ -- Variable: minibuffer-local-must-match-map
      `completing-read' uses this value as the local keymap when an
      exact match of one of the completions is required.  Therefore, no
      keys are bound to `exit-minibuffer', the command that exits the
@@ -4916,29 +4916,29 @@ the minibuffer to do completion.
 
      with other characters bound as in `minibuffer-local-map'.
 
- - Variable: minibuffer-completion-table
+ -- Variable: minibuffer-completion-table
      The value of this variable is the alist or obarray used for
      completion in the minibuffer.  This is the global variable that
      contains what `completing-read' passes to `try-completion'.  It is
      used by minibuffer completion commands such as
      `minibuffer-complete-word'.
 
- - Variable: minibuffer-completion-predicate
+ -- Variable: minibuffer-completion-predicate
      This variable's value is the predicate that `completing-read'
      passes to `try-completion'.  The variable is also used by the other
      minibuffer completion functions.
 
- - Command: minibuffer-complete-word
+ -- Command: minibuffer-complete-word
      This function completes the minibuffer contents by at most a single
      word.  Even if the minibuffer contents have only one completion,
      `minibuffer-complete-word' does not add any characters beyond the
      first character that is not a word constituent.  *Note Syntax
      Tables::.
 
- - Command: minibuffer-complete
+ -- Command: minibuffer-complete
      This function completes the minibuffer contents as far as possible.
 
- - Command: minibuffer-complete-and-exit
+ -- Command: minibuffer-complete-and-exit
      This function completes the minibuffer contents, and exits if
      confirmation is not required, i.e., if
      `minibuffer-completion-confirm' is `nil'.  If confirmation _is_
@@ -4946,13 +4946,13 @@ the minibuffer to do completion.
      command is programmed to work without confirmation when run twice
      in succession.
 
- - Variable: minibuffer-completion-confirm
+ -- Variable: minibuffer-completion-confirm
      When the value of this variable is non-`nil', XEmacs asks for
      confirmation of a completion before exiting the minibuffer.  The
      function `minibuffer-complete-and-exit' checks the value of this
      variable before it exits.
 
- - Command: minibuffer-completion-help
+ -- Command: minibuffer-completion-help
      This function creates a list of the possible completions of the
      current minibuffer contents.  It works by calling `all-completions'
      using the value of the variable `minibuffer-completion-table' as
@@ -4961,7 +4961,7 @@ the minibuffer to do completion.
      list of completions is displayed as text in a buffer named
      `*Completions*'.
 
- - Function: display-completion-list completions &rest cl-keys
+ -- Function: display-completion-list completions &rest cl-keys
      This function displays COMPLETIONS to the stream in
      `standard-output', usually a buffer.  (*Note Read and Print::, for
      more information about streams.)  The argument COMPLETIONS is
@@ -4978,7 +4978,7 @@ the minibuffer to do completion.
             (display-completion-list
               (all-completions (buffer-string) my-alist)))
 
- - User Option: completion-auto-help
+ -- User Option: completion-auto-help
      If this variable is non-`nil', the completion commands
      automatically display a list of possible completions whenever
      nothing can be completed because the next character is not
@@ -4987,8 +4987,8 @@ the minibuffer to do completion.
 \1f
 File: lispref.info,  Node: High-Level Completion,  Next: Reading File Names,  Prev: Completion Commands,  Up: Completion
 
-High-Level Completion  Functions
---------------------------------
+24.5.4 High-Level Completion  Functions
+---------------------------------------
 
 This section describes the higher-level convenient functions for
 reading certain sorts of names with completion.
@@ -4998,7 +4998,7 @@ Lisp function.  When possible, do all minibuffer input as part of
 reading the arguments for a command, in the `interactive' spec.  *Note
 Defining Commands::.
 
- - Function: read-buffer prompt &optional default existing
+ -- Function: read-buffer prompt &optional default existing
      This function reads the name of a buffer and returns it as a
      string.  The argument DEFAULT is the default name to use, the
      value to return if the user exits with an empty minibuffer.  If
@@ -5021,15 +5021,15 @@ Defining Commands::.
           ;; After evaluation of the preceding expression,
           ;;   the following prompt appears,
           ;;   with an empty minibuffer:
-          
+
           ---------- Buffer: Minibuffer ----------
           Buffer name? (default foo) -!-
           ---------- Buffer: Minibuffer ----------
-          
+
           ;; The user types `minibuffer.t <RET>'.
                => "minibuffer.texi"
 
- - Function: read-command prompt &optional default-value
+ -- Function: read-command prompt &optional default-value
      This function reads the name of a command and returns it as a Lisp
      symbol.  The argument PROMPT is used as in `read-from-minibuffer'.
      Recall that a command is anything for which `commandp' returns
@@ -5043,10 +5043,10 @@ Defining Commands::.
      user enters null input, the return value is `nil'.
 
           (read-command "Command name? ")
-          
+
           ;; After evaluation of the preceding expression,
           ;;   the following prompt appears with an empty minibuffer:
-          
+
           ---------- Buffer: Minibuffer ----------
           Command name?
           ---------- Buffer: Minibuffer ----------
@@ -5064,7 +5064,7 @@ Defining Commands::.
           (intern (completing-read PROMPT obarray
                                    'commandp t nil))
 
- - Function: read-variable prompt &optional default-value
+ -- Function: read-variable prompt &optional default-value
      This function reads the name of a user variable and returns it as a
      symbol.
 
@@ -5075,11 +5075,11 @@ Defining Commands::.
      then if the user enters null input, the return value is `nil'.
 
           (read-variable "Variable name? ")
-          
+
           ;; After evaluation of the preceding expression,
           ;;   the following prompt appears,
           ;;   with an empty minibuffer:
-          
+
           ---------- Buffer: Minibuffer ----------
           Variable name? -!-
           ---------- Buffer: Minibuffer ----------
@@ -5099,15 +5099,15 @@ Defining Commands::.
 \1f
 File: lispref.info,  Node: Reading File Names,  Next: Programmed Completion,  Prev: High-Level Completion,  Up: Completion
 
-Reading File Names
-------------------
+24.5.5 Reading File Names
+-------------------------
 
 Here is another high-level completion function, designed for reading a
 file name.  It provides special features including automatic insertion
 of the default directory.
 
- - Function: read-file-name prompt &optional directory default existing
-          initial history
+ -- Function: read-file-name prompt &optional directory default
+          existing initial history
      This function reads a file name in the minibuffer, prompting with
      PROMPT and providing completion.  If DEFAULT is non-`nil', then
      the function returns DEFAULT if the user just types <RET>.
@@ -5136,10 +5136,10 @@ of the default directory.
      Here is an example:
 
           (read-file-name "The file is ")
-          
+
           ;; After evaluation of the preceding expression,
           ;;   the following appears in the minibuffer:
-          
+
           ---------- Buffer: Minibuffer ----------
           The file is /gp/gnu/elisp/-!-
           ---------- Buffer: Minibuffer ----------
@@ -5153,7 +5153,7 @@ of the default directory.
      If the user types <RET>, `read-file-name' returns the file name as
      the string `"/gp/gnu/elisp/manual.texi"'.
 
- - User Option: insert-default-directory
+ -- User Option: insert-default-directory
      This variable is used by `read-file-name'.  Its value controls
      whether `read-file-name' starts by placing the name of the default
      directory in the minibuffer, plus the initial file name if any.
@@ -5168,16 +5168,16 @@ of the default directory.
           ;; Here the minibuffer starts out with the default directory.
           (let ((insert-default-directory t))
             (read-file-name "The file is "))
-          
+
           ---------- Buffer: Minibuffer ----------
           The file is ~lewis/manual/-!-
           ---------- Buffer: Minibuffer ----------
-          
+
           ;; Here the minibuffer is empty and only the prompt
           ;;   appears on its line.
           (let ((insert-default-directory nil))
             (read-file-name "The file is "))
-          
+
           ---------- Buffer: Minibuffer ----------
           The file is -!-
           ---------- Buffer: Minibuffer ----------
@@ -5185,8 +5185,8 @@ of the default directory.
 \1f
 File: lispref.info,  Node: Programmed Completion,  Prev: Reading File Names,  Up: Completion
 
-Programmed Completion
----------------------
+24.5.6 Programmed Completion
+----------------------------
 
 Sometimes it is not possible to create an alist or an obarray
 containing all the intended possible completions.  In such a case, you
@@ -5242,8 +5242,8 @@ File Name Completion::.
 \1f
 File: lispref.info,  Node: Yes-or-No Queries,  Next: Multiple Queries,  Prev: Completion,  Up: Minibuffers
 
-Yes-or-No Queries
-=================
+24.6 Yes-or-No Queries
+======================
 
 This section describes functions used to ask the user a yes-or-no
 question.  The function `y-or-n-p' can be answered with a single
@@ -5260,7 +5260,7 @@ question.  Otherwise, it uses keyboard input.
    Strictly speaking, `yes-or-no-p' uses the minibuffer and `y-or-n-p'
 does not; but it seems best to describe them together.
 
- - Function: y-or-n-p prompt
+ -- Function: y-or-n-p prompt
      This function asks the user a question, expecting input in the echo
      area.  It returns `t' if the user types `y', `nil' if the user
      types `n'.  This function also accepts <SPC> to mean yes and <DEL>
@@ -5290,23 +5290,23 @@ does not; but it seems best to describe them together.
      invalid.  At the next prompt the user types `y'.
 
           (y-or-n-p "Do you need a lift? ")
-          
+
           ;; After evaluation of the preceding expression,
           ;;   the following prompt appears in the echo area:
-          
+
           ---------- Echo area ----------
           Do you need a lift? (y or n)
           ---------- Echo area ----------
-          
+
           ;; If the user then types `q', the following appears:
-          
+
           ---------- Echo area ----------
           Please answer y or n.  Do you need a lift? (y or n)
           ---------- Echo area ----------
-          
+
           ;; When the user types a valid answer,
           ;;   it is displayed after the question:
-          
+
           ---------- Echo area ----------
           Do you need a lift? (y or n) y
           ---------- Echo area ----------
@@ -5314,7 +5314,7 @@ does not; but it seems best to describe them together.
      We show successive lines of echo area messages, but only one
      actually appears on the screen at a time.
 
- - Function: yes-or-no-p prompt
+ -- Function: yes-or-no-p prompt
      This function asks the user a question, expecting input in the
      minibuffer.  It returns `t' if the user enters `yes', `nil' if the
      user types `no'.  The user must type <RET> to finalize the
@@ -5331,11 +5331,11 @@ does not; but it seems best to describe them together.
      Here is an example:
 
           (yes-or-no-p "Do you really want to remove everything? ")
-          
+
           ;; After evaluation of the preceding expression,
           ;;   the following prompt appears,
           ;;   with an empty minibuffer:
-          
+
           ---------- Buffer: minibuffer ----------
           Do you really want to remove everything? (yes or no)
           ---------- Buffer: minibuffer ----------
@@ -5349,7 +5349,7 @@ does not; but it seems best to describe them together.
           Do you really want to remove everything? (yes or no)
           ---------- Buffer: minibuffer ----------
 
- - Function: yes-or-no-p-dialog-box prompt
+ -- Function: yes-or-no-p-dialog-box prompt
      This function asks the user a "y or n" question with a popup dialog
      box.  It returns `t' if the answer is "yes".  PROMPT is the string
      to display to ask the question.
@@ -5361,19 +5361,19 @@ running on a window system, the functions `y-or-n-p' and `yes-or-no-p'
 are replaced with the following functions, so that menu items bring up
 dialog boxes instead of minibuffer questions.
 
- - Function: y-or-n-p-maybe-dialog-box prompt
+ -- Function: y-or-n-p-maybe-dialog-box prompt
      This function asks user a "y or n" question, using either a dialog
      box or the minibuffer, as appropriate.
 
- - Function: yes-or-no-p-maybe-dialog-box prompt
+ -- Function: yes-or-no-p-maybe-dialog-box prompt
      This function asks user a "yes or no" question, using either a
      dialog box or the minibuffer, as appropriate.
 
 \1f
 File: lispref.info,  Node: Multiple Queries,  Next: Reading a Password,  Prev: Yes-or-No Queries,  Up: Minibuffers
 
-Asking Multiple Y-or-N Questions
-================================
+24.7 Asking Multiple Y-or-N Questions
+=====================================
 
 When you have a series of similar questions to ask, such as "Do you
 want to save this buffer" for each buffer in turn, you should use
@@ -5381,7 +5381,7 @@ want to save this buffer" for each buffer in turn, you should use
 each question individually.  This gives the user certain convenient
 facilities such as the ability to answer the whole series at once.
 
- - Function: map-y-or-n-p prompter actor list &optional help
+ -- Function: map-y-or-n-p prompter actor list &optional help
           action-alist
      This function, new in Emacs 19, asks the user a series of
      questions, reading a single-character answer in the echo area for
@@ -5459,13 +5459,13 @@ facilities such as the ability to answer the whole series at once.
 \1f
 File: lispref.info,  Node: Reading a Password,  Next: Minibuffer Misc,  Prev: Multiple Queries,  Up: Minibuffers
 
-Reading a Password
-==================
+24.8 Reading a Password
+=======================
 
 To read a password to pass to another program, you can use the function
 `read-passwd'.
 
- - Function: read-passwd prompt &optional confirm default
+ -- Function: read-passwd prompt &optional confirm default
      This function reads a password, prompting with PROMPT.  It does
      not echo the password as the user types it; instead, it echoes `.'
      for each character in the password.
@@ -5480,84 +5480,84 @@ To read a password to pass to another program, you can use the function
      and inserted in the minibuffer. If DEFAULT is `nil', then
      `read-passwd' returns the null string in that case.
 
- - User Option: passwd-invert-frame-when-keyboard-grabbed
+ -- User Option: passwd-invert-frame-when-keyboard-grabbed
      If non-`nil', swap the foreground and background colors of all
      faces while reading a password.  Default values is `t', unless
      feature `infodock' is provided.
 
- - User Option: passwd-echo
+ -- User Option: passwd-echo
      This specifies the character echoed when typing a password.  When
      `nil', nothing is echoed.
 
 \1f
 File: lispref.info,  Node: Minibuffer Misc,  Prev: Reading a Password,  Up: Minibuffers
 
-Minibuffer Miscellany
-=====================
+24.9 Minibuffer Miscellany
+==========================
 
 This section describes some basic functions and variables related to
 minibuffers.
 
- - Command: exit-minibuffer
+ -- Command: exit-minibuffer
      This command exits the active minibuffer.  It is normally bound to
      keys in minibuffer local keymaps.
 
- - Command: self-insert-and-exit
+ -- Command: self-insert-and-exit
      This command exits the active minibuffer after inserting the last
      character typed on the keyboard (found in `last-command-char';
      *note Command Loop Info::).
 
- - Command: previous-history-element n
+ -- Command: previous-history-element n
      This command replaces the minibuffer contents with the value of the
      Nth previous (older) history element.
 
- - Command: next-history-element n
+ -- Command: next-history-element n
      This command replaces the minibuffer contents with the value of the
      Nth more recent history element.
 
- - Command: previous-matching-history-element pattern
+ -- Command: previous-matching-history-element pattern
      This command replaces the minibuffer contents with the value of the
      previous (older) history element that matches PATTERN (a regular
      expression).
 
- - Command: next-matching-history-element pattern
+ -- Command: next-matching-history-element pattern
      This command replaces the minibuffer contents with the value of
      the next (newer) history element that matches PATTERN (a regular
      expression).
 
- - Function: minibuffer-prompt
+ -- Function: minibuffer-prompt
      This function returns the prompt string of the currently active
      minibuffer.  If no minibuffer is active, it returns `nil'.
 
- - Function: minibuffer-prompt-width
+ -- Function: minibuffer-prompt-width
      This function returns the display width of the prompt string of the
      currently active minibuffer.  If no minibuffer is active, it
      returns 0.
 
- - Variable: minibuffer-setup-hook
+ -- Variable: minibuffer-setup-hook
      This is a normal hook that is run whenever the minibuffer is
      entered.  *Note Hooks::.
 
- - Variable: minibuffer-exit-hook
+ -- Variable: minibuffer-exit-hook
      This is a normal hook that is run whenever the minibuffer is
      exited.  *Note Hooks::.
 
- - Variable: minibuffer-help-form
+ -- Variable: minibuffer-help-form
      The current value of this variable is used to rebind `help-form'
      locally inside the minibuffer (*note Help Functions::).
 
- - Function: active-minibuffer-window
+ -- Function: active-minibuffer-window
      This function returns the currently active minibuffer window, or
      `nil' if none is currently active.
 
- - Function: minibuffer-window &optional frame
+ -- Function: minibuffer-window &optional frame
      This function returns the minibuffer window used for frame FRAME.
      If FRAME is `nil', that stands for the current frame.  Note that
      the minibuffer window used by a frame need not be part of that
      frame--a frame that has no minibuffer of its own necessarily uses
      some other frame's minibuffer window.
 
- - Function: window-minibuffer-p &optional window
+ -- Function: window-minibuffer-p &optional window
      This function returns non-`nil' if WINDOW is a minibuffer window.
 
    It is not correct to determine whether a given window is a
@@ -5565,11 +5565,11 @@ minibuffer by comparing it with the result of `(minibuffer-window)',
 because there can be more than one minibuffer window if there is more
 than one frame.
 
- - Function: minibuffer-window-active-p window
+ -- Function: minibuffer-window-active-p window
      This function returns non-`nil' if WINDOW, assumed to be a
      minibuffer window, is currently active.
 
- - Variable: minibuffer-scroll-window
+ -- Variable: minibuffer-scroll-window
      If the value of this variable is non-`nil', it should be a window
      object.  When the function `scroll-other-window' is called in the
      minibuffer, it scrolls this window.
@@ -5577,12 +5577,12 @@ than one frame.
    Finally, some functions and variables deal with recursive minibuffers
 (*note Recursive Editing::):
 
- - Function: minibuffer-depth
+ -- Function: minibuffer-depth
      This function returns the current depth of activations of the
      minibuffer, a nonnegative integer.  If no minibuffers are active,
      it returns zero.
 
- - User Option: enable-recursive-minibuffers
+ -- User Option: enable-recursive-minibuffers
      If this variable is non-`nil', you can invoke commands (such as
      `find-file') that use minibuffers even while the minibuffer window
      is active.  Such invocation produces a recursive editing level for
@@ -5609,8 +5609,8 @@ the definition of `next-matching-history-element' in `lisp/minibuf.el'.
 \1f
 File: lispref.info,  Node: Command Loop,  Next: Keymaps,  Prev: Minibuffers,  Up: Top
 
-Command Loop
-************
+25 Command Loop
+***************
 
 When you run XEmacs, it enters the "editor command loop" almost
 immediately.  This loop reads events, executes their definitions, and
@@ -5637,8 +5637,8 @@ are done, and the subroutines that allow Lisp programs to do them.
 \1f
 File: lispref.info,  Node: Command Overview,  Next: Defining Commands,  Up: Command Loop
 
-Command Loop Overview
-=====================
+25.1 Command Loop Overview
+==========================
 
 The command loop in XEmacs is a standard event loop, reading events one
 at a time with `next-event' and handling them with `dispatch-event'.
@@ -5680,13 +5680,13 @@ yourself (*note Keyboard Macros::).
    To terminate the execution of a running command, type `C-g'.  This
 character causes "quitting" (*note Quitting::).
 
- - Variable: pre-command-hook
+ -- Variable: pre-command-hook
      The editor command loop runs this normal hook before each command.
      At that time, `this-command' contains the command that is about to
      run, and `last-command' describes the previous command.  *Note
      Hooks::.
 
- - Variable: post-command-hook
+ -- Variable: post-command-hook
      The editor command loop runs this normal hook after each command.
      (In FSF Emacs, it is also run when the command loop is entered, or
      reentered after an error or quit.)  At that time, `this-command'
@@ -5700,8 +5700,8 @@ hooks, it terminates execution of the hook, but that is all it does.
 \1f
 File: lispref.info,  Node: Defining Commands,  Next: Interactive Call,  Prev: Command Overview,  Up: Command Loop
 
-Defining Commands
-=================
+25.2 Defining Commands
+======================
 
 A Lisp function becomes a command when its body contains, at top level,
 a form that calls the special form `interactive'.  This form does
@@ -5719,13 +5719,13 @@ the reading of arguments for an interactive call.
 \1f
 File: lispref.info,  Node: Using Interactive,  Next: Interactive Codes,  Up: Defining Commands
 
-Using `interactive'
--------------------
+25.2.1 Using `interactive'
+--------------------------
 
 This section describes how to write the `interactive' form that makes a
 Lisp function an interactively-callable command.
 
- - Special Form: interactive arg-descriptor
+ -- Special Form: interactive arg-descriptor
      This special form declares that the function in which it appears
      is a command, and that it may therefore be called interactively
      (via `M-x' or by entering a key sequence bound to it).  The
@@ -5751,7 +5751,7 @@ Lisp function an interactively-callable command.
 
    * It may be a Lisp expression that is not a string; then it should
      be a form that is evaluated to get a list of arguments to pass to
-     the command.
+     the command.  
 
      If this expression reads keyboard input (this includes using the
      minibuffer), keep in mind that the integer value of point or the
@@ -5816,7 +5816,7 @@ Lisp function an interactively-callable command.
      prompt string (starting with the first character that is not `*',
      `@', or `_').
 
- - Function: function-interactive function
+ -- Function: function-interactive function
      This function retrieves the interactive specification of FUNCTION,
      which may be any funcallable object.  The specification will be
      returned as the list of the symbol `interactive' and the specs.  If
@@ -5825,8 +5825,8 @@ Lisp function an interactively-callable command.
 \1f
 File: lispref.info,  Node: Interactive Codes,  Next: Interactive Examples,  Prev: Using Interactive,  Up: Defining Commands
 
-Code Characters for `interactive'
----------------------------------
+25.2.2 Code Characters for `interactive'
+----------------------------------------
 
 The code character descriptions below contain a number of key words,
 defined here as follows:
@@ -5995,8 +5995,8 @@ Special
 \1f
 File: lispref.info,  Node: Interactive Examples,  Prev: Interactive Codes,  Up: Defining Commands
 
-Examples of Using `interactive'
--------------------------------
+25.2.3 Examples of Using `interactive'
+--------------------------------------
 
 Here are some examples of `interactive':
 
@@ -6004,17 +6004,17 @@ Here are some examples of `interactive':
          (interactive)           ;   just moves forward two words.
          (forward-word 2))
           => foo1
-     
+
      (defun foo2 (n)             ; `foo2' takes one argument,
          (interactive "p")       ;   which is the numeric prefix.
          (forward-word (* 2 n)))
           => foo2
-     
+
      (defun foo3 (n)             ; `foo3' takes one argument,
          (interactive "nCount:") ;   which is read with the Minibuffer.
          (forward-word (* 2 n)))
           => foo3
-     
+
      (defun three-b (b1 b2 b3)
        "Select three existing buffers.
      Put them into three windows, selecting the last one."
@@ -6034,8 +6034,8 @@ Here are some examples of `interactive':
 \1f
 File: lispref.info,  Node: Interactive Call,  Next: Command Loop Info,  Prev: Defining Commands,  Up: Command Loop
 
-Interactive Call
-================
+25.3 Interactive Call
+=====================
 
 After the command loop has translated a key sequence into a definition,
 it invokes that definition using the function `command-execute'.  If
@@ -6043,7 +6043,7 @@ the definition is a function that is a command, `command-execute' calls
 `call-interactively', which reads the arguments and calls the command.
 You can also call these functions yourself.
 
- - Function: commandp function
+ -- Function: commandp function
      Returns `t' if FUNCTION is suitable for calling interactively;
      that is, if FUNCTION is a command.  Otherwise, returns `nil'.
 
@@ -6062,7 +6062,7 @@ You can also call these functions yourself.
      See `documentation' in *Note Accessing Documentation::, for a
      realistic example of using `commandp'.
 
- - Function: call-interactively command &optional record-flag keys
+ -- Function: call-interactively command &optional record-flag keys
      This function calls the interactively callable function COMMAND,
      reading arguments according to its interactive calling
      specifications.  An error is signaled if COMMAND is not a function
@@ -6080,7 +6080,7 @@ You can also call these functions yourself.
      the command is added only if it uses the minibuffer to read an
      argument.  *Note Command History::.
 
- - Function: command-execute command &optional record-flag keys
+ -- Function: command-execute command &optional record-flag keys
      This function executes COMMAND as an editing command.  The
      argument COMMAND must satisfy the `commandp' predicate; i.e., it
      must be an interactively callable function or a keyboard macro.
@@ -6095,7 +6095,7 @@ You can also call these functions yourself.
      Such a definition is handled by loading the specified library and
      then rechecking the definition of the symbol.
 
- - Command: execute-extended-command prefix-argument
+ -- Command: execute-extended-command prefix-argument
      This function reads a command name from the minibuffer using
      `completing-read' (*note Completion::).  Then it uses
      `command-execute' to call the specified command.  Whatever that
@@ -6119,7 +6119,7 @@ You can also call these functions yourself.
           ---------- Buffer: Minibuffer ----------
                => t
 
- - Function: interactive-p
+ -- Function: interactive-p
      This function returns `t' if the containing function (the one that
      called `interactive-p') was called interactively, with the function
      `call-interactively'.  (It makes no difference whether
@@ -6141,31 +6141,31 @@ You can also call these functions yourself.
             (and (interactive-p)
                  (message "foo")))
                => foo
-          
+
           (defun bar ()
             (interactive)
             (setq foobar (list (foo) (interactive-p))))
                => bar
-          
+
           ;; Type `M-x foo'.
                -| foo
-          
+
           ;; Type `M-x bar'.
           ;; This does not print anything.
-          
+
           foobar
                => (nil t)
 
 \1f
 File: lispref.info,  Node: Command Loop Info,  Next: Events,  Prev: Interactive Call,  Up: Command Loop
 
-Information from the Command Loop
-=================================
+25.4 Information from the Command Loop
+======================================
 
 The editor command loop sets several Lisp variables to keep status
 records for itself and for commands that are run.
 
- - Variable: last-command
+ -- Variable: last-command
      This variable records the name of the previous command executed by
      the command loop (the one before the current command).  Normally
      the value is a symbol with a function definition, but this is not
@@ -6175,7 +6175,7 @@ records for itself and for commands that are run.
      the command loop, except when the command specifies a prefix
      argument for the following command.
 
- - Variable: this-command
+ -- Variable: this-command
      This variable records the name of the command now being executed by
      the editor command loop.  Like `last-command', it is normally a
      symbol with a function definition.
@@ -6204,7 +6204,7 @@ value at the end, like this:
          ...do the work...
          (setq this-command old-this-command)))
 
- - Function: this-command-keys
+ -- Function: this-command-keys
      This function returns a vector containing the key and mouse events
      that invoked the present command, plus any previous commands that
      generated the prefix argument for this command. (Note: this is not
@@ -6218,7 +6218,7 @@ value at the end, like this:
           ;; Now use `C-u C-x C-e' to evaluate that.
                => [#<keypress-event control-U> #<keypress-event control-X> #<keypress-event control-E>]
 
- - Variable: last-command-event
+ -- Variable: last-command-event
      This variable is set to the last input event that was read by the
      command loop as part of a command.  The principal use of this
      variable is in `self-insert-command', which uses it to decide which
@@ -6236,7 +6236,7 @@ value at the end, like this:
           ;; Now type `C-u C-x C-e'.
                => #<keypress-event control-E>
 
- - Variable: last-command-char
+ -- Variable: last-command-char
      If the value of `last-command-event' is a keyboard event, then this
      is the nearest character equivalent to it (or `nil' if there is no
      character equivalent).  `last-command-char' is the character that
@@ -6256,11 +6256,11 @@ value at the end, like this:
                => ?\^E
 
 
- - Variable: current-mouse-event
+ -- Variable: current-mouse-event
      This variable holds the mouse-button event which invoked this
      command, or `nil'.  This is what `(interactive "e")' returns.
 
- - Variable: echo-keystrokes
+ -- Variable: echo-keystrokes
      This variable determines how much time should elapse before command
      characters echo.  Its value must be an integer, which specifies the
      number of seconds to wait before echoing.  If the user types a
@@ -6273,8 +6273,8 @@ value at the end, like this:
 \1f
 File: lispref.info,  Node: Events,  Next: Reading Input,  Prev: Command Loop Info,  Up: Command Loop
 
-Events
-======
+25.5 Events
+===========
 
 The XEmacs command loop reads a sequence of "events" that represent
 keyboard or mouse activity.  Unlike in Emacs 18 and in FSF Emacs,
@@ -6291,7 +6291,7 @@ command binding of the key sequence.
    For information about how exactly the XEmacs command loop works,
 *Note Reading Input::.
 
- - Function: eventp object
+ -- Function: eventp object
      This function returns non-`nil' if OBJECT is an input event.
 
 * Menu:
@@ -6311,8 +6311,8 @@ command binding of the key sequence.
 \1f
 File: lispref.info,  Node: Event Types,  Next: Event Contents,  Up: Events
 
-Event Types
------------
+25.5.1 Event Types
+------------------
 
 Events represent keyboard or mouse activity or status changes of various
 sorts, such as process input being available or a timeout being
@@ -6364,8 +6364,8 @@ eval event
 \1f
 File: lispref.info,  Node: Event Contents,  Next: Event Predicates,  Prev: Event Types,  Up: Events
 
-Contents of the Different Types of Events
------------------------------------------
+25.5.2 Contents of the Different Types of Events
+------------------------------------------------
 
 Every event, no matter what type it is, contains a timestamp (which is
 typically an offset in milliseconds from when the X server was started)
@@ -6497,7 +6497,7 @@ eval event
           The object to pass to the function.  The function and object
           are set when the event is created.
 
- - Function: event-type event
+ -- Function: event-type event
      Return the type of EVENT.
 
      This will be a symbol; one of
@@ -6533,52 +6533,52 @@ eval event
 \1f
 File: lispref.info,  Node: Event Predicates,  Next: Accessing Mouse Event Positions,  Prev: Event Contents,  Up: Events
 
-Event Predicates
-----------------
+25.5.3 Event Predicates
+-----------------------
 
 The following predicates return whether an object is an event of a
 particular type.
 
- - Function: key-press-event-p object
+ -- Function: key-press-event-p object
      This is true if OBJECT is a key-press event.
 
- - Function: button-event-p object
+ -- Function: button-event-p object
      This is true if OBJECT is a mouse button-press or button-release
      event.
 
- - Function: button-press-event-p object
+ -- Function: button-press-event-p object
      This is true if OBJECT is a mouse button-press event.
 
- - Function: button-release-event-p object
+ -- Function: button-release-event-p object
      This is true if OBJECT is a mouse button-release event.
 
- - Function: motion-event-p object
+ -- Function: motion-event-p object
      This is true if OBJECT is a mouse motion event.
 
- - Function: mouse-event-p object
+ -- Function: mouse-event-p object
      This is true if OBJECT is a mouse button-press, button-release or
      motion event.
 
- - Function: eval-event-p object
+ -- Function: eval-event-p object
      This is true if OBJECT is an eval event.
 
- - Function: misc-user-event-p object
+ -- Function: misc-user-event-p object
      This is true if OBJECT is a misc-user event.
 
- - Function: process-event-p object
+ -- Function: process-event-p object
      This is true if OBJECT is a process event.
 
- - Function: timeout-event-p object
+ -- Function: timeout-event-p object
      This is true if OBJECT is a timeout event.
 
- - Function: event-live-p object
+ -- Function: event-live-p object
      This is true if OBJECT is any event that has not been deallocated.
 
 \1f
 File: lispref.info,  Node: Accessing Mouse Event Positions,  Next: Accessing Other Event Info,  Prev: Event Predicates,  Up: Events
 
-Accessing the Position of a Mouse Event
----------------------------------------
+25.5.4 Accessing the Position of a Mouse Event
+----------------------------------------------
 
 Unlike other events, mouse events (i.e. motion, button-press,
 button-release, and drag or drop type misc-user events) occur in a
@@ -6598,24 +6598,24 @@ location.
 \1f
 File: lispref.info,  Node: Frame-Level Event Position Info,  Next: Window-Level Event Position Info,  Up: Accessing Mouse Event Positions
 
-Frame-Level Event Position Info
-...............................
+25.5.4.1 Frame-Level Event Position Info
+........................................
 
 The following functions return frame-level information about where a
 mouse event occurred.
 
- - Function: event-frame event
+ -- Function: event-frame event
      This function returns the "channel" or frame that the given mouse
      motion, button press, button release, or misc-user event occurred
      in.  This will be `nil' for non-mouse events.
 
- - Function: event-x-pixel event
+ -- Function: event-x-pixel event
      This function returns the X position in pixels of the given mouse
      event.  The value returned is relative to the frame the event
      occurred in.  This will signal an error if the event is not a
      mouse event.
 
- - Function: event-y-pixel event
+ -- Function: event-y-pixel event
      This function returns the Y position in pixels of the given mouse
      event.  The value returned is relative to the frame the event
      occurred in.  This will signal an error if the event is not a
@@ -6624,20 +6624,20 @@ mouse event occurred.
 \1f
 File: lispref.info,  Node: Window-Level Event Position Info,  Next: Event Text Position Info,  Prev: Frame-Level Event Position Info,  Up: Accessing Mouse Event Positions
 
-Window-Level Event Position Info
-................................
+25.5.4.2 Window-Level Event Position Info
+.........................................
 
 The following functions return window-level information about where a
 mouse event occurred.
 
- - Function: event-window event
+ -- Function: event-window event
      Given a mouse motion, button press, button release, or misc-user
      event, compute and return the window on which that event occurred.
      This may be `nil' if the event occurred in the border or over a
      toolbar.  The modeline is considered to be within the window it
      describes.
 
- - Function: event-buffer event
+ -- Function: event-buffer event
      Given a mouse motion, button press, button release, or misc-user
      event, compute and return the buffer of the window on which that
      event occurred.  This may be `nil' if the event occurred in the
@@ -6646,13 +6646,13 @@ mouse event occurred.
      `event-window' and then calling `window-buffer' on the result if
      it is a window.
 
- - Function: event-window-x-pixel event
+ -- Function: event-window-x-pixel event
      This function returns the X position in pixels of the given mouse
      event.  The value returned is relative to the window the event
      occurred in.  This will signal an error if the event is not a
      mouse-motion, button-press, button-release, or misc-user event.
 
- - Function: event-window-y-pixel event
+ -- Function: event-window-y-pixel event
      This function returns the Y position in pixels of the given mouse
      event.  The value returned is relative to the window the event
      occurred in.  This will signal an error if the event is not a
@@ -6661,41 +6661,41 @@ mouse event occurred.
 \1f
 File: lispref.info,  Node: Event Text Position Info,  Next: Event Glyph Position Info,  Prev: Window-Level Event Position Info,  Up: Accessing Mouse Event Positions
 
-Event Text Position Info
-........................
+25.5.4.3 Event Text Position Info
+.................................
 
 The following functions return information about the text (including the
 modeline) that a mouse event occurred over or near.
 
- - Function: event-over-text-area-p event
+ -- Function: event-over-text-area-p event
      Given a mouse-motion, button-press, button-release, or misc-user
      event, this function returns `t' if the event is over the text
      area of a window.  Otherwise, `nil' is returned.  The modeline is
      not considered to be part of the text area.
 
- - Function: event-over-modeline-p event
+ -- Function: event-over-modeline-p event
      Given a mouse-motion, button-press, button-release, or misc-user
      event, this function returns `t' if the event is over the modeline
      of a window.  Otherwise, `nil' is returned.
 
- - Function: event-x event
+ -- Function: event-x event
      This function returns the X position of the given mouse-motion,
      button-press, button-release, or misc-user event in characters.
      This is relative to the window the event occurred over.
 
- - Function: event-y event
+ -- Function: event-y event
      This function returns the Y position of the given mouse-motion,
      button-press, button-release, or misc-user event in characters.
      This is relative to the window the event occurred over.
 
- - Function: event-point event
+ -- Function: event-point event
      This function returns the character position of the given
      mouse-motion, button-press, button-release, or misc-user event.
      If the event did not occur over a window, or did not occur over
      text, then this returns `nil'.  Otherwise, it returns an index
      into the buffer visible in the event's window.
 
- - Function: event-closest-point event
+ -- Function: event-closest-point event
      This function returns the character position of the given
      mouse-motion, button-press, button-release, or misc-user event.
      If the event did not occur over a window or over text, it returns
@@ -6712,29 +6712,29 @@ modeline) that a mouse event occurred over or near.
 \1f
 File: lispref.info,  Node: Event Glyph Position Info,  Next: Event Toolbar Position Info,  Prev: Event Text Position Info,  Up: Accessing Mouse Event Positions
 
-Event Glyph Position Info
-.........................
+25.5.4.4 Event Glyph Position Info
+..................................
 
 The following functions return information about the glyph (if any) that
 a mouse event occurred over.
 
- - Function: event-over-glyph-p event
+ -- Function: event-over-glyph-p event
      Given a mouse-motion, button-press, button-release, or misc-user
      event, this function returns `t' if the event is over a glyph.
      Otherwise, `nil' is returned.
 
- - Function: event-glyph-extent event
+ -- Function: event-glyph-extent event
      If the given mouse-motion, button-press, button-release, or
      misc-user event happened on top of a glyph, this returns its
      extent; else `nil' is returned.
 
- - Function: event-glyph-x-pixel event
+ -- Function: event-glyph-x-pixel event
      Given a mouse-motion, button-press, button-release, or misc-user
      event over a glyph, this function returns the X position of the
      pointer relative to the upper left of the glyph.  If the event is
      not over a glyph, it returns `nil'.
 
- - Function: event-glyph-y-pixel event
+ -- Function: event-glyph-y-pixel event
      Given a mouse-motion, button-press, button-release, or misc-user
      event over a glyph, this function returns the Y position of the
      pointer relative to the upper left of the glyph.  If the event is
@@ -6743,15 +6743,15 @@ a mouse event occurred over.
 \1f
 File: lispref.info,  Node: Event Toolbar Position Info,  Next: Other Event Position Info,  Prev: Event Glyph Position Info,  Up: Accessing Mouse Event Positions
 
-Event Toolbar Position Info
-...........................
+25.5.4.5 Event Toolbar Position Info
+....................................
 
- - Function: event-over-toolbar-p event
+ -- Function: event-over-toolbar-p event
      Given a mouse-motion, button-press, button-release, or misc-user
      event, this function returns `t' if the event is over a toolbar.
      Otherwise, `nil' is returned.
 
- - Function: event-toolbar-button event
+ -- Function: event-toolbar-button event
      If the given mouse-motion, button-press, button-release, or
      misc-user event happened on top of a toolbar button, this function
      returns the button.  Otherwise, `nil' is returned.
@@ -6759,10 +6759,10 @@ Event Toolbar Position Info
 \1f
 File: lispref.info,  Node: Other Event Position Info,  Prev: Event Toolbar Position Info,  Up: Accessing Mouse Event Positions
 
-Other Event Position Info
-.........................
+25.5.4.6 Other Event Position Info
+..................................
 
- - Function: event-over-border-p event
+ -- Function: event-over-border-p event
      Given a mouse-motion, button-press, button-release, or misc-user
      event, this function returns `t' if the event is over an internal
      toolbar.  Otherwise, `nil' is returned.
@@ -6770,52 +6770,52 @@ Other Event Position Info
 \1f
 File: lispref.info,  Node: Accessing Other Event Info,  Next: Working With Events,  Prev: Accessing Mouse Event Positions,  Up: Events
 
-Accessing the Other Contents of Events
---------------------------------------
+25.5.5 Accessing the Other Contents of Events
+---------------------------------------------
 
 The following functions allow access to the contents of events other
 than the position info described in the previous section.
 
- - Function: event-timestamp event
+ -- Function: event-timestamp event
      This function returns the timestamp of the given event object.
 
- - Function: event-device event
+ -- Function: event-device event
      This function returns the device that the given event occurred on.
 
- - Function: event-key event
+ -- Function: event-key event
      This function returns the Keysym of the given key-press event.
      This will be the ASCII code of a printing character, or a symbol.
 
- - Function: event-button event
+ -- Function: event-button event
      This function returns the button-number of the given button-press
      or button-release event.
 
- - Function: event-modifiers event
+ -- Function: event-modifiers event
      This function returns a list of symbols, the names of the modifier
      keys which were down when the given mouse or keyboard event was
      produced.
 
- - Function: event-modifier-bits event
+ -- Function: event-modifier-bits event
      This function returns a number representing the modifier keys
      which were down when the given mouse or keyboard event was
      produced.
 
- - Function: event-function event
+ -- Function: event-function event
      This function returns the callback function of the given timeout,
      misc-user, or eval event.
 
- - Function: event-object event
+ -- Function: event-object event
      This function returns the callback function argument of the given
      timeout, misc-user, or eval event.
 
- - Function: event-process event
+ -- Function: event-process event
      This function returns the process of the given process event.
 
 \1f
 File: lispref.info,  Node: Working With Events,  Next: Converting Events,  Prev: Accessing Other Event Info,  Up: Events
 
-Working With Events
--------------------
+25.5.6 Working With Events
+--------------------------
 
 XEmacs provides primitives for creating, copying, and destroying event
 objects.  Many functions that return events take an event object as an
@@ -6823,7 +6823,7 @@ argument and fill in the fields of this event; or they make accept
 either an event object or `nil', creating the event object first in the
 latter case.
 
- - Function: make-event &optional type plist
+ -- Function: make-event &optional type plist
      This function creates a new event structure.  If no arguments are
      specified, the created event will be empty.  To specify the event
      type, use the TYPE argument.  The allowed types are `empty',
@@ -6889,32 +6889,32 @@ latter case.
           ;; Create an empty event.
           (make-event)
                => #<empty-event>
-          
+
           ;; Try creating a key-press event.
           (make-event 'key-press)
                error--> Undefined key for keypress event
-          
+
           ;; Creating a key-press event, try 2
           (make-event 'key-press '(key home))
                => #<keypress-event home>
-          
+
           ;; Create a key-press event of dubious fame.
           (make-event 'key-press '(key escape modifiers (meta alt control shift)))
                => #<keypress-event control-meta-alt-shift-escape>
-          
+
           ;; Create a M-button1 event at coordinates defined by variables
           ;; X and Y.
           (make-event 'button-press `(button 1 modifiers (meta) x ,x y ,y))
                => #<buttondown-event meta-button1>
-          
+
           ;; Create a similar button-release event.
           (make-event 'button-release `(button 1 modifiers (meta) x ,x y ,x))
                => #<buttonup-event meta-button1up>
-          
+
           ;; Create a mouse-motion event.
           (make-event 'motion '(x 20 y 30))
                => #<motion-event 20, 30>
-          
+
           (event-properties (make-event 'motion '(x 20 y 30)))
                => (channel #<x-frame "emacs" 0x8e2> x 20 y 30
                    modifiers nil timestamp 0)
@@ -6938,13 +6938,13 @@ latter case.
                       (append '(modifiers nil)
                               (event-properties EVENT)))
 
- - Function: copy-event event1 &optional event2
+ -- Function: copy-event event1 &optional event2
      This function makes a copy of the event object EVENT1.  If a
      second event argument EVENT2 is given, EVENT1 is copied into
      EVENT2 and EVENT2 is returned.  If EVENT2 is not supplied (or is
      `nil') then a new event will be made, as with `make-event'.
 
- - Function: deallocate-event event
+ -- Function: deallocate-event event
      This function allows the given event structure to be reused.  You
      *MUST NOT* use this event object after calling this function with
      it.  You will lose.  It is not necessary to call this function, as
@@ -6955,15 +6955,15 @@ latter case.
 \1f
 File: lispref.info,  Node: Converting Events,  Prev: Working With Events,  Up: Events
 
-Converting Events
------------------
+25.5.7 Converting Events
+------------------------
 
 XEmacs provides some auxiliary functions for converting between events
 and other ways of representing keys.  These are useful when working with
 ASCII strings and with keymaps.
 
- - Function: character-to-event key-description &optional event console
-          use-console-meta-flag
+ -- Function: character-to-event key-description &optional event
+          console use-console-meta-flag
      This function converts a keystroke description to an event
      structure.  KEY-DESCRIPTION is the specification of a key stroke,
      and EVENT is the event object to fill in.  This function contains
@@ -6993,7 +6993,7 @@ ASCII strings and with keymaps.
      strictly inverse functions, since events contain much more
      information than the ASCII character set can encode.
 
- - Function: event-to-character event &optional allow-extra-modifiers
+ -- Function: event-to-character event &optional allow-extra-modifiers
           allow-meta allow-non-ascii
      This function returns the closest ASCII approximation to EVENT.
      If the event isn't a keypress, this returns `nil'.
@@ -7019,7 +7019,7 @@ ASCII strings and with keymaps.
      ambiguous, as both use the high bit; <M-x> and <oslash> will be
      indistinguishable.
 
- - Function: events-to-keys events &optional no-mice
+ -- Function: events-to-keys events &optional no-mice
      Given a vector of event objects, this function returns a vector of
      key descriptors, or a string (if they all fit in the ASCII range).
      Optional arg NO-MICE means that button events are not allowed.
@@ -7027,8 +7027,8 @@ ASCII strings and with keymaps.
 \1f
 File: lispref.info,  Node: Reading Input,  Next: Waiting,  Prev: Events,  Up: Command Loop
 
-Reading Input
-=============
+25.6 Reading Input
+==================
 
 The editor command loop reads keyboard input using the function
 `next-event' and constructs key sequences out of the events using
@@ -7052,14 +7052,14 @@ terminal input.
 \1f
 File: lispref.info,  Node: Key Sequence Input,  Next: Reading One Event,  Up: Reading Input
 
-Key Sequence Input
-------------------
+25.6.1 Key Sequence Input
+-------------------------
 
 Lisp programs can read input a key sequence at a time by calling
 `read-key-sequence'; for example, `describe-key' uses it to read the
 key to describe.
 
- - Function: read-key-sequence prompt &optional continue-echo
+ -- Function: read-key-sequence prompt &optional continue-echo
           dont-downcase-last
      This function reads a sequence of keystrokes or mouse clicks and
      returns it as a vector of event objects read.  It keeps reading
@@ -7100,11 +7100,11 @@ key to describe.
      and the user types `C-x C-f'.
 
           (read-key-sequence "?")
-          
+
           ---------- Echo Area ----------
           ?C-x C-f
           ---------- Echo Area ----------
-          
+
                => [#<keypress-event control-X> #<keypress-event control-F>]
 
    If an input character is an upper-case letter and has no key binding,
@@ -7115,8 +7115,8 @@ perform case conversion in this way.
 \1f
 File: lispref.info,  Node: Reading One Event,  Next: Dispatching an Event,  Prev: Key Sequence Input,  Up: Reading Input
 
-Reading One Event
------------------
+25.6.2 Reading One Event
+------------------------
 
 The lowest level functions for command input are those which read a
 single event.  These functions often make a distinction between
@@ -7124,7 +7124,7 @@ single event.  These functions often make a distinction between
 actions), and other events, which serve as communication between XEmacs
 and the window system.
 
- - Function: next-event &optional event prompt
+ -- Function: next-event &optional event prompt
      This function reads and returns the next available event from the
      window system or terminal driver, waiting if necessary until an
      event is available.  Pass this object to `dispatch-event' to
@@ -7137,7 +7137,7 @@ and the window system.
      In most cases, the function `next-command-event' is more
      appropriate.
 
- - Function: next-command-event &optional event prompt
+ -- Function: next-command-event &optional event prompt
      This function returns the next available "user" event from the
      window system or terminal driver.  Pass this object to
      `dispatch-event' to handle it.  If an event object is supplied, it
@@ -7164,24 +7164,24 @@ and the window system.
           (next-command-event)
                => #<keypress-event right>
 
- - Function: read-char
+ -- Function: read-char
      This function reads and returns a character of command input.  If a
      mouse click is detected, an error is signalled.  The character
      typed is returned as an ASCII value.  This function is retained for
      compatibility with Emacs 18, and is most likely the wrong thing
      for you to be using: consider using `next-command-event' instead.
 
- - Function: enqueue-eval-event function object
+ -- Function: enqueue-eval-event function object
      This function adds an eval event to the back of the queue.  The
      eval event will be the next event read after all pending events.
 
 \1f
 File: lispref.info,  Node: Dispatching an Event,  Next: Quoted Character Input,  Prev: Reading One Event,  Up: Reading Input
 
-Dispatching an Event
---------------------
+25.6.3 Dispatching an Event
+---------------------------
 
- - Function: dispatch-event event
+ -- Function: dispatch-event event
      Given an event object returned by `next-event', this function
      executes it.  This is the basic function that makes XEmacs respond
      to user input; it also deals with notifications from the window
@@ -7190,15 +7190,15 @@ Dispatching an Event
 \1f
 File: lispref.info,  Node: Quoted Character Input,  Next: Peeking and Discarding,  Prev: Dispatching an Event,  Up: Reading Input
 
-Quoted Character Input
-----------------------
+25.6.4 Quoted Character Input
+-----------------------------
 
 You can use the function `read-quoted-char' to ask the user to specify
 a character, and allow the user to specify a control or meta character
 conveniently, either literally or as an octal character code.  The
 command `quoted-insert' uses this function.
 
- - Function: read-quoted-char &optional prompt
+ -- Function: read-quoted-char &optional prompt
      This function is like `read-char', except that if the first
      character read is an octal digit (0-7), it reads up to two more
      octal digits (but stopping if a non-octal digit is found) and
@@ -7215,10 +7215,10 @@ command `quoted-insert' uses this function.
      (which is 127 in decimal).
 
           (read-quoted-char "What character")
-          
+
           ---------- Echo Area ----------
           What character-177
           ---------- Echo Area ----------
-          
+
                => 127
 
index 114aa7a..eee35b1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -52,8 +52,8 @@ Foundation instead of in the original English.
 \1f
 File: lispref.info,  Node: Peeking and Discarding,  Prev: Quoted Character Input,  Up: Reading Input
 
-Miscellaneous Event Input Features
-----------------------------------
+25.6.5 Miscellaneous Event Input Features
+-----------------------------------------
 
 This section describes how to "peek ahead" at events without using them
 up, how to check for pending input, and how to discard pending input.
@@ -61,7 +61,7 @@ up, how to check for pending input, and how to discard pending input.
    See also the variables `last-command-event' and `last-command-char'
 (*Note Command Loop Info::).
 
- - Variable: unread-command-events
+ -- Variable: unread-command-events
      This variable holds a list of events waiting to be read as command
      input.  The events are used in the order they appear in the list,
      and removed one by one as they are used.
@@ -79,20 +79,20 @@ up, how to check for pending input, and how to discard pending input.
      events should exit the search and then execute normally.
 
 
- - Variable: unread-command-event
+ -- Variable: unread-command-event
      This variable holds a single event to be read as command input.
 
      This variable is mostly obsolete now that you can use
      `unread-command-events' instead; it exists only to support programs
      written for versions of XEmacs prior to 19.12.
 
- - Function: input-pending-p
+ -- Function: input-pending-p
      This function determines whether any command input is currently
      available to be read.  It returns immediately, with value `t' if
      there is available input, `nil' otherwise.  On rare occasions it
      may return `t' when no input is available.
 
- - Variable: last-input-event
+ -- Variable: last-input-event
      This variable is set to the last keyboard or mouse button event
      received.
 
@@ -116,7 +116,7 @@ up, how to check for pending input, and how to discard pending input.
                -| #<keypress-event control-E>
                => #<keypress-event 1>
 
- - Variable: last-input-char
+ -- Variable: last-input-char
      If the value of `last-input-event' is a keyboard event, then this
      is the nearest ASCII equivalent to it.  Remember that there is
      _not_ a 1:1 mapping between keyboard events and ASCII characters:
@@ -127,7 +127,7 @@ up, how to check for pending input, and how to discard pending input.
 
      This function exists for compatibility with Emacs version 18.
 
- - Function: discard-input
+ -- Function: discard-input
      This function discards the contents of the terminal input buffer
      and cancels any keyboard macro that might be in the process of
      definition.  It returns `nil'.
@@ -144,8 +144,8 @@ up, how to check for pending input, and how to discard pending input.
 \1f
 File: lispref.info,  Node: Waiting,  Next: Quitting,  Prev: Reading Input,  Up: Command Loop
 
-Waiting for Elapsed Time or Input
-=================================
+25.7 Waiting for Elapsed Time or Input
+======================================
 
 The wait functions are designed to wait for a certain amount of time to
 pass or until there is input.  For example, you may wish to pause in
@@ -157,7 +157,7 @@ input comes in, while `sleep-for' pauses without updating the screen.
 two arguments to specify the time (one integer and one float value),
 instead of a single argument that can be either an integer or a float.
 
- - Function: sit-for seconds &optional nodisplay
+ -- Function: sit-for seconds &optional nodisplay
      This function performs redisplay (provided there is no pending
      input from the user), then waits SECONDS seconds, or until input is
      available.  The result is `t' if `sit-for' waited the full time
@@ -180,7 +180,7 @@ instead of a single argument that can be either an integer or a float.
      The usual purpose of `sit-for' is to give the user time to read
      text that you display.
 
- - Function: sleep-for seconds
+ -- Function: sleep-for seconds
      This function simply pauses for SECONDS seconds without updating
      the display.  This function pays no attention to available input.
      It returns `nil'.
@@ -195,8 +195,8 @@ instead of a single argument that can be either an integer or a float.
 \1f
 File: lispref.info,  Node: Quitting,  Next: Prefix Command Arguments,  Prev: Waiting,  Up: Command Loop
 
-Quitting
-========
+25.8 Quitting
+=============
 
 Typing `C-g' while a Lisp function is running causes XEmacs to "quit"
 whatever it is doing.  This means that control returns to the innermost
@@ -266,17 +266,17 @@ that normal quitting is permitted after the first character of input.
            ...)
          (logand 255 code)))
 
- - Variable: quit-flag
+ -- Variable: quit-flag
      If this variable is non-`nil', then XEmacs quits immediately,
      unless `inhibit-quit' is non-`nil'.  Typing `C-g' ordinarily sets
      `quit-flag' non-`nil', regardless of `inhibit-quit'.
 
- - Variable: inhibit-quit
+ -- Variable: inhibit-quit
      This variable determines whether XEmacs should quit when
      `quit-flag' is set to a value other than `nil'.  If `inhibit-quit'
      is non-`nil', then `quit-flag' has no special effect.
 
- - Command: keyboard-quit
+ -- Command: keyboard-quit
      This function signals the `quit' condition with `(signal 'quit
      nil)'.  This is the same thing that quitting does.  (See `signal'
      in *Note Errors::.)
@@ -287,8 +287,8 @@ See the function `set-input-mode' in *Note Terminal Input::.
 \1f
 File: lispref.info,  Node: Prefix Command Arguments,  Next: Recursive Editing,  Prev: Quitting,  Up: Command Loop
 
-Prefix Command Arguments
-========================
+25.9 Prefix Command Arguments
+=============================
 
 Most XEmacs commands can use a "prefix argument", a number specified
 before the command itself.  (Don't confuse prefix arguments with prefix
@@ -332,27 +332,27 @@ Here are the results of calling `display-prefix' with various raw
 prefix arguments:
 
              M-x display-prefix  -| nil
-     
+
      C-u     M-x display-prefix  -| (4)
-     
+
      C-u C-u M-x display-prefix  -| (16)
-     
+
      C-u 3   M-x display-prefix  -| 3
-     
+
      M-3     M-x display-prefix  -| 3      ; (Same as `C-u 3'.)
-     
+
      C-3     M-x display-prefix  -| 3      ; (Same as `C-u 3'.)
-     
+
      C-u -   M-x display-prefix  -| -
-     
+
      M--     M-x display-prefix  -| -      ; (Same as `C-u -'.)
-     
+
      C--     M-x display-prefix  -| -      ; (Same as `C-u -'.)
-     
+
      C-u - 7 M-x display-prefix  -| -7
-     
+
      M-- 7   M-x display-prefix  -| -7     ; (Same as `C-u -7'.)
-     
+
      C-- 7   M-x display-prefix  -| -7     ; (Same as `C-u -7'.)
 
    XEmacs uses two variables to store the prefix argument: `prefix-arg'
@@ -368,7 +368,7 @@ argument, either numeric or raw, in the `interactive' declaration.
 value of the prefix argument directly in the variable
 `current-prefix-arg', but this is less clean.
 
- - Function: prefix-numeric-value raw
+ -- Function: prefix-numeric-value raw
      This function returns the numeric meaning of a valid raw prefix
      argument value, RAW.  The argument may be a symbol, a number, or a
      list.  If it is `nil', the value 1 is returned; if it is `-', the
@@ -376,12 +376,12 @@ value of the prefix argument directly in the variable
      if it is a list, the CAR of that list (which should be a number) is
      returned.
 
- - Variable: current-prefix-arg
+ -- Variable: current-prefix-arg
      This variable holds the raw prefix argument for the _current_
      command.  Commands may examine it directly, but the usual way to
      access it is with `(interactive "P")'.
 
- - Variable: prefix-arg
+ -- Variable: prefix-arg
      The value of this variable is the raw prefix argument for the
      _next_ editing command.  Commands that specify prefix arguments for
      the following command work by setting this variable.
@@ -390,19 +390,19 @@ value of the prefix argument directly in the variable
 `negative-argument' unless you intend to let the user enter the prefix
 argument for the _next_ command.
 
- - Command: universal-argument
+ -- Command: universal-argument
      This command reads input and specifies a prefix argument for the
      following command.  Don't call this command yourself unless you
      know what you are doing.
 
- - Command: digit-argument arg
+ -- Command: digit-argument arg
      This command adds to the prefix argument for the following
      command.  The argument ARG is the raw prefix argument as it was
      before this command; it is used to compute the updated prefix
      argument.  Don't call this command yourself unless you know what
      you are doing.
 
- - Command: negative-argument arg
+ -- Command: negative-argument arg
      This command adds to the numeric argument for the next command.
      The argument ARG is the raw prefix argument as it was before this
      command; its value is negated to form the new prefix argument.
@@ -412,8 +412,8 @@ argument for the _next_ command.
 \1f
 File: lispref.info,  Node: Recursive Editing,  Next: Disabling Commands,  Prev: Prefix Command Arguments,  Up: Command Loop
 
-Recursive Editing
-=================
+25.10 Recursive Editing
+=======================
 
 The XEmacs command loop is entered automatically when XEmacs starts up.
 This top-level invocation of the command loop never exits; it keeps
@@ -470,7 +470,7 @@ recursive edit but also provides the other features of the debugger.
    Recursive editing levels are also used when you type `C-r' in
 `query-replace' or use `C-x q' (`kbd-macro-query').
 
- - Command: recursive-edit
+ -- Command: recursive-edit
      This function invokes the editor command loop.  It is called
      automatically by the initialization of XEmacs, to let the user
      begin editing.  When called from a Lisp program, it enters a
@@ -491,31 +491,31 @@ recursive edit but also provides the other features of the debugger.
           (simple-rec)
                => nil
 
- - Command: exit-recursive-edit
+ -- Command: exit-recursive-edit
      This function exits from the innermost recursive edit (including
      minibuffer input).  Its definition is effectively `(throw 'exit
      nil)'.
 
- - Command: abort-recursive-edit
+ -- Command: abort-recursive-edit
      This function aborts the command that requested the innermost
      recursive edit (including minibuffer input), by signaling `quit'
      after exiting the recursive edit.  Its definition is effectively
      `(throw 'exit t)'.  *Note Quitting::.
 
- - Command: top-level
+ -- Command: top-level
      This function exits all recursive editing levels; it does not
      return a value, as it jumps completely out of any computation
      directly back to the main command loop.
 
- - Function: recursion-depth
+ -- Function: recursion-depth
      This function returns the current depth of recursive edits.  When
      no recursive edit is active, it returns 0.
 
 \1f
 File: lispref.info,  Node: Disabling Commands,  Next: Command History,  Prev: Recursive Editing,  Up: Command Loop
 
-Disabling Commands
-==================
+25.11 Disabling Commands
+========================
 
 "Disabling a command" marks the command as requiring user confirmation
 before it can be executed.  Disabling is used for commands which might
@@ -542,17 +542,17 @@ saying the command is disabled includes that string.  For example:
 when a disabled command is invoked interactively.  Disabling a command
 has no effect on calling it as a function from Lisp programs.
 
- - Command: enable-command command
+ -- Command: enable-command command
      Allow COMMAND to be executed without special confirmation from now
      on, and (if the user confirms) alter the user's `.emacs' file so
      that this will apply to future sessions.
 
- - Command: disable-command command
+ -- Command: disable-command command
      Require special confirmation to execute COMMAND from now on, and
      (if the user confirms) alter the user's `.emacs' file so that this
      will apply to future sessions.
 
- - Variable: disabled-command-hook
+ -- Variable: disabled-command-hook
      This normal hook is run instead of a disabled command, when the
      user invokes the disabled command interactively.  The hook
      functions can use `this-command-keys' to determine what the user
@@ -565,8 +565,8 @@ has no effect on calling it as a function from Lisp programs.
 \1f
 File: lispref.info,  Node: Command History,  Next: Keyboard Macros,  Prev: Disabling Commands,  Up: Command Loop
 
-Command History
-===============
+25.12 Command History
+=====================
 
 The command loop keeps a history of the complex commands that have been
 executed, to make it convenient to repeat these commands.  A "complex
@@ -576,7 +576,7 @@ any command whose `interactive' specification reads an argument from
 the minibuffer.  Explicit use of the minibuffer during the execution of
 the command itself does not cause the command to be considered complex.
 
- - Variable: command-history
+ -- Variable: command-history
      This variable's value is a list of recent complex commands, each
      represented as a form to evaluate.  It continues to accumulate all
      complex commands for the duration of the editing session, but all
@@ -602,8 +602,8 @@ commands used are the same ones available in any minibuffer.
 \1f
 File: lispref.info,  Node: Keyboard Macros,  Prev: Command History,  Up: Command Loop
 
-Keyboard Macros
-===============
+25.13 Keyboard Macros
+=====================
 
 A "keyboard macro" is a canned sequence of input events that can be
 considered a command and made the definition of a key.  The Lisp
@@ -611,7 +611,7 @@ representation of a keyboard macro is a string or vector containing the
 events.  Don't confuse keyboard macros with Lisp macros (*note
 Macros::).
 
- - Function: execute-kbd-macro macro &optional count
+ -- Function: execute-kbd-macro macro &optional count
      This function executes MACRO as a sequence of events.  If MACRO is
      a string or vector, then the events in it are executed exactly as
      if they had been input by the user.  The sequence is _not_
@@ -628,20 +628,20 @@ Macros::).
      it is 0, MACRO is executed over and over until it encounters an
      error or a failing search.
 
- - Variable: executing-macro
+ -- Variable: executing-macro
      This variable contains the string or vector that defines the
      keyboard macro that is currently executing.  It is `nil' if no
      macro is currently executing.  A command can test this variable to
      behave differently when run from an executing macro.  Do not set
      this variable yourself.
 
- - Variable: defining-kbd-macro
+ -- Variable: defining-kbd-macro
      This variable indicates whether a keyboard macro is being defined.
      A command can test this variable to behave differently while a
      macro is being defined.  The commands `start-kbd-macro' and
      `end-kbd-macro' set this variable--do not set it yourself.
 
- - Variable: last-kbd-macro
+ -- Variable: last-kbd-macro
      This variable is the definition of the most recently defined
      keyboard macro.  Its value is a string or vector, or `nil'.
 
@@ -651,8 +651,8 @@ Macros: (xemacs)Keyboard Macros.).
 \1f
 File: lispref.info,  Node: Keymaps,  Next: Menus,  Prev: Command Loop,  Up: Top
 
-Keymaps
-*******
+26 Keymaps
+**********
 
 The bindings between input events and commands are recorded in data
 structures called "keymaps".  Each binding in a keymap associates (or
@@ -683,8 +683,8 @@ The whole process is called "key lookup".
 \1f
 File: lispref.info,  Node: Keymap Terminology,  Next: Format of Keymaps,  Up: Keymaps
 
-Keymap Terminology
-==================
+26.1 Keymap Terminology
+=======================
 
 A "keymap" is a table mapping event types to definitions (which can be
 any Lisp objects, though only certain types are meaningful for
@@ -739,25 +739,25 @@ both local and global keymaps.  *Note Active Keymaps::, for details.
 \1f
 File: lispref.info,  Node: Format of Keymaps,  Next: Creating Keymaps,  Prev: Keymap Terminology,  Up: Keymaps
 
-Format of Keymaps
-=================
+26.2 Format of Keymaps
+======================
 
 A keymap is a primitive type that associates events with their
 bindings.  Note that this is different from Emacs 18 and FSF Emacs,
 where keymaps are lists.
 
- - Function: keymapp object
+ -- Function: keymapp object
      This function returns `t' if OBJECT is a keymap, `nil' otherwise.
 
 \1f
 File: lispref.info,  Node: Creating Keymaps,  Next: Inheritance and Keymaps,  Prev: Format of Keymaps,  Up: Keymaps
 
-Creating Keymaps
-================
+26.3 Creating Keymaps
+=====================
 
 Here we describe the functions for creating keymaps.
 
- - Function: make-keymap &optional name
+ -- Function: make-keymap &optional name
      This function constructs and returns a new keymap object.  All
      entries in it are `nil', meaning "command undefined".
 
@@ -765,7 +765,7 @@ Here we describe the functions for creating keymaps.
      as in `set-keymap-name'.  This name is only a debugging
      convenience; it is not used except when printing the keymap.
 
- - Function: make-sparse-keymap &optional name
+ -- Function: make-sparse-keymap &optional name
      This function constructs and returns a new keymap object.  All
      entries in it are `nil', meaning "command undefined".  The only
      difference between this function and `make-keymap' is that this
@@ -777,16 +777,16 @@ Here we describe the functions for creating keymaps.
      as in `set-keymap-name'.  This name is only a debugging
      convenience; it is not used except when printing the keymap.
 
- - Function: set-keymap-name keymap new-name
+ -- Function: set-keymap-name keymap new-name
      This function assigns a "name" to a keymap.  The name is only a
      debugging convenience; it is not used except when printing the
      keymap.
 
- - Function: keymap-name keymap
+ -- Function: keymap-name keymap
      This function returns the "name" of a keymap, as assigned using
      `set-keymap-name'.
 
- - Function: copy-keymap keymap
+ -- Function: copy-keymap keymap
      This function returns a copy of KEYMAP.  Any keymaps that appear
      directly as bindings in KEYMAP are also copied recursively, and so
      on to any number of levels.  However, recursive copying does not
@@ -796,15 +796,15 @@ Here we describe the functions for creating keymaps.
 
           (setq map (copy-keymap (current-local-map)))
           => #<keymap 3 entries 0x21f80>
-          
+
           (eq map (current-local-map))
               => nil
 
 \1f
 File: lispref.info,  Node: Inheritance and Keymaps,  Next: Key Sequences,  Prev: Creating Keymaps,  Up: Keymaps
 
-Inheritance and Keymaps
-=======================
+26.4 Inheritance and Keymaps
+============================
 
 A keymap can inherit the bindings of other keymaps.  The other keymaps
 are called the keymap's "parents", and are set with
@@ -820,7 +820,7 @@ depth-first search of all the ancestors of the keymap is conducted.
 
    `(current-global-map)' is the default parent of all keymaps.
 
- - Function: set-keymap-parents keymap parents
+ -- Function: set-keymap-parents keymap parents
      This function sets the parent keymaps of KEYMAP to the list
      PARENTS.
 
@@ -831,7 +831,7 @@ depth-first search of all the ancestors of the keymap is conducted.
      `define-key' to change KEYMAP, that affects the bindings in that
      map, but has no effect on any of the keymaps in PARENTS.
 
- - Function: keymap-parents keymap
+ -- Function: keymap-parents keymap
      This function returns the list of parent keymaps of KEYMAP, or
      `nil' if KEYMAP has no parents.
 
@@ -843,19 +843,19 @@ format.  Note that if you specify a default binding for a keymap,
 neither the keymap's parents nor the current global map are searched for
 key bindings.
 
- - Function: set-keymap-default-binding keymap command
+ -- Function: set-keymap-default-binding keymap command
      This function sets the default binding of KEYMAP to COMMAND, or
      `nil' if no default is desired.
 
- - Function: keymap-default-binding keymap
+ -- Function: keymap-default-binding keymap
      This function returns the default binding of KEYMAP, or `nil' if
      it has none.
 
 \1f
 File: lispref.info,  Node: Key Sequences,  Next: Prefix Keys,  Prev: Inheritance and Keymaps,  Up: Keymaps
 
-Key Sequences
-=============
+26.5 Key Sequences
+==================
 
 Contrary to popular belief, the world is not ASCII.  When running under
 a window manager, XEmacs can tell the difference between, for example,
@@ -948,7 +948,7 @@ it is possible to redefine only one of those sequences like so:
 system.  If you're talking to XEmacs through a TTY connection, you
 don't get any of these features.
 
- - Function: event-matches-key-specifier-p event key-specifier
+ -- Function: event-matches-key-specifier-p event key-specifier
      This function returns non-`nil' if EVENT matches KEY-SPECIFIER,
      which can be any valid form representing a key sequence.  This can
      be useful, e.g., to determine if the user pressed `help-char' or
@@ -957,8 +957,8 @@ don't get any of these features.
 \1f
 File: lispref.info,  Node: Prefix Keys,  Next: Active Keymaps,  Prev: Key Sequences,  Up: Keymaps
 
-Prefix Keys
-===========
+26.6 Prefix Keys
+================
 
 A "prefix key" has an associated keymap that defines what to do with
 key sequences that start with the prefix key.  For example, `C-x' is a
@@ -1019,11 +1019,11 @@ The key sequence `C-p 6' is not found in any active keymap.
          => nil
      (key-binding "\C-p\C-f")
          => find-file
-     
+
      (key-binding "\C-p6")
          => nil
 
- - Function: define-prefix-command symbol &optional mapvar
+ -- Function: define-prefix-command symbol &optional mapvar
      This function defines SYMBOL as a prefix command: it creates a
      keymap and stores it as SYMBOL's function definition.  Storing the
      symbol as the binding of a key makes the key a prefix key that has
@@ -1038,8 +1038,8 @@ The key sequence `C-p 6' is not found in any active keymap.
 \1f
 File: lispref.info,  Node: Active Keymaps,  Next: Key Lookup,  Prev: Prefix Keys,  Up: Keymaps
 
-Active Keymaps
-==============
+26.7 Active Keymaps
+===================
 
 XEmacs normally contains many keymaps; at any given time, just a few of
 them are "active" in that they participate in the interpretation of
@@ -1126,7 +1126,7 @@ completion and exit commands.  *Note Intro to Minibuffers::.
 
    *Note Standard Keymaps::, for a list of standard keymaps.
 
- - Function: current-keymaps &optional event-or-keys
+ -- Function: current-keymaps &optional event-or-keys
      This function returns a list of the current keymaps that will be
      searched for bindings.  This lists keymaps such as the current
      local map and the minor-mode maps, but does not list the parents
@@ -1135,7 +1135,7 @@ completion and exit commands.  *Note Intro to Minibuffers::.
      element is a mouse event), the keymaps for that mouse event will
      be listed.  Otherwise, the keymaps for key presses will be listed.
 
- - Variable: global-map
+ -- Variable: global-map
      This variable contains the default global keymap that maps XEmacs
      keyboard input to commands.  The global keymap is normally this
      keymap.  The default global keymap is a full keymap that binds
@@ -1145,14 +1145,14 @@ completion and exit commands.  *Note Intro to Minibuffers::.
      but you should not assign this variable any value other than the
      keymap it starts out with.
 
- - Function: current-global-map
+ -- Function: current-global-map
      This function returns the current global keymap.  This is the same
      as the value of `global-map' unless you change one or the other.
 
           (current-global-map)
           => #<keymap global-map 639 entries 0x221>
 
- - Function: current-local-map &optional buffer
+ -- Function: current-local-map &optional buffer
      This function returns BUFFER's local keymap, or `nil' if it has
      none.  BUFFER defaults to the current buffer.
 
@@ -1176,26 +1176,26 @@ completion and exit commands.  *Note Intro to Minibuffers::.
           M-C-x           eval-defun
           Alt-backspace   backward-kill-sexp
           Alt-delete      kill-sexp
-          
+
           C-x x           edebug-defun
 
- - Function: current-minor-mode-maps
+ -- Function: current-minor-mode-maps
      This function returns a list of the keymaps of currently enabled
      minor modes.
 
- - Function: use-global-map keymap
+ -- Function: use-global-map keymap
      This function makes KEYMAP the new current global keymap.  It
      returns `nil'.
 
      It is very unusual to change the global keymap.
 
- - Function: use-local-map keymap &optional buffer
+ -- Function: use-local-map keymap &optional buffer
      This function makes KEYMAP the new local keymap of BUFFER.  BUFFER
      defaults to the current buffer.  If KEYMAP is `nil', then the
      buffer has no local keymap.  `use-local-map' returns `nil'.  Most
      major mode commands use this function.
 
- - Variable: minor-mode-map-alist
+ -- Variable: minor-mode-map-alist
      This variable is an alist describing keymaps that may or may not be
      active according to the values of certain variables.  Its elements
      look like this:
@@ -1223,17 +1223,17 @@ completion and exit commands.  *Note Intro to Minibuffers::.
      See also `minor-mode-key-binding', above.  See *Note Keymaps and
      Minor Modes::, for more information about minor modes.
 
- - Variable: modeline-map
+ -- Variable: modeline-map
      This variable holds the keymap consulted for mouse-clicks on the
      modeline of a window.  This variable may be buffer-local; its
      value will be looked up in the buffer of the window whose modeline
      was clicked upon.
 
- - Variable: toolbar-map
+ -- Variable: toolbar-map
      This variable holds the keymap consulted for mouse-clicks over a
      toolbar.
 
- - Variable: mouse-grabbed-buffer
+ -- Variable: mouse-grabbed-buffer
      If non-`nil', a buffer which should be consulted first for all
      mouse activity.  When a mouse-click is processed, it will first be
      looked up in the local-map of this buffer, and then through the
@@ -1242,13 +1242,13 @@ completion and exit commands.  *Note Intro to Minibuffers::.
      the `mode-motion-hook' of the buffer of the window under the mouse.
      You should _bind_ this, not set it.
 
- - Variable: overriding-local-map
+ -- Variable: overriding-local-map
      If non-`nil', this variable holds a keymap to use instead of the
      buffer's local keymap and instead of all the minor mode keymaps.
      This keymap, if any, overrides all other maps that would have been
      active, except for the current global map.
 
- - Variable: overriding-terminal-local-map
+ -- Variable: overriding-terminal-local-map
      If non-`nil', this variable holds a keymap to use instead of the
      buffer's local keymap and instead of all the minor mode keymaps,
      but for the selected console only. (In other words, this variable
@@ -1260,8 +1260,8 @@ completion and exit commands.  *Note Intro to Minibuffers::.
 \1f
 File: lispref.info,  Node: Key Lookup,  Next: Functions for Key Lookup,  Prev: Active Keymaps,  Up: Keymaps
 
-Key Lookup
-==========
+26.8 Key Lookup
+===============
 
 "Key lookup" is the process of finding the binding of a key sequence
 from a given keymap.  Actual execution of the binding is not part of
@@ -1373,12 +1373,12 @@ macro, a symbol that leads to one of them, or an indirection or `nil'.
 \1f
 File: lispref.info,  Node: Functions for Key Lookup,  Next: Changing Key Bindings,  Prev: Key Lookup,  Up: Keymaps
 
-Functions for Key Lookup
-========================
+26.9 Functions for Key Lookup
+=============================
 
 Here are the functions and variables pertaining to key lookup.
 
- - Function: lookup-key keymap key &optional accept-defaults
+ -- Function: lookup-key keymap key &optional accept-defaults
      This function returns the definition of KEY in KEYMAP.  If the
      string or vector KEY is not a valid key sequence according to the
      prefix keys specified in KEYMAP (which means it is "too long" and
@@ -1414,12 +1414,12 @@ Here are the functions and variables pertaining to key lookup.
      Sequence Input::).  In particular, it does not convert letters to
      lower case.
 
- - Command: undefined
+ -- Command: undefined
      Used in keymaps to undefine keys.  If a key sequence is defined to
      this, invoking this key sequence causes a "key undefined" error,
      just as if the key sequence had no binding.
 
- - Function: key-binding key &optional accept-defaults
+ -- Function: key-binding key &optional accept-defaults
      This function returns the binding for KEY in the current keymaps,
      trying all the active keymaps.  The result is `nil' if KEY is
      undefined in the keymaps.
@@ -1434,21 +1434,21 @@ Here are the functions and variables pertaining to key lookup.
           (key-binding [escape escape escape])
               => keyboard-escape-quit
 
- - Function: local-key-binding keys &optional accept-defaults
+ -- Function: local-key-binding keys &optional accept-defaults
      This function returns the binding for KEYS in the current local
      keymap, or `nil' if it is undefined there.
 
      The argument ACCEPT-DEFAULTS controls checking for default
      bindings, as in `lookup-key' (above).
 
- - Function: global-key-binding keys &optional accept-defaults
+ -- Function: global-key-binding keys &optional accept-defaults
      This function returns the binding for command KEYS in the current
      global keymap, or `nil' if it is undefined there.
 
      The argument ACCEPT-DEFAULTS controls checking for default
      bindings, as in `lookup-key' (above).
 
- - Function: minor-mode-key-binding key &optional accept-defaults
+ -- Function: minor-mode-key-binding key &optional accept-defaults
      This function returns a list of all the active minor mode bindings
      of KEY.  More precisely, it returns an alist of pairs `(MODENAME .
      BINDING)', where MODENAME is the variable that enables the minor
@@ -1463,7 +1463,7 @@ Here are the functions and variables pertaining to key lookup.
      The argument ACCEPT-DEFAULTS controls checking for default
      bindings, as in `lookup-key' (above).
 
- - Variable: meta-prefix-char
+ -- Variable: meta-prefix-char
      This variable is the meta-prefix character code.  It is used when
      translating a two-character sequence to a meta character so it can
      be looked up in a keymap.  For useful results, the value should be
@@ -1493,7 +1493,7 @@ Here are the functions and variables pertaining to key lookup.
           (key-binding "\C-xb")
                => backward-word            ; Now, typing `C-x b' is
                                               ;   like typing `M-b'.
-          
+
           (setq meta-prefix-char ?\e)          ; Avoid confusion!
                                                ; Restore the default value!
                => ?\^[   ; Under XEmacs 20.
@@ -1502,8 +1502,8 @@ Here are the functions and variables pertaining to key lookup.
 \1f
 File: lispref.info,  Node: Changing Key Bindings,  Next: Key Binding Commands,  Prev: Functions for Key Lookup,  Up: Keymaps
 
-Changing Key Bindings
-=====================
+26.10 Changing Key Bindings
+===========================
 
 The way to rebind a key is to change its entry in a keymap.  If you
 change a binding in the global keymap, the change is effective in all
@@ -1523,7 +1523,7 @@ keymap or if KEY is not a string or vector representing a key sequence.
 You can use event types (symbols) as shorthand for events that are
 lists.
 
- - Function: define-key keymap key binding
+ -- Function: define-key keymap key binding
      This function sets the binding for KEY in KEYMAP.  (If KEY is more
      than one event long, the change is actually made in another keymap
      reached from KEYMAP.)  The argument BINDING can be any Lisp
@@ -1550,7 +1550,7 @@ bindings in it:
      (describe-bindings-internal map)
      =>   ; (Inserted in buffer)
      C-f             forward-char
-     
+
      ;; Build sparse submap for `C-x' and bind `f' in that.
      (define-key map "\C-xf" 'forward-word)
          => forward-word
@@ -1560,14 +1560,14 @@ bindings in it:
      =>   ; (Inserted in buffer)
      C-f             forward-char
      C-x             << Prefix Command >>
-     
+
      C-x f           forward-word
-     
+
      ;; Bind `C-p' to the `ctl-x-map'.
      (define-key map "\C-p" ctl-x-map)
      ;; `ctl-x-map'
      => #<keymap Control-X-prefix 77 entries 0x3bf>
-     
+
      ;; Bind `C-f' to `foo' in the `ctl-x-map'.
      (define-key map "\C-p\C-f" 'foo)
      => foo
@@ -1578,7 +1578,7 @@ bindings in it:
      C-f             forward-char
      C-p             << Prefix command Control-X-prefix >>
      C-x             << Prefix Command >>
-     
+
      C-p tab         indent-rigidly
      C-p $           set-selective-display
      C-p '           expand-abbrev
@@ -1589,19 +1589,19 @@ bindings in it:
      C-p C-z         suspend-or-iconify-emacs
      C-p M-escape    repeat-complex-command
      C-p M-C-[       repeat-complex-command
-     
+
      C-x f           forward-word
-     
+
      C-p 4 .         find-tag-other-window
         ...
      C-p 4 C-o       display-buffer
-     
+
      C-p 5 0         delete-frame
         ...
      C-p 5 C-f       find-file-other-frame
-     
+
         ...
-     
+
      C-p a i g       inverse-add-global-abbrev
      C-p a i l       inverse-add-mode-abbrev
 
@@ -1609,7 +1609,7 @@ Note that storing a new binding for `C-p C-f' actually works by
 changing an entry in `ctl-x-map', and this has the effect of changing
 the bindings of both `C-p C-f' and `C-x C-f' in the default global map.
 
- - Function: substitute-key-definition olddef newdef keymap &optional
+ -- Function: substitute-key-definition olddef newdef keymap &optional
           oldmap prefix
      This function replaces OLDDEF with NEWDEF for any keys in KEYMAP
      that were bound to OLDDEF.  In other words, OLDDEF is replaced
@@ -1641,7 +1641,7 @@ the bindings of both `C-p C-f' and `C-x C-f' in the default global map.
      PREFIX in KEYMAP are redefined.  See also `accessible-keymaps'.
 
 
- - Function: suppress-keymap keymap &optional nodigits
+ -- Function: suppress-keymap keymap &optional nodigits
      This function changes the contents of the full keymap KEYMAP by
      making all the printing characters undefined.  More precisely, it
      binds them to the command `undefined'.  This makes ordinary
@@ -1682,8 +1682,8 @@ the bindings of both `C-p C-f' and `C-x C-f' in the default global map.
 \1f
 File: lispref.info,  Node: Key Binding Commands,  Next: Scanning Keymaps,  Prev: Changing Key Bindings,  Up: Keymaps
 
-Commands for Binding Keys
-=========================
+26.11 Commands for Binding Keys
+===============================
 
 This section describes some convenient interactive interfaces for
 changing key bindings.  They work by calling `define-key'.
@@ -1708,7 +1708,7 @@ redefines `C-x C-\' to move down a line.
 redefines the first (leftmost) mouse button, typed with the Meta key, to
 set point where you click.
 
- - Command: global-set-key key definition
+ -- Command: global-set-key key definition
      This function sets the binding of KEY in the current global map to
      DEFINITION.
 
@@ -1716,7 +1716,7 @@ set point where you click.
           ==
           (define-key (current-global-map) KEY DEFINITION)
 
- - Command: global-unset-key key
+ -- Command: global-unset-key key
      This function removes the binding of KEY from the current global
      map.
 
@@ -1735,7 +1735,7 @@ set point where you click.
           ==
           (define-key (current-global-map) KEY nil)
 
- - Command: local-set-key key definition
+ -- Command: local-set-key key definition
      This function sets the binding of KEY in the current local keymap
      to DEFINITION.
 
@@ -1743,7 +1743,7 @@ set point where you click.
           ==
           (define-key (current-local-map) KEY DEFINITION)
 
- - Command: local-unset-key key
+ -- Command: local-unset-key key
      This function removes the binding of KEY from the current local
      map.
 
@@ -1754,13 +1754,13 @@ set point where you click.
 \1f
 File: lispref.info,  Node: Scanning Keymaps,  Next: Other Keymap Functions,  Prev: Key Binding Commands,  Up: Keymaps
 
-Scanning Keymaps
-================
+26.12 Scanning Keymaps
+======================
 
 This section describes functions used to scan all the current keymaps,
 or all keys within a keymap, for the sake of printing help information.
 
- - Function: accessible-keymaps keymap &optional prefix
+ -- Function: accessible-keymaps keymap &optional prefix
      This function returns a list of all the keymaps that can be
      accessed (via prefix keys) from KEYMAP.  The value is an
      association list with elements of the form `(KEY . MAP)', where
@@ -1827,7 +1827,7 @@ or all keys within a keymap, for the sake of printing help information.
                                     8 entries 0x3ef>)
                         2 entries 0x3f5>))
 
- - Function: map-keymap function keymap &optional sort-first
+ -- Function: map-keymap function keymap &optional sort-first
      This function applies FUNCTION to each element of KEYMAP.
      FUNCTION will be called with two arguments: a key-description
      list, and the binding.  The order in which the elements of the
@@ -1847,10 +1847,10 @@ or all keys within a keymap, for the sake of printing help information.
      canonical order.  Otherwise, they will be passed in hash (that is,
      random) order, which is faster.
 
- - Function: keymap-fullness keymap
+ -- Function: keymap-fullness keymap
      This function returns the number of bindings in the keymap.
 
- - Function: where-is-internal definition &optional keymaps firstonly
+ -- Function: where-is-internal definition &optional keymaps firstonly
           noindirect event-or-keys
      This function returns a list of key sequences (of any length) that
      are bound to DEFINITION in a set of keymaps.
@@ -1883,8 +1883,8 @@ or all keys within a keymap, for the sake of printing help information.
           (where-is-internal 'describe-function)
               => ([(control h) d] [(control h) f] [f1 d] [f1 f])
 
- - Function: describe-bindings-internal map &optional all shadow prefix
-          mouse-only-p
+ -- Function: describe-bindings-internal map &optional all shadow
+          prefix mouse-only-p
      This function inserts (into the current buffer) a list of all
      defined keys and their definitions in MAP.  Optional second
      argument ALL says whether to include even "uninteresting"
@@ -1899,7 +1899,7 @@ or all keys within a keymap, for the sake of printing help information.
    `describe-bindings-internal' is used to implement the help command
 `describe-bindings'.
 
- - Command: describe-bindings &optional prefix mouse-only-p
+ -- Command: describe-bindings &optional prefix mouse-only-p
      This function creates a listing of all defined keys and their
      definitions.  It writes the listing in a buffer named `*Help*' and
      displays it in a window.
@@ -1924,16 +1924,16 @@ or all keys within a keymap, for the sake of printing help information.
 \1f
 File: lispref.info,  Node: Other Keymap Functions,  Prev: Scanning Keymaps,  Up: Keymaps
 
-Other Keymap Functions
-======================
+26.13 Other Keymap Functions
+============================
 
- - Function: set-keymap-prompt keymap new-prompt
+ -- Function: set-keymap-prompt keymap new-prompt
      This function sets the "prompt" of KEYMAP to string NEW-PROMPT, or
      `nil' if no prompt is desired.  The prompt is shown in the
      echo-area when reading a key-sequence to be looked-up in this
      keymap.
 
- - Function: keymap-prompt keymap &optional use-inherited
+ -- Function: keymap-prompt keymap &optional use-inherited
      This function returns the "prompt" of the given keymap.  If
      USE-INHERITED is non-`nil', any parent keymaps will also be
      searched for a prompt.
@@ -1941,8 +1941,8 @@ Other Keymap Functions
 \1f
 File: lispref.info,  Node: Menus,  Next: Dialog Boxes,  Prev: Keymaps,  Up: Top
 
-Menus
-*****
+27 Menus
+********
 
 * Menu:
 
@@ -1958,8 +1958,8 @@ Menus
 \1f
 File: lispref.info,  Node: Menu Format,  Next: Menubar Format,  Up: Menus
 
-Format of Menus
-===============
+27.1 Format of Menus
+====================
 
 A menu is described using a "menu description", which is a list of menu
 items, keyword-value pairs, strings, and submenus.  The menu
@@ -2166,7 +2166,7 @@ to four keyword-value pairs, as follows:
      must be a char or the symbol name of a key.  *Note Menu
      Accelerators::.
 
- - Variable: menubar-configuration
+ -- Variable: menubar-configuration
      This variable holds a list of symbols, against which the value of
      the `:config' tag for each menubar item will be compared.  If a
      menubar item has a `:config' tag, then it is omitted from the
@@ -2187,8 +2187,8 @@ to four keyword-value pairs, as follows:
 \1f
 File: lispref.info,  Node: Menubar Format,  Next: Menubar,  Prev: Menu Format,  Up: Menus
 
-Format of the Menubar
-=====================
+27.2 Format of the Menubar
+==========================
 
 A menubar is a list of menus, menu items, and strings.  The format is
 similar to that of a menu, except:
@@ -2205,21 +2205,21 @@ similar to that of a menu, except:
 \1f
 File: lispref.info,  Node: Menubar,  Next: Modifying Menus,  Prev: Menubar Format,  Up: Menus
 
-Menubar
-=======
+27.3 Menubar
+============
 
- - Variable: current-menubar
+ -- Variable: current-menubar
      This variable holds the description of the current menubar.  This
      may be buffer-local.  When the menubar is changed, the function
      `set-menubar-dirty-flag' has to be called in order for the menubar
      to be updated on the screen.
 
- - Constant: default-menubar
+ -- Constant: default-menubar
      This variable holds the menubar description of the menubar that is
      visible at startup.  This is the value that `current-menubar' has
      at startup.
 
- - Function: set-menubar-dirty-flag
+ -- Function: set-menubar-dirty-flag
      This function tells XEmacs that the menubar widget has to be
      updated.  Changes to the menubar will generally not be visible
      until this function is called.
@@ -2229,23 +2229,23 @@ menubar.  They are equivalent to doing the appropriate action to change
 `current-menubar', and then calling `set-menubar-dirty-flag'.  Note
 that these functions copy their argument using `copy-sequence'.
 
- - Function: set-menubar menubar
+ -- Function: set-menubar menubar
      This function sets the default menubar to be MENUBAR (*note Menu
      Format::).  This is the menubar that will be visible in buffers
      that have not defined their own, buffer-local menubar.
 
- - Function: set-buffer-menubar menubar
+ -- Function: set-buffer-menubar menubar
      This function sets the buffer-local menubar to be MENUBAR.  This
      does not change the menubar in any buffers other than the current
      one.
 
    Miscellaneous:
 
- - Variable: menubar-show-keybindings
+ -- Variable: menubar-show-keybindings
      If true, the menubar will display keyboard equivalents.  If false,
      only the command names will be displayed.
 
- - Variable: activate-menubar-hook
+ -- Variable: activate-menubar-hook
      Function or functions called before a menubar menu is pulled down.
      These functions are called with no arguments, and should
      interrogate and modify the value of `current-menubar' as desired.
@@ -2268,15 +2268,15 @@ that these functions copy their argument using `copy-sequence'.
      more computation will be done, but redisplay of the menubar will
      still be performed optimally.
 
- - Variable: menu-no-selection-hook
+ -- Variable: menu-no-selection-hook
      Function or functions to call when a menu or dialog box is
      dismissed without a selection having been made.
 
 \1f
 File: lispref.info,  Node: Modifying Menus,  Next: Pop-Up Menus,  Prev: Menubar,  Up: Menus
 
-Modifying Menus
-===============
+27.4 Modifying Menus
+====================
 
 The following functions are provided to modify the menubar of one of its
 submenus.  Note that these functions modify the menu in-place, rather
@@ -2293,7 +2293,7 @@ also specifies a particular item to be modified.  For example, `("File"
 menu.  `("Menu" "Foo" "Item")' means the menu item called "Item" under
 the "Foo" submenu of "Menu".
 
- - Function: add-submenu menu-path submenu &optional before in-menu
+ -- Function: add-submenu menu-path submenu &optional before in-menu
      This function adds a menu to the menubar or one of its submenus.
      If the named menu exists already, it is changed.
 
@@ -2310,7 +2310,7 @@ the "Foo" submenu of "Menu".
      If IN-MENU is present use that instead of `current-menubar' as the
      menu to change.
 
- - Function: add-menu-button menu-path menu-leaf &optional before
+ -- Function: add-menu-button menu-path menu-leaf &optional before
           in-menu
      This function adds a menu item to some menu, creating the menu
      first if necessary.  If the named item exists already, it is
@@ -2328,22 +2328,22 @@ the "Foo" submenu of "Menu".
      If IN-MENU is present use that instead of `current-menubar' as the
      menu to change.
 
- - Function: delete-menu-item menu-item-path &optional from-menu
+ -- Function: delete-menu-item menu-item-path &optional from-menu
      This function removes the menu item specified by MENU-ITEM-PATH
      from the menu hierarchy.
 
      If FROM-MENU is present use that instead of `current-menubar' as
      the menu to change.
 
- - Function: enable-menu-item menu-item-path
+ -- Function: enable-menu-item menu-item-path
      This function makes the menu item specified by MENU-ITEM-PATH be
      selectable.
 
- - Function: disable-menu-item menu-item-path
+ -- Function: disable-menu-item menu-item-path
      This function makes the menu item specified by MENU-ITEM-PATH be
      unselectable.
 
- - Function: relabel-menu-item menu-item-path new-name
+ -- Function: relabel-menu-item menu-item-path new-name
      This function changes the string of the menu item specified by
      MENU-ITEM-PATH.  NEW-NAME is the string that the menu item will be
      printed as from now on.
@@ -2351,7 +2351,7 @@ the "Foo" submenu of "Menu".
    The following function can be used to search for a particular item in
 a menubar specification, given a path to the item.
 
- - Function: find-menu-item menubar menu-item-path &optional parent
+ -- Function: find-menu-item menubar menu-item-path &optional parent
      This function searches MENUBAR for the item given by
      MENU-ITEM-PATH starting from PARENT (`nil' means start at the top
      of MENUBAR).  This function returns `(ITEM . PARENT)', where
@@ -2365,7 +2365,7 @@ a menubar specification, given a path to the item.
 existing code can be understood.  You should not use these functions in
 new code.
 
- - Function: add-menu menu-path menu-name menu-items &optional before
+ -- Function: add-menu menu-path menu-name menu-items &optional before
      This function adds a menu to the menubar or one of its submenus.
      If the named menu exists already, it is changed.  This is
      obsolete; use `add-submenu' instead.
@@ -2383,7 +2383,7 @@ new code.
      should be added, if this menu is not on its parent already.  If the
      menu is already present, it will not be moved.
 
- - Function: add-menu-item menu-path item-name function enabled-p
+ -- Function: add-menu-item menu-path item-name function enabled-p
           &optional before
      This function adds a menu item to some menu, creating the menu
      first if necessary.  If the named item exists already, it is
@@ -2401,14 +2401,14 @@ new code.
 \1f
 File: lispref.info,  Node: Menu Filters,  Next: Menu Accelerators,  Prev: Pop-Up Menus,  Up: Menus
 
-Menu Filters
-============
+27.5 Menu Filters
+=================
 
 The following filter functions are provided for use in
 `default-menubar'.  You may want to use them in your own menubar
 description.
 
- - Function: file-menu-filter menu-items
+ -- Function: file-menu-filter menu-items
      This function changes the arguments and sensitivity of these File
      menu items:
 
@@ -2432,7 +2432,7 @@ description.
     `Delete Frame'
           Sensitive only when there is more than one visible frame.
 
- - Function: edit-menu-filter menu-items
+ -- Function: edit-menu-filter menu-items
      This function changes the arguments and sensitivity of these Edit
      menu items:
 
@@ -2455,25 +2455,25 @@ description.
           Sensitive only when there is undo information.  While in the
           midst of an undo, this is changed to `Undo More'.
 
- - Function: buffers-menu-filter menu-items
+ -- Function: buffers-menu-filter menu-items
      This function sets up the Buffers menu.  *Note Buffers Menu::, for
      more information.
 
 \1f
 File: lispref.info,  Node: Pop-Up Menus,  Next: Menu Filters,  Prev: Modifying Menus,  Up: Menus
 
-Pop-Up Menus
-============
+27.6 Pop-Up Menus
+=================
 
- - Function: popup-menu menu-description &optional event
+ -- Function: popup-menu menu-description &optional event
      This function pops up a menu specified by MENU-DESCRIPTION, which
      is a menu description (*note Menu Format::).  The menu is
      displayed at the current mouse position.
 
- - Function: popup-menu-up-p
+ -- Function: popup-menu-up-p
      This function returns `t' if a pop-up menu is up, `nil' otherwise.
 
- - Variable: popup-menu-titles
+ -- Variable: popup-menu-titles
      If true (the default), pop-up menus will have title bars at the
      top.
 
@@ -2481,24 +2481,24 @@ Pop-Up Menus
 mechanism onto pop-up menus.  This only works if you do not redefine
 the binding for button3.
 
- - Command: popup-mode-menu
+ -- Command: popup-mode-menu
      This function pops up a menu of global and mode-specific commands.
      The menu is computed by combining `global-popup-menu' and
      `mode-popup-menu'.  This is the default binding for button3.  You
      should generally not change this binding.
 
- - Variable: global-popup-menu
+ -- Variable: global-popup-menu
      This holds the global popup menu.  This is present in all modes.
      (This is `nil' by default.)
 
- - Variable: mode-popup-menu
+ -- Variable: mode-popup-menu
      The mode-specific popup menu.  Automatically buffer local.  This
      is appended to the default items in `global-popup-menu'.
 
- - Constant: default-popup-menu
+ -- Constant: default-popup-menu
      This holds the default value of `mode-popup-menu'.
 
- - Variable: activate-popup-menu-hook
+ -- Variable: activate-popup-menu-hook
      Function or functions run before a mode-specific popup menu is made
      visible.  These functions are called with no arguments, and should
      interrogate and modify the value of `global-popup-menu' or
@@ -2510,20 +2510,20 @@ the binding for button3.
    The following convenience functions are provided for displaying
 pop-up menus.
 
- - Command: popup-buffer-menu event
+ -- Command: popup-buffer-menu event
      This function pops up a copy of the `Buffers' menu (from the
      menubar) where the mouse is clicked.  It should be bound to a
      mouse button event.
 
- - Command: popup-menubar-menu event
+ -- Command: popup-menubar-menu event
      This function pops up a copy of menu that also appears in the
      menubar.  It should be bound to a mouse button event.
 
 \1f
 File: lispref.info,  Node: Menu Accelerators,  Next: Buffers Menu,  Prev: Menu Filters,  Up: Menus
 
-Menu Accelerators
-=================
+27.7 Menu Accelerators
+======================
 
 Menu accelerators are keyboard shortcuts for accessing the menubar.
 Accelerator keys can be specified for menus as well as for menu items.
@@ -2541,8 +2541,8 @@ item is used to activate that item.
 \1f
 File: lispref.info,  Node: Creating Menu Accelerators,  Next: Keyboard Menu Traversal,  Up: Menu Accelerators
 
-Creating Menu Accelerators
---------------------------
+27.7.1 Creating Menu Accelerators
+---------------------------------
 
 Menu accelerators are specified as part of the menubar format using the
 :accelerator tag to specify a key or by placing "%_" in the menu or
@@ -2572,8 +2572,8 @@ accelerator keys.  *Note Menu Accelerator Functions::.
 \1f
 File: lispref.info,  Node: Keyboard Menu Traversal,  Next: Menu Accelerator Functions,  Prev: Creating Menu Accelerators,  Up: Menu Accelerators
 
-Keyboard Menu Traversal
------------------------
+27.7.2 Keyboard Menu Traversal
+------------------------------
 
 In addition to immediately activating a menu or menu item, the keyboard
 can be used to traverse the menus without activating items.  The
@@ -2588,15 +2588,15 @@ for more information about how to modify the menu traversal keys.
 \1f
 File: lispref.info,  Node: Menu Accelerator Functions,  Prev: Keyboard Menu Traversal,  Up: Menu Accelerators
 
-Menu Accelerator Functions
---------------------------
+27.7.3 Menu Accelerator Functions
+---------------------------------
 
- - Command: accelerate-menu
+ -- Command: accelerate-menu
      Make the menubar immediately active and place the cursor on the
      left most entry in the top level menu.  Menu items can be selected
      as usual.
 
- - Variable: menu-accelerator-enabled
+ -- Variable: menu-accelerator-enabled
      Whether menu accelerator keys can cause the menubar to become
      active.
 
@@ -2620,12 +2620,12 @@ Menu Accelerator Functions
      See also `menu-accelerator-modifiers' and
      `menu-accelerator-prefix'.
 
- - Variable: menu-accelerator-map
+ -- Variable: menu-accelerator-map
      Keymap consulted to determine the commands to run in response to
      keypresses occurring while the menubar is active.  *Note Keyboard
      Menu Traversal::.
 
- - Variable: menu-accelerator-modifiers
+ -- Variable: menu-accelerator-modifiers
      A list of modifier keys which must be pressed in addition to a
      valid menu accelerator in order for the top level menu to be
      activated in response to a keystroke.  The default value of
@@ -2639,7 +2639,7 @@ Menu Accelerator Functions
 
      See also `menu-accelerator-enabled' and `menu-accelerator-prefix'.
 
- - Variable: menu-accelerator-prefix
+ -- Variable: menu-accelerator-prefix
      Prefix key(s) that must be typed before menu accelerators will be
      activated.  Must be a valid key descriptor.
 
@@ -2661,31 +2661,31 @@ will pressing C-x followed by anything else.
 \1f
 File: lispref.info,  Node: Buffers Menu,  Prev: Menu Accelerators,  Up: Menus
 
-Buffers Menu
-============
+27.8 Buffers Menu
+=================
 
 The following options control how the `Buffers' menu is displayed.
 This is a list of all (or a subset of) the buffers currently in
 existence, and is updated dynamically.
 
- - User Option: buffers-menu-max-size
+ -- User Option: buffers-menu-max-size
      This user option holds the maximum number of entries which may
      appear on the `Buffers' menu.  If this is 10, then only the ten
      most-recently-selected buffers will be shown.  If this is `nil',
      then all buffers will be shown.  Setting this to a large number or
      `nil' will slow down menu responsiveness.
 
- - Function: format-buffers-menu-line buffer
+ -- Function: format-buffers-menu-line buffer
      This function returns a string to represent BUFFER in the
      `Buffers' menu.  `nil' means the buffer shouldn't be listed.  You
      can redefine this.
 
- - User Option: complex-buffers-menu-p
+ -- User Option: complex-buffers-menu-p
      If true, the `Buffers' menu will contain several commands, as
      submenus of each buffer line.  If this is false, then there will
      be only one command: select that buffer.
 
- - User Option: buffers-menu-switch-to-buffer-function
+ -- User Option: buffers-menu-switch-to-buffer-function
      This user option holds the function to call to select a buffer
      from the `Buffers' menu.  `switch-to-buffer' is a good choice, as
      is `pop-to-buffer'.
@@ -2693,8 +2693,8 @@ existence, and is updated dynamically.
 \1f
 File: lispref.info,  Node: Dialog Boxes,  Next: Toolbar,  Prev: Menus,  Up: Top
 
-Dialog Boxes
-************
+28 Dialog Boxes
+***************
 
 * Menu:
 
@@ -2704,8 +2704,8 @@ Dialog Boxes
 \1f
 File: lispref.info,  Node: Dialog Box Format,  Next: Dialog Box Functions,  Up: Dialog Boxes
 
-Dialog Box Format
-=================
+28.1 Dialog Box Format
+======================
 
 A dialog box description is a list.
 
@@ -2743,10 +2743,10 @@ that all following buttons should be flushright instead of flushleft.
 \1f
 File: lispref.info,  Node: Dialog Box Functions,  Prev: Dialog Box Format,  Up: Dialog Boxes
 
-Dialog Box Functions
-====================
+28.2 Dialog Box Functions
+=========================
 
- - Function: popup-dialog-box dbox-desc
+ -- Function: popup-dialog-box dbox-desc
      This function pops up a dialog box.  DBOX-DESC describes how the
      dialog box will appear (*note Dialog Box Format::).
 
@@ -2756,8 +2756,8 @@ using a dialog box.
 \1f
 File: lispref.info,  Node: Toolbar,  Next: Gutter,  Prev: Dialog Boxes,  Up: Top
 
-Toolbar
-*******
+29 Toolbar
+**********
 
 * Menu:
 
@@ -2771,8 +2771,8 @@ Toolbar
 \1f
 File: lispref.info,  Node: Toolbar Intro,  Next: Creating Toolbar,  Up: Toolbar
 
-Toolbar Intro
-=============
+29.1 Toolbar Intro
+==================
 
 A "toolbar" is a bar of icons displayed along one edge of a frame.  You
 can view a toolbar as a series of menu shortcuts--the most common menu
@@ -2815,10 +2815,10 @@ toolbar to the same position, it will just not be visible.
 \1f
 File: lispref.info,  Node: Creating Toolbar,  Next: Toolbar Descriptor Format,  Prev: Toolbar Intro,  Up: Toolbar
 
-Creating Toolbar
-================
+29.2 Creating Toolbar
+=====================
 
- - Function: make-toolbar-specifier spec-list
+ -- Function: make-toolbar-specifier spec-list
      Return a new `toolbar' specifier object with the given
      specification list.  SPEC-LIST can be a list of specifications
      (each of which is a cons of a locale and a list of instantiators),
@@ -2837,8 +2837,8 @@ Creating Toolbar
 \1f
 File: lispref.info,  Node: Toolbar Descriptor Format,  Next: Specifying the Toolbar,  Prev: Creating Toolbar,  Up: Toolbar
 
-Toolbar Descriptor Format
-=========================
+29.3 Toolbar Descriptor Format
+==============================
 
 The contents of a toolbar are specified using a "toolbar descriptor".
 The format of a toolbar descriptor is a list of "toolbar button
@@ -2919,15 +2919,15 @@ others specify blank areas in the toolbar.
      area.  If omitted, it defaults to a device-specific value (8
      pixels for X devices).
 
- - Function: toolbar-make-button-list up &optional down disabled cap-up
-          cap-down cap-disabled
+ -- Function: toolbar-make-button-list up &optional down disabled
+          cap-up cap-down cap-disabled
      This function calls `make-glyph' on each arg and returns a list of
      the results.  This is useful for setting the first argument of a
      toolbar button descriptor (typically, the result of this function
      is assigned to a symbol, which is specified as the first argument
      of the toolbar button descriptor).
 
- - Function: check-toolbar-button-syntax button &optional noerror
+ -- Function: check-toolbar-button-syntax button &optional noerror
      Verify the syntax of entry BUTTON in a toolbar description list.
      If you want to verify the syntax of a toolbar description list as a
      whole, use `check-valid-instantiator' with a specifier type of
@@ -2936,8 +2936,8 @@ others specify blank areas in the toolbar.
 \1f
 File: lispref.info,  Node: Specifying the Toolbar,  Next: Other Toolbar Variables,  Prev: Toolbar Descriptor Format,  Up: Toolbar
 
-Specifying the Toolbar
-======================
+29.4 Specifying the Toolbar
+===========================
 
 In order to specify the contents of a toolbar, set one of the specifier
 variables `default-toolbar', `top-toolbar', `bottom-toolbar',
@@ -2951,7 +2951,7 @@ information.
    Most of the time, you will set `default-toolbar', which allows the
 user to choose where the toolbar should go.
 
- - Specifier: default-toolbar
+ -- Specifier: default-toolbar
      The position of this toolbar is specified in the function
      `default-toolbar-position'.  If the corresponding
      position-specific toolbar (e.g. `top-toolbar' if
@@ -2969,7 +2969,7 @@ specifiers `top-toolbar-visible-p', `bottom-toolbar-visible-p',
 `left-toolbar-visible-p', and `right-toolbar-visible-p' (*note Other
 Toolbar Variables::).
 
- - Function: set-default-toolbar-position position
+ -- Function: set-default-toolbar-position position
      This function sets the position that the `default-toolbar' will be
      displayed at.  Valid positions are the symbols `top', `bottom',
      `left' and `right'.  What this actually does is set the fallback
@@ -2981,7 +2981,7 @@ Toolbar Variables::).
      `default-toolbar-width', and from `default-toolbar-visible-p',
      respectively (*note Other Toolbar Variables::).
 
- - Function: default-toolbar-position
+ -- Function: default-toolbar-position
      This function returns the position that the `default-toolbar' will
      be displayed at.
 
@@ -2992,19 +2992,19 @@ toolbar.  If that does not yield a toolbar descriptor, the
 `default-toolbar' is consulted if `default-toolbar-position' indicates
 this position.
 
- - Specifier: top-toolbar
+ -- Specifier: top-toolbar
      Specifier for the toolbar at the top of the frame.
 
- - Specifier: bottom-toolbar
+ -- Specifier: bottom-toolbar
      Specifier for the toolbar at the bottom of the frame.
 
- - Specifier: left-toolbar
+ -- Specifier: left-toolbar
      Specifier for the toolbar at the left edge of the frame.
 
- - Specifier: right-toolbar
+ -- Specifier: right-toolbar
      Specifier for the toolbar at the right edge of the frame.
 
- - Function: toolbar-specifier-p object
+ -- Function: toolbar-specifier-p object
      This function returns non-`nil' if OBJECT is a toolbar specifier.
      Toolbar specifiers are the actual objects contained in the toolbar
      variables described above, and their valid instantiators are
@@ -3013,13 +3013,13 @@ this position.
 \1f
 File: lispref.info,  Node: Other Toolbar Variables,  Prev: Specifying the Toolbar,  Up: Toolbar
 
-Other Toolbar Variables
-=======================
+29.5 Other Toolbar Variables
+============================
 
 The variables to control the toolbar thickness, visibility status, and
 captioned status are all specifiers.  *Note Specifiers::.
 
- - Specifier: default-toolbar-height
+ -- Specifier: default-toolbar-height
      This specifies the height of the default toolbar, if it's oriented
      horizontally.  The position of the default toolbar is specified by
      the function `set-default-toolbar-position'.  If the corresponding
@@ -3030,7 +3030,7 @@ captioned status are all specifiers.  *Note Specifiers::.
      `default-toolbar-width' (depending on the toolbar orientation) in
      that domain, if any, will be used instead.
 
- - Specifier: default-toolbar-width
+ -- Specifier: default-toolbar-width
      This specifies the width of the default toolbar, if it's oriented
      vertically.  This behaves like `default-toolbar-height'.
 
@@ -3039,16 +3039,16 @@ captioned status are all specifiers.  *Note Specifiers::.
 `default-toolbar-width' is only used when `default-toolbar-position' is
 `left' or `right'.
 
- - Specifier: top-toolbar-height
+ -- Specifier: top-toolbar-height
      This specifies the height of the top toolbar.
 
- - Specifier: bottom-toolbar-height
+ -- Specifier: bottom-toolbar-height
      This specifies the height of the bottom toolbar.
 
- - Specifier: left-toolbar-width
+ -- Specifier: left-toolbar-width
      This specifies the width of the left toolbar.
 
- - Specifier: right-toolbar-width
+ -- Specifier: right-toolbar-width
      This specifies the width of the right toolbar.
 
    Note that all of the position-specific toolbar thickness specifiers
@@ -3056,7 +3056,7 @@ have a fallback value of zero when they do not correspond to the
 default toolbar.  Therefore, you will have to set a non-zero thickness
 value if you want a position-specific toolbar to be displayed.
 
- - Specifier: default-toolbar-visible-p
+ -- Specifier: default-toolbar-visible-p
      This specifies whether the default toolbar is visible.  The
      position of the default toolbar is specified by the function
      `set-default-toolbar-position'.  If the corresponding
@@ -3066,16 +3066,16 @@ value if you want a position-specific toolbar to be displayed.
      window or a frame), then the value of `default-toolbar-visible-p'
      in that domain, if any, will be used instead.
 
- - Specifier: top-toolbar-visible-p
+ -- Specifier: top-toolbar-visible-p
      This specifies whether the top toolbar is visible.
 
- - Specifier: bottom-toolbar-visible-p
+ -- Specifier: bottom-toolbar-visible-p
      This specifies whether the bottom toolbar is visible.
 
- - Specifier: left-toolbar-visible-p
+ -- Specifier: left-toolbar-visible-p
      This specifies whether the left toolbar is visible.
 
- - Specifier: right-toolbar-visible-p
+ -- Specifier: right-toolbar-visible-p
      This specifies whether the right toolbar is visible.
 
    `default-toolbar-visible-p' and all of the position-specific toolbar
@@ -3099,22 +3099,22 @@ displayed in the selected window, the window will have a width of 86 or
 selected window specifies that the left toolbar is not visible, so it is
 expanded to take up the slack.
 
- - Specifier: toolbar-buttons-captioned-p
+ -- Specifier: toolbar-buttons-captioned-p
      Whether toolbar buttons are captioned.  This affects which glyphs
      from a toolbar button descriptor are chosen.  *Note Toolbar
      Descriptor Format::.
 
    You can also reset the toolbar to what it was when XEmacs started up.
 
- - Constant: initial-toolbar-spec
+ -- Constant: initial-toolbar-spec
      The toolbar descriptor used to initialize `default-toolbar' at
      startup.
 
 \1f
 File: lispref.info,  Node: Gutter,  Next: Scrollbars,  Prev: Toolbar,  Up: Top
 
-Gutter
-******
+30 Gutter
+*********
 
 A gutter is a rectangle displayed along one edge of a frame.  It can
 contain arbitrary text or graphics.
@@ -3132,8 +3132,8 @@ contain arbitrary text or graphics.
 \1f
 File: lispref.info,  Node: Gutter Intro,  Next: Creating Gutter,  Prev: Gutter,  Up: Gutter
 
-Gutter Intro
-============
+30.1 Gutter Intro
+=================
 
 A "gutter" is a rectangle displayed along one edge of a frame.  It can
 contain arbitrary text or graphics.  It could be considered a
@@ -3171,10 +3171,10 @@ gutter to the same position, it will just not be visible.
 \1f
 File: lispref.info,  Node: Creating Gutter,  Next: Gutter Descriptor Format,  Prev: Gutter Intro,  Up: Gutter
 
-Creating Gutter
-===============
+30.2 Creating Gutter
+====================
 
- - Function: make-gutter-specifier spec-list
+ -- Function: make-gutter-specifier spec-list
      Return a new `gutter' specifier object with the given specification
      list.  SPEC-LIST can be a list of specifications (each of which is
      a cons of a locale and a list of instantiators), a single
@@ -3190,7 +3190,7 @@ Creating Gutter
      either strings or property-lists of strings.  See `default-gutter'
      for a description of the exact format.
 
- - Function: make-gutter-size-specifier spec-list
+ -- Function: make-gutter-size-specifier spec-list
      Return a new `gutter-size' specifier object with the given spec
      list.  SPEC-LIST can be a list of specifications (each of which is
      a cons of a locale and a list of instantiators), a single
@@ -3208,7 +3208,7 @@ Creating Gutter
      gutters contents. `autodetect' only works for top and bottom
      gutters.
 
- - Function: make-gutter-visible-specifier spec-list
+ -- Function: make-gutter-visible-specifier spec-list
      Return a new `gutter-visible' specifier object with the given spec
      list.  SPEC-LIST can be a list of specifications (each of which is
      a cons of a locale and a list of instantiators), a single
@@ -3231,8 +3231,8 @@ Creating Gutter
 \1f
 File: lispref.info,  Node: Gutter Descriptor Format,  Next: Specifying a Gutter,  Prev: Creating Gutter,  Up: Gutter
 
-Gutter Descriptor Format
-========================
+30.3 Gutter Descriptor Format
+=============================
 
 The contents of a gutter are specified using a "gutter descriptor".
 The format of a gutter descriptor is a list of "gutter button
@@ -3312,7 +3312,7 @@ others specify blank areas in the gutter.
      area.  If omitted, it defaults to a device-specific value (8
      pixels for X devices).
 
- - Function: gutter-make-button-list up &optional down disabled cap-up
+ -- Function: gutter-make-button-list up &optional down disabled cap-up
           cap-down cap-disabled
      This function calls `make-glyph' on each arg and returns a list of
      the results.  This is useful for setting the first argument of a
@@ -3320,7 +3320,7 @@ others specify blank areas in the gutter.
      is assigned to a symbol, which is specified as the first argument
      of the gutter button descriptor).
 
- - Function: check-gutter-button-syntax button &optional noerror
+ -- Function: check-gutter-button-syntax button &optional noerror
      Verify the syntax of entry BUTTON in a gutter description list.
      If you want to verify the syntax of a gutter description list as a
      whole, use `check-valid-instantiator' with a specifier type of
@@ -3329,8 +3329,8 @@ others specify blank areas in the gutter.
 \1f
 File: lispref.info,  Node: Specifying a Gutter,  Next: Other Gutter Variables,  Prev: Gutter Descriptor Format,  Up: Gutter
 
-Specifying a Gutter
-===================
+30.4 Specifying a Gutter
+========================
 
 In order to specify the contents of a gutter, set one of the specifier
 variables `default-gutter', `top-gutter', `bottom-gutter',
@@ -3344,7 +3344,7 @@ information.
    Most of the time, you will set `default-gutter', which allows the
 user to choose where the gutter should go.
 
- - Specifier: default-gutter
+ -- Specifier: default-gutter
      The position of this gutter is specified in the function
      `default-gutter-position'.  If the corresponding position-specific
      gutter (e.g. `top-gutter' if `default-gutter-position' is `top')
@@ -3360,7 +3360,7 @@ status is controlled by the specifiers `top-gutter-visible-p',
 `bottom-gutter-visible-p', `left-gutter-visible-p', and
 `right-gutter-visible-p' (*note Other Gutter Variables::).
 
- - Function: set-default-gutter-position position
+ -- Function: set-default-gutter-position position
      This function sets the position that the `default-gutter' will be
      displayed at.  Valid positions are the symbols `top', `bottom',
      `left' and `right'.  What this actually does is set the fallback
@@ -3372,7 +3372,7 @@ status is controlled by the specifiers `top-gutter-visible-p',
      `default-gutter-width', and from `default-gutter-visible-p',
      respectively (*note Other Gutter Variables::).
 
- - Function: default-gutter-position
+ -- Function: default-gutter-position
      This function returns the position that the `default-gutter' will
      be displayed at.
 
@@ -3383,19 +3383,19 @@ gutter.  If that does not yield a gutter descriptor, the
 `default-gutter' is consulted if `default-gutter-position' indicates
 this position.
 
- - Specifier: top-gutter
+ -- Specifier: top-gutter
      Specifier for the gutter at the top of the frame.
 
- - Specifier: bottom-gutter
+ -- Specifier: bottom-gutter
      Specifier for the gutter at the bottom of the frame.
 
- - Specifier: left-gutter
+ -- Specifier: left-gutter
      Specifier for the gutter at the left edge of the frame.
 
- - Specifier: right-gutter
+ -- Specifier: right-gutter
      Specifier for the gutter at the right edge of the frame.
 
- - Function: gutter-specifier-p object
+ -- Function: gutter-specifier-p object
      This function returns non-`nil' if OBJECT is a gutter specifier.
      Gutter specifiers are the actual objects contained in the gutter
      variables described above, and their valid instantiators are
@@ -3404,13 +3404,13 @@ this position.
 \1f
 File: lispref.info,  Node: Other Gutter Variables,  Next: Common Gutter Widgets,  Prev: Specifying a Gutter,  Up: Gutter
 
-Other Gutter Variables
-======================
+30.5 Other Gutter Variables
+===========================
 
 The variables to control the gutter thickness, visibility status, and
 captioned status are all specifiers.  *Note Specifiers::.
 
- - Specifier: default-gutter-height
+ -- Specifier: default-gutter-height
      This specifies the height of the default gutter, if it's oriented
      horizontally.  The position of the default gutter is specified by
      the function `set-default-gutter-position'.  If the corresponding
@@ -3421,7 +3421,7 @@ captioned status are all specifiers.  *Note Specifiers::.
      `default-gutter-width' (depending on the gutter orientation) in
      that domain, if any, will be used instead.
 
- - Specifier: default-gutter-width
+ -- Specifier: default-gutter-width
      This specifies the width of the default gutter, if it's oriented
      vertically.  This behaves like `default-gutter-height'.
 
@@ -3430,16 +3430,16 @@ captioned status are all specifiers.  *Note Specifiers::.
 `default-gutter-width' is only used when `default-gutter-position' is
 `left' or `right'.
 
- - Specifier: top-gutter-height
+ -- Specifier: top-gutter-height
      This specifies the height of the top gutter.
 
- - Specifier: bottom-gutter-height
+ -- Specifier: bottom-gutter-height
      This specifies the height of the bottom gutter.
 
- - Specifier: left-gutter-width
+ -- Specifier: left-gutter-width
      This specifies the width of the left gutter.
 
- - Specifier: right-gutter-width
+ -- Specifier: right-gutter-width
      This specifies the width of the right gutter.
 
    Note that all of the position-specific gutter thickness specifiers
@@ -3447,7 +3447,7 @@ have a fallback value of zero when they do not correspond to the
 default gutter.  Therefore, you will have to set a non-zero thickness
 value if you want a position-specific gutter to be displayed.
 
- - Specifier: default-gutter-visible-p
+ -- Specifier: default-gutter-visible-p
      This specifies whether the default gutter is visible.  The
      position of the default gutter is specified by the function
      `set-default-gutter-position'.  If the corresponding
@@ -3457,16 +3457,16 @@ value if you want a position-specific gutter to be displayed.
      a frame), then the value of `default-gutter-visible-p' in that
      domain, if any, will be used instead.
 
- - Specifier: top-gutter-visible-p
+ -- Specifier: top-gutter-visible-p
      This specifies whether the top gutter is visible.
 
- - Specifier: bottom-gutter-visible-p
+ -- Specifier: bottom-gutter-visible-p
      This specifies whether the bottom gutter is visible.
 
- - Specifier: left-gutter-visible-p
+ -- Specifier: left-gutter-visible-p
      This specifies whether the left gutter is visible.
 
- - Specifier: right-gutter-visible-p
+ -- Specifier: right-gutter-visible-p
      This specifies whether the right gutter is visible.
 
    `default-gutter-visible-p' and all of the position-specific gutter
@@ -3490,22 +3490,22 @@ displayed in the selected window, the window will have a width of 86 or
 selected window specifies that the left gutter is not visible, so it is
 expanded to take up the slack.
 
- - Specifier: gutter-buttons-captioned-p
+ -- Specifier: gutter-buttons-captioned-p
      Whether gutter buttons are captioned.  This affects which glyphs
      from a gutter button descriptor are chosen.  *Note Gutter
      Descriptor Format::.
 
    You can also reset the gutter to what it was when XEmacs started up.
 
- - Constant: initial-gutter-spec
+ -- Constant: initial-gutter-spec
      The gutter descriptor used to initialize `default-gutter' at
      startup.
 
 \1f
 File: lispref.info,  Node: Common Gutter Widgets,  Prev: Other Gutter Variables,  Up: Gutter
 
-Common Gutter Widgets
-=====================
+30.6 Common Gutter Widgets
+==========================
 
 A gutter can contain arbitrary text.  So, for example, in an Info
 buffer you could put the title of the current node in the top gutter,
@@ -3528,32 +3528,32 @@ time-consuming operations like downloading.
 \1f
 File: lispref.info,  Node: Buffer Tabs,  Next: Progress Bars,  Up: Common Gutter Widgets
 
-Buffer Tabs
------------
+30.6.1 Buffer Tabs
+------------------
 
 Not documented yet.
 
 \1f
 File: lispref.info,  Node: Progress Bars,  Prev: Buffer Tabs,  Up: Common Gutter Widgets
 
-Progress Bars
--------------
+30.6.2 Progress Bars
+--------------------
 
 Not documented yet.
 
 \1f
 File: lispref.info,  Node: Scrollbars,  Next: Drag and Drop,  Prev: Gutter,  Up: Top
 
-Scrollbars
-**********
+31 Scrollbars
+*************
 
 Not yet documented.
 
 \1f
 File: lispref.info,  Node: Drag and Drop,  Next: Modes,  Prev: Scrollbars,  Up: Top
 
-Drag and Drop
-*************
+32 Drag and Drop
+****************
 
 _WARNING_: the Drag'n'Drop API is still under development and the
 interface may change! The current implementation is considered
@@ -3579,8 +3579,8 @@ powerful interfaces to support these types of data (tm and w3).
 \1f
 File: lispref.info,  Node: Supported Protocols,  Next: Drop Interface,  Up: Drag and Drop
 
-Supported Protocols
-===================
+32.1 Supported Protocols
+========================
 
 The current release of XEmacs only support a small set of Drag'n'drop
 protocols. Some of these only support limited options available in the
@@ -3596,8 +3596,8 @@ API.
 \1f
 File: lispref.info,  Node: OffiX DND,  Next: CDE dt,  Up: Supported Protocols
 
-OffiX DND
----------
+32.1.1 OffiX DND
+----------------
 
 _WARNING_: If you compile in OffiX, you may not be able to use multiple
 X displays successfully.  If the two servers are from different
@@ -3623,8 +3623,8 @@ http://leb.net/~offix/
 \1f
 File: lispref.info,  Node: CDE dt,  Next: MSWindows OLE,  Prev: OffiX DND,  Up: Supported Protocols
 
-CDE dt
-------
+32.1.2 CDE dt
+-------------
 
 CDE stands for Common Desktop Environment. It is based on the Motif
 widget library. It's drag'n'drop protocol is also an abstraction of the
@@ -3640,16 +3640,16 @@ file method URLs are passed through.
 \1f
 File: lispref.info,  Node: MSWindows OLE,  Next: Loose ends,  Prev: CDE dt,  Up: Supported Protocols
 
-MSWindows OLE
--------------
+32.1.3 MSWindows OLE
+--------------------
 
 Only allows file drags and drops.
 
 \1f
 File: lispref.info,  Node: Loose ends,  Prev: MSWindows OLE,  Up: Supported Protocols
 
-Loose ends
-----------
+32.1.4 Loose ends
+-----------------
 
 The following protocols will be supported soon: Xdnd, Motif, Xde (if I
 get some specs), KDE OffiX (if KDE can find XEmacs windows).
@@ -3660,8 +3660,8 @@ the XEmacs API, cause it also uses MIME types to encode dragged data.
 \1f
 File: lispref.info,  Node: Drop Interface,  Next: Drag Interface,  Prev: Supported Protocols,  Up: Drag and Drop
 
-Drop Interface
-==============
+32.2 Drop Interface
+===================
 
 For each activated low-level protocol, an internal routine will catch
 incoming drops and convert them to a dragdrop-drop type misc-user-event.
@@ -3685,16 +3685,16 @@ interest.
 \1f
 File: lispref.info,  Node: Drag Interface,  Prev: Drop Interface,  Up: Drag and Drop
 
-Drag Interface
-==============
+32.3 Drag Interface
+===================
 
 This describes the drag API (not implemented yet).
 
 \1f
 File: lispref.info,  Node: Modes,  Next: Documentation,  Prev: Drag and Drop,  Up: Top
 
-Major and Minor Modes
-*********************
+33 Major and Minor Modes
+************************
 
 A "mode" is a set of definitions that customize XEmacs and can be
 turned on and off while you edit.  There are two varieties of modes:
@@ -3717,11 +3717,16 @@ Keymaps::, and *Note Syntax Tables::.
 \1f
 File: lispref.info,  Node: Major Modes,  Next: Minor Modes,  Up: Modes
 
-Major Modes
-===========
+33.1 Major Modes
+================
 
 Major modes specialize XEmacs for editing particular kinds of text.
-Each buffer has only one major mode at a time.
+Each buffer has only one major mode at a time.  For each major mode
+there is a function to switch to that mode in the current buffer; its
+name should end in `-mode'.  These functions work by setting
+buffer-local variable bindings and other data associated with the
+buffer, such as a local keymap.  The effect lasts until you switch to
+another major mode in the same buffer.
 
    The least specialized major mode is called "Fundamental mode".  This
 mode has no mode-specific definitions or variable settings, so each
@@ -3745,6 +3750,11 @@ Derived Modes::).  For example, Rmail Edit mode, which is in
 mode except that it provides three additional commands.  Its definition
 is distinct from that of Text mode, but was derived from it.
 
+   Even if the new mode is not an obvious derivative of any other mode,
+it is convenient to use `define-derived-mode' with a `nil' parent
+argument, since it automatically enforces the most important coding
+conventions for you.
+
    Rmail Edit mode is an example of a case where one piece of text is
 put temporarily into a different major mode so it can be edited in a
 different way (with ordinary XEmacs commands rather than Rmail).  In
@@ -3776,8 +3786,8 @@ complicated and specialized mode.
 \1f
 File: lispref.info,  Node: Major Mode Conventions,  Next: Example Major Modes,  Up: Major Modes
 
-Major Mode Conventions
-----------------------
+33.1.1 Major Mode Conventions
+-----------------------------
 
 The code for existing major modes follows various coding conventions,
 including conventions for local keymap and syntax table initialization,
@@ -3860,6 +3870,15 @@ define a new major mode:
      immediately before the mode's own hook (that is, after everything
      else), or it may run them earlier.
 
+   * The major mode command may start by calling some other major mode
+     command (called the "parent mode") and then alter some of its
+     settings.  A mode that does this is called a "derived mode".  The
+     recommended way to define one is to use `define-derived-mode', but
+     this is not required.  Such a mode should use `delay-mode-hooks'
+     around its entire body, including the call to the parent mode
+     command and the final call to `run-mode-hooks'.  (Using
+     `define-derived-mode' does this automatically.)
+
    * If something special should be done if the user switches a buffer
      from this mode to any other major mode, the mode can set a local
      value for `change-major-mode-hook'.
@@ -3890,7 +3909,7 @@ define a new major mode:
      adverse consequences.  Even if you never load the file more than
      once, someone else will.
 
- - Variable: change-major-mode-hook
+ -- Variable: change-major-mode-hook
      This normal hook is run by `kill-all-local-variables' before it
      does anything else.  This gives major modes a way to arrange for
      something special to be done if the user switches to a different
@@ -3901,8 +3920,8 @@ define a new major mode:
 \1f
 File: lispref.info,  Node: Example Major Modes,  Next: Auto Major Mode,  Prev: Major Mode Conventions,  Up: Major Modes
 
-Major Mode Examples
--------------------
+33.1.2 Major Mode Examples
+--------------------------
 
 Text mode is perhaps the simplest mode besides Fundamental mode.  Here
 are excerpts from  `text-mode.el' that illustrate many of the
@@ -3911,20 +3930,20 @@ conventions listed above:
      ;; Create mode-specific tables.
      (defvar text-mode-syntax-table nil
        "Syntax table used while in text mode.")
-     
+
      (if text-mode-syntax-table
          ()              ; Do not change the table if it is already set up.
        (setq text-mode-syntax-table (make-syntax-table))
        (modify-syntax-entry ?\" ".   " text-mode-syntax-table)
        (modify-syntax-entry ?\\ ".   " text-mode-syntax-table)
        (modify-syntax-entry ?' "w   " text-mode-syntax-table))
-     
+
      (defvar text-mode-abbrev-table nil
        "Abbrev table used while in text mode.")
      (define-abbrev-table 'text-mode-abbrev-table ())
-     
+
      (defvar text-mode-map nil)   ; Create a mode-specific keymap.
-     
+
      (if text-mode-map
          ()              ; Do not change the keymap if it is already set up.
        (setq text-mode-map (make-sparse-keymap))
@@ -3958,12 +3977,12 @@ correspondingly more complicated.  Here are excerpts from
      (defvar lisp-mode-syntax-table nil "")
      (defvar emacs-lisp-mode-syntax-table nil "")
      (defvar lisp-mode-abbrev-table nil "")
-     
+
      (if (not emacs-lisp-mode-syntax-table) ; Do not change the table
                                             ;   if it is already set.
          (let ((i 0))
            (setq emacs-lisp-mode-syntax-table (make-syntax-table))
-     
+
            ;; Set syntax of chars up to 0 to class of chars that are
            ;;   part of symbol names but not words.
            ;;   (The number 0 is `48' in the ASCII character set.)
@@ -4073,14 +4092,14 @@ Emacs Lisp mode.
 \1f
 File: lispref.info,  Node: Auto Major Mode,  Next: Mode Help,  Prev: Example Major Modes,  Up: Major Modes
 
-How XEmacs Chooses a Major Mode
--------------------------------
+33.1.3 How XEmacs Chooses a Major Mode
+--------------------------------------
 
 Based on information in the file name or in the file itself, XEmacs
 automatically selects a major mode for the new buffer when a file is
 visited.
 
- - Command: fundamental-mode
+ -- Command: fundamental-mode
      Fundamental mode is a major mode that is not specialized for
      anything in particular.  Other major modes are defined in effect
      by comparison with this one--their definitions say what to change,
@@ -4089,7 +4108,7 @@ visited.
      (If you want Emacs to behave differently in Fundamental mode,
      change the _global_ state of Emacs.)
 
- - Command: normal-mode &optional find-file
+ -- Command: normal-mode &optional find-file
      This function establishes the proper major mode and local variable
      bindings for the current buffer.  First it calls `set-auto-mode',
      then it runs `hack-local-variables' to parse, and bind or evaluate
@@ -4111,13 +4130,13 @@ visited.
      mode function, so errors are caught and reported as a `File mode
      specification error',  followed by the original error message.
 
- - User Option: enable-local-variables
+ -- User Option: enable-local-variables
      This variable controls processing of local variables lists in files
      being visited.  A value of `t' means process the local variables
      lists unconditionally; `nil' means ignore them; anything else means
      ask the user what to do for each file.  The default value is `t'.
 
- - Variable: ignored-local-variables
+ -- Variable: ignored-local-variables
      This variable holds a list of variables that should not be set by
      a local variables list.  Any value specified for one of these
      variables is ignored.
@@ -4125,13 +4144,13 @@ visited.
    In addition to this list, any variable whose name has a non-`nil'
 `risky-local-variable' property is also ignored.
 
- - User Option: enable-local-eval
+ -- User Option: enable-local-eval
      This variable controls processing of `Eval:' in local variables
      lists in files being visited.  A value of `t' means process them
      unconditionally; `nil' means ignore them; anything else means ask
      the user what to do for each file.  The default value is `maybe'.
 
- - Function: set-auto-mode
+ -- Function: set-auto-mode
      This function selects the major mode that is appropriate for the
      current buffer.  It may base its decision on the value of the `-*-'
      line, on the visited file name (using `auto-mode-alist'), or on the
@@ -4140,7 +4159,7 @@ visited.
      `hack-local-variables' function does that.  *Note How Major Modes
      are Chosen: (xemacs)Choosing Modes.
 
- - User Option: default-major-mode
+ -- User Option: default-major-mode
      This variable holds the default major mode for new buffers.  The
      standard value is `fundamental-mode'.
 
@@ -4152,7 +4171,7 @@ visited.
      property are those such as Dired and Rmail that are useful only
      with text that has been specially prepared.
 
- - Function: set-buffer-major-mode buffer
+ -- Function: set-buffer-major-mode buffer
      This function sets the major mode of BUFFER to the value of
      `default-major-mode'.  If that variable is `nil', it uses the
      current buffer's major mode (if that is suitable).
@@ -4161,12 +4180,12 @@ visited.
      function, but medium-level commands such as `switch-to-buffer' and
      `find-file-noselect' use it whenever they create buffers.
 
- - Variable: initial-major-mode
+ -- Variable: initial-major-mode
      The value of this variable determines the major mode of the initial
      `*scratch*' buffer.  The value should be a symbol that is a major
      mode command name.  The default value is `lisp-interaction-mode'.
 
- - Variable: auto-mode-alist
+ -- Variable: auto-mode-alist
      This variable contains an association list of file name patterns
      (regular expressions; *note Regular Expressions::) and
      corresponding major mode functions.  Usually, the file name
@@ -4213,7 +4232,7 @@ visited.
                ("\\.C\\'" . c++-mode))
              auto-mode-alist))
 
- - Variable: interpreter-mode-alist
+ -- Variable: interpreter-mode-alist
      This variable specifies major modes to use for scripts that
      specify a command interpreter in an `#!' line.  Its value is a
      list of elements of the form `(INTERPRETER . MODE)'; for example,
@@ -4223,7 +4242,7 @@ visited.
      This variable is applicable only when the `auto-mode-alist' does
      not indicate which major mode to use.
 
- - Function: hack-local-variables &optional force
+ -- Function: hack-local-variables &optional force
      This function parses, and binds or evaluates as appropriate, any
      local variables for the current buffer.
 
@@ -4234,15 +4253,15 @@ visited.
 \1f
 File: lispref.info,  Node: Mode Help,  Next: Derived Modes,  Prev: Auto Major Mode,  Up: Major Modes
 
-Getting Help about a Major Mode
--------------------------------
+33.1.4 Getting Help about a Major Mode
+--------------------------------------
 
 The `describe-mode' function is used to provide information about major
 modes.  It is normally called with `C-h m'.  The `describe-mode'
 function uses the value of `major-mode', which is why every major mode
 function needs to set the `major-mode' variable.
 
- - Command: describe-mode
+ -- Command: describe-mode
      This function displays the documentation of the current major mode.
 
      The `describe-mode' function calls the `documentation' function
@@ -4250,7 +4269,7 @@ function needs to set the `major-mode' variable.
      the documentation string of the major mode function.  (*Note
      Accessing Documentation::.)
 
- - Variable: major-mode
+ -- Variable: major-mode
      This variable holds the symbol for the current buffer's major mode.
      This symbol should have a function definition that is the command
      to switch to that major mode.  The `describe-mode' function uses
@@ -4260,13 +4279,13 @@ function needs to set the `major-mode' variable.
 \1f
 File: lispref.info,  Node: Derived Modes,  Prev: Mode Help,  Up: Major Modes
 
-Defining Derived Modes
-----------------------
+33.1.5 Defining Derived Modes
+-----------------------------
 
 It's often useful to define a new major mode in terms of an existing
 one.  An easy way to do this is to use `define-derived-mode'.
 
- - Macro: define-derived-mode variant parent name docstring body...
+ -- Macro: define-derived-mode variant parent name docstring body...
      This construct defines VARIANT as a major mode command, using NAME
      as the string form of the mode name.
 
@@ -4308,15 +4327,18 @@ one.  An easy way to do this is to use `define-derived-mode'.
             "Major mode for hypertext.
           \\{hypertext-mode-map}"
             (setq case-fold-search nil))
-          
+
           (define-key hypertext-mode-map
             [down-mouse-3] 'do-hyper-link)
 
+     Do not write an `interactive' spec in the definition;
+     `define-derived-mode' does that automatically.
+
 \1f
 File: lispref.info,  Node: Minor Modes,  Next: Modeline Format,  Prev: Major Modes,  Up: Modes
 
-Minor Modes
-===========
+33.2 Minor Modes
+================
 
 A "minor mode" provides features that users may enable or disable
 independently of the choice of major mode.  Minor modes can be enabled
@@ -4347,8 +4369,8 @@ keymaps make this easier than it used to be.
 \1f
 File: lispref.info,  Node: Minor Mode Conventions,  Next: Keymaps and Minor Modes,  Up: Minor Modes
 
-Conventions for Writing Minor Modes
------------------------------------
+33.2.1 Conventions for Writing Minor Modes
+------------------------------------------
 
 There are conventions for writing minor modes just as there are for
 major modes.  Several of the major mode conventions apply to minor
@@ -4413,8 +4435,8 @@ minor modes.
 \1f
 File: lispref.info,  Node: Keymaps and Minor Modes,  Prev: Minor Mode Conventions,  Up: Minor Modes
 
-Keymaps and Minor Modes
------------------------
+33.2.2 Keymaps and Minor Modes
+------------------------------
 
 Each minor mode can have its own keymap, which is active when the mode
 is enabled.  To set up a keymap for a minor mode, add an element to the
@@ -4431,8 +4453,8 @@ standard one.  The editor command loop handles this function specially.)
 \1f
 File: lispref.info,  Node: Modeline Format,  Next: Hooks,  Prev: Minor Modes,  Up: Modes
 
-Modeline Format
-===============
+33.3 Modeline Format
+====================
 
 Each Emacs window (aside from minibuffer windows) includes a modeline,
 which displays status information about the buffer displayed in the
@@ -4457,7 +4479,7 @@ variables referenced by `modeline-format' (*note Modeline Variables::),
 you may want to force an update of the modeline so as to display the
 new information.
 
- - Function: redraw-modeline &optional all
+ -- Function: redraw-modeline &optional all
      Force redisplay of the current buffer's modeline.  If ALL is
      non-`nil', then force redisplay of all modelines.
 
@@ -4473,8 +4495,8 @@ controlled using the `modeline' face.  *Note Faces::.
 \1f
 File: lispref.info,  Node: Modeline Data,  Next: Modeline Variables,  Up: Modeline Format
 
-The Data Structure of the Modeline
-----------------------------------
+33.3.1 The Data Structure of the Modeline
+-----------------------------------------
 
 The modeline contents are controlled by a data structure of lists,
 strings, symbols, and numbers kept in the buffer-local variable
@@ -4483,7 +4505,7 @@ construct", and it is built in recursive fashion out of simpler modeline
 constructs.  The same data structure is used for constructing frame
 titles (*note Frame Titles::).
 
- - Variable: modeline-format
+ -- Variable: modeline-format
      The value of this variable is a modeline construct with overall
      responsibility for the modeline format.  The value of this variable
      controls which other variables are used to form the modeline text,
@@ -4594,8 +4616,8 @@ changes to those variables remain effective.
 \1f
 File: lispref.info,  Node: Modeline Variables,  Next: %-Constructs,  Prev: Modeline Data,  Up: Modeline Format
 
-Variables Used in the Modeline
-------------------------------
+33.3.2 Variables Used in the Modeline
+-------------------------------------
 
 This section describes variables incorporated by the standard value of
 `modeline-format' into the text of the mode line.  There is nothing
@@ -4603,7 +4625,7 @@ inherently special about these variables; any other variables could
 have the same effects on the modeline if `modeline-format' were changed
 to use them.
 
- - Variable: modeline-modified
+ -- Variable: modeline-modified
      This variable holds the value of the modeline construct that
      displays whether the current buffer is modified.
 
@@ -4615,7 +4637,7 @@ to use them.
 
      Changing this variable does not force an update of the modeline.
 
- - Variable: modeline-buffer-identification
+ -- Variable: modeline-buffer-identification
      This variable identifies the buffer being displayed in the window.
      Its default value is `("%F: %17b")', which means that it usually
      displays `Emacs:' followed by seventeen characters of the buffer
@@ -4624,7 +4646,7 @@ to use them.
      want to change this in modes such as Rmail that do not behave like
      a "normal" XEmacs.
 
- - Variable: global-mode-string
+ -- Variable: global-mode-string
      This variable holds a modeline spec that appears in the mode line
      by default, just after the buffer name.  The command `display-time'
      sets `global-mode-string' to refer to the variable
@@ -4635,12 +4657,12 @@ to use them.
      but this is obsolete, since the variable is included directly in
      the modeline.
 
- - Variable: mode-name
+ -- Variable: mode-name
      This buffer-local variable holds the "pretty" name of the current
      buffer's major mode.  Each major mode should set this variable so
      that the mode name will appear in the modeline.
 
- - Variable: minor-mode-alist
+ -- Variable: minor-mode-alist
      This variable holds an association list whose elements specify how
      the modeline should indicate that a minor mode is active.  Each
      element of the `minor-mode-alist' should be a two-element list:
@@ -4668,7 +4690,7 @@ to use them.
      in the alist should be buffer-local if the minor mode can be
      enabled separately in each buffer.
 
- - Variable: modeline-process
+ -- Variable: modeline-process
      This buffer-local variable contains the modeline information on
      process status in modes used for communicating with subprocesses.
      It is displayed immediately following the major mode name, with no
@@ -4677,7 +4699,7 @@ to use them.
      with the major mode as: `(Shell: run)'.  Normally this variable is
      `nil'.
 
- - Variable: default-modeline-format
+ -- Variable: default-modeline-format
      This variable holds the default `modeline-format' for buffers that
      do not override it.  This is the same as `(default-value
      'modeline-format)'.
@@ -4699,7 +4721,7 @@ to use them.
            (-3 . "%p")
            "-%-")
 
- - Variable: vc-mode
+ -- Variable: vc-mode
      The variable `vc-mode', local in each buffer, records whether the
      buffer's visited file is maintained with version control, and, if
      so, which kind.  Its value is `nil' for no version control, or a
@@ -4708,8 +4730,8 @@ to use them.
 \1f
 File: lispref.info,  Node: %-Constructs,  Prev: Modeline Variables,  Up: Modeline Format
 
-`%'-Constructs in the ModeLine
-------------------------------
+33.3.3 `%'-Constructs in the ModeLine
+-------------------------------------
 
 The following table lists the recognized `%'-constructs and what they
 mean.  In any construct except `%%', you can add a decimal integer
@@ -4808,8 +4830,8 @@ obsolete, since you can get the same results with the variables
 \1f
 File: lispref.info,  Node: Hooks,  Prev: Modeline Format,  Up: Modes
 
-Hooks
-=====
+33.4 Hooks
+==========
 
 A "hook" is a variable where you can store a function or functions to
 be called on a particular occasion by an existing program.  XEmacs
@@ -4862,7 +4884,7 @@ expression.
                          c-continued-statement-indent 0
                          c-brace-offset 0
                          comment-column 40))))
-     
+
      (setq c++-mode-hook c-mode-hook)
 
    The final example shows how the appearance of the modeline can be
@@ -4890,7 +4912,7 @@ modified for a particular class of buffers only.
 particular hooks.  This function calls the hook functions you have
 added with `add-hooks'.
 
- - Function: run-hooks &rest hookvar
+ -- Function: run-hooks &rest hookvar
      This function takes one or more hook variable names as arguments,
      and runs each hook in turn.  Each HOOKVAR argument should be a
      symbol that is a hook variable.  These arguments are processed in
@@ -4906,7 +4928,36 @@ added with `add-hooks'.
 
           (run-hooks 'emacs-lisp-mode-hook)
 
- - Function: add-hook hook function &optional append local
+ -- Function: run-mode-hooks &rest hookvars
+     Like `run-hooks', but is affected by the `delay-mode-hooks' macro.
+
+ -- Macro: delay-mode-hooks body...
+     This macro executes the BODY forms but defers all calls to
+     `run-mode-hooks' within them until the end of BODY.  This macro
+     enables a derived mode to arrange not to run its parent modes'
+     mode hooks until the end.
+
+ -- Function: run-hook-with-args hook &rest args
+     This function is the way to run an abnormal hook and always call
+     all of the hook functions.  It calls each of the hook functions
+     one by one, passing each of them the arguments ARGS.
+
+ -- Function: run-hook-with-args-until-failure hook &rest args
+     This function is the way to run an abnormal hook until one of the
+     hook functions fails.  It calls each of the hook functions,
+     passing each of them the arguments ARGS, until some hook function
+     returns `nil'.  It then stops and returns `nil'.  If none of the
+     hook functions return `nil', it returns a non-`nil' value.
+
+ -- Function: run-hook-with-args-until-success hook &rest args
+     This function is the way to run an abnormal hook until a hook
+     function succeeds.  It calls each of the hook functions, passing
+     each of them the arguments ARGS, until some hook function returns
+     non-`nil'.  Then it stops, and returns whatever was returned by
+     the last hook function that was called.  If all hook functions
+     return `nil', it returns `nil' as well.
+
+ -- Function: add-hook hook function &optional append local
      This function is the handy way to add function FUNCTION to hook
      variable HOOK.  The argument FUNCTION may be any valid Lisp
      function with the proper number of arguments.  For example,
@@ -4935,7 +4986,7 @@ added with `add-hooks'.
      buffer-local, then the value of LOCAL makes no difference--the
      hook function is always global.
 
- - Function: remove-hook hook function &optional local
+ -- Function: remove-hook hook function &optional local
      This function removes FUNCTION from the hook variable HOOK.
 
      If LOCAL is non-`nil', that says to remove FUNCTION from the local
@@ -4943,7 +4994,7 @@ added with `add-hooks'.
      itself is not buffer-local, then the value of LOCAL makes no
      difference.
 
- - Function: make-local-hook hook
+ -- Function: make-local-hook hook
      This function makes the hook variable HOOK local to the current
      buffer.  When a hook variable is local, it can have local and
      global hook functions, and `run-hooks' runs all of them.
@@ -4962,8 +5013,8 @@ added with `add-hooks'.
 \1f
 File: lispref.info,  Node: Documentation,  Next: Files,  Prev: Modes,  Up: Top
 
-Documentation
-*************
+34 Documentation
+****************
 
 XEmacs Lisp has convenient on-line help facilities, most of which
 derive their information from the documentation strings associated with
@@ -4993,8 +5044,8 @@ topics of discussion.
 \1f
 File: lispref.info,  Node: Documentation Basics,  Next: Accessing Documentation,  Up: Documentation
 
-Documentation Basics
-====================
+34.1 Documentation Basics
+=========================
 
 A documentation string is written using the Lisp syntax for strings,
 with double-quote characters surrounding the text of the string.  This
@@ -5055,10 +5106,10 @@ use to print nice-looking hardcopy for the file
 \1f
 File: lispref.info,  Node: Accessing Documentation,  Next: Keys in Documentation,  Prev: Documentation Basics,  Up: Documentation
 
-Access to Documentation Strings
-===============================
+34.2 Access to Documentation Strings
+====================================
 
- - Function: documentation-property symbol property &optional verbatim
+ -- Function: documentation-property symbol property &optional verbatim
      This function returns the documentation string that is recorded in
      SYMBOL's property list under property PROPERTY.  It retrieves the
      text from a file if necessary, and runs `substitute-command-keys'
@@ -5072,7 +5123,7 @@ Access to Documentation Strings
           (symbol-plist 'command-line-processed)
                => (variable-documentation 188902)
 
- - Function: documentation function &optional verbatim
+ -- Function: documentation function &optional verbatim
      This function returns the documentation string of FUNCTION.  It
      reads the text from a file if necessary.  Then (unless VERBATIM is
      non-`nil') it calls `substitute-command-keys', to return a value
@@ -5110,7 +5161,7 @@ several symbols in a `*Help*' buffer.
                           "Function")
                         (or (documentation s)
                             "not documented"))))
-     
+
                  (if (boundp s)              ; It is a variable.
                      (princ
                       (format "%s\t%s\n%s\n\n" s
@@ -5120,13 +5171,13 @@ several symbols in a `*Help*' buffer.
                               s 'variable-documentation)
                             "not documented")))))))
              sym-list)
-     
+
          ;; Build a list of symbols that match pattern.
          (mapatoms (function
                     (lambda (sym)
                       (if (string-match pattern (symbol-name sym))
                           (setq sym-list (cons sym sym-list))))))
-     
+
          ;; Display the data.
          (with-output-to-temp-buffer "*Help*"
            (mapcar describe-func (sort sym-list 'string<))
@@ -5136,11 +5187,11 @@ several symbols in a `*Help*' buffer.
 more information.
 
      (describe-symbols "goal")
-     
+
      ---------- Buffer: *Help* ----------
      goal-column     Option
      *Semipermanent goal column for vertical motion, as set by C-x C-n, or nil.
-     
+
      set-goal-column Command: C-x C-n
      Set the current horizontal position as a goal for C-n and C-p.
      Those commands will move to this position in the line moved to
@@ -5148,7 +5199,7 @@ more information.
      With a non-`nil' argument, clears out the goal column
      so that C-n and C-p resume vertical motion.
      The goal column is stored in the variable `goal-column'.
-     
+
      temporary-goal-column   Variable
      Current goal column for vertical motion.
      It is the column where point was
@@ -5156,7 +5207,7 @@ more information.
      When the `track-eol' feature is doing its job, the value is 9999.
      ---------- Buffer: *Help* ----------
 
- - Function: Snarf-documentation filename
+ -- Function: Snarf-documentation filename
      This function is used only during XEmacs initialization, just
      before the runnable XEmacs is dumped.  It finds the file offsets
      of the documentation strings stored in the file FILENAME, and
@@ -5170,13 +5221,13 @@ more information.
      but this can be changed by modifying the variable
      `internal-doc-file-name'.
 
- - Variable: internal-doc-file-name
+ -- Variable: internal-doc-file-name
      This variable holds the name of the file containing documentation
      strings of built-in symbols, usually `DOC'.  The full pathname of
      the internal doc file is `(concat doc-directory
      internal-doc-file-name)'.
 
- - Variable: doc-directory
+ -- Variable: doc-directory
      This variable holds the name of the directory which contains the
      "internal doc file" that contains documentation strings for
      built-in and preloaded functions and variables.
@@ -5188,7 +5239,7 @@ more information.
 
      In older Emacs versions, `exec-directory' was used for this.
 
- - Variable: data-directory
+ -- Variable: data-directory
      This variable holds the name of the directory in which XEmacs finds
      certain system independent documentation and text files that come
      with XEmacs.  In older Emacs versions, `exec-directory' was used
@@ -5197,8 +5248,8 @@ more information.
 \1f
 File: lispref.info,  Node: Keys in Documentation,  Next: Describing Characters,  Prev: Accessing Documentation,  Up: Documentation
 
-Substituting Key Bindings in Documentation
-==========================================
+34.3 Substituting Key Bindings in Documentation
+===============================================
 
 When documentation strings refer to key sequences, they should use the
 current, actual key bindings.  They can do so using certain special text
@@ -5229,7 +5280,7 @@ also call that function yourself.
    *Please note:* Each `\' must be doubled when written in a string in
 XEmacs Lisp.
 
- - Function: substitute-command-keys string
+ -- Function: substitute-command-keys string
      This function scans STRING for the above special sequences and
      replaces them by what they stand for, returning the result as a
      string.  This permits display of documentation that refers
@@ -5240,12 +5291,12 @@ XEmacs Lisp.
      (substitute-command-keys
         "To abort recursive edit, type: \\[abort-recursive-edit]")
      => "To abort recursive edit, type: C-]"
-     
+
      (substitute-command-keys
         "The keys that are defined for the minibuffer here are:
        \\{minibuffer-local-must-match-map}")
      => "The keys that are defined for the minibuffer here are:
-     
+
      ?               minibuffer-completion-help
      SPC             minibuffer-complete-word
      TAB             minibuffer-complete
@@ -5253,12 +5304,12 @@ XEmacs Lisp.
      RET             minibuffer-complete-and-exit
      C-g             abort-recursive-edit
      "
-     
+
      (substitute-command-keys
         "To abort a recursive edit from the minibuffer, type\
      \\<minibuffer-local-must-match-map>\\[abort-recursive-edit].")
      => "To abort a recursive edit from the minibuffer, type C-g."
-     
+
      (substitute-command-keys
        "Substrings of the form \\=\\{MAPVAR} are replaced by summaries
      \(made by `describe-bindings') of the value of MAPVAR, taken as a keymap.
@@ -5278,8 +5329,8 @@ XEmacs Lisp.
 \1f
 File: lispref.info,  Node: Describing Characters,  Next: Help Functions,  Prev: Keys in Documentation,  Up: Documentation
 
-Describing Characters for Help Messages
-=======================================
+34.4 Describing Characters for Help Messages
+============================================
 
 These functions convert events, key sequences or characters to textual
 descriptions.  These descriptions are useful for including arbitrary
@@ -5288,14 +5339,14 @@ non-printing and whitespace characters to sequences of printing
 characters.  The description of a non-whitespace printing character is
 the character itself.
 
- - Function: key-description sequence
+ -- Function: key-description sequence
      This function returns a string containing the XEmacs standard
      notation for the input events in SEQUENCE.  The argument SEQUENCE
      may be a string, vector or list.  *Note Events::, for more
      information about valid events.  See also the examples for
      `single-key-description', below.
 
- - Function: single-key-description key
+ -- Function: single-key-description key
      This function returns a string describing KEY in the standard
      XEmacs notation for keyboard input.  A normal printing character
      appears as itself, but a control character turns into a string
@@ -5313,7 +5364,7 @@ the character itself.
           (single-key-description '(shift button1))
                => "Sh-button1"
 
- - Function: text-char-description character
+ -- Function: text-char-description character
      This function returns a string describing CHARACTER in the
      standard XEmacs notation for characters that appear in text--like
      `single-key-description', except that control characters are
@@ -5330,15 +5381,15 @@ the character itself.
 \1f
 File: lispref.info,  Node: Help Functions,  Next: Obsoleteness,  Prev: Describing Characters,  Up: Documentation
 
-Help Functions
-==============
+34.5 Help Functions
+===================
 
 XEmacs provides a variety of on-line help functions, all accessible to
 the user as subcommands of the prefix `C-h', or on some keyboards,
 `help'.  For more information about them, see *Note Help: (emacs)Help.
 Here we describe some program-level interfaces to the same information.
 
- - Command: apropos regexp &optional do-all predicate
+ -- Command: apropos regexp &optional do-all predicate
      This function finds all symbols whose names contain a match for the
      regular expression REGEXP, and returns a list of them (*note
      Regular Expressions::).  It also displays the symbols in a buffer
@@ -5360,7 +5411,7 @@ Here we describe some program-level interfaces to the same information.
                => (Buffer-menu-execute command-execute exec-directory
               exec-path execute-extended-command execute-kbd-macro
               executing-kbd-macro executing-macro)
-          
+
           (apropos "exec" nil 'commandp)
                => (Buffer-menu-execute execute-extended-command)
 
@@ -5373,11 +5424,11 @@ Here we describe some program-level interfaces to the same information.
 
           (apropos string t 'commandp)
 
- - Variable: help-map
+ -- Variable: help-map
      The value of this variable is a local keymap for characters
      following the Help key, `C-h'.
 
- - Prefix Command: help-command
+ -- Prefix Command: help-command
      This symbol is not a function; its function definition is actually
      the keymap known as `help-map'.  It is defined in `help.el' as
      follows:
@@ -5385,7 +5436,7 @@ Here we describe some program-level interfaces to the same information.
           (define-key global-map "\C-h" 'help-command)
           (fset 'help-command help-map)
 
- - Function: print-help-return-message &optional function
+ -- Function: print-help-return-message &optional function
      This function builds a string that explains how to restore the
      previous state of the windows after a help command.  After
      building the message, it applies FUNCTION to it if FUNCTION is
@@ -5398,7 +5449,7 @@ Here we describe some program-level interfaces to the same information.
      For an example of its use, see the long example in *Note Accessing
      Documentation::.
 
- - Variable: help-char
+ -- Variable: help-char
      The value of this variable is the help character--the character
      that XEmacs recognizes as meaning Help.  By default, it is the
      character `?\^H' (ASCII 8), which is `C-h'.  When XEmacs reads this
@@ -5420,7 +5471,7 @@ Here we describe some program-level interfaces to the same information.
      `describe-prefix-bindings', which displays a list of all the
      subcommands of the prefix key.
 
- - Variable: help-form
+ -- Variable: help-form
      If this variable is non-`nil', its value is a form to evaluate
      whenever the character `help-char' is read.  If evaluating the form
      produces a string, that string is displayed.
@@ -5434,14 +5485,14 @@ Here we describe some program-level interfaces to the same information.
      Entry to the minibuffer binds this variable to the value of
      `minibuffer-help-form' (*note Minibuffer Misc::).
 
- - Variable: prefix-help-command
+ -- Variable: prefix-help-command
      This variable holds a function to print help for a prefix
      character.  The function is called when the user types a prefix
      key followed by the help character, and the help character has no
      binding after that prefix.  The variable's default value is
      `describe-prefix-bindings'.
 
- - Command: describe-prefix-bindings
+ -- Command: describe-prefix-bindings
      This function calls `describe-bindings' to display a list of all
      the subcommands of the prefix key of the most recent key sequence.
      The prefix described consists of all but the last event of that
@@ -5453,12 +5504,12 @@ such as the "electric" modes.  You must load that library with
 `(require 'helper)' in order to use them.  Their names begin with
 `Helper' to distinguish them from the ordinary help functions.
 
- - Command: Helper-describe-bindings
+ -- Command: Helper-describe-bindings
      This command pops up a window displaying a help buffer containing a
      listing of all of the key bindings from both the local and global
      keymaps.  It works by calling `describe-bindings'.
 
- - Command: Helper-help
+ -- Command: Helper-help
      This command provides help for the current mode.  It prompts the
      user in the minibuffer with the message `Help (Type ? for further
      options)', and then provides assistance in finding out what the key
@@ -5469,8 +5520,8 @@ such as the "electric" modes.  You must load that library with
 \1f
 File: lispref.info,  Node: Obsoleteness,  Prev: Help Functions,  Up: Documentation
 
-Obsoleteness
-============
+34.6 Obsoleteness
+=================
 
 As you add functionality to a package, you may at times want to replace
 an older function with a new one.  To preserve compatibility with
@@ -5479,7 +5530,7 @@ that function should be told to use the newer one instead.  XEmacs Lisp
 lets you mark a function or variable as "obsolete", and indicate what
 should be used instead.
 
- - Command: make-obsolete function new
+ -- Command: make-obsolete function new &optional when
      This function indicates that FUNCTION is an obsolete function, and
      the function NEW should be used instead.  The byte compiler will
      issue a warning to this effect when it encounters a usage of the
@@ -5487,18 +5538,20 @@ should be used instead.
      function's documentation.  NEW can also be a string (if there is
      not a single function with the same functionality any more), and
      should be a descriptive statement, such as "use FOO or BAR
-     instead" or "this function is unnecessary".
+     instead" or "this function is unnecessary".  If provided, WHEN
+     should be a string indicating when the function was first made
+     obsolete, for example a date or a release number.
 
- - Command: make-obsolete-variable variable new
+ -- Command: make-obsolete-variable variable new
      This is like `make-obsolete' but is for variables instead of
      functions.
 
- - Function: define-obsolete-function-alias oldfun newfun
+ -- Function: define-obsolete-function-alias oldfun newfun
      This function combines `make-obsolete' and `define-function',
      declaring OLDFUN to be an obsolete variant of NEWFUN and defining
      OLDFUN as an alias for NEWFUN.
 
- - Function: define-obsolete-variable-alias oldvar newvar
+ -- Function: define-obsolete-variable-alias oldvar newvar
      This is like `define-obsolete-function-alias' but for variables.
 
    Note that you should not normally put obsoleteness information
@@ -5514,13 +5567,13 @@ the user is told about the obsoleteness and is forced to look at the
 documentation of the new function, making it more likely that he will
 use the new function.
 
- - Function: function-obsoleteness-doc function
+ -- Function: function-obsoleteness-doc function
      If FUNCTION is obsolete, this function returns a string describing
      this.  This is the message that is printed out during byte
      compilation or in the function's documentation.  If FUNCTION is
      not obsolete, `nil' is returned.
 
- - Function: variable-obsoleteness-doc variable
+ -- Function: variable-obsoleteness-doc variable
      This is like `function-obsoleteness-doc' but for variables.
 
    The obsoleteness information is stored internally by putting a
@@ -5533,8 +5586,8 @@ implementation of `make-obsolete' and `make-obsolete-variable' in
 \1f
 File: lispref.info,  Node: Files,  Next: Backups and Auto-Saving,  Prev: Documentation,  Up: Top
 
-Files
-*****
+35 Files
+********
 
 In XEmacs, you can find, create, view, save, and otherwise work with
 files and file directories.  This chapter describes most of the
@@ -5571,8 +5624,8 @@ functions don't recognize environment variable substitutions such as
 \1f
 File: lispref.info,  Node: Visiting Files,  Next: Saving Buffers,  Up: Files
 
-Visiting Files
-==============
+35.1 Visiting Files
+===================
 
 Visiting a file means reading a file into a buffer.  Once this is done,
 we say that the buffer is "visiting" that file, and call the file "the
@@ -5604,8 +5657,8 @@ however, it is good to keep the distinction in mind.
 \1f
 File: lispref.info,  Node: Visiting Functions,  Next: Subroutines of Visiting,  Up: Visiting Files
 
-Functions for Visiting Files
-----------------------------
+35.1.1 Functions for Visiting Files
+-----------------------------------
 
 This section describes the functions normally used to visit files.  For
 historical reasons, these functions have names starting with `find-'
@@ -5618,7 +5671,7 @@ not alter it, the fastest way is to use `insert-file-contents' in a
 temporary buffer.  Visiting the file is not necessary and takes longer.
 *Note Reading from Files::.
 
- - Command: find-file filename
+ -- Command: find-file filename
      This command selects a buffer visiting the file FILENAME, using an
      existing buffer if there is one, and otherwise creating a new
      buffer and reading the file into it.  It also returns that buffer.
@@ -5633,7 +5686,7 @@ temporary buffer.  Visiting the file is not necessary and takes longer.
      When `find-file' is called interactively, it prompts for FILENAME
      in the minibuffer.
 
- - Function: find-file-noselect filename &optional nowarn
+ -- Function: find-file-noselect filename &optional nowarn
      This function is the guts of all the file-visiting functions.  It
      finds or creates a buffer visiting the file FILENAME, and returns
      it.  It uses an existing buffer if there is one, and otherwise
@@ -5669,21 +5722,21 @@ temporary buffer.  Visiting the file is not necessary and takes longer.
           (find-file-noselect "/etc/fstab")
                => #<buffer fstab>
 
- - Command: find-file-other-window filename
+ -- Command: find-file-other-window filename
      This command selects a buffer visiting the file FILENAME, but does
      so in a window other than the selected window.  It may use another
      existing window or split a window; see *Note Displaying Buffers::.
 
      When this command is called interactively, it prompts for FILENAME.
 
- - Command: find-file-read-only filename
+ -- Command: find-file-read-only filename
      This command selects a buffer visiting the file FILENAME, like
      `find-file', but it marks the buffer as read-only.  *Note Read
      Only Buffers::, for related functions and variables.
 
      When this command is called interactively, it prompts for FILENAME.
 
- - Command: view-file filename &optional other-window-p
+ -- Command: view-file filename &optional other-window-p
      This command visits FILENAME in View mode, and displays it in a
      recursive edit, returning to the previous buffer when done.  View
      mode is a mode that allows you to skim rapidly through the file
@@ -5695,7 +5748,7 @@ temporary buffer.  Visiting the file is not necessary and takes longer.
      With non-`nil' prefix arg OTHER-WINDOW-P, visit FILENAME in
      another window.
 
- - Variable: find-file-hooks
+ -- Variable: find-file-hooks
      The value of this variable is a list of functions to be called
      after a file is visited.  The file's local-variables specification
      (if any) will have been processed before the hooks are run.  The
@@ -5705,7 +5758,7 @@ temporary buffer.  Visiting the file is not necessary and takes longer.
      This variable works just like a normal hook, but we think that
      renaming it would not be advisable.
 
- - Variable: find-file-not-found-hooks
+ -- Variable: find-file-not-found-hooks
      The value of this variable is a list of functions to be called when
      `find-file' or `find-file-noselect' is passed a nonexistent file
      name.  `find-file-noselect' calls these functions as soon as it
@@ -5719,14 +5772,14 @@ temporary buffer.  Visiting the file is not necessary and takes longer.
 \1f
 File: lispref.info,  Node: Subroutines of Visiting,  Prev: Visiting Functions,  Up: Visiting Files
 
-Subroutines of Visiting
------------------------
+35.1.2 Subroutines of Visiting
+------------------------------
 
 The `find-file-noselect' function uses the `create-file-buffer' and
 `after-find-file' functions as subroutines.  Sometimes it is useful to
 call them directly.
 
- - Function: create-file-buffer filename
+ -- Function: create-file-buffer filename
      This function creates a suitably named buffer for visiting
      FILENAME, and returns it.  It uses FILENAME (sans directory) as
      the name if that name is free; otherwise, it appends a string such
@@ -5746,7 +5799,7 @@ call them directly.
      This function is used by `find-file-noselect'.  It uses
      `generate-new-buffer' (*note Creating Buffers::).
 
- - Function: after-find-file &optional error warn noauto
+ -- Function: after-find-file &optional error warn noauto
      This function sets the buffer major mode, and parses local
      variables (*note Auto Major Mode::).  It is called by
      `find-file-noselect' and by the default revert function (*note
@@ -5770,8 +5823,8 @@ call them directly.
 \1f
 File: lispref.info,  Node: Saving Buffers,  Next: Reading from Files,  Prev: Visiting Files,  Up: Files
 
-Saving Buffers
-==============
+35.2 Saving Buffers
+===================
 
 When you edit a file in XEmacs, you are actually working on a buffer
 that is visiting that file--that is, the contents of the file are
@@ -5779,7 +5832,7 @@ copied into the buffer and the copy is what you edit.  Changes to the
 buffer do not change the file until you "save" the buffer, which means
 copying the contents of the buffer into the file.
 
- - Command: save-buffer &optional backup-option
+ -- Command: save-buffer &optional backup-option
      This function saves the contents of the current buffer in its
      visited file if the buffer has been modified since it was last
      visited or saved.  Otherwise it does nothing.
@@ -5798,7 +5851,7 @@ copying the contents of the buffer into the file.
           `save-buffer' function unconditionally backs up the previous
           version of the file before saving it.
 
- - Command: save-some-buffers &optional save-silently-p exiting
+ -- Command: save-some-buffers &optional save-silently-p exiting
      This command saves some modified file-visiting buffers.  Normally
      it asks the user about each buffer.  But if SAVE-SILENTLY-P is
      non-`nil', it saves all the file-visiting buffers without querying
@@ -5812,20 +5865,20 @@ copying the contents of the buffer into the file.
      `save-buffers-kill-emacs' function passes a non-`nil' value for
      this argument.
 
- - Variable: buffer-offer-save
+ -- Variable: buffer-offer-save
      When this variable is non-`nil' in a buffer, XEmacs offers to save
      the buffer on exit even if the buffer is not visiting a file.  The
      variable is automatically local in all buffers.  Normally, Mail
      mode (used for editing outgoing mail) sets this to `t'.
 
- - Command: write-file filename
+ -- Command: write-file filename
      This function writes the current buffer into file FILENAME, makes
      the buffer visit that file, and marks it not modified.  Then it
      renames the buffer based on FILENAME, appending a string like `<2>'
      if necessary to make a unique buffer name.  It does most of this
      work by calling `set-visited-file-name' and `save-buffer'.
 
- - Variable: write-file-hooks
+ -- Variable: write-file-hooks
      The value of this variable is a list of functions to be called
      before writing out a buffer to its visited file.  If one of them
      returns non-`nil', the file is considered already written and the
@@ -5845,7 +5898,7 @@ copying the contents of the buffer into the file.
      Even though this is not a normal hook, you can use `add-hook' and
      `remove-hook' to manipulate the list.  *Note Hooks::.
 
- - Variable: local-write-file-hooks
+ -- Variable: local-write-file-hooks
      This works just like `write-file-hooks', but it is intended to be
      made local to particular buffers.  It's not a good idea to make
      `write-file-hooks' local to a buffer--use this variable instead.
@@ -5855,7 +5908,7 @@ copying the contents of the buffer into the file.
      convenient for packages that read "file" contents in special ways,
      and set up hooks to save the data in a corresponding way.
 
- - Variable: write-contents-hooks
+ -- Variable: write-contents-hooks
      This works just like `write-file-hooks', but it is intended for
      hooks that pertain to the contents of the file, as opposed to
      hooks that pertain to where the file came from.  Such hooks are
@@ -5863,11 +5916,11 @@ copying the contents of the buffer into the file.
      variable.  Switching to a new major mode always resets this
      variable.
 
- - Variable: after-save-hook
+ -- Variable: after-save-hook
      This normal hook runs after a buffer has been saved in its visited
      file.
 
- - Variable: file-precious-flag
+ -- Variable: file-precious-flag
      If this variable is non-`nil', then `save-buffer' protects against
      I/O errors while saving by writing the new file to a temporary
      name instead of the name it is supposed to have, and then renaming
@@ -5883,7 +5936,7 @@ copying the contents of the buffer into the file.
      Some modes set this variable non-`nil' locally in particular
      buffers.
 
- - User Option: require-final-newline
+ -- User Option: require-final-newline
      This variable determines whether files may be written out that do
      _not_ end with a newline.  If the value of the variable is `t',
      then `save-buffer' silently adds a newline at the end of the file
@@ -5899,14 +5952,14 @@ copying the contents of the buffer into the file.
 \1f
 File: lispref.info,  Node: Reading from Files,  Next: Writing to Files,  Prev: Saving Buffers,  Up: Files
 
-Reading from Files
-==================
+35.3 Reading from Files
+=======================
 
 You can copy a file from the disk and insert it into a buffer using the
 `insert-file-contents' function.  Don't use the user-level command
 `insert-file' in a Lisp program, as that sets the mark.
 
- - Function: insert-file-contents filename &optional visit start end
+ -- Function: insert-file-contents filename &optional visit start end
           replace
      This function inserts the contents of file FILENAME into the
      current buffer after point.  It returns a list of the absolute
@@ -5947,15 +6000,15 @@ program can read the file, use the function `file-local-copy'; see
 \1f
 File: lispref.info,  Node: Writing to Files,  Next: File Locks,  Prev: Reading from Files,  Up: Files
 
-Writing to Files
-================
+35.4 Writing to Files
+=====================
 
 You can write the contents of a buffer, or part of a buffer, directly
 to a file on disk using the `append-to-file' and `write-region'
 functions.  Don't use these functions to write to files that are being
 visited; that could cause confusion in the mechanisms for visiting.
 
- - Command: append-to-file start end filename
+ -- Command: append-to-file start end filename
      This function appends the contents of the region delimited by
      START and END in the current buffer to the end of file FILENAME.
      If that file does not exist, it is created.  If that file exists
@@ -5964,7 +6017,7 @@ visited; that could cause confusion in the mechanisms for visiting.
      An error is signaled if FILENAME specifies a nonwritable file, or
      a nonexistent file in a directory where files cannot be created.
 
- - Command: write-region start end filename &optional append visit
+ -- Command: write-region start end filename &optional append visit
      This function writes the region delimited by START and END in the
      current buffer into the file specified by FILENAME.
 
@@ -6003,8 +6056,8 @@ visited; that could cause confusion in the mechanisms for visiting.
 \1f
 File: lispref.info,  Node: File Locks,  Next: Information about Files,  Prev: Writing to Files,  Up: Files
 
-File Locks
-==========
+35.5 File Locks
+===============
 
 When two users edit the same file at the same time, they are likely to
 interfere with each other.  XEmacs tries to prevent this situation from
@@ -6021,7 +6074,7 @@ still warn the user who saves second.  Also, the detection of
 modification of a buffer visiting a file changed on disk catches some
 cases of simultaneous editing; see *Note Modification Time::.
 
- - Function: file-locked-p &optional filename
+ -- Function: file-locked-p &optional filename
      This function returns `nil' if the file FILENAME is not locked by
      this XEmacs process.  It returns `t' if it is locked by this
      XEmacs, and it returns the name of the user who has locked it if it
@@ -6030,19 +6083,19 @@ cases of simultaneous editing; see *Note Modification Time::.
           (file-locked-p "foo")
                => nil
 
- - Function: lock-buffer &optional filename
+ -- Function: lock-buffer &optional filename
      This function locks the file FILENAME, if the current buffer is
      modified.  The argument FILENAME defaults to the current buffer's
      visited file.  Nothing is done if the current buffer is not
      visiting a file, or is not modified.
 
- - Function: unlock-buffer
+ -- Function: unlock-buffer
      This function unlocks the file being visited in the current buffer,
      if the buffer is modified.  If the buffer is not modified, then
      the file should not be locked, so this function does nothing.  It
      also does nothing if the current buffer is not visiting a file.
 
- - Function: ask-user-about-lock filename other-user
+ -- Function: ask-user-about-lock filename other-user
      This function is called when the user tries to modify FILENAME,
      but it is locked by another user named OTHER-USER.  The value it
      returns determines what happens next:
@@ -6072,8 +6125,8 @@ cases of simultaneous editing; see *Note Modification Time::.
 \1f
 File: lispref.info,  Node: Information about Files,  Next: Changing File Attributes,  Prev: File Locks,  Up: Files
 
-Information about Files
-=======================
+35.6 Information about Files
+============================
 
 The functions described in this section all operate on strings that
 designate file names.  All the functions have names that begin with the
@@ -6091,12 +6144,12 @@ directories unless otherwise noted.
 \1f
 File: lispref.info,  Node: Testing Accessibility,  Next: Kinds of Files,  Up: Information about Files
 
-Testing Accessibility
----------------------
+35.6.1 Testing Accessibility
+----------------------------
 
 These functions test for permission to access a file in specific ways.
 
- - Function: file-exists-p filename
+ -- Function: file-exists-p filename
      This function returns `t' if a file named FILENAME appears to
      exist.  This does not mean you can necessarily read the file, only
      that you can find out its attributes.  (On Unix, this is true if
@@ -6107,7 +6160,7 @@ These functions test for permission to access a file in specific ways.
      prevent you from finding the attributes of the file, this function
      returns `nil'.
 
- - Function: file-readable-p filename
+ -- Function: file-readable-p filename
      This function returns `t' if a file named FILENAME exists and you
      can read it.  It returns `nil' otherwise.
 
@@ -6118,14 +6171,14 @@ These functions test for permission to access a file in specific ways.
           (file-readable-p "/usr/spool/mqueue")
                => nil
 
- - Function: file-executable-p filename
+ -- Function: file-executable-p filename
      This function returns `t' if a file named FILENAME exists and you
      can execute it.  It returns `nil' otherwise.  If the file is a
      directory, execute permission means you can check the existence and
      attributes of files inside the directory, and open those files if
      their modes permit.
 
- - Function: file-writable-p filename
+ -- Function: file-writable-p filename
      This function returns `t' if the file FILENAME can be written or
      created by you, and `nil' otherwise.  A file is writable if the
      file exists and you can write it.  It is creatable if it does not
@@ -6143,7 +6196,7 @@ These functions test for permission to access a file in specific ways.
           (file-writable-p "~/no-such-dir/foo")
                => nil
 
- - Function: file-accessible-directory-p dirname
+ -- Function: file-accessible-directory-p dirname
      This function returns `t' if you have permission to open existing
      files in the directory whose name as a file is DIRNAME; otherwise
      (or if there is no such directory), it returns `nil'.  The value
@@ -6158,11 +6211,11 @@ These functions test for permission to access a file in specific ways.
      we can deduce that any attempt to read a file in `/foo/' will give
      an error.
 
- - Function: file-ownership-preserved-p filename
+ -- Function: file-ownership-preserved-p filename
      This function returns `t' if deleting the file FILENAME and then
      creating it anew would keep the file's owner unchanged.
 
- - Function: file-newer-than-file-p filename1 filename2
+ -- Function: file-newer-than-file-p filename1 filename2
      This function returns `t' if the file FILENAME1 is newer than file
      FILENAME2.  If FILENAME1 does not exist, it returns `nil'.  If
      FILENAME2 does not exist, it returns `t'.
@@ -6186,13 +6239,13 @@ These functions test for permission to access a file in specific ways.
 \1f
 File: lispref.info,  Node: Kinds of Files,  Next: Truenames,  Prev: Testing Accessibility,  Up: Information about Files
 
-Distinguishing Kinds of Files
------------------------------
+35.6.2 Distinguishing Kinds of Files
+------------------------------------
 
 This section describes how to distinguish various kinds of files, such
 as directories, symbolic links, and ordinary files.
 
- - Function: file-symlink-p filename
+ -- Function: file-symlink-p filename
      If the file FILENAME is a symbolic link, the `file-symlink-p'
      function returns the file name to which it is linked.  This may be
      the name of a text file, a directory, or even another symbolic
@@ -6211,7 +6264,7 @@ as directories, symbolic links, and ordinary files.
                => "/pub/bin"
 
 
- - Function: file-directory-p filename
+ -- Function: file-directory-p filename
      This function returns `t' if FILENAME is the name of an existing
      directory, `nil' otherwise.
 
@@ -6227,7 +6280,7 @@ as directories, symbolic links, and ordinary files.
            (substitute-in-file-name "$HOME"))
                => t
 
- - Function: file-regular-p filename
+ -- Function: file-regular-p filename
      This function returns `t' if the file FILENAME exists and is a
      regular file (not a directory, symbolic link, named pipe,
      terminal, or other I/O device).
@@ -6235,8 +6288,8 @@ as directories, symbolic links, and ordinary files.
 \1f
 File: lispref.info,  Node: Truenames,  Next: File Attributes,  Prev: Kinds of Files,  Up: Information about Files
 
-Truenames
----------
+35.6.3 Truenames
+----------------
 
 The "truename" of a file is the name that you get by following symbolic
 links until none remain, then expanding to get rid of `.' and `..' as
@@ -6245,7 +6298,7 @@ the number of distinct truenames a file has is equal to the number of
 hard links to the file.  However, truenames are useful because they
 eliminate symbolic links as a cause of name variation.
 
- - Function: file-truename filename &optional default
+ -- Function: file-truename filename &optional default
      The function `file-truename' returns the true name of the file
      FILENAME.  This is the name that you get by following symbolic
      links until none remain.
@@ -6259,8 +6312,8 @@ eliminate symbolic links as a cause of name variation.
 \1f
 File: lispref.info,  Node: File Attributes,  Prev: Truenames,  Up: Information about Files
 
-Other Information about Files
------------------------------
+35.6.4 Other Information about Files
+------------------------------------
 
 This section describes the functions for getting detailed information
 about a file, other than its contents.  This information includes the
@@ -6268,7 +6321,7 @@ mode bits that control access permission, the owner and group numbers,
 the number of names, the inode number, the size, and the times of access
 and modification.
 
- - Function: file-modes filename
+ -- Function: file-modes filename
      This function returns the mode bits of FILENAME, as an integer.
      The mode bits are also called the file permissions, and they
      specify access control in the usual Unix fashion.  If the
@@ -6284,17 +6337,17 @@ and modification.
                => 492               ; Decimal integer.
           (format "%o" 492)
                => "754"             ; Convert to octal.
-          
+
           (set-file-modes "~/junk/diffs" 438)
                => nil
-          
+
           (format "%o" 438)
                => "666"             ; Convert to octal.
-          
+
           % ls -l diffs
             -rw-rw-rw-  1 lewis 0 3063 Oct 30 16:00 diffs
 
- - Function: file-nlinks filename
+ -- Function: file-nlinks filename
      This functions returns the number of names (i.e., hard links) that
      file FILENAME has.  If the file does not exist, then this function
      returns `nil'.  Note that symbolic links have no effect on this
@@ -6304,13 +6357,13 @@ and modification.
           % ls -l foo*
           -rw-rw-rw-  2 rms       4 Aug 19 01:27 foo
           -rw-rw-rw-  2 rms       4 Aug 19 01:27 foo1
-          
+
           (file-nlinks "foo")
                => 2
           (file-nlinks "doesnt-exist")
                => nil
 
- - Function: file-attributes filename
+ -- Function: file-attributes filename
      This function returns a list of attributes of file FILENAME.  If
      the specified file cannot be opened, it returns `nil'.
 
@@ -6416,8 +6469,8 @@ and modification.
 \1f
 File: lispref.info,  Node: Changing File Attributes,  Next: File Names,  Prev: Information about Files,  Up: Files
 
-Changing File Names and Attributes
-==================================
+35.7 Changing File Names and Attributes
+=======================================
 
 The functions in this section rename, copy, delete, link, and set the
 modes of files.
@@ -6435,7 +6488,7 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
    * Replace the old file without confirmation if OK-IF-ALREADY-EXISTS
      is any other value.
 
- - Command: add-name-to-file filename newname &optional
+ -- Command: add-name-to-file filename newname &optional
           ok-if-already-exists
      This function gives the file named FILENAME the additional name
      NEWNAME.  This means that NEWNAME becomes a new "hard link" to
@@ -6454,7 +6507,7 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
 
           (add-name-to-file "~/lewis/foo1" "~/lewis/foo2")
                => nil
-          
+
           % ls -l fo*
           -rw-rw-rw-  2 rms       29 Aug 18 20:32 foo
           -rw-rw-rw-  2 rms       29 Aug 18 20:32 foo2
@@ -6469,7 +6522,7 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
 
           (add-name-to-file "~/lewis/foo1" "~/lewis/foo3")
                => nil
-          
+
           % ls -l fo*
           -rw-rw-rw-  3 rms       29 Aug 18 20:32 foo
           -rw-rw-rw-  3 rms       29 Aug 18 20:32 foo2
@@ -6480,7 +6533,7 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
 
      See also `file-nlinks' in *Note File Attributes::.
 
- - Command: rename-file filename newname &optional ok-if-already-exists
+ -- Command: rename-file filename newname &optional ok-if-already-exists
      This command renames the file FILENAME as NEWNAME.
 
      If FILENAME has additional names aside from FILENAME, it continues
@@ -6492,7 +6545,7 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
      NEWNAME in the minibuffer; also, it requests confirmation if
      NEWNAME already exists.
 
- - Command: copy-file filename newname &optional ok-if-already-exists
+ -- Command: copy-file filename newname &optional ok-if-already-exists
           time
      This command copies the file FILENAME to NEWNAME.  An error is
      signaled if FILENAME does not exist.
@@ -6505,7 +6558,7 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
      NEWNAME in the minibuffer; also, it requests confirmation if
      NEWNAME already exists.
 
- - Command: delete-file filename
+ -- Command: delete-file filename
      This command deletes the file FILENAME, like the shell command `rm
      FILENAME'.  If the file has multiple names, it continues to exist
      under the other names.
@@ -6516,7 +6569,7 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
 
      See also `delete-directory' in *Note Create/Delete Dirs::.
 
- - Command: make-symbolic-link filename newname &optional
+ -- Command: make-symbolic-link filename newname &optional
           ok-if-already-exists
      This command makes a symbolic link to FILENAME, named NEWNAME.
      This is like the shell command `ln -s FILENAME NEWNAME'.
@@ -6525,11 +6578,11 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
      NEWNAME in the minibuffer; also, it requests confirmation if
      NEWNAME already exists.
 
- - Function: set-file-modes filename mode
+ -- Function: set-file-modes filename mode
      This function sets mode bits of FILENAME to MODE (which must be an
      integer).  Only the low 12 bits of MODE are used.
 
- - Function: set-default-file-modes mode
+ -- Function: set-default-file-modes mode
      This function sets the default file protection for new files
      created by XEmacs and its subprocesses.  Every file created with
      XEmacs initially has this protection.  On Unix, the default
@@ -6542,7 +6595,7 @@ the actions taken depend on the value of OK-IF-ALREADY-EXISTS:
      creating the file; it does not change the file's mode, and does
      not use the default file protection.
 
- - Function: default-file-modes
+ -- Function: default-file-modes
      This function returns the current default protection value.
 
    On MS-DOS, there is no such thing as an "executable" file mode bit.
@@ -6553,8 +6606,8 @@ and `file-attributes'.
 \1f
 File: lispref.info,  Node: File Names,  Next: Contents of Directories,  Prev: Changing File Attributes,  Up: Files
 
-File Names
-==========
+35.8 File Names
+===============
 
 Files are generally referred to by their names, in XEmacs as elsewhere.
 File names in XEmacs are represented as strings.  The functions that
@@ -6588,8 +6641,8 @@ without change.  Similarly for other operating systems.
 \1f
 File: lispref.info,  Node: File Name Components,  Next: Directory Names,  Up: File Names
 
-File Name Components
---------------------
+35.8.1 File Name Components
+---------------------------
 
 The operating system groups files into directories.  To specify a file,
 you must specify the directory and the file's name within that
@@ -6605,7 +6658,7 @@ last slash; the nondirectory part is the rest.
 the name proper and the "version number".  On Unix, only backup files
 have version numbers in their names.
 
- - Function: file-name-directory filename
+ -- Function: file-name-directory filename
      This function returns the directory part of FILENAME (or `nil' if
      FILENAME does not include a directory part).  On Unix, the
      function returns a string ending in a slash.
@@ -6615,7 +6668,7 @@ have version numbers in their names.
           (file-name-directory "foo")        ; Unix example
                => nil
 
- - Function: file-name-nondirectory filename
+ -- Function: file-name-nondirectory filename
      This function returns the nondirectory part of FILENAME.
 
           (file-name-nondirectory "lewis/foo")
@@ -6623,7 +6676,7 @@ have version numbers in their names.
           (file-name-nondirectory "foo")
                => "foo"
 
- - Function: file-name-sans-versions filename &optional
+ -- Function: file-name-sans-versions filename &optional
           keep-backup-version
      This function returns FILENAME without any file version numbers,
      backup version numbers, or trailing tildes.
@@ -6638,7 +6691,7 @@ have version numbers in their names.
           (file-name-sans-versions "~rms/foo")
                => "~rms/foo"
 
- - Function: file-name-sans-extension filename
+ -- Function: file-name-sans-extension filename
      This function returns FILENAME minus its "extension," if any.  The
      extension, in a file name, is the part that starts with the last
      `.' in the last name component.  For example,
@@ -6651,8 +6704,8 @@ have version numbers in their names.
 \1f
 File: lispref.info,  Node: Directory Names,  Next: Relative File Names,  Prev: File Name Components,  Up: File Names
 
-Directory Names
----------------
+35.8.2 Directory Names
+----------------------
 
 A "directory name" is the name of a directory.  A directory is a kind
 of file, and it has a file name, which is related to the directory name
@@ -6671,7 +6724,7 @@ acceptable.
 names.  They do nothing special with environment variable substitutions
 such as `$HOME', and the constructs `~', and `..'.
 
- - Function: file-name-as-directory filename
+ -- Function: file-name-as-directory filename
      This function returns a string representing FILENAME in a form
      that the operating system will interpret as the name of a
      directory.  In Unix, this means appending a slash to the string.
@@ -6679,7 +6732,7 @@ such as `$HOME', and the constructs `~', and `..'.
           (file-name-as-directory "~rms/lewis")
                => "~rms/lewis/"
 
- - Function: directory-file-name dirname
+ -- Function: directory-file-name dirname
      This function returns a string representing DIRNAME in a form that
      the operating system will interpret as the name of a file.  On
      Unix, this means removing a final slash from the string.
@@ -6697,7 +6750,7 @@ abbreviation instead.
    If you wish to convert a directory name to its abbreviation, use this
 function:
 
- - Function: abbreviate-file-name filename &optional hack-homedir
+ -- Function: abbreviate-file-name filename &optional hack-homedir
      This function applies abbreviations from `directory-abbrev-alist'
      to its argument, and substitutes `~' for the user's home directory.
 
@@ -6705,7 +6758,7 @@ function:
      the user's home directory.
 
 
- - Variable: directory-abbrev-alist
+ -- Variable: directory-abbrev-alist
      The variable `directory-abbrev-alist' contains an alist of
      abbreviations to use for file directories.  Each element has the
      form `(FROM . TO)', and says to replace FROM with TO when it
@@ -6727,8 +6780,8 @@ function:
 \1f
 File: lispref.info,  Node: Relative File Names,  Next: File Name Expansion,  Prev: Directory Names,  Up: File Names
 
-Absolute and Relative File Names
---------------------------------
+35.8.3 Absolute and Relative File Names
+---------------------------------------
 
 All the directories in the file system form a tree starting at the root
 directory.  A file name can specify all the directory names starting
@@ -6738,7 +6791,7 @@ default directory; then it is called a "relative" file name.  On Unix,
 an absolute file name starts with a slash or a tilde (`~'), and a
 relative one does not.
 
- - Function: file-name-absolute-p filename
+ -- Function: file-name-absolute-p filename
      This function returns `t' if file FILENAME is an absolute file
      name, `nil' otherwise.
 
@@ -6752,8 +6805,8 @@ relative one does not.
 \1f
 File: lispref.info,  Node: File Name Expansion,  Next: Unique File Names,  Prev: Relative File Names,  Up: File Names
 
-Functions that Expand Filenames
--------------------------------
+35.8.4 Functions that Expand Filenames
+--------------------------------------
 
 "Expansion" of a file name means converting a relative file name to an
 absolute one.  Since this is done relative to a default directory, you
@@ -6761,7 +6814,7 @@ must specify the default directory name as well as the file name to be
 expanded.  Expansion also simplifies file names by eliminating
 redundancies such as `./' and `NAME/../'.
 
- - Function: expand-file-name filename &optional directory
+ -- Function: expand-file-name filename &optional directory
      This function converts FILENAME to an absolute file name.  If
      DIRECTORY is supplied, it is the directory to start with if
      FILENAME is relative.  (The value of DIRECTORY should itself be an
@@ -6790,7 +6843,7 @@ redundancies such as `./' and `NAME/../'.
      Note that `expand-file-name' does _not_ expand environment
      variables; only `substitute-in-file-name' does that.
 
- - Function: file-relative-name filename &optional directory
+ -- Function: file-relative-name filename &optional directory
      This function does the inverse of expansion--it tries to return a
      relative name that is equivalent to FILENAME when interpreted
      relative to DIRECTORY.
@@ -6803,7 +6856,7 @@ redundancies such as `./' and `NAME/../'.
           (file-relative-name "/foo/bar" "/hack/")
                => "../foo/bar")
 
- - Variable: default-directory
+ -- Variable: default-directory
      The value of this buffer-local variable is the default directory
      for the current buffer.  It should be an absolute directory name;
      it may start with `~'.  This variable is local in every buffer.
@@ -6816,7 +6869,7 @@ redundancies such as `./' and `NAME/../'.
           default-directory
                => "/user/lewis/manual/"
 
- - Function: substitute-in-file-name filename
+ -- Function: substitute-in-file-name filename
      This function replaces environment variable references in FILENAME
      with the environment variable values.  Following standard Unix
      shell syntax, `$' is the prefix to substitute an environment
@@ -6845,8 +6898,8 @@ redundancies such as `./' and `NAME/../'.
 \1f
 File: lispref.info,  Node: Unique File Names,  Next: File Name Completion,  Prev: File Name Expansion,  Up: File Names
 
-Generating Unique File Names
-----------------------------
+35.8.5 Generating Unique File Names
+-----------------------------------
 
 Some programs need to write temporary files.  Here is the usual way to
 construct a name for such a file:
@@ -6858,7 +6911,7 @@ files--under Unix, it will normally evaluate to `"/tmp/"'.  The job of
 `make-temp-name' is to prevent two different users or two different
 processes from trying to use the same name.
 
- - Function: temp-directory
+ -- Function: temp-directory
      This function returns the name of the directory to use for
      temporary files.  Under Unix, this will be the value of `TMPDIR',
      defaulting to `/tmp'.  On Windows, this will be obtained from the
@@ -6867,7 +6920,7 @@ processes from trying to use the same name.
      Note that the `temp-directory' function does not exist under FSF
      Emacs.
 
- - Function: make-temp-name prefix
+ -- Function: make-temp-name prefix
      This function generates a temporary file name starting with
      PREFIX.  The Emacs process number forms part of the result, so
      there is no danger of generating a name being used by another
@@ -6886,13 +6939,13 @@ processes from trying to use the same name.
 \1f
 File: lispref.info,  Node: File Name Completion,  Next: User Name Completion,  Prev: Unique File Names,  Up: File Names
 
-File Name Completion
---------------------
+35.8.6 File Name Completion
+---------------------------
 
 This section describes low-level subroutines for completing a file
 name.  For other completion functions, see *Note Completion::.
 
- - Function: file-name-all-completions partial-filename directory
+ -- Function: file-name-all-completions partial-filename directory
      This function returns a list of all possible completions for files
      whose name starts with PARTIAL-FILENAME in directory DIRECTORY.
      The order of the completions is the order of the files in the
@@ -6916,11 +6969,11 @@ name.  For other completion functions, see *Note Completion::.
           (file-name-all-completions "f" "")
                => ("foo" "file~" "file.c.~2~"
                           "file.c.~1~" "file.c")
-          
+
           (file-name-all-completions "fo" "")
                => ("foo")
 
- - Function: file-name-completion partial-filename directory
+ -- Function: file-name-completion partial-filename directory
      This function completes the file name PARTIAL-FILENAME in directory
      DIRECTORY.  It returns the longest prefix common to all file names
      in directory DIRECTORY that start with PARTIAL-FILENAME.
@@ -6941,17 +6994,17 @@ name.  For other completion functions, see *Note Completion::.
 
           (file-name-completion "fi" "")
                => "file"
-          
+
           (file-name-completion "file.c.~1" "")
                => "file.c.~1~"
-          
+
           (file-name-completion "file.c.~1~" "")
                => t
-          
+
           (file-name-completion "file.c.~3" "")
                => nil
 
- - User Option: completion-ignored-extensions
+ -- User Option: completion-ignored-extensions
      `file-name-completion' usually ignores file names that end in any
      string in this list.  It does not ignore them when all the possible
      completions end in one of these suffixes or when a buffer showing
@@ -6962,110 +7015,3 @@ name.  For other completion functions, see *Note Completion::.
           completion-ignored-extensions
                => (".o" ".elc" "~" ".dvi")
 
-\1f
-File: lispref.info,  Node: User Name Completion,  Prev: File Name Completion,  Up: File Names
-
-User Name Completion
---------------------
-
-This section describes low-level subroutines for completing a user
-name.  For other completion functions, see *Note Completion::.
-
- - Function: user-name-all-completions partial-username
-     This function returns a list of all possible completions for a
-     user name starting with PARTIAL-USERNAME.  The order of the
-     completions is unpredictable and conveys no useful information.
-
-     The argument PARTIAL-USERNAME must be a partial user name
-     containing no tilde character and no slash.
-
- - Function: user-name-completion partial-username
-     This function completes a user name from PARTIAL-USERNAME.  It
-     returns the longest prefix common to all user names that start with
-     PARTIAL-USERNAME.
-
-     If only one match exists and PARTIAL-USERNAME matches it exactly,
-     the function returns `t'.  The function returns `nil' if no user
-     name starting with PARTIAL-USERNAME exists.
-
- - Function: user-name-completion-1 partial-username
-     This function completes the partial user name PARTIAL-USERNAME,
-     like `user-name-completion', differing only in the return value.
-     This function returns the cons of the completion returned by
-     `user-name-completion', and a boolean indicating whether that
-     completion was unique.
-
-\1f
-File: lispref.info,  Node: Contents of Directories,  Next: Create/Delete Dirs,  Prev: File Names,  Up: Files
-
-Contents of Directories
-=======================
-
-A directory is a kind of file that contains other files entered under
-various names.  Directories are a feature of the file system.
-
-   XEmacs can list the names of the files in a directory as a Lisp list,
-or display the names in a buffer using the `ls' shell command.  In the
-latter case, it can optionally display information about each file,
-depending on the value of switches passed to the `ls' command.
-
- - Function: directory-files directory &optional full-name match-regexp
-          nosort files-only
-     This function returns a list of the names of the files in the
-     directory DIRECTORY.  By default, the list is in alphabetical
-     order.
-
-     If FULL-NAME is non-`nil', the function returns the files'
-     absolute file names.  Otherwise, it returns just the names
-     relative to the specified directory.
-
-     If MATCH-REGEXP is non-`nil', this function returns only those
-     file names that contain that regular expression--the other file
-     names are discarded from the list.
-
-     If NOSORT is non-`nil', `directory-files' does not sort the list,
-     so you get the file names in no particular order.  Use this if you
-     want the utmost possible speed and don't care what order the files
-     are processed in.  If the order of processing is visible to the
-     user, then the user will probably be happier if you do sort the
-     names.
-
-     If FILES-ONLY is the symbol `t', then only the "files" in the
-     directory will be returned; subdirectories will be excluded.  If
-     FILES-ONLY is not `nil' and not `t', then only the subdirectories
-     will be returned.  Otherwise, if FILES-ONLY is `nil' (the default)
-     then both files and subdirectories will be returned.
-
-          (directory-files "~lewis")
-               => ("#foo#" "#foo.el#" "." ".."
-                   "dired-mods.el" "files.texi"
-                   "files.texi.~1~")
-
-     An error is signaled if DIRECTORY is not the name of a directory
-     that can be read.
-
- - Function: insert-directory file switches &optional wildcard
-          full-directory-p
-     This function inserts (in the current buffer) a directory listing
-     for directory FILE, formatted with `ls' according to SWITCHES.  It
-     leaves point after the inserted text.
-
-     The argument FILE may be either a directory name or a file
-     specification including wildcard characters.  If WILDCARD is
-     non-`nil', that means treat FILE as a file specification with
-     wildcards.
-
-     If FULL-DIRECTORY-P is non-`nil', that means FILE is a directory
-     and switches do not contain `-d', so that the listing should show
-     the full contents of the directory.  (The `-d' option to `ls' says
-     to describe a directory itself rather than its contents.)
-
-     This function works by running a directory listing program whose
-     name is in the variable `insert-directory-program'.  If WILDCARD is
-     non-`nil', it also runs the shell specified by `shell-file-name',
-     to expand the wildcards.
-
- - Variable: insert-directory-program
-     This variable's value is the program to run to generate a
-     directory listing for the function `insert-directory'.
-
index 2543d27..6362445 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -50,17 +50,124 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: User Name Completion,  Prev: File Name Completion,  Up: File Names
+
+35.8.7 User Name Completion
+---------------------------
+
+This section describes low-level subroutines for completing a user
+name.  For other completion functions, see *Note Completion::.
+
+ -- Function: user-name-all-completions partial-username
+     This function returns a list of all possible completions for a
+     user name starting with PARTIAL-USERNAME.  The order of the
+     completions is unpredictable and conveys no useful information.
+
+     The argument PARTIAL-USERNAME must be a partial user name
+     containing no tilde character and no slash.
+
+ -- Function: user-name-completion partial-username
+     This function completes a user name from PARTIAL-USERNAME.  It
+     returns the longest prefix common to all user names that start with
+     PARTIAL-USERNAME.
+
+     If only one match exists and PARTIAL-USERNAME matches it exactly,
+     the function returns `t'.  The function returns `nil' if no user
+     name starting with PARTIAL-USERNAME exists.
+
+ -- Function: user-name-completion-1 partial-username
+     This function completes the partial user name PARTIAL-USERNAME,
+     like `user-name-completion', differing only in the return value.
+     This function returns the cons of the completion returned by
+     `user-name-completion', and a boolean indicating whether that
+     completion was unique.
+
+\1f
+File: lispref.info,  Node: Contents of Directories,  Next: Create/Delete Dirs,  Prev: File Names,  Up: Files
+
+35.9 Contents of Directories
+============================
+
+A directory is a kind of file that contains other files entered under
+various names.  Directories are a feature of the file system.
+
+   XEmacs can list the names of the files in a directory as a Lisp list,
+or display the names in a buffer using the `ls' shell command.  In the
+latter case, it can optionally display information about each file,
+depending on the value of switches passed to the `ls' command.
+
+ -- Function: directory-files directory &optional full-name
+          match-regexp nosort files-only
+     This function returns a list of the names of the files in the
+     directory DIRECTORY.  By default, the list is in alphabetical
+     order.
+
+     If FULL-NAME is non-`nil', the function returns the files'
+     absolute file names.  Otherwise, it returns just the names
+     relative to the specified directory.
+
+     If MATCH-REGEXP is non-`nil', this function returns only those
+     file names that contain that regular expression--the other file
+     names are discarded from the list.
+
+     If NOSORT is non-`nil', `directory-files' does not sort the list,
+     so you get the file names in no particular order.  Use this if you
+     want the utmost possible speed and don't care what order the files
+     are processed in.  If the order of processing is visible to the
+     user, then the user will probably be happier if you do sort the
+     names.
+
+     If FILES-ONLY is the symbol `t', then only the "files" in the
+     directory will be returned; subdirectories will be excluded.  If
+     FILES-ONLY is not `nil' and not `t', then only the subdirectories
+     will be returned.  Otherwise, if FILES-ONLY is `nil' (the default)
+     then both files and subdirectories will be returned.
+
+          (directory-files "~lewis")
+               => ("#foo#" "#foo.el#" "." ".."
+                   "dired-mods.el" "files.texi"
+                   "files.texi.~1~")
+
+     An error is signaled if DIRECTORY is not the name of a directory
+     that can be read.
+
+ -- Function: insert-directory file switches &optional wildcard
+          full-directory-p
+     This function inserts (in the current buffer) a directory listing
+     for directory FILE, formatted with `ls' according to SWITCHES.  It
+     leaves point after the inserted text.
+
+     The argument FILE may be either a directory name or a file
+     specification including wildcard characters.  If WILDCARD is
+     non-`nil', that means treat FILE as a file specification with
+     wildcards.
+
+     If FULL-DIRECTORY-P is non-`nil', that means FILE is a directory
+     and switches do not contain `-d', so that the listing should show
+     the full contents of the directory.  (The `-d' option to `ls' says
+     to describe a directory itself rather than its contents.)
+
+     This function works by running a directory listing program whose
+     name is in the variable `insert-directory-program'.  If WILDCARD is
+     non-`nil', it also runs the shell specified by `shell-file-name',
+     to expand the wildcards.
+
+ -- Variable: insert-directory-program
+     This variable's value is the program to run to generate a
+     directory listing for the function `insert-directory'.
+
+\1f
 File: lispref.info,  Node: Create/Delete Dirs,  Next: Magic File Names,  Prev: Contents of Directories,  Up: Files
 
-Creating and Deleting Directories
-=================================
+35.10 Creating and Deleting Directories
+=======================================
 
 Most XEmacs Lisp file-manipulation functions get errors when used on
 files that are directories.  For example, you cannot delete a directory
 with `delete-file'.  These special functions exist to create and delete
 directories.
 
- - Command: make-directory dirname &optional parents
+ -- Command: make-directory dirname &optional parents
      This function creates a directory named DIRNAME.  Interactively,
      the default choice of directory to create is the current default
      directory for file names.  That is useful when you have visited a
@@ -70,7 +177,7 @@ directories.
      create parent directories if they don't exist. (Interactively, this
      always happens.)
 
- - Command: delete-directory dirname
+ -- Command: delete-directory dirname
      This function deletes the directory named DIRNAME.  The function
      `delete-file' does not work for files that are directories; you
      must use `delete-directory' in that case.
@@ -78,8 +185,8 @@ directories.
 \1f
 File: lispref.info,  Node: Magic File Names,  Next: Partial Files,  Prev: Create/Delete Dirs,  Up: Files
 
-Making Certain File Names "Magic"
-=================================
+35.11 Making Certain File Names "Magic"
+=======================================
 
 You can implement special handling for certain file names.  This is
 called making those names "magic".  You must supply a regular
@@ -161,21 +268,21 @@ careful to use them exactly as shown above; the details are crucial for
 proper behavior in the case of multiple handlers, and for operations
 that have two file names that may each have handlers.
 
- - Variable: inhibit-file-name-handlers
+ -- Variable: inhibit-file-name-handlers
      This variable holds a list of handlers whose use is presently
      inhibited for a certain operation.
 
- - Variable: inhibit-file-name-operation
+ -- Variable: inhibit-file-name-operation
      The operation for which certain handlers are presently inhibited.
 
- - Function: find-file-name-handler filename &optional operation
+ -- Function: find-file-name-handler filename &optional operation
      This function returns the handler function for file name FILENAME,
      or `nil' if there is none.  The argument OPERATION should be the
      operation to be performed on the file--the value you will pass to
      the handler as its first argument when you call it.  The operation
      is needed for comparison with `inhibit-file-name-operation'.
 
- - Function: file-local-copy filename
+ -- Function: file-local-copy filename
      This function copies file FILENAME to an ordinary non-magic file,
      if it isn't one already.
 
@@ -186,7 +293,7 @@ that have two file names that may each have handlers.
      If FILENAME is an ordinary file name, not magic, then this function
      does nothing and returns `nil'.
 
- - Function: unhandled-file-name-directory filename
+ -- Function: unhandled-file-name-directory filename
      This function returns the name of a directory that is not magic.
      It uses the directory part of FILENAME if that is not magic.
      Otherwise, it asks the handler what to do.
@@ -198,8 +305,8 @@ that have two file names that may each have handlers.
 \1f
 File: lispref.info,  Node: Partial Files,  Next: Format Conversion,  Prev: Magic File Names,  Up: Files
 
-Partial Files
-=============
+35.12 Partial Files
+===================
 
 * Menu:
 
@@ -210,8 +317,8 @@ Partial Files
 \1f
 File: lispref.info,  Node: Intro to Partial Files,  Next: Creating a Partial File,  Up: Partial Files
 
-Intro to Partial Files
-----------------------
+35.12.1 Intro to Partial Files
+------------------------------
 
 A "partial file" is a section of a buffer (called the "master buffer")
 that is placed in its own buffer and treated as its own file.  Changes
@@ -236,10 +343,10 @@ work correctly.
 \1f
 File: lispref.info,  Node: Creating a Partial File,  Next: Detached Partial Files,  Prev: Intro to Partial Files,  Up: Partial Files
 
-Creating a Partial File
------------------------
+35.12.2 Creating a Partial File
+-------------------------------
 
- - Command: make-file-part &optional start end name buffer
+ -- Command: make-file-part &optional start end name buffer
      Make a file part on buffer BUFFER out of the region.  Call it
      NAME.  This command creates a new buffer containing the contents
      of the region and marks the buffer as referring to the specified
@@ -256,8 +363,8 @@ Creating a Partial File
 \1f
 File: lispref.info,  Node: Detached Partial Files,  Prev: Creating a Partial File,  Up: Partial Files
 
-Detached Partial Files
-----------------------
+35.12.3 Detached Partial Files
+------------------------------
 
 Every partial file has an extent in the master buffer associated with it
 (called the "master extent"), marking where in the master buffer the
@@ -279,8 +386,8 @@ detached file part is to be saved.
 \1f
 File: lispref.info,  Node: Format Conversion,  Next: Files and MS-DOS,  Prev: Partial Files,  Up: Files
 
-File Format Conversion
-======================
+35.13 File Format Conversion
+============================
 
 The variable `format-alist' defines a list of "file formats", which
 describe textual representations used in files for the data (text,
@@ -288,7 +395,7 @@ text-properties, and possibly other information) in an Emacs buffer.
 Emacs performs format conversion if appropriate when reading and writing
 files.
 
- - Variable: format-alist
+ -- Variable: format-alist
      This list contains one format definition for each defined file
      format.
 
@@ -364,7 +471,7 @@ it, performs conversion likewise (because it calls
 format that it decodes.  It stores a list of the format names in the
 buffer-local variable `buffer-file-format'.
 
- - Variable: buffer-file-format
+ -- Variable: buffer-file-format
      This variable states the format of the visited file.  More
      precisely, this is a list of the file format names that were
      decoded in the course of visiting the current buffer's file.  It
@@ -374,13 +481,13 @@ buffer-local variable `buffer-file-format'.
 encoding functions for the formats listed in `buffer-file-format', in
 the order of appearance in the list.
 
- - Command: format-write-file file format
+ -- Command: format-write-file file format
      This command writes the current buffer contents into the file FILE
      in format FORMAT, and makes that format the default for future
      saves of the buffer.  The argument FORMAT is a list of format
      names.
 
- - Command: format-find-file file format
+ -- Command: format-find-file file format
      This command finds the file FILE, converting it according to
      format FORMAT.  It also makes FORMAT the default if the buffer is
      saved later.
@@ -389,7 +496,7 @@ the order of appearance in the list.
      `nil', no conversion takes place.  Interactively, typing just
      <RET> for FORMAT specifies `nil'.
 
- - Command: format-insert-file file format &optional start end
+ -- Command: format-insert-file file format &optional start end
      This command inserts the contents of file FILE, converting it
      according to format FORMAT.  If START and END are non-`nil', they
      specify which part of the file to read, as in
@@ -403,7 +510,7 @@ the order of appearance in the list.
      `nil', no conversion takes place.  Interactively, typing just
      <RET> for FORMAT specifies `nil'.
 
- - Variable: auto-save-file-format
+ -- Variable: auto-save-file-format
      This variable specifies the format to use for auto-saving.  Its
      value is a list of format names, just like the value of
      `buffer-file-format'; but it is used instead of
@@ -413,8 +520,8 @@ the order of appearance in the list.
 \1f
 File: lispref.info,  Node: Files and MS-DOS,  Prev: Format Conversion,  Up: Files
 
-Files and MS-DOS
-================
+35.14 Files and MS-DOS
+======================
 
 Emacs on MS-DOS makes a distinction between text files and binary
 files.  This is necessary because ordinary text files on MS-DOS use a
@@ -428,16 +535,16 @@ visiting a file, and records the decision in the variable
 
    *Note MS-DOS Subprocesses::, for a related feature for subprocesses.
 
- - Variable: buffer-file-type
+ -- Variable: buffer-file-type
      This variable, automatically local in each buffer, records the
      file type of the buffer's visited file.  The value is `nil' for
      text, `t' for binary.
 
- - Function: find-buffer-file-type filename
+ -- Function: find-buffer-file-type filename
      This function determines whether file FILENAME is a text file or a
      binary file.  It returns `nil' for text, `t' for binary.
 
- - User Option: file-name-buffer-file-type-alist
+ -- User Option: file-name-buffer-file-type-alist
      This variable holds an alist for distinguishing text files from
      binary files.  Each element has the form (REGEXP . TYPE), where
      REGEXP is matched against the file name, and TYPE may be is `nil'
@@ -445,24 +552,24 @@ visiting a file, and records the decision in the variable
      If it is a function, then it is called with a single argument (the
      file name) and should return `t' or `nil'.
 
- - User Option: default-buffer-file-type
+ -- User Option: default-buffer-file-type
      This variable specifies the default file type for files whose names
      don't indicate anything in particular.  Its value should be `nil'
      for text, or `t' for binary.
 
- - Command: find-file-text filename
+ -- Command: find-file-text filename
      Like `find-file', but treat the file as text regardless of its
      name.
 
- - Command: find-file-binary filename
+ -- Command: find-file-binary filename
      Like `find-file', but treat the file as binary regardless of its
      name.
 
 \1f
 File: lispref.info,  Node: Backups and Auto-Saving,  Next: Buffers,  Prev: Files,  Up: Top
 
-Backups and Auto-Saving
-***********************
+36 Backups and Auto-Saving
+**************************
 
 Backup files and auto-save files are two methods by which XEmacs tries
 to protect the user from the consequences of crashes or of the user's
@@ -479,8 +586,8 @@ current session.
 \1f
 File: lispref.info,  Node: Backup Files,  Next: Auto-Saving,  Up: Backups and Auto-Saving
 
-Backup Files
-============
+36.1 Backup Files
+=================
 
 A "backup file" is a copy of the old contents of a file you are
 editing.  XEmacs makes a backup file the first time you save a buffer
@@ -510,22 +617,22 @@ don't want them any more, or XEmacs can delete them automatically.
 \1f
 File: lispref.info,  Node: Making Backups,  Next: Rename or Copy,  Up: Backup Files
 
-Making Backup Files
--------------------
+36.1.1 Making Backup Files
+--------------------------
 
- - Function: backup-buffer
+ -- Function: backup-buffer
      This function makes a backup of the file visited by the current
      buffer, if appropriate.  It is called by `save-buffer' before
      saving the buffer the first time.
 
- - Variable: buffer-backed-up
+ -- Variable: buffer-backed-up
      This buffer-local variable indicates whether this buffer's file has
      been backed up on account of this buffer.  If it is non-`nil', then
      the backup file has been written.  Otherwise, the file should be
      backed up when it is next saved (if backups are enabled).  This is
      a permanent local; `kill-local-variables' does not alter it.
 
- - User Option: make-backup-files
+ -- User Option: make-backup-files
      This variable determines whether or not to make backup files.  If
      it is non-`nil', then XEmacs creates a backup of each file when it
      is saved for the first time--provided that `backup-inhibited' is
@@ -543,7 +650,7 @@ Making Backup Files
                                  'make-backup-files)
                                 (setq make-backup-files nil))))
 
- - Variable: backup-enable-predicate
+ -- Variable: backup-enable-predicate
      This variable's value is a function to be called on certain
      occasions to decide whether a file should have backup files.  The
      function receives one argument, a file name to consider.  If the
@@ -558,7 +665,7 @@ Making Backup Files
                 (not (string-equal "/tmp/"
                                    (substring name 0 5)))))
 
- - Variable: backup-inhibited
+ -- Variable: backup-inhibited
      If this variable is non-`nil', backups are inhibited.  It records
      the result of testing `backup-enable-predicate' on the visited file
      name.  It can also coherently be used by other mechanisms that
@@ -573,8 +680,8 @@ Making Backup Files
 \1f
 File: lispref.info,  Node: Rename or Copy,  Next: Numbered Backups,  Prev: Making Backups,  Up: Backup Files
 
-Backup by Renaming or by Copying?
----------------------------------
+36.1.2 Backup by Renaming or by Copying?
+----------------------------------------
 
 There are two ways that XEmacs can make a backup file:
 
@@ -599,7 +706,7 @@ the new buffer contents.  The variable `file-precious-flag', if
 non-`nil', also has this effect (as a sideline of its main
 significance).  *Note Saving Buffers::.
 
- - Variable: backup-by-copying
+ -- Variable: backup-by-copying
      If this variable is non-`nil', XEmacs always makes backup files by
      copying.
 
@@ -607,14 +714,14 @@ significance).  *Note Saving Buffers::.
 to be used in certain special cases.  They have no effect on the
 treatment of files that don't fall into the special cases.
 
- - Variable: backup-by-copying-when-linked
+ -- Variable: backup-by-copying-when-linked
      If this variable is non-`nil', XEmacs makes backups by copying for
      files with multiple names (hard links).
 
      This variable is significant only if `backup-by-copying' is `nil',
      since copying is always used when that variable is non-`nil'.
 
- - Variable: backup-by-copying-when-mismatch
+ -- Variable: backup-by-copying-when-mismatch
      If this variable is non-`nil', XEmacs makes backups by copying in
      cases where renaming would change either the owner or the group of
      the file.
@@ -630,14 +737,14 @@ treatment of files that don't fall into the special cases.
 \1f
 File: lispref.info,  Node: Numbered Backups,  Next: Backup Names,  Prev: Rename or Copy,  Up: Backup Files
 
-Making and Deleting Numbered Backup Files
------------------------------------------
+36.1.3 Making and Deleting Numbered Backup Files
+------------------------------------------------
 
 If a file's name is `foo', the names of its numbered backup versions
 are `foo.~V~', for various integers V, like this: `foo.~1~', `foo.~2~',
 `foo.~3~', ..., `foo.~259~', and so on.
 
- - User Option: version-control
+ -- User Option: version-control
      This variable controls whether to make a single non-numbered backup
      file or multiple numbered backups.
 
@@ -655,12 +762,12 @@ are `foo.~V~', for various integers V, like this: `foo.~1~', `foo.~2~',
 backup versions, which must then be deleted.  XEmacs can do this
 automatically or it can ask the user whether to delete them.
 
- - User Option: kept-new-versions
+ -- User Option: kept-new-versions
      The value of this variable is the number of newest versions to keep
      when a new numbered backup is made.  The newly made backup is
      included in the count.  The default value is 2.
 
- - User Option: kept-old-versions
+ -- User Option: kept-old-versions
      The value of this variable is the number of oldest versions to keep
      when a new numbered backup is made.  The default value is 2.
 
@@ -671,12 +778,12 @@ backup version 3 is excess.  The function `find-backup-file-name'
 (*note Backup Names::) is responsible for determining which backup
 versions to delete, but does not delete them itself.
 
- - User Option: delete-old-versions
+ -- User Option: delete-old-versions
      If this variable is non-`nil', then saving a file deletes excess
      backup versions silently.  Otherwise, it asks the user whether to
      delete them.
 
- - User Option: dired-kept-versions
+ -- User Option: dired-kept-versions
      This variable specifies how many of the newest backup versions to
      keep in the Dired command `.' (`dired-clean-directory').  That's
      the same thing `kept-new-versions' specifies when you make a new
@@ -685,14 +792,14 @@ versions to delete, but does not delete them itself.
 \1f
 File: lispref.info,  Node: Backup Names,  Prev: Numbered Backups,  Up: Backup Files
 
-Naming Backup Files
--------------------
+36.1.4 Naming Backup Files
+--------------------------
 
 The functions in this section are documented mainly because you can
 customize the naming conventions for backup files by redefining them.
 If you change one, you probably need to change the rest.
 
- - Function: backup-file-name-p filename
+ -- Function: backup-file-name-p filename
      This function returns a non-`nil' value if FILENAME is a possible
      name for a backup file.  A file with the name FILENAME need not
      exist; the function just checks the name.
@@ -717,7 +824,7 @@ If you change one, you probably need to change the rest.
      This simple expression is placed in a separate function to make it
      easy to redefine for customization.
 
- - Function: make-backup-file-name filename
+ -- Function: make-backup-file-name filename
      This function returns a string that is the name to use for a
      non-numbered backup file for file FILENAME.  On Unix, this is just
      FILENAME with a tilde appended.
@@ -735,11 +842,11 @@ If you change one, you probably need to change the rest.
 
           (defun make-backup-file-name (filename)
             (concat "." filename "~"))
-          
+
           (make-backup-file-name "backups.texi")
                => ".backups.texi~"
 
- - Function: find-backup-file-name filename
+ -- Function: find-backup-file-name filename
      This function computes the file name for a new backup file for
      FILENAME.  It may also propose certain existing backup files for
      deletion.  `find-backup-file-name' returns a list whose CAR is the
@@ -758,7 +865,7 @@ If you change one, you probably need to change the rest.
           (find-backup-file-name "~rms/foo")
                => ("~rms/foo.~5~" "~rms/foo.~3~")
 
- - Function: file-newest-backup filename
+ -- Function: file-newest-backup filename
      This function returns the name of the most recent backup file for
      FILENAME, or `nil' if that file has no backup files.
 
@@ -768,8 +875,8 @@ If you change one, you probably need to change the rest.
 \1f
 File: lispref.info,  Node: Auto-Saving,  Next: Reverting,  Prev: Backup Files,  Up: Backups and Auto-Saving
 
-Auto-Saving
-===========
+36.2 Auto-Saving
+================
 
 XEmacs periodically saves all files that you are visiting; this is
 called "auto-saving".  Auto-saving prevents you from losing more than a
@@ -779,7 +886,7 @@ happen every 300 keystrokes, or after around 30 seconds of idle time.
 users.  Here we describe the functions used to implement auto-saving
 and the variables that control them.
 
- - Variable: buffer-auto-save-file-name
+ -- Variable: buffer-auto-save-file-name
      This buffer-local variable is the name of the file used for
      auto-saving the current buffer.  It is `nil' if the buffer should
      not be auto-saved.
@@ -787,14 +894,14 @@ and the variables that control them.
           buffer-auto-save-file-name
           => "/xcssun/users/rms/lewis/#files.texi#"
 
- - Command: auto-save-mode arg
+ -- Command: auto-save-mode arg
      When used interactively without an argument, this command is a
      toggle switch: it turns on auto-saving of the current buffer if it
      is off, and vice-versa.  With an argument ARG, the command turns
      auto-saving on if the value of ARG is `t', a nonempty list, or a
      positive integer.  Otherwise, it turns auto-saving off.
 
- - Function: auto-save-file-name-p filename
+ -- Function: auto-save-file-name-p filename
      This function returns a non-`nil' value if FILENAME is a string
      that could be the name of an auto-save file.  It works based on
      knowledge of the naming convention for auto-save files: a name that
@@ -819,7 +926,7 @@ and the variables that control them.
      it, be sure to redefine the function `make-auto-save-file-name'
      correspondingly.
 
- - Function: make-auto-save-file-name &optional filename
+ -- Function: make-auto-save-file-name &optional filename
      This function returns the file name to use for auto-saving the
      current buffer.  This is just the file name with hash marks (`#')
      appended and prepended to it.  This function does not look at the
@@ -848,7 +955,7 @@ and the variables that control them.
      customize the naming convention for auto-save files.  Be sure to
      change `auto-save-file-name-p' in a corresponding way.
 
- - Variable: auto-save-visited-file-name
+ -- Variable: auto-save-visited-file-name
      If this variable is non-`nil', XEmacs auto-saves buffers in the
      files they are visiting.  That is, the auto-save is done in the
      same file that you are editing.  Normally, this variable is `nil',
@@ -860,36 +967,36 @@ and the variables that control them.
      buffer.  If auto-save mode is already enabled, auto-saves continue
      to go in the same file name until `auto-save-mode' is called again.
 
- - Function: recent-auto-save-p
+ -- Function: recent-auto-save-p
      This function returns `t' if the current buffer has been
      auto-saved since the last time it was read in or saved.
 
- - Function: set-buffer-auto-saved
+ -- Function: set-buffer-auto-saved
      This function marks the current buffer as auto-saved.  The buffer
      will not be auto-saved again until the buffer text is changed
      again.  The function returns `nil'.
 
- - User Option: auto-save-interval
+ -- User Option: auto-save-interval
      The value of this variable is the number of characters that XEmacs
      reads from the keyboard between auto-saves.  Each time this many
      more characters are read, auto-saving is done for all buffers in
      which it is enabled.
 
- - User Option: auto-save-timeout
+ -- User Option: auto-save-timeout
      The value of this variable is the number of seconds of idle time
      that should cause auto-saving.  Each time the user pauses for this
      long, XEmacs auto-saves any buffers that need it.  (Actually, the
      specified timeout is multiplied by a factor depending on the size
      of the current buffer.)
 
- - Variable: auto-save-hook
+ -- Variable: auto-save-hook
      This normal hook is run whenever an auto-save is about to happen.
 
- - User Option: auto-save-default
+ -- User Option: auto-save-default
      If this variable is non-`nil', buffers that are visiting files
      have auto-saving enabled by default.  Otherwise, they do not.
 
- - Command: do-auto-save &optional no-message current-only
+ -- Command: do-auto-save &optional no-message current-only
      This function auto-saves all buffers that need to be auto-saved.
      It saves all buffers for which auto-saving is enabled and that
      have been changed since the previous auto-save.
@@ -902,24 +1009,24 @@ and the variables that control them.
      If CURRENT-ONLY is non-`nil', only the current buffer is
      auto-saved.
 
- - Function: delete-auto-save-file-if-necessary
+ -- Function: delete-auto-save-file-if-necessary
      This function deletes the current buffer's auto-save file if
      `delete-auto-save-files' is non-`nil'.  It is called every time a
      buffer is saved.
 
- - Variable: delete-auto-save-files
+ -- Variable: delete-auto-save-files
      This variable is used by the function
      `delete-auto-save-file-if-necessary'.  If it is non-`nil', Emacs
      deletes auto-save files when a true save is done (in the visited
      file).  This saves disk space and unclutters your directory.
 
- - Function: rename-auto-save-file
+ -- Function: rename-auto-save-file
      This function adjusts the current buffer's auto-save file name if
      the visited file name has changed.  It also renames an existing
      auto-save file.  If the visited file name has not changed, this
      function does nothing.
 
- - Variable: buffer-saved-size
+ -- Variable: buffer-saved-size
      The value of this buffer-local variable is the length of the
      current buffer as of the last time it was read in, saved, or
      auto-saved.  This is used to detect a substantial decrease in
@@ -931,7 +1038,7 @@ and the variables that control them.
      auto-saving.  Turning auto-save mode off or on also alters this
      variable.
 
- - Variable: auto-save-list-file-name
+ -- Variable: auto-save-list-file-name
      This variable (if non-`nil') specifies a file for recording the
      names of all the auto-save files.  Each time XEmacs does
      auto-saving, it writes two lines into this file for each buffer
@@ -951,15 +1058,15 @@ and the variables that control them.
 \1f
 File: lispref.info,  Node: Reverting,  Prev: Auto-Saving,  Up: Backups and Auto-Saving
 
-Reverting
-=========
+36.3 Reverting
+==============
 
 If you have made extensive changes to a file and then change your mind
 about them, you can get rid of them by reading in the previous version
 of the file with the `revert-buffer' command.  *Note Reverting a
 Buffer: (xemacs)Reverting.
 
- - Command: revert-buffer &optional check-auto-save noconfirm
+ -- Command: revert-buffer &optional check-auto-save noconfirm
           preserve-modes
      This command replaces the buffer text with the text of the visited
      file on disk.  This action undoes all changes since the file was
@@ -992,7 +1099,7 @@ Buffer: (xemacs)Reverting.
    You can customize how `revert-buffer' does its work by setting these
 variables--typically, as buffer-local variables.
 
- - Variable: revert-buffer-function
+ -- Variable: revert-buffer-function
      The value of this variable is the function to use to revert this
      buffer.  If non-`nil', it is called as a function with no
      arguments to do the work of reverting.  If the value is `nil',
@@ -1003,13 +1110,13 @@ variables--typically, as buffer-local variables.
      fashion, give this variable a buffer-local value that is a
      function to regenerate the contents.
 
- - Variable: revert-buffer-insert-file-contents-function
+ -- Variable: revert-buffer-insert-file-contents-function
      The value of this variable, if non-`nil', is the function to use to
      insert the updated contents when reverting this buffer.  The
      function receives two arguments: first the file name to use;
      second, `t' if the user has asked to read the auto-save file.
 
- - Variable: before-revert-hook
+ -- Variable: before-revert-hook
      This normal hook is run by `revert-buffer' before actually
      inserting the modified contents--but only if
      `revert-buffer-function' is `nil'.
@@ -1017,7 +1124,7 @@ variables--typically, as buffer-local variables.
      Font Lock mode uses this hook to record that the buffer contents
      are no longer fontified.
 
- - Variable: after-revert-hook
+ -- Variable: after-revert-hook
      This normal hook is run by `revert-buffer' after actually inserting
      the modified contents--but only if `revert-buffer-function' is
      `nil'.
@@ -1028,8 +1135,8 @@ variables--typically, as buffer-local variables.
 \1f
 File: lispref.info,  Node: Buffers,  Next: Windows,  Prev: Backups and Auto-Saving,  Up: Top
 
-Buffers
-*******
+37 Buffers
+**********
 
 A "buffer" is a Lisp object containing text to be edited.  Buffers are
 used to hold the contents of files that are being visited; there may
@@ -1058,8 +1165,8 @@ not be displayed in any window.
 \1f
 File: lispref.info,  Node: Buffer Basics,  Next: Current Buffer,  Up: Buffers
 
-Buffer Basics
-=============
+37.1 Buffer Basics
+==================
 
 A "buffer" is a Lisp object containing text to be edited.  Buffers are
 used to hold the contents of files that are being visited; there may
@@ -1095,14 +1202,14 @@ them, see *Note Buffer-Local Variables::.
 variables related to the display of buffers in windows, see *Note
 Buffers and Windows::.
 
- - Function: bufferp object
+ -- Function: bufferp object
      This function returns `t' if OBJECT is a buffer, `nil' otherwise.
 
 \1f
 File: lispref.info,  Node: Current Buffer,  Next: Buffer Names,  Prev: Buffer Basics,  Up: Buffers
 
-The Current Buffer
-==================
+37.2 The Current Buffer
+=======================
 
 There are, in general, many buffers in an Emacs session.  At any time,
 one of them is designated as the "current buffer".  This is the buffer
@@ -1187,13 +1294,13 @@ Using `save-excursion', as shown below, handles quitting, errors, and
          (set-buffer ...)
          ...))
 
- - Function: current-buffer
+ -- Function: current-buffer
      This function returns the current buffer.
 
           (current-buffer)
                => #<buffer buffers.texi>
 
- - Function: set-buffer buffer-or-name
+ -- Function: set-buffer buffer-or-name
      This function makes BUFFER-OR-NAME the current buffer.  It does
      not display the buffer in the currently selected window or in any
      other window, so the user cannot necessarily see the buffer.  But
@@ -1206,8 +1313,8 @@ Using `save-excursion', as shown below, handles quitting, errors, and
 \1f
 File: lispref.info,  Node: Buffer Names,  Next: Buffer File Name,  Prev: Current Buffer,  Up: Buffers
 
-Buffer Names
-============
+37.3 Buffer Names
+=================
 
 Each buffer has a unique name, which is a string.  Many of the
 functions that work on buffers accept either a buffer or a buffer name
@@ -1220,7 +1327,7 @@ have names starting with a space, so that the `list-buffers' and
 `buffer-menu' commands don't mention them.  A name starting with space
 also initially disables recording undo information; see *Note Undo::.
 
- - Function: buffer-name &optional buffer
+ -- Function: buffer-name &optional buffer
      This function returns the name of BUFFER as a string.  If BUFFER
      is not supplied, it defaults to the current buffer.
 
@@ -1229,7 +1336,7 @@ also initially disables recording undo information; see *Note Undo::.
 
           (buffer-name)
                => "buffers.texi"
-          
+
           (setq foo (get-buffer "temp"))
                => #<buffer temp>
           (kill-buffer foo)
@@ -1239,7 +1346,7 @@ also initially disables recording undo information; see *Note Undo::.
           foo
                => #<killed buffer>
 
- - Command: rename-buffer newname &optional unique
+ -- Command: rename-buffer newname &optional unique
      This function renames the current buffer to NEWNAME.  An error is
      signaled if NEWNAME is not a string, or if there is already a
      buffer with that name.  The function returns `nil'.
@@ -1253,7 +1360,7 @@ also initially disables recording undo information; see *Note Undo::.
      to some other name, thus making it possible to create a second
      shell buffer under the name `*shell*'.
 
- - Function: get-buffer buffer-or-name
+ -- Function: get-buffer buffer-or-name
      This function returns the buffer named BUFFER-OR-NAME.  If
      BUFFER-OR-NAME is a string and there is no buffer with that name,
      the value is `nil'.  If BUFFER-OR-NAME is actually a buffer, it is
@@ -1270,7 +1377,7 @@ also initially disables recording undo information; see *Note Undo::.
      See also the function `get-buffer-create' in *Note Creating
      Buffers::.
 
- - Function: generate-new-buffer-name starting-name &optional ignore
+ -- Function: generate-new-buffer-name starting-name &optional ignore
      This function returns a name that would be unique for a new
      buffer--but does not create the buffer.  It starts with
      STARTING-NAME, and produces a name not currently in use for any
@@ -1286,8 +1393,8 @@ also initially disables recording undo information; see *Note Undo::.
 \1f
 File: lispref.info,  Node: Buffer File Name,  Next: Buffer Modification,  Prev: Buffer Names,  Up: Buffers
 
-Buffer File Name
-================
+37.4 Buffer File Name
+=====================
 
 The "buffer file name" is the name of the file that is visited in that
 buffer.  When a buffer is not visiting a file, its buffer file name is
@@ -1296,7 +1403,7 @@ nondirectory part of the buffer file name, but the buffer file name and
 the buffer name are distinct and can be set independently.  *Note
 Visiting Files::.
 
- - Function: buffer-file-name &optional buffer
+ -- Function: buffer-file-name &optional buffer
      This function returns the absolute file name of the file that
      BUFFER is visiting.  If BUFFER is not visiting any file,
      `buffer-file-name' returns `nil'.  If BUFFER is not supplied, it
@@ -1305,7 +1412,7 @@ Visiting Files::.
           (buffer-file-name (other-buffer))
                => "/usr/user/lewis/manual/files.texi"
 
- - Variable: buffer-file-name
+ -- Variable: buffer-file-name
      This buffer-local variable contains the name of the file being
      visited in the current buffer, or `nil' if it is not visiting a
      file.  It is a permanent local, unaffected by
@@ -1320,13 +1427,13 @@ Visiting Files::.
      buffer name, are not strictly necessary, but others are essential
      to avoid confusing XEmacs.
 
- - Variable: buffer-file-truename
+ -- Variable: buffer-file-truename
      This buffer-local variable holds the truename of the file visited
      in the current buffer, or `nil' if no file is visited.  It is a
      permanent local, unaffected by `kill-local-variables'.  *Note
      Truenames::.
 
- - Variable: buffer-file-number
+ -- Variable: buffer-file-number
      This buffer-local variable holds the file number and directory
      device number of the file visited in the current buffer, or `nil'
      if no file or a nonexistent file is visited.  It is a permanent
@@ -1337,7 +1444,7 @@ Visiting Files::.
      accessible on the system.  See the function `file-attributes', in
      *Note File Attributes::, for more information about them.
 
- - Function: get-file-buffer filename
+ -- Function: get-file-buffer filename
      This function returns the buffer visiting file FILENAME.  If there
      is no such buffer, it returns `nil'.  The argument FILENAME, which
      must be a string, is expanded (*note File Name Expansion::), then
@@ -1350,7 +1457,7 @@ Visiting Files::.
      visiting the same file name.  In such cases, this function returns
      the first such buffer in the buffer list.
 
- - Command: set-visited-file-name filename
+ -- Command: set-visited-file-name filename
      If FILENAME is a non-empty string, this function changes the name
      of the file visited in current buffer to FILENAME.  (If the buffer
      had no visited file, this gives it one.)  The _next time_ the
@@ -1369,7 +1476,7 @@ Visiting Files::.
      See also `clear-visited-file-modtime' and
      `verify-visited-file-modtime' in *Note Buffer Modification::.
 
- - Variable: list-buffers-directory
+ -- Variable: list-buffers-directory
      This buffer-local variable records a string to display in a buffer
      listing in place of the visited file name, for buffers that don't
      have a visited file name.  Dired buffers use this variable.
@@ -1377,8 +1484,8 @@ Visiting Files::.
 \1f
 File: lispref.info,  Node: Buffer Modification,  Next: Modification Time,  Prev: Buffer File Name,  Up: Buffers
 
-Buffer Modification
-===================
+37.5 Buffer Modification
+========================
 
 XEmacs keeps a flag called the "modified flag" for each buffer, to
 record whether you have changed the text of the buffer.  This flag is
@@ -1396,13 +1503,13 @@ file formerly visited.
    The functions that modify the contents of buffers are described in
 *Note Text::.
 
- - Function: buffer-modified-p &optional buffer
+ -- Function: buffer-modified-p &optional buffer
      This function returns `t' if the buffer BUFFER has been modified
      since it was last read in from a file or saved, or `nil'
      otherwise.  If BUFFER is not supplied, the current buffer is
      tested.
 
- - Function: set-buffer-modified-p flag &optional buffer
+ -- Function: set-buffer-modified-p flag &optional buffer
      This function marks BUFFER as modified if FLAG is non-`nil', or as
      unmodified if the flag is `nil'.  BUFFER defaults to the current
      buffer.
@@ -1413,14 +1520,14 @@ file formerly visited.
 
           (set-buffer-modified-p (buffer-modified-p))
 
- - Command: not-modified &optional arg
+ -- Command: not-modified &optional arg
      This command marks the current buffer as unmodified, and not
      needing to be saved. (If ARG is non-`nil', the buffer is instead
      marked as modified.) Don't use this function in programs, since it
      prints a message in the echo area; use `set-buffer-modified-p'
      (above) instead.
 
- - Function: buffer-modified-tick &optional buffer
+ -- Function: buffer-modified-tick &optional buffer
      This function returns BUFFER`s modification-count.  This is a
      counter that increments every time the buffer is modified.  If
      BUFFER is `nil' (or omitted), the current buffer is used.
@@ -1428,8 +1535,8 @@ file formerly visited.
 \1f
 File: lispref.info,  Node: Modification Time,  Next: Read Only Buffers,  Prev: Buffer Modification,  Up: Buffers
 
-Comparison of Modification Time
-===============================
+37.6 Comparison of Modification Time
+====================================
 
 Suppose that you visit a file and make changes in its buffer, and
 meanwhile the file itself is changed on disk.  At this point, saving the
@@ -1438,7 +1545,7 @@ be what you want, but usually it would lose valuable information.
 XEmacs therefore checks the file's modification time using the functions
 described below before saving the file.
 
- - Function: verify-visited-file-modtime buffer
+ -- Function: verify-visited-file-modtime buffer
      This function compares what BUFFER has recorded for the
      modification time of its visited file against the actual
      modification time of the file as recorded by the operating system.
@@ -1448,7 +1555,7 @@ described below before saving the file.
      The function returns `t' if the last actual modification time and
      XEmacs's recorded modification time are the same, `nil' otherwise.
 
- - Function: clear-visited-file-modtime
+ -- Function: clear-visited-file-modtime
      This function clears out the record of the last modification time
      of the file being visited by the current buffer.  As a result, the
      next attempt to save this buffer will not complain of a
@@ -1458,13 +1565,13 @@ described below before saving the file.
      exceptional places where the usual test to avoid overwriting a
      changed file should not be done.
 
- - Function: visited-file-modtime
+ -- Function: visited-file-modtime
      This function returns the buffer's recorded last file modification
      time, as a list of the form `(HIGH . LOW)'.  (This is the same
      format that `file-attributes' uses to return time values; see
      *Note File Attributes::.)
 
- - Function: set-visited-file-modtime &optional time
+ -- Function: set-visited-file-modtime &optional time
      This function updates the buffer's record of the last modification
      time of the visited file, to the value specified by TIME if TIME
      is not `nil', and otherwise to the last modification time of the
@@ -1478,7 +1585,7 @@ described below before saving the file.
      normally, or if the file itself has been changed for some known
      benign reason.
 
- - Function: ask-user-about-supersession-threat filename
+ -- Function: ask-user-about-supersession-threat filename
      This function is used to ask a user how to proceed after an
      attempt to modify an obsolete buffer visiting file FILENAME.  An
      "obsolete buffer" is an unmodified buffer for which the associated
@@ -1499,8 +1606,8 @@ described below before saving the file.
 \1f
 File: lispref.info,  Node: Read Only Buffers,  Next: The Buffer List,  Prev: Modification Time,  Up: Buffers
 
-Read-Only Buffers
-=================
+37.7 Read-Only Buffers
+======================
 
 If a buffer is "read-only", then you cannot change its contents,
 although you may change your view of the contents by scrolling and
@@ -1522,11 +1629,11 @@ narrowing.
      `nil' (with `let') or bind `inhibit-read-only' to `t' around the
      places where they change the text.
 
- - Variable: buffer-read-only
+ -- Variable: buffer-read-only
      This buffer-local variable specifies whether the buffer is
      read-only.  The buffer is read-only if this variable is non-`nil'.
 
- - Variable: inhibit-read-only
+ -- Variable: inhibit-read-only
      If this variable is non-`nil', then read-only buffers and read-only
      characters may be modified.  Read-only characters in a buffer are
      those that have non-`nil' `read-only' properties (either text
@@ -1538,7 +1645,7 @@ narrowing.
      `read-only' character properties have no effect if they are members
      of the list (comparison is done with `eq').
 
- - Command: toggle-read-only &optional arg
+ -- Command: toggle-read-only &optional arg
      This command changes whether the current buffer is read-only.
      Interactively, if a prefix arg ARG is supplied, set the current
      buffer read only if and only if ARG is positive.
@@ -1548,7 +1655,7 @@ narrowing.
      whether you want the read-only flag on or off; so you can set
      `buffer-read-only' explicitly to the proper value, `t' or `nil'.
 
- - Function: barf-if-buffer-read-only &optional buffer start end
+ -- Function: barf-if-buffer-read-only &optional buffer start end
      This function signals a `buffer-read-only' error if BUFFER is
      read-only.  BUFFER defaults to the current buffer.  *Note
      Interactive Call::, for another way to signal an error if the
@@ -1569,8 +1676,8 @@ narrowing.
 \1f
 File: lispref.info,  Node: The Buffer List,  Next: Creating Buffers,  Prev: Read Only Buffers,  Up: Buffers
 
-The Buffer List
-===============
+37.8 The Buffer List
+====================
 
 The "buffer list" is a list of all live buffers.  Creating a buffer
 adds it to this list, and killing a buffer deletes it.  The order of
@@ -1589,7 +1696,7 @@ that is independent of the buffer list orders for any particular frame.
    Note that the different buffer lists all contain the same elements.
 It is only the order of those elements that is different.
 
- - Function: buffer-list &optional frame
+ -- Function: buffer-list &optional frame
      This function returns a list of all buffers, including those whose
      names begin with a space.  The elements are actual buffers, not
      their names.  The order of the list is specific to FRAME, which
@@ -1600,7 +1707,7 @@ It is only the order of those elements that is different.
                => (#<buffer buffers.texi>
                    #<buffer  *Minibuf-1*> #<buffer buffer.c>
                    #<buffer *Help*> #<buffer TAGS>)
-          
+
           ;; Note that the name of the minibuffer
           ;;   begins with a space!
           (mapcar (function buffer-name) (buffer-list))
@@ -1613,7 +1720,7 @@ It is only the order of those elements that is different.
      This list is a copy of a list used inside XEmacs; modifying it has
      no effect on the buffers.
 
- - Function: other-buffer &optional buffer-or-name frame visible-ok
+ -- Function: other-buffer &optional buffer-or-name frame visible-ok
      This function returns the first buffer in the buffer list other
      than BUFFER-OR-NAME, in FRAME's ordering for the buffer list.
      (FRAME defaults to the current frame.  If FRAME is `t', then the
@@ -1644,14 +1751,14 @@ It is only the order of those elements that is different.
      Note that in FSF Emacs 19, there is no FRAME argument, and
      VISIBLE-OK is the second argument instead of the third.
 
- - Command: list-buffers &optional files-only
+ -- Command: list-buffers &optional files-only
      This function displays a listing of the names of existing buffers.
      It clears the buffer `*Buffer List*', then inserts the listing
      into that buffer and displays it in a window.  `list-buffers' is
      intended for interactive use, and is described fully in `The XEmacs
      Reference Manual'.  It returns `nil'.
 
- - Command: bury-buffer &optional buffer-or-name before
+ -- Command: bury-buffer &optional buffer-or-name before
      This function puts BUFFER-OR-NAME at the end of the buffer list
      without changing the order of any of the other buffers on the list.
      This buffer therefore becomes the least desirable candidate for
@@ -1669,8 +1776,8 @@ It is only the order of those elements that is different.
 \1f
 File: lispref.info,  Node: Creating Buffers,  Next: Killing Buffers,  Prev: The Buffer List,  Up: Buffers
 
-Creating Buffers
-================
+37.9 Creating Buffers
+=====================
 
 This section describes the two primitives for creating buffers.
 `get-buffer-create' creates a buffer if it finds no existing buffer
@@ -1682,7 +1789,7 @@ buffer and gives it a unique name.
 `create-file-buffer' (*note Visiting Files::).  Starting a subprocess
 can also create a buffer (*note Processes::).
 
- - Function: get-buffer-create name
+ -- Function: get-buffer-create name
      This function returns a buffer named NAME.  It returns an existing
      buffer with that name, if one exists; otherwise, it creates a new
      buffer.  The buffer does not become the current buffer--this
@@ -1697,7 +1804,7 @@ can also create a buffer (*note Processes::).
      variable `default-major-mode' is handled at a higher level.  *Note
      Auto Major Mode::.
 
- - Function: generate-new-buffer name
+ -- Function: generate-new-buffer name
      This function returns a newly created, empty buffer, but does not
      make it current.  If there is no buffer named NAME, then that is
      the name of the new buffer.  If that name is in use, this function
@@ -1724,8 +1831,8 @@ can also create a buffer (*note Processes::).
 \1f
 File: lispref.info,  Node: Killing Buffers,  Next: Indirect Buffers,  Prev: Creating Buffers,  Up: Buffers
 
-Killing Buffers
-===============
+37.10 Killing Buffers
+=====================
 
 "Killing a buffer" makes its name unknown to XEmacs and makes its text
 space available for other use.
@@ -1750,11 +1857,11 @@ buffers, the indirect buffers are automatically killed as well.
 buffer has been killed, you can either use this feature or the function
 `buffer-live-p'.
 
- - Function: buffer-live-p object
+ -- Function: buffer-live-p object
      This function returns `t' if OBJECT is an editor buffer that has
      not been deleted, `nil' otherwise.
 
- - Command: kill-buffer buffer-or-name
+ -- Command: kill-buffer buffer-or-name
      This function kills the buffer BUFFER-OR-NAME, freeing all its
      memory for use as space for other buffers.  (Emacs version 18 and
      older was unable to return the memory to the operating system.)
@@ -1777,14 +1884,14 @@ buffer has been killed, you can either use this feature or the function
           (kill-buffer "foo.unchanged")
                => nil
           (kill-buffer "foo.changed")
-          
+
           ---------- Buffer: Minibuffer ----------
           Buffer foo.changed modified; kill anyway? (yes or no) yes
           ---------- Buffer: Minibuffer ----------
-          
+
                => nil
 
- - Variable: kill-buffer-query-functions
+ -- Variable: kill-buffer-query-functions
      After confirming unsaved changes, `kill-buffer' calls the functions
      in the list `kill-buffer-query-functions', in order of appearance,
      with no arguments.  The buffer being killed is the current buffer
@@ -1792,13 +1899,13 @@ buffer has been killed, you can either use this feature or the function
      confirmation from the user for various nonstandard reasons.  If
      any of them returns `nil', `kill-buffer' spares the buffer's life.
 
- - Variable: kill-buffer-hook
+ -- Variable: kill-buffer-hook
      This is a normal hook run by `kill-buffer' after asking all the
      questions it is going to ask, just before actually killing the
      buffer.  The buffer to be killed is current when the hook
      functions run.  *Note Hooks::.
 
- - Variable: buffer-offer-save
+ -- Variable: buffer-offer-save
      This variable, if non-`nil' in a particular buffer, tells
      `save-buffers-kill-emacs' and `save-some-buffers' to offer to save
      that buffer, just as they offer to save file-visiting buffers.  The
@@ -1808,8 +1915,8 @@ buffer has been killed, you can either use this feature or the function
 \1f
 File: lispref.info,  Node: Indirect Buffers,  Prev: Killing Buffers,  Up: Buffers
 
-Indirect Buffers
-================
+37.11 Indirect Buffers
+======================
 
 An "indirect buffer" shares the text of some other buffer, which is
 called the "base buffer" of the indirect buffer.  In some ways it is
@@ -1837,7 +1944,7 @@ base buffer.
    Killing an indirect buffer has no effect on its base buffer.  Killing
 the base buffer kills all its indirect children.
 
- - Command: make-indirect-buffer base-buffer name
+ -- Command: make-indirect-buffer base-buffer name
      This creates an indirect buffer named NAME whose base buffer is
      BASE-BUFFER.  The argument BASE-BUFFER may be a buffer or a string.
 
@@ -1847,7 +1954,7 @@ the base buffer kills all its indirect children.
           (make-indirect-buffer "*scratch*" "indirect")
                => #<buffer "indirect">
 
- - Function: buffer-base-buffer &optional buffer
+ -- Function: buffer-base-buffer &optional buffer
      This function returns the base buffer of BUFFER.  If BUFFER is not
      indirect, the value is `nil'.  Otherwise, the value is another
      buffer, which is never an indirect buffer.  If BUFFER is not
@@ -1856,7 +1963,7 @@ the base buffer kills all its indirect children.
           (buffer-base-buffer (get-buffer "indirect"))
                => #<buffer "*scratch*">
 
- - Function: buffer-indirect-children &optional buffer
+ -- Function: buffer-indirect-children &optional buffer
      This function returns a list of all indirect buffers whose base
      buffer is BUFFER.  If BUFFER is indirect, the return value will
      always be `nil'; see `make-indirect-buffer'.  If BUFFER is not
@@ -1868,8 +1975,8 @@ the base buffer kills all its indirect children.
 \1f
 File: lispref.info,  Node: Windows,  Next: Frames,  Prev: Buffers,  Up: Top
 
-Windows
-*******
+38 Windows
+**********
 
 This chapter describes most of the functions and variables related to
 Emacs windows.  See *Note Display::, for information on how text is
@@ -1899,8 +2006,8 @@ displayed in windows.
 \1f
 File: lispref.info,  Node: Basic Windows,  Next: Splitting Windows,  Up: Windows
 
-Basic Concepts of Emacs Windows
-===============================
+38.1 Basic Concepts of Emacs Windows
+====================================
 
 A "window" in XEmacs is the physical area of the screen in which a
 buffer is displayed.  The term is also used to refer to a Lisp object
@@ -1914,7 +2021,7 @@ multiple nonoverlapping Emacs windows.
 
    In each frame, at any time, one and only one window is designated as
 "selected within the frame".  The frame's cursor appears in that
-window.  At ant time, one frame is the selected frame; and the window
+window.  At any time, one frame is the selected frame; and the window
 selected within that frame is "the selected window".  The selected
 window's buffer is usually the current buffer (except when `set-buffer'
 has been used).  *Note Current Buffer::.
@@ -1971,14 +2078,14 @@ Windows::, and *Note Size of Window::.
    *Note Display::, for information on how the contents of the window's
 buffer are displayed in the window.
 
- - Function: windowp object
+ -- Function: windowp object
      This function returns `t' if OBJECT is a window.
 
 \1f
 File: lispref.info,  Node: Splitting Windows,  Next: Deleting Windows,  Prev: Basic Windows,  Up: Windows
 
-Splitting Windows
-=================
+38.2 Splitting Windows
+======================
 
 The functions described here are the primitives used to split a window
 into two windows.  Two higher level functions sometimes split a window,
@@ -1989,7 +2096,7 @@ Buffers::).
 The two "halves" of the split window initially display the same buffer
 previously visible in the window that was split.
 
- - Function: one-window-p &optional nomini which-frames which-devices
+ -- Function: one-window-p &optional nomini which-frames which-devices
      This function returns non-`nil' if there is only one window.  The
      argument NOMINI, if non-`nil', means don't count the minibuffer
      even if it is active; otherwise, the minibuffer window is
@@ -1999,7 +2106,7 @@ previously visible in the window that was split.
      The remaining arguments controls which set of windows are counted,
      as with `next-window'.
 
- - Command: split-window &optional window size horizontal
+ -- Command: split-window &optional window size horizontal
      This function splits WINDOW into two windows.  The original window
      WINDOW remains the selected window, but occupies only part of its
      former screen area.  The rest is occupied by a newly created
@@ -2026,7 +2133,7 @@ previously visible in the window that was split.
                => #<window 8 on windows.texi>
           (window-edges)          ; Edges in order:
                => (0 0 80 50)     ;   left-top-right-bottom
-          
+
           ;; Returns window created
           (setq w2 (split-window w 15))
                => #<window 28 on windows.texi>
@@ -2077,7 +2184,7 @@ previously visible in the window that was split.
      or `|' characters.  The display table can specify alternative
      border characters; see *Note Display Tables::.
 
- - Command: split-window-vertically &optional size
+ -- Command: split-window-vertically &optional size
      This function splits the selected window into two windows, one
      above the other, leaving the selected window with SIZE lines.
 
@@ -2089,7 +2196,7 @@ previously visible in the window that was split.
             (interactive "P")
             (split-window nil (and arg (prefix-numeric-value arg))))
 
- - Command: split-window-horizontally &optional size
+ -- Command: split-window-horizontally &optional size
      This function splits the selected window into two windows
      side-by-side, leaving the selected window with SIZE columns.
 
@@ -2105,8 +2212,8 @@ previously visible in the window that was split.
 \1f
 File: lispref.info,  Node: Deleting Windows,  Next: Selecting Windows,  Prev: Splitting Windows,  Up: Windows
 
-Deleting Windows
-================
+38.3 Deleting Windows
+=====================
 
 A window remains visible on its frame unless you "delete" it by calling
 certain functions that delete windows.  A deleted window cannot appear
@@ -2120,14 +2227,14 @@ windows that aren't part of that configuration.
 adjacent sibling.  (In Emacs version 18, the space was divided evenly
 among all the siblings.)
 
- - Function: window-live-p window
+ -- Function: window-live-p window
      This function returns `nil' if WINDOW is deleted, and `t'
      otherwise.
 
      *Warning:* Erroneous information or fatal errors may result from
      using a deleted window as if it were live.
 
- - Command: delete-window &optional window force
+ -- Command: delete-window &optional window force
      This function removes WINDOW from the display.  If WINDOW is
      omitted, then the selected window is deleted. If window is the
      only one on its frame, the frame is deleted as well.
@@ -2143,14 +2250,14 @@ among all the siblings.)
      When `delete-window' is called interactively, the selected window
      is deleted.
 
- - Command: delete-other-windows &optional window
+ -- Command: delete-other-windows &optional window
      This function makes WINDOW the only window on its frame, by
      deleting the other windows in that frame.  If WINDOW is omitted or
      `nil', then the selected window is used by default.
 
      The result is `nil'.
 
- - Command: delete-windows-on buffer &optional which-frames
+ -- Command: delete-windows-on buffer &optional which-frames
           which-devices
      This function deletes all windows showing BUFFER.  If there are no
      windows showing BUFFER, it does nothing.
@@ -2212,13 +2319,13 @@ among all the siblings.)
 \1f
 File: lispref.info,  Node: Selecting Windows,  Next: Cyclic Window Ordering,  Prev: Deleting Windows,  Up: Windows
 
-Selecting Windows
-=================
+38.4 Selecting Windows
+======================
 
 When a window is selected, the buffer in the window becomes the current
 buffer, and the cursor will appear in it.
 
- - Function: selected-window &optional device
+ -- Function: selected-window &optional device
      This function returns the selected window.  This is the window in
      which the cursor appears and to which many commands apply.  Each
      separate device can have its own selected window, which is
@@ -2226,7 +2333,7 @@ buffer, and the cursor will appear in it.
      argument DEVICE specifies which device to return the selected
      window for, and defaults to the selected device.
 
- - Function: select-window window &optional norecord
+ -- Function: select-window window &optional norecord
      This function makes WINDOW the selected window.  The cursor then
      appears in WINDOW (on redisplay).  The buffer being displayed in
      WINDOW is immediately designated the current buffer.
@@ -2241,7 +2348,7 @@ buffer, and the cursor will appear in it.
           (select-window w)
                => #<window 65 on windows.texi>
 
- - Special Form: save-selected-window forms...
+ -- Special Form: save-selected-window forms...
      This special form records the selected window, executes FORMS in
      sequence, then restores the earlier selected window.  It does not
      save or restore anything about the sizes, arrangement or contents
@@ -2251,7 +2358,7 @@ buffer, and the cursor will appear in it.
    The following functions choose one of the windows on the screen,
 offering various criteria for the choice.
 
- - Function: get-lru-window &optional which-frames which-devices
+ -- Function: get-lru-window &optional which-frames which-devices
      This function returns the window least recently "used" (that is,
      selected).  The selected window is always the most recently used
      window.
@@ -2310,7 +2417,7 @@ offering various criteria for the choice.
           Consider all devices without restriction.
 
 
- - Function: get-largest-window &optional which-frames which-devices
+ -- Function: get-largest-window &optional which-frames which-devices
      This function returns the window with the largest area (height
      times width).  If there are no side-by-side windows, then this is
      the window with the most lines.  A minibuffer window is never a
@@ -2326,8 +2433,8 @@ offering various criteria for the choice.
 \1f
 File: lispref.info,  Node: Cyclic Window Ordering,  Next: Buffers and Windows,  Prev: Selecting Windows,  Up: Windows
 
-Cyclic Ordering of Windows
-==========================
+38.5 Cyclic Ordering of Windows
+===============================
 
 When you use the command `C-x o' (`other-window') to select the next
 window, it moves through all the windows on the screen in a specific
@@ -2346,7 +2453,7 @@ horizontal, the ordering is top to bottom in the left part, and so on.
 In general, within each set of siblings at any level in the window tree,
 the order is left to right, or top to bottom.
 
- - Function: next-window &optional window minibuf which-frames
+ -- Function: next-window &optional window minibuf which-frames
           which-devices
      This function returns the window following WINDOW in the cyclic
      ordering of windows.  This is the window that `C-x o' would select
@@ -2430,13 +2537,13 @@ the order is left to right, or top to bottom.
           (next-window (next-window (selected-window)))
                => #<window 56 on windows.texi>
 
- - Function: previous-window &optional window minibuf which-frames
+ -- Function: previous-window &optional window minibuf which-frames
           which-devices
      This function returns the window preceding WINDOW in the cyclic
      ordering of windows.  The other arguments specify which windows to
      include in the cycle, as in `next-window'.
 
- - Command: other-window count &optional which-frames which-devices
+ -- Command: other-window count &optional which-frames which-devices
      This function selects the COUNTth following window in the cyclic
      order.  If COUNT is negative, then it selects the -COUNTth
      preceding window.  It returns `nil'.
@@ -2446,7 +2553,7 @@ the order is left to right, or top to bottom.
      The other arguments specify which windows to include in the cycle,
      as in `next-window'.
 
- - Function: walk-windows function &optional minibuf which-frames
+ -- Function: walk-windows function &optional minibuf which-frames
           which-devices
      This function cycles through all windows, calling `function' once
      for each window with the window as its sole argument.
@@ -2457,8 +2564,8 @@ the order is left to right, or top to bottom.
 \1f
 File: lispref.info,  Node: Buffers and Windows,  Next: Displaying Buffers,  Prev: Cyclic Window Ordering,  Up: Windows
 
-Buffers and Windows
-===================
+38.6 Buffers and Windows
+========================
 
 This section describes low-level functions to examine windows or to
 display buffers in windows in a precisely controlled fashion.  *Note
@@ -2467,7 +2574,7 @@ and specify a buffer for it.  The functions described there are easier
 to use than these, but they employ heuristics in choosing or creating a
 window; use these functions when you need complete control.
 
- - Function: set-window-buffer window buffer-or-name &optional norecord
+ -- Function: set-window-buffer window buffer-or-name &optional norecord
      This function makes WINDOW display BUFFER-OR-NAME as its contents.
      BUFFER-OR-NAME can be a buffer or a buffer name.
 
@@ -2479,7 +2586,7 @@ window; use these functions when you need complete control.
           (set-window-buffer (selected-window) "foo")
                => nil
 
- - Function: window-buffer &optional window
+ -- Function: window-buffer &optional window
      This function returns the buffer that WINDOW is displaying.  If
      WINDOW is omitted, this function returns the buffer for the
      selected window.
@@ -2487,7 +2594,7 @@ window; use these functions when you need complete control.
           (window-buffer)
                => #<buffer windows.texi>
 
- - Function: get-buffer-window buffer-or-name &optional which-frames
+ -- Function: get-buffer-window buffer-or-name &optional which-frames
           which-devices
      This function returns a window currently displaying
      BUFFER-OR-NAME, or `nil' if there is none.  If there are several
@@ -2501,8 +2608,8 @@ window; use these functions when you need complete control.
 \1f
 File: lispref.info,  Node: Displaying Buffers,  Next: Choosing Window,  Prev: Buffers and Windows,  Up: Windows
 
-Displaying Buffers in Windows
-=============================
+38.7 Displaying Buffers in Windows
+==================================
 
 In this section we describe convenient functions that choose a window
 automatically and use it to display a specified buffer.  These functions
@@ -2519,7 +2626,7 @@ windows, which is gratuitous and will surprise the user.  Instead, use
 Excursions::), which designate buffers as current for programmed access
 without affecting the display of buffers in windows.
 
- - Command: switch-to-buffer buffer-or-name &optional norecord
+ -- Command: switch-to-buffer buffer-or-name &optional norecord
      This function makes BUFFER-OR-NAME the current buffer, and also
      displays the buffer in the selected window.  This means that a
      human can see the buffer and subsequent keyboard commands will
@@ -2540,7 +2647,7 @@ without affecting the display of buffers in windows.
      the binding of `C-x b'.  It is also used frequently in programs.
      It always returns `nil'.
 
- - Command: switch-to-buffer-other-window buffer-or-name
+ -- Command: switch-to-buffer-other-window buffer-or-name
      This function makes BUFFER-OR-NAME the current buffer and displays
      it in a window not currently selected.  It then selects that
      window.  The handling of the buffer is the same as in
@@ -2552,7 +2659,7 @@ without affecting the display of buffers in windows.
      already displaying the buffer, then it continues to do so, but
      another window is nonetheless found to display it in as well.
 
- - Function: pop-to-buffer buffer-or-name &optional other-window
+ -- Function: pop-to-buffer buffer-or-name &optional other-window
           on-frame
      This function makes BUFFER-OR-NAME the current buffer and switches
      to it in some window, preferably not the window previously
@@ -2595,7 +2702,7 @@ without affecting the display of buffers in windows.
      An example use of this function is found at the end of *Note
      Filter Functions::.
 
- - Command: replace-buffer-in-windows buffer &optional which-frames
+ -- Command: replace-buffer-in-windows buffer &optional which-frames
           which-devices
      This function replaces BUFFER with some other buffer in all
      windows displaying it.  The other buffer used is chosen with
@@ -2611,15 +2718,15 @@ without affecting the display of buffers in windows.
 \1f
 File: lispref.info,  Node: Choosing Window,  Next: Window Point,  Prev: Displaying Buffers,  Up: Windows
 
-Choosing a Window for Display
-=============================
+38.8 Choosing a Window for Display
+==================================
 
 This section describes the basic facility that chooses a window to
 display a buffer in--`display-buffer'.  All the higher-level functions
 and commands use this subroutine.  Here we describe how to use
 `display-buffer' and how to customize it.
 
- - Command: display-buffer buffer-or-name &optional not-this-window
+ -- Command: display-buffer buffer-or-name &optional not-this-window
           override-frame
      This command makes BUFFER-OR-NAME appear in some window, like
      `pop-to-buffer', but it does not select that window and does not
@@ -2648,31 +2755,31 @@ and commands use this subroutine.  Here we describe how to use
 XEmacs will not automatically change which buffer appears in the
 window, such as `display-buffer' might normally do.
 
- - Function: window-dedicated-p window
+ -- Function: window-dedicated-p window
      This function returns WINDOW's dedicated object, usually `t' or
      `nil'.
 
- - Function: set-window-buffer-dedicated window buffer
+ -- Function: set-window-buffer-dedicated window buffer
      This function makes WINDOW display BUFFER and be dedicated to that
      buffer.  Then XEmacs will not automatically change which buffer
      appears in WINDOW.  If BUFFER is `nil', this function makes WINDOW
      not be dedicated (but doesn't change which buffer appears in it
      currently).
 
- - User Option: pop-up-windows
+ -- User Option: pop-up-windows
      This variable controls whether `display-buffer' makes new windows.
      If it is non-`nil' and there is only one window, then that window
      is split.  If it is `nil', then `display-buffer' does not split
      the single window, but uses it whole.
 
- - User Option: split-height-threshold
+ -- User Option: split-height-threshold
      This variable determines when `display-buffer' may split a window,
      if there are multiple windows.  `display-buffer' always splits the
      largest window if it has at least this many lines.  If the largest
      window is not this tall, it is split only if it is the sole window
      and `pop-up-windows' is non-`nil'.
 
- - User Option: pop-up-frames
+ -- User Option: pop-up-frames
      This variable controls whether `display-buffer' makes new frames.
      If it is non-`nil', `display-buffer' looks for an existing window
      already displaying the desired buffer, on any visible frame.  If
@@ -2686,7 +2793,7 @@ window, such as `display-buffer' might normally do.
 
      *Note Frames::, for more information.
 
- - Variable: pop-up-frame-function
+ -- Variable: pop-up-frame-function
      This variable specifies how to make a new frame if `pop-up-frames'
      is non-`nil'.
 
@@ -2696,12 +2803,12 @@ window, such as `display-buffer' might normally do.
      variable is a function that creates a frame using properties from
      `pop-up-frame-plist'.
 
- - Variable: pop-up-frame-plist
+ -- Variable: pop-up-frame-plist
      This variable holds a plist specifying frame properties used when
      `display-buffer' makes a new frame.  *Note Frame Properties::, for
      more information about frame properties.
 
- - Variable: special-display-buffer-names
+ -- Variable: special-display-buffer-names
      A list of buffer names for buffers that should be displayed
      specially.  If the buffer's name is in this list, `display-buffer'
      handles the buffer specially.
@@ -2717,7 +2824,7 @@ window, such as `display-buffer' might normally do.
      first argument is always the buffer to be displayed; the arguments
      from the list come after that.)
 
- - Variable: special-display-regexps
+ -- Variable: special-display-regexps
      A list of regular expressions that specify buffers that should be
      displayed specially.  If the buffer's name matches any of the
      regular expressions in this list, `display-buffer' handles the
@@ -2731,7 +2838,7 @@ window, such as `display-buffer' might normally do.
      to create the frame.  See above, under
      `special-display-buffer-names'.
 
- - Variable: special-display-function
+ -- Variable: special-display-function
      This variable holds the function to call to display a buffer
      specially.  It receives the buffer as an argument, and should
      return the window in which it is displayed.
@@ -2739,7 +2846,7 @@ window, such as `display-buffer' might normally do.
      The default value of this variable is
      `special-display-popup-frame'.
 
- - Function: special-display-popup-frame buffer
+ -- Function: special-display-popup-frame buffer
      This function makes BUFFER visible in a frame of its own.  If
      BUFFER is already displayed in a window in some frame, it makes
      the frame visible and raises it, to use that window.  Otherwise, it
@@ -2750,23 +2857,23 @@ window, such as `display-buffer' might normally do.
      variables in your init file, before BUFFER was created, then
      presumably the window was previously made by this function.
 
- - User Option: special-display-frame-plist
+ -- User Option: special-display-frame-plist
      This variable holds frame properties for
      `special-display-popup-frame' to use when it creates a frame.
 
- - Variable: same-window-buffer-names
+ -- Variable: same-window-buffer-names
      A list of buffer names for buffers that should be displayed in the
      selected window.  If the buffer's name is in this list,
      `display-buffer' handles the buffer by switching to it in the
      selected window.
 
- - Variable: same-window-regexps
+ -- Variable: same-window-regexps
      A list of regular expressions that specify buffers that should be
      displayed in the selected window.  If the buffer's name matches
      any of the regular expressions in this list, `display-buffer'
      handles the buffer by switching to it in the selected window.
 
- - Variable: display-buffer-function
+ -- Variable: display-buffer-function
      This variable is the most flexible way to customize the behavior of
      `display-buffer'.  If it is non-`nil', it should be a function
      that `display-buffer' calls to do the work.  The function should
@@ -2780,19 +2887,19 @@ window, such as `display-buffer' might normally do.
    A window can be marked as "dedicated" to its buffer.  Then
 `display-buffer' does not try to use that window.
 
- - Function: window-dedicated-p window
+ -- Function: window-dedicated-p window
      This function returns `t' if WINDOW is marked as dedicated;
      otherwise `nil'.
 
- - Function: set-window-dedicated-p window flag
+ -- Function: set-window-dedicated-p window flag
      This function marks WINDOW as dedicated if FLAG is non-`nil', and
      nondedicated otherwise.
 
 \1f
 File: lispref.info,  Node: Window Point,  Next: Window Start,  Prev: Choosing Window,  Up: Windows
 
-Windows and Point
-=================
+38.9 Windows and Point
+======================
 
 Each window has its own value of point, independent of the value of
 point in other windows displaying the same buffer.  This makes it useful
@@ -2819,7 +2926,7 @@ to have multiple windows showing one buffer.
 when the user switches to another buffer, the cursor jumps to the
 position of point in that buffer.
 
- - Function: window-point &optional window
+ -- Function: window-point &optional window
      This function returns the current position of point in WINDOW.
      For a non-selected window, this is the value point would have (in
      that window's buffer) if that window were selected.
@@ -2832,15 +2939,15 @@ position of point in that buffer.
      "top-level" value of point, outside of any `save-excursion' forms.
      But that value is hard to find.
 
- - Function: set-window-point window position
+ -- Function: set-window-point window position
      This function positions point in WINDOW at position POSITION in
      WINDOW's buffer.
 
 \1f
 File: lispref.info,  Node: Window Start,  Next: Vertical Scrolling,  Prev: Window Point,  Up: Windows
 
-The Window Start Position
-=========================
+38.10 The Window Start Position
+===============================
 
 Each window contains a marker used to keep track of a buffer position
 that specifies where in the buffer display should start.  This position
@@ -2849,7 +2956,7 @@ is called the "display-start" position of the window (or just the
 the upper left corner of the window.  It is usually, but not
 inevitably, at the beginning of a text line.
 
- - Function: window-start &optional window
+ -- Function: window-start &optional window
      This function returns the display-start position of window WINDOW.
      If WINDOW is `nil', the selected window is used.  For example,
 
@@ -2863,7 +2970,7 @@ inevitably, at the beginning of a text line.
      For a realistic example, see the description of `count-lines' in
      *Note Text Lines::.
 
- - Function: window-end &optional window guarantee
+ -- Function: window-end &optional window guarantee
      This function returns the position of the end of the display in
      window WINDOW.  If WINDOW is `nil', the selected window is used.
 
@@ -2884,7 +2991,7 @@ inevitably, at the beginning of a text line.
      set.
 
 
- - Function: set-window-start window position &optional noforce
+ -- Function: set-window-start window position &optional noforce
      This function sets the display-start position of WINDOW to
      POSITION in WINDOW's buffer.  It returns POSITION.
 
@@ -2905,7 +3012,7 @@ inevitably, at the beginning of a text line.
 
           ;; Here is what `foo' looks like before executing
           ;;   the `set-window-start' expression.
-          
+
           ---------- Buffer: foo ----------
           -!-This is the contents of buffer foo.
           2
@@ -2914,12 +3021,12 @@ inevitably, at the beginning of a text line.
           5
           6
           ---------- Buffer: foo ----------
-          
+
           (set-window-start
            (selected-window)
            (1+ (window-start)))
           => 2
-          
+
           ;; Here is what `foo' looks like after executing
           ;;   the `set-window-start' expression.
           ---------- Buffer: foo ----------
@@ -2935,7 +3042,7 @@ inevitably, at the beginning of a text line.
      at the next redisplay, then redisplay computes a new window-start
      position that works well with point, and thus POSITION is not used.
 
- - Function: pos-visible-in-window-p &optional position window
+ -- Function: pos-visible-in-window-p &optional position window
      This function returns `t' if POSITION is within the range of text
      currently visible on the screen in WINDOW.  It returns `nil' if
      POSITION is scrolled vertically out of view.  The argument
@@ -2954,8 +3061,8 @@ inevitably, at the beginning of a text line.
 \1f
 File: lispref.info,  Node: Vertical Scrolling,  Next: Horizontal Scrolling,  Prev: Window Start,  Up: Windows
 
-Vertical Scrolling
-==================
+38.11 Vertical Scrolling
+========================
 
 Vertical scrolling means moving the text up or down in a window.  It
 works by changing the value of the window's display-start location.  It
@@ -2982,7 +3089,7 @@ names that fit the user's point of view.
 unpredictable results if the current buffer is different from the buffer
 that is displayed in the selected window.  *Note Current Buffer::.
 
- - Command: scroll-up &optional lines
+ -- Command: scroll-up &optional lines
      This function scrolls the text in the selected window upward LINES
      lines.  If LINES is negative, scrolling is actually downward.
 
@@ -2992,7 +3099,7 @@ that is displayed in the selected window.  *Note Current Buffer::.
 
      `scroll-up' returns `nil'.
 
- - Command: scroll-down &optional lines
+ -- Command: scroll-down &optional lines
      This function scrolls the text in the selected window downward
      LINES lines.  If LINES is negative, scrolling is actually upward.
 
@@ -3002,7 +3109,7 @@ that is displayed in the selected window.  *Note Current Buffer::.
 
      `scroll-down' returns `nil'.
 
- - Command: scroll-other-window &optional lines
+ -- Command: scroll-other-window &optional lines
      This function scrolls the text in another window upward LINES
      lines.  Negative values of LINES, or `nil', are handled as in
      `scroll-up'.
@@ -3021,11 +3128,11 @@ that is displayed in the selected window.  *Note Current Buffer::.
      to, so the line reappears after the echo area momentarily displays
      the message "Beginning of buffer".
 
- - Variable: other-window-scroll-buffer
+ -- Variable: other-window-scroll-buffer
      If this variable is non-`nil', it tells `scroll-other-window'
      which buffer to scroll.
 
- - User Option: scroll-step
+ -- User Option: scroll-step
      This variable controls how scrolling is done automatically when
      point moves off the screen.  If the value is zero, then redisplay
      scrolls the text to center point vertically in the window.  If the
@@ -3033,7 +3140,7 @@ that is displayed in the selected window.  *Note Current Buffer::.
      screen by scrolling N lines in either direction, if possible;
      otherwise, it centers point.  The default value is zero.
 
- - User Option: scroll-conservatively
+ -- User Option: scroll-conservatively
      This variable controls how many lines Emacs tries to scroll before
      recentering.  If you set it to a small number, then when you move
      point a short distance off the screen, XEmacs will scroll the
@@ -3041,14 +3148,14 @@ that is displayed in the selected window.  *Note Current Buffer::.
      that does not exceed `scroll-conservatively' lines.  This variable
      overrides the redisplay preemption.
 
- - User Option: next-screen-context-lines
+ -- User Option: next-screen-context-lines
      The value of this variable is the number of lines of continuity to
      retain when scrolling by full screens.  For example, `scroll-up'
      with an argument of `nil' scrolls so that this many lines at the
      bottom of the window appear instead at the top.  The default value
      is `2'.
 
- - Command: recenter &optional location window
+ -- Command: recenter &optional location window
      This function scrolls WINDOW (which defaults to the selected
      window) to put the text where point is located at a specified
      vertical position within the window.
@@ -3078,14 +3185,14 @@ that is displayed in the selected window.  *Note Current Buffer::.
           Replaces three keystroke sequence C-u 0 C-l."
             (interactive)
             (recenter 0))
-          
+
           (global-set-key [kp-multiply] 'line-to-top-of-window)
 
 \1f
 File: lispref.info,  Node: Horizontal Scrolling,  Next: Size of Window,  Prev: Vertical Scrolling,  Up: Windows
 
-Horizontal Scrolling
-====================
+38.12 Horizontal Scrolling
+==========================
 
 Because we read English first from top to bottom and second from left
 to right, horizontal scrolling is not like vertical scrolling.  Vertical
@@ -3107,14 +3214,14 @@ far as to reduce the net horizontal scroll to zero.  There is no limit
 to how far left you can scroll, but eventually all the text will
 disappear off the left edge.
 
- - Command: scroll-left &optional count
+ -- Command: scroll-left &optional count
      This function scrolls the selected window COUNT columns to the
      left (or to the right if COUNT is negative).  The return value is
      the total amount of leftward horizontal scrolling in effect after
      the change--just like the value returned by `window-hscroll'
      (below).
 
- - Command: scroll-right &optional count
+ -- Command: scroll-right &optional count
      This function scrolls the selected window COUNT columns to the
      right (or to the left if COUNT is negative).  The return value is
      the total amount of leftward horizontal scrolling in effect after
@@ -3125,7 +3232,7 @@ disappear off the left edge.
      normal position where the total leftward scrolling is zero,
      attempts to scroll any farther right have no effect.
 
- - Function: window-hscroll &optional window
+ -- Function: window-hscroll &optional window
      This function returns the total leftward horizontal scrolling of
      WINDOW--the number of columns by which the text in WINDOW is
      scrolled left past the left margin.
@@ -3142,7 +3249,7 @@ disappear off the left edge.
           (window-hscroll)
                => 5
 
- - Function: set-window-hscroll window columns
+ -- Function: set-window-hscroll window columns
      This function sets the number of columns from the left margin that
      WINDOW is scrolled to the value of COLUMNS.  The argument COLUMNS
      should be zero or positive; if not, it is taken as zero.
@@ -3166,8 +3273,8 @@ off the screen due to horizontal scrolling:
 \1f
 File: lispref.info,  Node: Size of Window,  Next: Position of Window,  Prev: Horizontal Scrolling,  Up: Windows
 
-The Size of a Window
-====================
+38.13 The Size of a Window
+==========================
 
 An Emacs window is rectangular, and its size information consists of
 the height (in lines or pixels) and the width (in character positions
@@ -3185,7 +3292,7 @@ or various different fonts in the window.
 
    The following functions return size information about a window:
 
- - Function: window-height &optional window
+ -- Function: window-height &optional window
      This function returns the number of lines in WINDOW, including its
      modeline but not including the horizontal scrollbar, if any (this
      is different from `window-pixel-height').  If WINDOW is `nil', the
@@ -3198,7 +3305,7 @@ or various different fonts in the window.
           (window-height)
                => 20
 
- - Function: window-width &optional window
+ -- Function: window-width &optional window
      This function returns the number of columns in WINDOW, not
      including any left margin, right margin, or vertical scrollbar
      (this is different from `window-pixel-width').  If WINDOW is
@@ -3223,7 +3330,7 @@ they wrap.  This is usually the case for horizontally split windows but
 not for full-frame windows.  You can change this using the variables
 `truncate-lines' and `truncate-partial-width-windows'.)
 
- - Function: window-pixel-height &optional window
+ -- Function: window-pixel-height &optional window
      This function returns the height of WINDOW in pixels, including
      its modeline and horizontal scrollbar, if any.  If WINDOW is
      `nil', the function uses the selected window.
@@ -3235,7 +3342,7 @@ not for full-frame windows.  You can change this using the variables
           (window-pixel-height)
                => 300
 
- - Function: window-pixel-width &optional window
+ -- Function: window-pixel-width &optional window
      This function returns the width of WINDOW in pixels, including any
      left margin, right margin, or vertical scrollbar that may be
      displayed alongside it.  If WINDOW is `nil', the function uses the
@@ -3252,19 +3359,19 @@ not for full-frame windows.  You can change this using the variables
           (window-pixel-height)
                => 600
 
- - Function: window-text-area-pixel-height &optional window
+ -- Function: window-text-area-pixel-height &optional window
      This function returns the height in pixels of the text displaying
      portion of WINDOW, which defaults to the selected window.  Unlike
      `window-pixel-height', the space occupied by the modeline and
      horizontal scrollbar, if any, is not counted.
 
- - Function: window-text-area-pixel-width &optional window
+ -- Function: window-text-area-pixel-width &optional window
      This function returns the width in pixels of the text displaying
      portion of WINDOW, which defaults to the selected window.  Unlike
      `window-pixel-width', the space occupied by the vertical scrollbar
      and divider, if any, is not counted.
 
- - Function: window-displayed-text-pixel-height &optional window
+ -- Function: window-displayed-text-pixel-height &optional window
           noclipped
      This function returns the height in pixels of the text displayed in
      WINDOW, which defaults to the selected window.  Unlike
@@ -3276,14 +3383,14 @@ not for full-frame windows.  You can change this using the variables
 \1f
 File: lispref.info,  Node: Position of Window,  Next: Resizing Windows,  Prev: Size of Window,  Up: Windows
 
-The Position of a Window
-========================
+38.14 The Position of a Window
+==============================
 
 XEmacs provides functions to determine the absolute location of windows
 within a frame, and the relative location of a window in comparison to
 other windows in the same frame.
 
- - Function: window-pixel-edges &optional window
+ -- Function: window-pixel-edges &optional window
      This function returns a list of the pixel edge coordinates of
      WINDOW.  If WINDOW is `nil', the selected window is used.
 
@@ -3307,15 +3414,15 @@ other windows in the same frame.
 make sense in a world with variable-width and variable-height lines, as
 are allowed in XEmacs.
 
- - Function: window-highest-p window
+ -- Function: window-highest-p window
      This function returns non-`nil' if WINDOW is along the top of its
      frame.
 
- - Function: window-lowest-p window
+ -- Function: window-lowest-p window
      This function returns non-`nil' if WINDOW is along the bottom of
      its frame.
 
- - Function: window-text-area-pixel-edges &optional window
+ -- Function: window-text-area-pixel-edges &optional window
      This function allows one to determine the location of the
      text-displaying portion of WINDOW, which defaults to the selected
      window, with respect to the top left corner of the window.  It
@@ -3326,15 +3433,15 @@ are allowed in XEmacs.
 \1f
 File: lispref.info,  Node: Resizing Windows,  Next: Window Configurations,  Prev: Position of Window,  Up: Windows
 
-Changing the Size of a Window
-=============================
+38.15 Changing the Size of a Window
+===================================
 
 The window size functions fall into two classes: high-level commands
 that change the size of windows and low-level functions that access
 window size.  XEmacs does not permit overlapping windows or gaps between
 windows, so resizing one window affects other windows.
 
- - Command: enlarge-window count &optional horizontal window
+ -- Command: enlarge-window count &optional horizontal window
      This function makes the selected window COUNT lines taller,
      stealing lines from neighboring windows.  It takes the lines from
      one window at a time until that window is used up, then takes from
@@ -3360,20 +3467,20 @@ windows, so resizing one window affects other windows.
 
      `enlarge-window' returns `nil'.
 
- - Command: enlarge-window-horizontally columns
+ -- Command: enlarge-window-horizontally columns
      This function makes the selected window COLUMNS wider.  It could
      be defined as follows:
 
           (defun enlarge-window-horizontally (columns)
             (enlarge-window columns t))
 
- - Command: enlarge-window-pixels count &optional side window
+ -- Command: enlarge-window-pixels count &optional side window
      This function makes the selected window COUNT pixels larger.  When
      called from Lisp, optional second argument SIDE non-`nil' means to
      grow sideways COUNT pixels, and optional third argument WINDOW
      specifies the window to change instead of the selected window.
 
- - Command: shrink-window count &optional horizontal window
+ -- Command: shrink-window count &optional horizontal window
      This function is like `enlarge-window' but negates the argument
      COUNT, making the selected window smaller by giving lines (or
      columns) to the other windows.  If the window shrinks below
@@ -3385,14 +3492,14 @@ windows, so resizing one window affects other windows.
      If WINDOW is non-`nil', it specifies a window to change instead of
      the selected window.
 
- - Command: shrink-window-horizontally columns
+ -- Command: shrink-window-horizontally columns
      This function makes the selected window COLUMNS narrower.  It
      could be defined as follows:
 
           (defun shrink-window-horizontally (columns)
             (shrink-window columns t))
 
- - Command: shrink-window-pixels count &optional side window
+ -- Command: shrink-window-pixels count &optional side window
      This function makes the selected window COUNT pixels smaller.
      When called from Lisp, optional second argument SIDE non-`nil'
      means to shrink sideways COUNT pixels, and optional third argument
@@ -3402,7 +3509,7 @@ windows, so resizing one window affects other windows.
    The following two variables constrain the window-size-changing
 functions to a minimum height and width.
 
- - User Option: window-min-height
+ -- User Option: window-min-height
      The value of this variable determines how short a window may become
      before it is automatically deleted.  Making a window smaller than
      `window-min-height' automatically deletes it, and no window may be
@@ -3411,14 +3518,14 @@ functions to a minimum height and width.
      display).  Actions that change window sizes reset this variable to
      two if it is less than two.  The default value is 4.
 
- - User Option: window-min-width
+ -- User Option: window-min-width
      The value of this variable determines how narrow a window may
      become before it automatically deleted.  Making a window smaller
      than `window-min-width' automatically deletes it, and no window
      may be created narrower than this.  The absolute minimum width is
      one; any value below that is ignored.  The default value is 10.
 
- - Variable: window-size-change-functions
+ -- Variable: window-size-change-functions
      This variable holds a list of functions to be called if the size
      of any window changes for any reason.  The functions are called
      just once per redisplay, and just once for each frame on which
@@ -3442,8 +3549,8 @@ functions to a minimum height and width.
 \1f
 File: lispref.info,  Node: Window Configurations,  Prev: Resizing Windows,  Up: Windows
 
-Window Configurations
-=====================
+38.16 Window Configurations
+===========================
 
 A "window configuration" records the entire layout of a frame--all
 windows, their sizes, which buffers they contain, what part of each
@@ -3455,7 +3562,7 @@ configuration previously saved.
 configuration instead of a window configuration.  *Note Frame
 Configurations::.
 
- - Function: current-window-configuration &optional frame
+ -- Function: current-window-configuration &optional frame
      This function returns a new object representing the current window
      configuration of FRAME, namely the number of windows, their sizes
      and current buffers, which window is the selected window, and for
@@ -3465,7 +3572,7 @@ Configurations::.
 
      FRAME defaults to the selected frame.
 
- - Function: set-window-configuration configuration
+ -- Function: set-window-configuration configuration
      This function restores the configuration of XEmacs's windows and
      buffers to the state specified by CONFIGURATION.  The argument
      CONFIGURATION must be a value that was previously returned by
@@ -3485,7 +3592,7 @@ Configurations::.
                        ...)
               (set-window-configuration config)))
 
- - Special Form: save-window-excursion forms...
+ -- Special Form: save-window-excursion forms...
      This special form records the window configuration, executes FORMS
      in sequence, then restores the earlier window configuration.  The
      window configuration includes the value of point and the portion
@@ -3516,7 +3623,7 @@ Configurations::.
                => do-something
                ;; The frame is now split again.
 
- - Function: window-configuration-p object
+ -- Function: window-configuration-p object
      This function returns `t' if OBJECT is a window configuration.
 
    Primitives to look inside of window configurations would make sense,
@@ -3526,8 +3633,8 @@ worth implementing.
 \1f
 File: lispref.info,  Node: Frames,  Next: Consoles and Devices,  Prev: Windows,  Up: Top
 
-Frames
-******
+39 Frames
+*********
 
 A FRAME is a rectangle on the screen that contains one or more XEmacs
 windows (*note Windows::).  A frame initially contains a single main
@@ -3553,7 +3660,7 @@ a TTY frame; instead, it starts with a single "X window frame".  It can
 display multiple X window frames at the same time, each in its own X
 window.
 
- - Function: framep object
+ -- Function: framep object
      This predicate returns `t' if OBJECT is a frame, and `nil'
      otherwise.
 
@@ -3579,12 +3686,12 @@ window.
 \1f
 File: lispref.info,  Node: Creating Frames,  Next: Frame Properties,  Up: Frames
 
-Creating Frames
-===============
+39.1 Creating Frames
+====================
 
 To create a new frame, call the function `make-frame'.
 
- - Command: make-frame &optional props device
+ -- Command: make-frame &optional props device
      This function creates a new frame on DEVICE, if DEVICE permits
      creation of frames.  (An X server does; an ordinary terminal does
      not (yet).)  DEVICE defaults to the selected device if omitted.
@@ -3609,8 +3716,8 @@ To create a new frame, call the function `make-frame'.
 \1f
 File: lispref.info,  Node: Frame Properties,  Next: Frame Titles,  Prev: Creating Frames,  Up: Frames
 
-Frame Properties
-================
+39.2 Frame Properties
+=====================
 
 A frame has many properties that control its appearance and behavior.
 Just what properties a frame has depends on which display mechanism it
@@ -3631,38 +3738,38 @@ height, width and `buffer-predicate' properties really do something.
 \1f
 File: lispref.info,  Node: Property Access,  Next: Initial Properties,  Up: Frame Properties
 
-Access to Frame Properties
---------------------------
+39.2.1 Access to Frame Properties
+---------------------------------
 
 These functions let you read and change the properties of a frame.
 
- - Function: frame-properties &optional frame
+ -- Function: frame-properties &optional frame
      This function returns a plist listing all the properties of FRAME
      and their values.
 
- - Function: frame-property frame property &optional default
+ -- Function: frame-property frame property &optional default
      This function returns FRAME's value for the property PROPERTY, or
      DEFAULT if there is no such property.
 
- - Function: set-frame-properties frame plist
+ -- Function: set-frame-properties frame plist
      This function alters the properties of frame FRAME based on the
      elements of property list PLIST.  If you don't mention a property
      in PLIST, its value doesn't change.
 
- - Function: set-frame-property frame property value
+ -- Function: set-frame-property frame property value
      This function sets the property PROPERTY of frame FRAME to the
      value VALUE.
 
 \1f
 File: lispref.info,  Node: Initial Properties,  Next: X Frame Properties,  Prev: Property Access,  Up: Frame Properties
 
-Initial Frame Properties
-------------------------
+39.2.2 Initial Frame Properties
+-------------------------------
 
 You can specify the properties for the initial startup frame by setting
 `initial-frame-plist' in your `.emacs' file.
 
- - Variable: initial-frame-plist
+ -- Variable: initial-frame-plist
      This variable's value is a plist of alternating property-value
      pairs used when creating the initial X window frame.
 
@@ -3691,12 +3798,12 @@ You can specify the properties for the initial startup frame by setting
 `minibuffer' property of `nil', and you have not yet created one,
 XEmacs creates one for you.
 
- - Variable: minibuffer-frame-plist
+ -- Variable: minibuffer-frame-plist
      This variable's value is a plist of properties used when creating
      an initial minibuffer-only frame--if such a frame is needed,
      according to the properties for the main initial frame.
 
- - Variable: default-frame-plist
+ -- Variable: default-frame-plist
      This is a plist specifying default values of frame properties for
      subsequent XEmacs frames (not the initial ones).
 
@@ -3711,8 +3818,8 @@ One exception is `-geometry', which adds the specified position to
 \1f
 File: lispref.info,  Node: X Frame Properties,  Next: Size and Position,  Prev: Initial Properties,  Up: Frame Properties
 
-X Window Frame Properties
--------------------------
+39.2.3 X Window Frame Properties
+--------------------------------
 
 Just what properties a frame has depends on what display mechanism it
 uses.  Here is a table of the properties of an X window frame; of these,
@@ -3832,8 +3939,8 @@ information in non-X frames.
 \1f
 File: lispref.info,  Node: Size and Position,  Next: Frame Name,  Prev: X Frame Properties,  Up: Frame Properties
 
-Frame Size And Position
------------------------
+39.2.4 Frame Size And Position
+------------------------------
 
 You can read or change the size and position of a frame using the frame
 properties `left', `top', `height', and `width'.  Whatever geometry
@@ -3842,24 +3949,24 @@ usual fashion.
 
    Here are some special features for working with sizes and positions:
 
- - Function: set-frame-position frame left top
+ -- Function: set-frame-position frame left top
      This function sets the position of the top left corner of FRAME to
      LEFT and TOP.  These arguments are measured in pixels, and count
      from the top left corner of the screen.  Negative property values
      count up or rightward from the top left corner of the screen.
 
- - Function: frame-height &optional frame
- - Function: frame-width &optional frame
+ -- Function: frame-height &optional frame
+ -- Function: frame-width &optional frame
      These functions return the height and width of FRAME, measured in
      lines and columns.  If you don't supply FRAME, they use the
      selected frame.
 
- - Function: frame-pixel-height &optional frame
- - Function: frame-pixel-width &optional frame
+ -- Function: frame-pixel-height &optional frame
+ -- Function: frame-pixel-width &optional frame
      These functions return the height and width of FRAME, measured in
      pixels.  If you don't supply FRAME, they use the selected frame.
 
- - Function: set-frame-size frame cols rows &optional pretend
+ -- Function: set-frame-size frame cols rows &optional pretend
      This function sets the size of FRAME, measured in characters; COLS
      and ROWS specify the new width and height.  (If PRETEND is
      non-`nil', it means that redisplay should act as if the frame's
@@ -3875,20 +3982,20 @@ purpose as the corresponding argument in `set-frame-size'.)
 \1f
 File: lispref.info,  Node: Frame Name,  Prev: Size and Position,  Up: Frame Properties
 
-The Name of a Frame (As Opposed to Its Title)
----------------------------------------------
+39.2.5 The Name of a Frame (As Opposed to Its Title)
+----------------------------------------------------
 
 Under X, every frame has a name, which is not the same as the title of
 the frame.  A frame's name is used to look up its resources and does
 not normally change over the lifetime of a frame.  It is perfectly
 allowable, and quite common, for multiple frames to have the same name.
 
- - Function: frame-name &optional frame
+ -- Function: frame-name &optional frame
      This function returns the name of FRAME, which defaults to the
      selected frame if not specified.  The name of a frame can also be
      obtained from the frame's properties.  *Note Frame Properties::.
 
- - Variable: default-frame-name
+ -- Variable: default-frame-name
      This variable holds the default name to assign to newly-created
      frames.  This can be overridden by arguments to `make-frame'.  This
      must be a string.
@@ -3896,8 +4003,8 @@ allowable, and quite common, for multiple frames to have the same name.
 \1f
 File: lispref.info,  Node: Frame Titles,  Next: Deleting Frames,  Prev: Frame Properties,  Up: Frames
 
-Frame Titles
-============
+39.3 Frame Titles
+=================
 
 Every frame has a title; most window managers display the frame title at
 the top of the frame.  You can specify an explicit title with the
@@ -3907,19 +4014,19 @@ and XEmacs computes the title automatically.
    XEmacs computes the frame title based on a template stored in the
 variable `frame-title-format'.
 
- - Variable: frame-title-format
+ -- Variable: frame-title-format
      This variable specifies how to compute a title for a frame when
      you have not explicitly specified one.
 
      The variable's value is actually a modeline construct, just like
      `modeline-format'.  *Note Modeline Data::.
 
- - Variable: frame-icon-title-format
+ -- Variable: frame-icon-title-format
      This variable specifies how to compute the title for an iconified
      frame, when you have not explicitly specified the frame title.
      This title appears in the icon itself.
 
- - Function: x-set-frame-icon-pixmap frame pixmap &optional mask
+ -- Function: x-set-frame-icon-pixmap frame pixmap &optional mask
      This function sets the icon of the given frame to the given image
      instance, which should be an image instance object (as returned by
      `make-image-instance'), a glyph object (as returned by
@@ -3940,14 +4047,14 @@ variable `frame-title-format'.
 \1f
 File: lispref.info,  Node: Deleting Frames,  Next: Finding All Frames,  Prev: Frame Titles,  Up: Frames
 
-Deleting Frames
-===============
+39.4 Deleting Frames
+====================
 
 Frames remain potentially visible until you explicitly "delete" them.
 A deleted frame cannot appear on the screen, but continues to exist as
 a Lisp object until there are no references to it.
 
- - Command: delete-frame &optional frame force
+ -- Command: delete-frame &optional frame force
      This function deletes the frame FRAME.  By default, FRAME is the
      selected frame.
 
@@ -3958,34 +4065,34 @@ a Lisp object until there are no references to it.
      delete the last frame. (This will automatically call
      `save-buffers-kill-emacs'.)
 
- - Function: frame-live-p frame
+ -- Function: frame-live-p frame
      The function `frame-live-p' returns non-`nil' if the frame FRAME
      has not been deleted.
 
 \1f
 File: lispref.info,  Node: Finding All Frames,  Next: Frames and Windows,  Prev: Deleting Frames,  Up: Frames
 
-Finding All Frames
-==================
+39.5 Finding All Frames
+=======================
 
- - Function: frame-list
+ -- Function: frame-list
      The function `frame-list' returns a list of all the frames that
      have not been deleted.  It is analogous to `buffer-list' for
      buffers.  The list that you get is newly created, so modifying the
      list doesn't have any effect on the internals of XEmacs.
 
- - Function: device-frame-list &optional device
+ -- Function: device-frame-list &optional device
      This function returns a list of all frames on DEVICE.  If DEVICE
      is `nil', the selected device will be used.
 
- - Function: visible-frame-list &optional device
+ -- Function: visible-frame-list &optional device
      This function returns a list of just the currently visible frames.
      If DEVICE is specified only frames on that device will be returned.
      *Note Visibility of Frames::.  (TTY frames always count as
      "visible", even though only the selected one is actually
      displayed.)
 
- - Function: next-frame &optional frame which-frames which-devices
+ -- Function: next-frame &optional frame which-frames which-devices
      The function `next-frame' lets you cycle conveniently through all
      the frames from an arbitrary starting point.  It returns the "next"
      frame after FRAME in the cycle.  If FRAME defaults to the selected
@@ -4058,7 +4165,7 @@ Finding All Frames
     anything else
           Consider all devices without restriction.
 
- - Function: previous-frame &optional frame which-frames which-devices
+ -- Function: previous-frame &optional frame which-frames which-devices
      Like `next-frame', but cycles through all frames in the opposite
      direction.
 
@@ -4068,17 +4175,17 @@ Ordering::.
 \1f
 File: lispref.info,  Node: Frames and Windows,  Next: Minibuffers and Frames,  Prev: Finding All Frames,  Up: Frames
 
-Frames and Windows
-==================
+39.6 Frames and Windows
+=======================
 
 Each window is part of one and only one frame; you can get the frame
 with `window-frame'.
 
- - Function: frame-root-window &optional frame
+ -- Function: frame-root-window &optional frame
      This returns the root window of frame FRAME.  FRAME defaults to
      the selected frame if not specified.
 
- - Function: window-frame &optional window
+ -- Function: window-frame &optional window
      This function returns the frame that WINDOW is on.  WINDOW
      defaults to the selected window if omitted.
 
@@ -4088,7 +4195,7 @@ upper left corner, down and to the right, until it reaches the window at
 the lower right corner (always the minibuffer window, if the frame has
 one), and then it moves back to the top.
 
- - Function: frame-highest-window &optional frame position
+ -- Function: frame-highest-window &optional frame position
      This function returns the topmost, leftmost window of frame FRAME
      at position POSITION.
 
@@ -4104,15 +4211,15 @@ one), and then it moves back to the top.
 
    The following three functions work similarly.
 
- - Function: frame-lowest-window &optional frame position
+ -- Function: frame-lowest-window &optional frame position
      This function returns the lowest window on FRAME which is at
      POSITION.
 
- - Function: frame-leftmost-window &optional frame position
+ -- Function: frame-leftmost-window &optional frame position
      This function returns the leftmost window on FRAME which is at
      POSITION.
 
- - Function: frame-rightmost-window &optional frame position
+ -- Function: frame-rightmost-window &optional frame position
      This function returns the rightmost window on FRAME which is at
      POSITION.
 
@@ -4121,7 +4228,7 @@ frame".  The significance of this designation is that selecting the
 frame also selects this window.  You can get the frame's current
 selected window with `frame-selected-window'.
 
- - Function: frame-selected-window &optional frame
+ -- Function: frame-selected-window &optional frame
      This function returns the window on FRAME that is selected within
      FRAME.  FRAME defaults to the selected frame if not specified.
 
@@ -4134,8 +4241,8 @@ frame is `minibuffer-window'.  *Note Minibuffer Misc::.
 \1f
 File: lispref.info,  Node: Minibuffers and Frames,  Next: Input Focus,  Prev: Frames and Windows,  Up: Frames
 
-Minibuffers and Frames
-======================
+39.7 Minibuffers and Frames
+===========================
 
 Normally, each frame has its own minibuffer window at the bottom, which
 is used whenever that frame is selected.  If the frame has a minibuffer,
@@ -4149,22 +4256,22 @@ in the frame which is the value of the variable
 `default-minibuffer-frame'.  Its value should be a frame which does
 have a minibuffer.
 
- - Variable: default-minibuffer-frame
+ -- Variable: default-minibuffer-frame
      This variable specifies the frame to use for the minibuffer
      window, by default.
 
 \1f
 File: lispref.info,  Node: Input Focus,  Next: Visibility of Frames,  Prev: Minibuffers and Frames,  Up: Frames
 
-Input Focus
-===========
+39.8 Input Focus
+================
 
 At any time, one frame in XEmacs is the "selected frame".  The selected
 window always resides on the selected frame.  As the focus moves from
 device to device, the selected frame on each device is remembered and
 restored when the focus moves back to that device.
 
- - Function: selected-frame &optional device
+ -- Function: selected-frame &optional device
      This function returns the selected frame on DEVICE.  If DEVICE is
      not specified, the selected device will be used.  If no frames
      exist on the device, `nil' is returned.
@@ -4187,7 +4294,7 @@ Each terminal screen except for the initial one has a number, and the
 number of the selected frame appears in the mode line after the word
 `XEmacs' (*note Modeline Variables::).
 
- - Function: select-frame frame
+ -- Function: select-frame frame
      This function selects frame FRAME, temporarily disregarding the
      focus of the X server if any.  The selection of FRAME lasts until
      the next time the user does something to select a different frame,
@@ -4204,17 +4311,17 @@ number of the selected frame appears in the mode line after the word
      `set-buffer'.  In order to effect a permanent focus change use
      `focus-frame'.
 
- - Function: focus-frame frame
+ -- Function: focus-frame frame
      This function selects FRAME and gives it the window system focus.
      The operation of `focus-frame' is not affected by the value of
      `focus-follows-mouse'.
 
- - Special Form: save-selected-frame forms...
+ -- Special Form: save-selected-frame forms...
      This special form records the selected frame, executes FORMS in
      sequence, then restores the earlier selected frame.  The value
      returned is the value of the last form.
 
- - Special Form: with-selected-frame frame forms...
+ -- Special Form: with-selected-frame frame forms...
      This special form records the selected frame, then selects FRAME
      and executes FORMS in sequence.  After the last form is finished,
      the earlier selected frame is restored.  The value returned is the
@@ -4223,8 +4330,8 @@ number of the selected frame appears in the mode line after the word
 \1f
 File: lispref.info,  Node: Visibility of Frames,  Next: Raising and Lowering,  Prev: Input Focus,  Up: Frames
 
-Visibility of Frames
-====================
+39.9 Visibility of Frames
+=========================
 
 An frame on a window system may be "visible", "invisible", or
 "iconified".  If it is visible, you can see its contents.  If it is
@@ -4235,26 +4342,26 @@ even as an icon.
    Visibility is meaningless for TTY frames, since only the selected
 one is actually displayed in any case.
 
- - Function: make-frame-visible &optional frame
+ -- Function: make-frame-visible &optional frame
      This function makes frame FRAME visible.  If you omit FRAME, it
      makes the selected frame visible.
 
- - Function: make-frame-invisible &optional frame force
+ -- Function: make-frame-invisible &optional frame force
      This function makes frame FRAME invisible.
 
- - Command: iconify-frame &optional frame
+ -- Command: iconify-frame &optional frame
      This function iconifies frame FRAME.
 
- - Function: Command deiconify-frame &optional frame
+ -- Function: Command deiconify-frame &optional frame
      This function de-iconifies frame FRAME.  Under a window system,
      this is equivalent to `make-frame-visible'.
 
- - Function: frame-visible-p &optional frame
+ -- Function: frame-visible-p &optional frame
      This returns whether FRAME is currently "visible" (actually in use
      for display).  A frame that is not visible is not updated, and, if
      it works through a window system, may not show at all.
 
- - Function: frame-iconified-p &optional frame
+ -- Function: frame-iconified-p &optional frame
      This returns whether FRAME is iconified.  Not all window managers
      use icons; some merely unmap the window, so this function is not
      the inverse of `frame-visible-p'.  It is possible for a frame to
@@ -4263,15 +4370,15 @@ one is actually displayed in any case.
      functionality of this function is obtained through
      `frame-visible-p'.)
 
- - Function: frame-totally-visible-p &optional frame
+ -- Function: frame-totally-visible-p &optional frame
      This returns whether FRAME is not obscured by any other X windows.
      On TTY frames, this is the same as `frame-visible-p'.
 
 \1f
 File: lispref.info,  Node: Raising and Lowering,  Next: Frame Configurations,  Prev: Visibility of Frames,  Up: Frames
 
-Raising and Lowering Frames
-===========================
+39.10 Raising and Lowering Frames
+=================================
 
 The X Window System uses a desktop metaphor.  Part of this metaphor is
 the idea that windows are stacked in a notional third dimension
@@ -4289,10 +4396,10 @@ screen.
 
    You can raise and lower XEmacs's X windows with these functions:
 
- - Command: raise-frame &optional frame
+ -- Command: raise-frame &optional frame
      This function raises frame FRAME.
 
- - Command: lower-frame &optional frame
+ -- Command: lower-frame &optional frame
      This function lowers frame FRAME.
 
    You can also specify auto-raise (raising automatically when a frame
@@ -4303,11 +4410,11 @@ in case you're using a broken WM.  (Under FSF Emacs, the same
 functionality is provided through the `auto-raise' and `auto-lower'
 frame properties.)
 
- - Variable: auto-raise-frame
+ -- Variable: auto-raise-frame
      This variable's value is `t' if frames will be raised to the top
      when selected.
 
- - Variable: auto-lower-frame
+ -- Variable: auto-lower-frame
      This variable's value is `t' if frames will be lowered to the
      bottom when no longer selected.
 
@@ -4316,28 +4423,28 @@ attached to `select-frame-hook' and `deselect-frame-hook' (*note Frame
 Hooks::).  Under normal circumstances, you should not call these
 functions directly.
 
- - Function: default-select-frame-hook
+ -- Function: default-select-frame-hook
      This hook function implements the `auto-raise-frame' variable; it
      is for use as the value of `select-frame-hook'.
 
- - Function: default-deselect-frame-hook
+ -- Function: default-deselect-frame-hook
      This hook function implements the `auto-lower-frame' variable; it
      is for use as the value of `deselect-frame-hook'.
 
 \1f
 File: lispref.info,  Node: Frame Configurations,  Next: Frame Hooks,  Prev: Raising and Lowering,  Up: Frames
 
-Frame Configurations
-====================
+39.11 Frame Configurations
+==========================
 
 A "frame configuration" records the current arrangement of frames, all
 their properties, and the window configuration of each one.
 
- - Function: current-frame-configuration
+ -- Function: current-frame-configuration
      This function returns a frame configuration list that describes
      the current arrangement of frames and their contents.
 
- - Function: set-frame-configuration configuration &optional nodelete
+ -- Function: set-frame-configuration configuration &optional nodelete
      This function restores the state of frames described by
      CONFIGURATION, which should be the return value from a previous
      call to `current-frame-configuration'.
@@ -4353,21 +4460,21 @@ their properties, and the window configuration of each one.
 \1f
 File: lispref.info,  Node: Frame Hooks,  Prev: Frame Configurations,  Up: Frames
 
-Hooks for Customizing Frame Behavior
-====================================
+39.12 Hooks for Customizing Frame Behavior
+==========================================
 
 XEmacs provides many hooks that are called at various times during a
 frame's lifetime.  *Note Hooks::.
 
- - Variable: create-frame-hook
+ -- Variable: create-frame-hook
      This hook is called each time a frame is created.  The functions
      are called with one argument, the newly-created frame.
 
- - Variable: delete-frame-hook
+ -- Variable: delete-frame-hook
      This hook is called each time a frame is deleted.  The functions
      are called with one argument, the about-to-be-deleted frame.
 
- - Variable: select-frame-hook
+ -- Variable: select-frame-hook
      This is a normal hook that is run just after a frame is selected.
      The function `default-select-frame-hook', which implements
      auto-raising (*note Raising and Lowering::), is normally attached
@@ -4378,18 +4485,18 @@ frame's lifetime.  *Note Hooks::.
      the next time that XEmacs is waiting for an event, and even then,
      the window manager may refuse the focus-change request.
 
- - Variable: deselect-frame-hook
+ -- Variable: deselect-frame-hook
      This is a normal hook that is run just before a frame is deselected
      (and another frame is selected).  The function
      `default-deselect-frame-hook', which implements auto-lowering
      (*note Raising and Lowering::), is normally attached to this hook.
 
- - Variable: map-frame-hook
+ -- Variable: map-frame-hook
      This hook is called each time a frame is mapped (i.e. made
      visible).  The functions are called with one argument, the newly
      mapped frame.
 
- - Variable: unmap-frame-hook
+ -- Variable: unmap-frame-hook
      This hook is called each time a frame is unmapped (i.e. made
      invisible or iconified).  The functions are called with one
      argument, the newly unmapped frame.
@@ -4397,8 +4504,8 @@ frame's lifetime.  *Note Hooks::.
 \1f
 File: lispref.info,  Node: Consoles and Devices,  Next: Positions,  Prev: Frames,  Up: Top
 
-Consoles and Devices
-********************
+40 Consoles and Devices
+***********************
 
 A "console" is an object representing a single input connection to
 XEmacs, such as an X display or a TTY connection.  It is possible for
@@ -4439,10 +4546,10 @@ example the frame-creation functions) take an optional device argument
 specifying which device the function pertains to.  If the argument is
 omitted, it defaults to the selected device (see below).
 
- - Function: consolep object
+ -- Function: consolep object
      This returns non-`nil' if OBJECT is a console.
 
- - Function: devicep object
+ -- Function: devicep object
      This returns non-`nil' if OBJECT is a device.
 
 * Menu:
@@ -4458,43 +4565,43 @@ omitted, it defaults to the selected device (see below).
 \1f
 File: lispref.info,  Node: Basic Console Functions,  Next: Basic Device Functions,  Up: Consoles and Devices
 
-Basic Console Functions
-=======================
+40.1 Basic Console Functions
+============================
 
- - Function: console-list
+ -- Function: console-list
      This function returns a list of all existing consoles.
 
- - Function: console-device-list &optional console
+ -- Function: console-device-list &optional console
      This function returns a list of all devices on CONSOLE.  If
      CONSOLE is `nil', the selected console will be used.
 
 \1f
 File: lispref.info,  Node: Basic Device Functions,  Next: Console Types and Device Classes,  Prev: Basic Console Functions,  Up: Consoles and Devices
 
-Basic Device Functions
-======================
+40.2 Basic Device Functions
+===========================
 
- - Function: device-list
+ -- Function: device-list
      This function returns a list of all existing devices.
 
- - Function: device-or-frame-p object
+ -- Function: device-or-frame-p object
      This function returns non-`nil' if OBJECT is a device or frame.
      This function is useful because devices and frames are similar in
      many respects and many functions can operate on either one.
 
- - Function: device-frame-list &optional device
+ -- Function: device-frame-list &optional device
      This function returns a list of all frames on DEVICE.  DEVICE
      defaults to the currently selected device.
 
- - Function: frame-device &optional frame
+ -- Function: frame-device &optional frame
      This function returns the device that FRAME is on.  FRAME defaults
      to the currently selected frame.
 
 \1f
 File: lispref.info,  Node: Console Types and Device Classes,  Next: Connecting to a Console or Device,  Prev: Basic Device Functions,  Up: Consoles and Devices
 
-Console Types and Device Classes
-================================
+40.3 Console Types and Device Classes
+=====================================
 
 Every device is of a particular "type", which describes how the
 connection to that device is made and how the device operates, and a
@@ -4528,44 +4635,44 @@ particular "class", which describes other characteristics of the device
 `mono'
      A device that can only display two colors (e.g. black and white).
 
- - Function: device-type &optional device
+ -- Function: device-type &optional device
      This function returns the type of DEVICE.  This is a symbol whose
      name is one of the device types mentioned above.  DEVICE defaults
      to the selected device.
 
- - Function: device-or-frame-type device-or-frame
+ -- Function: device-or-frame-type device-or-frame
      This function returns the type of DEVICE-OR-FRAME.
 
- - Function: device-class &optional device
+ -- Function: device-class &optional device
      This function returns the class (color behavior) of DEVICE.  This
      is a symbol whose name is one of the device classes mentioned
      above.
 
- - Function: valid-device-type-p device-type
+ -- Function: valid-device-type-p device-type
      This function returns whether DEVICE-TYPE (which should be a
      symbol) specifies a valid device type.
 
- - Function: valid-device-class-p device-class
+ -- Function: valid-device-class-p device-class
      This function returns whether DEVICE-CLASS (which should be a
      symbol) specifies a valid device class.
 
- - Variable: terminal-device
+ -- Variable: terminal-device
      This variable holds the initial terminal device object, which
      represents XEmacs's stdout.
 
 \1f
 File: lispref.info,  Node: Connecting to a Console or Device,  Next: The Selected Console and Device,  Prev: Console Types and Device Classes,  Up: Consoles and Devices
 
-Connecting to a Console or Device
-=================================
+40.4 Connecting to a Console or Device
+======================================
 
- - Function: make-device type connection &optional props
+ -- Function: make-device type connection &optional props
      This function creates a new device.
 
    The following two functions create devices of specific types and are
 written in terms of `make-device'.
 
- - Function: make-tty-device &optional tty terminal-type
+ -- Function: make-tty-device &optional tty terminal-type
      This function creates a new tty device on TTY.  This also creates
      the tty's first frame.  TTY should be a string giving the name of
      a tty device file (e.g. `/dev/ttyp3' under SunOS et al.), as
@@ -4576,55 +4683,55 @@ written in terms of `make-device'.
      If it is `nil', the terminal type will be inferred from the
      `TERM' environment variable.
 
- - Function: make-x-device &optional display argv-list
+ -- Function: make-x-device &optional display argv-list
      This function creates a new device connected to DISPLAY.  Optional
      argument ARGV-LIST is a list of strings describing command line
      options.
 
- - Function: delete-device device &optional force
+ -- Function: delete-device device &optional force
      This function deletes DEVICE, permanently eliminating it from use.
      This disconnects XEmacs's connection to the device.
 
- - Variable: create-device-hook
+ -- Variable: create-device-hook
      This variable, if non-`nil', should contain a list of functions,
      which are called when a device is created.
 
- - Variable: delete-device-hook
+ -- Variable: delete-device-hook
      This variable, if non-`nil', should contain a list of functions,
      which are called when a device is deleted.
 
- - Function: console-live-p object
+ -- Function: console-live-p object
      This function returns non-`nil' if OBJECT is a console that has
      not been deleted.
 
- - Function: device-live-p object
+ -- Function: device-live-p object
      This function returns non-`nil' if OBJECT is a device that has not
      been deleted.
 
- - Function: device-x-display device
+ -- Function: device-x-display device
      This function returns the X display which DEVICE is connected to,
      if DEVICE is an X device.
 
 \1f
 File: lispref.info,  Node: The Selected Console and Device,  Next: Console and Device I/O,  Prev: Connecting to a Console or Device,  Up: Consoles and Devices
 
-The Selected Console and Device
-===============================
+40.5 The Selected Console and Device
+====================================
 
- - Function: select-console console
+ -- Function: select-console console
      This function selects the console CONSOLE.  Subsequent editing
      commands apply to its selected device, selected frame, and selected
      window.  The selection of CONSOLE lasts until the next time the
      user does something to select a different console, or until the
      next time this function is called.
 
- - Function: selected-console
+ -- Function: selected-console
      This function returns the console which is currently active.
 
- - Function: select-device device
+ -- Function: select-device device
      This function selects the device DEVICE.
 
- - Function: selected-device &optional console
+ -- Function: selected-device &optional console
      This function returns the device which is currently active.  If
      optional CONSOLE is non-`nil', this function returns the device
      that would be currently active if CONSOLE were the selected
@@ -4633,30 +4740,30 @@ The Selected Console and Device
 \1f
 File: lispref.info,  Node: Console and Device I/O,  Prev: The Selected Console and Device,  Up: Consoles and Devices
 
-Console and Device I/O
-======================
+40.6 Console and Device I/O
+===========================
 
- - Function: console-disable-input console
+ -- Function: console-disable-input console
      This function disables input on console CONSOLE.
 
- - Function: console-enable-input console
+ -- Function: console-enable-input console
      This function enables input on console CONSOLE.
 
    Each device has a "baud rate" value associated with it.  On most
 systems, changing this value will affect the amount of padding and
 other strategic decisions made during redisplay.
 
- - Function: device-baud-rate &optional device
+ -- Function: device-baud-rate &optional device
      This function returns the output baud rate of DEVICE.
 
- - Function: set-device-baud-rate device rate
+ -- Function: set-device-baud-rate device rate
      This function sets the output baud rate of DEVICE to RATE.
 
 \1f
 File: lispref.info,  Node: Positions,  Next: Markers,  Prev: Consoles and Devices,  Up: Top
 
-Positions
-*********
+41 Positions
+************
 
 A "position" is the index of a character in the text of a buffer.  More
 precisely, a position identifies the place between two characters (or
@@ -4680,8 +4787,8 @@ surrounding characters.  *Note Markers::.
 \1f
 File: lispref.info,  Node: Point,  Next: Motion,  Up: Positions
 
-Point
-=====
+41.1 Point
+==========
 
 "Point" is a special buffer position used by many editing commands,
 including the self-inserting typed characters and text insertion
@@ -4708,33 +4815,33 @@ the buffer's point and the window's point normally have the same value,
 so the distinction is rarely important.  *Note Window Point::, for more
 details.
 
- - Function: point &optional buffer
+ -- Function: point &optional buffer
      This function returns the value of point in BUFFER, as an integer.
      BUFFER defaults to the current buffer if omitted.
 
           (point)
                => 175
 
- - Function: point-min &optional buffer
+ -- Function: point-min &optional buffer
      This function returns the minimum accessible value of point in
      BUFFER.  This is normally 1, but if narrowing is in effect, it is
      the position of the start of the region that you narrowed to.
      (*Note Narrowing::.) BUFFER defaults to the current buffer if
      omitted.
 
- - Function: point-max &optional buffer
+ -- Function: point-max &optional buffer
      This function returns the maximum accessible value of point in
      BUFFER.  This is `(1+ (buffer-size buffer))', unless narrowing is
      in effect, in which case it is the position of the end of the
      region that you narrowed to. (*note Narrowing::).  BUFFER defaults
      to the current buffer if omitted.
 
- - Function: buffer-end flag &optional buffer
+ -- Function: buffer-end flag &optional buffer
      This function returns `(point-min buffer)' if FLAG is less than 1,
      `(point-max buffer)' otherwise.  The argument FLAG must be a
      number.  BUFFER defaults to the current buffer if omitted.
 
- - Function: buffer-size &optional buffer
+ -- Function: buffer-size &optional buffer
      This function returns the total number of characters in BUFFER.
      In the absence of any narrowing (*note Narrowing::), `point-max'
      returns a value one larger than this.  BUFFER defaults to the
@@ -4745,7 +4852,7 @@ details.
           (point-max)
                => 36
 
- - Variable: buffer-saved-size
+ -- Variable: buffer-saved-size
      The value of this buffer-local variable is the former length of the
      current buffer, as of the last time it was read in, saved or
      auto-saved.
@@ -4753,8 +4860,8 @@ details.
 \1f
 File: lispref.info,  Node: Motion,  Next: Excursions,  Prev: Point,  Up: Positions
 
-Motion
-======
+41.2 Motion
+===========
 
 Motion functions change the value of point, either relative to the
 current value of point, relative to the beginning or end of the buffer,
@@ -4773,13 +4880,13 @@ or relative to the edges of the selected window.  *Note Point::.
 \1f
 File: lispref.info,  Node: Character Motion,  Next: Word Motion,  Up: Motion
 
-Motion by Characters
---------------------
+41.2.1 Motion by Characters
+---------------------------
 
 These functions move point based on a count of characters.  `goto-char'
 is the fundamental primitive; the other functions use that.
 
- - Command: goto-char position &optional buffer
+ -- Command: goto-char position &optional buffer
      This function sets point in `buffer' to the value POSITION.  If
      POSITION is less than 1, it moves point to the beginning of the
      buffer.  If POSITION is greater than the length of the buffer, it
@@ -4797,7 +4904,7 @@ is the fundamental primitive; the other functions use that.
 
      `goto-char' returns POSITION.
 
- - Command: forward-char &optional count buffer
+ -- Command: forward-char &optional count buffer
      This function moves point COUNT characters forward, towards the
      end of the buffer (or backward, towards the beginning of the
      buffer, if COUNT is negative).  If the function attempts to move
@@ -4808,7 +4915,7 @@ is the fundamental primitive; the other functions use that.
 
      In an interactive call, COUNT is the numeric prefix argument.
 
- - Command: backward-char &optional count buffer
+ -- Command: backward-char &optional count buffer
      This function moves point COUNT characters backward, towards the
      beginning of the buffer (or forward, towards the end of the
      buffer, if COUNT is negative).  If the function attempts to move
@@ -4822,13 +4929,13 @@ is the fundamental primitive; the other functions use that.
 \1f
 File: lispref.info,  Node: Word Motion,  Next: Buffer End Motion,  Prev: Character Motion,  Up: Motion
 
-Motion by Words
----------------
+41.2.2 Motion by Words
+----------------------
 
 These functions for parsing words use the syntax table to decide
 whether a given character is part of a word.  *Note Syntax Tables::.
 
- - Command: forward-word &optional count buffer
+ -- Command: forward-word &optional count buffer
      This function moves point forward COUNT words (or backward if
      COUNT is negative).  Normally it returns `t'.  If this motion
      encounters the beginning or end of the buffer, or the limits of the
@@ -4840,7 +4947,7 @@ whether a given character is part of a word.  *Note Syntax Tables::.
      In an interactive call, COUNT is set to the numeric prefix
      argument.
 
- - Command: backward-word &optional count buffer
+ -- Command: backward-word &optional count buffer
      This function is just like `forward-word', except that it moves
      backward until encountering the front of a word, rather than
      forward.  BUFFER defaults to the current buffer if omitted.
@@ -4848,7 +4955,7 @@ whether a given character is part of a word.  *Note Syntax Tables::.
      In an interactive call, COUNT is set to the numeric prefix
      argument.
 
- - Variable: words-include-escapes
+ -- Variable: words-include-escapes
      This variable affects the behavior of `forward-word' and everything
      that uses it.  If it is non-`nil', then characters in the "escape"
      and "character quote" syntax classes count as part of words.
@@ -4857,8 +4964,8 @@ whether a given character is part of a word.  *Note Syntax Tables::.
 \1f
 File: lispref.info,  Node: Buffer End Motion,  Next: Text Lines,  Prev: Word Motion,  Up: Motion
 
-Motion to an End of the Buffer
-------------------------------
+41.2.3 Motion to an End of the Buffer
+-------------------------------------
 
 To move point to the beginning of the buffer, write:
 
@@ -4872,7 +4979,7 @@ Likewise, to move to the end of the buffer, use:
 documented here to warn you not to use them in Lisp programs, because
 they set the mark and display messages in the echo area.
 
- - Command: beginning-of-buffer &optional count
+ -- Command: beginning-of-buffer &optional count
      This function moves point to the beginning of the buffer (or the
      limits of the accessible portion, when narrowing is in effect),
      setting the mark at the previous position.  If COUNT is non-`nil',
@@ -4884,7 +4991,7 @@ they set the mark and display messages in the echo area.
 
      Don't use this function in Lisp programs!
 
- - Command: end-of-buffer &optional count
+ -- Command: end-of-buffer &optional count
      This function moves point to the end of the buffer (or the limits
      of the accessible portion, when narrowing is in effect), setting
      the mark at the previous position.  If COUNT is non-`nil', then it
@@ -4898,8 +5005,8 @@ they set the mark and display messages in the echo area.
 \1f
 File: lispref.info,  Node: Text Lines,  Next: Screen Lines,  Prev: Buffer End Motion,  Up: Motion
 
-Motion by Text Lines
---------------------
+41.2.4 Motion by Text Lines
+---------------------------
 
 Text lines are portions of the buffer delimited by newline characters,
 which are regarded as part of the previous line.  The first text line
@@ -4909,7 +5016,7 @@ The division of the buffer into text lines is not affected by the width
 of the window, by line continuation in display, or by how tabs and
 control characters are displayed.
 
- - Command: goto-line line
+ -- Command: goto-line line
      This function moves point to the front of the LINEth line,
      counting from line 1 at beginning of the buffer.  If LINE is less
      than 1, it moves point to the beginning of the buffer.  If LINE is
@@ -4934,7 +5041,7 @@ control characters are displayed.
      In an interactive call, LINE is the numeric prefix argument if one
      has been provided.  Otherwise LINE is read in the minibuffer.
 
- - Command: beginning-of-line &optional count buffer
+ -- Command: beginning-of-line &optional count buffer
      This function moves point to the beginning of the current line.
      With an argument COUNT not `nil' or 1, it moves forward COUNT-1
      lines and then to the beginning of the line.  BUFFER defaults to
@@ -4944,7 +5051,7 @@ control characters are displayed.
      accessible portion, if narrowing is in effect), it positions point
      there.  No error is signaled.
 
- - Command: end-of-line &optional count buffer
+ -- Command: end-of-line &optional count buffer
      This function moves point to the end of the current line.  With an
      argument COUNT not `nil' or 1, it moves forward COUNT-1 lines and
      then to the end of the line.  BUFFER defaults to the current
@@ -4954,7 +5061,7 @@ control characters are displayed.
      accessible portion, if narrowing is in effect), it positions point
      there.  No error is signaled.
 
- - Command: forward-line &optional count buffer
+ -- Command: forward-line &optional count buffer
      This function moves point forward COUNT lines, to the beginning of
      the line.  If COUNT is negative, it moves point -COUNT lines
      backward, to the beginning of a line.  If COUNT is zero, it moves
@@ -4972,7 +5079,8 @@ control characters are displayed.
 
      In an interactive call, COUNT is the numeric prefix argument.
 
- - Function: count-lines start end &optional ignore-invisible-lines-flag
+ -- Function: count-lines start end &optional
+          ignore-invisible-lines-flag
      This function returns the number of lines between the positions
      START and END in the current buffer.  If START and END are equal,
      then it returns 0.  Otherwise it returns at least 1, even if START
@@ -4983,7 +5091,7 @@ control characters are displayed.
      With optional IGNORE-INVISIBLE-LINES-FLAG non-`nil', lines
      collapsed with selective-display are excluded from the line count.
 
-     *Note:* The expression to return the current line number is not
+     *N.B.* The expression to return the current line number is not
      obvious:
 
           (1+ (count-lines 1 (point-at-bol)))
@@ -5003,8 +5111,8 @@ beginning or end of a line.
 \1f
 File: lispref.info,  Node: Screen Lines,  Next: List Motion,  Prev: Text Lines,  Up: Motion
 
-Motion by Screen Lines
-----------------------
+41.2.5 Motion by Screen Lines
+-----------------------------
 
 The line functions in the previous section count text lines, delimited
 only by newline characters.  By contrast, these functions count screen
@@ -5030,7 +5138,7 @@ thus take time proportional to the distance scanned.  If you intend to
 use them heavily, Emacs provides caches which may improve the
 performance of your code.  *Note cache-long-line-scans: Text Lines.
 
- - Function: vertical-motion count &optional window pixels
+ -- Function: vertical-motion count &optional window pixels
      This function moves point to the start of the frame line COUNT
      frame lines down from the frame line containing point.  If COUNT
      is negative, it moves up instead.  The optional second argument
@@ -5049,7 +5157,7 @@ performance of your code.  *Note cache-long-line-scans: Text Lines.
      WINDOW's point. (This differs from FSF Emacs, which buggily always
      sets current buffer's point, regardless of WINDOW.)
 
- - Function: vertical-motion-pixels count &optional window how
+ -- Function: vertical-motion-pixels count &optional window how
      This function moves point to the start of the frame line PIXELS
      vertical pixels down from the frame line containing point, or up if
      PIXELS is negative.  The optional second argument WINDOW is the
@@ -5060,7 +5168,7 @@ performance of your code.  *Note cache-long-line-scans: Text Lines.
      least PIXELS.  Any other value indicates that the motion should be
      as close as possible to PIXELS.
 
- - Command: move-to-window-line count &optional window
+ -- Command: move-to-window-line count &optional window
      This function moves point with respect to the text currently
      displayed in WINDOW, which defaults to the selected window.  It
      moves point to the beginning of the screen line COUNT screen lines
@@ -5083,8 +5191,8 @@ performance of your code.  *Note cache-long-line-scans: Text Lines.
 \1f
 File: lispref.info,  Node: List Motion,  Next: Skipping Characters,  Prev: Screen Lines,  Up: Motion
 
-Moving over Balanced Expressions
---------------------------------
+41.2.6 Moving over Balanced Expressions
+---------------------------------------
 
 Here are several functions concerned with balanced-parenthesis
 expressions (also called "sexps" in connection with moving across them
@@ -5094,30 +5202,30 @@ Expressions::, for lower-level primitives for scanning sexps or parts of
 sexps.  For user-level commands, see *Note Lists and Sexps:
 (xemacs)Lists and Sexps.
 
- - Command: forward-list &optional arg
+ -- Command: forward-list &optional arg
      This function moves forward across ARG balanced groups of
      parentheses. (Other syntactic entities such as words or paired
      string quotes are ignored.) ARG defaults to 1 if omitted.  If ARG
      is negative, move backward across that many groups of parentheses.
 
- - Command: backward-list &optional count
+ -- Command: backward-list &optional count
      This function moves backward across COUNT balanced groups of
      parentheses. (Other syntactic entities such as words or paired
      string quotes are ignored.) COUNT defaults to 1 if omitted.  If
      COUNT is negative, move forward across that many groups of
      parentheses.
 
- - Command: up-list &optional count
+ -- Command: up-list &optional count
      This function moves forward out of COUNT levels of parentheses.  A
      negative argument means move backward but still to a less deep
      spot.
 
- - Command: down-list &optional count
+ -- Command: down-list &optional count
      This function moves forward into COUNT levels of parentheses.  A
      negative argument means move backward but still go deeper in
      parentheses (-COUNT levels).
 
- - Command: forward-sexp &optional count
+ -- Command: forward-sexp &optional count
      This function moves forward across COUNT balanced expressions.
      Balanced expressions include both those delimited by parentheses
      and other kinds, such as words and string constants.  COUNT
@@ -5127,32 +5235,32 @@ sexps.  For user-level commands, see *Note Lists and Sexps:
           ---------- Buffer: foo ----------
           (concat-!- "foo " (car x) y z)
           ---------- Buffer: foo ----------
-          
+
           (forward-sexp 3)
                => nil
-          
+
           ---------- Buffer: foo ----------
           (concat "foo " (car x) y-!- z)
           ---------- Buffer: foo ----------
 
- - Command: backward-sexp &optional count
+ -- Command: backward-sexp &optional count
      This function moves backward across COUNT balanced expressions.
      COUNT defaults to 1 if omitted.  If COUNT is negative, move
      forward across that many balanced expressions.
 
- - Command: beginning-of-defun &optional count
+ -- Command: beginning-of-defun &optional count
      This function moves back to the COUNTth beginning of a defun.  If
      COUNT is negative, this actually moves forward, but it still moves
      to the beginning of a defun, not to the end of one.  COUNT
      defaults to 1 if omitted.
 
- - Command: end-of-defun &optional count
+ -- Command: end-of-defun &optional count
      This function moves forward to the COUNTth end of a defun.  If
      COUNT is negative, this actually moves backward, but it still
      moves to the end of a defun, not to the beginning of one.  COUNT
      defaults to 1 if omitted.
 
- - User Option: defun-prompt-regexp
+ -- User Option: defun-prompt-regexp
      If non-`nil', this variable holds a regular expression that
      specifies what text can appear before the open-parenthesis that
      starts a defun.  That is to say, a defun begins on a line that
@@ -5162,14 +5270,14 @@ sexps.  For user-level commands, see *Note Lists and Sexps:
 \1f
 File: lispref.info,  Node: Skipping Characters,  Prev: List Motion,  Up: Motion
 
-Skipping Characters
--------------------
+41.2.7 Skipping Characters
+--------------------------
 
 The following two functions move point over a specified set of
 characters.  For example, they are often used to skip whitespace.  For
 related functions, see *Note Motion and Syntax::.
 
- - Function: skip-chars-forward character-set &optional limit buffer
+ -- Function: skip-chars-forward character-set &optional limit buffer
      This function moves point in BUFFER forward, skipping over a given
      set of characters.  It examines the character following point,
      then advances point if the character matches CHARACTER-SET.  This
@@ -5197,16 +5305,16 @@ related functions, see *Note Motion and Syntax::.
           I read "-!-The cat in the hat
           comes back" twice.
           ---------- Buffer: foo ----------
-          
+
           (skip-chars-forward "a-zA-Z ")
                => nil
-          
+
           ---------- Buffer: foo ----------
           I read "The cat in the hat-!-
           comes back" twice.
           ---------- Buffer: foo ----------
 
- - Function: skip-chars-backward character-set &optional limit buffer
+ -- Function: skip-chars-backward character-set &optional limit buffer
      This function moves point backward, skipping characters that match
      CHARACTER-SET, until LIMIT.  It just like `skip-chars-forward'
      except for the direction of motion.
@@ -5214,8 +5322,8 @@ related functions, see *Note Motion and Syntax::.
 \1f
 File: lispref.info,  Node: Excursions,  Next: Narrowing,  Prev: Motion,  Up: Positions
 
-Excursions
-==========
+41.3 Excursions
+===============
 
 It is often useful to move point "temporarily" within a localized
 portion of the program, or to switch buffers temporarily.  This is
@@ -5228,7 +5336,7 @@ excursion.
 described elsewhere (see *Note Window Configurations:: and *note Frame
 Configurations::).
 
- - Special Form: save-excursion forms...
+ -- Special Form: save-excursion forms...
      The `save-excursion' special form saves the identity of the current
      buffer and the values of point and the mark in it, evaluates
      FORMS, and finally restores the buffer and its saved values of
@@ -5266,29 +5374,29 @@ Configurations::).
               (goto-char old-pnt)
               (set-marker (mark-marker) old-mark)))
 
- - Special Form: save-current-buffer forms...
+ -- Special Form: save-current-buffer forms...
      This special form is similar to `save-excursion' but it only saves
      and restores the current buffer.  Beginning with XEmacs 20.3,
      `save-current-buffer' is a primitive.
 
- - Special Form: with-current-buffer buffer forms...
+ -- Special Form: with-current-buffer buffer forms...
      This special form evaluates FORMS with BUFFER as the current
      buffer.  It returns the value of the last form.
 
- - Special Form: with-temp-file filename forms...
+ -- Special Form: with-temp-file filename forms...
      This special form creates a new buffer, evaluates FORMS there, and
      writes the buffer to FILENAME.  It returns the value of the last
      form evaluated.
 
- - Special Form: save-selected-window forms...
+ -- Special Form: save-selected-window forms...
      This special form is similar to `save-excursion' but it saves and
      restores the selected window and nothing else.
 
 \1f
 File: lispref.info,  Node: Narrowing,  Prev: Excursions,  Up: Positions
 
-Narrowing
-=========
+41.4 Narrowing
+==============
 
 "Narrowing" means limiting the text addressable by XEmacs editing
 commands to a limited range of characters in a buffer.  The text that
@@ -5308,7 +5416,7 @@ which use them refuse to operate on text that is inaccessible.
    The commands for saving buffers are unaffected by narrowing; they
 save the entire buffer regardless of any narrowing.
 
- - Command: narrow-to-region start end &optional buffer
+ -- Command: narrow-to-region start end &optional buffer
      This function sets the accessible portion of BUFFER to start at
      START and end at END.  Both arguments should be character
      positions.  BUFFER defaults to the current buffer if omitted.
@@ -5316,7 +5424,7 @@ save the entire buffer regardless of any narrowing.
      In an interactive call, START and END are set to the bounds of the
      current region (point and the mark, with the smallest first).
 
- - Command: narrow-to-page &optional move-count
+ -- Command: narrow-to-page &optional move-count
      This function sets the accessible portion of the current buffer to
      include just the current page.  An optional first argument
      MOVE-COUNT non-`nil' means to move forward or backward by
@@ -5326,7 +5434,7 @@ save the entire buffer regardless of any narrowing.
      In an interactive call, MOVE-COUNT is set to the numeric prefix
      argument.
 
- - Command: widen &optional buffer
+ -- Command: widen &optional buffer
      This function cancels any narrowing in BUFFER, so that the entire
      contents are accessible.  This is called "widening".  It is
      equivalent to the following expression:
@@ -5335,7 +5443,7 @@ save the entire buffer regardless of any narrowing.
 
      BUFFER defaults to the current buffer if omitted.
 
- - Special Form: save-restriction body...
+ -- Special Form: save-restriction body...
      This special form saves the current bounds of the accessible
      portion, evaluates the BODY forms, and finally restores the saved
      bounds, thus restoring the same state of narrowing (or absence
@@ -5391,7 +5499,7 @@ save the entire buffer regardless of any narrowing.
           This is the contents of foo
           This is the contents of foo-!-
           ---------- Buffer: foo ----------
-          
+
           (save-excursion
             (save-restriction
               (goto-char 1)
@@ -5399,7 +5507,7 @@ save the entire buffer regardless of any narrowing.
               (narrow-to-region 1 (point))
               (goto-char (point-min))
               (replace-string "foo" "bar")))
-          
+
           ---------- Buffer: foo ----------
           This is the contents of bar
           This is the contents of bar
@@ -5409,8 +5517,8 @@ save the entire buffer regardless of any narrowing.
 \1f
 File: lispref.info,  Node: Markers,  Next: Text,  Prev: Positions,  Up: Top
 
-Markers
-*******
+42 Markers
+**********
 
 A "marker" is a Lisp object used to specify a position in a buffer
 relative to the surrounding text.  A marker changes its offset from the
@@ -5430,8 +5538,8 @@ deleted, so that it stays with the two characters on either side of it.
 \1f
 File: lispref.info,  Node: Overview of Markers,  Next: Predicates on Markers,  Up: Markers
 
-Overview of Markers
-===================
+42.1 Overview of Markers
+========================
 
 A marker specifies a buffer and a position in that buffer.  The marker
 can be used to represent a position in the functions that require one,
@@ -5508,22 +5616,22 @@ point to markers:
      ;; Make a new marker that initially does not point anywhere:
      (setq m1 (make-marker))
           => #<marker in no buffer>
-     
+
      ;; Set `m1' to point between the 99th and 100th characters
      ;;   in the current buffer:
      (set-marker m1 100)
           => #<marker at 100 in markers.texi>
-     
+
      ;; Now insert one character at the beginning of the buffer:
      (goto-char (point-min))
           => 1
      (insert "Q")
           => nil
-     
+
      ;; `m1' is updated appropriately.
      m1
           => #<marker at 101 in markers.texi>
-     
+
      ;; Two markers that point to the same position
      ;;   are not `eq', but they are `equal'.
      (setq m2 (copy-marker m1))
@@ -5532,7 +5640,7 @@ point to markers:
           => nil
      (equal m1 m2)
           => t
-     
+
      ;; When you are finished using a marker, make it point nowhere.
      (set-marker m1 nil)
           => #<marker in no buffer>
@@ -5540,54 +5648,54 @@ point to markers:
 \1f
 File: lispref.info,  Node: Predicates on Markers,  Next: Creating Markers,  Prev: Overview of Markers,  Up: Markers
 
-Predicates on Markers
-=====================
+42.2 Predicates on Markers
+==========================
 
 You can test an object to see whether it is a marker, or whether it is
 either an integer or a marker or either an integer, a character, or a
 marker.  The latter tests are useful in connection with the arithmetic
 functions that work with any of markers, integers, or characters.
 
- - Function: markerp object
+ -- Function: markerp object
      This function returns `t' if OBJECT is a marker, `nil' otherwise.
      Note that integers are not markers, even though many functions
      will accept either a marker or an integer.
 
- - Function: integer-or-marker-p object
+ -- Function: integer-or-marker-p object
      This function returns `t' if OBJECT is an integer or a marker,
      `nil' otherwise.
 
- - Function: integer-char-or-marker-p object
+ -- Function: integer-char-or-marker-p object
      This function returns `t' if OBJECT is an integer, a character, or
      a marker, `nil' otherwise.
 
- - Function: number-or-marker-p object
+ -- Function: number-or-marker-p object
      This function returns `t' if OBJECT is a number (either kind) or a
      marker, `nil' otherwise.
 
- - Function: number-char-or-marker-p object
+ -- Function: number-char-or-marker-p object
      This function returns `t' if OBJECT is a number (either kind), a
      character, or a marker, `nil' otherwise.
 
 \1f
 File: lispref.info,  Node: Creating Markers,  Next: Information from Markers,  Prev: Predicates on Markers,  Up: Markers
 
-Functions That Create Markers
-=============================
+42.3 Functions That Create Markers
+==================================
 
 When you create a new marker, you can make it point nowhere, or point
 to the present position of point, or to the beginning or end of the
 accessible portion of the buffer, or to the same place as another given
 marker.
 
- - Function: make-marker
+ -- Function: make-marker
      This functions returns a newly created marker that does not point
      anywhere.
 
           (make-marker)
                => #<marker in no buffer>
 
- - Function: point-marker &optional dont-copy-p buffer
+ -- Function: point-marker &optional dont-copy-p buffer
      This function returns a marker that points to the present position
      of point in BUFFER, which defaults to the current buffer.  *Note
      Point::.  For an example, see `copy-marker', below.
@@ -5599,13 +5707,13 @@ marker.
      modifying the position of this marker will move point.  It is
      illegal to change the buffer of it, or make it point nowhere.
 
- - Function: point-min-marker &optional buffer
+ -- Function: point-min-marker &optional buffer
      This function returns a new marker that points to the beginning of
      the accessible portion of BUFFER, which defaults to the current
      buffer.  This will be the beginning of the buffer unless narrowing
      is in effect.  *Note Narrowing::.
 
- - Function: point-max-marker &optional buffer
+ -- Function: point-max-marker &optional buffer
      This function returns a new marker that points to the end of the
      accessible portion of BUFFER, which defaults to the current
      buffer.  This will be the end of the buffer unless narrowing is in
@@ -5619,7 +5727,7 @@ marker.
                => #<marker at 1 in markers.texi>
           (point-max-marker)
                => #<marker at 15573 in markers.texi>
-          
+
           (narrow-to-region 100 200)
                => nil
           (point-min-marker)
@@ -5627,7 +5735,7 @@ marker.
           (point-max-marker)
                => #<marker at 200 in markers.texi>
 
- - Function: copy-marker marker-or-integer &optional marker-type
+ -- Function: copy-marker marker-or-integer &optional marker-type
      If passed a marker as its argument, `copy-marker' returns a new
      marker that points to the same place and the same buffer as does
      MARKER-OR-INTEGER.  If passed an integer as its argument,
@@ -5648,54 +5756,54 @@ marker.
 
           (setq p (point-marker))
                => #<marker at 2139 in markers.texi>
-          
+
           (setq q (copy-marker p))
                => #<marker at 2139 in markers.texi>
-          
+
           (eq p q)
                => nil
-          
+
           (equal p q)
                => t
-          
+
           (point)
                => 2139
-          
+
           (set-marker p 3000)
                => #<marker at 3000 in markers.texi>
-          
+
           (point)
                => 2139
-          
+
           (setq p (point-marker t))
                => #<marker at 2139 in markers.texi>
-          
+
           (set-marker p 3000)
                => #<marker at 3000 in markers.texi>
-          
+
           (point)
                => 3000
-          
+
           (copy-marker 0)
                => #<marker at 1 in markers.texi>
-          
+
           (copy-marker 20000)
                => #<marker at 7572 in markers.texi>
 
 \1f
 File: lispref.info,  Node: Information from Markers,  Next: Changing Markers,  Prev: Creating Markers,  Up: Markers
 
-Information from Markers
-========================
+42.4 Information from Markers
+=============================
 
 This section describes the functions for accessing the components of a
 marker object.
 
- - Function: marker-position marker
+ -- Function: marker-position marker
      This function returns the position that MARKER points to, or `nil'
      if it points nowhere.
 
- - Function: marker-buffer marker
+ -- Function: marker-buffer marker
      This function returns the buffer that MARKER points into, or `nil'
      if it points nowhere.
 
@@ -5705,7 +5813,7 @@ marker object.
                => nil
           (marker-buffer m)
                => nil
-          
+
           (set-marker m 3770 (current-buffer))
                => #<marker at 3770 in markers.texi>
           (marker-buffer m)
@@ -5720,8 +5828,8 @@ both point nowhere.
 \1f
 File: lispref.info,  Node: Changing Markers,  Next: The Mark,  Prev: Information from Markers,  Up: Markers
 
-Changing Marker Positions
-=========================
+42.5 Changing Marker Positions
+==============================
 
 This section describes how to change the position of an existing
 marker.  When you do this, be sure you know whether the marker is used
@@ -5729,7 +5837,7 @@ outside of your program, and, if so, what effects will result from
 moving it--otherwise, confusing things may happen in other parts of
 Emacs.
 
- - Function: set-marker marker position &optional buffer
+ -- Function: set-marker marker position &optional buffer
      This function moves MARKER to POSITION in BUFFER.  If BUFFER is
      not provided, it defaults to the current buffer.
 
@@ -5752,14 +5860,14 @@ Emacs.
           (set-marker m 0 b)
                => #<marker at 1 in foo>
 
- - Function: move-marker marker position &optional buffer
+ -- Function: move-marker marker position &optional buffer
      This is another name for `set-marker'.
 
 \1f
 File: lispref.info,  Node: The Mark,  Next: The Region,  Prev: Changing Markers,  Up: Markers
 
-The Mark
-========
+42.6 The Mark
+=============
 
 One special marker in each buffer is designated "the mark".  It records
 a position for the user for the sake of commands such as `C-w' and `C-x
@@ -5815,7 +5923,7 @@ mark on the mark ring.  The variable `mark-ring-max' specifies the
 maximum number of entries in the mark ring; once the list becomes this
 long, adding a new element deletes the last element.
 
- - Function: mark &optional force buffer
+ -- Function: mark &optional force buffer
      This function returns BUFFER's mark position as an integer.
      BUFFER defaults to the current buffer if omitted.
 
@@ -5830,7 +5938,7 @@ long, adding a new element deletes the last element.
      If you are using this in an editing command, you are most likely
      making a mistake; see the documentation of `set-mark' below.
 
- - Function: mark-marker &optional force buffer
+ -- Function: mark-marker &optional force buffer
      This function returns BUFFER's mark.  BUFFER defaults to the
      current buffer if omitted.  This is the very marker that records
      the mark location inside XEmacs, not a copy.  Therefore, changing
@@ -5852,7 +5960,7 @@ long, adding a new element deletes the last element.
      other than the one of which it is the mark.  If you do, it will
      yield perfectly consistent, but rather odd, results.
 
- - Function: set-mark position &optional buffer
+ -- Function: set-mark position &optional buffer
      This function sets `buffer''s mark to POSITION, and activates the
      mark.  BUFFER defaults to the current buffer if omitted.  The old
      value of the mark is _not_ pushed onto the mark ring.
@@ -5875,12 +5983,12 @@ long, adding a new element deletes the last element.
             (forward-line 1)
             (delete-region start (point))).
 
- - Command: exchange-point-and-mark &optional dont-activate-region
+ -- Command: exchange-point-and-mark &optional dont-activate-region
      This function exchanges the positions of point and the mark.  It
      is intended for interactive use.  The mark is also activated
      unless DONT-ACTIVATE-REGION is non-`nil'.
 
- - Function: push-mark &optional position nomsg activate buffer
+ -- Function: push-mark &optional position nomsg activate buffer
      This function sets BUFFER's mark to POSITION, and pushes a copy of
      the previous mark onto `mark-ring'.  BUFFER defaults to the
      current buffer if omitted.  If POSITION is `nil', then the value
@@ -5894,7 +6002,7 @@ long, adding a new element deletes the last element.
 
      A `Mark set' message is displayed unless NOMSG is non-`nil'.
 
- - Function: pop-mark
+ -- Function: pop-mark
      This function pops off the top element of `mark-ring' and makes
      that mark become the buffer's actual mark.  This does not move
      point in the buffer, and it does nothing if `mark-ring' is empty.
@@ -5902,7 +6010,7 @@ long, adding a new element deletes the last element.
 
      The return value is not meaningful.
 
- - Variable: mark-ring
+ -- Variable: mark-ring
      The value of this buffer-local variable is the list of saved former
      marks of the current buffer, most recent first.
 
@@ -5911,7 +6019,7 @@ long, adding a new element deletes the last element.
               #<marker at 10832 in markers.texi>
               ...)
 
- - User Option: mark-ring-max
+ -- User Option: mark-ring-max
      The value of this variable is the maximum size of `mark-ring'.  If
      more marks than this are pushed onto the `mark-ring', `push-mark'
      discards an old mark when it adds a new one.
@@ -5920,25 +6028,25 @@ long, adding a new element deletes the last element.
 ring".  Marks are pushed onto the global mark ring the first time you
 set a mark after switching buffers.
 
- - Variable: global-mark-ring
+ -- Variable: global-mark-ring
      The value of this variable is the list of saved former global
      marks, most recent first.
 
- - User Option: mark-ring-max
+ -- User Option: mark-ring-max
      The value of this variable is the maximum size of
      `global-mark-ring'.  If more marks than this are pushed onto the
      `global-mark-ring', `push-mark' discards an old mark when it adds
      a new one.
 
- - Command: pop-global-mark
+ -- Command: pop-global-mark
      This function pops a mark off the global mark ring and jumps to
      that location.
 
 \1f
 File: lispref.info,  Node: The Region,  Prev: The Mark,  Up: Markers
 
-The Region
-==========
+42.7 The Region
+===============
 
 The text between point and the mark is known as "the region".  Various
 functions operate on text delimited by point and the mark, but only
@@ -5951,7 +6059,7 @@ corresponding mark is active.  Note that only one active region at a
 time can exist--i.e. only one buffer's region is active at a time.
 *Note The Mark::, for more information about active regions.
 
- - User Option: zmacs-regions
+ -- User Option: zmacs-regions
      If non-`nil' (the default), active regions are used.  *Note The
      Mark::, for a detailed explanation of what this means.
 
@@ -5963,7 +6071,7 @@ the beginning and end of the region.  This lets other Lisp programs
 specify the bounds explicitly as arguments and automatically respects
 the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
 
- - Function: region-beginning &optional buffer
+ -- Function: region-beginning &optional buffer
      This function returns the position of the beginning of BUFFER's
      region (as an integer).  This is the position of either point or
      the mark, whichever is smaller.  BUFFER defaults to the current
@@ -5972,7 +6080,7 @@ the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
      If the mark does not point anywhere, an error is signaled.  Note
      that this function ignores whether the region is active.
 
- - Function: region-end &optional buffer
+ -- Function: region-end &optional buffer
      This function returns the position of the end of BUFFER's region
      (as an integer).  This is the position of either point or the mark,
      whichever is larger.  BUFFER defaults to the current buffer if
@@ -5981,7 +6089,7 @@ the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
      If the mark does not point anywhere, an error is signaled.  Note
      that this function ignores whether the region is active.
 
- - Function: region-exists-p
+ -- Function: region-exists-p
      This function is non-`nil' if the region exists.  If active regions
      are in use (i.e. `zmacs-regions' is true), this means that the
      region is active.  Otherwise, this means that the user has pushed
@@ -5989,7 +6097,7 @@ the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
      returns `nil', a function that uses the `r' interactive
      specification will cause an error when called interactively.
 
- - Function: region-active-p
+ -- Function: region-active-p
      If `zmacs-regions' is true, this is equivalent to
      `region-exists-p'.  Otherwise, this function always returns false.
      This function is used by commands such as
@@ -5997,7 +6105,7 @@ the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
      operate either on the active region or on something else (e.g. the
      word or paragraph at point).
 
- - Variable: zmacs-region-stays
+ -- Variable: zmacs-region-stays
      If a command sets this variable to true, the currently active
      region will remain activated when the command finishes. (Normally
      the region is deactivated when each command terminates.) If
@@ -6006,21 +6114,21 @@ the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
      interactive specification `_' instead, if you want the region to
      remain active.
 
- - Function: zmacs-activate-region
+ -- Function: zmacs-activate-region
      This function activates the region in the current buffer (this is
      equivalent to activating the current buffer's mark).  This will
      normally also highlight the text in the active region and set
      `zmacs-region-stays' to `t'. (If `zmacs-regions' is false,
      however, this function has no effect.)
 
- - Function: zmacs-deactivate-region
+ -- Function: zmacs-deactivate-region
      This function deactivates the region in the current buffer (this is
      equivalent to deactivating the current buffer's mark).  This will
      normally also unhighlight the text in the active region and set
      `zmacs-region-stays' to `nil'. (If `zmacs-regions' is false,
      however, this function has no effect.)
 
- - Function: zmacs-update-region
+ -- Function: zmacs-update-region
      This function updates the active region, if it's currently active.
      (If there is no active region, this function does nothing.) This
      has the effect of updating the highlighting on the text in the
@@ -6029,7 +6137,7 @@ the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
      when appropriate.  Calling this function will call the hook
      `zmacs-update-region-hook', if the region is active.
 
- - Variable: zmacs-activate-region-hook
+ -- Variable: zmacs-activate-region-hook
      This normal hook is called when a region becomes active. (Usually
      this happens as a result of a command that activates the region,
      such as `set-mark-command', `activate-region', or
@@ -6038,13 +6146,13 @@ the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
      already active.  If `zmacs-regions' is false, however, this hook
      will never get called under any circumstances.
 
- - Variable: zmacs-deactivate-region-hook
+ -- Variable: zmacs-deactivate-region-hook
      This normal hook is called when an active region becomes inactive.
      (Calling `zmacs-deactivate-region' when the region is inactive will
      _not_ cause this hook to be called.)  If `zmacs-regions' is false,
      this hook will never get called.
 
- - Variable: zmacs-update-region-hook
+ -- Variable: zmacs-update-region-hook
      This normal hook is called when an active region is "updated" by
      `zmacs-update-region'.  This normally gets called at the end of
      each command that sets `zmacs-region-stays' to `t', indicating
@@ -6054,8 +6162,8 @@ the user's setting for `zmacs-regions'.  (*Note Interactive Codes::.)
 \1f
 File: lispref.info,  Node: Text,  Next: Searching and Matching,  Prev: Markers,  Up: Top
 
-Text
-****
+43 Text
+*******
 
 This chapter describes the functions that deal with the text in a
 buffer.  Most examine, insert, or delete text in the current buffer,
@@ -6108,8 +6216,8 @@ buffer, together with their properties (when relevant).
 \1f
 File: lispref.info,  Node: Near Point,  Next: Buffer Contents,  Up: Text
 
-Examining Text Near Point
-=========================
+43.1 Examining Text Near Point
+==============================
 
 Many functions are provided to look at the characters around point.
 Several simple functions are described here.  See also `looking-at' in
@@ -6121,7 +6229,7 @@ omitted. (In FSF Emacs, and earlier versions of XEmacs, these functions
 usually did not have these optional BUFFER arguments and always
 operated on the current buffer.)
 
- - Function: char-after &optional position buffer
+ -- Function: char-after &optional position buffer
      This function returns the character in the buffer at (i.e.,
      immediately after) position POSITION.  If POSITION is out of range
      for this purpose, either before the beginning of the buffer, or at
@@ -6135,7 +6243,7 @@ operated on the current buffer.)
           (char-to-string (char-after 1))
                => "@"
 
- - Function: char-before &optional position buffer
+ -- Function: char-before &optional position buffer
      This function returns the character in the current buffer
      immediately before position POSITION.  If POSITION is out of range
      for this purpose, either at or before the beginning of the buffer,
@@ -6143,7 +6251,7 @@ operated on the current buffer.)
      POSITION is point.  If optional argument BUFFER is `nil', the
      current buffer is assumed.
 
- - Function: following-char &optional buffer
+ -- Function: following-char &optional buffer
      This function returns the character following point in the buffer.
      This is similar to `(char-after (point))'.  However, if point is at
      the end of the buffer, then the result of `following-char' is 0.
@@ -6161,38 +6269,38 @@ operated on the current buffer.)
           Gentlemen may cry ``Pea-!-ce! Peace!,''
           but there is no peace.
           ---------- Buffer: foo ----------
-          
+
           (char-to-string (preceding-char))
                => "a"
           (char-to-string (following-char))
                => "c"
 
- - Function: preceding-char &optional buffer
+ -- Function: preceding-char &optional buffer
      This function returns the character preceding point in the buffer.
      See above, under `following-char', for an example.  If point is at
      the beginning of the buffer, `preceding-char' returns 0.  If
      optional argument BUFFER is `nil', the current buffer is assumed.
 
- - Function: bobp &optional buffer
+ -- Function: bobp &optional buffer
      This function returns `t' if point is at the beginning of the
      buffer.  If narrowing is in effect, this means the beginning of the
      accessible portion of the text.  If optional argument BUFFER is
      `nil', the current buffer is assumed.  See also `point-min' in
      *Note Point::.
 
- - Function: eobp &optional buffer
+ -- Function: eobp &optional buffer
      This function returns `t' if point is at the end of the buffer.
      If narrowing is in effect, this means the end of accessible
      portion of the text.  If optional argument BUFFER is `nil', the
      current buffer is assumed.  See also `point-max' in *Note Point::.
 
- - Function: bolp &optional buffer
+ -- Function: bolp &optional buffer
      This function returns `t' if point is at the beginning of a line.
      If optional argument BUFFER is `nil', the current buffer is
      assumed.  *Note Text Lines::.  The beginning of the buffer (or its
      accessible portion) always counts as the beginning of a line.
 
- - Function: eolp &optional buffer
+ -- Function: eolp &optional buffer
      This function returns `t' if point is at the end of a line.  The
      end of the buffer is always considered the end of a line.  If
      optional argument BUFFER is `nil', the current buffer is assumed.
@@ -6202,14 +6310,14 @@ operated on the current buffer.)
 \1f
 File: lispref.info,  Node: Buffer Contents,  Next: Comparing Text,  Prev: Near Point,  Up: Text
 
-Examining Buffer Contents
-=========================
+43.2 Examining Buffer Contents
+==============================
 
 This section describes two functions that allow a Lisp program to
 convert any portion of the text in the buffer into a string.
 
- - Function: buffer-substring start end &optional buffer
- - Function: buffer-string start end &optional buffer
+ -- Function: buffer-substring start end &optional buffer
+ -- Function: buffer-string start end &optional buffer
      These functions are equivalent and return a string containing a
      copy of the text of the region defined by positions START and END
      in the buffer.  If the arguments are not positions in the
@@ -6227,9 +6335,9 @@ convert any portion of the text in the buffer into a string.
 
           ---------- Buffer: foo ----------
           This is the contents of buffer foo
-          
+
           ---------- Buffer: foo ----------
-          
+
           (buffer-substring 1 10)
           => "This is t"
           (buffer-substring (point-max) 10)
@@ -6239,13 +6347,13 @@ convert any portion of the text in the buffer into a string.
 \1f
 File: lispref.info,  Node: Comparing Text,  Next: Insertion,  Prev: Buffer Contents,  Up: Text
 
-Comparing Text
-==============
+43.3 Comparing Text
+===================
 
 This function lets you compare portions of the text in a buffer, without
 copying them into strings first.
 
- - Function: compare-buffer-substrings buffer1 start1 end1 buffer2
+ -- Function: compare-buffer-substrings buffer1 start1 end1 buffer2
           start2 end2
      This function lets you compare two substrings of the same buffer
      or two different buffers.  The first three arguments specify one
@@ -6274,8 +6382,8 @@ copying them into strings first.
 \1f
 File: lispref.info,  Node: Insertion,  Next: Commands for Insertion,  Prev: Comparing Text,  Up: Text
 
-Inserting Text
-==============
+43.4 Inserting Text
+===================
 
 "Insertion" means adding new text to a buffer.  The inserted text goes
 at point--between the character before point and the character after
@@ -6305,13 +6413,13 @@ properties as the characters they were copied from.  By contrast,
 characters specified as separate arguments, not part of a string or
 buffer, inherit their text properties from the neighboring text.
 
- - Function: insert &rest args
+ -- Function: insert &rest args
      This function inserts the strings and/or characters ARGS into the
      current buffer, at point, moving point forward.  In other words, it
      inserts the text before point.  An error is signaled unless all
      ARGS are either strings or characters.  The value is `nil'.
 
- - Function: insert-before-markers &rest args
+ -- Function: insert-before-markers &rest args
      This function inserts the strings and/or characters ARGS into the
      current buffer, at point, moving point forward.  An error is
      signaled unless all ARGS are either strings or characters.  The
@@ -6321,13 +6429,13 @@ buffer, inherit their text properties from the neighboring text.
      relocates markers initially pointing at the insertion point, to
      point after the inserted text.
 
- - Function: insert-string string &optional buffer
+ -- Function: insert-string string &optional buffer
      This function inserts STRING into BUFFER before point.  BUFFER
      defaults to the current buffer if omitted.  This function is
      chiefly useful if you want to insert a string in a buffer other
      than the current one (otherwise you could just use `insert').
 
- - Function: insert-char character &optional count ignored buffer
+ -- Function: insert-char character &optional count ignored buffer
      This function inserts COUNT instances of CHARACTER into BUFFER
      before point.  COUNT must be a number, and CHARACTER must be a
      character.
@@ -6338,7 +6446,7 @@ buffer, inherit their text properties from the neighboring text.
 
      This function always returns `nil'.
 
- - Function: insert-buffer-substring from-buffer-or-name &optional
+ -- Function: insert-buffer-substring from-buffer-or-name &optional
           start end
      This function inserts a portion of buffer FROM-BUFFER-OR-NAME
      (which must already exist) into the current buffer before point.
@@ -6352,10 +6460,10 @@ buffer, inherit their text properties from the neighboring text.
           ---------- Buffer: foo ----------
           We hold these truths to be self-evident, that all
           ---------- Buffer: foo ----------
-          
+
           (insert-buffer-substring "foo" 1 20)
                => nil
-          
+
           ---------- Buffer: bar ----------
           We hold these truth-!-
           ---------- Buffer: bar ----------
@@ -6363,19 +6471,19 @@ buffer, inherit their text properties from the neighboring text.
 \1f
 File: lispref.info,  Node: Commands for Insertion,  Next: Deletion,  Prev: Insertion,  Up: Text
 
-User-Level Insertion Commands
-=============================
+43.5 User-Level Insertion Commands
+==================================
 
 This section describes higher-level commands for inserting text,
 commands intended primarily for the user but useful also in Lisp
 programs.
 
- - Command: insert-buffer from-buffer-or-name
+ -- Command: insert-buffer from-buffer-or-name
      This command inserts the entire contents of FROM-BUFFER-OR-NAME
      (which must exist) into the current buffer after point.  It leaves
      the mark after the inserted text.  The value is `nil'.
 
- - Command: self-insert-command count
+ -- Command: self-insert-command count
      This command inserts the last character typed; it does so COUNT
      times, before point, and returns `nil'.  Most printing characters
      are bound to this command.  In routine use, `self-insert-command'
@@ -6396,7 +6504,7 @@ programs.
      the inserted character has close parenthesis syntax (*note
      Blinking::).
 
- - Command: newline &optional count
+ -- Command: newline &optional count
      This command inserts newlines into the current buffer before point.
      If COUNT is supplied, that many newline characters are inserted.
 
@@ -6413,7 +6521,7 @@ programs.
      The value returned is `nil'.  In an interactive call, COUNT is the
      numeric prefix argument.
 
- - Command: split-line
+ -- Command: split-line
      This command splits the current line, moving the portion of the
      line after point down vertically so that it is on the next line
      directly below where it was before.  Whitespace is inserted as
@@ -6422,7 +6530,7 @@ programs.
 
      Programs hardly ever use this function.
 
- - Variable: overwrite-mode
+ -- Variable: overwrite-mode
      This variable controls whether overwrite mode is in effect: a
      non-`nil' value enables the mode.  It is automatically made
      buffer-local when set in any fashion.
@@ -6430,8 +6538,8 @@ programs.
 \1f
 File: lispref.info,  Node: Deletion,  Next: User-Level Deletion,  Prev: Commands for Insertion,  Up: Text
 
-Deleting Text
-=============
+43.6 Deleting Text
+==================
 
 Deletion means removing part of the text in a buffer, without saving it
 in the kill ring (*note The Kill Ring::).  Deleted text can't be
@@ -6442,7 +6550,7 @@ cases.
    All of the deletion functions operate on the current buffer, and all
 return a value of `nil'.
 
- - Command: erase-buffer &optional buffer
+ -- Command: erase-buffer &optional buffer
      This function deletes the entire text of BUFFER, leaving it empty.
      If the buffer is read-only, it signals a `buffer-read-only'
      error.  Otherwise, it deletes the text without asking for any
@@ -6455,12 +6563,12 @@ return a value of `nil'.
      future text is not really related to the former text, and its size
      should not be compared with that of the former text.
 
- - Command: delete-region start end &optional buffer
+ -- Command: delete-region start end &optional buffer
      This command deletes the text in BUFFER in the region defined by
      START and END.  The value is `nil'.  If optional argument BUFFER
      is `nil', the current buffer is assumed.
 
- - Command: delete-char &optional count killp
+ -- Command: delete-char &optional count killp
      This command deletes COUNT characters directly after point, or
      before point if COUNT is negative.  COUNT defaults to `1'.  If
      KILLP is non-`nil', then it saves the deleted characters in the
@@ -6474,7 +6582,7 @@ return a value of `nil'.
 
      The value returned is always `nil'.
 
- - Command: delete-backward-char &optional count killp
+ -- Command: delete-backward-char &optional count killp
      This command deletes COUNT characters directly before point, or
      after point if COUNT is negative.  COUNT defaults to 1.  If KILLP
      is non-`nil', then it saves the deleted characters in the kill
@@ -6488,7 +6596,7 @@ return a value of `nil'.
 
      The value returned is always `nil'.
 
- - Command: backward-delete-char-untabify count &optional killp
+ -- Command: backward-delete-char-untabify count &optional killp
      This command deletes COUNT characters backward, changing tabs into
      spaces.  When the next character to be deleted is a tab, it is
      first replaced with the proper number of spaces to preserve
@@ -6511,14 +6619,14 @@ return a value of `nil'.
 \1f
 File: lispref.info,  Node: User-Level Deletion,  Next: The Kill Ring,  Prev: Deletion,  Up: Text
 
-User-Level Deletion Commands
-============================
+43.7 User-Level Deletion Commands
+=================================
 
 This section describes higher-level commands for deleting text,
 commands intended primarily for the user but useful also in Lisp
 programs.
 
- - Command: delete-horizontal-space
+ -- Command: delete-horizontal-space
      This function deletes all spaces and tabs around point.  It returns
      `nil'.
 
@@ -6532,10 +6640,10 @@ programs.
           We-!- thought
           Yo-!-u thought
           ---------- Buffer: foo ----------
-          
+
           (delete-horizontal-space)   ; Four times.
                => nil
-          
+
           ---------- Buffer: foo ----------
           Ithought
           Ithought
@@ -6543,7 +6651,7 @@ programs.
           You thought
           ---------- Buffer: foo ----------
 
- - Command: delete-indentation &optional join-following-p
+ -- Command: delete-indentation &optional join-following-p
      This function joins the line point is on to the previous line,
      deleting any whitespace at the join and in some cases replacing it
      with one space.  If JOIN-FOLLOWING-P is non-`nil',
@@ -6562,10 +6670,10 @@ programs.
           When in the course of human
           -!-    events, it becomes necessary
           ---------- Buffer: foo ----------
-          
+
           (delete-indentation)
                => nil
-          
+
           ---------- Buffer: foo ----------
           When in the course of human-!- events, it becomes necessary
           ---------- Buffer: foo ----------
@@ -6573,7 +6681,7 @@ programs.
      After the lines are joined, the function `fixup-whitespace' is
      responsible for deciding whether to leave a space at the junction.
 
- - Command: fixup-whitespace
+ -- Command: fixup-whitespace
      This function replaces all the white space surrounding point with
      either one space or no space, according to the context.  It
      returns `nil'.
@@ -6592,22 +6700,22 @@ programs.
           This has too many     -!-spaces
           This has too many spaces at the start of (-!-   this list)
           ---------- Buffer: foo ----------
-          
+
           (fixup-whitespace)
                => nil
           (fixup-whitespace)
                => nil
-          
+
           ---------- Buffer: foo ----------
           This has too many spaces
           This has too many spaces at the start of (this list)
           ---------- Buffer: foo ----------
 
- - Command: just-one-space
+ -- Command: just-one-space
      This command replaces any spaces and tabs around point with a
      single space.  It returns `nil'.
 
- - Command: delete-blank-lines
+ -- Command: delete-blank-lines
      This function deletes blank lines surrounding point.  If point is
      on a blank line with one or more blank lines before or after it,
      then all but one of them are deleted.  If point is on an isolated
@@ -6621,8 +6729,8 @@ programs.
 \1f
 File: lispref.info,  Node: The Kill Ring,  Next: Undo,  Prev: User-Level Deletion,  Up: Text
 
-The Kill Ring
-=============
+43.8 The Kill Ring
+==================
 
 "Kill" functions delete text like the deletion functions, but save it
 so that the user can reinsert it by "yanking".  Most of these functions
@@ -6666,8 +6774,8 @@ would be difficult to change the terminology now.
 \1f
 File: lispref.info,  Node: Kill Ring Concepts,  Next: Kill Functions,  Up: The Kill Ring
 
-Kill Ring Concepts
-------------------
+43.8.1 Kill Ring Concepts
+-------------------------
 
 The kill ring records killed text as strings in a list, most recent
 first.  A short kill ring, for example, might look like this:
@@ -6692,8 +6800,8 @@ list.
 \1f
 File: lispref.info,  Node: Kill Functions,  Next: Yank Commands,  Prev: Kill Ring Concepts,  Up: The Kill Ring
 
-Functions for Killing
----------------------
+43.8.2 Functions for Killing
+----------------------------
 
 `kill-region' is the usual subroutine for killing text.  Any command
 that calls this function is a "kill command" (and should probably have
@@ -6703,7 +6811,7 @@ element.  It uses the `last-command' variable to determine whether the
 previous command was a kill command, and if so appends the killed text
 to the most recent entry.
 
- - Command: kill-region start end &optional verbose
+ -- Command: kill-region start end &optional verbose
      This function kills the text in the region defined by START and
      END.  The text is deleted but saved in the kill ring, along with
      its text properties.  The value is always `nil'.
@@ -6715,7 +6823,7 @@ to the most recent entry.
      This is convenient because it lets the user use all the kill
      commands to copy text into the kill ring from a read-only buffer.
 
- - Command: copy-region-as-kill start end
+ -- Command: copy-region-as-kill start end
      This command saves the region defined by START and END on the kill
      ring (including text properties), but does not delete the text
      from the buffer.  It returns `nil'.  It also indicates the extent
@@ -6733,13 +6841,13 @@ to the most recent entry.
 \1f
 File: lispref.info,  Node: Yank Commands,  Next: Low-Level Kill Ring,  Prev: Kill Functions,  Up: The Kill Ring
 
-Functions for Yanking
----------------------
+43.8.3 Functions for Yanking
+----------------------------
 
 "Yanking" means reinserting an entry of previously killed text from the
 kill ring.  The text properties are copied too.
 
- - Command: yank &optional arg
+ -- Command: yank &optional arg
      This command inserts before point the text in the first entry in
      the kill ring.  It positions the mark at the beginning of that
      text, and point at the end.
@@ -6755,7 +6863,7 @@ kill ring.  The text properties are copied too.
      `yank' does not alter the contents of the kill ring or rotate it.
      It returns `nil'.
 
- - Command: yank-pop arg
+ -- Command: yank-pop arg
      This command replaces the just-yanked entry from the kill ring
      with a different entry from the kill ring.
 
@@ -6780,15 +6888,15 @@ kill ring.  The text properties are copied too.
 \1f
 File: lispref.info,  Node: Low-Level Kill Ring,  Next: Internals of Kill Ring,  Prev: Yank Commands,  Up: The Kill Ring
 
-Low-Level Kill Ring
--------------------
+43.8.4 Low-Level Kill Ring
+--------------------------
 
 These functions and variables provide access to the kill ring at a lower
 level, but still convenient for use in Lisp programs.  They take care of
 interaction with X Window selections.  They do not exist in Emacs
 version 18.
 
- - Function: current-kill count &optional do-not-move
+ -- Function: current-kill count &optional do-not-move
      The function `current-kill' rotates the yanking pointer which
      designates the "front" of the kill ring by COUNT places (from newer
      kills to older ones), and returns the text at that place in the
@@ -6802,7 +6910,7 @@ version 18.
      `current-kill' calls the value of `interprogram-paste-function'
      (documented below) before consulting the kill ring.
 
- - Function: kill-new string &optional replace
+ -- Function: kill-new string &optional replace
      This function makes the text STRING the latest entry in the kill
      ring, and sets `kill-ring-yank-pointer' to point to it.
 
@@ -6814,13 +6922,13 @@ version 18.
      This function runs the functions on `kill-hooks', and also invokes
      the value of `interprogram-cut-function' (see below).
 
- - Function: kill-append string before-p
+ -- Function: kill-append string before-p
      This function appends the text STRING to the first entry in the
      kill ring.  Normally STRING goes at the end of the entry, but if
      BEFORE-P is non-`nil', it goes at the beginning.  This function
      also invokes the value of `interprogram-cut-function' (see below).
 
- - Variable: interprogram-paste-function
+ -- Variable: interprogram-paste-function
      This variable provides a way of transferring killed text from other
      programs, when you are using a window system.  Its value should be
      `nil' or a function of no arguments.
@@ -6834,7 +6942,7 @@ version 18.
      selection as the most recent kill, even if the selection belongs
      to another X client.  *Note X Selections::.
 
- - Variable: interprogram-cut-function
+ -- Variable: interprogram-cut-function
      This variable provides a way of communicating killed text to other
      programs, when you are using a window system.  Its value should be
      `nil' or a function of one argument.
@@ -6845,165 +6953,3 @@ version 18.
      The normal use of this hook is to set the X server's primary
      selection to the newly killed text.
 
-\1f
-File: lispref.info,  Node: Internals of Kill Ring,  Prev: Low-Level Kill Ring,  Up: The Kill Ring
-
-Internals of the Kill Ring
---------------------------
-
-The variable `kill-ring' holds the kill ring contents, in the form of a
-list of strings.  The most recent kill is always at the front of the
-list.
-
-   The `kill-ring-yank-pointer' variable points to a link in the kill
-ring list, whose CAR is the text to yank next.  We say it identifies
-the "front" of the ring.  Moving `kill-ring-yank-pointer' to a
-different link is called "rotating the kill ring".  We call the kill
-ring a "ring" because the functions that move the yank pointer wrap
-around from the end of the list to the beginning, or vice-versa.
-Rotation of the kill ring is virtual; it does not change the value of
-`kill-ring'.
-
-   Both `kill-ring' and `kill-ring-yank-pointer' are Lisp variables
-whose values are normally lists.  The word "pointer" in the name of the
-`kill-ring-yank-pointer' indicates that the variable's purpose is to
-identify one element of the list for use by the next yank command.
-
-   The value of `kill-ring-yank-pointer' is always `eq' to one of the
-links in the kill ring list.  The element it identifies is the CAR of
-that link.  Kill commands, which change the kill ring, also set this
-variable to the value of `kill-ring'.  The effect is to rotate the ring
-so that the newly killed text is at the front.
-
-   Here is a diagram that shows the variable `kill-ring-yank-pointer'
-pointing to the second entry in the kill ring `("some text" "a
-different piece of text" "yet older text")'.
-
-     kill-ring       kill-ring-yank-pointer
-       |               |
-       |     ___ ___    --->  ___ ___      ___ ___
-        --> |___|___|------> |___|___|--> |___|___|--> nil
-              |                |            |
-              |                |            |
-              |                |             -->"yet older text"
-              |                |
-              |                 --> "a different piece of text"
-              |
-               --> "some text"
-
-This state of affairs might occur after `C-y' (`yank') immediately
-followed by `M-y' (`yank-pop').
-
- - Variable: kill-ring
-     This variable holds the list of killed text sequences, most
-     recently killed first.
-
- - Variable: kill-ring-yank-pointer
-     This variable's value indicates which element of the kill ring is
-     at the "front" of the ring for yanking.  More precisely, the value
-     is a tail of the value of `kill-ring', and its CAR is the kill
-     string that `C-y' should yank.
-
- - User Option: kill-ring-max
-     The value of this variable is the maximum length to which the kill
-     ring can grow, before elements are thrown away at the end.  The
-     default value for `kill-ring-max' is 30.
-
-\1f
-File: lispref.info,  Node: Undo,  Next: Maintaining Undo,  Prev: The Kill Ring,  Up: Text
-
-Undo
-====
-
-Most buffers have an "undo list", which records all changes made to the
-buffer's text so that they can be undone.  (The buffers that don't have
-one are usually special-purpose buffers for which XEmacs assumes that
-undoing is not useful.)  All the primitives that modify the text in the
-buffer automatically add elements to the front of the undo list, which
-is in the variable `buffer-undo-list'.
-
- - Variable: buffer-undo-list
-     This variable's value is the undo list of the current buffer.  A
-     value of `t' disables the recording of undo information.
-
-   Here are the kinds of elements an undo list can have:
-
-`INTEGER'
-     This kind of element records a previous value of point.  Ordinary
-     cursor motion does not get any sort of undo record, but deletion
-     commands use these entries to record where point was before the
-     command.
-
-`(START . END)'
-     This kind of element indicates how to delete text that was
-     inserted.  Upon insertion, the text occupied the range START-END
-     in the buffer.
-
-`(TEXT . POSITION)'
-     This kind of element indicates how to reinsert text that was
-     deleted.  The deleted text itself is the string TEXT.  The place to
-     reinsert it is `(abs POSITION)'.
-
-`(t HIGH . LOW)'
-     This kind of element indicates that an unmodified buffer became
-     modified.  The elements HIGH and LOW are two integers, each
-     recording 16 bits of the visited file's modification time as of
-     when it was previously visited or saved.  `primitive-undo' uses
-     those values to determine whether to mark the buffer as unmodified
-     once again; it does so only if the file's modification time
-     matches those numbers.
-
-`(nil PROPERTY VALUE START . END)'
-     This kind of element records a change in a text property.  Here's
-     how you might undo the change:
-
-          (put-text-property START END PROPERTY VALUE)
-
-`POSITION'
-     This element indicates where point was at an earlier time.
-     Undoing this element sets point to POSITION.  Deletion normally
-     creates an element of this kind as well as a reinsertion element.
-
-`nil'
-     This element is a boundary.  The elements between two boundaries
-     are called a "change group"; normally, each change group
-     corresponds to one keyboard command, and undo commands normally
-     undo an entire group as a unit.
-
- - Function: undo-boundary
-     This function places a boundary element in the undo list.  The undo
-     command stops at such a boundary, and successive undo commands undo
-     to earlier and earlier boundaries.  This function returns `nil'.
-
-     The editor command loop automatically creates an undo boundary
-     before each key sequence is executed.  Thus, each undo normally
-     undoes the effects of one command.  Self-inserting input
-     characters are an exception.  The command loop makes a boundary
-     for the first such character; the next 19 consecutive
-     self-inserting input characters do not make boundaries, and then
-     the 20th does, and so on as long as self-inserting characters
-     continue.
-
-     All buffer modifications add a boundary whenever the previous
-     undoable change was made in some other buffer.  This way, a
-     command that modifies several buffers makes a boundary in each
-     buffer it changes.
-
-     Calling this function explicitly is useful for splitting the
-     effects of a command into more than one unit.  For example,
-     `query-replace' calls `undo-boundary' after each replacement, so
-     that the user can undo individual replacements one by one.
-
- - Function: primitive-undo count list
-     This is the basic function for undoing elements of an undo list.
-     It undoes the first COUNT elements of LIST, returning the rest of
-     LIST.  You could write this function in Lisp, but it is convenient
-     to have it in C.
-
-     `primitive-undo' adds elements to the buffer's undo list when it
-     changes the buffer.  Undo commands avoid confusion by saving the
-     undo list value at the beginning of a sequence of undo operations.
-     Then the undo operations use and update the saved value.  The new
-     elements added by undoing are not part of this saved value, so
-     they don't interfere with continuing to undo.
-
index ed9d846..8889a4f 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -50,10 +50,172 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Internals of Kill Ring,  Prev: Low-Level Kill Ring,  Up: The Kill Ring
+
+43.8.5 Internals of the Kill Ring
+---------------------------------
+
+The variable `kill-ring' holds the kill ring contents, in the form of a
+list of strings.  The most recent kill is always at the front of the
+list.
+
+   The `kill-ring-yank-pointer' variable points to a link in the kill
+ring list, whose CAR is the text to yank next.  We say it identifies
+the "front" of the ring.  Moving `kill-ring-yank-pointer' to a
+different link is called "rotating the kill ring".  We call the kill
+ring a "ring" because the functions that move the yank pointer wrap
+around from the end of the list to the beginning, or vice-versa.
+Rotation of the kill ring is virtual; it does not change the value of
+`kill-ring'.
+
+   Both `kill-ring' and `kill-ring-yank-pointer' are Lisp variables
+whose values are normally lists.  The word "pointer" in the name of the
+`kill-ring-yank-pointer' indicates that the variable's purpose is to
+identify one element of the list for use by the next yank command.
+
+   The value of `kill-ring-yank-pointer' is always `eq' to one of the
+links in the kill ring list.  The element it identifies is the CAR of
+that link.  Kill commands, which change the kill ring, also set this
+variable to the value of `kill-ring'.  The effect is to rotate the ring
+so that the newly killed text is at the front.
+
+   Here is a diagram that shows the variable `kill-ring-yank-pointer'
+pointing to the second entry in the kill ring `("some text" "a
+different piece of text" "yet older text")'.
+
+     kill-ring       kill-ring-yank-pointer
+       |               |
+       |     ___ ___    --->  ___ ___      ___ ___
+        --> |___|___|------> |___|___|--> |___|___|--> nil
+              |                |            |
+              |                |            |
+              |                |             -->"yet older text"
+              |                |
+              |                 --> "a different piece of text"
+              |
+               --> "some text"
+
+This state of affairs might occur after `C-y' (`yank') immediately
+followed by `M-y' (`yank-pop').
+
+ -- Variable: kill-ring
+     This variable holds the list of killed text sequences, most
+     recently killed first.
+
+ -- Variable: kill-ring-yank-pointer
+     This variable's value indicates which element of the kill ring is
+     at the "front" of the ring for yanking.  More precisely, the value
+     is a tail of the value of `kill-ring', and its CAR is the kill
+     string that `C-y' should yank.
+
+ -- User Option: kill-ring-max
+     The value of this variable is the maximum length to which the kill
+     ring can grow, before elements are thrown away at the end.  The
+     default value for `kill-ring-max' is 30.
+
+\1f
+File: lispref.info,  Node: Undo,  Next: Maintaining Undo,  Prev: The Kill Ring,  Up: Text
+
+43.9 Undo
+=========
+
+Most buffers have an "undo list", which records all changes made to the
+buffer's text so that they can be undone.  (The buffers that don't have
+one are usually special-purpose buffers for which XEmacs assumes that
+undoing is not useful.)  All the primitives that modify the text in the
+buffer automatically add elements to the front of the undo list, which
+is in the variable `buffer-undo-list'.
+
+ -- Variable: buffer-undo-list
+     This variable's value is the undo list of the current buffer.  A
+     value of `t' disables the recording of undo information.
+
+   Here are the kinds of elements an undo list can have:
+
+`INTEGER'
+     This kind of element records a previous value of point.  Ordinary
+     cursor motion does not get any sort of undo record, but deletion
+     commands use these entries to record where point was before the
+     command.
+
+`(START . END)'
+     This kind of element indicates how to delete text that was
+     inserted.  Upon insertion, the text occupied the range START-END
+     in the buffer.
+
+`(TEXT . POSITION)'
+     This kind of element indicates how to reinsert text that was
+     deleted.  The deleted text itself is the string TEXT.  The place to
+     reinsert it is `(abs POSITION)'.
+
+`(t HIGH . LOW)'
+     This kind of element indicates that an unmodified buffer became
+     modified.  The elements HIGH and LOW are two integers, each
+     recording 16 bits of the visited file's modification time as of
+     when it was previously visited or saved.  `primitive-undo' uses
+     those values to determine whether to mark the buffer as unmodified
+     once again; it does so only if the file's modification time
+     matches those numbers.
+
+`(nil PROPERTY VALUE START . END)'
+     This kind of element records a change in a text property.  Here's
+     how you might undo the change:
+
+          (put-text-property START END PROPERTY VALUE)
+
+`POSITION'
+     This element indicates where point was at an earlier time.
+     Undoing this element sets point to POSITION.  Deletion normally
+     creates an element of this kind as well as a reinsertion element.
+
+`nil'
+     This element is a boundary.  The elements between two boundaries
+     are called a "change group"; normally, each change group
+     corresponds to one keyboard command, and undo commands normally
+     undo an entire group as a unit.
+
+ -- Function: undo-boundary
+     This function places a boundary element in the undo list.  The undo
+     command stops at such a boundary, and successive undo commands undo
+     to earlier and earlier boundaries.  This function returns `nil'.
+
+     The editor command loop automatically creates an undo boundary
+     before each key sequence is executed.  Thus, each undo normally
+     undoes the effects of one command.  Self-inserting input
+     characters are an exception.  The command loop makes a boundary
+     for the first such character; the next 19 consecutive
+     self-inserting input characters do not make boundaries, and then
+     the 20th does, and so on as long as self-inserting characters
+     continue.
+
+     All buffer modifications add a boundary whenever the previous
+     undoable change was made in some other buffer.  This way, a
+     command that modifies several buffers makes a boundary in each
+     buffer it changes.
+
+     Calling this function explicitly is useful for splitting the
+     effects of a command into more than one unit.  For example,
+     `query-replace' calls `undo-boundary' after each replacement, so
+     that the user can undo individual replacements one by one.
+
+ -- Function: primitive-undo count list
+     This is the basic function for undoing elements of an undo list.
+     It undoes the first COUNT elements of LIST, returning the rest of
+     LIST.  You could write this function in Lisp, but it is convenient
+     to have it in C.
+
+     `primitive-undo' adds elements to the buffer's undo list when it
+     changes the buffer.  Undo commands avoid confusion by saving the
+     undo list value at the beginning of a sequence of undo operations.
+     Then the undo operations use and update the saved value.  The new
+     elements added by undoing are not part of this saved value, so
+     they don't interfere with continuing to undo.
+
+\1f
 File: lispref.info,  Node: Maintaining Undo,  Next: Filling,  Prev: Undo,  Up: Text
 
-Maintaining Undo Lists
-======================
+43.10 Maintaining Undo Lists
+============================
 
 This section describes how to enable and disable undo information for a
 given buffer.  It also explains how the undo list is truncated
@@ -65,7 +227,7 @@ undo recording is initially disabled.  You can explicitly enable or
 disable undo recording with the following two functions, or by setting
 `buffer-undo-list' yourself.
 
- - Command: buffer-enable-undo &optional buffer-or-name
+ -- Command: buffer-enable-undo &optional buffer-or-name
      This command enables recording undo information for buffer
      BUFFER-OR-NAME, so that subsequent changes can be undone.  If no
      argument is supplied, then the current buffer is used.  This
@@ -75,8 +237,8 @@ disable undo recording with the following two functions, or by setting
      In an interactive call, BUFFER-OR-NAME is the current buffer.  You
      cannot specify any other buffer.
 
- - Command: buffer-disable-undo &optional buffer
- - Command: buffer-flush-undo &optional buffer
+ -- Command: buffer-disable-undo &optional buffer
+ -- Command: buffer-flush-undo &optional buffer
      This function discards the undo list of BUFFER, and disables
      further recording of undo information.  As a result, it is no
      longer possible to undo either previous changes or any subsequent
@@ -96,12 +258,12 @@ an undo list measures the cons cells that make up the list, plus the
 strings of deleted text.)  Two variables control the range of acceptable
 sizes: `undo-limit' and `undo-strong-limit'.
 
- - Variable: undo-limit
+ -- Variable: undo-limit
      This is the soft limit for the acceptable size of an undo list.
      The change group at which this size is exceeded is the last one
      kept.
 
- - Variable: undo-strong-limit
+ -- Variable: undo-strong-limit
      This is the upper limit for the acceptable size of an undo list.
      The change group at which this size is exceeded is discarded
      itself (along with all older change groups).  There is one
@@ -111,8 +273,8 @@ sizes: `undo-limit' and `undo-strong-limit'.
 \1f
 File: lispref.info,  Node: Filling,  Next: Margins,  Prev: Maintaining Undo,  Up: Text
 
-Filling
-=======
+43.11 Filling
+=============
 
 "Filling" means adjusting the lengths of lines (by moving the line
 breaks) so that they are nearly (but no greater than) a specified
@@ -141,20 +303,20 @@ justification style for this part of the text (see
    When you call the filling functions interactively, using a prefix
 argument implies the value `full' for JUSTIFY.
 
- - Command: fill-paragraph justify
+ -- Command: fill-paragraph justify
      This command fills the paragraph at or after point.  If JUSTIFY is
      non-`nil', each line is justified as well.  It uses the ordinary
      paragraph motion commands to find paragraph boundaries.  *Note
      Paragraphs: (xemacs)Paragraphs.
 
- - Command: fill-region start end &optional justify
+ -- Command: fill-region start end &optional justify
      This command fills each of the paragraphs in the region from START
      to END.  It justifies as well if JUSTIFY is non-`nil'.
 
      The variable `paragraph-separate' controls how to distinguish
      paragraphs.  *Note Standard Regexps::.
 
- - Command: fill-individual-paragraphs start end &optional justify
+ -- Command: fill-individual-paragraphs start end &optional justify
           mail-flag
      This command fills each paragraph in the region according to its
      individual fill prefix.  Thus, if the lines of a paragraph were
@@ -174,11 +336,11 @@ argument implies the value `full' for JUSTIFY.
      lines separate paragraphs.  That mode can handle indented
      paragraphs with additional indentation on the first line.
 
- - User Option: fill-individual-varying-indent
+ -- User Option: fill-individual-varying-indent
      This variable alters the action of `fill-individual-paragraphs' as
      described above.
 
- - Command: fill-region-as-paragraph start end &optional justify
+ -- Command: fill-region-as-paragraph start end &optional justify
      This command considers a region of text as a paragraph and fills
      it.  If the region was made up of many paragraphs, the blank lines
      between paragraphs are removed.  This function justifies as well
@@ -191,7 +353,7 @@ argument implies the value `full' for JUSTIFY.
      no fill prefix uses the indentation of the second line of the
      paragraph as the fill prefix.
 
- - Command: justify-current-line how eop nosqueeze
+ -- Command: justify-current-line how eop nosqueeze
      This command inserts spaces between the words of the current line
      so that the line ends exactly at `fill-column'.  It returns `nil'.
 
@@ -209,17 +371,17 @@ argument implies the value `full' for JUSTIFY.
      If NOSQUEEZE is non-`nil', that means do not change interior
      whitespace.
 
- - User Option: default-justification
+ -- User Option: default-justification
      This variable's value specifies the style of justification to use
      for text that doesn't specify a style with a text property.  The
      possible values are `left', `right', `full', `center', or `none'.
      The default value is `left'.
 
- - Function: current-justification
+ -- Function: current-justification
      This function returns the proper justification style to use for
      filling the text around point.
 
- - Variable: fill-paragraph-function
+ -- Variable: fill-paragraph-function
      This variable provides a way for major modes to override the
      filling of paragraphs.  If the value is non-`nil',
      `fill-paragraph' calls this function to do the work.  If the
@@ -233,7 +395,7 @@ argument implies the value `full' for JUSTIFY.
           (let ((fill-paragraph-function nil))
             (fill-paragraph arg))
 
- - Variable: use-hard-newlines
+ -- Variable: use-hard-newlines
      If this variable is non-`nil', the filling functions do not delete
      newlines that have the `hard' text property.  These "hard
      newlines" act as paragraph separators.
@@ -241,10 +403,10 @@ argument implies the value `full' for JUSTIFY.
 \1f
 File: lispref.info,  Node: Margins,  Next: Auto Filling,  Prev: Filling,  Up: Text
 
-Margins for Filling
-===================
+43.12 Margins for Filling
+=========================
 
- - User Option: fill-prefix
+ -- User Option: fill-prefix
      This variable specifies a string of text that appears at the
      beginning of normal text lines and should be disregarded when
      filling them.  Any line that fails to start with the fill prefix
@@ -256,7 +418,7 @@ Margins for Filling
 
      The fill prefix follows the left margin whitespace, if any.
 
- - User Option: fill-column
+ -- User Option: fill-column
      This buffer-local variable specifies the maximum width of filled
      lines.  Its value should be an integer, which is a number of
      columns.  All the filling, justification and centering commands
@@ -268,37 +430,37 @@ Margins for Filling
      the line will be too long for people to read comfortably, and this
      can make the text seem clumsy.
 
- - Variable: default-fill-column
+ -- Variable: default-fill-column
      The value of this variable is the default value for `fill-column'
      in buffers that do not override it.  This is the same as
      `(default-value 'fill-column)'.
 
      The default value for `default-fill-column' is 70.
 
- - Command: set-left-margin from to margin
+ -- Command: set-left-margin from to margin
      This sets the `left-margin' property on the text from FROM to TO
      to the value MARGIN.  If Auto Fill mode is enabled, this command
      also refills the region to fit the new margin.
 
- - Command: set-right-margin from to margin
+ -- Command: set-right-margin from to margin
      This sets the `right-margin' property on the text from FROM to TO
      to the value MARGIN.  If Auto Fill mode is enabled, this command
      also refills the region to fit the new margin.
 
- - Function: current-left-margin
+ -- Function: current-left-margin
      This function returns the proper left margin value to use for
      filling the text around point.  The value is the sum of the
      `left-margin' property of the character at the start of the
      current line (or zero if none), and the value of the variable
      `left-margin'.
 
- - Function: current-fill-column
+ -- Function: current-fill-column
      This function returns the proper fill column value to use for
      filling the text around point.  The value is the value of the
      `fill-column' variable, minus the value of the `right-margin'
      property of the character after point.
 
- - Command: move-to-left-margin &optional n force
+ -- Command: move-to-left-margin &optional n force
      This function moves point to the left margin of the current line.
      The column moved to is determined by calling the function
      `current-left-margin'.  If the argument N is non-`nil',
@@ -307,7 +469,7 @@ Margins for Filling
      If FORCE is non-`nil', that says to fix the line's indentation if
      that doesn't match the left margin value.
 
- - Function: delete-to-left-margin &optional from to
+ -- Function: delete-to-left-margin &optional from to
      This function removes left margin indentation from the text
      between FROM and TO.  The amount of indentation to delete is
      determined by calling `current-left-margin'.  In no case does this
@@ -316,14 +478,14 @@ Margins for Filling
      The arguments FROM and TO are optional; the default is the whole
      buffer.
 
- - Function: indent-to-left-margin
+ -- Function: indent-to-left-margin
      This is the default `indent-line-function', used in Fundamental
      mode, Text mode, etc.  Its effect is to adjust the indentation at
      the beginning of the current line to the value specified by the
      variable `left-margin'.  This may involve either inserting or
      deleting whitespace.
 
- - Variable: left-margin
+ -- Variable: left-margin
      This variable specifies the base left margin column.  In
      Fundamental mode, <LFD> indents to this column.  This variable
      automatically becomes buffer-local when set in any fashion.
@@ -331,8 +493,8 @@ Margins for Filling
 \1f
 File: lispref.info,  Node: Auto Filling,  Next: Sorting,  Prev: Margins,  Up: Text
 
-Auto Filling
-============
+43.13 Auto Filling
+==================
 
 Auto Fill mode is a minor mode that fills lines automatically as text
 is inserted.  This section describes the hook used by Auto Fill mode.
@@ -342,7 +504,7 @@ justify existing text, see *Note Filling::.
    Auto Fill mode also enables the functions that change the margins and
 justification style to refill portions of the text.  *Note Margins::.
 
- - Variable: auto-fill-function
+ -- Variable: auto-fill-function
      The value of this variable should be a function (of no arguments)
      to be called after self-inserting a space or a newline.  It may be
      `nil', in which case nothing special is done in that case.
@@ -359,15 +521,15 @@ justification style to refill portions of the text.  *Note Margins::.
 \1f
 File: lispref.info,  Node: Sorting,  Next: Columns,  Prev: Auto Filling,  Up: Text
 
-Sorting Text
-============
+43.14 Sorting Text
+==================
 
 The sorting functions described in this section all rearrange text in a
 buffer.  This is in contrast to the function `sort', which rearranges
 the order of the elements of a list (*note Rearrangement::).  The
 values returned by these functions are not meaningful.
 
- - Function: sort-subr reverse nextrecfun endrecfun &optional
+ -- Function: sort-subr reverse nextrecfun endrecfun &optional
           startkeyfun endkeyfun
      This function is the general text-sorting routine that divides a
      buffer into records and sorts them.  Most of the commands in this
@@ -450,7 +612,7 @@ values returned by these functions are not meaningful.
                         (skip-chars-forward "\n \t\f")))
                      'forward-paragraph)
 
- - Command: sort-regexp-fields reverse record-regexp key-regexp start
+ -- Command: sort-regexp-fields reverse record-regexp key-regexp start
           end
      This command sorts the region between START and END alphabetically
      as specified by RECORD-REGEXP and KEY-REGEXP.  If REVERSE is a
@@ -513,29 +675,29 @@ values returned by these functions are not meaningful.
      If you call `sort-regexp-fields' interactively, it prompts for
      RECORD-REGEXP and KEY-REGEXP in the minibuffer.
 
- - Command: sort-lines reverse start end
+ -- Command: sort-lines reverse start end
      This command alphabetically sorts lines in the region between
      START and END.  If REVERSE is non-`nil', the sort is in reverse
      order.
 
- - Command: sort-paragraphs reverse start end
+ -- Command: sort-paragraphs reverse start end
      This command alphabetically sorts paragraphs in the region between
      START and END.  If REVERSE is non-`nil', the sort is in reverse
      order.
 
- - Command: sort-pages reverse start end
+ -- Command: sort-pages reverse start end
      This command alphabetically sorts pages in the region between
      START and END.  If REVERSE is non-`nil', the sort is in reverse
      order.
 
- - Command: sort-fields field start end
+ -- Command: sort-fields field start end
      This command sorts lines in the region between START and END,
      comparing them alphabetically by the FIELDth field of each line.
      Fields are separated by whitespace and numbered starting from 1.
      If FIELD is negative, sorting is by the -FIELDth field from the
      end of the line.  This command is useful for sorting tables.
 
- - Command: sort-numeric-fields field start end
+ -- Command: sort-numeric-fields field start end
      This command sorts lines in the region between START and END,
      comparing them numerically by the FIELDth field of each line.  The
      specified field must contain a number in each line of the region.
@@ -543,7 +705,7 @@ values returned by these functions are not meaningful.
      If FIELD is negative, sorting is by the -FIELDth field from the
      end of the line.  This command is useful for sorting tables.
 
- - Command: sort-columns reverse &optional start end
+ -- Command: sort-columns reverse &optional start end
      This command sorts the lines in the region between START and END,
      comparing them alphabetically by a certain range of columns.  The
      column positions of START and END bound the range of columns to
@@ -562,8 +724,8 @@ values returned by these functions are not meaningful.
 \1f
 File: lispref.info,  Node: Columns,  Next: Indentation,  Prev: Sorting,  Up: Text
 
-Counting Columns
-================
+43.15 Counting Columns
+======================
 
 The column functions convert between a character position (counting
 characters from the beginning of the buffer) and a column position
@@ -579,7 +741,7 @@ and on the column where the tab begins.  *Note Usual Display::.
 amount of horizontal scrolling.  Consequently, a column value can be
 arbitrarily high.  The first (or leftmost) column is numbered 0.
 
- - Function: current-column &optional buffer
+ -- Function: current-column &optional buffer
      This function returns the horizontal position of point, measured in
      columns, counting from 0 at the left margin.
 
@@ -601,7 +763,7 @@ arbitrarily high.  The first (or leftmost) column is numbered 0.
      For an example of using `current-column', see the description of
      `count-lines' in *Note Text Lines::.
 
- - Function: move-to-column column &optional force buffer
+ -- Function: move-to-column column &optional force buffer
      This function moves point to COLUMN in the current line.  The
      calculation of COLUMN takes into account the widths of the
      displayed representations of the characters between the start of
@@ -631,8 +793,8 @@ arbitrarily high.  The first (or leftmost) column is numbered 0.
 \1f
 File: lispref.info,  Node: Indentation,  Next: Case Changes,  Prev: Columns,  Up: Text
 
-Indentation
-===========
+43.16 Indentation
+=================
 
 The indentation functions are used to examine, move to, and change
 whitespace that is at the beginning of a line.  Some of the functions
@@ -651,20 +813,20 @@ count from zero at the left margin.
 \1f
 File: lispref.info,  Node: Primitive Indent,  Next: Mode-Specific Indent,  Up: Indentation
 
-Indentation Primitives
-----------------------
+43.16.1 Indentation Primitives
+------------------------------
 
 This section describes the primitive functions used to count and insert
 indentation.  The functions in the following sections use these
 primitives.
 
- - Function: current-indentation &optional buffer
+ -- Function: current-indentation &optional buffer
      This function returns the indentation of the current line, which is
      the horizontal position of the first nonblank character.  If the
      contents are entirely blank, then this is the horizontal position
      of the end of the line.
 
- - Command: indent-to column &optional minimum buffer
+ -- Command: indent-to column &optional minimum buffer
      This function indents from point with tabs and spaces until COLUMN
      is reached.  If MINIMUM is specified and non-`nil', then at least
      that many spaces are inserted even if this requires going beyond
@@ -673,7 +835,7 @@ primitives.
      indentation ends.  If BUFFER is `nil', the current buffer is
      assumed.
 
- - User Option: indent-tabs-mode
+ -- User Option: indent-tabs-mode
      If this variable is non-`nil', indentation functions can insert
      tabs as well as spaces.  Otherwise, they insert only spaces.
      Setting this variable automatically makes it local to the current
@@ -682,15 +844,15 @@ primitives.
 \1f
 File: lispref.info,  Node: Mode-Specific Indent,  Next: Region Indent,  Prev: Primitive Indent,  Up: Indentation
 
-Indentation Controlled by Major Mode
-------------------------------------
+43.16.2 Indentation Controlled by Major Mode
+--------------------------------------------
 
 An important function of each major mode is to customize the <TAB> key
 to indent properly for the language being edited.  This section
 describes the mechanism of the <TAB> key and how to control it.  The
 functions in this section return unpredictable values.
 
- - Variable: indent-line-function
+ -- Variable: indent-line-function
      This variable's value is the function to be used by <TAB> (and
      various commands) to indent the current line.  The command
      `indent-according-to-mode' does no more than call this function.
@@ -701,18 +863,18 @@ functions in this section return unpredictable values.
      for indentation, the value is `indent-to-left-margin' (which is the
      default value).
 
- - Command: indent-according-to-mode
+ -- Command: indent-according-to-mode
      This command calls the function in `indent-line-function' to
      indent the current line in a way appropriate for the current major
      mode.
 
- - Command: indent-for-tab-command &optional prefix-arg
+ -- Command: indent-for-tab-command &optional prefix-arg
      This command calls the function in `indent-line-function' to indent
      the current line; except that if that function is
      `indent-to-left-margin', it calls `insert-tab' instead.  (That is
      a trivial command that inserts a tab character.)
 
- - Command: newline-and-indent
+ -- Command: newline-and-indent
      This function inserts a newline, then indents the new line (the one
      following the newline just inserted) according to the major mode.
 
@@ -722,7 +884,7 @@ functions in this section return unpredictable values.
      `newline-and-indent' indents to the column specified by
      `left-margin'.
 
- - Command: reindent-then-newline-and-indent
+ -- Command: reindent-then-newline-and-indent
      This command reindents the current line, inserts a newline at
      point, and then reindents the new line (the one following the
      newline just inserted).
@@ -737,13 +899,13 @@ functions in this section return unpredictable values.
 \1f
 File: lispref.info,  Node: Region Indent,  Next: Relative Indent,  Prev: Mode-Specific Indent,  Up: Indentation
 
-Indenting an Entire Region
---------------------------
+43.16.3 Indenting an Entire Region
+----------------------------------
 
 This section describes commands that indent all the lines in the
 region.  They return unpredictable values.
 
- - Command: indent-region start end to-column
+ -- Command: indent-region start end to-column
      This command indents each nonblank line starting between START
      (inclusive) and END (exclusive).  If TO-COLUMN is `nil',
      `indent-region' indents each nonblank line by calling the current
@@ -757,7 +919,7 @@ region.  They return unpredictable values.
      If there is a fill prefix, `indent-region' indents each line by
      making it start with the fill prefix.
 
- - Variable: indent-region-function
+ -- Variable: indent-region-function
      The value of this variable is a function that can be used by
      `indent-region' as a short cut.  You should design the function so
      that it will produce the same results as indenting the lines of the
@@ -777,7 +939,7 @@ region.  They return unpredictable values.
      `indent-region' with a non-`nil' argument TO-COLUMN has a
      different meaning and does not use this variable.
 
- - Command: indent-rigidly start end count
+ -- Command: indent-rigidly start end count
      This command indents all lines starting between START (inclusive)
      and END (exclusive) sideways by COUNT columns.  This "preserves
      the shape" of the affected region, moving it as a rigid unit.
@@ -792,7 +954,7 @@ region.  They return unpredictable values.
      `indent-rigidly' to indent the text copied from the message being
      replied to.
 
- - Command: indent-code-rigidly start end columns &optional
+ -- Command: indent-code-rigidly start end columns &optional
           nochange-regexp
      This is like `indent-rigidly', except that it doesn't alter lines
      that start within strings or comments.
@@ -803,13 +965,13 @@ region.  They return unpredictable values.
 \1f
 File: lispref.info,  Node: Relative Indent,  Next: Indent Tabs,  Prev: Region Indent,  Up: Indentation
 
-Indentation Relative to Previous Lines
---------------------------------------
+43.16.4 Indentation Relative to Previous Lines
+----------------------------------------------
 
 This section describes two commands that indent the current line based
 on the contents of previous lines.
 
- - Command: indent-relative &optional unindented-ok
+ -- Command: indent-relative &optional unindented-ok
      This command inserts whitespace at point, extending to the same
      column as the next "indent point" of the previous nonblank line.
      An indent point is a non-whitespace character following
@@ -850,7 +1012,7 @@ on the contents of previous lines.
                       This line is indented twelve spaces.
           The quick brown fox jum  -!-ped.
 
- - Command: indent-relative-maybe
+ -- Command: indent-relative-maybe
      This command indents the current line like the previous nonblank
      line.  It calls `indent-relative' with `t' as the UNINDENTED-OK
      argument.  The return value is unpredictable.
@@ -861,8 +1023,8 @@ on the contents of previous lines.
 \1f
 File: lispref.info,  Node: Indent Tabs,  Next: Motion by Indent,  Prev: Relative Indent,  Up: Indentation
 
-Adjustable "Tab Stops"
-----------------------
+43.16.5 Adjustable "Tab Stops"
+------------------------------
 
 This section explains the mechanism for user-specified "tab stops" and
 the mechanisms that use and set them.  The name "tab stops" is used
@@ -873,14 +1035,14 @@ affect the display of tab characters in the buffer (*note Usual
 Display::).  Note that the <TAB> character as input uses this tab stop
 feature only in a few major modes, such as Text mode.
 
- - Command: tab-to-tab-stop
+ -- Command: tab-to-tab-stop
      This command inserts spaces or tabs up to the next tab stop column
      defined by `tab-stop-list'.  It searches the list for an element
      greater than the current column number, and uses that element as
      the column to indent to.  It does nothing if no such element is
      found.
 
- - User Option: tab-stop-list
+ -- User Option: tab-stop-list
      This variable is the list of tab stop columns used by
      `tab-to-tab-stops'.  The elements should be integers in increasing
      order.  The tab stop columns need not be evenly spaced.
@@ -891,37 +1053,37 @@ feature only in a few major modes, such as Text mode.
 \1f
 File: lispref.info,  Node: Motion by Indent,  Prev: Indent Tabs,  Up: Indentation
 
-Indentation-Based Motion Commands
----------------------------------
+43.16.6 Indentation-Based Motion Commands
+-----------------------------------------
 
 These commands, primarily for interactive use, act based on the
 indentation in the text.
 
- - Command: back-to-indentation
+ -- Command: back-to-indentation
      This command moves point to the first non-whitespace character in
      the current line (which is the line in which point is located).
      It returns `nil'.
 
- - Command: backward-to-indentation arg
+ -- Command: backward-to-indentation arg
      This command moves point backward ARG lines and then to the first
      nonblank character on that line.  It returns `nil'.
 
- - Command: forward-to-indentation arg
+ -- Command: forward-to-indentation arg
      This command moves point forward ARG lines and then to the first
      nonblank character on that line.  It returns `nil'.
 
 \1f
 File: lispref.info,  Node: Case Changes,  Next: Text Properties,  Prev: Indentation,  Up: Text
 
-Case Changes
-============
+43.17 Case Changes
+==================
 
 The case change commands described here work on text in the current
 buffer.  *Note Character Case::, for case conversion commands that work
 on strings and characters.  *Note Case Tables::, for how to customize
 which characters are upper or lower case and how to convert them.
 
- - Command: capitalize-region start end &optional buffer
+ -- Command: capitalize-region start end &optional buffer
      This function capitalizes all words in the region defined by START
      and END.  To capitalize means to convert each word's first
      character to upper case and convert the rest of each word to lower
@@ -936,29 +1098,29 @@ which characters are upper or lower case and how to convert them.
           ---------- Buffer: foo ----------
           This is the contents of the 5th foo.
           ---------- Buffer: foo ----------
-          
+
           (capitalize-region 1 44)
           => nil
-          
+
           ---------- Buffer: foo ----------
           This Is The Contents Of The 5th Foo.
           ---------- Buffer: foo ----------
 
- - Command: downcase-region start end &optional buffer
+ -- Command: downcase-region start end &optional buffer
      This function converts all of the letters in the region defined by
      START and END to lower case.  The function returns `nil'.
 
      When `downcase-region' is called interactively, START and END are
      point and the mark, with the smallest first.
 
- - Command: upcase-region start end &optional buffer
+ -- Command: upcase-region start end &optional buffer
      This function converts all of the letters in the region defined by
      START and END to upper case.  The function returns `nil'.
 
      When `upcase-region' is called interactively, START and END are
      point and the mark, with the smallest first.
 
- - Command: capitalize-word count &optional buffer
+ -- Command: capitalize-word count &optional buffer
      This function capitalizes COUNT words after point, moving point
      over as it does.  To capitalize means to convert each word's first
      character to upper case and convert the rest of each word to lower
@@ -972,7 +1134,7 @@ which characters are upper or lower case and how to convert them.
      When `capitalize-word' is called interactively, COUNT is set to
      the numeric prefix argument.
 
- - Command: downcase-word count &optional buffer
+ -- Command: downcase-word count &optional buffer
      This function converts the COUNT words after point to all lower
      case, moving point over as it does.  If COUNT is negative, it
      converts the -COUNT previous words but does not move point.  The
@@ -981,7 +1143,7 @@ which characters are upper or lower case and how to convert them.
      When `downcase-word' is called interactively, COUNT is set to the
      numeric prefix argument.
 
- - Command: upcase-word count &optional buffer
+ -- Command: upcase-word count &optional buffer
      This function converts the COUNT words after point to all upper
      case, moving point over as it does.  If COUNT is negative, it
      converts the -COUNT previous words but does not move point.  The
@@ -993,8 +1155,8 @@ which characters are upper or lower case and how to convert them.
 \1f
 File: lispref.info,  Node: Text Properties,  Next: Substitution,  Prev: Case Changes,  Up: Text
 
-Text Properties
-===============
+43.18 Text Properties
+=====================
 
 Text properties are an alternative interface to extents (*note
 Extents::), and are built on top of them.  They are useful when you
@@ -1029,12 +1191,13 @@ along with the characters; this includes such diverse functions as
 * Special Properties::         Particular properties with special meanings.
 * Saving Properties::           Saving text properties in files, and reading
                                   them back.
+* Fields::                     Emacs-compatible text fields.
 
 \1f
 File: lispref.info,  Node: Examining Properties,  Next: Changing Properties,  Up: Text Properties
 
-Examining Text Properties
--------------------------
+43.18.1 Examining Text Properties
+---------------------------------
 
 The simplest way to examine text properties is to ask for the value of
 a particular property of a particular character.  For that, use
@@ -1046,22 +1209,22 @@ to examine the properties of a number of characters at once.
 positions in a string start from 0, whereas positions in a buffer start
 from 1.)
 
- - Function: get-text-property pos prop &optional object at-flag
+ -- Function: get-text-property pos prop &optional object at-flag
      This function returns the value of the PROP property of the
      character after position POS in OBJECT (a buffer or string).  The
      argument OBJECT is optional and defaults to the current buffer.
 
- - Function: get-char-property pos prop &optional object at-flag
+ -- Function: get-char-property pos prop &optional object at-flag
      This function is like `get-text-property', except that it checks
      all extents, not just text-property extents.
 
 
- - Function: text-properties-at position &optional object
+ -- Function: text-properties-at position &optional object
      This function returns the entire property list of the character at
      POSITION in the string or buffer OBJECT.  If OBJECT is `nil', it
      defaults to the current buffer.
 
- - Variable: default-text-properties
+ -- Variable: default-text-properties
      This variable holds a property list giving default values for text
      properties.  Whenever a character does not specify a value for a
      property, the value stored in this list is used instead.  Here is
@@ -1077,8 +1240,8 @@ from 1.)
 \1f
 File: lispref.info,  Node: Changing Properties,  Next: Property Search,  Prev: Examining Properties,  Up: Text Properties
 
-Changing Text Properties
-------------------------
+43.18.2 Changing Text Properties
+--------------------------------
 
 The primitives for changing properties apply to a specified range of
 text.  The function `set-text-properties' (see end of section) sets the
@@ -1091,12 +1254,12 @@ and can affect how the buffer looks on the screen, any change in the
 text properties is considered a buffer modification.  Buffer text
 property changes are undoable (*note Undo::).
 
- - Function: put-text-property start end prop value &optional object
+ -- Function: put-text-property start end prop value &optional object
      This function sets the PROP property to VALUE for the text between
      START and END in the string or buffer OBJECT.  If OBJECT is `nil',
      it defaults to the current buffer.
 
- - Function: add-text-properties start end props &optional object
+ -- Function: add-text-properties start end props &optional object
      This function modifies the text properties for the text between
      START and END in the string or buffer OBJECT.  If OBJECT is `nil',
      it defaults to the current buffer.
@@ -1116,7 +1279,7 @@ property changes are undoable (*note Undo::).
           (add-text-properties START END
                                '(comment t face highlight))
 
- - Function: remove-text-properties start end props &optional object
+ -- Function: remove-text-properties start end props &optional object
      This function deletes specified text properties from the text
      between START and END in the string or buffer OBJECT.  If OBJECT
      is `nil', it defaults to the current buffer.
@@ -1134,7 +1297,7 @@ property changes are undoable (*note Undo::).
      property's value; `nil' otherwise (if PROPS is `nil' or if no
      character in the specified text had any of those properties).
 
- - Function: set-text-properties start end props &optional object
+ -- Function: set-text-properties start end props &optional object
      This function completely replaces the text property list for the
      text between START and END in the string or buffer OBJECT.  If
      OBJECT is `nil', it defaults to the current buffer.
@@ -1158,8 +1321,8 @@ its properties.
 \1f
 File: lispref.info,  Node: Property Search,  Next: Special Properties,  Prev: Changing Properties,  Up: Text Properties
 
-Property Search Functions
--------------------------
+43.18.3 Property Search Functions
+---------------------------------
 
 In typical use of text properties, most of the time several or many
 consecutive characters have the same value for a property.  Rather than
@@ -1179,7 +1342,7 @@ the buffer, if the property you are interested in does not change.
 position returned by these functions is between two characters with
 different properties.
 
- - Function: next-property-change pos &optional object limit
+ -- Function: next-property-change pos &optional object limit
      The function scans the text forward from position POS in the
      string or buffer OBJECT till it finds a change in some text
      property, then returns the position of the change.  In other
@@ -1207,7 +1370,8 @@ different properties.
               Process text from point to NEXT-CHANGE...
               (goto-char next-change)))
 
- - Function: next-single-property-change pos prop &optional object limit
+ -- Function: next-single-property-change pos prop &optional object
+          limit
      The function scans the text forward from position POS in the
      string or buffer OBJECT till it finds a change in the PROP
      property, then returns the position of the change.  In other
@@ -1224,19 +1388,19 @@ different properties.
      it is a position greater than or equal to POS; it equals POS only
      if LIMIT equals POS.
 
- - Function: previous-property-change pos &optional object limit
+ -- Function: previous-property-change pos &optional object limit
      This is like `next-property-change', but scans backward from POS
      instead of forward.  If the value is non-`nil', it is a position
      less than or equal to POS; it equals POS only if LIMIT equals POS.
 
- - Function: previous-single-property-change pos prop &optional object
+ -- Function: previous-single-property-change pos prop &optional object
           limit
      This is like `next-single-property-change', but scans backward from
      POS instead of forward.  If the value is non-`nil', it is a
      position less than or equal to POS; it equals POS only if LIMIT
      equals POS.
 
- - Function: text-property-any start end prop value &optional object
+ -- Function: text-property-any start end prop value &optional object
      This function returns non-`nil' if at least one character between
      START and END has a property PROP whose value is VALUE.  More
      precisely, it returns the position of the first such character.
@@ -1246,7 +1410,8 @@ different properties.
      buffer to scan.  Positions are relative to OBJECT.  The default
      for OBJECT is the current buffer.
 
- - Function: text-property-not-all start end prop value &optional object
+ -- Function: text-property-not-all start end prop value &optional
+          object
      This function returns non-`nil' if at least one character between
      START and END has a property PROP whose value differs from VALUE.
      More precisely, it returns the position of the first such
@@ -1259,22 +1424,22 @@ different properties.
 \1f
 File: lispref.info,  Node: Special Properties,  Next: Saving Properties,  Prev: Property Search,  Up: Text Properties
 
-Properties with Special Meanings
---------------------------------
+43.18.4 Properties with Special Meanings
+----------------------------------------
 
 The predefined properties are the same as those for extents.  *Note
 Extent Properties::.
 
 \1f
-File: lispref.info,  Node: Saving Properties,  Prev: Special Properties,  Up: Text Properties
+File: lispref.info,  Node: Saving Properties,  Next: Fields,  Prev: Special Properties,  Up: Text Properties
 
-Saving Text Properties in Files
--------------------------------
+43.18.5 Saving Text Properties in Files
+---------------------------------------
 
 You can save text properties in files, and restore text properties when
 inserting the files, using these two hooks:
 
- - Variable: write-region-annotate-functions
+ -- Variable: write-region-annotate-functions
      This variable's value is a list of functions for `write-region' to
      run to encode text properties in some fashion as annotations to
      the text being written in the file.  *Note Writing to Files::.
@@ -1299,7 +1464,7 @@ inserting the files, using these two hooks:
      file, it intermixes the specified annotations at the corresponding
      positions.  All this takes place without modifying the buffer.
 
- - Variable: after-insert-file-functions
+ -- Variable: after-insert-file-functions
      This variable holds a list of functions for `insert-file-contents'
      to call after inserting a file's contents.  These functions should
      scan the inserted text for annotations, and convert them to the
@@ -1333,16 +1498,128 @@ types that are reasonably flexible, and not too hard to encode.
    *Note Format Conversion::, for a related feature.
 
 \1f
+File: lispref.info,  Node: Fields,  Prev: Saving Properties,  Up: Text Properties
+
+43.18.6 Fields
+--------------
+
+Emacs supplies a notion of a _text field_, which is a region of text
+where every character has the same value of the `field' property.  It
+is used to identify regions of a buffer used for communicating with an
+external process, for example.  XEmacs supplies a compatible interface.
+In XEmacs, the `field' property can be set as either an extent
+property or a text property, mirroring the Emacs capability of using
+either overlays or text properties.
+
+   The field manipulating functions take a buffer position as the
+field-identifying argument, defaulting to point.  This really means the
+field containing that buffer position.  Consecutive buffer positions
+with no `field' property are considered an "empty" field.  There is
+some ambiguity when a specified buffer position falls at the very
+beginning or the very end of a field: does it belong to the preceding or
+the following field?  The answer depends on the openness or closedness
+of the corresponding extents (*note Extent Endpoints::).  A buffer
+position corresponds to the field whose property would be inherited by a
+character inserted at that position.  If the buffer position is between
+an end-open and a start-open extent, then it corresponds to an empty
+field at that position, since an inserted character will belong to
+neither extent.
+
+ -- Variable: inhibit-field-text-motion
+     This variable controls whether the text motion commands notice
+     fields or not.  When it is nil (the default), commands such as
+     beginning-of-line will try to move only within fields.
+
+ -- Function: make-field value from to &optional buffer
+     There is no Emacs counterpart to this function.  The default open
+     and closedness of extents in XEmacs is opposite to the default for
+     Emacs overlays.  Hence, fields based on extents in XEmacs behave
+     differently from the equivalent fields based on overlays in Emacs.
+     This function creates a field with value VALUE over the region
+     FROM to TO in BUFFER, which defaults to the current buffer, with
+     the default Emacs open and closedness.
+
+ -- Function: find-field &optional pos merge-at-boundary beg-limit
+          end-limit
+     There is no (Lisp-visible) Emacs counterpart to this function.  It
+     is the workhorse for the other functions.  It returns a dotted pair
+     `(start . stop)' holding the endpoints of the field matching a
+     specification.  If POS is non-`nil', it specifies a buffer
+     position whose enclosing field should be found; otherwise, the
+     value of point is used.
+
+     If MERGE-AT-BOUNDARY is non-`nil', then two changes are made to
+     the search algorithm.  First, if POS is at the very first position
+     of a field, then the beginning of the previous field is returned
+     instead of the beginning of POS's field.  Second, if the value of
+     the `field' property at POS is the symbol `boundary', then the
+     beginning of the field before the boundary field and the end of
+     the field after the boundary field are returned.
+
+     If BEG-LIMIT is a buffer position, and the start position that
+     would be returned is less than BEG-LIMIT, then BEG-LIMIT is
+     returned instead.  Likewise, if END-LIMIT is a buffer position,
+     and the stop position that would be returned is greater than
+     END-LIMIT, then END-LIMIT is returned instead.
+
+ -- Function: delete-field &optional pos
+     Delete the text of the field at POS.
+
+ -- Function: field-string &optional pos
+     Return the contents of the field at POS as a string.
+
+ -- Function: field-string-no-properties &optional pos
+     Return the contents of the field at POS as a string, without text
+     properties.
+
+ -- Function: field-beginning &optional pos escape-from-edge limit
+     Return the beginning of the field at POS.  If ESCAPE-FROM-EDGE is
+     non-nil and POS is at the beginning of a field, then the beginning
+     of the field that ends at POS is returned instead.  If LIMIT is a
+     buffer position and the returned value would be less than LIMIT,
+     then LIMIT is returned instead.
+
+ -- Function: field-end &optional pos escape-from-edge limit
+     Return the end of the field at POS.  If ESCAPE-FROM-EDGE is
+     non-nil and POS is at the end of a field, then the end of the
+     field that begins at POS is returned instead.  If LIMIT is a
+     buffer position and the returned value would be greater than
+     LIMIT, then LIMIT is returned instead.
+
+ -- Function: constrain-to-field new-pos old-pos &optional
+          escape-from-edge only-in-line inhibit-capture-property
+     Return the position closest to NEW-POS that is in the same field
+     as OLD-POS.  If NEW-POS is `nil', then the value of point is used
+     instead _and_ point is set to the value that is returned.
+
+     If ESCAPE-FROM-EDGE is non-`nil' and OLD-POS is at the boundary of
+     two fields, then the two adjacent fields are considered one field.
+     Furthermore, if NEW-POS is in a field whose `field' property is
+     the symbol `boundary', then the preceding field, the boundary
+     field, and the following field are considered one field.
+
+     If ONLY-IN-LINE is non-`nil' and the returned position would be on
+     a different line than NEW-POS, return NEW-POS instead.
+
+     If INHIBIT-CAPTURE-PROPERTY is non-`nil' and the character at
+     OLD-POS has a property of the same name as the value of
+     INHIBIT-CAPTURE-PROPERTY, then all field boundaries are ignored;
+     i.e., NEW-POS is returned.
+
+     If INHIBIT-FIELD-TEXT-MOTION is non-`nil', then all field
+     boundaries are ignored and this function always returns NEW-POS.
+
+\1f
 File: lispref.info,  Node: Substitution,  Next: Registers,  Prev: Text Properties,  Up: Text
 
-Substituting for a Character Code
-=================================
+43.19 Substituting for a Character Code
+=======================================
 
 The following functions replace characters within a specified region
 based on their character codes.
 
- - Function: subst-char-in-region start end old-char new-char &optional
-          noundo
+ -- Function: subst-char-in-region start end old-char new-char
+          &optional noundo
      This function replaces all occurrences of the character OLD-CHAR
      with the character NEW-CHAR in the region of the current buffer
      defined by START and END.
@@ -1357,15 +1634,15 @@ based on their character codes.
           ---------- Buffer: foo ----------
           This is the contents of the buffer before.
           ---------- Buffer: foo ----------
-          
+
           (subst-char-in-region 1 20 ?i ?X)
                => nil
-          
+
           ---------- Buffer: foo ----------
           ThXs Xs the contents of the buffer before.
           ---------- Buffer: foo ----------
 
- - Function: translate-region start end table
+ -- Function: translate-region start end table
      This function applies a translation table to the characters in the
      buffer between positions START and END.  The translation table
      TABLE can be either a string, a vector, or a char-table.
@@ -1401,14 +1678,14 @@ based on their character codes.
           ---------- Buffer: foo ----------
           Here is a sentence in the buffer.
           ---------- Buffer: foo ----------
-          
+
           (let ((table (make-char-table 'generic)))
             (put-char-table ?a "the letter a" table)
             (put-char-table ?b "" table)
             (put-char-table ?c ?\n table)
             (translate-region (point-min) (point-max) table))
                => 3
-          
+
           ---------- Buffer: foo ----------
           Here is the letter a senten
           e in the uffer.
@@ -1417,8 +1694,8 @@ based on their character codes.
 \1f
 File: lispref.info,  Node: Registers,  Next: Transposition,  Prev: Substitution,  Up: Text
 
-Registers
-=========
+43.20 Registers
+===============
 
 A register is a sort of variable used in XEmacs editing that can hold a
 marker, a string, a rectangle, a window configuration (of one frame), or
@@ -1431,7 +1708,7 @@ Emacs Lisp by a character that is its name.
    The functions in this section return unpredictable values unless
 otherwise stated.
 
- - Variable: register-alist
+ -- Variable: register-alist
      This variable is an alist of elements of the form `(NAME .
      CONTENTS)'.  Normally, there is one element for each XEmacs
      register that has been used.
@@ -1443,19 +1720,19 @@ otherwise stated.
      represents a rectangle; its elements are strings, one per line of
      the rectangle.
 
- - Function: get-register register
+ -- Function: get-register register
      This function returns the contents of the register REGISTER, or
      `nil' if it has no contents.
 
- - Function: set-register register value
+ -- Function: set-register register value
      This function sets the contents of register REGISTER to VALUE.  A
      register can be set to any value, but the other register functions
      expect only certain data types.  The return value is VALUE.
 
- - Command: view-register register
+ -- Command: view-register register
      This command displays what is contained in register REGISTER.
 
- - Command: insert-register register &optional beforep
+ -- Command: insert-register register &optional beforep
      This command inserts contents of register REGISTER into the current
      buffer.
 
@@ -1477,12 +1754,12 @@ otherwise stated.
 \1f
 File: lispref.info,  Node: Transposition,  Next: Change Hooks,  Prev: Registers,  Up: Text
 
-Transposition of Text
-=====================
+43.21 Transposition of Text
+===========================
 
 This subroutine is used by the transposition commands.
 
- - Function: transpose-regions start1 end1 start2 end2 &optional
+ -- Function: transpose-regions start1 end1 start2 end2 &optional
           leave-markers
      This function exchanges two nonoverlapping portions of the buffer.
      Arguments START1 and END1 specify the bounds of one portion and
@@ -1498,8 +1775,8 @@ This subroutine is used by the transposition commands.
 \1f
 File: lispref.info,  Node: Change Hooks,  Next: Transformations,  Prev: Transposition,  Up: Text
 
-Change Hooks
-============
+43.22 Change Hooks
+==================
 
 These hook variables let you arrange to take notice of all changes in
 all buffers (or in a particular buffer, if you make them buffer-local).
@@ -1512,14 +1789,14 @@ operations that call them.
    Buffer changes made while executing the following hooks don't
 themselves cause any change hooks to be invoked.
 
- - Variable: before-change-functions
+ -- Variable: before-change-functions
      This variable holds a list of a functions to call before any buffer
      modification.  Each function gets two arguments, the beginning and
      end of the region that is about to change, represented as
      integers.  The buffer that is about to change is always the
      current buffer.
 
- - Variable: after-change-functions
+ -- Variable: after-change-functions
      This variable holds a list of a functions to call after any buffer
      modification.  Each function receives three arguments: the
      beginning and end of the region just changed, and the length of
@@ -1528,25 +1805,25 @@ themselves cause any change hooks to be invoked.
      three arguments are integers.  The buffer that's about to change
      is always the current buffer.
 
- - Variable: before-change-function
+ -- Variable: before-change-function
      This obsolete variable holds one function to call before any buffer
      modification (or `nil' for no function).  It is called just like
      the functions in `before-change-functions'.
 
- - Variable: after-change-function
+ -- Variable: after-change-function
      This obsolete variable holds one function to call after any buffer
      modification (or `nil' for no function).  It is called just like
      the functions in `after-change-functions'.
 
- - Variable: first-change-hook
+ -- Variable: first-change-hook
      This variable is a normal hook that is run whenever a buffer is
      changed that was previously in the unmodified state.
 
 \1f
 File: lispref.info,  Node: Transformations,  Prev: Change Hooks,  Up: Text
 
-Textual transformations--MD5 and base64 support
-===============================================
+43.23 Textual transformations--MD5 and base64 support
+=====================================================
 
 Some textual operations inherently require examining each character in
 turn, and performing arithmetic operations on them.  Such operations
@@ -1564,7 +1841,7 @@ target digest.  MD5 is used heavily by various authentication schemes.
 
    Emacs Lisp interface to MD5 consists of a single function `md5':
 
- - Function: md5 object &optional start end coding noerror
+ -- Function: md5 object &optional start end coding noerror
      This function returns the MD5 message digest of OBJECT, a buffer
      or string.
 
@@ -1586,11 +1863,11 @@ target digest.  MD5 is used heavily by various authentication schemes.
           ;; Calculate the digest of the entire buffer
           (md5 (current-buffer))
                => "8842b04362899b1cda8d2d126dc11712"
-          
+
           ;; Calculate the digest of the current line
           (md5 (current-buffer) (point-at-bol) (point-at-eol))
                => "60614d21e9dee27dfdb01fa4e30d6d00"
-          
+
           ;; Calculate the digest of your name and email address
           (md5 (concat (format "%s <%s>" (user-full-name) user-mail-address)))
                => "0a2188c40fd38922d941fe6032fce516"
@@ -1602,7 +1879,7 @@ binary bodies, and to encode binary characters in message headers.
 
    The Lisp interface to base64 consists of four functions:
 
- - Command: base64-encode-region start end &optional no-line-break
+ -- Command: base64-encode-region start end &optional no-line-break
      This function encodes the region between START and END of the
      current buffer to base64 format.  This means that the original
      region is deleted, and replaced with its base64 equivalent.
@@ -1625,7 +1902,7 @@ binary bodies, and to encode binary characters in message headers.
      The function can also be used interactively, in which case it
      works on the currently active region.
 
- - Function: base64-encode-string string &optional no-line-break
+ -- Function: base64-encode-string string &optional no-line-break
      This function encodes STRING to base64, and returns the encoded
      string.
 
@@ -1639,7 +1916,7 @@ binary bodies, and to encode binary characters in message headers.
           (base64-encode-string "fubar")
               => "ZnViYXI="
 
- - Command: base64-decode-region start end
+ -- Command: base64-decode-region start end
      This function decodes the region between START and END of the
      current buffer.  The region should be in base64 encoding.
 
@@ -1650,7 +1927,7 @@ binary bodies, and to encode binary characters in message headers.
           ;; Decode a base64 buffer, and replace it with the decoded version
           (base64-decode-region (point-min) (point-max))
 
- - Function: base64-decode-string string
+ -- Function: base64-decode-string string
      This function decodes STRING to base64, and returns the decoded
      string.  STRING should be valid base64-encoded text.
 
@@ -1658,15 +1935,15 @@ binary bodies, and to encode binary characters in message headers.
 
           (base64-decode-string "ZnViYXI=")
               => "fubar"
-          
+
           (base64-decode-string "totally bogus")
               => nil
 
 \1f
 File: lispref.info,  Node: Searching and Matching,  Next: Syntax Tables,  Prev: Text,  Up: Top
 
-Searching and Matching
-**********************
+44 Searching and Matching
+*************************
 
 XEmacs provides two ways to search through a buffer for specified text:
 exact string searches and regular expression searches.  After a regular
@@ -1691,15 +1968,15 @@ text matched the whole regular expression or various portions of it.
 \1f
 File: lispref.info,  Node: String Search,  Next: Regular Expressions,  Up: Searching and Matching
 
-Searching for Strings
-=====================
+44.1 Searching for Strings
+==========================
 
 These are the primitive functions for searching through the text in a
 buffer.  They are meant for use in programs, but you may call them
 interactively.  If you do so, they prompt for the search string; LIMIT
 and NOERROR are set to `nil', and COUNT is set to 1.
 
- - Command: search-forward string &optional limit noerror count buffer
+ -- Command: search-forward string &optional limit noerror count buffer
      This function searches forward from point for an exact match for
      STRING.  If successful, it sets point to the end of the occurrence
      found, and returns the new value of point.  If no match is found,
@@ -1712,10 +1989,10 @@ and NOERROR are set to `nil', and COUNT is set to 1.
           ---------- Buffer: foo ----------
           -!-The quick brown fox jumped over the lazy dog.
           ---------- Buffer: foo ----------
-          
+
           (search-forward "fox")
                => 20
-          
+
           ---------- Buffer: foo ----------
           The quick brown fox-!- jumped over the lazy dog.
           ---------- Buffer: foo ----------
@@ -1744,12 +2021,12 @@ and NOERROR are set to `nil', and COUNT is set to 1.
      BUFFER is the buffer to search in, and defaults to the current
      buffer.
 
- - Command: search-backward string &optional limit noerror count buffer
+ -- Command: search-backward string &optional limit noerror count buffer
      This function searches backward from point for STRING.  It is just
      like `search-forward' except that it searches backwards and leaves
      point at the beginning of the match.
 
- - Command: word-search-forward string &optional limit noerror count
+ -- Command: word-search-forward string &optional limit noerror count
           buffer
      This function searches forward from point for a "word" match for
      STRING.  If it finds a match, it sets point to the end of the
@@ -1769,10 +2046,10 @@ and NOERROR are set to `nil', and COUNT is set to 1.
           -!-He said "Please!  Find
           the ball boy!"
           ---------- Buffer: foo ----------
-          
+
           (word-search-forward "Please find the ball, boy.")
                => 35
-          
+
           ---------- Buffer: foo ----------
           He said "Please!  Find
           the ball boy-!-!"
@@ -1794,7 +2071,7 @@ and NOERROR are set to `nil', and COUNT is set to 1.
      BUFFER is the buffer to search in, and defaults to the current
      buffer.
 
- - Command: word-search-backward string &optional limit noerror count
+ -- Command: word-search-backward string &optional limit noerror count
           buffer
      This function searches backward from point for a word match to
      STRING.  This function is just like `word-search-forward' except
@@ -1804,8 +2081,8 @@ and NOERROR are set to `nil', and COUNT is set to 1.
 \1f
 File: lispref.info,  Node: Regular Expressions,  Next: Regexp Search,  Prev: String Search,  Up: Searching and Matching
 
-Regular Expressions
-===================
+44.2 Regular Expressions
+========================
 
 A "regular expression" ("regexp", for short) is a pattern that denotes
 a (possibly infinite) set of strings.  Searching for matches for a
@@ -1834,8 +2111,8 @@ some Perl-like capabilities, described in the next section.
 \1f
 File: lispref.info,  Node: Syntax of Regexps,  Next: Regexp Example,  Up: Regular Expressions
 
-Syntax of Regular Expressions
------------------------------
+44.2.1 Syntax of Regular Expressions
+------------------------------------
 
 Regular expressions have a syntax in which a few characters are special
 constructs and the rest are "ordinary".  An ordinary character is a
@@ -2057,7 +2334,7 @@ constructs:
      matches the same text that matched the DIGITth occurrence of a `\(
      ... \)' construct.
 
-     In other words, after the end of a `\( ... \)' construct.  the
+     In other words, after the end of a `\( ... \)' construct, the
      matcher remembers the beginning and end of the text matched by that
      construct.  Then, later on in the regular expression, you can use
      `\' followed by DIGIT to match that same text, whatever it may
@@ -2082,18 +2359,27 @@ constructs:
      This is useful when you need a lot of grouping `\( ... \)'
      constructs, but only want to remember one or two - or if you have
      more than nine groupings and need to use backreferences to refer to
-     the groupings at the end.
+     the groupings at the end.  It also allows construction of regular
+     expressions from variable subexpressions that contain varying
+     numbers of non-capturing subexpressions, without disturbing the
+     group counts for the main expression.  For example
+
+          (let ((sre (if foo "\\(?:bar\\|baz\\)" "quux")))
+            (re-search-forward (format "a\\(b+ %s c+\\) d" sre) nil t)
+            (match-string 1))
 
-     Using `\(?: ... \)' rather than `\( ... \)' when you don't need
-     the captured substrings ought to speed up your programs some,
-     since it shortens the code path followed by the regular expression
-     engine, as well as the amount of memory allocation and string
-     copying it must do.  The actual performance gain to be observed
-     has not been measured or quantified as of this writing.
+     It is very tedious to write this kind of code without shy groups,
+     even if you know what all the alternative subexpressions will look
+     like.
 
-     The shy grouping operator has been borrowed from Perl, and has not
-     been available prior to XEmacs 20.3, nor is it available in FSF
-     Emacs.
+     Using `\(?: ... \)' rather than `\( ... \)' should give little
+     performance gain, as the start of each group must be recorded for
+     the purpose of back-tracking in any case, and no string copying is
+     done until `match-string' is called.
+
+     The shy grouping operator has been borrowed from Perl, and was not
+     available prior to XEmacs 20.3, and has only been available in GNU
+     Emacs since version 21.
 
 `\w'
      matches any word-constituent character.  The editor syntax table
@@ -2112,6 +2398,17 @@ constructs:
 `\SCODE'
      matches any character whose syntax is not CODE.
 
+`\cCATEGORY'
+     matches any character in CATEGORY. Only available under Mule,
+     categories, and category tables, are further described in *Note
+     Category Tables::. They are a mechanism for constructing classes
+     of characters that can be local to a buffer, and that do not
+     require complicated [] expressions every time they are referenced.
+
+`\CCATEGORY'
+     matches any character outside CATEGORY. *Note Category Tables::,
+     again, and note that this is only available under Mule.
+
    The following regular expression constructs match the empty
 string--that is, they don't use up any characters--but whether they
 match depends on the context.
@@ -2150,7 +2447,7 @@ exceptions, such as `[]]'), and so is a string that ends with a single
 `\'.  If an invalid regular expression is passed to any of the search
 functions, an `invalid-regexp' error is signaled.
 
- - Function: regexp-quote string
+ -- Function: regexp-quote string
      This function returns a regular expression string that matches
      exactly STRING and nothing else.  This allows you to request an
      exact string match when calling a function that wants a regular
@@ -2170,8 +2467,8 @@ functions, an `invalid-regexp' error is signaled.
 \1f
 File: lispref.info,  Node: Regexp Example,  Prev: Syntax of Regexps,  Up: Regular Expressions
 
-Complex Regexp Example
-----------------------
+44.2.2 Complex Regexp Example
+-----------------------------
 
 Here is a complicated regexp, used by XEmacs to recognize the end of a
 sentence together with any whitespace that follows.  It is the value of
@@ -2226,8 +2523,8 @@ deciphered as follows:
 \1f
 File: lispref.info,  Node: Regexp Search,  Next: POSIX Regexps,  Prev: Regular Expressions,  Up: Searching and Matching
 
-Regular Expression Searching
-============================
+44.3 Regular Expression Searching
+=================================
 
 In XEmacs, you can search for the next match for a regexp either
 incrementally or not.  Incremental search commands are described in the
@@ -2235,7 +2532,7 @@ incrementally or not.  Incremental search commands are described in the
 (xemacs)Regexp Search.  Here we describe only the search functions
 useful in programs.  The principal one is `re-search-forward'.
 
- - Command: re-search-forward regexp &optional limit noerror count
+ -- Command: re-search-forward regexp &optional limit noerror count
           buffer
      This function searches forward in the current buffer for a string
      of text that is matched by the regular expression REGEXP.  The
@@ -2268,16 +2565,16 @@ useful in programs.  The principal one is `re-search-forward'.
           I read "-!-The cat in the hat
           comes back" twice.
           ---------- Buffer: foo ----------
-          
+
           (re-search-forward "[a-z]+" nil t 5)
                => 27
-          
+
           ---------- Buffer: foo ----------
           I read "The cat in the hat-!-
           comes back" twice.
           ---------- Buffer: foo ----------
 
- - Command: re-search-backward regexp &optional limit noerror count
+ -- Command: re-search-backward regexp &optional limit noerror count
           buffer
      This function searches backward in the current buffer for a string
      of text that is matched by the regular expression REGEXP, leaving
@@ -2297,7 +2594,7 @@ useful in programs.  The principal one is `re-search-forward'.
      feature for matching regexps from end to beginning.  It's not
      worth the trouble of implementing that.
 
- - Function: string-match regexp string &optional start buffer
+ -- Function: string-match regexp string &optional start buffer
      This function returns the index of the start of the first match for
      the regular expression REGEXP in STRING, or `nil' if there is no
      match.  If START is non-`nil', the search starts at that index in
@@ -2326,11 +2623,11 @@ useful in programs.  The principal one is `re-search-forward'.
           (string-match
            "quick" "The quick brown fox jumped quickly." 8)
                => 27
-          
+
           (match-end 0)
                => 32
 
- - Function: split-string string &optional pattern
+ -- Function: split-string string &optional pattern
      This function splits STRING to substrings delimited by PATTERN,
      and returns a list of substrings.  If PATTERN is omitted, it
      defaults to `[ \f\t\n\r\v]+', which means that it splits STRING by
@@ -2338,23 +2635,23 @@ useful in programs.  The principal one is `re-search-forward'.
 
           (split-string "foo bar")
                => ("foo" "bar")
-          
+
           (split-string "something")
                => ("something")
-          
+
           (split-string "a:b:c" ":")
                => ("a" "b" "c")
-          
+
           (split-string ":a::b:c" ":")
                => ("" "a" "" "b" "c")
 
- - Function: split-path path
+ -- Function: split-path path
      This function splits a search path into a list of strings.  The
      path components are separated with the characters specified with
      `path-separator'.  Under Unix, `path-separator' will normally be
      `:', while under Windows, it will be `;'.
 
- - Function: looking-at regexp &optional buffer
+ -- Function: looking-at regexp &optional buffer
      This function determines whether the text in the current buffer
      directly following point matches the regular expression REGEXP.
      "Directly following" means precisely that: the search is
@@ -2373,15 +2670,15 @@ useful in programs.  The principal one is `re-search-forward'.
           I read "-!-The cat in the hat
           comes back" twice.
           ---------- Buffer: foo ----------
-          
+
           (looking-at "The cat in the hat$")
                => t
 
 \1f
 File: lispref.info,  Node: POSIX Regexps,  Next: Search and Replace,  Prev: Regexp Search,  Up: Searching and Matching
 
-POSIX Regular Expression Searching
-==================================
+44.4 POSIX Regular Expression Searching
+=======================================
 
 The usual regular expression functions do backtracking when necessary
 to handle the `\|' and repetition constructs, but they continue this
@@ -2398,24 +2695,24 @@ functions only when you really need the longest match.
    In Emacs versions prior to 19.29, these functions did not exist, and
 the functions described above implemented full POSIX backtracking.
 
- - Command: posix-search-forward regexp &optional limit noerror count
+ -- Command: posix-search-forward regexp &optional limit noerror count
           buffer
      This is like `re-search-forward' except that it performs the full
      backtracking specified by the POSIX standard for regular expression
      matching.
 
- - Command: posix-search-backward regexp &optional limit noerror count
+ -- Command: posix-search-backward regexp &optional limit noerror count
           buffer
      This is like `re-search-backward' except that it performs the full
      backtracking specified by the POSIX standard for regular expression
      matching.
 
- - Function: posix-looking-at regexp &optional buffer
+ -- Function: posix-looking-at regexp &optional buffer
      This is like `looking-at' except that it performs the full
      backtracking specified by the POSIX standard for regular expression
      matching.
 
- - Function: posix-string-match regexp string &optional start buffer
+ -- Function: posix-string-match regexp string &optional start buffer
      This is like `string-match' except that it performs the full
      backtracking specified by the POSIX standard for regular expression
      matching.
@@ -2427,10 +2724,10 @@ the functions described above implemented full POSIX backtracking.
 \1f
 File: lispref.info,  Node: Search and Replace,  Next: Match Data,  Prev: POSIX Regexps,  Up: Searching and Matching
 
-Search and Replace
-==================
+44.5 Search and Replace
+=======================
 
- - Function: perform-replace from-string replacements query-flag
+ -- Function: perform-replace from-string replacements query-flag
           regexp-flag delimited-flag &optional repeat-count map
      This function is the guts of `query-replace' and related commands.
      It searches for occurrences of FROM-STRING and replaces some or
@@ -2454,7 +2751,7 @@ Search and Replace
      responses for queries.  The argument MAP, if non-`nil', is a
      keymap to use instead of `query-replace-map'.
 
- - Variable: query-replace-map
+ -- Variable: query-replace-map
      This variable holds a special keymap that defines the valid user
      responses for `query-replace' and related functions, as well as
      `y-or-n-p' and `map-y-or-n-p'.  It is unusual in two ways:
@@ -2516,8 +2813,8 @@ of them are meaningful only for `query-replace' and friends.
 \1f
 File: lispref.info,  Node: Match Data,  Next: Searching and Case,  Prev: Search and Replace,  Up: Searching and Matching
 
-The Match Data
-==============
+44.6 The Match Data
+===================
 
 XEmacs keeps track of the positions of the start and end of segments of
 text found during a regular expression search.  This means, for example,
@@ -2542,8 +2839,8 @@ match data around it, to prevent it from being overwritten.
 \1f
 File: lispref.info,  Node: Simple Match Data,  Next: Replacing Match,  Up: Match Data
 
-Simple Match Data Access
-------------------------
+44.6.1 Simple Match Data Access
+-------------------------------
 
 This section explains how to use the match data to find out what was
 matched by the last search or match operation.
@@ -2562,7 +2859,7 @@ numbered 1, the second 2, and so on.  Only regular expressions can have
 subexpressions--after a simple string search, the only information
 available is about the entire match.
 
- - Function: match-string count &optional in-string
+ -- Function: match-string count &optional in-string
      This function returns, as a string, the text matched in the last
      search or match operation.  It returns the entire text if COUNT is
      zero, or just the portion corresponding to the COUNTth
@@ -2577,7 +2874,7 @@ available is about the entire match.
      make sure that the current buffer when you call `match-string' is
      the one in which you did the searching or matching.
 
- - Function: match-beginning count
+ -- Function: match-beginning count
      This function returns the position of the start of text matched by
      the last regular expression searched for, or a subexpression of it.
 
@@ -2589,7 +2886,7 @@ available is about the entire match.
      The value is `nil' for a subexpression inside a `\|' alternative
      that wasn't used in the match.
 
- - Function: match-end count
+ -- Function: match-end count
      This function is like `match-beginning' except that it returns the
      position of the end of the match, rather than the position of the
      beginning.
@@ -2601,23 +2898,23 @@ the positions within the text:
                    "The quick fox jumped quickly.")
                    ;0123456789
           => 4
-     
+
      (match-string 0 "The quick fox jumped quickly.")
           => "quick"
      (match-string 1 "The quick fox jumped quickly.")
           => "qu"
      (match-string 2 "The quick fox jumped quickly.")
           => "ick"
-     
+
      (match-beginning 1)       ; The beginning of the match
           => 4                 ;   with `qu' is at index 4.
-     
+
      (match-beginning 2)       ; The beginning of the match
           => 6                 ;   with `ick' is at index 6.
-     
+
      (match-end 1)             ; The end of the match
           => 6                 ;   with `qu' is at index 6.
-     
+
      (match-end 2)             ; The end of the match
           => 9                 ;   with `ick' is at index 9.
 
@@ -2632,7 +2929,7 @@ subexpression is at the 13th character (`c').
        (match-beginning 0)
        (match-beginning 1))
          => (9 9 13)
-     
+
      ---------- Buffer: foo ----------
      I read "The cat -!-in the hat comes back" twice.
              ^   ^
@@ -2645,13 +2942,13 @@ character of the buffer counts as 1.)
 \1f
 File: lispref.info,  Node: Replacing Match,  Next: Entire Match Data,  Prev: Simple Match Data,  Up: Match Data
 
-Replacing the Text That Matched
--------------------------------
+44.6.2 Replacing the Text That Matched
+--------------------------------------
 
 This function replaces the text matched by the last search with
 REPLACEMENT.
 
- - Function: replace-match replacement &optional fixedcase literal
+ -- Function: replace-match replacement &optional fixedcase literal
           string strbuffer
      This function replaces the text in the buffer (or in STRING) that
      was matched by the last search.  It replaces that text with
@@ -2705,13 +3002,13 @@ REPLACEMENT.
 \1f
 File: lispref.info,  Node: Entire Match Data,  Next: Saving Match Data,  Prev: Replacing Match,  Up: Match Data
 
-Accessing the Entire Match Data
--------------------------------
+44.6.3 Accessing the Entire Match Data
+--------------------------------------
 
 The functions `match-data' and `set-match-data' read or write the
 entire match data, all at once.
 
- - Function: match-data &optional integers reuse
+ -- Function: match-data &optional integers reuse
      This function returns a newly constructed list containing all the
      information on what text the last search matched.  Element zero is
      the position of the beginning of the match for the whole
@@ -2742,7 +3039,7 @@ entire match data, all at once.
                     #<marker at 13 in foo>
                     #<marker at 17 in foo>)
 
- - Function: set-match-data match-list
+ -- Function: set-match-data match-list
      This function sets the match data from the elements of MATCH-LIST,
      which should be a list that was the value of a previous call to
      `match-data'.
@@ -2756,8 +3053,8 @@ entire match data, all at once.
 \1f
 File: lispref.info,  Node: Saving Match Data,  Prev: Entire Match Data,  Up: Match Data
 
-Saving and Restoring the Match Data
------------------------------------
+44.6.4 Saving and Restoring the Match Data
+------------------------------------------
 
 When you call a function that may do a search, you may need to save and
 restore the match data around that call, if you want to preserve the
@@ -2773,7 +3070,7 @@ that shows the problem that arises if you fail to save the match data:
 
    You can save and restore the match data with `save-match-data':
 
- - Special Form: save-match-data body...
+ -- Special Form: save-match-data body...
      This special form executes BODY, saving and restoring the match
      data around it.
 
@@ -2793,8 +3090,8 @@ sentinels (*note Sentinels::).
 \1f
 File: lispref.info,  Node: Searching and Case,  Next: Standard Regexps,  Prev: Match Data,  Up: Searching and Matching
 
-Searching and Case
-==================
+44.7 Searching and Case
+=======================
 
 By default, searches in Emacs ignore the case of the text they are
 searching through; if you specify searching for `FOO', then `Foo' or
@@ -2814,7 +3111,7 @@ a match of either case, but when given an upper case letter, it looks
 for an upper case letter only.  But this has nothing to do with the
 searching functions Lisp functions use.
 
- - User Option: case-replace
+ -- User Option: case-replace
      This variable determines whether the replacement functions should
      preserve case.  If the variable is `nil', that means to use the
      replacement text verbatim.  A non-`nil' value means to convert the
@@ -2823,12 +3120,12 @@ searching functions Lisp functions use.
      The function `replace-match' is where this variable actually has
      its effect.  *Note Replacing Match::.
 
- - User Option: case-fold-search
+ -- User Option: case-fold-search
      This buffer-local variable determines whether searches should
      ignore case.  If the variable is `nil' they do not ignore case;
      otherwise they do ignore case.
 
- - Variable: default-case-fold-search
+ -- Variable: default-case-fold-search
      The value of this variable is the default value for
      `case-fold-search' in buffers that do not override it.  This is the
      same as `(default-value 'case-fold-search)'.
@@ -2836,13 +3133,13 @@ searching functions Lisp functions use.
 \1f
 File: lispref.info,  Node: Standard Regexps,  Prev: Searching and Case,  Up: Searching and Matching
 
-Standard Regular Expressions Used in Editing
-============================================
+44.8 Standard Regular Expressions Used in Editing
+=================================================
 
 This section describes some variables that hold regular expressions
 used for certain purposes in editing:
 
- - Variable: page-delimiter
+ -- Variable: page-delimiter
      This is the regexp describing line-beginnings that separate pages.
      The default value is `"^\014"' (i.e., `"^^L"' or `"^\C-l"'); this
      matches a line that starts with a formfeed character.
@@ -2856,20 +3153,20 @@ that start after the left margin.  In that case, a `^' would be
 incorrect.  However, a `^' is harmless in modes where a left margin is
 never used.
 
- - Variable: paragraph-separate
+ -- Variable: paragraph-separate
      This is the regular expression for recognizing the beginning of a
      line that separates paragraphs.  (If you change this, you may have
      to change `paragraph-start' also.)  The default value is
      `"[ \t\f]*$"', which matches a line that consists entirely of
      spaces, tabs, and form feeds (after its left margin).
 
- - Variable: paragraph-start
+ -- Variable: paragraph-start
      This is the regular expression for recognizing the beginning of a
      line that starts _or_ separates paragraphs.  The default value is
      `"[ \t\n\f]"', which matches a line starting with a space, tab,
      newline, or form feed (after its left margin).
 
- - Variable: sentence-end
+ -- Variable: sentence-end
      This is the regular expression describing the end of a sentence.
      (All paragraph boundaries also end sentences, regardless.)  The
      default value is:
@@ -2886,8 +3183,8 @@ never used.
 \1f
 File: lispref.info,  Node: Syntax Tables,  Next: Abbrevs,  Prev: Searching and Matching,  Up: Top
 
-Syntax Tables
-*************
+45 Syntax Tables
+****************
 
 A "syntax table" specifies the syntactic textual function of each
 character.  This information is used by the parsing commands, the
@@ -2911,8 +3208,8 @@ functions in this chapter.
 \1f
 File: lispref.info,  Node: Syntax Basics,  Next: Syntax Descriptors,  Up: Syntax Tables
 
-Syntax Table Concepts
-=====================
+45.1 Syntax Table Concepts
+==========================
 
 A "syntax table" provides Emacs with the information that determines
 the syntactic use of each character in a buffer.  This information is
@@ -2958,7 +3255,7 @@ useful with character sets such as ISO Latin-1 that have additional
 alphabetic characters in the range 128 to 255.  Just changing the
 standard syntax for these characters affects all major modes.
 
- - Function: syntax-table-p object
+ -- Function: syntax-table-p object
      This function returns `t' if OBJECT is a vector of length 256
      elements.  This means that the vector may be a syntax table.
      However, according to this test, any vector of length 256 is
@@ -2967,8 +3264,8 @@ standard syntax for these characters affects all major modes.
 \1f
 File: lispref.info,  Node: Syntax Descriptors,  Next: Syntax Table Functions,  Prev: Syntax Basics,  Up: Syntax Tables
 
-Syntax Descriptors
-==================
+45.2 Syntax Descriptors
+=======================
 
 This section describes the syntax classes and flags that denote the
 syntax of a character, and how they are represented as a "syntax
@@ -3008,13 +3305,13 @@ a comment-ender).
 \1f
 File: lispref.info,  Node: Syntax Class Table,  Next: Syntax Flags,  Up: Syntax Descriptors
 
-Table of Syntax Classes
------------------------
+45.2.1 Table of Syntax Classes
+------------------------------
 
 Here is a table of syntax classes, the characters that stand for them,
 their meanings, and examples of their use.
 
- - Syntax class: whitespace character
+ -- Syntax class: whitespace character
      "Whitespace characters" (designated with `-') separate symbols and
      words from each other.  Typically, whitespace characters have no
      other syntactic significance, and multiple whitespace characters
@@ -3024,13 +3321,13 @@ their meanings, and examples of their use.
      versions of XEmacs, but is deprecated.  It is invalid in GNU
      Emacs.)
 
- - Syntax class: word constituent
+ -- Syntax class: word constituent
      "Word constituents" (designated with `w') are parts of normal
      English words and are typically used in variable and command names
      in programs.  All upper- and lower-case letters, and the digits,
      are typically word constituents.
 
- - Syntax class: symbol constituent
+ -- Syntax class: symbol constituent
      "Symbol constituents" (designated with `_') are the extra
      characters that are used in variable and command names along with
      word constituents.  For example, the symbol constituents class is
@@ -3040,7 +3337,7 @@ their meanings, and examples of their use.
      non-word-constituent character that is valid in symbols is
      underscore (`_').
 
- - Syntax class: punctuation character
+ -- Syntax class: punctuation character
      "Punctuation characters" (`.') are those characters that are used
      as punctuation in English, or are used in some way in a programming
      language to separate symbols from one another.  Most programming
@@ -3048,8 +3345,8 @@ their meanings, and examples of their use.
      this class since the few characters that are not symbol or word
      constituents all have other uses.
 
- - Syntax class: open parenthesis character
- - Syntax class: close parenthesis character
+ -- Syntax class: open parenthesis character
+ -- Syntax class: close parenthesis character
      Open and close "parenthesis characters" are characters used in
      dissimilar pairs to surround sentences or expressions.  Such a
      grouping is begun with an open parenthesis character and
@@ -3065,7 +3362,7 @@ their meanings, and examples of their use.
      `[]', and `{}'.  In XEmacs Lisp, the delimiters for lists and
      vectors (`()' and `[]') are classified as parenthesis characters.
 
- - Syntax class: string quote
+ -- Syntax class: string quote
      "String quote characters" (designated with `"') are used in many
      languages, including Lisp and C, to delimit string constants.  The
      same string quote character appears at the beginning and the end
@@ -3086,7 +3383,7 @@ their meanings, and examples of their use.
      English, we do not want them to turn off the usual syntactic
      properties of other characters in the quotation.
 
- - Syntax class: escape
+ -- Syntax class: escape
      An "escape character" (designated with `\') starts an escape
      sequence such as is used in C string and character constants.  The
      character `\' belongs to this class in both C and Lisp.  (In C, it
@@ -3096,7 +3393,7 @@ their meanings, and examples of their use.
      Characters in this class count as part of words if
      `words-include-escapes' is non-`nil'.  *Note Word Motion::.
 
- - Syntax class: character quote
+ -- Syntax class: character quote
      A "character quote character" (designated with `/') quotes the
      following character so that it loses its normal syntactic meaning.
      This differs from an escape character in that only the character
@@ -3107,22 +3404,22 @@ their meanings, and examples of their use.
 
      This class is used for backslash in TeX mode.
 
- - Syntax class: paired delimiter
+ -- Syntax class: paired delimiter
      "Paired delimiter characters" (designated with `$') are like
      string quote characters except that the syntactic properties of the
      characters between the delimiters are not suppressed.  Only TeX
      mode uses a paired delimiter presently--the `$' that both enters
      and leaves math mode.
 
- - Syntax class: expression prefix
+ -- Syntax class: expression prefix
      An "expression prefix operator" (designated with `'') is used for
      syntactic operators that are part of an expression if they appear
      next to one.  These characters in Lisp include the apostrophe, `''
      (used for quoting), the comma, `,' (used in macros), and `#' (used
      in the read syntax for certain data types).
 
- - Syntax class: comment starter
- - Syntax class: comment ender
+ -- Syntax class: comment starter
+ -- Syntax class: comment ender
      The "comment starter" and "comment ender" characters are used in
      various languages to delimit comments.  These classes are
      designated with `<' and `>', respectively.
@@ -3130,7 +3427,7 @@ their meanings, and examples of their use.
      English text has no comment characters.  In Lisp, the semicolon
      (`;') starts a comment and a newline or formfeed ends one.
 
- - Syntax class: inherit
+ -- Syntax class: inherit
      This syntax class does not specify a syntax.  It says to look in
      the standard syntax table to find the syntax of this character.
      The designator for this syntax code is `@'.
@@ -3138,8 +3435,8 @@ their meanings, and examples of their use.
 \1f
 File: lispref.info,  Node: Syntax Flags,  Prev: Syntax Class Table,  Up: Syntax Descriptors
 
-Syntax Flags
-------------
+45.2.2 Syntax Flags
+-------------------
 
 In addition to the classes, entries for characters in a syntax table
 can include flags.  There are eleven possible flags, represented by the
@@ -3264,13 +3561,13 @@ newline
 \1f
 File: lispref.info,  Node: Syntax Table Functions,  Next: Motion and Syntax,  Prev: Syntax Descriptors,  Up: Syntax Tables
 
-Syntax Table Functions
-======================
+45.3 Syntax Table Functions
+===========================
 
 In this section we describe functions for creating, accessing and
 altering syntax tables.
 
- - Function: make-syntax-table &optional oldtable
+ -- Function: make-syntax-table &optional oldtable
      This function creates a new syntax table.  Character codes 0
      through 31 and 128 through 255 are set up to inherit from the
      standard syntax table.  The other character codes are set up by
@@ -3278,13 +3575,13 @@ altering syntax tables.
 
      Most major mode syntax tables are created in this way.
 
- - Function: copy-syntax-table &optional syntax-table
+ -- Function: copy-syntax-table &optional syntax-table
      This function constructs a copy of SYNTAX-TABLE and returns it.
      If SYNTAX-TABLE is not supplied (or is `nil'), it returns a copy
      of the current syntax table.  Otherwise, an error is signaled if
      SYNTAX-TABLE is not a syntax table.
 
- - Command: modify-syntax-entry char-range syntax-descriptor &optional
+ -- Command: modify-syntax-entry char-range syntax-descriptor &optional
           syntax-table
      This function sets the syntax entry for CHAR-RANGE according to
      SYNTAX-DESCRIPTOR.  CHAR-RANGE is either a single character or a
@@ -3304,21 +3601,21 @@ altering syntax tables.
      characters.
 
      Examples:
-          
+
           ;; Put the space character in class whitespace.
           (modify-syntax-entry ?\  " ")
                => nil
-          
+
           ;; Make `$' an open parenthesis character,
           ;;   with `^' as its matching close.
           (modify-syntax-entry ?$ "(^")
                => nil
-          
+
           ;; Make `^' a close parenthesis character,
           ;;   with `$' as its matching open.
           (modify-syntax-entry ?^ ")$")
                => nil
-          
+
           ;; Make `/' a punctuation character,
           ;;   the first character of a start-comment sequence,
           ;;   and the second character of an end-comment sequence.
@@ -3326,7 +3623,7 @@ altering syntax tables.
           (modify-syntax-entry ?/ ". 14")
                => nil
 
- - Function: char-syntax character &optional syntax-table
+ -- Function: char-syntax character &optional syntax-table
      This function returns the syntax class of CHARACTER, represented
      by its mnemonic designator character.  This _only_ returns the
      class, not any matching parenthesis or flags.
@@ -3349,40 +3646,40 @@ altering syntax tables.
 
           (char-to-string (char-syntax ?\ ))
                => " "
-          
+
           (char-to-string (char-syntax ?/))
                => "."
-          
+
           (char-to-string (char-syntax ?\())
                => "("
 
- - Function: set-syntax-table syntax-table &optional buffer
+ -- Function: set-syntax-table syntax-table &optional buffer
      This function makes SYNTAX-TABLE the syntax table for BUFFER, which
      defaults to the current buffer if omitted.  It returns
      SYNTAX-TABLE.
 
- - Function: syntax-table &optional buffer
+ -- Function: syntax-table &optional buffer
      This function returns the syntax table for BUFFER, which defaults
      to the current buffer if omitted.
 
 \1f
 File: lispref.info,  Node: Motion and Syntax,  Next: Parsing Expressions,  Prev: Syntax Table Functions,  Up: Syntax Tables
 
-Motion and Syntax
-=================
+45.4 Motion and Syntax
+======================
 
 This section describes functions for moving across characters in
 certain syntax classes.  None of these functions exists in Emacs
 version 18 or earlier.
 
- - Function: skip-syntax-forward syntaxes &optional limit buffer
+ -- Function: skip-syntax-forward syntaxes &optional limit buffer
      This function moves point forward across characters having syntax
      classes mentioned in SYNTAXES.  It stops when it encounters the
      end of the buffer, or position LIMIT (if specified), or a
      character it is not supposed to skip.  Optional argument BUFFER
      defaults to the current buffer if omitted.
 
- - Function: skip-syntax-backward syntaxes &optional limit buffer
+ -- Function: skip-syntax-backward syntaxes &optional limit buffer
      This function moves point backward across characters whose syntax
      classes are mentioned in SYNTAXES.  It stops when it encounters
      the beginning of the buffer, or position LIMIT (if specified), or a
@@ -3390,7 +3687,7 @@ version 18 or earlier.
      defaults to the current buffer if omitted.
 
 
- - Function: backward-prefix-chars &optional buffer
+ -- Function: backward-prefix-chars &optional buffer
      This function moves point backward over any number of characters
      with expression prefix syntax.  This includes both characters in
      the expression prefix syntax class, and characters with the `p'
@@ -3400,8 +3697,8 @@ version 18 or earlier.
 \1f
 File: lispref.info,  Node: Parsing Expressions,  Next: Standard Syntax Tables,  Prev: Motion and Syntax,  Up: Syntax Tables
 
-Parsing Balanced Expressions
-============================
+45.5 Parsing Balanced Expressions
+=================================
 
 Here are several functions for parsing and scanning balanced
 expressions, also known as "sexps", in which parentheses match in
@@ -3410,7 +3707,7 @@ these functions can be used for Lisp expressions when in Lisp mode and
 for C expressions when in C mode.  *Note List Motion::, for convenient
 higher-level functions for moving over balanced expressions.
 
- - Function: parse-partial-sexp start limit &optional target-depth
+ -- Function: parse-partial-sexp start limit &optional target-depth
           stop-before state stop-comment buffer
      This function parses a sexp in the current buffer starting at
      START, not scanning past LIMIT.  It stops at position LIMIT or
@@ -3466,7 +3763,7 @@ higher-level functions for moving over balanced expressions.
      This function is most often used to compute indentation for
      languages that have nested parentheses.
 
- - Function: scan-lists from count depth &optional buffer noerror
+ -- Function: scan-lists from count depth &optional buffer noerror
      This function scans forward COUNT balanced parenthetical groupings
      from character number FROM.  It returns the character position
      where the scan stops.
@@ -3491,7 +3788,7 @@ higher-level functions for moving over balanced expressions.
      If optional arg NOERROR is non-`nil', `scan-lists' will return
      `nil' instead of signalling an error.
 
- - Function: scan-sexps from count &optional buffer noerror
+ -- Function: scan-sexps from count &optional buffer noerror
      This function scans forward COUNT sexps from character position
      FROM.  It returns the character position where the scan stops.
 
@@ -3509,7 +3806,7 @@ higher-level functions for moving over balanced expressions.
      If optional arg NOERROR is non-`nil', `scan-sexps' will return nil
      instead of signalling an error.
 
- - Variable: parse-sexp-ignore-comments
+ -- Variable: parse-sexp-ignore-comments
      If the value is non-`nil', then comments are treated as whitespace
      by the functions in this section and by `forward-sexp'.
 
@@ -3522,7 +3819,7 @@ higher-level functions for moving over balanced expressions.
    You can use `forward-comment' to move forward or backward over one
 comment or several comments.
 
- - Function: forward-comment &optional count buffer
+ -- Function: forward-comment &optional count buffer
      This function moves point forward across COUNT comments (backward,
      if COUNT is negative).  If it finds anything other than a comment
      or whitespace, it stops, leaving point at the place where it
@@ -3539,23 +3836,23 @@ many.
 \1f
 File: lispref.info,  Node: Standard Syntax Tables,  Next: Syntax Table Internals,  Prev: Parsing Expressions,  Up: Syntax Tables
 
-Some Standard Syntax Tables
-===========================
+45.6 Some Standard Syntax Tables
+================================
 
 Most of the major modes in XEmacs have their own syntax tables.  Here
 are several of them:
 
- - Function: standard-syntax-table
+ -- Function: standard-syntax-table
      This function returns the standard syntax table, which is the
      syntax table used in Fundamental mode.
 
- - Variable: text-mode-syntax-table
+ -- Variable: text-mode-syntax-table
      The value of this variable is the syntax table used in Text mode.
 
- - Variable: c-mode-syntax-table
+ -- Variable: c-mode-syntax-table
      The value of this variable is the syntax table for C-mode buffers.
 
- - Variable: emacs-lisp-mode-syntax-table
+ -- Variable: emacs-lisp-mode-syntax-table
      The value of this variable is the syntax table used in Emacs Lisp
      mode by editing commands.  (It has no effect on the Lisp `read'
      function.)
@@ -3563,8 +3860,8 @@ are several of them:
 \1f
 File: lispref.info,  Node: Syntax Table Internals,  Prev: Standard Syntax Tables,  Up: Syntax Tables
 
-Syntax Table Internals
-======================
+45.7 Syntax Table Internals
+===========================
 
 Each element of a syntax table is an integer that encodes the syntax of
 one character: the syntax class, possible matching character, and
@@ -3627,8 +3924,8 @@ The next 6 bits are the flags.
 \1f
 File: lispref.info,  Node: Abbrevs,  Next: Extents,  Prev: Syntax Tables,  Up: Top
 
-Abbrevs And Abbrev Expansion
-****************************
+46 Abbrevs And Abbrev Expansion
+*******************************
 
 An abbreviation or "abbrev" is a string of characters that may be
 expanded to a longer string.  The user can insert the abbrev string and
@@ -3666,13 +3963,13 @@ Therefore, it is safe to use them in an extremely nonstandard way.
 \1f
 File: lispref.info,  Node: Abbrev Mode,  Next: Abbrev Tables,  Up: Abbrevs
 
-Setting Up Abbrev Mode
-======================
+46.1 Setting Up Abbrev Mode
+===========================
 
 Abbrev mode is a minor mode controlled by the value of the variable
 `abbrev-mode'.
 
- - Variable: abbrev-mode
+ -- Variable: abbrev-mode
      A non-`nil' value of this variable turns on the automatic expansion
      of abbrevs when their abbreviations are inserted into a buffer.
      If the value is `nil', abbrevs may be defined, but they are not
@@ -3680,38 +3977,38 @@ Abbrev mode is a minor mode controlled by the value of the variable
 
      This variable automatically becomes local when set in any fashion.
 
- - Variable: default-abbrev-mode
+ -- Variable: default-abbrev-mode
      This is the value of `abbrev-mode' for buffers that do not
      override it.  This is the same as `(default-value 'abbrev-mode)'.
 
 \1f
 File: lispref.info,  Node: Abbrev Tables,  Next: Defining Abbrevs,  Prev: Abbrev Mode,  Up: Abbrevs
 
-Abbrev Tables
-=============
+46.2 Abbrev Tables
+==================
 
 This section describes how to create and manipulate abbrev tables.
 
- - Function: make-abbrev-table
+ -- Function: make-abbrev-table
      This function creates and returns a new, empty abbrev table--an
      obarray containing no symbols.  It is a vector filled with zeros.
 
- - Function: clear-abbrev-table table
+ -- Function: clear-abbrev-table table
      This function undefines all the abbrevs in abbrev table TABLE,
      leaving it empty.  The function returns `nil'.
 
- - Function: define-abbrev-table table-name definitions
+ -- Function: define-abbrev-table table-name definitions
      This function defines TABLE-NAME (a symbol) as an abbrev table
      name, i.e., as a variable whose value is an abbrev table.  It
      defines abbrevs in the table according to DEFINITIONS, a list of
      elements of the form `(ABBREVNAME EXPANSION HOOK USECOUNT)'.  The
      value is always `nil'.
 
- - Variable: abbrev-table-name-list
+ -- Variable: abbrev-table-name-list
      This is a list of symbols whose values are abbrev tables.
      `define-abbrev-table' adds the new abbrev table name to this list.
 
- - Function: insert-abbrev-table-description name &optional human
+ -- Function: insert-abbrev-table-description name &optional human
      This function inserts before point a description of the abbrev
      table named NAME.  The argument NAME is a symbol whose value is an
      abbrev table.  The value is always `nil'.
@@ -3724,14 +4021,14 @@ This section describes how to create and manipulate abbrev tables.
 \1f
 File: lispref.info,  Node: Defining Abbrevs,  Next: Abbrev Files,  Prev: Abbrev Tables,  Up: Abbrevs
 
-Defining Abbrevs
-================
+46.3 Defining Abbrevs
+=====================
 
 These functions define an abbrev in a specified abbrev table.
 `define-abbrev' is the low-level basic function, while `add-abbrev' is
 used by commands that ask for information from the user.
 
- - Function: add-abbrev table type arg
+ -- Function: add-abbrev table type arg
      This function adds an abbreviation to abbrev table TABLE based on
      information from the user.  The argument TYPE is a string
      describing in English the kind of abbrev this will be (typically,
@@ -3742,7 +4039,7 @@ used by commands that ask for information from the user.
      abbrev, or `nil' if the user declines to confirm redefining an
      existing abbrev.
 
- - Function: define-abbrev table name &optional expansion hook count
+ -- Function: define-abbrev table name &optional expansion hook count
      This function defines an abbrev in TABLE named NAME, to expand to
      EXPANSION, and call HOOK.  The return value is an uninterned
      symbol that represents the abbrev inside XEmacs; its name is NAME.
@@ -3757,7 +4054,7 @@ used by commands that ask for information from the user.
 
      The use count of the abbrev is initialized to zero.
 
- - User Option: only-global-abbrevs
+ -- User Option: only-global-abbrevs
      If this variable is non-`nil', it means that the user plans to use
      global abbrevs only.  This tells the commands that define
      mode-specific abbrevs to define global ones instead.  This
@@ -3767,8 +4064,8 @@ used by commands that ask for information from the user.
 \1f
 File: lispref.info,  Node: Abbrev Files,  Next: Abbrev Expansion,  Prev: Defining Abbrevs,  Up: Abbrevs
 
-Saving Abbrevs in Files
-=======================
+46.4 Saving Abbrevs in Files
+============================
 
 A file of saved abbrev definitions is actually a file of Lisp code.
 The abbrevs are saved in the form of a Lisp program to define the same
@@ -3779,10 +4076,10 @@ with `load' (*note How Programs Do Loading::).  However, the function
    User-level facilities such as `save-some-buffers' can save abbrevs
 in a file automatically, under the control of variables described here.
 
- - User Option: abbrev-file-name
+ -- User Option: abbrev-file-name
      This is the default file name for reading and saving abbrevs.
 
- - Function: quietly-read-abbrev-file &optional filename
+ -- Function: quietly-read-abbrev-file &optional filename
      This function reads abbrev definitions from a file named FILENAME,
      previously written with `write-abbrev-file'.  If FILENAME is
      `nil', the file specified in `abbrev-file-name' is used.
@@ -3790,17 +4087,17 @@ in a file automatically, under the control of variables described here.
 
      This function does not display any messages.  It returns `nil'.
 
- - User Option: save-abbrevs
+ -- User Option: save-abbrevs
      A non-`nil' value for `save-abbrev' means that XEmacs should save
      abbrevs when files are saved.  `abbrev-file-name' specifies the
      file to save the abbrevs in.
 
- - Variable: abbrevs-changed
+ -- Variable: abbrevs-changed
      This variable is set non-`nil' by defining or altering any
      abbrevs.  This serves as a flag for various XEmacs commands to
      offer to save your abbrevs.
 
- - Command: write-abbrev-file filename
+ -- Command: write-abbrev-file filename
      Save all abbrev definitions, in all abbrev tables, in the file
      FILENAME, in the form of a Lisp program that when loaded will
      define the same abbrevs.  This function returns `nil'.
@@ -3808,15 +4105,15 @@ in a file automatically, under the control of variables described here.
 \1f
 File: lispref.info,  Node: Abbrev Expansion,  Next: Standard Abbrev Tables,  Prev: Abbrev Files,  Up: Abbrevs
 
-Looking Up and Expanding Abbreviations
-======================================
+46.5 Looking Up and Expanding Abbreviations
+===========================================
 
 Abbrevs are usually expanded by commands for interactive use, including
 `self-insert-command'.  This section describes the subroutines used in
 writing such functions, as well as the variables they use for
 communication.
 
- - Function: abbrev-symbol abbrev &optional table
+ -- Function: abbrev-symbol abbrev &optional table
      This function returns the symbol representing the abbrev named
      ABBREV.  The value returned is `nil' if that abbrev is not
      defined.  The optional second argument TABLE is the abbrev table
@@ -3824,59 +4121,59 @@ communication.
      the current buffer's local abbrev table, and second the global
      abbrev table.
 
- - Function: abbrev-expansion abbrev &optional table
+ -- Function: abbrev-expansion abbrev &optional table
      This function returns the string that ABBREV would expand into (as
      defined by the abbrev tables used for the current buffer).  The
      optional argument TABLE specifies the abbrev table to use, as in
      `abbrev-symbol'.
 
- - Command: expand-abbrev
+ -- Command: expand-abbrev
      This command expands the abbrev before point, if any.  If point
      does not follow an abbrev, this command does nothing.  The command
      returns `t' if it did expansion, `nil' otherwise.
 
- - Command: abbrev-prefix-mark &optional arg
+ -- Command: abbrev-prefix-mark &optional arg
      Mark current point as the beginning of an abbrev.  The next call to
      `expand-abbrev' will use the text from here to point (where it is
      then) as the abbrev to expand, rather than using the previous word
      as usual.
 
- - User Option: abbrev-all-caps
+ -- User Option: abbrev-all-caps
      When this is set non-`nil', an abbrev entered entirely in upper
      case is expanded using all upper case.  Otherwise, an abbrev
      entered entirely in upper case is expanded by capitalizing each
      word of the expansion.
 
- - Variable: abbrev-start-location
+ -- Variable: abbrev-start-location
      This is the buffer position for `expand-abbrev' to use as the start
      of the next abbrev to be expanded.  (`nil' means use the word
      before point instead.)  `abbrev-start-location' is set to `nil'
      each time `expand-abbrev' is called.  This variable is also set by
      `abbrev-prefix-mark'.
 
- - Variable: abbrev-start-location-buffer
+ -- Variable: abbrev-start-location-buffer
      The value of this variable is the buffer for which
      `abbrev-start-location' has been set.  Trying to expand an abbrev
      in any other buffer clears `abbrev-start-location'.  This variable
      is set by `abbrev-prefix-mark'.
 
- - Variable: last-abbrev
+ -- Variable: last-abbrev
      This is the `abbrev-symbol' of the last abbrev expanded.  This
      information is left by `expand-abbrev' for the sake of the
      `unexpand-abbrev' command.
 
- - Variable: last-abbrev-location
+ -- Variable: last-abbrev-location
      This is the location of the last abbrev expanded.  This contains
      information left by `expand-abbrev' for the sake of the
      `unexpand-abbrev' command.
 
- - Variable: last-abbrev-text
+ -- Variable: last-abbrev-text
      This is the exact expansion text of the last abbrev expanded,
      after case conversion (if any).  Its value is `nil' if the abbrev
      has already been unexpanded.  This contains information left by
      `expand-abbrev' for the sake of the `unexpand-abbrev' command.
 
- - Variable: pre-abbrev-expand-hook
+ -- Variable: pre-abbrev-expand-hook
      This is a normal hook whose functions are executed, in sequence,
      just before any expansion of an abbrev.  *Note Hooks::.  Since it
      is a normal hook, the hook functions receive no arguments.
@@ -3890,18 +4187,18 @@ this hook allows the user to decide whether to expand the abbrev, and
 aborts expansion if it is not confirmed.
 
      (add-hook 'pre-abbrev-expand-hook 'query-if-not-space)
-     
+
      ;; This is the function invoked by `pre-abbrev-expand-hook'.
-     
+
      ;; If the user terminated the abbrev with a space, the function does
      ;; nothing (that is, it returns so that the abbrev can expand).  If the
      ;; user entered some other character, this function asks whether
      ;; expansion should continue.
-     
+
      ;; If the user answers the prompt with `y', the function returns
      ;; `nil' (because of the `not' function), but that is
      ;; acceptable; the return value has no effect on expansion.
-     
+
      (defun query-if-not-space ()
        (if (/= ?\  (preceding-char))
            (if (not (y-or-n-p "Do you want to expand this abbrev? "))
@@ -3910,42 +4207,42 @@ aborts expansion if it is not confirmed.
 \1f
 File: lispref.info,  Node: Standard Abbrev Tables,  Prev: Abbrev Expansion,  Up: Abbrevs
 
-Standard Abbrev Tables
-======================
+46.6 Standard Abbrev Tables
+===========================
 
 Here we list the variables that hold the abbrev tables for the
 preloaded major modes of XEmacs.
 
- - Variable: global-abbrev-table
+ -- Variable: global-abbrev-table
      This is the abbrev table for mode-independent abbrevs.  The abbrevs
      defined in it apply to all buffers.  Each buffer may also have a
      local abbrev table, whose abbrev definitions take precedence over
      those in the global table.
 
- - Variable: local-abbrev-table
+ -- Variable: local-abbrev-table
      The value of this buffer-local variable is the (mode-specific)
      abbreviation table of the current buffer.
 
- - Variable: fundamental-mode-abbrev-table
+ -- Variable: fundamental-mode-abbrev-table
      This is the local abbrev table used in Fundamental mode; in other
      words, it is the local abbrev table in all buffers in Fundamental
      mode.
 
- - Variable: text-mode-abbrev-table
+ -- Variable: text-mode-abbrev-table
      This is the local abbrev table used in Text mode.
 
- - Variable: c-mode-abbrev-table
+ -- Variable: c-mode-abbrev-table
      This is the local abbrev table used in C mode.
 
- - Variable: lisp-mode-abbrev-table
+ -- Variable: lisp-mode-abbrev-table
      This is the local abbrev table used in Lisp mode and Emacs Lisp
      mode.
 
 \1f
 File: lispref.info,  Node: Extents,  Next: Specifiers,  Prev: Abbrevs,  Up: Top
 
-Extents
-*******
+47 Extents
+**********
 
 An "extent" is a region of text (a start position and an end position)
 that is displayed in a particular face and can have certain other
@@ -3953,7 +4250,7 @@ properties such as being read-only.  Extents can overlap each other.
 XEmacs efficiently handles buffers with large numbers of extents in
 them.
 
- - Function: extentp object
+ -- Function: extentp object
      This returns `t' if OBJECT is an extent.
 
 * Menu:
@@ -3974,8 +4271,8 @@ them.
 \1f
 File: lispref.info,  Node: Intro to Extents,  Next: Creating and Modifying Extents,  Up: Extents
 
-Introduction to Extents
-=======================
+47.1 Introduction to Extents
+============================
 
 An extent is a region of text within a buffer or string that has
 certain properties associated with it.  The properties of an extent
@@ -4047,10 +4344,10 @@ commands.  *Note Duplicable Extents::.
 \1f
 File: lispref.info,  Node: Creating and Modifying Extents,  Next: Extent Endpoints,  Prev: Intro to Extents,  Up: Extents
 
-Creating and Modifying Extents
-==============================
+47.2 Creating and Modifying Extents
+===================================
 
- - Function: make-extent from to &optional buffer-or-string
+ -- Function: make-extent from to &optional buffer-or-string
      This function makes an extent for the range [FROM, TO) in
      BUFFER-OR-STRING (a buffer or string).  BUFFER-OR-STRING defaults
      to the current buffer.  Insertions at point TO will be outside of
@@ -4061,28 +4358,28 @@ Creating and Modifying Extents
      to `nil', meaning the extent is in no buffer or string (*note
      Detached Extents::).
 
- - Function: delete-extent extent
+ -- Function: delete-extent extent
      This function removes EXTENT from its buffer and destroys it.
      This does not modify the buffer's text, only its display
      properties.  The extent cannot be used thereafter.  To remove an
      extent in such a way that it can be re-inserted later, use
      `detach-extent'.  *Note Detached Extents::.
 
- - Function: extent-object extent
+ -- Function: extent-object extent
      This function returns the buffer or string that EXTENT is in.  If
      the return value is `nil', this means that the extent is detached;
      however, a detached extent will not necessarily return a value of
      `nil'.
 
- - Function: extent-live-p object
+ -- Function: extent-live-p object
      This function returns `t' if OBJECT is an extent that has not been
      deleted, and `nil' otherwise.
 
 \1f
 File: lispref.info,  Node: Extent Endpoints,  Next: Finding Extents,  Prev: Creating and Modifying Extents,  Up: Extents
 
-Extent Endpoints
-================
+47.3 Extent Endpoints
+=====================
 
 Every extent has a start position and an end position, and logically
 affects the characters between those positions.  Normally the start and
@@ -4121,19 +4418,19 @@ open, the extent remains in the buffer, moving as necessary.
 position, and then by decreasing end position (this is called the
 "display order").
 
- - Function: extent-start-position extent
+ -- Function: extent-start-position extent
      This function returns the start position of EXTENT.
 
- - Function: extent-end-position extent
+ -- Function: extent-end-position extent
      This function returns the end position of EXTENT.
 
- - Function: extent-length extent
+ -- Function: extent-length extent
      This function returns the length of EXTENT in characters.  If the
      extent is detached, this returns `0'.  If the extent is not
      detached, this is equivalent to
           (- (extent-end-position EXTENT) (extent-start-position EXTENT))
 
- - Function: set-extent-endpoints extent start end &optional
+ -- Function: set-extent-endpoints extent start end &optional
           buffer-or-string
      This function sets the start and end position of EXTENT to START
      and END.  If both are `nil', this is equivalent to `detach-extent'.
@@ -4149,8 +4446,8 @@ position, and then by decreasing end position (this is called the
 \1f
 File: lispref.info,  Node: Finding Extents,  Next: Mapping Over Extents,  Prev: Extent Endpoints,  Up: Extents
 
-Finding Extents
-===============
+47.4 Finding Extents
+====================
 
 The following functions provide a simple way of determining the extents
 in a buffer or string.  A number of more sophisticated primitives for
@@ -4159,7 +4456,7 @@ provided (*note Mapping Over Extents::).  When reading through this
 section, keep in mind the way that extents are ordered (*note Extent
 Endpoints::).
 
- - Function: extent-list &optional buffer-or-string from to flags
+ -- Function: extent-list &optional buffer-or-string from to flags
           property value
      This function returns a list of the extents in BUFFER-OR-STRING.
      BUFFER-OR-STRING defaults to the current buffer if omitted.  FROM
@@ -4190,7 +4487,7 @@ functions.  To deal with this, functions typically mark their own
 extents by setting a particular property on them.  The following
 function makes it easier to locate those extents.
 
- - Function: extent-at pos &optional object property before at-flag
+ -- Function: extent-at pos &optional object property before at-flag
      This function finds the "smallest" extent (i.e., the last one in
      the display order) at (i.e., overlapping) POS in OBJECT (a buffer
      or string) having PROPERTY set.  OBJECT defaults to the current
@@ -4228,12 +4525,12 @@ you should probably use `mapcar-extents' or `map-extents', or loop
 using the BEFORE argument to `extent-at', rather than creating a loop
 using `next-extent'.
 
- - Function: next-extent extent
+ -- Function: next-extent extent
      Given an extent EXTENT, this function returns the next extent in
      the buffer or string's display order.  If EXTENT is a buffer or
      string, this returns the first extent in the buffer or string.
 
- - Function: previous-extent extent
+ -- Function: previous-extent extent
      Given an extent EXTENT, this function returns the previous extent
      in the buffer or string's display order.  If EXTENT is a buffer or
      string, this returns the last extent in the buffer or string.
@@ -4241,8 +4538,8 @@ using `next-extent'.
 \1f
 File: lispref.info,  Node: Mapping Over Extents,  Next: Extent Properties,  Prev: Finding Extents,  Up: Extents
 
-Mapping Over Extents
-====================
+47.5 Mapping Over Extents
+=========================
 
 The most basic and general function for mapping over extents is called
 `map-extents'.  You should read through the definition of this function
@@ -4251,8 +4548,8 @@ involved.  However, in practice you may find it more convenient to use
 the function `mapcar-extents' or to create a loop using the `before'
 argument to `extent-at' (*note Finding Extents::).
 
- - Function: map-extents function &optional object from to maparg flags
-          property value
+ -- Function: map-extents function &optional object from to maparg
+          flags property value
      This function maps FUNCTION over the extents which overlap a
      region in OBJECT.  OBJECT is normally a buffer or string but could
      be an extent (see below).  The region is normally bounded by
@@ -4348,7 +4645,7 @@ argument to `extent-at' (*note Finding Extents::).
    If you want to map over extents and accumulate a list of results,
 the following function may be more convenient than `map-extents'.
 
- - Function: mapcar-extents function &optional predicate
+ -- Function: mapcar-extents function &optional predicate
           buffer-or-string from to flags property value
      This function applies FUNCTION to all extents which overlap a
      region in BUFFER-OR-STRING.  The region is delimited by FROM and
@@ -4359,7 +4656,7 @@ the following function may be more convenient than `map-extents'.
      VALUE may also be used to control the extents passed to PREDICATE
      or FUNCTION, and have the same meaning as in `map-extents'.
 
- - Function: map-extent-children function &optional object from to
+ -- Function: map-extent-children function &optional object from to
           maparg flags property value
      This function is similar to `map-extents', but differs in that:
 
@@ -4373,15 +4670,15 @@ the following function may be more convenient than `map-extents'.
           (defun walk-extents (buffer &optional ignore)
             (map-extent-children 'walk-extents buffer))
 
- - Function: extent-in-region-p extent &optional from to flags
+ -- Function: extent-in-region-p extent &optional from to flags
      This function returns `t' if `map-extents' would visit EXTENT if
      called with the given arguments.
 
 \1f
 File: lispref.info,  Node: Extent Properties,  Next: Detached Extents,  Prev: Mapping Over Extents,  Up: Extents
 
-Properties of Extents
-=====================
+47.6 Properties of Extents
+==========================
 
 Each extent has a property list associating property names with values.
 Some property names have predefined meanings, and can usually only
@@ -4400,21 +4697,21 @@ from that parent (or from the root ancestor if the parent in turn has a
 parent), and setting a property of the extent actually sets that
 property on the parent.  *Note Extent Parents::.
 
- - Function: extent-property extent property &optional default
+ -- Function: extent-property extent property &optional default
      This function returns EXTENT's value for PROPERTY, or DEFAULT if
      no such property exists.
 
- - Function: extent-properties extent
+ -- Function: extent-properties extent
      This function returns a list of all of EXTENT's properties that do
      not have the value of `nil' (or the default value, for properties
      with predefined meanings).
 
- - Function: set-extent-property extent property value
+ -- Function: set-extent-property extent property value
      This function sets PROPERTY to VALUE in EXTENT. (If PROPERTY has a
      predefined meaning, only certain values are allowed, and some
      values may be converted to others before being stored.)
 
- - Function: set-extent-properties extent plist
+ -- Function: set-extent-properties extent plist
      Change some properties of EXTENT.  PLIST is a property list.  This
      is useful to change many extent properties at once.
 
@@ -4477,7 +4774,7 @@ along with their allowable values.
      moves over the extent.  This takes precedence over the
      `text-pointer-glyph' and `nontext-pointer-glyph' variables.  If
      for any reason this glyph is an invalid pointer, the standard
-     glyphs will be used as fallbacks.  *Note Mouse Pointer::.
+     glyphs will be used as fallbacks.  *Note External Glyphs::.
 
 `detachable'
      (Boolean) Whether this extent becomes detached when all of the
@@ -4542,7 +4839,7 @@ along with their allowable values.
    The following convenience functions are provided for accessing
 particular properties of an extent.
 
- - Function: extent-face extent
+ -- Function: extent-face extent
      This function returns the `face' property of EXTENT.  This might
      also return a list of face names.  Do not modify this list
      directly!  Instead, use `set-extent-face'.
@@ -4553,7 +4850,7 @@ particular properties of an extent.
      the return value of `extent-face' on the two extents will return
      the identical list.
 
- - Function: extent-mouse-face extent
+ -- Function: extent-mouse-face extent
      This function returns the `mouse-face' property of EXTENT.  This
      might also return a list of face names.  Do not modify this list
      directly!  Instead, use `set-extent-mouse-face'.
@@ -4561,26 +4858,26 @@ particular properties of an extent.
      Note that you can use `eq' to compare lists of faces as returned
      by `extent-mouse-face', just like for `extent-face'.
 
- - Function: extent-priority extent
+ -- Function: extent-priority extent
      This function returns the `priority' property of EXTENT.
 
- - Function: extent-keymap extent
+ -- Function: extent-keymap extent
      This function returns the `keymap' property of EXTENT.
 
- - Function: extent-begin-glyph-layout extent
+ -- Function: extent-begin-glyph-layout extent
      This function returns the `begin-glyph-layout' property of EXTENT,
      i.e. the layout policy associated with the EXTENT's begin glyph.
 
- - Function: extent-end-glyph-layout extent
+ -- Function: extent-end-glyph-layout extent
      This function returns the `end-glyph-layout' property of EXTENT,
      i.e. the layout policy associated with the EXTENT's end glyph.
 
- - Function: extent-begin-glyph extent
+ -- Function: extent-begin-glyph extent
      This function returns the `begin-glyph' property of EXTENT, i.e.
      the glyph object displayed at the beginning of EXTENT.  If there
      is none, `nil' is returned.
 
- - Function: extent-end-glyph extent
+ -- Function: extent-end-glyph extent
      This function returns the `end-glyph' property of EXTENT, i.e. the
      glyph object displayed at the end of EXTENT.  If there is none,
      `nil' is returned.
@@ -4588,46 +4885,46 @@ particular properties of an extent.
    The following convenience functions are provided for setting
 particular properties of an extent.
 
- - Function: set-extent-priority extent priority
+ -- Function: set-extent-priority extent priority
      This function sets the `priority' property of EXTENT to PRIORITY.
 
- - Function: set-extent-face extent face
+ -- Function: set-extent-face extent face
      This function sets the `face' property of EXTENT to FACE.
 
- - Function: set-extent-mouse-face extent face
+ -- Function: set-extent-mouse-face extent face
      This function sets the `mouse-face' property of EXTENT to FACE.
 
- - Function: set-extent-keymap extent keymap
+ -- Function: set-extent-keymap extent keymap
      This function sets the `keymap' property of EXTENT to KEYMAP.
      KEYMAP must be either a keymap object, or `nil'.
 
- - Function: set-extent-begin-glyph-layout extent layout
+ -- Function: set-extent-begin-glyph-layout extent layout
      This function sets the `begin-glyph-layout' property of EXTENT to
      LAYOUT.
 
- - Function: set-extent-end-glyph-layout extent layout
+ -- Function: set-extent-end-glyph-layout extent layout
      This function sets the `end-glyph-layout' property of EXTENT to
      LAYOUT.
 
- - Function: set-extent-begin-glyph extent begin-glyph &optional layout
+ -- Function: set-extent-begin-glyph extent begin-glyph &optional layout
      This function sets the `begin-glyph' and `glyph-layout' properties
      of EXTENT to BEGIN-GLYPH and LAYOUT, respectively. (LAYOUT
      defaults to `text' if not specified.)
 
- - Function: set-extent-end-glyph extent end-glyph &optional layout
+ -- Function: set-extent-end-glyph extent end-glyph &optional layout
      This function sets the `end-glyph' and `glyph-layout' properties
      of EXTENT to END-GLYPH and LAYOUT, respectively. (LAYOUT defaults
      to `text' if not specified.)
 
- - Function: set-extent-initial-redisplay-function extent function
+ -- Function: set-extent-initial-redisplay-function extent function
      This function sets the `initial-redisplay-function' property of the
      extent to FUNCTION.
 
 \1f
 File: lispref.info,  Node: Detached Extents,  Next: Extent Parents,  Prev: Extent Properties,  Up: Extents
 
-Detached Extents
-================
+47.7 Detached Extents
+=====================
 
 A detached extent is an extent that is not attached to a buffer or
 string but can be re-inserted.  Detached extents have a start position
@@ -4638,21 +4935,21 @@ this property is not set, the extent becomes a zero-length extent.
 (Zero-length extents with the `detachable' property set behave
 specially.  *Note zero-length extents: Extent Endpoints.)
 
- - Function: detach-extent extent
+ -- Function: detach-extent extent
      This function detaches EXTENT from its buffer or string.  If
      EXTENT has the `duplicable' property, its detachment is tracked by
      the undo mechanism.  *Note Duplicable Extents::.
 
- - Function: extent-detached-p extent
+ -- Function: extent-detached-p extent
      This function returns `nil' if EXTENT is detached, and `t'
      otherwise.
 
- - Function: copy-extent extent &optional object
+ -- Function: copy-extent extent &optional object
      This function makes a copy of EXTENT.  It is initially detached.
      Optional argument OBJECT defaults to EXTENT's object (normally a
      buffer or string, but could be `nil').
 
- - Function: insert-extent extent &optional start end no-hooks object
+ -- Function: insert-extent extent &optional start end no-hooks object
      This function inserts EXTENT from START to END in OBJECT (a buffer
      or string).  If EXTENT is detached from a different buffer or
      string, or in most cases when EXTENT is already attached, the
@@ -4665,8 +4962,8 @@ specially.  *Note zero-length extents: Extent Endpoints.)
 \1f
 File: lispref.info,  Node: Extent Parents,  Next: Duplicable Extents,  Prev: Detached Extents,  Up: Extents
 
-Extent Parents
-==============
+47.8 Extent Parents
+===================
 
 An extent can have a parent extent set for it.  If this is the case,
 the extent derives all its properties from that extent and has no
@@ -4683,20 +4980,20 @@ you cannot create an inheritance loop--this is explicitly disallowed.
 
    Parent extents are used to implement the extents over the modeline.
 
- - Function: set-extent-parent extent parent
+ -- Function: set-extent-parent extent parent
      This function sets the parent of EXTENT to PARENT.  If PARENT is
      `nil', the extent is set to have no parent.
 
- - Function: extent-parent extent
+ -- Function: extent-parent extent
      This function return the parents (if any) of EXTENT, or `nil'.
 
- - Function: extent-children extent
+ -- Function: extent-children extent
      This function returns a list of the children (if any) of EXTENT.
      The children of an extent are all those extents whose parent is
      that extent.  This function does not recursively trace children of
      children.
 
- - Function: extent-descendants extent
+ -- Function: extent-descendants extent
      This function returns a list of all descendants of EXTENT,
      including EXTENT.  This recursively applies `extent-children' to
      any children of EXTENT, until no more children can be found.
@@ -4704,8 +5001,8 @@ you cannot create an inheritance loop--this is explicitly disallowed.
 \1f
 File: lispref.info,  Node: Duplicable Extents,  Next: Extents and Events,  Prev: Extent Parents,  Up: Extents
 
-Duplicable Extents
-==================
+47.9 Duplicable Extents
+=======================
 
 If an extent has the `duplicable' property, it will be copied into
 strings, so that kill, yank, and undo commands will restore or copy it.
@@ -4770,8 +5067,8 @@ strings, so that kill, yank, and undo commands will restore or copy it.
 \1f
 File: lispref.info,  Node: Extents and Events,  Next: Atomic Extents,  Prev: Duplicable Extents,  Up: Extents
 
-Interaction of Extents with Keyboard and Mouse Events
-=====================================================
+47.10 Interaction of Extents with Keyboard and Mouse Events
+===========================================================
 
 If an extent has the `mouse-face' property set, it will be highlighted
 when the mouse passes over it.  This includes the begin-glyph, but not
@@ -4781,7 +5078,7 @@ The effect is as if a pseudo-extent with the `mouse-face' face were
 inserted after the extent in the display order (*note Extent
 Endpoints::, display order).
 
- - Variable: mouse-highlight-priority
+ -- Variable: mouse-highlight-priority
      This variable holds the priority to use when merging in the
      highlighting pseudo-extent.  The default is 1000.  This is
      purposely set very high so that the highlighting pseudo-extent
@@ -4792,13 +5089,13 @@ Endpoints::, display order).
 extent at a time can be highlighted in this fashion, and any other
 highlighted extent will be de-highlighted.
 
- - Function: highlight-extent extent &optional highlight-p
+ -- Function: highlight-extent extent &optional highlight-p
      This function highlights (if HIGHLIGHT-P is non-`nil') or
      de-highlights (if HIGHLIGHT-P is `nil') EXTENT, if EXTENT has the
      `mouse-face' property. (Nothing happens if EXTENT does not have
      the `mouse-face' property.)
 
- - Function: force-highlight-extent extent &optional highlight-p
+ -- Function: force-highlight-extent extent &optional highlight-p
      This function is similar to `highlight-extent' but highlights or
      de-highlights the extent regardless of whether it has the
      `mouse-face' property.
@@ -4811,8 +5108,8 @@ defined in the keymap is as normal for the buffer.
 \1f
 File: lispref.info,  Node: Atomic Extents,  Prev: Extents and Events,  Up: Extents
 
-Atomic Extents
-==============
+47.11 Atomic Extents
+====================
 
 If the Lisp file `atomic-extents' is loaded, then the atomic extent
 facility is available.  An "atomic extent" is an extent for which
@@ -4824,8 +5121,8 @@ when selecting text, either all or none of the extent is selected.
 \1f
 File: lispref.info,  Node: Specifiers,  Next: Faces and Window-System Objects,  Prev: Extents,  Up: Top
 
-Specifiers
-**********
+48 Specifiers
+*************
 
 A specifier is an object used to keep track of a property whose value
 should vary according to _display context_, a window, a frame, or
@@ -4836,7 +5133,7 @@ actually a specifier object.  The specifier object, in turn, is
 "instanced" in a particular situation to yield the real value of the
 property in the current context.
 
- - Function: specifierp object
+ -- Function: specifierp object
      This function returns non-`nil' if OBJECT is a specifier.
 
 * Menu:
@@ -4867,8 +5164,8 @@ property in the current context.
 \1f
 File: lispref.info,  Node: Introduction to Specifiers,  Next: Simple Specifier Usage,  Up: Specifiers
 
-Introduction to Specifiers
-==========================
+48.1 Introduction to Specifiers
+===============================
 
 Perhaps the most useful way to explain specifiers is via an analogy.
 Emacs Lisp programmers are used to _buffer-local variables_ *Note
@@ -4950,8 +5247,8 @@ of the default face be
 \1f
 File: lispref.info,  Node: Simple Specifier Usage,  Next: Specifiers In-Depth,  Prev: Introduction to Specifiers,  Up: Specifiers
 
-Simple Specifier Usage
-======================
+48.2 Simple Specifier Usage
+===========================
 
 A useful specifier application is adding a button to a toolbar.  XEmacs
 provides several toolbars, one along each edge of the frame.  Normally
@@ -4983,7 +5280,7 @@ applications.  The rest of the button descriptor is straightforward.
           (lambda () (interactive) (execute-kbd-macro ,last-kbd-macro))
           t
           "Execute a previously defined keyboard macro." ])
-     
+
      (set-specifier default-toolbar
                     (cons toolbar-my-kbd-macro-button
                           (specifier-specs default-toolbar 'global))
@@ -5014,7 +5311,7 @@ my use of Mule.  On non-Mule XEmacsen, just use `specifier-specs'.)
 
      (cdr (first (specifier-specs (face-font 'default) 'global)))
      => "-*--14-*jisx0208*-0"
-     
+
      (specifier-instance (face-font 'default))
      #<font-instance "-*--14-*jisx0208*-0" on #<x-device on ":0.0" 0x970> 0xe0028b 0x176b>
 
@@ -5043,7 +5340,7 @@ useful in a LaTeX buffer!)  Here's one way to implement this:
           (lambda () (interactive) (execute-kbd-macro ,last-kbd-macro))
           t
           "Execute a previously defined keyboard macro." ])
-     
+
      (set-specifier default-toolbar
                     (cons toolbar-my-kbd-macro-button
                           (cond ((specifier-specs default-toolbar
@@ -5082,8 +5379,8 @@ method!)
 \1f
 File: lispref.info,  Node: Specifiers In-Depth,  Next: Specifier Instancing,  Prev: Simple Specifier Usage,  Up: Specifiers
 
-In-Depth Overview of a Specifier
-================================
+48.3 In-Depth Overview of a Specifier
+=====================================
 
 Having variables vary according the editing context is very useful, and
 the buffer is the natural "atomic" unit of editing context.  In a GUI
@@ -5197,8 +5494,8 @@ example.
 \1f
 File: lispref.info,  Node: Specifier Instancing,  Next: Specifier Types,  Prev: Specifiers In-Depth,  Up: Specifiers
 
-How a Specifier Is Instanced
-============================
+48.4 How a Specifier Is Instanced
+=================================
 
 Instancing of a specifier in a particular window domain proceeds as
 follows:
@@ -5259,8 +5556,8 @@ locale.
 \1f
 File: lispref.info,  Node: Specifier Types,  Next: Adding Specifications,  Prev: Specifier Instancing,  Up: Specifiers
 
-Specifier Types
-===============
+48.5 Specifier Types
+====================
 
 There are various different types of specifiers.  The type of a
 specifier controls what sorts of instantiators are valid, how an
@@ -5340,7 +5637,7 @@ fonts, colors, and face-boolean specifiers.  *Note Glyphs::, for more
 information about image specifiers.  *Note Toolbar::, for more
 information on toolbar specifiers.
 
- - Function: specifier-type specifier
+ -- Function: specifier-type specifier
      This function returns the type of SPECIFIER.  The returned value
      will be a symbol: one of `integer', `boolean', etc., as listed in
      the above table.
@@ -5348,41 +5645,41 @@ information on toolbar specifiers.
    Functions are also provided to query whether an object is a
 particular kind of specifier:
 
- - Function: boolean-specifier-p object
+ -- Function: boolean-specifier-p object
      This function returns non-`nil' if OBJECT is a boolean specifier.
 
- - Function: integer-specifier-p object
+ -- Function: integer-specifier-p object
      This function returns non-`nil' if OBJECT is an integer specifier.
 
- - Function: natnum-specifier-p object
+ -- Function: natnum-specifier-p object
      This function returns non-`nil' if OBJECT is a natnum specifier.
 
- - Function: generic-specifier-p object
+ -- Function: generic-specifier-p object
      This function returns non-`nil' if OBJECT is a generic specifier.
 
- - Function: face-boolean-specifier-p object
+ -- Function: face-boolean-specifier-p object
      This function returns non-`nil' if OBJECT is a face-boolean
      specifier.
 
- - Function: toolbar-specifier-p object
+ -- Function: toolbar-specifier-p object
      This function returns non-`nil' if OBJECT is a toolbar specifier.
 
- - Function: font-specifier-p object
+ -- Function: font-specifier-p object
      This function returns non-`nil' if OBJECT is a font specifier.
 
- - Function: color-specifier-p object
+ -- Function: color-specifier-p object
      This function returns non-`nil' if OBJECT is a color specifier.
 
- - Function: image-specifier-p object
+ -- Function: image-specifier-p object
      This function returns non-`nil' if OBJECT is an image specifier.
 
 \1f
 File: lispref.info,  Node: Adding Specifications,  Next: Retrieving Specifications,  Prev: Specifier Types,  Up: Specifiers
 
-Adding specifications to a Specifier
-====================================
+48.6 Adding specifications to a Specifier
+=========================================
 
- - Function: add-spec-to-specifier specifier instantiator &optional
+ -- Function: add-spec-to-specifier specifier instantiator &optional
           locale tag-set how-to-add
      This function adds a specification to SPECIFIER.  The
      specification maps from LOCALE (which should be a window, buffer,
@@ -5435,7 +5732,7 @@ Adding specifications to a Specifier
      locale type with the function `specifier-spec-list' or
      `specifier-specs'.
 
- - Function: add-spec-list-to-specifier specifier spec-list &optional
+ -- Function: add-spec-list-to-specifier specifier spec-list &optional
           how-to-add
      This function adds a "spec-list" (a list of specifications) to
      SPECIFIER.  The format of a spec-list is
@@ -5471,7 +5768,7 @@ Adding specifications to a Specifier
      specifiers.  In those cases it's probably best to use
      `add-spec-to-specifier' or `add-spec-list-to-specifier'.
 
- - Special Form: let-specifier specifier-list &rest body
+ -- Special Form: let-specifier specifier-list &rest body
      This special form temporarily adds specifications to specifiers,
      evaluates forms in BODY and restores the specifiers to their
      previous states.  The specifiers and their temporary
@@ -5505,7 +5802,7 @@ Adding specifications to a Specifier
           (let-specifier ((modeline-shadow-thickness 0 (selected-window)))
             (sit-for 1))
 
- - Function: set-specifier specifier value &optional locale tag-set
+ -- Function: set-specifier specifier value &optional locale tag-set
           how-to-add
      This function adds some specifications to SPECIFIER.  VALUE can be
      a single instantiator or tagged instantiator (added as a global
@@ -5538,7 +5835,7 @@ Adding specifications to a Specifier
      functions always work with fully-qualified spec-lists; thus, there
      is no ambiguity.
 
- - Function: canonicalize-inst-pair inst-pair specifier-type &optional
+ -- Function: canonicalize-inst-pair inst-pair specifier-type &optional
           noerror
      This function canonicalizes the given INST-PAIR.
 
@@ -5553,7 +5850,7 @@ Adding specifications to a Specifier
      If NOERROR is non-`nil', signal an error if the inst-pair is
      invalid; otherwise return `t'.
 
- - Function: canonicalize-inst-list inst-list specifier-type &optional
+ -- Function: canonicalize-inst-list inst-list specifier-type &optional
           noerror
      This function canonicalizes the given INST-LIST (a list of
      inst-pairs).
@@ -5569,7 +5866,7 @@ Adding specifications to a Specifier
      If NOERROR is non-`nil', signal an error if the inst-list is
      invalid; otherwise return `t'.
 
- - Function: canonicalize-spec spec specifier-type &optional noerror
+ -- Function: canonicalize-spec spec specifier-type &optional noerror
      This function canonicalizes the given SPEC (a specification).
 
      SPECIFIER-TYPE specifies the type of specifier that this SPEC-LIST
@@ -5583,7 +5880,7 @@ Adding specifications to a Specifier
      If NOERROR is `nil', signal an error if the specification is
      invalid; otherwise return `t'.
 
- - Function: canonicalize-spec-list spec-list specifier-type &optional
+ -- Function: canonicalize-spec-list spec-list specifier-type &optional
           noerror
      This function canonicalizes the given SPEC-LIST (a list of
      specifications).
@@ -5653,10 +5950,10 @@ Adding specifications to a Specifier
 \1f
 File: lispref.info,  Node: Retrieving Specifications,  Next: Specifier Tag Functions,  Prev: Adding Specifications,  Up: Specifiers
 
-Retrieving the Specifications from a Specifier
-==============================================
+48.7 Retrieving the Specifications from a Specifier
+===================================================
 
- - Function: specifier-spec-list specifier &optional locale tag-set
+ -- Function: specifier-spec-list specifier &optional locale tag-set
           exact-p
      This function returns the spec-list of specifications for
      SPECIFIER in LOCALE.
@@ -5683,7 +5980,7 @@ Retrieving the Specifications from a Specifier
      is non-`nil', however, TAG-SET must be equal to an instantiator's
      tag set for the instantiator to be returned.
 
- - Function: specifier-specs specifier &optional locale tag-set exact-p
+ -- Function: specifier-specs specifier &optional locale tag-set exact-p
      This function returns the specification(s) for SPECIFIER in LOCALE.
 
      If LOCALE is a single locale or is a list of one element
@@ -5708,7 +6005,7 @@ Retrieving the Specifications from a Specifier
           from there being no instantiators at all.
 
 
- - Function: specifier-fallback specifier
+ -- Function: specifier-fallback specifier
      This function returns the fallback value for SPECIFIER.  Fallback
      values are provided by the C code for certain built-in specifiers
      to make sure that instancing won't fail even if all specs are
@@ -5731,8 +6028,8 @@ Retrieving the Specifications from a Specifier
 \1f
 File: lispref.info,  Node: Specifier Tag Functions,  Next: Specifier Instancing Functions,  Prev: Retrieving Specifications,  Up: Specifiers
 
-Working With Specifier Tags
-===========================
+48.8 Working With Specifier Tags
+================================
 
 A specifier tag set is an entity that is attached to an instantiator
 and can be used to restrict the scope of that instantiator to a
@@ -5757,25 +6054,25 @@ all tags in the tag set attached to that instantiator.
    Most of the time, a tag set is not specified, and the instantiator
 gets a null tag set, which matches all devices.
 
- - Function: valid-specifier-tag-p tag
+ -- Function: valid-specifier-tag-p tag
      This function returns non-`nil' if TAG is a valid specifier tag.
 
- - Function: valid-specifier-tag-set-p tag-set
+ -- Function: valid-specifier-tag-set-p tag-set
      This function returns non-`nil' if TAG-SET is a valid specifier
      tag set.
 
- - Function: canonicalize-tag-set tag-set
+ -- Function: canonicalize-tag-set tag-set
      This function canonicalizes the given tag set.  Two canonicalized
      tag sets can be compared with `equal' to see if they represent the
      same tag set. (Specifically, canonicalizing involves sorting by
      symbol name and removing duplicates.)
 
- - Function: device-matches-specifier-tag-set-p device tag-set
+ -- Function: device-matches-specifier-tag-set-p device tag-set
      This function returns non-`nil' if DEVICE matches specifier tag
      set TAG-SET.  This means that DEVICE matches each tag in the tag
      set.
 
- - Function: define-specifier-tag tag &optional predicate
+ -- Function: define-specifier-tag tag &optional predicate
      This function defines a new specifier tag.  If PREDICATE is
      specified, it should be a function of one argument (a device) that
      specifies whether the tag matches that particular device.  If
@@ -5785,25 +6082,25 @@ gets a null tag set, which matches all devices.
      you cannot redefine the built-in specifier tags (the device types
      and classes) or the symbols `nil', `t', `all', or `global'.
 
- - Function: device-matching-specifier-tag-list &optional device
+ -- Function: device-matching-specifier-tag-list &optional device
      This function returns a list of all specifier tags matching
      DEVICE.  DEVICE defaults to the selected device if omitted.
 
- - Function: specifier-tag-list
+ -- Function: specifier-tag-list
      This function returns a list of all currently-defined specifier
      tags.  This includes the built-in ones (the device types and
      classes).
 
- - Function: specifier-tag-predicate tag
+ -- Function: specifier-tag-predicate tag
      This function returns the predicate for the given specifier tag.
 
 \1f
 File: lispref.info,  Node: Specifier Instancing Functions,  Next: Specifier Examples,  Prev: Specifier Tag Functions,  Up: Specifiers
 
-Functions for Instancing a Specifier
-====================================
+48.9 Functions for Instancing a Specifier
+=========================================
 
- - Function: specifier-instance specifier &optional domain default
+ -- Function: specifier-instance specifier &optional domain default
           no-fallback
      This function instantiates SPECIFIER (returns its value) in
      DOMAIN.  If no instance can be generated for this domain, return
@@ -5857,7 +6154,7 @@ Functions for Instancing a Specifier
      function), the returned value will be a font-instance object.  For
      images, the returned value will be a string, pixmap, or subwindow.
 
- - Function: specifier-matching-instance specifier matchspec &optional
+ -- Function: specifier-matching-instance specifier matchspec &optional
           domain default no-fallback
      This function returns an instance for SPECIFIER in DOMAIN that
      matches MATCHSPEC.  If no instance can be generated for DOMAIN,
@@ -5885,7 +6182,7 @@ Functions for Instancing a Specifier
           display a particular character.  (This is what redisplay
           does, in fact.)
 
- - Function: specifier-instance-from-inst-list specifier domain
+ -- Function: specifier-instance-from-inst-list specifier domain
           inst-list &optional default
      This function attempts to convert a particular inst-list into an
      instance.  This attempts to instantiate INST-LIST in the given
@@ -5897,8 +6194,8 @@ Functions for Instancing a Specifier
 \1f
 File: lispref.info,  Node: Specifier Examples,  Next: Creating Specifiers,  Prev: Specifier Instancing Functions,  Up: Specifiers
 
-Examples of Specifier Usage
-===========================
+48.10 Examples of Specifier Usage
+=================================
 
 Now let us present an example to clarify the theoretical discussions we
 have been through.  In this example, we will use the general specifier
@@ -5966,7 +6263,7 @@ or could be displayed in many different frames on different devices.
 "frame-local" variables.
 
      ;; Implementation
-     
+
      ;; There are probably better ways to write this macro
      ;; Heaven help you if VAR is a buffer-local; you will become very
      ;; confused.  Probably should error on that.
@@ -5976,32 +6273,32 @@ or could be displayed in many different frames on different devices.
          `(progn
            (setq ,var (make-specifier 'generic))
            (add-spec-to-specifier ,var ',val 'global))))
-     
+
      ;; I'm not real happy about this terminology, how can `setq' be a defun?
      ;; But `frame-set' would have people writing "(frame-set 'foo value)".
      (defun frame-setq (var value &optional frame)
        "Set the local value of VAR to VALUE in FRAME.
-     
+
      FRAME defaults to the selected frame."
        (and frame (not (framep frame))
             (error 'invalid-argument "FRAME must be a frame", frame))
        (add-spec-to-specifier var value (or frame (selected-frame))))
-     
+
      (defun frame-value (var &optional frame)
        "Get the local value of VAR in FRAME.
-     
+
      FRAME defaults to the selected frame."
        (and frame (not (framep frame))
             (error 'invalid-argument "FRAME must be a frame", frame))
        ;; this is not just a map from frames to values; it also falls back
        ;; to the global value
        (specifier-instance var (or frame (selected-frame))))
-     
+
      ;; for completeness
      (defun frame-set-default (var value)
        "Set the default value of frame-local variable VAR to VALUE."
        (add-spec-to-specifier var value 'global))
-     
+
      (defun frame-get-default (var)
        "Get the default value of frame-local variable VAR."
        (car (specifier-specs var 'global)))
@@ -6011,72 +6308,72 @@ and switch to `*scratch*' to play.  Things will work differently if you
 already have a variable named `foo'.
 
      ;; Usage
-     
+
      foo
      error--> Symbol's value as variable is void: foo
-     
+
      (define-frame-local-variable foo)
      => nil
-     
+
      ;; the value of foo is a specifier, which is an opaque object;
      ;; you must use accessor functions to get values
-     
+
      foo
      => #<generic-specifier global=(nil) 0x4f5cb>
-     
+
      ;; since no frame-local value is set, the global value (which is the
      ;; constant `nil') is returned
      (frame-value foo)
      => nil
-     
+
      ;; get the default explicitly
      (frame-get-default foo)
      => nil
-     
+
      ;; get the whole specification list
      (specifier-specs foo 'global)
      => (nil)
-     
+
      ;; give foo a frame-local value
-     
+
      (frame-setq foo 'bar)
      => nil
-     
+
      ;; access foo in several ways
-     
+
      ;; Note that the print function for this kind of specifier only
      ;; gives you the global setting.  To get the full list of specs for
      ;; debugging or study purposes, you must use specifier-specs or
      ;; specifier-spec-list.
      foo
      => #<generic-specifier global=(nil) 0x4f5cb>
-     
+
      ;; get the whole specification list
      (specifier-specs foo)
      => ((#<x-frame "Message" 0x1bd66> (nil . bar)) (global (nil)))
-     
+
      ;; get the frame-local value
      (frame-value foo)
      => bar
-     
+
      ;; get the default explicitly
      (frame-get-default foo)
      => nil
-     
+
      ;; Switch to another frame and evaluate:
      ;; C-x 5 o M-: (frame-setq foo 'baz) RET M-: (frame-value foo) RET
      => baz
-     
+
      ;; Switch back.
      ;; C-x 5 o
      (specifier-specs foo)
      => ((#<x-frame "emacs" 0x28ec> (nil . baz))
          (#<x-frame "Message" 0x1bd66> (nil . bar))
          (global (nil)))
-     
+
      (frame-value foo)
      => bar
-     
+
      (frame-get-default foo)
      => nil
 
@@ -6095,10 +6392,10 @@ down.
 \1f
 File: lispref.info,  Node: Creating Specifiers,  Next: Specifier Validation Functions,  Prev: Specifier Examples,  Up: Specifiers
 
-Creating New Specifier Objects
-==============================
+48.11 Creating New Specifier Objects
+====================================
 
- - Function: make-specifier type
+ -- Function: make-specifier type
      This function creates a new specifier.
 
      A specifier is an object that can be used to keep track of a
@@ -6124,7 +6421,7 @@ Creating New Specifier Objects
      `make-image-specifier', `make-face-boolean-specifier', and
      `make-toolbar-specifier'.
 
- - Function: make-specifier-and-init type spec-list &optional
+ -- Function: make-specifier-and-init type spec-list &optional
           dont-canonicalize
      This function creates and initializes a new specifier.
 
@@ -6139,7 +6436,7 @@ Creating New Specifier Objects
      argument DONT-CANONICALIZE is non-`nil', canonicalization is not
      performed, and the SPEC-LIST must already be in full form.
 
- - Function: make-integer-specifier spec-list
+ -- Function: make-integer-specifier spec-list
      Return a new `integer' specifier object with the given
      specification list.  SPEC-LIST can be a list of specifications
      (each of which is a cons of a locale and a list of instantiators),
@@ -6147,7 +6444,7 @@ Creating New Specifier Objects
 
      Valid instantiators for integer specifiers are integers.
 
- - Function: make-boolean-specifier spec-list
+ -- Function: make-boolean-specifier spec-list
      Return a new `boolean' specifier object with the given
      specification list.  SPEC-LIST can be a list of specifications
      (each of which is a cons of a locale and a list of instantiators),
@@ -6155,7 +6452,7 @@ Creating New Specifier Objects
 
      Valid instantiators for boolean specifiers are `t' and `nil'.
 
- - Function: make-natnum-specifier spec-list
+ -- Function: make-natnum-specifier spec-list
      Return a new `natnum' specifier object with the given specification
      list.  SPEC-LIST can be a list of specifications (each of which is
      a cons of a locale and a list of instantiators), a single
@@ -6164,7 +6461,7 @@ Creating New Specifier Objects
      Valid instantiators for natnum specifiers are non-negative
      integers.
 
- - Function: make-generic-specifier spec-list
+ -- Function: make-generic-specifier spec-list
      Return a new `generic' specifier object with the given
      specification list.  SPEC-LIST can be a list of specifications
      (each of which is a cons of a locale and a list of instantiators),
@@ -6173,7 +6470,7 @@ Creating New Specifier Objects
      Valid instantiators for generic specifiers are all Lisp values.
      They are returned back unchanged when a specifier is instantiated.
 
- - Function: make-display-table-specifier spec-list
+ -- Function: make-display-table-specifier spec-list
      Return a new `display-table' specifier object with the given spec
      list.  SPEC-LIST can be a list of specifications (each of which is
      a cons of a locale and a list of instantiators), a single
@@ -6186,66 +6483,66 @@ Creating New Specifier Objects
 \1f
 File: lispref.info,  Node: Specifier Validation Functions,  Next: Other Specification Functions,  Prev: Creating Specifiers,  Up: Specifiers
 
-Functions for Checking the Validity of Specifier Components
-===========================================================
+48.12 Functions for Checking the Validity of Specifier Components
+=================================================================
 
- - Function: valid-specifier-domain-p domain
+ -- Function: valid-specifier-domain-p domain
      This function returns non-`nil' if DOMAIN is a valid specifier
      domain.  A domain is used to instance a specifier (i.e. determine
      the specifier's value in that domain).  Valid domains are a
      window, frame, or device.  (`nil' is not valid.)
 
- - Function: valid-specifier-locale-p locale
+ -- Function: valid-specifier-locale-p locale
      This function returns non-`nil' if LOCALE is a valid specifier
      locale.  Valid locales are a device, a frame, a window, a buffer,
      and `global'.  (`nil' is not valid.)
 
- - Function: valid-specifier-locale-type-p locale-type
+ -- Function: valid-specifier-locale-type-p locale-type
      Given a specifier LOCALE-TYPE, this function returns non-`nil' if
      it is valid.  Valid locale types are the symbols `global',
      `device', `frame', `window', and `buffer'. (Note, however, that in
      functions that accept either a locale or a locale type, `global'
      is considered an individual locale.)
 
- - Function: valid-specifier-type-p specifier-type
+ -- Function: valid-specifier-type-p specifier-type
      Given a SPECIFIER-TYPE, this function returns non-`nil' if it is
      valid.  Valid types are `generic', `integer', `boolean', `color',
      `font', `image', `face-boolean', and `toolbar'.
 
- - Function: valid-specifier-tag-p tag
+ -- Function: valid-specifier-tag-p tag
      This function returns non-`nil' if TAG is a valid specifier tag.
 
- - Function: valid-instantiator-p instantiator specifier-type
+ -- Function: valid-instantiator-p instantiator specifier-type
      This function returns non-`nil' if INSTANTIATOR is valid for
      SPECIFIER-TYPE.
 
- - Function: valid-inst-list-p inst-list type
+ -- Function: valid-inst-list-p inst-list type
      This function returns non-`nil' if INST-LIST is valid for
      specifier type TYPE.
 
- - Function: valid-spec-list-p spec-list type
+ -- Function: valid-spec-list-p spec-list type
      This function returns non-`nil' if SPEC-LIST is valid for
      specifier type TYPE.
 
- - Function: check-valid-instantiator instantiator specifier-type
+ -- Function: check-valid-instantiator instantiator specifier-type
      This function signals an error if INSTANTIATOR is invalid for
      SPECIFIER-TYPE.
 
- - Function: check-valid-inst-list inst-list type
+ -- Function: check-valid-inst-list inst-list type
      This function signals an error if INST-LIST is invalid for
      specifier type TYPE.
 
- - Function: check-valid-spec-list spec-list type
+ -- Function: check-valid-spec-list spec-list type
      This function signals an error if SPEC-LIST is invalid for
      specifier type TYPE.
 
 \1f
 File: lispref.info,  Node: Other Specification Functions,  Prev: Specifier Validation Functions,  Up: Specifiers
 
-Other Functions for Working with Specifications in a Specifier
-==============================================================
+48.13 Other Functions for Working with Specifications in a Specifier
+====================================================================
 
- - Function: copy-specifier specifier &optional dest locale tag-set
+ -- Function: copy-specifier specifier &optional dest locale tag-set
           exact-p how-to-add
      This function copies SPECIFIER to DEST, or creates a new one if
      DEST is `nil'.
@@ -6275,7 +6572,8 @@ Other Functions for Working with Specifications in a Specifier
      types are copied will first be completely erased in DEST.
      Otherwise, it is the same as in `add-spec-to-specifier'.
 
- - Function: remove-specifier specifier &optional locale tag-set exact-p
+ -- Function: remove-specifier specifier &optional locale tag-set
+          exact-p
      This function removes specification(s) for SPECIFIER.
 
      If LOCALE is a particular locale (a buffer, window, frame, device,
@@ -6300,7 +6598,7 @@ Other Functions for Working with Specifications in a Specifier
      is non-`nil', however, TAG-SET must be equal to an instantiator's
      tag set for the instantiator to be removed.
 
- - Function: map-specifier specifier func &optional locale maparg
+ -- Function: map-specifier specifier func &optional locale maparg
      This function applies FUNC to the specification(s) for LOCALE in
      SPECIFIER.
 
@@ -6317,14 +6615,14 @@ Other Functions for Working with Specifications in a Specifier
      will stop and the returned value becomes the value returned from
      `map-specifier'.  Otherwise, `map-specifier' returns `nil'.
 
- - Function: specifier-locale-type-from-locale locale
+ -- Function: specifier-locale-type-from-locale locale
      Given a specifier LOCALE, this function returns its type.
 
 \1f
 File: lispref.info,  Node: Faces and Window-System Objects,  Next: Glyphs,  Prev: Specifiers,  Up: Top
 
-Faces and Window-System Objects
-*******************************
+49 Faces and Window-System Objects
+**********************************
 
 * Menu:
 
@@ -6335,8 +6633,8 @@ Faces and Window-System Objects
 \1f
 File: lispref.info,  Node: Faces,  Next: Fonts,  Up: Faces and Window-System Objects
 
-Faces
-=====
+49.1 Faces
+==========
 
 A "face" is a named collection of graphical properties: font,
 foreground color, background color, background pixmap, optional
@@ -6373,8 +6671,8 @@ mark.
 \1f
 File: lispref.info,  Node: Merging Faces,  Next: Basic Face Functions,  Up: Faces
 
-Merging Faces for Display
--------------------------
+49.1.1 Merging Faces for Display
+--------------------------------
 
 Here are all the ways to specify which face to use for display of text:
 
@@ -6414,8 +6712,8 @@ used to color it.
 \1f
 File: lispref.info,  Node: Basic Face Functions,  Next: Face Properties,  Prev: Merging Faces,  Up: Faces
 
-Basic Functions for Working with Faces
---------------------------------------
+49.1.2 Basic Functions for Working with Faces
+---------------------------------------------
 
 The properties a face can specify include the font, the foreground
 color, the background color, the background pixmap, the underlining,
@@ -6426,7 +6724,7 @@ the corresponding property of the `default' face.
 
    Here are the basic primitives for working with faces.
 
- - Function: make-face name &optional doc-string temporary
+ -- Function: make-face name &optional doc-string temporary
      This function defines and returns a new face named NAME, initially
      with all properties unspecified.  It does nothing if there is
      already a face named NAME.  Optional argument DOC-STRING specifies
@@ -6436,16 +6734,16 @@ the corresponding property of the `default' face.
      or Lisp code (otherwise, the face will continue to exist
      indefinitely even if it is not used).
 
- - Function: face-list &optional temporary
+ -- Function: face-list &optional temporary
      This function returns a list of the names of all defined faces.  If
      TEMPORARY is `nil', only the permanent faces are included.  If it
      is `t', only the temporary faces are included.  If it is any other
      non-`nil' value both permanent and temporary are included.
 
- - Function: facep object
+ -- Function: facep object
      This function returns `t' if OBJECT is a face, else `nil'.
 
- - Function: copy-face old-face new-name &optional locale tag-set
+ -- Function: copy-face old-face new-name &optional locale tag-set
           exact-p how-to-add
      This function defines a new face named NEW-NAME which is a copy of
      the existing face named OLD-FACE.  If there is already a face
@@ -6456,407 +6754,3 @@ the corresponding property of the `default' face.
      the old face rather than the whole face, and are as in
      `copy-specifier' (*note Specifiers::).
 
-\1f
-File: lispref.info,  Node: Face Properties,  Next: Face Convenience Functions,  Prev: Basic Face Functions,  Up: Faces
-
-Face Properties
----------------
-
-You can examine and modify the properties of an existing face with the
-following functions.
-
-   The following symbols have predefined meanings:
-
-`foreground'
-     The foreground color of the face.
-
-`background'
-     The background color of the face.
-
-`font'
-     The font used to display text covered by this face.
-
-`display-table'
-     The display table of the face.
-
-`background-pixmap'
-     The pixmap displayed in the background of the face.  Only used by
-     faces on X devices.
-
-`underline'
-     Underline all text covered by this face.
-
-`highlight'
-     Highlight all text covered by this face.  Only used by faces on TTY
-     devices.
-
-`dim'
-     Dim all text covered by this face.  Only used by faces on TTY
-     devices.
-
-`blinking'
-     Blink all text covered by this face.  Only used by faces on TTY
-     devices.
-
-`reverse'
-     Reverse the foreground and background colors.  Only used by faces
-     on TTY devices.
-
-`doc-string'
-     Description of what the face's normal use is.  NOTE: This is not a
-     specifier, unlike all the other built-in properties, and cannot
-     contain locale-specific values.
-
- - Function: set-face-property face property value &optional locale
-          tag-set how-to-add
-     This function changes a property of a FACE.
-
-     For built-in properties, the actual value of the property is a
-     specifier and you cannot change this; but you can change the
-     specifications within the specifier, and that is what this
-     function will do.  For user-defined properties, you can use this
-     function to either change the actual value of the property or, if
-     this value is a specifier, change the specifications within it.
-
-     If PROPERTY is a built-in property, the specifications to be added
-     to this property can be supplied in many different ways:
-
-          If VALUE is a simple instantiator (e.g. a string naming a
-          font or color) or a list of instantiators, then the
-          instantiator(s) will be added as a specification of the
-          property for the given LOCALE (which defaults to `global' if
-          omitted).
-
-          If VALUE is a list of specifications (each of which is a cons
-          of a locale and a list of instantiators), then LOCALE must be
-          `nil' (it does not make sense to explicitly specify a locale
-          in this case), and specifications will be added as given.
-
-          If VALUE is a specifier (as would be returned by
-          `face-property' if no LOCALE argument is given), then some or
-          all of the specifications in the specifier will be added to
-          the property.  In this case, the function is really
-          equivalent to `copy-specifier' and LOCALE has the same
-          semantics (if it is a particular locale, the specification
-          for the locale will be copied; if a locale type,
-          specifications for all locales of that type will be copied;
-          if `nil' or `all', then all specifications will be copied).
-
-     HOW-TO-ADD should be either `nil' or one of the symbols `prepend',
-     `append', `remove-tag-set-prepend', `remove-tag-set-append',
-     `remove-locale', `remove-locale-type', or `remove-all'.  See
-     `copy-specifier' and `add-spec-to-specifier' for a description of
-     what each of these means.  Most of the time, you do not need to
-     worry about this argument; the default behavior usually is fine.
-
-     In general, it is OK to pass an instance object (e.g. as returned
-     by `face-property-instance') as an instantiator in place of an
-     actual instantiator.  In such a case, the instantiator used to
-     create that instance object will be used (for example, if you set
-     a font-instance object as the value of the `font' property, then
-     the font name used to create that object will be used instead).
-     If some cases, however, doing this conversion does not make sense,
-     and this will be noted in the documentation for particular types
-     of instance objects.
-
-     If PROPERTY is not a built-in property, then this function will
-     simply set its value if LOCALE is `nil'.  However, if LOCALE is
-     given, then this function will attempt to add VALUE as the
-     instantiator for the given LOCALE, using `add-spec-to-specifier'.
-     If the value of the property is not a specifier, it will
-     automatically be converted into a `generic' specifier.
-
- - Function: remove-face-property face property &optional locale
-          tag-set exact-p
-     This function removes a property of a FACE.
-
-     For built-in properties, this is analogous to `remove-specifier'.
-     For more information, *Note Other Specification Functions::.
-
-     When PROPERTY is not a built-in property, this function will just
-     remove its value if LOCALE is `nil' or `all'.  However, if LOCALE
-     is other than that, this function will attempt to remove VALUE as
-     the instantiator for the given LOCALE with `remove-specifier'.  If
-     the value of the property is not a specifier, it will be converted
-     into a `generic' specifier automatically.
-
- - Function: face-property face property &optional locale tag-set
-          exact-p
-     This function returns FACE's value of the given PROPERTY.
-
-     If LOCALE is omitted, the FACE's actual value for PROPERTY will be
-     returned.  For built-in properties, this will be a specifier
-     object of a type appropriate to the property (e.g. a font or color
-     specifier).  For other properties, this could be anything.
-
-     If LOCALE is supplied, then instead of returning the actual value,
-     the specification(s) for the given locale or locale type will be
-     returned.  This will only work if the actual value of PROPERTY is
-     a specifier (this will always be the case for built-in properties,
-     but not or not may apply to user-defined properties).  If the
-     actual value of PROPERTY is not a specifier, this value will
-     simply be returned regardless of LOCALE.
-
-     The return value will be a list of instantiators (e.g. strings
-     specifying a font or color name), or a list of specifications,
-     each of which is a cons of a locale and a list of instantiators.
-     Specifically, if LOCALE is a particular locale (a buffer, window,
-     frame, device, or `global'), a list of instantiators for that
-     locale will be returned.  Otherwise, if LOCALE is a locale type
-     (one of the symbols `buffer', `window', `frame', or `device'), the
-     specifications for all locales of that type will be returned.
-     Finally, if LOCALE is `all', the specifications for all locales of
-     all types will be returned.
-
-     The specifications in a specifier determine what the value of
-     PROPERTY will be in a particular "domain" or set of circumstances,
-     which is typically a particular Emacs window along with the buffer
-     it contains and the frame and device it lies within.  The value is
-     derived from the instantiator associated with the most specific
-     locale (in the order buffer, window, frame, device, and `global')
-     that matches the domain in question.  In other words, given a
-     domain (i.e. an Emacs window, usually), the specifier for PROPERTY
-     will first be searched for a specification whose locale is the
-     buffer contained within that window; then for a specification
-     whose locale is the window itself; then for a specification whose
-     locale is the frame that the window is contained within; etc.  The
-     first instantiator that is valid for the domain (usually this
-     means that the instantiator is recognized by the device [i.e. the
-     X server or TTY device] that the domain is on).  The function
-     `face-property-instance' actually does all this, and is used to
-     determine how to display the face.
-
- - Function: face-property-instance face property &optional domain
-          default no-fallback
-     This function returns the instance of FACE's PROPERTY in the
-     specified DOMAIN.
-
-     Under most circumstances, DOMAIN will be a particular window, and
-     the returned instance describes how the specified property
-     actually is displayed for that window and the particular buffer in
-     it.  Note that this may not be the same as how the property
-     appears when the buffer is displayed in a different window or
-     frame, or how the property appears in the same window if you
-     switch to another buffer in that window; and in those cases, the
-     returned instance would be different.
-
-     The returned instance will typically be a color-instance,
-     font-instance, or pixmap-instance object, and you can query it
-     using the appropriate object-specific functions.  For example, you
-     could use `color-instance-rgb-components' to find out the RGB
-     (red, green, and blue) components of how the `background' property
-     of the `highlight' face is displayed in a particular window.  The
-     results might be different from the results you would get for
-     another window (perhaps the user specified a different color for
-     the frame that window is on; or perhaps the same color was
-     specified but the window is on a different X server, and that X
-     server has different RGB values for the color from this one).
-
-     DOMAIN defaults to the selected window if omitted.
-
-     DOMAIN can be a frame or device, instead of a window.  The value
-     returned for a such a domain is used in special circumstances when
-     a more specific domain does not apply; for example, a frame value
-     might be used for coloring a toolbar, which is conceptually
-     attached to a frame rather than a particular window.  The value is
-     also useful in determining what the value would be for a
-     particular window within the frame or device, if it is not
-     overridden by a more specific specification.
-
-     If PROPERTY does not name a built-in property, its value will
-     simply be returned unless it is a specifier object, in which case
-     it will be instanced using `specifier-instance'.
-
-     Optional arguments DEFAULT and NO-FALLBACK are the same as in
-     `specifier-instance'.  *Note Specifiers::.
-
-\1f
-File: lispref.info,  Node: Face Convenience Functions,  Next: Other Face Display Functions,  Prev: Face Properties,  Up: Faces
-
-Face Convenience Functions
---------------------------
-
- - Command: set-face-foreground face color &optional locale tag-set
-          how-to-add
- - Command: set-face-background face color &optional locale tag-set
-          how-to-add
-     These functions set the foreground (respectively, background)
-     color of face FACE to COLOR.  The argument COLOR should be a
-     string (the name of a color) or a color object as returned by
-     `make-color' (*note Colors::).
-
- - Command: set-face-background-pixmap face pixmap &optional locale
-          tag-set how-to-add
-     This function sets the background pixmap of face FACE to PIXMAP.
-     The argument PIXMAP should be a string (the name of a bitmap or
-     pixmap file; the directories listed in the variable
-     `x-bitmap-file-path' will be searched) or a glyph object as
-     returned by `make-glyph' (*note Glyphs::).  The argument may also
-     be a list of the form `(WIDTH HEIGHT DATA)' where WIDTH and HEIGHT
-     are the size in pixels, and DATA is a string, containing the raw
-     bits of the bitmap.
-
- - Command: set-face-font face font &optional locale tag-set how-to-add
-     This function sets the font of face FACE.  The argument FONT
-     should be a string or a font object as returned by `make-font'
-     (*note Fonts::).
-
- - Command: set-face-underline-p face underline-p &optional locale
-          tag-set how-to-add
-     This function sets the underline property of face FACE.
-
- - Function: face-foreground face &optional locale tag-set exact-p
- - Function: face-background face &optional locale tag-set exact-p
-     These functions return the foreground (respectively, background)
-     color specifier of face FACE.  *Note Colors::.
-
- - Function: face-background-pixmap face &optional locale tag-set
-          exact-p
-     This function return the background-pixmap glyph object of face
-     FACE.
-
- - Function: face-font face &optional locale tag-set exact-p
-     This function returns the font specifier of face FACE.  (Note:
-     This is not the same as the function `face-font' in FSF Emacs.)
-
-     *Note Fonts::.
-
- - Function: face-font-name face &optional domain
-     This function returns the name of the font of face FACE, or `nil'
-     if it is unspecified.  This is basically equivalent to `(font-name
-     (face-font FACE) DOMAIN)' except that it does not cause an error
-     if FACE's font is `nil'. (This function is named `face-font' in
-     FSF Emacs.)
-
- - Function: face-underline-p face &optional locale
-     This function returns the underline property of face FACE.
-
- - Function: face-foreground-instance face &optional domain
- - Function: face-background-instance face &optional domain
-     These functions return the foreground (respectively, background)
-     color specifier of face FACE.  *Note Colors::.
-
- - Function: face-background-pixmap-instance face &optional domain
-     This function return the background-pixmap glyph object of face
-     FACE.
-
- - Function: face-font-instance face &optional domain
-     This function returns the font specifier of face FACE.  *Note
-     Fonts::.
-
-\1f
-File: lispref.info,  Node: Other Face Display Functions,  Prev: Face Convenience Functions,  Up: Faces
-
-Other Face Display Functions
-----------------------------
-
- - Command: invert-face face &optional locale
-     Swap the foreground and background colors of face FACE.  If the
-     face doesn't specify both foreground and background, then its
-     foreground and background are set to the default background and
-     foreground.
-
- - Function: face-equal face1 face2 &optional domain
-     This returns `t' if the faces FACE1 and FACE2 will display in the
-     same way.  DOMAIN is as in `face-property-instance'.
-
- - Function: face-differs-from-default-p face &optional domain
-     This returns `t' if the face FACE displays differently from the
-     default face.  DOMAIN is as in `face-property-instance'.
-
-\1f
-File: lispref.info,  Node: Fonts,  Next: Colors,  Prev: Faces,  Up: Faces and Window-System Objects
-
-Fonts
-=====
-
-This section describes how to work with font specifier and font
-instance objects, which encapsulate fonts in the window system.
-
-* Menu:
-
-* Font Specifiers::            Specifying how a font will appear.
-* Font Instances::             What a font specifier gets instanced as.
-* Font Instance Names::                The name of a font instance.
-* Font Instance Size::         The size of a font instance.
-* Font Instance Characteristics:: Display characteristics of font instances.
-* Font Convenience Functions:: Convenience functions that automatically
-                                 instance and retrieve the properties
-                                 of a font specifier.
-
-\1f
-File: lispref.info,  Node: Font Specifiers,  Next: Font Instances,  Up: Fonts
-
-Font Specifiers
----------------
-
- - Function: font-specifier-p object
-     This predicate returns `t' if OBJECT is a font specifier, and
-     `nil' otherwise.
-
- - Function: make-font-specifier spec-list
-     Return a new `font' specifier object with the given specification
-     list.  SPEC-LIST can be a list of specifications (each of which is
-     a cons of a locale and a list of instantiators), a single
-     instantiator, or a list of instantiators.  *Note Specifiers::, for
-     more information about specifiers.
-
-     Valid instantiators for font specifiers are:
-
-        * A string naming a font (e.g. under X this might be
-          "-*-courier-medium-r-*-*-*-140-*-*-*-*-iso8859-*" for a
-          14-point upright medium-weight Courier font).
-
-        * A font instance (use that instance directly if the device
-          matches, or use the string that generated it).
-
-        * A vector of no elements (only on TTY's; this means to set no
-          font at all, thus using the "natural" font of the terminal's
-          text).
-
-        * A vector of one element (a face to inherit from).
-
-\1f
-File: lispref.info,  Node: Font Instances,  Next: Font Instance Names,  Prev: Font Specifiers,  Up: Fonts
-
-Font Instances
---------------
-
- - Function: font-instance-p object
-     This predicate returns `t' if OBJECT is a font instance, and `nil'
-     otherwise.
-
- - Function: make-font-instance name &optional device noerror
-     This function creates a new font-instance object of the specified
-     name.  DEVICE specifies the device this object applies to and
-     defaults to the selected device.  An error is signalled if the
-     font is unknown or cannot be allocated; however, if NOERROR is
-     non-`nil', `nil' is simply returned in this case.
-
-     The returned object is a normal, first-class lisp object.  The way
-     you "deallocate" the font is the way you deallocate any other lisp
-     object: you drop all pointers to it and allow it to be garbage
-     collected.  When these objects are GCed, the underlying X data is
-     deallocated as well.
-
-\1f
-File: lispref.info,  Node: Font Instance Names,  Next: Font Instance Size,  Prev: Font Instances,  Up: Fonts
-
-Font Instance Names
--------------------
-
- - Function: list-fonts pattern &optional device
-     This function returns a list of font names matching the given
-     pattern.  DEVICE specifies which device to search for names, and
-     defaults to the currently selected device.
-
- - Function: font-instance-name font-instance
-     This function returns the name used to allocate FONT-INSTANCE.
-
- - Function: font-instance-truename font-instance
-     This function returns the canonical name of the given font
-     instance.  Font names are patterns which may match any number of
-     fonts, of which the first found is used.  This returns an
-     unambiguous name for that font (but not necessarily its only
-     unambiguous name).
-
index b3dfd60..49c7efc 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -50,26 +50,439 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Face Properties,  Next: Face Convenience Functions,  Prev: Basic Face Functions,  Up: Faces
+
+49.1.3 Face Properties
+----------------------
+
+You can examine and modify the properties of an existing face with the
+following functions.
+
+   The following symbols have predefined meanings:
+
+`foreground'
+     The foreground color of the face.
+
+`background'
+     The background color of the face.
+
+`font'
+     The font used to display text covered by this face.
+
+`display-table'
+     The display table of the face.
+
+`background-pixmap'
+     The pixmap displayed in the background of the face.  Only used by
+     faces on GUI devices, currently X11, GTK, and Microsoft Windows.
+
+`underline'
+     Underline all text covered by this face.
+
+`highlight'
+     Highlight all text covered by this face.  Only used by faces on TTY
+     devices.
+
+`dim'
+     Dim all text covered by this face.  Only used by faces on TTY
+     devices.
+
+`blinking'
+     Blink all text covered by this face.  Only used by faces on TTY
+     devices.
+
+`reverse'
+     Reverse the foreground and background colors.  Only used by faces
+     on TTY devices.
+
+`doc-string'
+     Description of what the face's normal use is.  NOTE: This is not a
+     specifier, unlike all the other built-in properties, and cannot
+     contain locale-specific values.
+
+ -- Function: set-face-property face property value &optional locale
+          tag-set how-to-add
+     This function changes a property of a FACE.
+
+     For built-in properties, the actual value of the property is a
+     specifier and you cannot change this; but you can change the
+     specifications within the specifier, and that is what this
+     function will do.  For user-defined properties, you can use this
+     function to either change the actual value of the property or, if
+     this value is a specifier, change the specifications within it.
+
+     If PROPERTY is a built-in property, the specifications to be added
+     to this property can be supplied in many different ways:
+
+          If VALUE is a simple instantiator (e.g. a string naming a
+          font or color) or a list of instantiators, then the
+          instantiator(s) will be added as a specification of the
+          property for the given LOCALE (which defaults to `global' if
+          omitted).
+
+          If VALUE is a list of specifications (each of which is a cons
+          of a locale and a list of instantiators), then LOCALE must be
+          `nil' (it does not make sense to explicitly specify a locale
+          in this case), and specifications will be added as given.
+
+          If VALUE is a specifier (as would be returned by
+          `face-property' if no LOCALE argument is given), then some or
+          all of the specifications in the specifier will be added to
+          the property.  In this case, the function is really
+          equivalent to `copy-specifier' and LOCALE has the same
+          semantics (if it is a particular locale, the specification
+          for the locale will be copied; if a locale type,
+          specifications for all locales of that type will be copied;
+          if `nil' or `all', then all specifications will be copied).
+
+     HOW-TO-ADD should be either `nil' or one of the symbols `prepend',
+     `append', `remove-tag-set-prepend', `remove-tag-set-append',
+     `remove-locale', `remove-locale-type', or `remove-all'.  See
+     `copy-specifier' and `add-spec-to-specifier' for a description of
+     what each of these means.  Most of the time, you do not need to
+     worry about this argument; the default behavior usually is fine.
+
+     In general, it is OK to pass an instance object (e.g. as returned
+     by `face-property-instance') as an instantiator in place of an
+     actual instantiator.  In such a case, the instantiator used to
+     create that instance object will be used (for example, if you set
+     a font-instance object as the value of the `font' property, then
+     the font name used to create that object will be used instead).
+     If some cases, however, doing this conversion does not make sense,
+     and this will be noted in the documentation for particular types
+     of instance objects.
+
+     If PROPERTY is not a built-in property, then this function will
+     simply set its value if LOCALE is `nil'.  However, if LOCALE is
+     given, then this function will attempt to add VALUE as the
+     instantiator for the given LOCALE, using `add-spec-to-specifier'.
+     If the value of the property is not a specifier, it will
+     automatically be converted into a `generic' specifier.
+
+ -- Function: remove-face-property face property &optional locale
+          tag-set exact-p
+     This function removes a property of a FACE.
+
+     For built-in properties, this is analogous to `remove-specifier'.
+     For more information, *Note Other Specification Functions::.
+
+     When PROPERTY is not a built-in property, this function will just
+     remove its value if LOCALE is `nil' or `all'.  However, if LOCALE
+     is other than that, this function will attempt to remove VALUE as
+     the instantiator for the given LOCALE with `remove-specifier'.  If
+     the value of the property is not a specifier, it will be converted
+     into a `generic' specifier automatically.
+
+ -- Function: face-property face property &optional locale tag-set
+          exact-p
+     This function returns FACE's value of the given PROPERTY.
+
+     If LOCALE is omitted, the FACE's actual value for PROPERTY will be
+     returned.  For built-in properties, this will be a specifier
+     object of a type appropriate to the property (e.g. a font or color
+     specifier).  For other properties, this could be anything.
+
+     If LOCALE is supplied, then instead of returning the actual value,
+     the specification(s) for the given locale or locale type will be
+     returned.  This will only work if the actual value of PROPERTY is
+     a specifier (this will always be the case for built-in properties,
+     but not or not may apply to user-defined properties).  If the
+     actual value of PROPERTY is not a specifier, this value will
+     simply be returned regardless of LOCALE.
+
+     The return value will be a list of instantiators (e.g. strings
+     specifying a font or color name), or a list of specifications,
+     each of which is a cons of a locale and a list of instantiators.
+     Specifically, if LOCALE is a particular locale (a buffer, window,
+     frame, device, or `global'), a list of instantiators for that
+     locale will be returned.  Otherwise, if LOCALE is a locale type
+     (one of the symbols `buffer', `window', `frame', or `device'), the
+     specifications for all locales of that type will be returned.
+     Finally, if LOCALE is `all', the specifications for all locales of
+     all types will be returned.
+
+     The specifications in a specifier determine what the value of
+     PROPERTY will be in a particular "domain" or set of circumstances,
+     which is typically a particular Emacs window along with the buffer
+     it contains and the frame and device it lies within.  The value is
+     derived from the instantiator associated with the most specific
+     locale (in the order buffer, window, frame, device, and `global')
+     that matches the domain in question.  In other words, given a
+     domain (i.e. an Emacs window, usually), the specifier for PROPERTY
+     will first be searched for a specification whose locale is the
+     buffer contained within that window; then for a specification
+     whose locale is the window itself; then for a specification whose
+     locale is the frame that the window is contained within; etc.  The
+     first instantiator that is valid for the domain (usually this
+     means that the instantiator is recognized by the device [i.e. the
+     X server or TTY device] that the domain is on).  The function
+     `face-property-instance' actually does all this, and is used to
+     determine how to display the face.
+
+ -- Function: face-property-instance face property &optional domain
+          default no-fallback
+     This function returns the instance of FACE's PROPERTY in the
+     specified DOMAIN.
+
+     Under most circumstances, DOMAIN will be a particular window, and
+     the returned instance describes how the specified property
+     actually is displayed for that window and the particular buffer in
+     it.  Note that this may not be the same as how the property
+     appears when the buffer is displayed in a different window or
+     frame, or how the property appears in the same window if you
+     switch to another buffer in that window; and in those cases, the
+     returned instance would be different.
+
+     The returned instance will typically be a color-instance,
+     font-instance, or pixmap-instance object, and you can query it
+     using the appropriate object-specific functions.  For example, you
+     could use `color-instance-rgb-components' to find out the RGB
+     (red, green, and blue) components of how the `background' property
+     of the `highlight' face is displayed in a particular window.  The
+     results might be different from the results you would get for
+     another window (perhaps the user specified a different color for
+     the frame that window is on; or perhaps the same color was
+     specified but the window is on a different X server, and that X
+     server has different RGB values for the color from this one).
+
+     DOMAIN defaults to the selected window if omitted.
+
+     DOMAIN can be a frame or device, instead of a window.  The value
+     returned for a such a domain is used in special circumstances when
+     a more specific domain does not apply; for example, a frame value
+     might be used for coloring a toolbar, which is conceptually
+     attached to a frame rather than a particular window.  The value is
+     also useful in determining what the value would be for a
+     particular window within the frame or device, if it is not
+     overridden by a more specific specification.
+
+     If PROPERTY does not name a built-in property, its value will
+     simply be returned unless it is a specifier object, in which case
+     it will be instanced using `specifier-instance'.
+
+     Optional arguments DEFAULT and NO-FALLBACK are the same as in
+     `specifier-instance'.  *Note Specifiers::.
+
+\1f
+File: lispref.info,  Node: Face Convenience Functions,  Next: Other Face Display Functions,  Prev: Face Properties,  Up: Faces
+
+49.1.4 Face Convenience Functions
+---------------------------------
+
+ -- Command: set-face-foreground face color &optional locale tag-set
+          how-to-add
+ -- Command: set-face-background face color &optional locale tag-set
+          how-to-add
+     These functions set the foreground (respectively, background)
+     color of face FACE to COLOR.  The argument COLOR should be a
+     string (the name of a color) or a color object as returned by
+     `make-color' (*note Colors::).
+
+ -- Command: set-face-background-pixmap face pixmap &optional locale
+          tag-set how-to-add
+     This function sets the background pixmap of face FACE to PIXMAP.
+     The argument PIXMAP should be a string (the name of a bitmap or
+     pixmap file; the directories listed in the variable
+     `x-bitmap-file-path' will be searched) or a glyph object as
+     returned by `make-glyph' (*note Glyphs::).  The argument may also
+     be a list of the form `(WIDTH HEIGHT DATA)' where WIDTH and HEIGHT
+     are the size in pixels, and DATA is a string, containing the raw
+     bits of the bitmap.
+
+     Similarly to how the glyph's image specifier works *Note Creating
+     Glyphs::, you don't create your own image specifier, but rather add
+     specifications to the existing one.  Note that the image instance
+     that is generated in order to actually display the background
+     pixmap is of type `mono-pixmap', meaning that it's a two-color
+     image and the foreground and background of the image get filled in
+     with the corresponding colors from the face.  (#### Is this still
+     true?)
+
+ -- Command: set-face-font face font &optional locale tag-set how-to-add
+     This function sets the font of face FACE.  The argument FONT
+     should be a string or a font object as returned by `make-font'
+     (*note Fonts::).
+
+ -- Command: set-face-underline-p face underline-p &optional locale
+          tag-set how-to-add
+     This function sets the underline property of face FACE.
+
+ -- Function: face-foreground face &optional locale tag-set exact-p
+ -- Function: face-background face &optional locale tag-set exact-p
+     These functions return the foreground (respectively, background)
+     color specifier of face FACE.  *Note Colors::.
+
+ -- Function: face-background-pixmap face &optional locale tag-set
+          exact-p
+     This function returns the background-pixmap image specifier of face
+     FACE.
+
+ -- Function: face-font face &optional locale tag-set exact-p
+     This function returns the font specifier of face FACE.  (Note:
+     This is not the same as the function `face-font' in FSF Emacs.)
+
+     *Note Fonts::.
+
+ -- Function: face-font-name face &optional domain
+     This function returns the name of the font of face FACE, or `nil'
+     if it is unspecified.  This is basically equivalent to `(font-name
+     (face-font FACE) DOMAIN)' except that it does not cause an error
+     if FACE's font is `nil'. (This function is named `face-font' in
+     FSF Emacs.)
+
+ -- Function: face-underline-p face &optional locale
+     This function returns the underline property of face FACE.
+
+ -- Function: face-foreground-instance face &optional domain
+ -- Function: face-background-instance face &optional domain
+     These functions return the foreground (respectively, background)
+     color specifier of face FACE.  *Note Colors::.
+
+ -- Function: face-background-pixmap-instance face &optional domain
+     This function return the background-pixmap glyph object of face
+     FACE.
+
+ -- Function: face-font-instance face &optional domain
+     This function returns the font specifier of face FACE.  *Note
+     Fonts::.
+
+\1f
+File: lispref.info,  Node: Other Face Display Functions,  Prev: Face Convenience Functions,  Up: Faces
+
+49.1.5 Other Face Display Functions
+-----------------------------------
+
+ -- Command: invert-face face &optional locale
+     Swap the foreground and background colors of face FACE.  If the
+     face doesn't specify both foreground and background, then its
+     foreground and background are set to the default background and
+     foreground.
+
+ -- Function: face-equal face1 face2 &optional domain
+     This returns `t' if the faces FACE1 and FACE2 will display in the
+     same way.  DOMAIN is as in `face-property-instance'.
+
+ -- Function: face-differs-from-default-p face &optional domain
+     This returns `t' if the face FACE displays differently from the
+     default face.  DOMAIN is as in `face-property-instance'.
+
+\1f
+File: lispref.info,  Node: Fonts,  Next: Colors,  Prev: Faces,  Up: Faces and Window-System Objects
+
+49.2 Fonts
+==========
+
+This section describes how to work with font specifier and font
+instance objects, which encapsulate fonts in the window system.
+
+* Menu:
+
+* Font Specifiers::            Specifying how a font will appear.
+* Font Instances::             What a font specifier gets instanced as.
+* Font Instance Names::                The name of a font instance.
+* Font Instance Size::         The size of a font instance.
+* Font Instance Characteristics:: Display characteristics of font instances.
+* Font Convenience Functions:: Convenience functions that automatically
+                                 instance and retrieve the properties
+                                 of a font specifier.
+
+\1f
+File: lispref.info,  Node: Font Specifiers,  Next: Font Instances,  Up: Fonts
+
+49.2.1 Font Specifiers
+----------------------
+
+ -- Function: font-specifier-p object
+     This predicate returns `t' if OBJECT is a font specifier, and
+     `nil' otherwise.
+
+ -- Function: make-font-specifier spec-list
+     Return a new `font' specifier object with the given specification
+     list.  SPEC-LIST can be a list of specifications (each of which is
+     a cons of a locale and a list of instantiators), a single
+     instantiator, or a list of instantiators.  *Note Specifiers::, for
+     more information about specifiers.
+
+     Valid instantiators for font specifiers are:
+
+        * A string naming a font (e.g. under X this might be
+          "-*-courier-medium-r-*-*-*-140-*-*-*-*-iso8859-*" for a
+          14-point upright medium-weight Courier font).
+
+        * A font instance (use that instance directly if the device
+          matches, or use the string that generated it).
+
+        * A vector of no elements (only on TTY's; this means to set no
+          font at all, thus using the "natural" font of the terminal's
+          text).
+
+        * A vector of one element (a face to inherit from).
+
+\1f
+File: lispref.info,  Node: Font Instances,  Next: Font Instance Names,  Prev: Font Specifiers,  Up: Fonts
+
+49.2.2 Font Instances
+---------------------
+
+ -- Function: font-instance-p object
+     This predicate returns `t' if OBJECT is a font instance, and `nil'
+     otherwise.
+
+ -- Function: make-font-instance name &optional device noerror
+     This function creates a new font-instance object of the specified
+     name.  DEVICE specifies the device this object applies to and
+     defaults to the selected device.  An error is signalled if the
+     font is unknown or cannot be allocated; however, if NOERROR is
+     non-`nil', `nil' is simply returned in this case.
+
+     The returned object is a normal, first-class lisp object.  The way
+     you "deallocate" the font is the way you deallocate any other lisp
+     object: you drop all pointers to it and allow it to be garbage
+     collected.  When these objects are GCed, the underlying X data is
+     deallocated as well.
+
+\1f
+File: lispref.info,  Node: Font Instance Names,  Next: Font Instance Size,  Prev: Font Instances,  Up: Fonts
+
+49.2.3 Font Instance Names
+--------------------------
+
+ -- Function: list-fonts pattern &optional device
+     This function returns a list of font names matching the given
+     pattern.  DEVICE specifies which device to search for names, and
+     defaults to the currently selected device.
+
+ -- Function: font-instance-name font-instance
+     This function returns the name used to allocate FONT-INSTANCE.
+
+ -- Function: font-instance-truename font-instance
+     This function returns the canonical name of the given font
+     instance.  Font names are patterns which may match any number of
+     fonts, of which the first found is used.  This returns an
+     unambiguous name for that font (but not necessarily its only
+     unambiguous name).
+
+\1f
 File: lispref.info,  Node: Font Instance Size,  Next: Font Instance Characteristics,  Prev: Font Instance Names,  Up: Fonts
 
-Font Instance Size
-------------------
+49.2.4 Font Instance Size
+-------------------------
 
- - Function: x-font-size font
+ -- Function: x-font-size font
      This function returns the nominal size of the given font.  This is
      done by parsing its name, so it's likely to lose.  X fonts can be
      specified (by the user) in either pixels or 10ths of points, and
      this returns the first one it finds, so you have to decide which
      units the returned value is measured in yourself ...
 
- - Function: x-find-larger-font font &optional device
+ -- Function: x-find-larger-font font &optional device
      This function loads a new, slightly larger version of the given
      font (or font name).  Returns the font if it succeeds, `nil'
      otherwise.  If scalable fonts are available, this returns a font
      which is 1 point larger.  Otherwise, it returns the next larger
      version of this font that is defined.
 
- - Function: x-find-smaller-font font &optional device
+ -- Function: x-find-smaller-font font &optional device
      This function loads a new, slightly smaller version of the given
      font (or font name).  Returns the font if it succeeds, `nil'
      otherwise.  If scalable fonts are available, this returns a font
@@ -79,54 +492,54 @@ Font Instance Size
 \1f
 File: lispref.info,  Node: Font Instance Characteristics,  Next: Font Convenience Functions,  Prev: Font Instance Size,  Up: Fonts
 
-Font Instance Characteristics
------------------------------
+49.2.5 Font Instance Characteristics
+------------------------------------
 
- - Function: font-instance-properties font-instance
+ -- Function: font-instance-properties font-instance
      This function returns the properties (an alist or `nil') of
      FONT-INSTANCE.
 
- - Function: x-make-font-bold font &optional device
+ -- Function: x-make-font-bold font &optional device
      Given an X font specification, this attempts to make a "bold" font.
      If it fails, it returns `nil'.
 
- - Function: x-make-font-unbold font &optional device
+ -- Function: x-make-font-unbold font &optional device
      Given an X font specification, this attempts to make a non-bold
      font.  If it fails, it returns `nil'.
 
- - Function: x-make-font-italic font &optional device
+ -- Function: x-make-font-italic font &optional device
      Given an X font specification, this attempts to make an "italic"
      font.  If it fails, it returns `nil'.
 
- - Function: x-make-font-unitalic font &optional device
+ -- Function: x-make-font-unitalic font &optional device
      Given an X font specification, this attempts to make a non-italic
      font.  If it fails, it returns `nil'.
 
- - Function: x-make-font-bold-italic font &optional device
+ -- Function: x-make-font-bold-italic font &optional device
      Given an X font specification, this attempts to make a
      "bold-italic" font.  If it fails, it returns `nil'.
 
 \1f
 File: lispref.info,  Node: Font Convenience Functions,  Prev: Font Instance Characteristics,  Up: Fonts
 
-Font Convenience Functions
---------------------------
+49.2.6 Font Convenience Functions
+---------------------------------
 
- - Function: font-name font &optional domain
+ -- Function: font-name font &optional domain
      This function returns the name of the FONT in the specified
      DOMAIN, if any.  FONT should be a font specifier object and DOMAIN
      is normally a window and defaults to the selected window if
      omitted.  This is equivalent to using `specifier-instance' and
      applying `font-instance-name' to the result.
 
- - Function: font-truename font &optional domain
+ -- Function: font-truename font &optional domain
      This function returns the truename of the FONT in the specified
      DOMAIN, if any.  FONT should be a font specifier object and DOMAIN
      is normally a window and defaults to the selected window if
      omitted.  This is equivalent to using `specifier-instance' and
      applying `font-instance-truename' to the result.
 
- - Function: font-properties font &optional domain
+ -- Function: font-properties font &optional domain
      This function returns the properties of the FONT in the specified
      DOMAIN, if any.  FONT should be a font specifier object and DOMAIN
      is normally a window and defaults to the selected window if
@@ -136,8 +549,8 @@ Font Convenience Functions
 \1f
 File: lispref.info,  Node: Colors,  Prev: Fonts,  Up: Faces and Window-System Objects
 
-Colors
-======
+49.3 Colors
+===========
 
 * Menu:
 
@@ -151,13 +564,13 @@ Colors
 \1f
 File: lispref.info,  Node: Color Specifiers,  Next: Color Instances,  Up: Colors
 
-Color Specifiers
-----------------
+49.3.1 Color Specifiers
+-----------------------
 
- - Function: color-specifier-p object
+ -- Function: color-specifier-p object
      This function returns non-`nil' if OBJECT is a color specifier.
 
- - Function: make-color-specifier spec-list
+ -- Function: make-color-specifier spec-list
      Return a new `color' specifier object with the given specification
      list.  SPEC-LIST can be a list of specifications (each of which is
      a cons of a locale and a list of instantiators), a single
@@ -183,7 +596,7 @@ Color Specifiers
           used for; if this specifier is not part of a face, the
           instantiator would not be valid).
 
- - Function: make-face-boolean-specifier spec-list
+ -- Function: make-face-boolean-specifier spec-list
      Return a new `face-boolean' specifier object with the given spec
      list.  SPEC-LIST can be a list of specifications (each of which is
      a cons of a locale and a list of instantiators), a single
@@ -206,8 +619,8 @@ Color Specifiers
 \1f
 File: lispref.info,  Node: Color Instances,  Next: Color Instance Properties,  Prev: Color Specifiers,  Up: Colors
 
-Color Instances
----------------
+49.3.2 Color Instances
+----------------------
 
 A "color-instance object" is an object describing the way a color
 specifier is instanced in a particular domain.  Functions such as
@@ -220,19 +633,19 @@ specifier is instanced in a particular domain.  Functions such as
 color of the `default' face is displayed in the next window after the
 selected one.
 
- - Function: color-instance-p object
+ -- Function: color-instance-p object
      This function returns non-`nil' if OBJECT is a color-instance.
 
 \1f
 File: lispref.info,  Node: Color Instance Properties,  Next: Color Convenience Functions,  Prev: Color Instances,  Up: Colors
 
-Color Instance Properties
--------------------------
+49.3.3 Color Instance Properties
+--------------------------------
 
- - Function: color-instance-name color-instance
+ -- Function: color-instance-name color-instance
      This function returns the name used to allocate COLOR-INSTANCE.
 
- - Function: color-instance-rgb-components color-instance
+ -- Function: color-instance-rgb-components color-instance
      This function returns a three element list containing the red,
      green, and blue color components of COLOR-INSTANCE.
 
@@ -243,17 +656,17 @@ Color Instance Properties
 \1f
 File: lispref.info,  Node: Color Convenience Functions,  Prev: Color Instance Properties,  Up: Colors
 
-Color Convenience Functions
----------------------------
+49.3.4 Color Convenience Functions
+----------------------------------
 
- - Function: color-name color &optional domain
+ -- Function: color-name color &optional domain
      This function returns the name of the COLOR in the specified
      DOMAIN, if any.  COLOR should be a color specifier object and
      DOMAIN is normally a window and defaults to the selected window if
      omitted.  This is equivalent to using `specifier-instance' and
      applying `color-instance-name' to the result.
 
- - Function: color-rgb-components color &optional domain
+ -- Function: color-rgb-components color &optional domain
      This function returns the RGB components of the COLOR in the
      specified DOMAIN, if any.  COLOR should be a color specifier
      object and DOMAIN is normally a window and defaults to the
@@ -267,1208 +680,1913 @@ Color Convenience Functions
 \1f
 File: lispref.info,  Node: Glyphs,  Next: Annotations,  Prev: Faces and Window-System Objects,  Up: Top
 
-Glyphs
-******
+50 Glyphs
+*********
 
-A "glyph" is an object that is used for pixmaps, widgets and images of
+A "glyph" is an object that is used for pixmaps, widgets, and images of
 all sorts, as well as for things that "act" like pixmaps, such as
 non-textual strings ("annotations") displayed in a buffer or in the
 margins.  It is used in begin-glyphs and end-glyphs attached to
 extents, marginal and textual annotations, overlay arrows
 (`overlay-arrow-*' variables), toolbar buttons, mouse pointers, frame
-icons, truncation and continuation markers, and the like. (Basically,
+icons, truncation and continuation markers, and the like.  Basically,
 any place there is an image or something that acts like an image, there
-will be a glyph object representing it.)
+will be a glyph object representing it.
 
-   The actual image that is displayed (as opposed to its position or
-clipping) is defined by an "image specifier" object contained within
-the glyph.  The separation between an image specifier object and a
-glyph object is made because the glyph includes other properties than
-just the actual image: e.g. the face it is displayed in (for text
-images), the alignment of the image (when it is in a buffer), etc.
-
- - Function: glyphp object
+ -- Function: glyphp object
      This function returns `t' if OBJECT is a glyph.
 
 * Menu:
 
-* Glyph Functions::    Functions for working with glyphs.
-* Images::             Graphical images displayed in a frame.
-* Glyph Types::         Each glyph has a particular type.
-* Mouse Pointer::      Controlling the mouse pointer.
-* Redisplay Glyphs::    Glyphs controlling various redisplay functions.
-* Subwindows::          Inserting an externally-controlled subwindow
-                          into a buffer.
-* Glyph Examples::      Examples of how to work with glyphs.
+* Glyph Intro::                Glyphs are abstract image specifications.
+* Images::             Specifying the appearance of glyphs.
+* Using Glyphs::       Creating and displaying glyphs.
+* Manipulating Glyphs::        Getting and setting glyph properties.
+* Glyph Examples::     Examples of how to work with glyphs.
 
 \1f
-File: lispref.info,  Node: Glyph Functions,  Next: Images,  Up: Glyphs
-
-Glyph Functions
-===============
+File: lispref.info,  Node: Glyph Intro,  Next: Images,  Up: Glyphs
 
-* Menu:
+50.1 Glyph Introduction
+=======================
 
-* Creating Glyphs::    Creating new glyphs.
-* Glyph Properties::   Accessing and modifying a glyph's properties.
-* Glyph Convenience Functions::
-                       Convenience functions for accessing particular
-                         properties of a glyph.
-* Glyph Dimensions::    Determining the height, width, etc. of a glyph.
+In XEmacs, "glyph" does *not* refer to a single unit of textual display
+(the XEmacs term for that is "rune", and runes are confined to the
+internal implementation of redisplay), but rather is an object
+encapsulating a graphical element, such as an image or widget (an
+active GUI element such as a button or text entry field; X11 calls this
+a "widget", while MS Windows uses the term "control").  This graphical
+element could appear in a buffer, a margin, a gutter, or a toolbar, or
+even externally to XEmacs as a mouse pointer or an icon, for example.
+
+   On the other hand, by contrast with GNU Emacs 21, an XEmacs glyph is
+not "just" an image.  The actual image that is displayed (as opposed to
+its position or clipping) is defined by an "image specifier" object
+contained within the glyph.  The separation between an image specifier
+object and a glyph object is made because the glyph includes other
+properties than just the actual image: e.g. the face it is displayed in,
+the alignment of the image, _etc_.  Also, an image specifier is used in
+at least one place in XEmacs in lieu of a glyph, namely the backing
+pixmap of a face.
+
+   An image specifier is used because glyphs often have locale-specific
+semantics.  The most important example is semantics determined by the
+display device: you can't usefully display a JPEG on stdout, or a color
+image on a monochrome display.  But because the image property is a
+specifier in XEmacs, you can specify that a given glyph appear as a
+monochrome image on monochrome displays, a color image on color
+displays, and as a string on TTYs.  (Specifying a string for the `tty'
+device locale would give behavior like the `ALT' attribute of an `IMG'
+element in HTML.)  Another is semantics determined by the buffer or
+mode.  (Unfortunately, currently there are no compelling examples of
+this for glyphs.)
+
+   All this means that only one global glyph needs to exist for a
+particular purpose (e.g. the icon used to represent an iconified frame,
+the mouse pointer used over particular areas of a frame, etc.).  Often
+you need not (and should not!) create your own glyph, but rather modify
+an existing one.
+
+   In working with glyphs it is important to keep in mind the
+distinction between a locale and a domain.  A "locale" is specified by
+the programmer, and is an abstract link between a specification (for a
+glyph, its visual appearance) and a displayable object.  The displayable
+object may be a buffer or a window, or an object containing buffers or
+windows such as frame, device, or console.  A "domain" is an actual
+display context, which must be concrete enough to enable XEmacs to
+identify the device type.  (Buffers may be displayed in windows on
+different devices, even simultaneously, so a buffer cannot be a domain.
+Similarly, the global locale cannot be a domain.)  *Note Specifiers::,
+for more information about specifier locales and domains.
 
 \1f
-File: lispref.info,  Node: Creating Glyphs,  Next: Glyph Properties,  Up: Glyph Functions
+File: lispref.info,  Node: Images,  Next: Using Glyphs,  Prev: Glyph Intro,  Up: Glyphs
 
-Creating Glyphs
----------------
+50.2 Images
+===========
 
- - Function: make-glyph &optional spec-list type
-     This function creates a new glyph object of type TYPE.
+* Menu:
 
-     SPEC-LIST is used to initialize the glyph's image.  It is
-     typically an image instantiator (a string or a vector; *Note Image
-     Specifiers::), but can also be a list of such instantiators (each
-     one in turn is tried until an image is successfully produced), a
-     cons of a locale (frame, buffer, etc.) and an instantiator, a list
-     of such conses, or any other form accepted by
-     `canonicalize-spec-list'.  *Note Specifiers::, for more
-     information about specifiers.
-
-     TYPE specifies the type of the glyph, which specifies in which
-     contexts the glyph can be used, and controls the allowable image
-     types into which the glyph's image can be instantiated.  TYPE
-     should be one of `buffer' (used for glyphs in an extent, the
-     modeline, the toolbar, or elsewhere in a buffer), `pointer' (used
-     for the mouse-pointer), or `icon' (used for a frame's icon), and
-     defaults to `buffer'.  *Note Glyph Types::.
-
-     A glyph in XEmacs does *NOT* refer to a single unit of textual
-     display (the XEmacs term for this is "rune"), but rather is an
-     object encapsulating a graphical element, such as an image or
-     widget (an element such as a button or text field; "widget" is the
-     term for this under X Windows, and it's called a "control" under
-     MS Windows).  This graphical element could appear in a buffer, a
-     margin, a gutter, or a toolbar, or as a mouse pointer or an icon,
-     for example.
-
-     Creating a glyph using `make-glyph' does not specify _where_ the
-     glyph will be used, but it does specify _what_ the glyph will look
-     like.  In particular, SPEC-LIST is used to specify this, and it's
-     used to initialize the glyph's `image' property, which is an image
-     specifier. (Note that "image" as used in the context of a glyph's
-     `image' property or in the terms "image specifier", "image
-     instantiator", or "image instance" does not refer to what people
-     normally think of as an image (which in XEmacs is called a
-     "pixmap"), but to any graphical element--a pixmap, a widget, or
-     even a block of text, when used in the places that call for a
-     glyph.)  The format of the SPEC-LIST is typically an image
-     instantiator (a string or a vector; *Note Image Specifiers::), but
-     can also be a list of such instantiators (each one in turn is
-     tried until an image is successfully produced), a cons of a locale
-     (frame, buffer, etc.)  and an instantiator, a list of such conses,
-     or any other form accepted by `canonicalize-spec-list'. *Note
-     Specifiers::, for more information about specifiers.
-
-     If you're not familiar with specifiers, you should be in order to
-     understand how glyphs work.  The clearest introduction to
-     specifiers is in the Lispref manual, available under Info. (Choose
-     Help->Info->Info Contents on the menubar or type C-h i.) You can
-     also see `make-specifier' for a capsule summary.  What's important
-     to keep in mind is that a specifier lets you set a different value
-     for any particular buffer, window, frame, device, or console.
-     This allows for a great deal of flexibility; in particular, only
-     one global glyph needs to exist for a particular purpose (e.g. the
-     icon used to represent an iconified frame, the mouse pointer used
-     over particular areas of a frame, etc.), and in these cases you do
-     not create your own glyph, but rather modify the existing one.
-
-     As well as using SPEC-LIST to initialize the glyph, you can set
-     specifications using `set-glyph-image'.  Note that, due to a
-     possibly questionable historical design decision, a glyph itself
-     is not actually a specifier, but rather is an object containing an
-     image specifier (as well as other, seldom-used properties).
-     Therefore, you cannot set or access specifications for the glyph's
-     image by directly using `set-specifier', `specifier-instance' or
-     the like on the glyph; instead use them on `(glyph-image GLYPH)'
-     or use the convenience functions `set-glyph-image',
-     `glyph-image-instance', and `glyph-image'.
-
-     Once you have created a glyph, you specify where it will be used as
-     follows:
-
-        * To insert a glyph into a buffer, create an extent in the
-          buffer and then use `set-extent-begin-glyph' or
-          `set-extent-end-glyph' to set a glyph to be displayed at the
-          corresponding edge of the extent. (It is common to create
-          zero-width extents for this purpose.)
-
-        * To insert a glyph into the left or right margin of a buffer,
-          first make sure the margin is visible by setting a value for
-          the specifiers `left-margin-width' or `right-margin-width'.
-          (Not strictly necessary when using margin glyphs with layout
-          policy `whitespace'.) Then follow the same procedure above
-          for inserting a glyph in a buffer, and then set a non-default
-          layout policy for the glyph using
-          `set-extent-begin-glyph-layout' or
-          `set-extent-end-glyph-layout'.  Alternatively, use the
-          high-level annotations API (see `make-annotation'). (In point
-          of fact, you can also use the annotations API for glyphs in a
-          buffer, by setting a layout policy of `text'.)
-
-        * To insert a glyph into the modeline, just put the glyph
-          directly as one of the modeline elements. (Unfortunately you
-          can't currently put a begin glyph or end glyph on one of the
-          modeline extents--they're ignored.)
-
-        * To insert a glyph into a toolbar, specify it as part of a
-          toolbar instantiator (typically set on the specifier
-          `default-toolbar').  See `default-toolbar' for more
-          information. (Note that it is standard practice to use a
-          symbol in place of the glyph list in the toolbar
-          instantiator; the symbol is evalled to get the glyph list.
-          This facilitates both creating the toolbar instantiator and
-          modifying individual glyphs in a toolbar later on.  For
-          example, you can change the way that the Mail toolbar button
-          looks by modifying the value of the variable
-          `toolbar-mail-icon' (in general, `toolbar-*-icon') and then
-          calling `(set-specifier-dirty-flag default-toolbar)'.  (####
-          Unfortunately this doesn't quite work the way it should; the
-          change will appear in new frames, but not existing ones.
-
-        * To insert a glyph into a gutter, create or modify a gutter
-          instantiator (typically set on the specifier
-          `default-gutter').  Gutter instantiators consist of strings
-          or lists of strings, so to insert a glyph, create an extent
-          over the string, and use `set-extent-begin-glyph' or
-          `set-extent-end-glyph' to set a glyph to be displayed at the
-          corresponding edge of the extent, just like for glyphs in a
-          buffer.
-
-        * To use a glyph as the icon for a frame, you do not actually
-          create a new glyph; rather, you change the specifications for
-          the existing glyph `frame-icon-glyph'. (Remember that,
-          because of the specifier nature of glyphs, you can set
-          different values for any particular buffer or frame.)
-
-        * To use a glyph as the mouse pointer, in general you do not
-          create a new glyph, but rather you change the specifications
-          of various existing glyphs, such as `text-pointer-glyph' for
-          the pointer used over text, `modeline-pointer-glyph' for the
-          pointer used over the modeline, etc.  Do an apropos over
-          `*-pointer-glyph' to find all of them. (Note also that you
-          can temporarily set the mouse pointer to some specific shape
-          by using `set-frame-pointer', which takes an image instance,
-          as obtained from calling `glyph-image-instance' on a glyph of
-          type `pointer' - either one of the above-mentioned variables
-          or one you created yourself.  (See below for what it means to
-          create a glyph of type `pointer'.)  This pointer will last
-          only until the next mouse motion event is processed or
-          certain other things happen, such as creating or deleting a
-          window. (In fact, the above-mentioned pointer glyph variables
-          are implemented as part of the default handler for mouse
-          motion events.  If you want to customize this behavior, take a
-          look at `mode-motion-hook', or `mouse-motion-handler' if you
-          really want to get low-level.)
-
-        * To use a glyph to control the shape of miscellaneous
-          redisplay effects such as the truncation and continuation
-          markers, set the appropriate existing glyph variables, as for
-          icons and pointers above.  See `continuation-glyph',
-          `control-arrow-glyph', `hscroll-glyph',
-          `invisible-text-glyph', `octal-escape-glyph', and
-          `truncation-glyph'.  See also `overlay-arrow-string', an odd
-          redisplay leftover which can be set to a glyph you created,
-          and will cause the glyph to be displayed on top of the text
-          position specified in the marker stored in
-          `overlay-arrow-position'.
-
-        * To use a glyph in a display table (i.e. to control the
-          appearance of any individual character), create the
-          appropriate character glyphs and then set a specification for
-          the specifier `current-display-table', which controls the
-          appearance of characters.  You can also set an overriding
-          display table for use with text displayed in a particular
-          face; see `set-face-display-table' and `make-display-table'.
-          #### Note: Display tables do not currently support general
-          Mule characters.  They will be overhauled at some point to
-          support this and to provide other features required under
-          Mule.
-
-        * To use a glyph as the background pixmap of a face: Note that
-          the background pixmap of a face is actually an image
-          specifier - probably the only place in XEmacs where an image
-          specifier occurs outside of a glyph.  Similarly to how the
-          glyph's image specifier works, you don't create your own
-          image specifier, but rather add specifications to the
-          existing one (using `set-face-background-pixmap').  Note that
-          the image instance that is generated in order to actually
-          display the background pixmap is of type `mono-pixmap',
-          meaning that it's a two-color image and the foreground and
-          background of the image get filled in with the corresponding
-          colors from the face.
-
-     It is extremely rare that you will ever have to specify a value for
-     TYPE, which should be one of `buffer' (used for glyphs in an
-     extent, the modeline, the toolbar, or elsewhere in a buffer),
-     `pointer' (used for the mouse-pointer), or `icon' (used for a
-     frame's icon), and defaults to `buffer'.  The only cases where it
-     needs to be specified is when creating icon or pointer glyphs, and
-     in both cases the necessary glyphs have already been created at
-     startup and are accessed through the appropriate variables, e.g.
-     `text-pointer-glyph' (or in general, `*-pointer-glyph') and
-     `frame-icon-glyph'.  *Note Glyph Types::.
-
- - Function: make-glyph-internal &optional type
-     This function creates a new, uninitialized glyph of type TYPE.
+* Image Specifiers::                   Specifying an image's appearance.
+* Image Instantiator Conversion::      Lazy realization of graphics.
+* Image Instantiator Formats::         A catalog of image descriptors.
+* Image Instances::                    Classes of graphical objects.
 
- - Function: make-pointer-glyph &optional spec-list
-     Return a new `pointer-glyph' object with the specification list
-     SPEC-LIST.  This function is equivalent to calling `make-glyph'
-     with a TYPE of `pointer'.
+\1f
+File: lispref.info,  Node: Image Specifiers,  Next: Image Instantiator Conversion,  Up: Images
 
-     It is extremely unlikely that you will ever need to create a
-     pointer glyph.  Instead, you probably want to be calling
-     `set-glyph-image' on an existing glyph, e.g. `text-pointer-glyph'.
+50.2.1 Image Specifiers
+-----------------------
 
- - Function: make-icon-glyph &optional spec-list
-     Return a new `pointer-glyph' object with the specification list
-     SPEC-LIST.  This function is equivalent to calling `make-glyph'
-     with a TYPE of `icon'.
+An image specifier is a description of the actual graphical realization
+of a glyph.  For example, a typical image description is _the file
+system path to a PNG file_.  Since redisplay doesn't know about files,
+and in any case the image may need to be manipulated (_e.g._, a face's
+background pixmap must be clipped and tiled), the PNG file must be
+converted internally to a window system bitmap or pixmap object.  We
+describe this process by writing that when XEmacs displays the image,
+it "instantiates" the "image instantiator" into an "image instance".
+Image instances are an internal object type (similar to font instances
+and color instances), describing how the image appears in a particular
+domain.  On the other hand, image instantiators, which are just
+descriptions of how the image should appear, are represented using Lisp
+strings or vectors.
+
+   Furthermore the graphical realization will vary, and for some devices
+may not even be a bitmapped graphic.  These variations may be controlled
+by the program by specifying different "image instantiators" in
+different locales.  This is implemented with an "image specifier", a
+specifier whose specifications are image instantiators.
+
+   Image specifiers are rarely if ever found by themselves.  However, an
+image specifier results from calling `glyph-image' on a glyph, or
+retrieving the `background-pixmap' property of a face, and you can
+check if some random object is an image specifier.
+
+ -- Function: image-specifier-p object
+     This function returns non-`nil' if OBJECT is an image specifier.
 
-     It is extremely unlikely that you will ever need to create a
-     pointer glyph.  Instead, you probably want to be calling
-     `set-glyph-image' on an existing glyph, e.g. `text-pointer-glyph'.
+ -- Function: make-image-specifier spec-list
+     This function creates a new image specifier object and initializes
+     it according to SPEC-LIST.  *Note Specifiers::.
 
-\1f
-File: lispref.info,  Node: Glyph Properties,  Next: Glyph Convenience Functions,  Prev: Creating Glyphs,  Up: Glyph Functions
+   This function exists mainly for completeness.  In practice, you
+rarely, if ever, need to actually create an image specifier.  Instead,
+they are implicitly created by the initialization of glyphs and faces,
+and the specifier member of these objects cannot be changed after
+initialization; you may only set the specifications it contains.
 
-Glyph Properties
-----------------
+   Image instantiators come in many formats: `xbm', `xpm', `gif',
+`jpeg', etc.  These denote the format of the data describing the image.
+The resulting image instances also come in many types--`mono-pixmap',
+`color-pixmap', `text', `pointer', etc.  This refers to the behavior of
+the image and the sorts of places it can appear. (For example, a
+color-pixmap image has fixed colors specified for it, while a
+mono-pixmap image comes in two unspecified shades "foreground" and
+"background" that are determined from the face of the glyph or
+surrounding text; a text image appears as a string of text and has an
+unspecified foreground, background, and font; a pointer image behaves
+like a mono-pixmap image but can only be used as a mouse pointer
+[mono-pixmap images cannot be used as mouse pointers]; etc.)
+
+   It is important to keep the distinction between image instantiator
+format and image instance type in mind.  Typically, a given image
+instantiator format can result in many different image instance types.
+For example, `xpm' can be instanced as `color-pixmap', `mono-pixmap',
+or `pointer'; whereas `cursor-font' can be instanced only as `pointer'.
+On the other hand, a particular image instance type can be generated
+by many different image instantiator formats (e.g.  `color-pixmap' can
+be generated by `xpm', `gif', `jpeg', etc.).
 
-Each glyph has a list of properties, which control all of the aspects of
-the glyph's appearance.  The following symbols have predefined meanings:
+   *Note Image Instances::, for a more detailed discussion of image
+instance types.
 
-`image'
-     The image used to display the glyph.
+   An image instantiator should be a string or a vector of the form
 
-`baseline'
-     Percent above baseline that glyph is to be displayed.  Only for
-     glyphs displayed inside of a buffer.
+      `[FORMAT :KEYWORD VALUE ...]'
 
-`contrib-p'
-     Whether the glyph contributes to the height of the line it's on.
-     Only for glyphs displayed inside of a buffer.
+   i.e. a format symbol followed by zero or more alternating
+keyword-value pairs.
 
-`face'
-     Face of this glyph (_not_ a specifier).
+   The form of an instantiator can be checked with
+`valid-instantiator-p' with a TYPE of `image', *Note Specifier
+Validation Functions::.
 
- - Function: set-glyph-property glyph property value &optional locale
-          tag-set how-to-add
-     This function changes a property of a GLYPH.
+   For a complete list of the format symbols and their usage, *Note
+Image Instantiator Formats::.
 
-     For built-in properties, the actual value of the property is a
-     specifier and you cannot change this; but you can change the
-     specifications within the specifier, and that is what this
-     function will do.  For user-defined properties, you can use this
-     function to either change the actual value of the property or, if
-     this value is a specifier, change the specifications within it.
+   If the instantiator is a string, it will be converted into a vector
+by looking it up according to the specs in the
+`console-type-image-conversion-list' for the console type of the domain
+(usually a window; sometimes a frame or device) over which the image is
+being instantiated.
+
+   If the instantiator specifies data from a file, the data will be
+read in at the time that the instantiator is added to the image
+specifier (which may be well before the image is actually displayed),
+and the instantiator will be converted into one of the inline-data
+forms, with the filename retained using a `:file' keyword.  This
+implies that the file must exist when the instantiator is added to the
+image, but does not need to exist at any other time (e.g. it may safely
+be a temporary file).
+
+   The available keywords are given below.  Note that some keywords are
+generally available (for example, the `:data' keyword may be used with
+any format except `nothing'), while others are only available for one
+format (`resource-id' is unique to the `mswindows-resource' format).
+
+`:data'
+     Inline image data.  If available for a given format, it may be
+     specified directly by the program, or it may be a cache of file
+     data previously read.  When present, it is used to instantiate the
+     image in preference to the file named by the `:file' property.
+
+     The format of inline data is image-format-specific.  For example,
+     in pixmap formats, the value should be a string, which is
+     interpreted as an octet-stream representing a bitmap or pixmap.
+     But for text formats, it's string containing the text to be
+     displayed, and for resource formats, it's a string containing the
+     name of the resource.
+
+`:file'
+     Data contained in a file.  The value is the name of this file.  If
+     both `:data' and `:file' are specified, the image is created from
+     what is specified in `:data' and the string in `:file' becomes the
+     value of the `image-instance-file-name' function when applied to
+     the resulting image-instance.  Note that there is nothing to stop a
+     program from changing either the `:file' or the `:data' property,
+     and there is no way to detect such mischief.  This means that the
+     data will _not_ be automatically reread if you change the `file'
+     property; you must force it by removing the `:data' property.
+     (One way to do this is replacing the whole specification with a new
+     vector.)  This keyword is not valid for instantiator formats
+     `nothing', `string', `formatted-string', `cursor-font', `font',
+     and `autodetect'.
+
+`:mask-data'
+     Inline data for `xbm' and `xface'.  This specifies a mask to be
+     used with the bitmap.  Pixels which are not set in the mask will
+     not be written to the imaging device.  The format is a list of
+     width, height, and bits, as for `:data'.
+
+`:mask-file'
+     For `xbm' and `xface'.  This specifies a file containing the mask
+     data.  If neither a mask file nor inline mask data is given for an
+     XBM image, and the XBM image comes from a file, XEmacs will look
+     for a mask file with the same name as the image file but with
+     `Mask' or `msk' appended.  For example, if you specify the XBM file
+     `left_ptr' [usually located in `/usr/include/X11/bitmaps'], the
+     associated mask file `left_ptrmsk' will automatically be picked up.
+
+`:resource-id'
+     Only for `mswindows-resource'.  This must be either an integer
+     (which directly specifies a resource number) or a string.  See the
+     description of `mswindows-resource' for valid strings.  *Note
+     Image Instantiator Formats::.
+
+`:foreground'
+`:background'
+     For `xbm', `xface', `cursor-font', and `font'.  These keywords
+     allow you to explicitly specify foreground and background colors.
+     The value should be anything acceptable to `make-color-instance'.
+     This will cause an external format that would by default be
+     instantiated as a `mono-pixmap' to instead be instantiated as a
+     two-color color-pixmap.  This can be used to override the colors
+     specified by a glyph's face, for example.  If the image is
+     instantiated as a pointer, they specify its foreground and/or
+     background, instead of the defaults of black and white.
+
+`:hotspot-x'
+`:hotspot-y'
+     For `xbm' and `xface'.  These keywords specify a hotspot if the
+     image is instantiated as a `pointer'.  Note that if the XBM image
+     file specifies a hotspot, it will automatically be picked up if no
+     explicit hotspot is given.
+
+`:color-symbols'
+     Only for `xpm'.  This specifies an alist that maps strings that
+     specify symbolic color names to the actual color to be used for
+     that symbolic color (in the form of a string or a color-specifier
+     object).  If this is not specified, the contents of
+     `xpm-color-symbols' are used to generate the alist.
+
+`:resource-type'
+     Only for `mswindows-resource'.  This must be a symbol, either
+     `cursor', `icon', or `bitmap', specifying the type of resource to
+     be retrieved.
+
+`:face'
+     For `inherit' and the widget formats.  This specifies the face to
+     inherit from.  For widgets this specifies the face to use for
+     display.  It defaults to gui-element-face.
+
+`:selected'
+`:active'
+`:suffix'
+`:keys'
+`:style'
+`:filter'
+`:config'
+`:included'
+`:key-sequence'
+`:accelerator'
+`:label'
+`:callback'
+     These keywords, accepted as menu item specs, are also accepted by
+     images instantiated as `widget'.  For their semantics, *Note Menu
+     Format::.
+
+\1f
+File: lispref.info,  Node: Image Instantiator Conversion,  Next: Image Instantiator Formats,  Prev: Image Specifiers,  Up: Images
+
+50.2.2 Image Instantiator Conversion
+------------------------------------
+
+Conversion is applied to image instantiators at the time they are added
+to an image specifier or at the time they are passed to
+`make-image-instance'.
+
+ -- Function: set-console-type-image-conversion-list console-type list
+     This function sets the image-conversion-list for consoles of the
+     given CONSOLE-TYPE.  The image-conversion-list specifies how image
+     instantiators that are strings should be interpreted.  Each
+     element of the list should be a list of two elements (a regular
+     expression string and a vector) or a list of three elements (the
+     preceding two plus an integer index into the vector).  The string
+     is converted to the vector associated with the first matching
+     regular expression.  If a vector index is specified, the string
+     itself is substituted into that position in the vector.
+
+     Note: The conversion above is applied when the image instantiator
+     is added to an image specifier, not when the specifier is actually
+     instantiated.  Therefore, changing the image-conversion-list only
+     affects newly-added instantiators.  Existing instantiators in
+     glyphs and image specifiers will not be affected.
+
+ -- Function: console-type-image-conversion-list console-type
+     This function returns the image-conversion-list for consoles of
+     the given CONSOLE-TYPE.
+
+\1f
+File: lispref.info,  Node: Image Instantiator Formats,  Next: Image Instances,  Prev: Image Instantiator Conversion,  Up: Images
+
+50.2.3 Image Instantiator Formats
+---------------------------------
+
+The "format" field of an image instantiator should be a symbol denoting
+a valid format.  Which formats are valid will depend on the features
+(such as image decoding libraries) available, on platform support (MS
+Windows resource IDs make no sense on other platforms), and on the
+locale.
+
+ -- Function: valid-image-instantiator-format-p format &optional locale
+     This function returns non-`nil' if FORMAT is a valid image
+     instantiator format.
+
+     If LOCALE is non-`nil' then the format is checked in that locale.
+     If LOCALE is `nil' the current console is used.
+
+     Note that the return value for many formats listed above depends on
+     whether XEmacs was compiled with support for that format.
+
+ -- Function: image-instantiator-format-list
+     This function returns a list of valid image-instantiator formats.
+
+   Here is a table of image-instantiator formats, giving the keywords
+that are usable with each, and the kinds of instances that may result.
+
+`nothing'
+     Don't display anything; no keywords are valid for this format.
+     Can only be instanced as `nothing'.
+
+`string'
+     Display this image as a text string.  Can only be instanced as
+     `text', although support for instancing as `mono-pixmap' should be
+     added.  The valid keyword is `:data'.  The value should be a
+     string, and it is interpreted as a string of characters.
+
+`formatted-string'
+     Display this image as a text string with replaceable fields,
+     similar to a modeline format string.  The valid keyword is `:data'.
+     The value should be a string, and it is interpreted as a string of
+     characters containing format sequences.
+
+     Not currently implemented.
+
+`xbm'
+     An X bitmap; available only if X support was compiled into this
+     XEmacs.
+
+     If used in a buffer glyph, icon glyph, or face background pixmap,
+     it will be instantiated as `mono-pixmap' unless the `:foreground'
+     or `:background' keywords are present.  In the latter case it will
+     be instantiated as `color-pixmap' with the two specified colors.
+     (Probably if `:foreground' or `:background' is omitted, it
+     defaults to black or white respectively.)  If used in a pointer
+     glyph, it will be instantiated as an `pointer'.
+
+     The valid keywords and their values are
+    `:data'
+          A list containing the height and width of the bitmap as
+          integers, and a string interpreted as a bit vector according
+          to the X11 standard XBM bitmap format, in that order.
+
+    `:file'
+          The name of a file containing standard XBM-format data.  If
+          it contains a hotspot specification, it will be parsed and
+          used if the hotspot is not explicitly specified.
+
+    `:mask-data'
+          A list containing the height and width of the bitmap as
+          integers, and a string interpreted as a bit vector according
+          to the X11 standard XBM bitmap format, in that order.  This
+          bitmap is interpreted as the clipping region for the bitmap
+          contained in the `:data' property.
+
+    `:mask-file'
+          The name of a file containing standard XBM-format data.
+          Interpreted as the clipping region for the bitmap contained
+          in the `:data' property.
+
+    `:foreground'
+    `:background'
+          These keywords allow you to explicitly specify foreground and
+          background colors.  The values should be acceptable to
+          `make-color-instance'.
+
+    `:hotspot-x'
+    `:hotspot-y'
+          Integers denoting the hotspot (mouse pointer position), with
+          (0,0) at the top left corner.  If given, these override any
+          specification in the XBM file.
+
+`xpm'
+     An XPM pixmap; only available if XPM support was compiled into
+     this XEmacs.
+
+     Can be instanced as `color-pixmap', `mono-pixmap', or `pointer'.
+
+     XPM is an add-on library for X that was designed to rectify the
+     shortcomings of the XBM format.  Many icons and labels used in the
+     XEmacs GUI are still distributed in XPM format (although we are
+     moving to standardize on the PNG format).  It is therefore highly
+     desirable that XPM be available in your XEmacs.
+
+     Most implementations of X include the XPM library as a standard
+     part.  If your vendor does not, it is highly recommended that you
+     download it and install it.  You can get it from the XEmacs FTP
+     site and mirrors, as well as from most sites that distribute X11.
+
+     The valid keywords and their values are
+    `:data'
+          A string interpreted as the contents of a standard XPM file.
+
+    `:file'
+          The name of a file containing standard XPM-format data.  If
+          it contains a hotspot specification, it will be parsed and
+          used if the hotspot is not explicitly specified.
+
+    `:hotspot-x'
+    `:hotspot-y'
+          Integers denoting the hotspot (mouse pointer position), with
+          (0,0) at the top left corner.  If given, these override any
+          specification in the XBM file.  (This may not be true.  The
+          original documentation doesn't mention them in connection
+          with XPM, but a pointer needs a hotspot.)
+
+    `:color-symbols'
+          An alist that maps the one- or two-character strings that
+          specify symbolic color names in the XPM file to the actual
+          color to be used for that symbolic color (in the form of a
+          string acceptable as a color instantiator, *Note Color
+          Specifiers::, or a color-specifier object).  If this is not
+          specified, the contents of `xpm-color-symbols' are used to
+          generate the alist.
+
+`xface'
+     An X-Face bitmap, used to encode people's faces in e-mail messages;
+     only available if X-Face support was compiled into this XEmacs.
+
+     Will be instanced as `mono-pixmap', `color-pixmap', or `pointer',
+     depending on the target instance type and the presence of color
+     keywords.
+
+     The valid keywords and their values are
+    `:data'
+          A list containing the height and width of the bitmap as
+          integers, and a string interpreted as a bit vector according
+          to the X11 standard XBM bitmap format, in that order.
+
+    `:file'
+          The name of a file containing standard XBM-format data.  If
+          it contains a hotspot specification, it will be parsed and
+          used if the hotspot is not explicitly specified.
+
+    `:mask-data'
+          A list containing the height and width of the bitmap as
+          integers, and a string interpreted as a bit vector according
+          to the X11 standard XBM bitmap format, in that order.  This
+          bitmap is interpreted as the clipping region for the bitmap
+          contained in the `:data' property.
+
+    `:mask-file'
+          The name of a file containing standard XBM-format data.
+          Interpreted as the clipping region for the bitmap contained
+          in the `:data' property.
+
+    `:foreground'
+    `:background'
+          These keywords allow you to explicitly specify foreground and
+          background colors.  The values should be acceptable to
+          `make-color-instance'.
+
+    `:hotspot-x'
+    `:hotspot-y'
+          Integers denoting the hotspot (mouse pointer position), with
+          (0,0) at the top left corner.  If given, these override any
+          specification in the XBM file.
+
+`gif'
+`jpeg'
+`png'
+`tiff'
+     These are GIF87- or GIF89-format, JPEG-format, PNG/GIF24-format,
+     and TIFF-format images, respectively.  They are available only if
+     appropriate decoding support was built into XEmacs.  XEmacs
+     includes GIF decoding functions as a standard part of it, so if
+     you have X support, you will normally have GIF support, unless you
+     explicitly disable it at configure time.  If you have development
+     support (both the libraries and the relevant C header files)
+     available when XEmacs is built, the JPEG, PNG, and TIFF libraries
+     will automatically be detected (in the "usual places") and linked
+     into the build.
+
+     Note that PNG is the standard format for images distributed with
+     XEmacs, so it is highly recommended that PNG support be built in.
+
+     All of these instantiators will be instanced as `color-pixmap'.
+
+     The valid keywords and their values are
+    `:data'
+          A string interpreted as the contents of a file containing
+          data in the appropriate standard format.
+
+    `:file'
+          The name of a file containing standard-format data.
+
+`cursor-font'
+     Most window systems provide a set of standard cursors, which in
+     X11 is called a cursor font.  Can only be instanced as `pointer'.
+     This should probably be fixed.
+
+     The valid keyword is `:data'.  Its value should be a string
+     containing one of the standard cursor-font names, such as `watch'
+     or `right_ptr' under X.  More specifically, in the X Window System
+     it may be any of the standard cursor names from appendix B of the
+     Xlib manual, provided in the file `<X11/cursorfont.h>' by most
+     distributions, minus the `XC_' prefix.  For MS Windows, use
+     `mswindows-resource' instantiator format, not `cursor-font'.
+     Other window systems may have different lists.
+
+`font'
+     A glyph from a font; i.e. the name of a font, and glyph index into
+     it of the form `FONT fontname index [[mask-font] mask-index]'.
+     Only if X support was compiled into this XEmacs.  Currently can
+     only be instanced as `pointer'.  This should probably be fixed.
+
+`mswindows-resource'
+     An MS Windows pointer resource.  Specifies a resource to retrieve
+     directly from the system (an OEM resource) or from a file,
+     particularly an executable file.  Can be instanced as `pointer' or
+     `color-pixmap'.
+
+     The valid keywords and their values are
+
+    `:resource-type'
+          A string naming the type (`cursor', `bitmap', or `icon') of
+          the resource.  Required.
+
+    `:file'
+          A string containing the name of the file containing the
+          resource (often an executable).  If a system resource,
+          `:file' should be omitted.
+
+    `:resource-id'
+          A string containing the name of a resource.   Required if
+          `:file' is not specified.
+
+          This must be either an integer (which directly specifies a
+          resource number) or a string.  Valid strings are
+
+          For bitmaps:
+
+          "close", "uparrow", "dnarrow", "rgarrow", "lfarrow",
+          "reduce", "zoom", "restore", "reduced", "zoomd", "restored",
+          "uparrowd", "dnarrowd", "rgarrowd", "lfarrowd", "mnarrow",
+          "combo", "uparrowi", "dnarrowi", "rgarrowi", "lfarrowi",
+          "size", "btsize", "check", "checkboxes", and "btncorners".
+
+          For cursors:
+
+          "normal", "ibeam", "wait", "cross", "up", "sizenwse",
+          "sizenesw", "sizewe", "sizens", "sizeall", and "no".
+
+          For icons:
+
+          "sample", "hand", "ques", "bang", "note", and "winlogo".
+
+`subwindow'
+     An embedded windowing system window.  Can only be instanced as
+     `subwindow'.  Not implemented.
+
+`button'
+     A button widget; either a push button, radio button or toggle
+     button.  Can only be instanced as `widget'.
+
+`combo-box'
+     A drop list of selectable items in a widget, for editing text.
+     Can only be instanced as `widget'.
+
+`edit-field'
+     A text editing widget.  Can only be instanced as `widget'.
+
+`label'
+     A static, text-only, widget; for displaying text.  Can only be
+     instanced as `widget'.
+
+`layout'
+     A widget for controlling the positioning of children underneath it.
+     Through the use of nested layouts, a widget hierarchy can be
+     created which can have the appearance of any standard dialog box
+     or similar arrangement; all of this is counted as one "glyph" and
+     could appear in many of the places that expect a single glyph.
+     Can only be instanced as `widget'.
+
+`native-layout'
+     The native version of a layout widget.  Can only be instanced as
+     `widget'.
+
+`progress-gauge'
+     A sliding widget, for showing progress.  Can only be instanced as
+     `widget'.
+
+`tab-control'
+     A tab widget; a series of user selectable tabs.  Can only be
+     instanced as `widget'.
+
+`tree-view'
+     A folding widget.  Can only be instanced as `widget'.
+
+`scrollbar'
+     A scrollbar widget.  Can only be instanced as `widget'.
+
+`autodetect'
+     XEmacs tries to guess what format the data is in.  If X support
+     exists, the data string will be checked to see if it names a
+     filename.  If so, and this filename contains XBM or XPM data, the
+     appropriate sort of pixmap or pointer will be created. [This
+     includes picking up any specified hotspot or associated mask
+     file.] Otherwise, if `pointer' is one of the allowable
+     image-instance types and the string names a valid cursor-font
+     name, the image will be created as a pointer.  Otherwise, the
+     image will be displayed as text.  If no X support exists, the
+     image will always be displayed as text.
+
+`inherit'
+     Inherit from the background-pixmap property of a face.  Can only be
+     instanced as `mono-pixmap'.
+
+   There are two convenience variables for use with the XBM and XPM
+image formats.
+
+ -- Variable: xpm-color-symbols
+     This variable holds definitions of logical color-names used when
+     reading XPM files.  Elements of this list should be of the form
+     `(COLOR-NAME FORM-TO-EVALUATE)'.  The COLOR-NAME should be a
+     string, which is the name of the color to define; the
+     FORM-TO-EVALUATE should evaluate to a color specifier object, or a
+     string to be passed to `make-color-instance' (*note Colors::).  If
+     a loaded XPM file references a symbolic color called COLOR-NAME,
+     it will display as the computed color instead.
+
+     The default value of this variable defines the logical color names
+     `"foreground"' and `"background"' to be the colors of the
+     `default' face.
+
+ -- Variable: x-bitmap-file-path
+     A list of the directories in which X bitmap files may be found.
+     If `nil', this is initialized from the `"*bitmapFilePath"'
+     resource.  This is used by the `make-image-instance' function
+     (however, note that if the environment variable `XBMLANGPATH' is
+     set, it is consulted first).
+
+\1f
+File: lispref.info,  Node: Image Instances,  Prev: Image Instantiator Formats,  Up: Images
+
+50.2.4 Image Instances
+----------------------
+
+Image-instance objects encapsulate the way a particular image (pixmap,
+etc.) is displayed on a particular device.
+
+   In most circumstances, you do not need to directly create image
+instances; use a glyph instead.  However, it may occasionally be useful
+to explicitly create image instances, if you want more control over the
+instantiation process.
+
+ -- Function: image-instance-p object
+     This function returns non-`nil' if OBJECT is an image instance.
+
+* Menu:
+
+* Image Instance Types::         Each image instances has a particular type.
+* Image Instance Functions::    Functions for working with image instances.
+
+\1f
+File: lispref.info,  Node: Image Instance Types,  Next: Image Instance Functions,  Up: Image Instances
 
-     If PROPERTY is a built-in property, the specifications to be added
-     to this property can be supplied in many different ways:
+50.2.4.1 Image Instance Types
+.............................
 
-        * If VALUE is a simple instantiator (e.g. a string naming a
-          pixmap filename) or a list of instantiators, then the
-          instantiator(s) will be added as a specification of the
-          property for the given LOCALE (which defaults to `global' if
-          omitted).
+Image instances come in a number of different types.  The type of an
+image instance specifies the nature of the image: Whether it is a text
+string, a mono pixmap, a color pixmap, etc.
 
-        * If VALUE is a list of specifications (each of which is a cons
-          of a locale and a list of instantiators), then LOCALE must be
-          `nil' (it does not make sense to explicitly specify a locale
-          in this case), and specifications will be added as given.
+   The valid image instance types are
 
-        * If VALUE is a specifier (as would be returned by
-          `glyph-property' if no LOCALE argument is given), then some
-          or all of the specifications in the specifier will be added
-          to the property.  In this case, the function is really
-          equivalent to `copy-specifier' and LOCALE has the same
-          semantics (if it is a particular locale, the specification
-          for the locale will be copied; if a locale type,
-          specifications for all locales of that type will be copied;
-          if `nil' or `all', then all specifications will be copied).
+`nothing'
+     Nothing is displayed.
 
-     HOW-TO-ADD should be either `nil' or one of the symbols `prepend',
-     `append', `remove-tag-set-prepend', `remove-tag-set-append',
-     `remove-locale', `remove-locale-type', or `remove-all'.  See
-     `copy-specifier' and `add-spec-to-specifier' for a description of
-     what each of these means.  Most of the time, you do not need to
-     worry about this argument; the default behavior usually is fine.
+`text'
+     Displayed as text.  The foreground and background colors and the
+     font of the text are specified independent of the pixmap.
+     Typically these attributes will come from the face of the
+     surrounding text, unless a face is specified for the glyph in
+     which the image appears.
 
-     In general, it is OK to pass an instance object (e.g. as returned
-     by `glyph-property-instance') as an instantiator in place of an
-     actual instantiator.  In such a case, the instantiator used to
-     create that instance object will be used (for example, if you set
-     a font-instance object as the value of the `font' property, then
-     the font name used to create that object will be used instead).
-     If some cases, however, doing this conversion does not make sense,
-     and this will be noted in the documentation for particular types
-     of instance objects.
+`mono-pixmap'
+     Displayed as a mono pixmap (a pixmap with only two colors where the
+     foreground and background can be specified independent of the
+     pixmap; typically the pixmap assumes the foreground and background
+     colors of the text around it, unless a face is specified for the
+     glyph in which the image appears).
 
-     If PROPERTY is not a built-in property, then this function will
-     simply set its value if LOCALE is `nil'.  However, if LOCALE is
-     given, then this function will attempt to add VALUE as the
-     instantiator for the given LOCALE, using `add-spec-to-specifier'.
-     If the value of the property is not a specifier, it will
-     automatically be converted into a `generic' specifier.
+`color-pixmap'
+     Displayed as a color pixmap.
 
- - Function: glyph-property glyph property &optional locale
-     This function returns GLYPH's value of the given PROPERTY.
+`pointer'
+     Used as the mouse pointer for a window.
 
-     If LOCALE is omitted, the GLYPH's actual value for PROPERTY will
-     be returned.  For built-in properties, this will be a specifier
-     object of a type appropriate to the property (e.g. a font or color
-     specifier).  For other properties, this could be anything.
+`subwindow'
+     A child window that is treated as an image.  This allows (e.g.)
+     another program to be responsible for drawing into the window.
+     Not currently implemented.
 
-     If LOCALE is supplied, then instead of returning the actual value,
-     the specification(s) for the given locale or locale type will be
-     returned.  This will only work if the actual value of PROPERTY is
-     a specifier (this will always be the case for built-in properties,
-     but may or may not apply to user-defined properties).  If the
-     actual value of PROPERTY is not a specifier, this value will
-     simply be returned regardless of LOCALE.
+`widget'
+     An active GUI element implemented as a "widget" or "control" of the
+     underlying window system.
 
-     The return value will be a list of instantiators (e.g. vectors
-     specifying pixmap data), or a list of specifications, each of
-     which is a cons of a locale and a list of instantiators.
-     Specifically, if LOCALE is a particular locale (a buffer, window,
-     frame, device, or `global'), a list of instantiators for that
-     locale will be returned.  Otherwise, if LOCALE is a locale type
-     (one of the symbols `buffer', `window', `frame', or `device'), the
-     specifications for all locales of that type will be returned.
-     Finally, if LOCALE is `all', the specifications for all locales of
-     all types will be returned.
+   The following functions are used to check whether an image instance
+type is valid in the running XEmacs.
 
-     The specifications in a specifier determine what the value of
-     PROPERTY will be in a particular "domain" or set of circumstances,
-     which is typically a particular Emacs window along with the buffer
-     it contains and the frame and device it lies within.  The value is
-     derived from the instantiator associated with the most specific
-     locale (in the order buffer, window, frame, device, and `global')
-     that matches the domain in question.  In other words, given a
-     domain (i.e. an Emacs window, usually), the specifier for PROPERTY
-     will first be searched for a specification whose locale is the
-     buffer contained within that window; then for a specification
-     whose locale is the window itself; then for a specification whose
-     locale is the frame that the window is contained within; etc.  The
-     first instantiator that is valid for the domain (usually this
-     means that the instantiator is recognized by the device [i.e. the
-     X server or TTY device] that the domain is on).  The function
-     `glyph-property-instance' actually does all this, and is used to
-     determine how to display the glyph.
+ -- Function: valid-image-instance-type-p type
+     This function returns non-`nil' if TYPE is a valid image instance
+     type.
 
- - Function: glyph-property-instance glyph property &optional domain
-          default no-fallback
-     This function returns the instance of GLYPH's PROPERTY in the
-     specified DOMAIN.
+ -- Function: image-instance-type-list
+     This function returns a list of the valid image instance types.
 
-     Under most circumstances, DOMAIN will be a particular window, and
-     the returned instance describes how the specified property
-     actually is displayed for that window and the particular buffer in
-     it.  Note that this may not be the same as how the property
-     appears when the buffer is displayed in a different window or
-     frame, or how the property appears in the same window if you
-     switch to another buffer in that window; and in those cases, the
-     returned instance would be different.
+   The following functions are used to determine the type of an image
+instance.
 
-     The returned instance is an image-instance object, and you can
-     query it using the appropriate image instance functions.  For
-     example, you could use `image-instance-depth' to find out the
-     depth (number of color planes) of a pixmap displayed in a
-     particular window.  The results might be different from the
-     results you would get for another window (perhaps the user
-     specified a different image for the frame that window is on; or
-     perhaps the same image was specified but the window is on a
-     different X server, and that X server has different color
-     capabilities from this one).
+ -- Function: image-instance-type image-instance
+     Return the type of the given image instance.  The return value
+     will be one of `nothing', `text', `mono-pixmap', `color-pixmap',
+     `pointer', `subwindow', or `widget'.
 
-     DOMAIN defaults to the selected window if omitted.
+ -- Function: text-image-instance-p object
+     Return non-`nil' if OBJECT is an image instance of type `text'.
 
-     DOMAIN can be a frame or device, instead of a window.  The value
-     returned for such a domain is used in special circumstances when a
-     more specific domain does not apply; for example, a frame value
-     might be used for coloring a toolbar, which is conceptually
-     attached to a frame rather than a particular window.  The value is
-     also useful in determining what the value would be for a
-     particular window within the frame or device, if it is not
-     overridden by a more specific specification.
+ -- Function: mono-pixmap-image-instance-p object
+     Return non-`nil' if OBJECT is an image instance of type
+     `mono-pixmap'.
 
-     If PROPERTY does not name a built-in property, its value will
-     simply be returned unless it is a specifier object, in which case
-     it will be instanced using `specifier-instance'.
+ -- Function: color-pixmap-image-instance-p object
+     Return non-`nil' if OBJECT is an image instance of type
+     `color-pixmap'.
 
-     Optional arguments DEFAULT and NO-FALLBACK are the same as in
-     `specifier-instance'.  *Note Specifiers::.
+ -- Function: pointer-image-instance-p object
+     Return non-`nil' if OBJECT is an image instance of type `pointer'.
 
- - Function: remove-glyph-property glyph property &optional locale
-          tag-set exact-p
-     This function removes a property from a glyph.  For built-in
-     properties, this is analogous to `remove-specifier'.  *Note
-     remove-specifier-p: Specifiers, for the meaning of the LOCALE,
-     TAG-SET, and EXACT-P arguments.
+ -- Function: subwindow-image-instance-p object
+     Return non-`nil' if OBJECT is an image instance of type
+     `subwindow'.
+
+ -- Function: nothing-image-instance-p object
+     Return non-`nil' if OBJECT is an image instance of type `nothing'.
+
+ -- Function: widget-image-instance-p object
+     Return non-`nil' if OBJECT is an image instance of type `widget'.
 
 \1f
-File: lispref.info,  Node: Glyph Convenience Functions,  Next: Glyph Dimensions,  Prev: Glyph Properties,  Up: Glyph Functions
+File: lispref.info,  Node: Image Instance Functions,  Prev: Image Instance Types,  Up: Image Instances
 
-Glyph Convenience Functions
----------------------------
+50.2.4.2 Image Instance Functions
+.................................
 
-The following functions are provided for working with specific
-properties of a glyph.  Note that these are exactly like calling the
-general functions described above and passing in the appropriate value
-for PROPERTY.
+ -- Function: make-image-instance data &optional domain dest-types
+          noerror
+     This function creates a new image-instance object.
 
-   Remember that if you want to determine the "value" of a specific
-glyph property, you probably want to use the `*-instance' functions.
-For example, to determine whether a glyph contributes to its line
-height, use `glyph-contrib-p-instance', not `glyph-contrib-p'. (The
-latter will return a boolean specifier or a list of specifications, and
-you probably aren't concerned with these.)
+     DATA is an image instantiator, which describes the image (*note
+     Image Specifiers::).
 
- - Function: glyph-image glyph &optional locale
-     This function is equivalent to calling `glyph-property' with a
-     property of `image'.  The return value will be an image specifier
-     if LOCALE is `nil' or omitted; otherwise, it will be a
-     specification or list of specifications.
+     DEST-TYPES should be a list of allowed image instance types that
+     can be generated.  The DEST-TYPES list is unordered.  If multiple
+     destination types are possible for a given instantiator, the "most
+     natural" type for the instantiator's format is chosen.  These are
 
- - Function: set-glyph-image glyph spec &optional locale tag-set
-          how-to-add
-     This function is equivalent to calling `set-glyph-property' with a
-     property of `image'.
+    `XBM'
+    `xface'
+          `mono-pixmap', then `color-pixmap', then `pointer'.
 
- - Function: glyph-image-instance glyph &optional domain default
-          no-fallback
-     This function returns the instance of GLYPH's image in the given
-     DOMAIN, and is equivalent to calling `glyph-property-instance'
-     with a property of `image'.  The return value will be an image
-     instance.
+    `XPM'
+    `GIF'
+    `JPEG'
+    `PNG'
+    `TIFF'
+          `color-pixmap', then `mono-pixmap', then `pointer'.
 
-     Normally DOMAIN will be a window or `nil' (meaning the selected
-     window), and an instance object describing how the image appears
-     in that particular window and buffer will be returned.
+    `string'
+    `formatted-string formats'
+          `text', then `mono-pixmap' (not currently implemented), then
+          `color-pixmap' (not currently implemented).
 
- - Function: glyph-contrib-p glyph &optional locale
-     This function is equivalent to calling `glyph-property' with a
-     property of `contrib-p'.  The return value will be a boolean
-     specifier if LOCALE is `nil' or omitted; otherwise, it will be a
-     specification or list of specifications.
+    `mswindows-resource'
+          For pointer resources, `pointer'.
 
- - Function: set-glyph-contrib-p glyph spec &optional locale tag-set
-          how-to-add
-     This function is equivalent to calling `set-glyph-property' with a
-     property of `contrib-p'.
+          For the others, `color-pixmap'.
 
- - Function: glyph-contrib-p-instance glyph &optional domain default
-          no-fallback
-     This function returns whether the glyph contributes to its line
-     height in the given DOMAIN, and is equivalent to calling
-     `glyph-property-instance' with a property of `contrib-p'.  The
-     return value will be either `nil' or `t'. (Normally DOMAIN will be
-     a window or `nil', meaning the selected window.)
+     The other formats can only be instantiated as one type.
 
- - Function: glyph-baseline glyph &optional locale
-     This function is equivalent to calling `glyph-property' with a
-     property of `baseline'.  The return value will be a specifier if
-     LOCALE is `nil' or omitted; otherwise, it will be a specification
-     or list of specifications.
+     If you want to control more specifically the order of the types
+     into which an image is instantiated, call `make-image-instance'
+     repeatedly until it succeeds, passing less and less preferred
+     destination types each time.
+
+     If DEST-TYPES is omitted, all possible types are allowed.
+
+     DOMAIN specifies the domain to which the image instance will be
+     attached.  This domain is termed the "governing domain".  The type
+     of the governing domain depends on the image instantiator format.
+     (Although, more correctly, it should probably depend on the image
+     instance type.)  For example, pixmap image instances are specific
+     to a device, but widget image instances are specific to a
+     particular XEmacs window because in order to display such a widget
+     when two windows onto the same buffer want to display the widget,
+     two separate underlying widgets must be created.  (That's because
+     a widget is actually a child window-system window, and all
+     window-system windows have a unique existence on the screen.)
+     This means that the governing domain for a pixmap image instance
+     will be some device (most likely, the only existing device),
+     whereas the governing domain for a widget image instance will be
+     some XEmacs window.
+
+     If you specify an overly general DOMAIN (e.g. a frame when a
+     window was wanted), an error is signaled.  If you specify an overly
+     specific DOMAIN (e.g. a window when a device was wanted), the
+     corresponding general domain is fetched and used instead.  For
+     `make-image-instance', it makes no difference whether you specify
+     an overly specific domain or the properly general domain derived
+     from it.  However, it does matter when creating an image instance
+     by instantiating a specifier or glyph (e.g. with
+     `glyph-image-instance'), because the more specific domain causes
+     spec lookup to start there and proceed to more general domains.
+     (It would also matter when creating an image instance with an
+     instantiator format of `inherit', but we currently disallow this.)
+
+     If omitted, DOMAIN defaults to the selected window.
+
+     NOERROR controls what happens when the image cannot be generated.
+     If `nil', an error message is generated.  If `t', no messages are
+     generated and this function returns `nil'.  If anything else, a
+     warning message is generated and this function returns `nil'.
+
+ -- Function: colorize-image-instance image-instance foreground
+          background
+     This function makes the image instance be displayed in the given
+     colors.  Image instances come in two varieties: bitmaps, which are
+     1 bit deep which are rendered in the prevailing foreground and
+     background colors; and pixmaps, which are of arbitrary depth
+     (including 1) and which have the colors explicitly specified.
+     This function converts a bitmap to a pixmap.  If the image
+     instance was a pixmap already, nothing is done (and `nil' is
+     returned).  Otherwise `t' is returned.
+
+   The following functions are
+
+ -- Function: image-instance-name image-instance
+     This function returns the name of the given image instance.  The
+     name is typically taken from the `:file' property of the
+     instantiator if present, otherwise from the `:data' property.
+
+ -- Function: image-instance-domain image-instance
+     Return the governing domain of the given IMAGE-INSTANCE.  The
+     governing domain of an image instance is the domain that the image
+     instance is specific to.  It is _NOT_ necessarily the domain that
+     was given to the call to `specifier-instance' that resulted in the
+     creation of this image instance.  See `make-image-instance' for
+     more information on governing domains.
+
+ -- Function: image-instance-string image-instance
+     This function returns the string of the given image instance.
+     This will only be non-`nil' for text image instances.
+
+ -- Function: image-instance-file-name image-instance
+     This function returns the file name from which IMAGE-INSTANCE was
+     read, if known.
+
+ -- Function: image-instance-mask-file-name image-instance
+     This function returns the file name from which IMAGE-INSTANCE's
+     mask was read, if known.
 
- - Function: set-glyph-baseline glyph spec &optional locale tag-set
-          how-to-add
-     This function is equivalent to calling `set-glyph-property' with a
-     property of `baseline'.
+   Pixmaps are considered to be three-dimensional.  The height and
+width of the pixel array that is displayed, and the color depth of its
+pixels, are accessed with these functions.
 
- - Function: glyph-baseline-instance glyph &optional domain default
-          no-fallback
-     This function returns the instance of GLYPH's baseline value in
-     the given DOMAIN, and is equivalent to calling
-     `glyph-property-instance' with a property of `baseline'.  The
-     return value will be an integer or `nil'.
+ -- Function: image-instance-depth image-instance
+     This function returns the depth of the image instance.  This is 0
+     for a mono pixmap, or a positive integer for a color pixmap.
 
-     Normally DOMAIN will be a window or `nil' (meaning the selected
-     window), and an instance object describing the baseline value
-     appears in that particular window and buffer will be returned.
+ -- Function: image-instance-height image-instance
+     This function returns the height of the image instance, in pixels.
 
- - Function: glyph-face glyph
-     This function returns the face of GLYPH. (Remember, this is not a
-     specifier, but a simple property.)
+ -- Function: image-instance-width image-instance
+     This function returns the width of the image instance, in pixels.
 
- - Function: set-glyph-face glyph face
-     This function changes the face of GLYPH to FACE.
+   The hotspot is a point relative to the origin of the pixmap.  When
+an image is used as a mouse pointer, the hotspot is the point on the
+image that sits over the location that the pointer points to.  This is,
+for example, the tip of the arrow or the center of the crosshairs.
 
-\1f
-File: lispref.info,  Node: Glyph Dimensions,  Prev: Glyph Convenience Functions,  Up: Glyph Functions
+   These functions access the coordinates of the hotspot.  They simply
+return `nil' for a non-pointer image instance.
 
-Glyph Dimensions
-----------------
+ -- Function: image-instance-hotspot-x image-instance
+     This function returns the X coordinate of the image instance's
+     hotspot, if known.
 
- - Function: glyph-width glyph &optional window
-     This function returns the width of GLYPH on WINDOW.  This may not
-     be exact as it does not take into account all of the context that
-     redisplay will.
+ -- Function: image-instance-hotspot-y image-instance
+     This function returns the Y coordinate of the image instance's
+     hotspot, if known.
 
- - Function: glyph-ascent glyph &optional window
-     This function returns the ascent value of GLYPH on WINDOW.  This
-     may not be exact as it does not take into account all of the
-     context that redisplay will.
+   Mono pixmaps and pointers may have their foreground and background
+colors set when instanced.  Use these functions to access color
+information.
 
- - Function: glyph-descent glyph &optional window
-     This function returns the descent value of GLYPH on WINDOW.  This
-     may not be exact as it does not take into account all of the
-     context that redisplay will.
+ -- Function: image-instance-foreground image-instance
+     This function returns the foreground color of IMAGE-INSTANCE, if
+     applicable.  This will be a color instance or `nil'.  (It will only
+     be non-`nil' for colorized mono pixmaps and for pointers.)
 
- - Function: glyph-height glyph &optional window
-     This function returns the height of GLYPH on WINDOW.  (This is
-     equivalent to the sum of the ascent and descent values.)  This may
-     not be exact as it does not take into account all of the context
-     that redisplay will.
+ -- Function: image-instance-background image-instance
+     This function returns the background color of IMAGE-INSTANCE, if
+     applicable.  This will be a color instance or `nil'.  (It will only
+     be non-`nil' for colorized mono pixmaps and for pointers.)
 
 \1f
-File: lispref.info,  Node: Images,  Next: Glyph Types,  Prev: Glyph Functions,  Up: Glyphs
+File: lispref.info,  Node: Using Glyphs,  Next: Manipulating Glyphs,  Prev: Images,  Up: Glyphs
+
+50.3 Using Glyphs
+=================
 
-Images
-======
+Glyph usage is unfortunately somewhat arcane.  (For discussion of
+rationale, *Note Glyphs: (Internals)Glyphs.)  Because they are not
+"text," they cannot be inserted directly into a buffer.  Instead, they
+are values of properties of extents attached to buffers or strings,
+values of global variables such as mouse pointers, or as a component of
+a complex data structure such as a toolbar initializer.  Although these
+uses could probably streamlined, each structure has its own
+requirements.  Since glyphs are very flexible, it is possible to create
+applications like the `edit-toolbar' and `xpm-mode' libraries which
+display glyphs in a buffer (for reference while editing) that are
+normally used in a different context.
+
+   Usage of glyphs can roughly be categorized as follows:
+
+*Buffer glyphs*
+     Glyphs that are inserted in a buffer may be used for their own
+     sake (for example, image display in `w3'), as an accurate
+     representation of text that can't be displayed in usual fonts
+     (equation display in `preview-latex'), or as annotations (such as
+     a marginal indication of a bookmark).  Glyphs are attached to
+     buffers via extents.
+
+*Redisplay glyphs*
+     Glyphs can be used to create XEmacs-specific "fonts".  For example,
+     the character that indicates truncation of lines is implemented as
+     the `truncation-glyph'.  It is also possible to have XEmacs
+     display a certain character using a custom glyph, via display
+     tables.
+
+*Frame glyphs*
+     Glyphs are used to control the appearance of various other
+     components of the frame.  They can be inserted in the modeline,
+     like the favicons used in Web browsers.  They are used to specify
+     the labels on toolbar buttons.  Finally, they can be inserted in
+     the gutters.  (The difference between a glyph inserted in a gutter
+     and a marginal annotation is that the marginal annotation is tied
+     to the text in the buffer.  If the buffer line scrolls out of
+     view, the marginal annotation will, as well.  A gutter glyph does
+     not move with the text.)
+
+     Unfortunately, all these uses are special cases, and have their own
+     APIs, in contrast to glyphs in a buffer.
+
+*External glyphs*
+     External glyphs simply allow a consistent API for images.  The
+     images are then passed to external software such as the window
+     system itself (mouse cursor shapes) and the window manager (icons
+     to represent minimized windows).  XEmacs has no role in managing
+     their use.
+
+*Subwindow and widget glyphs*
+     These do not constitute a context of use, but rather an important
+     class of glyph types.  The difference between these and other
+     glyphs is that while their geometry is determined by XEmacs, their
+     behavior is managed separately, by internal mechanisms in the case
+     of widgets, and (possibly) by another process in the case of
+     subwindows.
+
+   Some simple concrete examples showing how to insert a glyph in a
+buffer are presented later.  *Note Glyph Examples::.
+
+   "Creating Glyphs" explains how to create glyphs.  Creating a glyph
+using `make-glyph' does not specify _where_ the glyph will be used, it
+only specifies _what_ the glyph will look like.  The next four sections
+explain how to embed glyphs in different display contexts.  Finally,
+the last two sections explain the special considerations of using
+glyphs whose behavior is not determined by the code creating them, but
+by the glyph itself (a "widget" in X11 or "control" in MS Windows or
+Aqua), or even by a separate process.
 
 * Menu:
 
-* Image Specifiers::           Specifying how an image will appear.
-* Image Instantiator Conversion::
-                               Conversion is applied to image instantiators
-                                 at the time they are added to an
-                                 image specifier or at the time they
-                                 are passed to `make-image-instance'.
-* Image Instances::            What an image specifier gets instanced as.
+* Creating Glyphs::    Creating new glyphs.
+* Buffer Glyphs::      Annotations are glyphs that appear in a buffer.
+* Redisplay Glyphs::   Glyphs controlling various redisplay functions.
+* Frame Glyphs::       Displaying glyphs in GUI components of the frame.
+* External Glyphs::    Icons and mouse pointers for the window system.
+* Native GUI Widgets:: Complex active elements treated as a single glyph.
+* Subwindows::         Externally-controlled subwindows in buffers.
 
 \1f
-File: lispref.info,  Node: Image Specifiers,  Next: Image Instantiator Conversion,  Up: Images
+File: lispref.info,  Node: Creating Glyphs,  Next: Buffer Glyphs,  Up: Using Glyphs
 
-Image Specifiers
-----------------
-
-An image specifier is used to describe the actual image of a glyph.  It
-works like other specifiers (*note Specifiers::), in that it contains a
-number of specifications describing how the image should appear in a
-variety of circumstances.  These specifications are called "image
-instantiators".  When XEmacs wants to display the image, it instantiates
-the image into an "image instance".  Image instances are their own
-primitive object type (similar to font instances and color instances),
-describing how the image appears in a particular domain. (On the other
-hand, image instantiators, which are just descriptions of how the image
-should appear, are represented using strings or vectors.)
-
- - Function: image-specifier-p object
-     This function returns non-`nil' if OBJECT is an image specifier.
-     Usually, an image specifier results from calling `glyph-image' on
-     a glyph.
+50.3.1 Creating Glyphs
+----------------------
 
- - Function: make-image-specifier spec-list
-     This function creates a new image specifier object and initializes
-     it according to SPEC-LIST. *Note Specifiers::.
-
-     Note that, in practice, you rarely, if ever, need to actually
-     create an image specifier! (This function exists mainly for
-     completeness.) Pretty much the only use for image specifiers is to
-     control how glyphs are displayed, and the image specifier
-     associated with a glyph (the `image' property of a glyph) is
-     created automatically when a glyph is created and need not (and
-     cannot, for that matter) ever be changed (*note Glyphs::).  In
-     fact, the design decision to create a separate image specifier
-     type, rather than make glyphs themselves be specifiers, is
-     debatable--the other properties of glyphs are rarely used and could
-     conceivably have been incorporated into the glyph's instantiator.
-     The rarely used glyph types (buffer, pointer, icon) could also
-     have been incorporated into the instantiator.
+ -- Function: make-glyph &optional spec-list type
+     This function creates a new glyph object of type TYPE.
 
-   Image instantiators come in many formats: `xbm', `xpm', `gif',
-`jpeg', etc.  This describes the format of the data describing the
-image.  The resulting image instances also come in many
-types--`mono-pixmap', `color-pixmap', `text', `pointer', etc.  This
-refers to the behavior of the image and the sorts of places it can
-appear. (For example, a color-pixmap image has fixed colors specified
-for it, while a mono-pixmap image comes in two unspecified shades
-"foreground" and "background" that are determined from the face of the
-glyph or surrounding text; a text image appears as a string of text and
-has an unspecified foreground, background, and font; a pointer image
-behaves like a mono-pixmap image but can only be used as a mouse
-pointer [mono-pixmap images cannot be used as mouse pointers]; etc.) It
-is important to keep the distinction between image instantiator format
-and image instance type in mind.  Typically, a given image instantiator
-format can result in many different image instance types (for example,
-`xpm' can be instanced as `color-pixmap', `mono-pixmap', or `pointer';
-whereas `cursor-font' can be instanced only as `pointer'), and a
-particular image instance type can be generated by many different image
-instantiator formats (e.g.  `color-pixmap' can be generated by `xpm',
-`gif', `jpeg', etc.).
+     The optional SPEC-LIST is used to initialize the glyph's image.
+     It can be any spec-list of "image instantiator" accepted by
+     `canonicalize-spec-list', *Note Adding Specifications::.  An
+     individual image instantiator may be a string, which is converted
+     to a vector according to `console-type-image-conversion-list', or a
+     vector.  The vector's first element specifies the _external_ format
+     of the data, such as a string, a PNG file, or an MS Windows
+     resource.  This is followed by properties (keyword-value pairs)
+     specifying such information as the name of a file containing an
+     image, or pixmap data directly.  *Note Image Specifiers::.
+
+     The optional TYPE specifies the type of the glyph.  TYPE should be
+     one of `buffer' (used for glyphs in an extent, the modeline, the
+     toolbar, or elsewhere in a frame), `pointer' (used for the
+     mouse-pointer), or `icon' (used for a frame's icon), and defaults
+     to `buffer'.
+
+   SPEC-LIST is the initializer for the glyph's `image' property, which
+is an image specifier.  (Note that "image" as used in the context of a
+glyph's `image' property or in the terms "image specifier", "image
+instantiator", or "image instance" does not refer to what people
+normally think of as an image (which in XEmacs is called a "pixmap"),
+but to any graphical element--a pixmap, a widget, or even a block of
+text, when used in the places that call for a glyph.)
+
+   The most common form of SPEC-LIST is a single image instantiator.
+(*Compatibility note:* in GNU Emacs 21, a string used to instantiate an
+image is interpreted as the name of an image file, which is searched
+for and instantiated.)  The conversion controlled by
+`console-type-image-conversion-list' typically attempts to look up the
+string as a file name in XEmacs's data directory path, and if this
+fails, defaults to displaying the string as a text image instance
+(_i.e._. the string itself.
+
+   Fine control of a particular specification is provided by using a
+vector as the image instantiator.  More complicated instantiators allow
+lists of instantiators to be specified (which are tried in order), or
+mappings from locales to lists of instantiators, _etc_.  *Note
+Specifiers::, for more information about specification formats.
+
+   As well as using SPEC-LIST to initialize the glyph, you can set
+specifications using `set-glyph-image'.  The glyph itself is not
+actually a specifier, but rather is an object containing an image
+specifier (as well as other properties seldom set by user code).
+Therefore, you cannot set or access specifications for the glyph's image
+by directly using `set-specifier', `specifier-instance' or the like on
+the glyph; instead use them on `(glyph-image GLYPH)' or use the
+convenience functions `set-glyph-image', `glyph-image-instance', and
+`glyph-image'.
+
+   Glyph types reflect the fact that glyphs are used in contexts like
+pointers and window manager icons, which are defined by external
+programs such as the window system or window manager.  These require
+somewhat different _internal_ format, which is opaque to the user.
+
+   It is extremely rare that you will ever have to specify a value for
+TYPE, which should be one of `buffer' (used for glyphs in an extent,
+the modeline, the toolbar, or elsewhere in a buffer), `pointer' (used
+for the mouse-pointer), or `icon' (used for a frame's icon), and
+defaults to `buffer'.  The only cases where it needs to be specified is
+when creating icon or pointer glyphs, and in both cases the necessary
+glyphs have already been created at startup and are accessed through
+the appropriate variables, e.g. `text-pointer-glyph' (or in general, any
+`*-pointer-glyph') and `frame-icon-glyph'.  User code should never need
+to create `pointer' or `icon' glyphs.  *Note Glyph Types::.
+
+   There are a few other glyph creation functions, normally used only
+internally or at XEmacs initialization.
+
+ -- Function: make-glyph-internal &optional type
+     This function creates a new, uninitialized glyph of type TYPE.
 
-   *Note Image Instances::, for a more detailed discussion of image
-instance types.
+ -- Function: make-pointer-glyph &optional spec-list
+     Return a new `pointer-glyph' object with the specification list
+     SPEC-LIST.  This function is equivalent to calling `make-glyph'
+     with a TYPE of `pointer'.
 
-   An image instantiator should be a string or a vector of the form
+   `make-pointer-glyph' is normally used only by XEmacs initialization
+code.  It is extremely unlikely that you will ever need to create a
+pointer glyph.  Instead, you probably want to be calling
+`set-glyph-image' on an existing glyph, e.g. `text-pointer-glyph'.
 
-      `[FORMAT :KEYWORD VALUE ...]'
+ -- Function: make-icon-glyph &optional spec-list
+     Return a new `icon-glyph' object with the specification list
+     SPEC-LIST.  This function is equivalent to calling `make-glyph'
+     with a TYPE of `icon'.
 
-   i.e. a format symbol followed by zero or more alternating
-keyword-value pairs.  The "format" field should be a symbol, one of
+   `make-icon-glyph' is normally used only by XEmacs initialization
+code.  It is extremely unlikely that you will ever need to create a icon
+glyph.  Instead, you probably want to be calling `set-glyph-image' on
+the existing glyph, `frame-icon-glyph'.
 
-`nothing'
-     Don't display anything; no keywords are valid for this.  Can only
-     be instanced as `nothing'.
+\1f
+File: lispref.info,  Node: Buffer Glyphs,  Next: Redisplay Glyphs,  Prev: Creating Glyphs,  Up: Using Glyphs
 
-`string'
-     Display this image as a text string.  Can only be instanced as
-     `text', although support for instancing as `mono-pixmap' should be
-     added.
+50.3.2 Buffer Glyphs
+--------------------
 
-`formatted-string'
-     Display this image as a text string with replaceable fields,
-     similar to a modeline format string; not currently implemented.
+Creating a glyph using `make-glyph' does not specify _where_ the glyph
+will be used, it only specifies _what_ the glyph will look like.  Once
+you have created a glyph, you specify where it will be used by
+attaching it to an extent as a _begin-glyph_ or _end-glyph_.
+
+`buffer text'
+     To insert a glyph into a buffer, create an extent in the buffer
+     and then use `set-extent-begin-glyph' or `set-extent-end-glyph' to
+     set a glyph to be displayed at the corresponding edge of the
+     extent.  (It is common to create zero-width extents for this
+     purpose.)
+
+`margins'
+     To insert a glyph into the left or right margin of a buffer, first
+     make sure the margin is visible by setting a value for the
+     specifiers `left-margin-width' or `right-margin-width'.  (Not
+     strictly necessary when using margin glyphs with layout policy
+     `whitespace'.)  Follow the same procedure above for inserting a
+     glyph in a buffer, then set a non-default layout policy for the
+     glyph using `set-extent-begin-glyph-layout' or
+     `set-extent-end-glyph-layout'.  Alternatively, use the high-level
+     annotations API (see `make-annotation').  (In fact, you can also
+     use the annotations API for glyphs in a buffer, by setting a
+     layout policy of `text'.)
 
-`xbm'
-     An X bitmap; only if X support was compiled into this XEmacs.  Can
-     be instanced as `mono-pixmap', `color-pixmap', or `pointer'.
 
-`xpm'
-     An XPM pixmap; only if XPM support was compiled into this XEmacs.
-     Can be instanced as `color-pixmap', `mono-pixmap', or `pointer'.
-     XPM is an add-on library for X that was designed to rectify the
-     shortcomings of the XBM format.  Most implementations of X include
-     the XPM library as a standard part.  If your vendor does not, it
-     is highly recommended that you download it and install it.  You
-     can get it from the standard XEmacs FTP site, among other places.
+\1f
+File: lispref.info,  Node: Redisplay Glyphs,  Next: Frame Glyphs,  Prev: Buffer Glyphs,  Up: Using Glyphs
 
-`xface'
-     An X-Face bitmap, used to encode people's faces in e-mail messages;
-     only if X-Face support was compiled into this XEmacs.  Can be
-     instanced as `mono-pixmap', `color-pixmap', or `pointer'.
+50.3.3 Redisplay Glyphs
+-----------------------
 
-`gif'
-     A GIF87 or GIF89 image; only if GIF support was compiled into this
-     XEmacs.  Can be instanced as `color-pixmap'.  Note that XEmacs
-     includes GIF decoding functions as a standard part of it, so if
-     you have X support, you will normally have GIF support, unless you
-     explicitly disable it at configure time.
+To use a glyph to control the shape of miscellaneous redisplay effects
+such as the truncation and continuation markers, set the appropriate
+existing glyph variables with `set-glyph-image'.  See
+`continuation-glyph', `control-arrow-glyph', `hscroll-glyph',
+`invisible-text-glyph', `octal-escape-glyph', and `truncation-glyph'.
+See also `overlay-arrow-string', an odd redisplay leftover which can be
+set to a glyph you created, and will cause the glyph to be displayed on
+top of the text position specified in the marker stored in
+`overlay-arrow-position'.
+
+   To use a glyph in a display table (i.e. to control the appearance of
+any individual character), create the appropriate character glyphs and
+then set a specification for the specifier `current-display-table',
+which controls the appearance of characters.  You can also set an
+overriding display table for use with text displayed in a particular
+face; see `set-face-display-table' and `make-display-table'.  ####
+Note: Display tables do not currently support general Mule characters.
+They will be overhauled at some point to support this and to provide
+other features required under Mule.  *Note Display Tables::.
+
+   Glyphs are not actually used as the background pixmaps of faces, but
+the API is similar.  The background pixmap of a face is actually an
+image specifier - probably the only place in XEmacs where an image
+specifier occurs outside of a glyph.  If you would like to use a
+glyph's image as a background pixmap, you can extract it with
+`glyph-image', and then add it to a face.  *Note Face Convenience
+Functions::.
+
+ -- Glyph: truncation-glyph
+     This variable specifies what is displayed at the end of truncated
+     lines.
 
-`jpeg'
-     A JPEG-format image; only if JPEG support was compiled into this
-     XEmacs.  Can be instanced as `color-pixmap'.  If you have the JPEG
-     libraries present on your system when XEmacs is built, XEmacs will
-     automatically detect this and use them, unless you explicitly
-     disable it at configure time.
+ -- Glyph: continuation-glyph
+     This variable specifies what is displayed at the end of wrapped
+     lines.
 
-`png'
-     A PNG/GIF24 image; only if PNG support was compiled into this
-     XEmacs.  Can be instanced as `color-pixmap'.
+ -- Glyph: octal-escape-glyph
+     This variable specifies what to prefix character codes displayed
+     in octal with.
 
-`tiff'
-     A TIFF-format image; only if TIFF support was compiled into this
-     XEmacs.
+ -- Glyph: hscroll-glyph
+     This variable specifies what to display at the beginning of
+     horizontally scrolled lines.
 
-`cursor-font'
-     One of the standard cursor-font names, such as `watch' or
-     `right_ptr' under X.  Under X, this is, more specifically, any of
-     the standard cursor names from appendix B of the Xlib manual [also
-     known as the file `<X11/cursorfont.h>'] minus the `XC_' prefix.  On
-     other window systems, the valid names will be specific to the type
-     of window system.  Can only be instanced as `pointer'.
+ -- Glyph: invisible-text-glyph
+     This variable specifies what to use to indicate the presence of
+     invisible text.  This is the glyph that is displayed when an
+     ellipsis is called for, according to `selective-display-ellipses'
+     or `buffer-invisibility-spec').  Normally this is three dots
+     ("...").
 
-`font'
-     A glyph from a font; i.e. the name of a font, and glyph index into
-     it of the form `FONT fontname index [[mask-font] mask-index]'.
-     Only if X support was compiled into this XEmacs.  Currently can
-     only be instanced as `pointer', although this should probably be
-     fixed.
+ -- Glyph: control-arrow-glyph
+     This variable specifies what to use as an arrow for control
+     characters.
 
-`mswindows-resource'
-     An MS Windows pointer resource.  Specifies a resource to retrieve
-     directly from the system (an OEM resource) or from a file,
-     particularly an executable file.  If the resource is to be
-     retrieved from a file, use :file and optionally :resource-id.
-     Otherwise use :resource-id.  Always specify :resource-type to
-     specify the type (cursor, bitmap or icon) of the resource.
-     Possible values for :resource-id are listed below.  Can be
-     instanced as `pointer' or `color-pixmap'.
+\1f
+File: lispref.info,  Node: Frame Glyphs,  Next: External Glyphs,  Prev: Redisplay Glyphs,  Up: Using Glyphs
+
+50.3.4 Frame Glyphs
+-------------------
+
+There are also a number of special objects whose appearance is specified
+by a glyph.  Most of these a global objects that you update with
+`set-glyph-image', such as mouse pointers.  Frame icons, toolbar button
+icons, and the modeline are the main non-text objects which accept
+glyphs as elements.
+
+`modeline'
+     A glyph may be displayed in the modeline by inserting the glyph as
+     one of the elements of the modeline format.  (Unfortunately you
+     can't currently put a begin glyph or end glyph on one of the
+     modeline extents--they're ignored.)
+
+`toolbar'
+     To insert a glyph into a toolbar, specify it as the icon part of a
+     toolbar button, which in turn must be part of a toolbar
+     instantiator (typically set on the specifier `default-toolbar').
+     See `default-toolbar' for more information. (As a convenience, you
+     may use a symbol in place of the glyph list in the toolbar button
+     instantiator; the symbol is evalled to get the glyph list.  This
+     facilitates both creating the toolbar instantiator and modifying
+     individual glyphs in a toolbar later on.  For example, you can
+     change the way that the Mail toolbar button looks by modifying the
+     value of the variable `toolbar-mail-icon' (in general,
+     `toolbar-*-icon') and then calling `(set-specifier-dirty-flag
+     default-toolbar)'.  (#### Unfortunately this doesn't quite work
+     the way it should; the change will appear in new frames, but not
+     existing ones, because once an image has been displayed the pixmap
+     replaces the symbol for those domains.)
+
+`gutter'
+     To insert a glyph into a gutter, use `set-extent-begin-glyph' or
+     `set-extent-end-glyph' to set a glyph to be displayed at the
+     corresponding edge of extent in a string, similar to the way you
+     insert glyphs in a buffer.  Then insert the string into the gutter
+     *Note Specifying a Gutter::.  Glyphs that are frequently used in
+     this way are `tab control' and `progress bar' glyphs.
 
-`subwindow'
-     An embedded windowing system window.  Can only be instanced as
-     `subwindow'.
 
-`button'
-     A button widget; either a push button, radio button or toggle
-     button.  Can only be instanced as `widget'.
+\1f
+File: lispref.info,  Node: External Glyphs,  Next: Native GUI Widgets,  Prev: Frame Glyphs,  Up: Using Glyphs
 
-`combo-box'
-     A drop list of selectable items in a widget, for editing text.
-     Can only be instanced as `widget'.
+50.3.5 External Glyphs
+----------------------
 
-`edit-field'
-     A text editing widget.  Can only be instanced as `widget'.
+There are two special kinds of glyph that are not displayed by XEmacs.
+Instead, they are used to set the appearance of iconified frames and the
+mouse pointer.  Because these uses are constrained by the window system,
+icons and pointers have their own special types *Note Glyph Types::.
+
+   You may use a glyph as the icon for a frame.  Do not create a new
+glyph; instead, change the specifications for the existing glyph
+`frame-icon-glyph' with `set-glyph-image'.  This is a unique,
+predefined object.  Although the natural usage is to set specifications
+for the global locale or a frame locale, you can also arrange for a
+special icon when a frame's selected window displays a particular buffer
+by using a buffer locale.
+
+   The shape of the mouse pointer when over a particular section of a
+frame is controlled using various glyph variables.  Since the image of
+a glyph is a specifier, it can be controlled on a per-buffer,
+per-frame, per-window, or per-device basis.
+
+   To use a glyph as the mouse pointer, in general you do not create a
+new glyph, but rather you change the specifications of various existing
+glyphs, such as `text-pointer-glyph' for the pointer used over text,
+`modeline-pointer-glyph' for the pointer used over the modeline, etc.
+Do an apropos over `pointer-glyph' to find all of them.  (Note also
+that you can temporarily set the mouse pointer to some specific shape
+by using `set-frame-pointer', which takes an image instance, as
+obtained from calling `glyph-image-instance' on a glyph of type
+`pointer' - either one of the above-mentioned variables or one you
+created yourself.  (See below for what it means to create a glyph of
+type `pointer'.)  This pointer will last only until the next mouse
+motion event is processed or certain other things happen, such as
+creating or deleting a window. (In fact, the above-mentioned pointer
+glyph variables are implemented as part of the default handler for
+mouse motion events.  If you want to customize this behavior, take a
+look at `mode-motion-hook', or `mouse-motion-handler' if you really
+want to get low-level.)
 
-`label'
-     A static, text-only, widget; for displaying text.  Can only be
-     instanced as `widget'.
+   You should use `set-glyph-image' to set the following variables,
+_not_ `setq'.
 
-`layout'
-     A widget for controlling the positioning of children underneath it.
-     Through the use of nested layouts, a widget hierarchy can be
-     created which can have the appearance of any standard dialog box
-     or similar arrangement; all of this is counted as one "glyph" and
-     could appear in many of the places that expect a single glyph.
-     Can only be instanced as `widget'.
+ -- Glyph: text-pointer-glyph
+     This variable specifies the shape of the mouse pointer when over
+     text.
 
-`native-layout'
-     The native version of a layout widget.  Can only be instanced as
-     `widget'.
+ -- Glyph: nontext-pointer-glyph
+     This variable specifies the shape of the mouse pointer when over a
+     buffer, but not over text.  If unspecified in a particular domain,
+     `text-pointer-glyph' is used.
 
-`progress-gauge'
-     A sliding widget, for showing progress.  Can only be instanced as
-     `widget'.
+ -- Glyph: modeline-pointer-glyph
+     This variable specifies the shape of the mouse pointer when over
+     the modeline.  If unspecified in a particular domain,
+     `nontext-pointer-glyph' is used.
 
-`tab-control'
-     A tab widget; a series of user selectable tabs.  Can only be
-     instanced as `widget'.
+ -- Glyph: selection-pointer-glyph
+     This variable specifies the shape of the mouse pointer when over a
+     selectable text region.  If unspecified in a particular domain,
+     `text-pointer-glyph' is used.
 
-`tree-view'
-     A folding widget.  Can only be instanced as `widget'.
+ -- Glyph: gc-pointer-glyph
+     This variable specifies the shape of the mouse pointer when a
+     garbage collection is in progress.  If the selected window is on a
+     window system and this glyph specifies a value (i.e. a pointer
+     image instance) in the domain of the selected window, the pointer
+     will be changed as specified during garbage collection.
+     Otherwise, a message will be printed in the echo area, as
+     controlled by `gc-message'.
 
-`scrollbar'
-     A scrollbar widget.  Can only be instanced as `widget'.
+ -- Glyph: busy-pointer-glyph
+     This variable specifies the shape of the mouse pointer when XEmacs
+     is busy.  If unspecified in a particular domain, the pointer is
+     not changed when XEmacs is busy.
 
-`autodetect'
-     XEmacs tries to guess what format the data is in.  If X support
-     exists, the data string will be checked to see if it names a
-     filename.  If so, and this filename contains XBM or XPM data, the
-     appropriate sort of pixmap or pointer will be created. [This
-     includes picking up any specified hotspot or associated mask
-     file.] Otherwise, if `pointer' is one of the allowable
-     image-instance types and the string names a valid cursor-font
-     name, the image will be created as a pointer.  Otherwise, the
-     image will be displayed as text.  If no X support exists, the
-     image will always be displayed as text.
+ -- Glyph: menubar-pointer-glyph
+     This variable specifies the shape of the mouse pointer when over
+     the menubar.  If unspecified in a particular domain, the
+     window-system-provided default pointer is used.
 
-`inherit'
-     Inherit from the background-pixmap property of a face.  Can only be
-     instanced as `mono-pixmap'.
+ -- Glyph: scrollbar-pointer-glyph
+     This variable specifies the shape of the mouse pointer when over a
+     scrollbar.  If unspecified in a particular domain, the
+     window-system-provided default pointer is used.
 
-   The valid keywords are:
+ -- Glyph: toolbar-pointer-glyph
+     This variable specifies the shape of the mouse pointer when over a
+     toolbar.  If unspecified in a particular domain,
+     `nontext-pointer-glyph' is used.
 
-`:data'
-     Inline data.  For most formats above, this should be a string.  For
-     XBM images, this should be a list of three elements: width,
-     height, and a string of bit data.  This keyword is not valid for
-     instantiator format `nothing'.
+   Internally, these variables are implemented in
+`default-mouse-motion-handler', and thus only take effect when the
+mouse moves.  That function calls `set-frame-pointer', which sets the
+current mouse pointer for a frame.
 
-`:file'
-     Data is contained in a file.  The value is the name of this file.
-     If both `:data' and `:file' are specified, the image is created
-     from what is specified in `:data' and the string in `:file'
-     becomes the value of the `image-instance-file-name' function when
-     applied to the resulting image-instance.  This keyword is not
-     valid for instantiator formats `nothing', `string',
-     `formatted-string', `cursor-font', `font', and `autodetect'.
+ -- Function: set-frame-pointer frame image-instance
+     This function sets the mouse pointer of FRAME to the given pointer
+     image instance.  You should not call this function directly.  (If
+     you do, the pointer will change again the next time the mouse
+     moves.)
 
-`:foreground'
-`:background'
-     For `xbm', `xface', `cursor-font', and `font'.  These keywords
-     allow you to explicitly specify foreground and background colors.
-     The argument should be anything acceptable to
-     `make-color-instance'.  This will cause what would be a
-     `mono-pixmap' to instead be colorized as a two-color color-pixmap,
-     and specifies the foreground and/or background colors for a pointer
-     instead of black and white.
+\1f
+File: lispref.info,  Node: Native GUI Widgets,  Next: Subwindows,  Prev: External Glyphs,  Up: Using Glyphs
 
-`:mask-data'
-     For `xbm' and `xface'.  This specifies a mask to be used with the
-     bitmap.  The format is a list of width, height, and bits, like for
-     `:data'.
+50.3.6 Native GUI Widgets
+-------------------------
 
-`:mask-file'
-     For `xbm' and `xface'.  This specifies a file containing the mask
-     data.  If neither a mask file nor inline mask data is given for an
-     XBM image, and the XBM image comes from a file, XEmacs will look
-     for a mask file with the same name as the image file but with
-     `Mask' or `msk' appended.  For example, if you specify the XBM file
-     `left_ptr' [usually located in `/usr/include/X11/bitmaps'], the
-     associated mask file `left_ptrmsk' will automatically be picked up.
+A "native widget" is a primitive GUI object defined either by the host
+GUI platform or an external toolkit, and accessed from Lisp as a
+"glyph."
 
-`:hotspot-x'
-`:hotspot-y'
-     For `xbm' and `xface'.  These keywords specify a hotspot if the
-     image is instantiated as a `pointer'.  Note that if the XBM image
-     file specifies a hotspot, it will automatically be picked up if no
-     explicit hotspot is given.
+* Menu:
 
-`:color-symbols'
-     Only for `xpm'.  This specifies an alist that maps strings that
-     specify symbolic color names to the actual color to be used for
-     that symbolic color (in the form of a string or a color-specifier
-     object).  If this is not specified, the contents of
-     `xpm-color-symbols' are used to generate the alist.
+* Introduction to Widgets::     Native widgets provide tight integration of
+                                GUI features with the platform GUI.
+* Lisp API to Native Widgets::  Native widgets are glyphs.
+* Layouts::                     Specifying composite widgets from Lisp.
+* Primitive Widgets::           Catalogue of available native widgets.
 
-`:resource-id'
-     Only for `mswindows-resource'.  This must be either an integer
-     (which directly specifies a resource number) or a string.  Valid
-     strings are
+\1f
+File: lispref.info,  Node: Introduction to Widgets,  Next: Lisp API to Native Widgets,  Up: Native GUI Widgets
 
-     For bitmaps:
+50.3.6.1 Introduction to Native Widgets and Subwindow Glyphs
+............................................................
 
-     "close", "uparrow", "dnarrow", "rgarrow", "lfarrow", "reduce",
-     "zoom", "restore", "reduced", "zoomd", "restored", "uparrowd",
-     "dnarrowd", "rgarrowd", "lfarrowd", "mnarrow", "combo",
-     "uparrowi", "dnarrowi", "rgarrowi", "lfarrowi", "size", "btsize",
-     "check", "checkboxes", and "btncorners".
+Traditionally Emacsen have hidden the GUI apparatus from the Lisp
+programmer, but in XEmacs 21.4 the ability to embed autonomous GUI
+objects, called "native widgets", in text was added to Lisp.  They are
+handled as _glyphs_.  Unlike traditional XEmacs glyphs such images and
+strings, native widgets are opaque to XEmacs, and must be able to
+redraw themselves because they are implemented as subwindows, not as
+graphics drawn by XEmacs into the text window.
 
-     For cursors:
+   Primitive widgets are coded in C using the underlying GUI toolkit,
+and thus are beyond the scope of the _XEmacs Lisp Reference Manual_.
+However, composite widgets can be created in Lisp using "layouts,"
+which are horizontal or vertical arrays of subwidgets.  For example, the
+search dialog is formatted using layouts.
 
-     "normal", "ibeam", "wait", "cross", "up", "sizenwse", "sizenesw",
-     "sizewe", "sizens", "sizeall", and "no".
+\1f
+File: lispref.info,  Node: Lisp API to Native Widgets,  Next: Layouts,  Prev: Introduction to Widgets,  Up: Native GUI Widgets
+
+50.3.6.2 Lisp API to Native Widgets
+...................................
+
+Native widgets are manipulated as _glyphs_ (*note Glyphs::).  Thus they
+are created using `make-glyph', with a format of one of the widget
+types and a `:data' property specific to the widget being instanced.
+
+   However, there is a technical difference between widgets and other
+kinds of glyphs that is theoretically important.  Because widgets are
+active (that is, they can respond to user input events themselves), it
+is possible for the user to become aware that two appearances of the
+"same" glyph are actually separate instances.  For example, if a user
+changes an image glyph from red to blue, and the buffer containing the
+glyph appears in more than one window, the user will perceive all the
+appearances to change from red to blue simultaneously.  However, suppose
+the glyph is a button glyph (_e.g._, as used in the Customize buffer
+for the Set, Save, and Done buttons).  Then if the Customize buffer
+appears in several windows at the same time, and the user clicks on the
+button, she will only perceive the button to be depressed in the window
+where she clicked the button.
+
+   It seems from this example that it is unlikely to be a problem in
+practice.  When the user is faced with an active widget, it seems likely
+that attention will focus on the widget being manipulated, and having
+other instances of the widget respond simultaneously might be more
+disconcerting than the actual case.
 
-     For icons:
+\1f
+File: lispref.info,  Node: Layouts,  Next: Primitive Widgets,  Prev: Lisp API to Native Widgets,  Up: Native GUI Widgets
+
+50.3.6.3 Layouts
+................
+
+An XEmacs "layout" is a one-dimensional array of glyphs.  It is a
+widget for controlling the positioning of children underneath it.
+Through the use of nested layouts, a widget hierarchy can be created
+which can have the appearance of any standard dialog box or similar
+arrangement; all of this is counted as one "glyph" and could appear in
+many of the places that expect a single glyph.  (There are also "native
+layouts", but these are undocumented, as are their uses.)
+
+   A layout descriptor is an image instantiator, _i.e._, a vector of
+the form `[FORMAT KEY-1 VALUE-1 KEY-2 VALUE-2 ...]' with format
+`layout', and properties
+
+`:orientation'
+     Specifies the orientation of the contained array of glyphs.  The
+     value must be one of the symbols `horizontal' or `vertical'.
+
+`:horizontally-justify'
+     Specifies the horizontal justification of the items in the array.
+     The value must be one of the symbols `:right', `:center', or
+     `:left'.
+
+`:vertically-justify'
+     Specifies the vertical justification of the items in the array.
+     The value must be one of the symbols `:top', `:center', or
+     `:bottom'.
+
+`:justify'
+     Specifies justification.  #### not understood.
+
+`:border'
+     A glyph to place in the border.  The value must be an image
+     instantiator.
+
+`:items'
+     The glyphs controlled by the layout.  The value must be a list of
+     image instantiators.
+
+   Here is the specification of the search dialog widget created by
+`make-search-dialog' in the `dialog-items' library, which makes use of
+recursive layouts.
+
+     (make-glyph
+      `[layout
+        :orientation horizontal
+        :vertically-justify top
+        :horizontally-justify center
+        :border [string :data "Search"]
+        :items
+        ([layout :orientation vertical
+                 :justify top  ; implies left also
+                 :items
+                 ([string :data "Search for:"]
+               [button :descriptor "Match Case"
+                       :style toggle
+                       :selected (not case-fold-search)
+                       :callback (setq case-fold-search
+                                       (not case-fold-search))]
+               [button :descriptor "Regular Expression"
+                       :style toggle
+                       :selected search-dialog-regexp
+                       :callback (setq search-dialog-regexp
+                                       (not search-dialog-regexp))]
+               [button :descriptor "Forwards"
+                       :style radio
+                       :selected search-dialog-direction
+                       :callback (setq search-dialog-direction t)]
+               [button :descriptor "Backwards"
+                       :style radio
+                       :selected (not search-dialog-direction)
+                       :callback (setq search-dialog-direction nil)]
+               )]
+         [layout :orientation vertical
+                 :vertically-justify top
+                 :horizontally-justify right
+                 :items
+                 ([edit-field :width 15 :descriptor "" :active t
+                           :initial-focus t]
+               [button :width 10 :descriptor "Find Next"
+                       :callback-ex
+                       (lambda (image-instance event)
+                         (search-dialog-callback ,parent
+                                                 image-instance
+                                                 event))]
+               [button :width 10 :descriptor "Cancel"
+                       :callback-ex
+                       (lambda (image-instance event)
+                         (isearch-dehighlight)
+                         (delete-frame
+                          (event-channel event)))])])])
 
-     "sample", "hand", "ques", "bang", "note", and "winlogo".
+\1f
+File: lispref.info,  Node: Primitive Widgets,  Prev: Layouts,  Up: Native GUI Widgets
 
-`:resource-type'
-     Only for `mswindows-resource'.  This must be a symbol, either
-     `cursor', `icon', or `bitmap', specifying the type of resource to
-     be retrieved.
+50.3.6.4 Primitive Widgets
+..........................
 
-`:face'
-     Only for `inherit'.  This specifies the face to inherit from.  For
-     widgets this also specifies the face to use for display. It
-     defaults to gui-element-face.
+`button'
+     A button widget; either a push button, radio button or toggle
+     button.
 
-   Keywords accepted as menu item specs are also accepted by widgets.
-These are `:selected', `:active', `:suffix', `:keys', `:style',
-`:filter', `:config', `:included', `:key-sequence', `:accelerator',
-`:label' and `:callback'.
+`combo-box'
+     A drop list of selectable items in a widget, for editing text.
 
-   If instead of a vector, the instantiator is a string, it will be
-converted into a vector by looking it up according to the specs in the
-`console-type-image-conversion-list' for the console type of the domain
-(usually a window; sometimes a frame or device) over which the image is
-being instantiated.
+`edit-field'
+     A text editing widget.
 
-   If the instantiator specifies data from a file, the data will be
-read in at the time that the instantiator is added to the image
-specifier (which may be well before the image is actually displayed),
-and the instantiator will be converted into one of the inline-data
-forms, with the filename retained using a `:file' keyword.  This
-implies that the file must exist when the instantiator is added to the
-image, but does not need to exist at any other time (e.g. it may safely
-be a temporary file).
+`label'
+     A static, text-only, widget; for displaying text.
 
- - Function: valid-image-instantiator-format-p format &optional locale
-     This function returns non-`nil' if FORMAT is a valid image
-     instantiator format.
+`progress-gauge'
+     A sliding widget, for showing progress.
 
-     If LOCALE is non-`nil' then the format is checked in that locale.
-     If LOCALE is `nil' the current console is used.
+`tab-control'
+     A tab widget; a series of user selectable tabs.
 
-     Note that the return value for many formats listed above depends on
-     whether XEmacs was compiled with support for that format.
+`tree-view'
+     A folding widget.
 
- - Function: image-instantiator-format-list
-     This function return a list of valid image-instantiator formats.
+`scrollbar'
+     A scrollbar widget.  (#### Probably not the same as the scrollbar
+     controlling an Emacs window.)
 
- - Variable: xpm-color-symbols
-     This variable holds definitions of logical color-names used when
-     reading XPM files.  Elements of this list should be of the form
-     `(COLOR-NAME FORM-TO-EVALUATE)'.  The COLOR-NAME should be a
-     string, which is the name of the color to define; the
-     FORM-TO-EVALUATE should evaluate to a color specifier object, or a
-     string to be passed to `make-color-instance' (*note Colors::).  If
-     a loaded XPM file references a symbolic color called COLOR-NAME,
-     it will display as the computed color instead.
+\1f
+File: lispref.info,  Node: Subwindows,  Prev: Native GUI Widgets,  Up: Using Glyphs
 
-     The default value of this variable defines the logical color names
-     `"foreground"' and `"background"' to be the colors of the
-     `default' face.
+50.3.7 Subwindows
+-----------------
 
- - Variable: x-bitmap-file-path
-     A list of the directories in which X bitmap files may be found.
-     If `nil', this is initialized from the `"*bitmapFilePath"'
-     resource.  This is used by the `make-image-instance' function
-     (however, note that if the environment variable `XBMLANGPATH' is
-     set, it is consulted first).
+Subwindows are not currently implemented.
+
+ -- Function: subwindowp object
+     This function returns non-`nil' if OBJECT is a subwindow.
 
 \1f
-File: lispref.info,  Node: Image Instantiator Conversion,  Next: Image Instances,  Prev: Image Specifiers,  Up: Images
+File: lispref.info,  Node: Manipulating Glyphs,  Next: Glyph Examples,  Prev: Using Glyphs,  Up: Glyphs
 
-Image Instantiator Conversion
------------------------------
+50.4 Manipulating Glyphs
+========================
 
- - Function: set-console-type-image-conversion-list console-type list
-     This function sets the image-conversion-list for consoles of the
-     given CONSOLE-TYPE.  The image-conversion-list specifies how image
-     instantiators that are strings should be interpreted.  Each
-     element of the list should be a list of two elements (a regular
-     expression string and a vector) or a list of three elements (the
-     preceding two plus an integer index into the vector).  The string
-     is converted to the vector associated with the first matching
-     regular expression.  If a vector index is specified, the string
-     itself is substituted into that position in the vector.
+Each glyphs has properties that may be accessed.  Most of these can
+also be set after the glyph is initialized, with the exception of the
+glyph's type.  This is not a real restriction, as it is almost never
+useful to create glyphs of types other than `buffer'.
 
-     Note: The conversion above is applied when the image instantiator
-     is added to an image specifier, not when the specifier is actually
-     instantiated.  Therefore, changing the image-conversion-list only
-     affects newly-added instantiators.  Existing instantiators in
-     glyphs and image specifiers will not be affected.
+* Menu:
 
- - Function: console-type-image-conversion-list console-type
-     This function returns the image-conversion-list for consoles of
-     the given CONSOLE-TYPE.
+* Glyph Properties::   Accessing and modifying a glyph's properties.
+* Glyph Convenience Functions::  Accessing particular properties of a glyph.
+* Glyph Dimensions::   Determining the height, width, etc. of a glyph.
+* Glyph Types::                Each glyph has a particular type.
 
 \1f
-File: lispref.info,  Node: Image Instances,  Prev: Image Instantiator Conversion,  Up: Images
+File: lispref.info,  Node: Glyph Properties,  Next: Glyph Convenience Functions,  Up: Manipulating Glyphs
 
-Image Instances
----------------
+50.4.1 Glyph Properties
+-----------------------
 
-Image-instance objects encapsulate the way a particular image (pixmap,
-etc.) is displayed on a particular device.
+Each glyph has a list of properties, which control all of the aspects of
+the glyph's appearance.  The following symbols have predefined meanings:
 
-   In most circumstances, you do not need to directly create image
-instances; use a glyph instead.  However, it may occasionally be useful
-to explicitly create image instances, if you want more control over the
-instantiation process.
+`image'
+     The image used to display the glyph.
 
- - Function: image-instance-p object
-     This function returns non-`nil' if OBJECT is an image instance.
+`baseline'
+     Percent above baseline that glyph is to be displayed.  Only for
+     glyphs displayed inside of a buffer.
 
-* Menu:
+`contrib-p'
+     Whether the glyph contributes to the height of the line it's on.
+     Only for glyphs displayed inside of a buffer.
 
-* Image Instance Types::         Each image instances has a particular type.
-* Image Instance Functions::    Functions for working with image instances.
+`face'
+     Face of this glyph (_not_ a specifier).
 
-\1f
-File: lispref.info,  Node: Image Instance Types,  Next: Image Instance Functions,  Up: Image Instances
+ -- Function: set-glyph-property glyph property value &optional locale
+          tag-set how-to-add
+     This function changes a property of a GLYPH.
 
-Image Instance Types
-....................
+     For built-in properties, the actual value of the property is a
+     specifier and you cannot change this; but you can change the
+     specifications within the specifier, and that is what this
+     function will do.  The glyph face is an exception; it is a face
+     name (a symbol) or a face object, not a specifier.  (The face
+     properties themselves are typically specifiers.)  For user-defined
+     properties, you can use this function to either change the actual
+     value of the property or, if this value is a specifier, change the
+     specifications within it.
 
-Image instances come in a number of different types.  The type of an
-image instance specifies the nature of the image: Whether it is a text
-string, a mono pixmap, a color pixmap, etc.
+     If PROPERTY is a built-in property, the specifications to be added
+     to this property can be supplied in many different ways:
 
-   The valid image instance types are
+        * If VALUE is a simple instantiator (e.g. a string naming a
+          pixmap filename) or a list of instantiators, then the
+          instantiator(s) will be added as a specification of the
+          property for the given LOCALE (which defaults to `global' if
+          omitted).
 
-`nothing'
-     Nothing is displayed.
+        * If VALUE is a list of specifications (each of which is a cons
+          of a locale and a list of instantiators), then LOCALE must be
+          `nil' (it does not make sense to explicitly specify a locale
+          in this case), and specifications will be added as given.
 
-`text'
-     Displayed as text.  The foreground and background colors and the
-     font of the text are specified independent of the pixmap.
-     Typically these attributes will come from the face of the
-     surrounding text, unless a face is specified for the glyph in
-     which the image appears.
+        * If VALUE is a specifier (as would be returned by
+          `glyph-property' if no LOCALE argument is given), then some
+          or all of the specifications in the specifier will be added
+          to the property.  In this case, the function is really
+          equivalent to `copy-specifier' and LOCALE has the same
+          semantics (if it is a particular locale, the specification
+          for the locale will be copied; if a locale type,
+          specifications for all locales of that type will be copied;
+          if `nil' or `all', then all specifications will be copied).
 
-`mono-pixmap'
-     Displayed as a mono pixmap (a pixmap with only two colors where the
-     foreground and background can be specified independent of the
-     pixmap; typically the pixmap assumes the foreground and background
-     colors of the text around it, unless a face is specified for the
-     glyph in which the image appears).
+     HOW-TO-ADD should be either `nil' or one of the symbols `prepend',
+     `append', `remove-tag-set-prepend', `remove-tag-set-append',
+     `remove-locale', `remove-locale-type', or `remove-all'.  See
+     `copy-specifier' and `add-spec-to-specifier' for a description of
+     what each of these means.  Most of the time, you do not need to
+     worry about this argument; the default behavior usually is fine.
 
-`color-pixmap'
-     Displayed as a color pixmap.
+     In general, it is OK to pass an instance object (e.g. as returned
+     by `glyph-property-instance') as an instantiator in place of an
+     actual instantiator.  In such a case, the instantiator used to
+     create that instance object will be used (for example, if you set
+     a font-instance object as the value of the `font' property, then
+     the font name used to create that object will be used instead).
+     In some cases, however, doing this conversion does not make sense,
+     and this will be noted in the documentation for particular types
+     of instance objects.
 
-`pointer'
-     Used as the mouse pointer for a window.
+     If PROPERTY is not a built-in property, then this function will
+     simply set its value if LOCALE is `nil'.  However, if LOCALE is
+     given, then this function will attempt to add VALUE as the
+     instantiator for the given LOCALE, using `add-spec-to-specifier'.
+     If the value of the property is not a specifier, it will
+     automatically be converted into a `generic' specifier.
 
-`subwindow'
-     A child window that is treated as an image.  This allows (e.g.)
-     another program to be responsible for drawing into the window.
-     Not currently implemented.
+ -- Function: glyph-property glyph property &optional locale
+     This function returns GLYPH's value of the given PROPERTY.
 
- - Function: valid-image-instance-type-p type
-     This function returns non-`nil' if TYPE is a valid image instance
-     type.
+     If LOCALE is omitted, the GLYPH's actual value for PROPERTY will
+     be returned.  For built-in properties, this will be a specifier
+     object of a type appropriate to the property (e.g. a font or color
+     specifier).  For other properties, this could be anything.
 
- - Function: image-instance-type-list
-     This function returns a list of the valid image instance types.
+     If LOCALE is supplied, then instead of returning the actual value,
+     the specification(s) for the given locale or locale type will be
+     returned.  This will only work if the actual value of PROPERTY is
+     a specifier (this will always be the case for built-in properties,
+     but may or may not apply to user-defined properties).  If the
+     actual value of PROPERTY is not a specifier, this value will
+     simply be returned regardless of LOCALE.
+
+     The return value will be a list of instantiators (e.g. vectors
+     specifying pixmap data), or a list of specifications, each of
+     which is a cons of a locale and a list of instantiators.
+     Specifically, if LOCALE is a particular locale (a buffer, window,
+     frame, device, or `global'), a list of instantiators for that
+     locale will be returned.  Otherwise, if LOCALE is a locale type
+     (one of the symbols `buffer', `window', `frame', or `device'), the
+     specifications for all locales of that type will be returned.
+     Finally, if LOCALE is `all', the specifications for all locales of
+     all types will be returned.
+
+     The specifications in a specifier determine what the value of
+     PROPERTY will be in a particular "domain" or set of circumstances,
+     which is typically a particular Emacs window along with the buffer
+     it contains and the frame and device it lies within.  The value is
+     derived from the instantiator associated with the most specific
+     locale (in the order buffer, window, frame, device, and `global')
+     that matches the domain in question.  In other words, given a
+     domain (i.e. an Emacs window, usually), the specifier for PROPERTY
+     will first be searched for a specification whose locale is the
+     buffer contained within that window; then for a specification
+     whose locale is the window itself; then for a specification whose
+     locale is the frame that the window is contained within; etc.  The
+     first instantiator that is valid for the domain (usually this
+     means that the instantiator is recognized by the device [i.e. the
+     X server or TTY device] that the domain is on).  The function
+     `glyph-property-instance' actually does all this, and is used to
+     determine how to display the glyph.
 
- - Function: image-instance-type image-instance
-     This function returns the type of the given image instance.  The
-     return value will be one of `nothing', `text', `mono-pixmap',
-     `color-pixmap', `pointer', or `subwindow'.
+ -- Function: glyph-property-instance glyph property &optional domain
+          default no-fallback
+     This function returns the instance of GLYPH's PROPERTY in the
+     specified DOMAIN.
 
- - Function: text-image-instance-p object
-     This function returns non-`nil' if OBJECT is an image instance of
-     type `text'.
+     Under most circumstances, DOMAIN will be a particular window, and
+     the returned instance describes how the specified property
+     actually is displayed for that window and the particular buffer in
+     it.  Note that this may not be the same as how the property
+     appears when the buffer is displayed in a different window or
+     frame, or how the property appears in the same window if you
+     switch to another buffer in that window; and in those cases, the
+     returned instance would be different.
 
- - Function: mono-pixmap-image-instance-p object
-     This function returns non-`nil' if OBJECT is an image instance of
-     type `mono-pixmap'.
+     The returned instance is an image-instance object, and you can
+     query it using the appropriate image instance functions.  For
+     example, you could use `image-instance-depth' to find out the
+     depth (number of color planes) of a pixmap displayed in a
+     particular window.  The results might be different from the
+     results you would get for another window (perhaps the user
+     specified a different image for the frame that window is on; or
+     perhaps the same image was specified but the window is on a
+     different X server, and that X server has different color
+     capabilities from this one).
 
- - Function: color-pixmap-image-instance-p object
-     This function returns non-`nil' if OBJECT is an image instance of
-     type `color-pixmap'.
+     DOMAIN defaults to the selected window if omitted.
 
- - Function: pointer-image-instance-p object
-     This function returns non-`nil' if OBJECT is an image instance of
-     type `pointer'.
+     DOMAIN can be a frame or device, instead of a window.  The value
+     returned for such a domain is used in special circumstances when a
+     more specific domain does not apply; for example, a frame value
+     might be used for coloring a toolbar, which is conceptually
+     attached to a frame rather than a particular window.  The value is
+     also useful in determining what the value would be for a
+     particular window within the frame or device, if it is not
+     overridden by a more specific specification.
 
- - Function: subwindow-image-instance-p object
-     This function returns non-`nil' if OBJECT is an image instance of
-     type `subwindow'.
+     If PROPERTY does not name a built-in property, its value will
+     simply be returned unless it is a specifier object, in which case
+     it will be instanced using `specifier-instance'.
 
- - Function: nothing-image-instance-p object
-     This function returns non-`nil' if OBJECT is an image instance of
-     type `nothing'.
+     Optional arguments DEFAULT and NO-FALLBACK are the same as in
+     `specifier-instance'.  *Note Specifiers::.
 
- - Function: widget-image-instance-p object
-     Return `t' if OBJECT is an image instance of type `widget'.
+ -- Function: remove-glyph-property glyph property &optional locale
+          tag-set exact-p
+     This function removes a property from a glyph.  For built-in
+     properties, this is analogous to `remove-specifier'.  *Note
+     remove-specifier-p: Specifiers, for the meaning of the LOCALE,
+     TAG-SET, and EXACT-P arguments.
 
 \1f
-File: lispref.info,  Node: Image Instance Functions,  Prev: Image Instance Types,  Up: Image Instances
+File: lispref.info,  Node: Glyph Convenience Functions,  Next: Glyph Dimensions,  Prev: Glyph Properties,  Up: Manipulating Glyphs
 
-Image Instance Functions
-........................
+50.4.2 Glyph Convenience Functions
+----------------------------------
 
- - Function: make-image-instance data &optional domain dest-types
-          noerror
-     This function creates a new image-instance object.
+The following functions are provided for working with specific
+properties of a glyph.  Note that these are exactly like calling the
+general functions described above and passing in the appropriate value
+for PROPERTY.
 
-     DATA is an image instantiator, which describes the image (*note
-     Image Specifiers::).
+   Remember that if you want to determine the "value" of a specific
+glyph property, you probably want to use the `*-instance' functions.
+For example, to determine whether a glyph contributes to its line
+height, use `glyph-contrib-p-instance', not `glyph-contrib-p'. (The
+latter will return a boolean specifier or a list of specifications, and
+you probably aren't concerned with these.)
 
-     DEST-TYPES should be a list of allowed image instance types that
-     can be generated.  The DEST-TYPES list is unordered.  If multiple
-     destination types are possible for a given instantiator, the "most
-     natural" type for the instantiator's format is chosen. (For XBM,
-     the most natural types are `mono-pixmap', followed by
-     `color-pixmap', followed by `pointer'.  For the other normal image
-     formats, the most natural types are `color-pixmap', followed by
-     `mono-pixmap', followed by `pointer'.  For the string and
-     formatted-string formats, the most natural types are `text',
-     followed by `mono-pixmap' (not currently implemented), followed by
-     `color-pixmap' (not currently implemented).  For MS Windows
-     resources, the most natural type for pointer resources is
-     `pointer', and for the others it's `color-pixmap'.  The other
-     formats can only be instantiated as one type. (If you want to
-     control more specifically the order of the types into which an
-     image is instantiated, just call `make-image-instance' repeatedly
-     until it succeeds, passing less and less preferred destination
-     types each time.
+ -- Function: glyph-image glyph &optional locale
+     This function is equivalent to calling `glyph-property' with a
+     property of `image'.  The return value will be an image specifier
+     if LOCALE is `nil' or omitted; otherwise, it will be a
+     specification or list of specifications.
 
-     If DEST-TYPES is omitted, all possible types are allowed.
+ -- Function: set-glyph-image glyph spec &optional locale tag-set
+          how-to-add
+     This function is equivalent to calling `set-glyph-property' with a
+     property of `image'.
 
-     DOMAIN specifies the domain to which the image instance will be
-     attached.  This domain is termed the "governing domain".  The type
-     of the governing domain depends on the image instantiator format.
-     (Although, more correctly, it should probably depend on the image
-     instance type.) For example, pixmap image instances are specific
-     to a device, but widget image instances are specific to a
-     particular XEmacs window because in order to display such a widget
-     when two windows onto the same buffer want to display the widget,
-     two separate underlying widgets must be created. (That's because a
-     widget is actually a child window-system window, and all
-     window-system windows have a unique existence on the screen.) This
-     means that the governing domain for a pixmap image instance will
-     be some device (most likely, the only existing device), whereas
-     the governing domain for a widget image instance will be some
-     XEmacs window.
+ -- Function: glyph-image-instance glyph &optional domain default
+          no-fallback
+     This function returns the instance of GLYPH's image in the given
+     DOMAIN, and is equivalent to calling `glyph-property-instance'
+     with a property of `image'.  The return value will be an image
+     instance.
 
-     If you specify an overly general DOMAIN (e.g. a frame when a
-     window was wanted), an error is signaled.  If you specify an overly
-     specific DOMAIN (e.g. a window when a device was wanted), the
-     corresponding general domain is fetched and used instead.  For
-     `make-image-instance', it makes no difference whether you specify
-     an overly specific domain or the properly general domain derived
-     from it.  However, it does matter when creating an image instance
-     by instantiating a specifier or glyph (e.g. with
-     `glyph-image-instance'), because the more specific domain causes
-     spec lookup to start there and proceed to more general domains. (It
-     would also matter when creating an image instance with an
-     instantiator format of `inherit', but we currently disallow this.
-     #### We should fix this.)  n If omitted, DOMAIN defaults to the
-     selected window.
+     Normally DOMAIN will be a window or `nil' (meaning the selected
+     window), and an instance object describing how the image appears
+     in that particular window and buffer will be returned.
 
-     NOERROR controls what happens when the image cannot be generated.
-     If `nil', an error message is generated.  If `t', no messages are
-     generated and this function returns `nil'.  If anything else, a
-     warning message is generated and this function returns `nil'.
+ -- Function: glyph-contrib-p glyph &optional locale
+     This function is equivalent to calling `glyph-property' with a
+     property of `contrib-p'.  The return value will be a boolean
+     specifier if LOCALE is `nil' or omitted; otherwise, it will be a
+     specification or list of specifications.
 
- - Function: colorize-image-instance image-instance foreground
-          background
-     This function makes the image instance be displayed in the given
-     colors.  Image instances come in two varieties: bitmaps, which are
-     1 bit deep which are rendered in the prevailing foreground and
-     background colors; and pixmaps, which are of arbitrary depth
-     (including 1) and which have the colors explicitly specified.
-     This function converts a bitmap to a pixmap.  If the image
-     instance was a pixmap already, nothing is done (and `nil' is
-     returned).  Otherwise `t' is returned.
+ -- Function: set-glyph-contrib-p glyph spec &optional locale tag-set
+          how-to-add
+     This function is equivalent to calling `set-glyph-property' with a
+     property of `contrib-p'.
 
- - Function: image-instance-name image-instance
-     This function returns the name of the given image instance.
+ -- Function: glyph-contrib-p-instance glyph &optional domain default
+          no-fallback
+     This function returns whether the glyph contributes to its line
+     height in the given DOMAIN, and is equivalent to calling
+     `glyph-property-instance' with a property of `contrib-p'.  The
+     return value will be either `nil' or `t'. (Normally DOMAIN will be
+     a window or `nil', meaning the selected window.)
 
- - Function: image-instance-domain image-instance
-     Return the governing domain of the given IMAGE-INSTANCE.  The
-     governing domain of an image instance is the domain that the image
-     instance is specific to.  It is _NOT_ necessarily the domain that
-     was given to the call to `specifier-instance' that resulted in the
-     creation of this image instance.  See `make-image-instance' for
-     more information on governing domains.
+ -- Function: glyph-baseline glyph &optional locale
+     This function is equivalent to calling `glyph-property' with a
+     property of `baseline'.  The return value will be a specifier if
+     LOCALE is `nil' or omitted; otherwise, it will be a specification
+     or list of specifications.
 
- - Function: image-instance-string image-instance
-     This function returns the string of the given image instance.
-     This will only be non-`nil' for text image instances.
+ -- Function: set-glyph-baseline glyph spec &optional locale tag-set
+          how-to-add
+     This function is equivalent to calling `set-glyph-property' with a
+     property of `baseline'.
 
- - Function: image-instance-file-name image-instance
-     This function returns the file name from which IMAGE-INSTANCE was
-     read, if known.
+ -- Function: glyph-baseline-instance glyph &optional domain default
+          no-fallback
+     This function returns the instance of GLYPH's baseline value in
+     the given DOMAIN, and is equivalent to calling
+     `glyph-property-instance' with a property of `baseline'.  The
+     return value will be an integer or `nil'.
 
- - Function: image-instance-mask-file-name image-instance
-     This function returns the file name from which IMAGE-INSTANCE's
-     mask was read, if known.
+     Normally DOMAIN will be a window or `nil' (meaning the selected
+     window), and an instance object describing the baseline value
+     appears in that particular window and buffer will be returned.
 
- - Function: image-instance-depth image-instance
-     This function returns the depth of the image instance.  This is 0
-     for a mono pixmap, or a positive integer for a color pixmap.
+ -- Function: glyph-face glyph
+     This function returns the face of GLYPH. (Remember, this is not a
+     specifier, but a simple property.)
 
- - Function: image-instance-height image-instance
-     This function returns the height of the image instance, in pixels.
+ -- Function: set-glyph-face glyph face
+     This function changes the face of GLYPH to FACE.
 
- - Function: image-instance-width image-instance
-     This function returns the width of the image instance, in pixels.
+\1f
+File: lispref.info,  Node: Glyph Dimensions,  Next: Glyph Types,  Prev: Glyph Convenience Functions,  Up: Manipulating Glyphs
 
- - Function: image-instance-hotspot-x image-instance
-     This function returns the X coordinate of the image instance's
-     hotspot, if known.  This is a point relative to the origin of the
-     pixmap.  When an image is used as a mouse pointer, the hotspot is
-     the point on the image that sits over the location that the
-     pointer points to.  This is, for example, the tip of the arrow or
-     the center of the crosshairs.
+50.4.3 Glyph Dimensions
+-----------------------
 
-     This will always be `nil' for a non-pointer image instance.
+ -- Function: glyph-width glyph &optional window
+     This function returns the width of GLYPH on WINDOW.  This may not
+     be exact as it does not take into account all of the context that
+     redisplay will.
 
- - Function: image-instance-hotspot-y image-instance
-     This function returns the Y coordinate of the image instance's
-     hotspot, if known.
+ -- Function: glyph-ascent glyph &optional window
+     This function returns the ascent value of GLYPH on WINDOW.  This
+     may not be exact as it does not take into account all of the
+     context that redisplay will.
 
- - Function: image-instance-foreground image-instance
-     This function returns the foreground color of IMAGE-INSTANCE, if
-     applicable.  This will be a color instance or `nil'. (It will only
-     be non-`nil' for colorized mono pixmaps and for pointers.)
+ -- Function: glyph-descent glyph &optional window
+     This function returns the descent value of GLYPH on WINDOW.  This
+     may not be exact as it does not take into account all of the
+     context that redisplay will.
 
- - Function: image-instance-background image-instance
-     This function returns the background color of IMAGE-INSTANCE, if
-     applicable.  This will be a color instance or `nil'. (It will only
-     be non-`nil' for colorized mono pixmaps and for pointers.)
+ -- Function: glyph-height glyph &optional window
+     This function returns the height of GLYPH on WINDOW.  (This is
+     equivalent to the sum of the ascent and descent values.)  This may
+     not be exact as it does not take into account all of the context
+     that redisplay will.
 
 \1f
-File: lispref.info,  Node: Glyph Types,  Next: Mouse Pointer,  Prev: Images,  Up: Glyphs
+File: lispref.info,  Node: Glyph Types,  Prev: Glyph Dimensions,  Up: Manipulating Glyphs
 
-Glyph Types
-===========
+50.4.4 Glyph Types
+------------------
 
 Each glyph has a particular type, which controls how the glyph's image
 is generated.  Each glyph type has a corresponding list of allowable
@@ -1490,150 +2608,33 @@ glyph's type.
      iconified.  Their image can be instantiated as `mono-pixmap' and
      `color-pixmap'.
 
- - Function: glyph-type glyph
+ -- Function: glyph-type glyph
      This function returns the type of the given glyph.  The return
      value will be a symbol, one of `buffer', `pointer', or `icon'.
 
- - Function: valid-glyph-type-p glyph-type
+ -- Function: valid-glyph-type-p glyph-type
      Given a GLYPH-TYPE, this function returns non-`nil' if it is valid.
 
- - Function: glyph-type-list
+ -- Function: glyph-type-list
      This function returns a list of valid glyph types.
 
- - Function: buffer-glyph-p object
+ -- Function: buffer-glyph-p object
      This function returns non-`nil' if OBJECT is a glyph of type
      `buffer'.
 
- - Function: icon-glyph-p object
+ -- Function: icon-glyph-p object
      This function returns non-`nil' if OBJECT is a glyph of type
      `icon'.
 
- - Function: pointer-glyph-p object
+ -- Function: pointer-glyph-p object
      This function returns non-`nil' if OBJECT is a glyph of type
      `pointer'.
 
 \1f
-File: lispref.info,  Node: Mouse Pointer,  Next: Redisplay Glyphs,  Prev: Glyph Types,  Up: Glyphs
-
-Mouse Pointer
-=============
-
-The shape of the mouse pointer when over a particular section of a frame
-is controlled using various glyph variables.  Since the image of a glyph
-is a specifier, it can be controlled on a per-buffer, per-frame,
-per-window, or per-device basis.
-
-   You should use `set-glyph-image' to set the following variables,
-_not_ `setq'.
-
- - Glyph: text-pointer-glyph
-     This variable specifies the shape of the mouse pointer when over
-     text.
-
- - Glyph: nontext-pointer-glyph
-     This variable specifies the shape of the mouse pointer when over a
-     buffer, but not over text.  If unspecified in a particular domain,
-     `text-pointer-glyph' is used.
-
- - Glyph: modeline-pointer-glyph
-     This variable specifies the shape of the mouse pointer when over
-     the modeline.  If unspecified in a particular domain,
-     `nontext-pointer-glyph' is used.
-
- - Glyph: selection-pointer-glyph
-     This variable specifies the shape of the mouse pointer when over a
-     selectable text region.  If unspecified in a particular domain,
-     `text-pointer-glyph' is used.
-
- - Glyph: gc-pointer-glyph
-     This variable specifies the shape of the mouse pointer when a
-     garbage collection is in progress.  If the selected window is on a
-     window system and this glyph specifies a value (i.e. a pointer
-     image instance) in the domain of the selected window, the pointer
-     will be changed as specified during garbage collection.
-     Otherwise, a message will be printed in the echo area, as
-     controlled by `gc-message'.
-
- - Glyph: busy-pointer-glyph
-     This variable specifies the shape of the mouse pointer when XEmacs
-     is busy.  If unspecified in a particular domain, the pointer is
-     not changed when XEmacs is busy.
-
- - Glyph: menubar-pointer-glyph
-     This variable specifies the shape of the mouse pointer when over
-     the menubar.  If unspecified in a particular domain, the
-     window-system-provided default pointer is used.
-
- - Glyph: scrollbar-pointer-glyph
-     This variable specifies the shape of the mouse pointer when over a
-     scrollbar.  If unspecified in a particular domain, the
-     window-system-provided default pointer is used.
-
- - Glyph: toolbar-pointer-glyph
-     This variable specifies the shape of the mouse pointer when over a
-     toolbar.  If unspecified in a particular domain,
-     `nontext-pointer-glyph' is used.
-
-   Internally, these variables are implemented in
-`default-mouse-motion-handler', and thus only take effect when the
-mouse moves.  That function calls `set-frame-pointer', which sets the
-current mouse pointer for a frame.
-
- - Function: set-frame-pointer frame image-instance
-     This function sets the mouse pointer of FRAME to the given pointer
-     image instance.  You should not call this function directly.  (If
-     you do, the pointer will change again the next time the mouse
-     moves.)
-
-\1f
-File: lispref.info,  Node: Redisplay Glyphs,  Next: Subwindows,  Prev: Mouse Pointer,  Up: Glyphs
-
-Redisplay Glyphs
-================
-
- - Glyph: truncation-glyph
-     This variable specifies what is displayed at the end of truncated
-     lines.
-
- - Glyph: continuation-glyph
-     This variable specifies what is displayed at the end of wrapped
-     lines.
-
- - Glyph: octal-escape-glyph
-     This variable specifies what to prefix character codes displayed
-     in octal with.
-
- - Glyph: hscroll-glyph
-     This variable specifies what to display at the beginning of
-     horizontally scrolled lines.
-
- - Glyph: invisible-text-glyph
-     This variable specifies what to use to indicate the presence of
-     invisible text.  This is the glyph that is displayed when an
-     ellipsis is called for, according to `selective-display-ellipses'
-     or `buffer-invisibility-spec').  Normally this is three dots
-     ("...").
-
- - Glyph: control-arrow-glyph
-     This variable specifies what to use as an arrow for control
-     characters.
-
-\1f
-File: lispref.info,  Node: Subwindows,  Next: Glyph Examples,  Prev: Redisplay Glyphs,  Up: Glyphs
-
-Subwindows
-==========
-
-Subwindows are not currently implemented.
-
- - Function: subwindowp object
-     This function returns non-`nil' if OBJECT is a subwindow.
-
-\1f
-File: lispref.info,  Node: Glyph Examples,  Prev: Subwindows,  Up: Glyphs
+File: lispref.info,  Node: Glyph Examples,  Prev: Manipulating Glyphs,  Up: Glyphs
 
-Glyph Examples
-==============
+50.5 Glyph Examples
+===================
 
 For many applications, displaying graphics is a simple process: you
 create a glyph, and then you insert it into a buffer.
@@ -1713,11 +2714,11 @@ Example:
          ;; Display the glyph by storing it as the extent's "begin-glyph".
          (set-extent-property extent 'begin-glyph gl)
          ))
-     
+
      ;; You can then use this function like:
      (insert-glyph (make-glyph [jpeg :file "/tmp/file1.jpg"]))
      ;; This will insert the glyph at point.
-     
+
      ;; Here's an example of how to insert two glyphs side-by-side, at point
      ;; (using the above code):
      (progn
@@ -1805,8 +2806,8 @@ Example:
 \1f
 File: lispref.info,  Node: Annotations,  Next: Display,  Prev: Glyphs,  Up: Top
 
-Annotations
-***********
+51 Annotations
+**************
 
 An "annotation" is a pixmap or string that is not part of a buffer's
 text but is displayed next to a particular location in a buffer.
@@ -1830,8 +2831,8 @@ can work with annotations without knowing how extents work.
 \1f
 File: lispref.info,  Node: Annotation Basics,  Next: Annotation Primitives,  Up: Annotations
 
-Annotation Basics
-=================
+51.1 Annotation Basics
+======================
 
 Marginal annotations are notes associated with a particular location in
 a buffer.  They may be displayed in a margin created on the left-hand or
@@ -1921,10 +2922,10 @@ always display as they create their own space to display in.
 \1f
 File: lispref.info,  Node: Annotation Primitives,  Next: Annotation Properties,  Prev: Annotation Basics,  Up: Annotations
 
-Annotation Primitives
-=====================
+51.2 Annotation Primitives
+==========================
 
- - Function: make-annotation glyph &optional position layout buffer
+ -- Function: make-annotation glyph &optional position layout buffer
           with-event d-glyph rightp
      This function creates a marginal annotation at position POSITION in
      BUFFER.  The annotation is displayed using GLYPH, which should be
@@ -1942,151 +2943,152 @@ Annotation Primitives
 
      The newly created annotation is returned.
 
- - Function: delete-annotation annotation
+ -- Function: delete-annotation annotation
      This function removes ANNOTATION from its buffer.  This does not
      modify the buffer text.
 
- - Function: annotationp annotation
+ -- Function: annotationp annotation
      This function returns `t' if ANNOTATION is an annotation, `nil'
      otherwise.
 
 \1f
 File: lispref.info,  Node: Annotation Properties,  Next: Margin Primitives,  Prev: Annotation Primitives,  Up: Annotations
 
-Annotation Properties
-=====================
+51.3 Annotation Properties
+==========================
 
- - Function: annotation-glyph annotation
+ -- Function: annotation-glyph annotation
      This function returns the glyph object used to display ANNOTATION.
 
- - Function: set-annotation-glyph annotation glyph &optional layout side
+ -- Function: set-annotation-glyph annotation glyph &optional layout
+          side
      This function sets the glyph of ANNOTATION to GLYPH, which should
      be a glyph object.  If LAYOUT is non-`nil', set the layout policy
      of ANNOTATION to LAYOUT.  If SIDE is `left' or `right', change the
      side of the buffer at which the annotation is displayed to the
      given side.  The new value of `annotation-glyph' is returned.
 
- - Function: annotation-down-glyph annotation
+ -- Function: annotation-down-glyph annotation
      This function returns the glyph used to display ANNOTATION when
      the left mouse button is depressed on the annotation.
 
- - Function: set-annotation-down-glyph annotation glyph
+ -- Function: set-annotation-down-glyph annotation glyph
      This function returns the glyph used to display ANNOTATION when
      the left mouse button is depressed on the annotation to GLYPH,
      which should be a glyph object.
 
- - Function: annotation-face annotation
+ -- Function: annotation-face annotation
      This function returns the face associated with ANNOTATION.
 
- - Function: set-annotation-face annotation face
+ -- Function: set-annotation-face annotation face
      This function sets the face associated with ANNOTATION to FACE.
 
- - Function: annotation-layout annotation
+ -- Function: annotation-layout annotation
      This function returns the layout policy of ANNOTATION.
 
- - Function: set-annotation-layout annotation layout
+ -- Function: set-annotation-layout annotation layout
      This function sets the layout policy of ANNOTATION to LAYOUT.
 
- - Function: annotation-side annotation
+ -- Function: annotation-side annotation
      This function returns the side of the buffer that ANNOTATION is
      displayed on.  Return value is a symbol, either `left' or `right'.
 
- - Function: annotation-data annotation
+ -- Function: annotation-data annotation
      This function returns the data associated with ANNOTATION.
 
- - Function: set-annotation-data annotation data
+ -- Function: set-annotation-data annotation data
      This function sets the data field of ANNOTATION to DATA.  DATA is
      returned.
 
- - Function: annotation-action annotation
+ -- Function: annotation-action annotation
      This function returns the action associated with ANNOTATION.
 
- - Function: set-annotation-action annotation action
+ -- Function: set-annotation-action annotation action
      This function sets the action field of ANNOTATION to ACTION.
      ACTION is returned..
 
- - Function: annotation-menu annotation
+ -- Function: annotation-menu annotation
      This function returns the menu associated with ANNOTATION.
 
- - Function: set-annotation-menu annotation menu
+ -- Function: set-annotation-menu annotation menu
      This function sets the menu associated with ANNOTATION to MENU.
      This menu will be displayed when the right mouse button is pressed
      over the annotation.
 
- - Function: annotation-visible annotation
+ -- Function: annotation-visible annotation
      This function returns `t' if there is enough available space to
      display ANNOTATION, `nil' otherwise.
 
- - Function: annotation-width annotation
+ -- Function: annotation-width annotation
      This function returns the width of ANNOTATION in pixels.
 
- - Function: hide-annotation annotation
+ -- Function: hide-annotation annotation
      This function removes ANNOTATION's glyph, making it invisible.
 
- - Function: reveal-annotation annotation
+ -- Function: reveal-annotation annotation
      This function restores ANNOTATION's glyph, making it visible.
 
 \1f
 File: lispref.info,  Node: Locating Annotations,  Next: Annotation Hooks,  Prev: Margin Primitives,  Up: Annotations
 
-Locating Annotations
-====================
+51.4 Locating Annotations
+=========================
 
- - Function: annotations-in-region start end buffer
+ -- Function: annotations-in-region start end buffer
      This function returns a list of all annotations in BUFFER which
      are between START and END inclusively.
 
- - Function: annotations-at &optional position buffer
+ -- Function: annotations-at &optional position buffer
      This function returns a list of all annotations at POSITION in
      BUFFER.  If POSITION is `nil' point is used.  If BUFFER is `nil'
      the current buffer is used.
 
- - Function: annotation-list &optional buffer
+ -- Function: annotation-list &optional buffer
      This function returns a list of all annotations in BUFFER.  If
      BUFFER is `nil', the current buffer is used.
 
- - Function: all-annotations
+ -- Function: all-annotations
      This function returns a list of all annotations in all buffers in
      existence.
 
 \1f
 File: lispref.info,  Node: Margin Primitives,  Next: Locating Annotations,  Prev: Annotation Properties,  Up: Annotations
 
-Margin Primitives
-=================
+51.5 Margin Primitives
+======================
 
 The margin widths are controllable on a buffer-local, window-local,
 frame-local, device-local, or device-type-local basis through the use
 of specifiers.  *Note Specifiers::.
 
- - Specifier: left-margin-width
+ -- Specifier: left-margin-width
      This is a specifier variable controlling the width of the left
      outside margin, in characters.  Use `set-specifier' to change its
      value.
 
- - Specifier: right-margin-width
+ -- Specifier: right-margin-width
      This is a specifier variable controlling the width of the right
      outside margin, in characters.  Use `set-specifier' to change its
      value.
 
- - Specifier: use-left-overflow
+ -- Specifier: use-left-overflow
      If non-`nil', use the left outside margin as extra whitespace when
      displaying `whitespace' and `inside-margin' annotations.  Defaults
      to `nil'.  This is a specifier variable; use `set-specifier' to
      change its value.
 
- - Specifier: use-right-overflow
+ -- Specifier: use-right-overflow
      If non-`nil', use the right outside margin as extra whitespace when
      displaying `whitespace' and `inside-margin' annotations.  Defaults
      to `nil'.  This is a specifier variable; use `set-specifier' to
      change its value.
 
- - Function: window-left-margin-pixel-width &optional window
+ -- Function: window-left-margin-pixel-width &optional window
      This function returns the width in pixels of the left outside
      margin of WINDOW.  If WINDOW is `nil', the selected window is
      assumed.
 
- - Function: window-right-margin-pixel-width &optional window
+ -- Function: window-right-margin-pixel-width &optional window
      This function returns the width in pixels of the right outside
      margin of WINDOW.  If WINDOW is `nil', the selected window is
      assumed.
@@ -2099,8 +3101,8 @@ likewise for the right margin.
 \1f
 File: lispref.info,  Node: Annotation Hooks,  Prev: Locating Annotations,  Up: Annotations
 
-Annotation Hooks
-================
+51.6 Annotation Hooks
+=====================
 
 The following three hooks are provided for use with the marginal
 annotations:
@@ -2120,8 +3122,8 @@ annotations:
 \1f
 File: lispref.info,  Node: Display,  Next: Hash Tables,  Prev: Annotations,  Up: Top
 
-Emacs Display
-*************
+52 Emacs Display
+****************
 
 This chapter describes a number of other features related to the display
 that XEmacs presents to the user.
@@ -2144,13 +3146,13 @@ that XEmacs presents to the user.
 \1f
 File: lispref.info,  Node: Refresh Screen,  Next: Truncation,  Up: Display
 
-Refreshing the Screen
-=====================
+52.1 Refreshing the Screen
+==========================
 
 The function `redraw-frame' redisplays the entire contents of a given
 frame.  *Note Frames::.
 
- - Function: redraw-frame &optional frame no-preempt
+ -- Function: redraw-frame &optional frame no-preempt
      This function clears and redisplays frame FRAME.
 
      FRAME defaults to the selected frame if omitted.
@@ -2161,7 +3163,7 @@ frame.  *Note Frames::.
 
    Even more powerful is `redraw-display':
 
- - Command: redraw-display &optional device
+ -- Command: redraw-display &optional device
      This function redraws all frames on DEVICE marked as having their
      image garbled.  DEVICE defaults to the selected device.  If DEVICE
      is `t', all devices will have their frames checked.
@@ -2177,7 +3179,7 @@ programs such as XEmacs and for ordinary sequential display.  If you are
 using such a terminal, you might want to inhibit the redisplay on
 resumption.  *Note Suspending XEmacs::.
 
- - Variable: no-redraw-on-reenter
+ -- Variable: no-redraw-on-reenter
      This variable controls whether XEmacs redraws the entire screen
      after it has been suspended and resumed.  Non-`nil' means yes,
      `nil' means no.
@@ -2189,15 +3191,15 @@ redrawn from scratch.  Normally this occurs the next time that
 `next-event' or `sit-for' is called; however, a display update will not
 occur if there is input pending.  *Note Command Loop::.
 
- - Function: force-cursor-redisplay &optional frame
+ -- Function: force-cursor-redisplay &optional frame
      This function causes an immediate update of the cursor on FRAME,
      which defaults to the selected frame.
 
 \1f
 File: lispref.info,  Node: Truncation,  Next: The Echo Area,  Prev: Refresh Screen,  Up: Display
 
-Truncation
-==========
+52.2 Truncation
+===============
 
 When a line of text extends beyond the right edge of a window, the line
 can either be truncated or continued on the next line.  When a line is
@@ -2217,7 +3219,7 @@ happens on the screen only, not in the buffer contents, and it breaks a
 line precisely at the right margin, not at a word boundary.  *Note
 Filling::.
 
- - User Option: truncate-lines
+ -- User Option: truncate-lines
      This buffer-local variable controls how XEmacs displays lines that
      extend beyond the right edge of the window.  If it is non-`nil',
      then XEmacs does not display continuation lines; rather each line
@@ -2229,11 +3231,11 @@ Filling::.
      then truncation is always used for side-by-side windows (within one
      frame) regardless of the value of `truncate-lines'.
 
- - User Option: default-truncate-lines
+ -- User Option: default-truncate-lines
      This variable is the default value for `truncate-lines', for
      buffers that do not have local values for it.
 
- - User Option: truncate-partial-width-windows
+ -- User Option: truncate-partial-width-windows
      This variable controls display of lines that extend beyond the
      right edge of the window, in side-by-side windows (*note Splitting
      Windows::).  If it is non-`nil', these lines are truncated;
@@ -2250,8 +3252,8 @@ Emacs, which uses display tables to control these images.)
 \1f
 File: lispref.info,  Node: The Echo Area,  Next: Warnings,  Prev: Truncation,  Up: Display
 
-The Echo Area
-=============
+52.3 The Echo Area
+==================
 
 The "echo area" is used for displaying messages made with the `message'
 primitive, and for echoing keystrokes.  It is not the same as the
@@ -2266,7 +3268,7 @@ echo area; see *Note Errors::.
 functions with `t' as the stream (*note Output Functions::), or as
 follows:
 
- - Function: message string &rest arguments
+ -- Function: message string &rest arguments
      This function displays a one-line message in the echo area.  The
      argument STRING is similar to a C language `printf' control
      string.  See `format' in *Note String Conversion::, for the details
@@ -2284,7 +3286,7 @@ follows:
                    (minibuffer-depth))
            -| Minibuffer depth is 0.
           => "Minibuffer depth is 0."
-          
+
           ---------- Echo Area ----------
           Minibuffer depth is 0.
           ---------- Echo Area ----------
@@ -2313,7 +3315,7 @@ standard labels are:
 programs may access these messages, or remove them as appropriate, via
 the message stack.
 
- - Function: display-message label message &optional frame stdout-p
+ -- Function: display-message label message &optional frame stdout-p
      This function displays MESSAGE (a string) labeled as LABEL, as
      described above.
 
@@ -2323,21 +3325,21 @@ the message stack.
 
           (display-message 'command "Mark set")
 
- - Function: lmessage label string &rest arguments
+ -- Function: lmessage label string &rest arguments
      This function displays a message STRING with label LABEL.  It is
      similar to `message' in that it accepts a `printf'-like strings
      and any number of arguments.
 
           ;; Display a command message.
           (lmessage 'command "Comment column set to %d" comment-column)
-          
+
           ;; Display a progress message.
           (lmessage 'progress "Fontifying %s... (%d)" buffer percentage)
-          
+
           ;; Display a message that should not be logged.
           (lmessage 'no-log "Done")
 
- - Function: clear-message &optional label frame stdout-p no-restore
+ -- Function: clear-message &optional label frame stdout-p no-restore
      This function remove any message with the given LABEL from the
      message-stack, erasing it from the echo area if it's currently
      displayed there.
@@ -2364,7 +3366,7 @@ the message stack.
      Unless you need the return value or you need to specify a label,
      you should just use `(message nil)'.
 
- - Function: current-message &optional frame
+ -- Function: current-message &optional frame
      This function returns the current message in the echo area, or
      `nil'.  The FRAME argument is currently unused.
 
@@ -2372,15 +3374,15 @@ the message stack.
 the ` *Message-Log*' buffer.  Exactly which messages will be recorded
 can be tuned using the following variables.
 
- - User Option: log-message-max-size
+ -- User Option: log-message-max-size
      This variable specifies the maximum size of the ` *Message-log*'
      buffer.
 
- - Variable: log-message-ignore-labels
+ -- Variable: log-message-ignore-labels
      This variable specifies the labels whose messages will not be
      logged.  It should be a list of symbols.
 
- - Variable: log-message-ignore-regexps
+ -- Variable: log-message-ignore-regexps
      This variable specifies the regular expressions matching messages
      that will not be logged.  It should be a list of regular
      expressions.
@@ -2389,7 +3391,7 @@ can be tuned using the following variables.
      ignored should label them with `progress', `prompt', or `no-log',
      so they can be filtered by `log-message-ignore-labels'.
 
- - Variable: echo-keystrokes
+ -- Variable: echo-keystrokes
      This variable determines how much time should elapse before command
      characters echo.  Its value must be a number, which specifies the
      number of seconds to wait before echoing.  If the user types a
@@ -2399,7 +3401,7 @@ can be tuned using the following variables.
 
      If the value is zero, then command input is not echoed.
 
- - Variable: cursor-in-echo-area
+ -- Variable: cursor-in-echo-area
      This variable controls where the cursor appears when a message is
      displayed in the echo area.  If it is non-`nil', then the cursor
      appears at the end of the message.  Otherwise, the cursor appears
@@ -2411,8 +3413,8 @@ can be tuned using the following variables.
 \1f
 File: lispref.info,  Node: Warnings,  Next: Invisible Text,  Prev: The Echo Area,  Up: Display
 
-Warnings
-========
+52.4 Warnings
+=============
 
 XEmacs contains a facility for unified display of various warnings.
 Unlike errors, warnings are displayed in the situations when XEmacs
@@ -2427,9 +3429,9 @@ may span across several lines.  Here is an example of how a warning is
 displayed:
 
      (1) (initialization/error) An error has occurred while loading ~/.emacs:
-     
+
      Symbol's value as variable is void: bogus-variable
-     
+
      To ensure normal operation, you should investigate the cause of the error
      in your initialization file and remove it.  Use the `-debug-init' option
      to XEmacs to view a complete error backtrace.
@@ -2443,7 +3445,7 @@ The recognized warning levels, in increased order of priority, are:
 `debug', `info', `notice', `warning', `error', `critical', `alert' and
 `emergency'.
 
- - Function: display-warning class message &optional level
+ -- Function: display-warning class message &optional level
      This function displays a warning message MESSAGE (a string).
      CLASS should be a warning class symbol, as described above, or a
      list of such symbols.  LEVEL describes the warning priority level.
@@ -2452,23 +3454,23 @@ The recognized warning levels, in increased order of priority, are:
           (display-warning 'resource
             "Bad resource specification encountered:
           something like
-          
+
               Emacs*foo: bar
-          
+
           You should replace the * with a . in order to get proper behavior when
           you use the specifier and/or `set-face-*' functions.")
-          
+
           ---------- Warning buffer ----------
           (1) (resource/warning) Bad resource specification encountered:
           something like
-          
+
               Emacs*foo: bar
-          
+
           You should replace the * with a . in order to get proper behavior when
           you use the specifier and/or `set-face-*' functions.
           ---------- Warning buffer ----------
 
- - Function: lwarn class level message &rest args
+ -- Function: lwarn class level message &rest args
      This function displays a formatted labeled warning message.  As
      above, CLASS should be the warning class symbol, or a list of such
      symbols, and LEVEL should specify the warning priority level
@@ -2482,25 +3484,25 @@ The recognized warning levels, in increased order of priority, are:
             "Error caught in `remove-message-hook': %s"
             (error-message-string e))
 
- - Variable: log-warning-minimum-level
+ -- Variable: log-warning-minimum-level
      This variable specifies the minimum level of warnings that should
      be generated.  Warnings with level lower than defined by this
      variable are completely ignored, as if they never happened.
 
- - Variable: display-warning-minimum-level
+ -- Variable: display-warning-minimum-level
      This variable specifies the minimum level of warnings that should
      be displayed.  Unlike `log-warning-minimum-level', setting this
      function does not suppress warnings entirely--they are still
      generated in the `*Warnings*' buffer, only they are not displayed
      by default.
 
- - Variable: log-warning-suppressed-classes
+ -- Variable: log-warning-suppressed-classes
      This variable specifies a list of classes that should not be
      logged or displayed.  If any of the class symbols associated with
      a warning is the same as any of the symbols listed here, the
      warning will be completely ignored, as it they never happened.
 
- - Variable: display-warning-suppressed-classes
+ -- Variable: display-warning-suppressed-classes
      This variable specifies a list of classes that should not be
      logged or displayed.  If any of the class symbols associated with
      a warning is the same as any of the symbols listed here, the
@@ -2512,8 +3514,8 @@ The recognized warning levels, in increased order of priority, are:
 \1f
 File: lispref.info,  Node: Invisible Text,  Next: Selective Display,  Prev: Warnings,  Up: Display
 
-Invisible Text
-==============
+52.5 Invisible Text
+===================
 
 You can make characters "invisible", so that they do not appear on the
 screen, with the `invisible' property.  This can be either a text
@@ -2539,7 +3541,7 @@ just a part of the entries in the data base.  Setting this variable is
 very fast, much faster than scanning all the text in the buffer looking
 for properties to change.
 
- - Variable: buffer-invisibility-spec
+ -- Variable: buffer-invisibility-spec
      This variable specifies which kinds of `invisible' properties
      actually make a character invisible.
 
@@ -2573,8 +3575,8 @@ the variable `line-move-ignore-invisible'.
 \1f
 File: lispref.info,  Node: Selective Display,  Next: Overlay Arrow,  Prev: Invisible Text,  Up: Display
 
-Selective Display
-=================
+52.6 Selective Display
+======================
 
 "Selective display" is a pair of features that hide certain lines on
 the screen.
@@ -2609,7 +3611,7 @@ control-m's are output as newlines.  This means that when you next read
 in the file, it looks OK, with nothing invisible.  The selective display
 effect is seen only within XEmacs.
 
- - Variable: selective-display
+ -- Variable: selective-display
      This buffer-local variable enables selective display.  This means
      that lines, or portions of lines, may be made invisible.
 
@@ -2633,7 +3635,7 @@ effect is seen only within XEmacs.
 
           (setq selective-display nil)
                => nil
-          
+
           ---------- Buffer: foo ----------
           1 on this column
            2on this column
@@ -2642,10 +3644,10 @@ effect is seen only within XEmacs.
            2on this column
           1 on this column
           ---------- Buffer: foo ----------
-          
+
           (setq selective-display 2)
                => 2
-          
+
           ---------- Buffer: foo ----------
           1 on this column
            2on this column
@@ -2653,14 +3655,14 @@ effect is seen only within XEmacs.
           1 on this column
           ---------- Buffer: foo ----------
 
- - Variable: selective-display-ellipses
+ -- Variable: selective-display-ellipses
      If this buffer-local variable is non-`nil', then XEmacs displays
      `...' at the end of a line that is followed by invisible text.
      This example is a continuation of the previous one.
 
           (setq selective-display-ellipses t)
                => t
-          
+
           ---------- Buffer: foo ----------
           1 on this column
            2on this column ...
@@ -2674,21 +3676,21 @@ effect is seen only within XEmacs.
 \1f
 File: lispref.info,  Node: Overlay Arrow,  Next: Temporary Displays,  Prev: Selective Display,  Up: Display
 
-The Overlay Arrow
-=================
+52.7 The Overlay Arrow
+======================
 
 The "overlay arrow" is useful for directing the user's attention to a
 particular line in a buffer.  For example, in the modes used for
 interface to debuggers, the overlay arrow indicates the line of code
 about to be executed.
 
- - Variable: overlay-arrow-string
+ -- Variable: overlay-arrow-string
      This variable holds the string to display to call attention to a
      particular line, or `nil' if the arrow feature is not in use.
      Despite its name, the value of this variable can be either a string
      or a glyph (*note Glyphs::).
 
- - Variable: overlay-arrow-position
+ -- Variable: overlay-arrow-position
      This variable holds a marker that indicates where to display the
      overlay arrow.  It should point at the beginning of a line.  The
      arrow text appears at the beginning of that line, overlaying any
@@ -2706,14 +3708,14 @@ property.  *Note Extent Properties::.
 \1f
 File: lispref.info,  Node: Temporary Displays,  Next: Blinking,  Prev: Overlay Arrow,  Up: Display
 
-Temporary Displays
-==================
+52.8 Temporary Displays
+=======================
 
 Temporary displays are used by commands to put output into a buffer and
 then present it to the user for perusal rather than for editing.  Many
 of the help commands use this feature.
 
- - Special Form: with-output-to-temp-buffer buffer-name forms...
+ -- Special Form: with-output-to-temp-buffer buffer-name forms...
      This function executes FORMS while arranging to insert any output
      they print into the buffer named BUFFER-NAME.  The buffer is then
      shown in some window for viewing, displayed but not selected.
@@ -2735,20 +3737,20 @@ of the help commands use this feature.
           ---------- Buffer: foo ----------
            This is the contents of foo.
           ---------- Buffer: foo ----------
-          
+
           (with-output-to-temp-buffer "foo"
               (print 20)
               (print standard-output))
           => #<buffer foo>
-          
+
           ---------- Buffer: foo ----------
           20
-          
+
           #<buffer foo>
-          
+
           ---------- Buffer: foo ----------
 
- - Variable: temp-buffer-show-function
+ -- Variable: temp-buffer-show-function
      If this variable is non-`nil', `with-output-to-temp-buffer' calls
      it as a function to do the job of displaying a help buffer.  The
      function gets one argument, which is the buffer it should display.
@@ -2756,7 +3758,7 @@ of the help commands use this feature.
      In Emacs versions 18 and earlier, this variable was called
      `temp-buffer-show-hook'.
 
- - Function: momentary-string-display string position &optional char
+ -- Function: momentary-string-display string position &optional char
           message
      This function momentarily displays STRING in the current buffer at
      POSITION.  It has no effect on the undo list or on the buffer's
@@ -2786,18 +3788,18 @@ of the help commands use this feature.
           This is the contents of foo.
           -!-Second line.
           ---------- Buffer: foo ----------
-          
+
           (momentary-string-display
             "**** Important Message! ****"
             (point) ?\r
             "Type RET when done reading")
           => t
-          
+
           ---------- Buffer: foo ----------
           This is the contents of foo.
           **** Important Message! ****Second line.
           ---------- Buffer: foo ----------
-          
+
           ---------- Echo Area ----------
           Type RET when done reading
           ---------- Echo Area ----------
@@ -2809,13 +3811,13 @@ of the help commands use this feature.
 \1f
 File: lispref.info,  Node: Blinking,  Next: Usual Display,  Prev: Temporary Displays,  Up: Display
 
-Blinking Parentheses
-====================
+52.9 Blinking Parentheses
+=========================
 
 This section describes the mechanism by which XEmacs shows a matching
 open parenthesis when the user inserts a close parenthesis.
 
- - Variable: blink-paren-function
+ -- Variable: blink-paren-function
      The value of this variable should be a function (of no arguments)
      to be called whenever a character with close parenthesis syntax is
      inserted.  The value of `blink-paren-function' may be `nil', in
@@ -2826,20 +3828,20 @@ open parenthesis when the user inserts a close parenthesis.
           standard convention for hooks, it was renamed to
           `blink-paren-function' in version 19.
 
- - Variable: blink-matching-paren
+ -- Variable: blink-matching-paren
      If this variable is `nil', then `blink-matching-open' does nothing.
 
- - Variable: blink-matching-paren-distance
+ -- Variable: blink-matching-paren-distance
      This variable specifies the maximum distance to scan for a matching
      parenthesis before giving up.
 
- - Variable: blink-matching-paren-delay
+ -- Variable: blink-matching-paren-delay
      This variable specifies the number of seconds for the cursor to
      remain at the matching parenthesis.  A fraction of a second often
      gives good results, but the default is 1, which works on all
      systems.
 
- - Command: blink-matching-open
+ -- Command: blink-matching-open
      This function is the default value of `blink-paren-function'.  It
      assumes that point follows a character with close parenthesis
      syntax and moves the cursor momentarily to the matching opening
@@ -2861,8 +3863,8 @@ open parenthesis when the user inserts a close parenthesis.
 \1f
 File: lispref.info,  Node: Usual Display,  Next: Display Tables,  Prev: Blinking,  Up: Display
 
-Usual Display Conventions
-=========================
+52.10 Usual Display Conventions
+===============================
 
 The usual display conventions define how to display each character
 code.  You can override these conventions by setting up a display table
@@ -2897,17 +3899,17 @@ the characters for which you want unusual behavior.
 the screen.  Since they change the number of columns the characters
 occupy, they also affect the indentation functions.
 
- - User Option: ctl-arrow
+ -- User Option: ctl-arrow
      This buffer-local variable controls how control characters are
      displayed.  If it is non-`nil', they are displayed as a caret
      followed by the character: `^A'.  If it is `nil', they are
      displayed as a backslash followed by three octal digits: `\001'.
 
- - Variable: default-ctl-arrow
+ -- Variable: default-ctl-arrow
      The value of this variable is the default value for `ctl-arrow' in
      buffers that do not override it.  *Note Default Value::.
 
- - User Option: tab-width
+ -- User Option: tab-width
      The value of this variable is the spacing between tab stops used
      for displaying tab characters in Emacs buffers.  The default is 8.
      Note that this feature is completely independent from the
@@ -2917,8 +3919,8 @@ occupy, they also affect the indentation functions.
 \1f
 File: lispref.info,  Node: Display Tables,  Next: Beeping,  Prev: Usual Display,  Up: Display
 
-Display Tables
-==============
+52.11 Display Tables
+====================
 
 You can use the "display table" feature to control how all 256 possible
 character codes display on the screen.  This is useful for displaying
@@ -2939,8 +3941,8 @@ terminal, using the "rune table".
 \1f
 File: lispref.info,  Node: Display Table Format,  Next: Active Display Table,  Up: Display Tables
 
-Display Table Format
---------------------
+52.11.1 Display Table Format
+----------------------------
 
 A display table is an array of 256 elements. (In FSF Emacs, a display
 table is 262 elements.  The six extra elements specify the truncation
@@ -2948,7 +3950,7 @@ and continuation glyphs, etc.  This method is very kludgey, and in
 XEmacs the variables `truncation-glyph', `continuation-glyph', etc. are
 used.  *Note Truncation::.)
 
- - Function: make-display-table
+ -- Function: make-display-table
      This creates and returns a display table.  The table initially has
      `nil' in all elements.
 
@@ -2976,8 +3978,8 @@ effect of setting `ctl-arrow' to a non-`nil' value:
 \1f
 File: lispref.info,  Node: Active Display Table,  Next: Character Descriptors,  Prev: Display Table Format,  Up: Display Tables
 
-Active Display Table
---------------------
+52.11.2 Active Display Table
+----------------------------
 
 The active display table is controlled by the variable
 `current-display-table'.  This is a specifier, which means that you can
@@ -2992,7 +3994,7 @@ the contents of a display table, using additional indirection to a
 "glyph table" and such.  Note that "glyph" has a different meaning in
 XEmacs.)
 
- - Variable: current-display-table
+ -- Variable: current-display-table
      The display table currently in use.  This is a specifier.
 
      Display tables are used to control how characters are displayed.
@@ -3062,8 +4064,8 @@ XEmacs uses the usual display conventions.  *Note Usual Display::.
 \1f
 File: lispref.info,  Node: Character Descriptors,  Prev: Active Display Table,  Up: Display Tables
 
-Character Descriptors
----------------------
+52.11.3 Character Descriptors
+-----------------------------
 
 Each element of the display-table vector describes how to display a
 particular character and is called a "character descriptor".  A
@@ -3089,15 +4091,15 @@ a vector
 \1f
 File: lispref.info,  Node: Beeping,  Prev: Display Tables,  Up: Display
 
-Beeping
-=======
+52.12 Beeping
+=============
 
 You can make XEmacs ring a bell, play a sound, or blink the screen to
 attract the user's attention.  Be conservative about how often you do
 this; frequent bells can become irritating.  Also be careful not to use
 beeping alone when signaling an error is appropriate.  (*Note Errors::.)
 
- - Function: ding &optional dont-terminate sound device
+ -- Function: ding &optional dont-terminate sound device
      This function beeps, or flashes the screen (see `visible-bell'
      below).  It also terminates any keyboard macro currently executing
      unless DONT-TERMINATE is non-`nil'.  If SOUND is specified, it
@@ -3109,16 +4111,16 @@ beeping alone when signaling an error is appropriate.  (*Note Errors::.)
      specifies what device to make the sound on, and defaults to the
      selected device.
 
- - Function: beep &optional dont-terminate sound device
+ -- Function: beep &optional dont-terminate sound device
      This is a synonym for `ding'.
 
- - User Option: visible-bell
+ -- User Option: visible-bell
      This variable determines whether XEmacs should flash the screen to
      represent a bell.  Non-`nil' means yes, `nil' means no.  On TTY
      devices, this is effective only if the Termcap entry for the
      terminal type has the visible bell flag (`vb') set.
 
- - Variable: sound-alist
+ -- Variable: sound-alist
      This variable holds an alist associating names with sounds.  When
      `beep' or `ding' is called with one of the name symbols, the
      associated sound will be generated instead of the standard beep.
@@ -3187,28 +4189,28 @@ beeping alone when signaling an error is appropriate.  (*Note Errors::.)
      Other lisp packages may use other beep types, but these are the
      ones that the C kernel of XEmacs uses.
 
- - User Option: bell-volume
+ -- User Option: bell-volume
      This variable specifies the default volume for sounds, from 0 to
      100.
 
- - Command: load-default-sounds
+ -- Command: load-default-sounds
      This function loads and installs some sound files as beep-types.
 
- - Command: load-sound-file filename sound-name &optional volume
+ -- Command: load-sound-file filename sound-name &optional volume
      This function reads in an audio file and adds it to `sound-alist'.
      The sound file must be in the Sun/NeXT U-LAW format.  SOUND-NAME
      should be a symbol, specifying the name of the sound.  If VOLUME
      is specified, the sound will be played at that volume; otherwise,
      the value of `bell-volume' will be used.
 
- - Function: play-sound sound &optional volume device
+ -- Function: play-sound sound &optional volume device
      This function plays sound SOUND, which should be a symbol
      mentioned in `sound-alist'.  If VOLUME is specified, it overrides
      the value (if any) specified in `sound-alist'.  DEVICE specifies
      the device to play the sound on, and defaults to the selected
      device.
 
- - Command: play-sound-file file &optional volume device
+ -- Command: play-sound-file file &optional volume device
      This function plays the named sound file at volume VOLUME, which
      defaults to `bell-volume'.  DEVICE specifies the device to play
      the sound on, and defaults to the selected device.
@@ -3216,10 +4218,10 @@ beeping alone when signaling an error is appropriate.  (*Note Errors::.)
 \1f
 File: lispref.info,  Node: Hash Tables,  Next: Range Tables,  Prev: Display,  Up: Top
 
-Hash Tables
-***********
+53 Hash Tables
+**************
 
- - Function: hash-table-p object
+ -- Function: hash-table-p object
      This function returns `t' if OBJECT is a hash table, else `nil'.
 
 * Menu:
@@ -3234,8 +4236,8 @@ Hash Tables
 \1f
 File: lispref.info,  Node: Introduction to Hash Tables,  Next: Working With Hash Tables,  Up: Hash Tables
 
-Introduction to Hash Tables
-===========================
+53.1 Introduction to Hash Tables
+================================
 
 A "hash table" is a data structure that provides mappings from
 arbitrary Lisp objects called "keys" to other arbitrary Lisp objects
@@ -3283,7 +4285,7 @@ syntax, for example:
 (without the `:' character), as well as the additional keyword `data',
 which specifies the initial hash table contents.
 
- - Function: make-hash-table &key `test' `size' `rehash-size'
+ -- Function: make-hash-table &key `test' `size' `rehash-size'
           `rehash-threshold' `weakness'
      This function returns a new empty hash table object.
 
@@ -3335,59 +4337,59 @@ which specifies the initial hash table contents.
      pointed to by something other than a weak hash table, even if the
      other is not.
 
- - Function: copy-hash-table hash-table
+ -- Function: copy-hash-table hash-table
      This function returns a new hash table which contains the same
      keys and values as HASH-TABLE.  The keys and values will not
      themselves be copied.
 
- - Function: hash-table-count hash-table
+ -- Function: hash-table-count hash-table
      This function returns the number of entries in HASH-TABLE.
 
- - Function: hash-table-test hash-table
+ -- Function: hash-table-test hash-table
      This function returns the test function of HASH-TABLE.  This can
      be one of `eq', `eql' or `equal'.
 
- - Function: hash-table-size hash-table
+ -- Function: hash-table-size hash-table
      This function returns the current number of slots in HASH-TABLE,
      whether occupied or not.
 
- - Function: hash-table-rehash-size hash-table
+ -- Function: hash-table-rehash-size hash-table
      This function returns the current rehash size of HASH-TABLE.  This
      is a float greater than 1.0; the factor by which HASH-TABLE is
      enlarged when the rehash threshold is exceeded.
 
- - Function: hash-table-rehash-threshold hash-table
+ -- Function: hash-table-rehash-threshold hash-table
      This function returns the current rehash threshold of HASH-TABLE.
      This is a float between 0.0 and 1.0; the maximum "load factor" of
      HASH-TABLE, beyond which the HASH-TABLE is enlarged by rehashing.
 
- - Function: hash-table-weakness hash-table
+ -- Function: hash-table-weakness hash-table
      This function returns the weakness of HASH-TABLE.  This can be one
      of `nil', `t', `key' or `value'.
 
 \1f
 File: lispref.info,  Node: Working With Hash Tables,  Next: Weak Hash Tables,  Prev: Introduction to Hash Tables,  Up: Hash Tables
 
-Working With Hash Tables
-========================
+53.2 Working With Hash Tables
+=============================
 
- - Function: puthash key value hash-table
+ -- Function: puthash key value hash-table
      This function hashes KEY to VALUE in HASH-TABLE.
 
- - Function: gethash key hash-table &optional default
+ -- Function: gethash key hash-table &optional default
      This function finds the hash value for KEY in HASH-TABLE.  If
      there is no entry for KEY in HASH-TABLE, DEFAULT is returned
      (which in turn defaults to `nil').
 
- - Function: remhash key hash-table
+ -- Function: remhash key hash-table
      This function removes the entry for KEY from HASH-TABLE.  Does
      nothing if there is no entry for KEY in HASH-TABLE.
 
- - Function: clrhash hash-table
+ -- Function: clrhash hash-table
      This function removes all entries from HASH-TABLE, leaving it
      empty.
 
- - Function: maphash function hash-table
+ -- Function: maphash function hash-table
      This function maps FUNCTION over entries in HASH-TABLE, calling it
      with two args, each key and value in the hash table.
 
@@ -3398,8 +4400,8 @@ Working With Hash Tables
 \1f
 File: lispref.info,  Node: Weak Hash Tables,  Prev: Working With Hash Tables,  Up: Hash Tables
 
-Weak Hash Tables
-================
+53.3 Weak Hash Tables
+=====================
 
 A "weak hash table" is a special variety of hash table whose elements
 do not count as GC referents.  For any key-value pair in such a hash
@@ -3446,8 +4448,8 @@ key-or-value-weak hash tables
 \1f
 File: lispref.info,  Node: Range Tables,  Next: Databases,  Prev: Hash Tables,  Up: Top
 
-Range Tables
-************
+54 Range Tables
+***************
 
 A range table is a table that efficiently associated values with ranges
 of integers.
@@ -3459,7 +4461,7 @@ of integers.
    This maps integers in the range (-3, 2) to `foo' and integers in the
 range (5, 20) to `bar'.
 
- - Function: range-table-p object
+ -- Function: range-table-p object
      Return non-`nil' if OBJECT is a range table.
 
 * Menu:
@@ -3471,13 +4473,13 @@ range (5, 20) to `bar'.
 \1f
 File: lispref.info,  Node: Introduction to Range Tables,  Next: Working With Range Tables,  Up: Range Tables
 
-Introduction to Range Tables
-============================
+54.1 Introduction to Range Tables
+=================================
 
- - Function: make-range-table
+ -- Function: make-range-table
      Make a new, empty range table.
 
- - Function: copy-range-table range-table
+ -- Function: copy-range-table range-table
      This function returns a new range table which contains the same
      values for the same ranges as RANGE-TABLE.  The values will not
      themselves be copied.
@@ -3485,26 +4487,26 @@ Introduction to Range Tables
 \1f
 File: lispref.info,  Node: Working With Range Tables,  Prev: Introduction to Range Tables,  Up: Range Tables
 
-Working With Range Tables
-=========================
+54.2 Working With Range Tables
+==============================
 
- - Function: get-range-table pos range-table &optional default
+ -- Function: get-range-table pos range-table &optional default
      This function finds value for position POS in RANGE-TABLE.  If
      there is no corresponding value, return DEFAULT (defaults to
      `nil').
 
- - Function: put-range-table start end value range-table
+ -- Function: put-range-table start end value range-table
      This function sets the value for range (START, END) to be VALUE in
      RANGE-TABLE.
 
- - Function: remove-range-table start end range-table
+ -- Function: remove-range-table start end range-table
      This function removes the value for range (START, END) in
      RANGE-TABLE.
 
- - Function: clear-range-table range-table
+ -- Function: clear-range-table range-table
      This function flushes RANGE-TABLE.
 
- - Function: map-range-table function range-table
+ -- Function: map-range-table function range-table
      This function maps FUNCTION over entries in RANGE-TABLE, calling
      it with three args, the beginning and end of the range and the
      corresponding value.
@@ -3512,10 +4514,10 @@ Working With Range Tables
 \1f
 File: lispref.info,  Node: Databases,  Next: Processes,  Prev: Range Tables,  Up: Top
 
-Databases
-*********
+55 Databases
+************
 
- - Function: databasep object
+ -- Function: databasep object
      This function returns non-`nil' if OBJECT is a database.
 
 * Menu:
@@ -3527,10 +4529,10 @@ Databases
 \1f
 File: lispref.info,  Node: Connecting to a Database,  Next: Working With a Database,  Up: Databases
 
-Connecting to a Database
-========================
+55.1 Connecting to a Database
+=============================
 
- - Function: open-database file &optional type subtype access mode
+ -- Function: open-database file &optional type subtype access mode
      This function opens database FILE, using database method TYPE and
      SUBTYPE, with access rights ACCESS and permissions MODE.  ACCESS
      can be any combination of `r' `w' and `+', for read, write, and
@@ -3547,59 +4549,59 @@ Connecting to a Database
      available:  `'hash', `'btree', and `'recno'.  See the manpages for
      the Berkeley DB functions for more information about these types.
 
- - Function: close-database database
+ -- Function: close-database database
      This function closes database DATABASE.
 
- - Function: database-live-p object
+ -- Function: database-live-p object
      This function returns `t' if OBJECT is an active database, else
      `nil'.
 
 \1f
 File: lispref.info,  Node: Working With a Database,  Next: Other Database Functions,  Prev: Connecting to a Database,  Up: Databases
 
-Working With a Database
-=======================
+55.2 Working With a Database
+============================
 
- - Function: get-database key database &optional default
+ -- Function: get-database key database &optional default
      This function finds the value for KEY in DATABASE.  If there is no
      corresponding value, DEFAULT is returned (`nil' if DEFAULT is
      omitted).
 
- - Function: map-database function database
+ -- Function: map-database function database
      This function maps FUNCTION over entries in DATABASE, calling it
      with two args, each key and value in the database.
 
- - Function: put-database key value database &optional replace
+ -- Function: put-database key value database &optional replace
      This function stores KEY and VALUE in DATABASE.  If optional
      fourth arg REPLACE is non-`nil', replace any existing entry in the
      database.
 
- - Function: remove-database key database
+ -- Function: remove-database key database
      This function removes KEY from DATABASE.
 
 \1f
 File: lispref.info,  Node: Other Database Functions,  Prev: Working With a Database,  Up: Databases
 
-Other Database Functions
-========================
+55.3 Other Database Functions
+=============================
 
- - Function: database-file-name database
+ -- Function: database-file-name database
      This function returns the filename associated with DATABASE.
 
- - Function: database-last-error &optional database
+ -- Function: database-last-error &optional database
      This function returns the last error associated with DATABASE.
 
- - Function: database-subtype database
+ -- Function: database-subtype database
      This function returns the subtype of DATABASE, if any.
 
- - Function: database-type database
+ -- Function: database-type database
      This function returns the type of DATABASE.
 
 \1f
 File: lispref.info,  Node: Processes,  Next: System Interface,  Prev: Databases,  Up: Top
 
-Processes
-*********
+56 Processes
+************
 
 In the terminology of operating systems, a "process" is a space in
 which a program can execute.  XEmacs runs in a process.  XEmacs Lisp
@@ -3618,7 +4620,7 @@ with the subprocess or to control it.  For example, you can send
 signals, obtain status information, receive output from the process, or
 send input to it.
 
- - Function: processp object
+ -- Function: processp object
      This function returns `t' if OBJECT is a process, `nil' otherwise.
 
 * Menu:
@@ -3642,8 +4644,8 @@ send input to it.
 \1f
 File: lispref.info,  Node: Subprocess Creation,  Next: Synchronous Processes,  Up: Processes
 
-Functions that Create Subprocesses
-==================================
+56.1 Functions that Create Subprocesses
+=======================================
 
 There are three functions that create a new subprocess in which to run
 a program.  One of them, `start-process', creates an asynchronous
@@ -3695,18 +4697,18 @@ directly using, for example, PROGRAM of `"sh"', and ARGS of `"-c"' and
 specify overrides for it with `process-environment'.  *Note System
 Environment::.
 
- - Variable: exec-directory
+ -- Variable: exec-directory
      The value of this variable is the name of a directory (a string)
      that contains programs that come with XEmacs, that are intended
      for XEmacs to invoke.  The program `wakeup' is an example of such
      a program; the `display-time' command uses it to get a reminder
      once per minute.
 
- - User Option: exec-path
+ -- User Option: exec-path
      The value of this variable is a list of directories to search for
      programs to run in subprocesses.  Each element is either the name
      of a directory (i.e., a string), or `nil', which stands for the
-     default directory (which is the value of `default-directory').
+     default directory (which is the value of `default-directory').  
 
      The value of `exec-path' is used by `call-process' and
      `start-process' when the PROGRAM argument is not an absolute file
@@ -3715,8 +4717,8 @@ Environment::.
 \1f
 File: lispref.info,  Node: Synchronous Processes,  Next: MS-DOS Subprocesses,  Prev: Subprocess Creation,  Up: Processes
 
-Creating a Synchronous Process
-==============================
+56.2 Creating a Synchronous Process
+===================================
 
 After a "synchronous process" is created, XEmacs waits for the process
 to terminate before continuing.  Starting Dired is an example of this:
@@ -3735,7 +4737,7 @@ and quits immediately.  *Note Quitting::.
    The synchronous subprocess functions returned `nil' in version 18.
 In version 19, they return an indication of how the process terminated.
 
- - Function: call-process program &optional infile destination display
+ -- Function: call-process program &optional infile destination display
           &rest args
      This function calls PROGRAM in a separate process and waits for it
      to finish.
@@ -3800,17 +4802,17 @@ In version 19, they return an indication of how the process terminated.
 
           (call-process "pwd" nil t)
                => nil
-          
+
           ---------- Buffer: foo ----------
           /usr/user/lewis/manual
           ---------- Buffer: foo ----------
-          
+
           (call-process "grep" nil "bar" nil "lewis" "/etc/passwd")
                => nil
-          
+
           ---------- Buffer: bar ----------
           lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh
-          
+
           ---------- Buffer: bar ----------
 
      The `insert-directory' function contains a good example of the use
@@ -3821,7 +4823,7 @@ In version 19, they return an indication of how the process terminated.
                             (concat (file-name-as-directory file) ".")
                           file))
 
- - Function: call-process-region start end program &optional deletep
+ -- Function: call-process-region start end program &optional deletep
           destination displayp &rest args
      This function sends the text between START to END as standard
      input to a process running PROGRAM.  It deletes the text sent if
@@ -3852,10 +4854,10 @@ In version 19, they return an indication of how the process terminated.
           ---------- Buffer: foo ----------
           input-!-
           ---------- Buffer: foo ----------
-          
+
           (call-process-region 1 6 "cat" nil t)
                => nil
-          
+
           ---------- Buffer: foo ----------
           inputinput-!-
           ---------- Buffer: foo ----------
@@ -3874,8 +4876,8 @@ In version 19, they return an indication of how the process terminated.
 \1f
 File: lispref.info,  Node: MS-DOS Subprocesses,  Next: Asynchronous Processes,  Prev: Synchronous Processes,  Up: Processes
 
-MS-DOS Subprocesses
-===================
+56.3 MS-DOS Subprocesses
+========================
 
 On MS-DOS, you must indicate whether the data going to and from a
 synchronous subprocess are text or binary.  Text data requires
@@ -3888,11 +4890,11 @@ subprocess, and `binary-process-output' applies to output received from
 it.  A non-`nil' value means the data is non-text; `nil' means the data
 is text, and calls for conversion.
 
- - Variable: binary-process-input
+ -- Variable: binary-process-input
      If this variable is `nil', convert newlines to CRLF sequences in
      the input to a synchronous subprocess.
 
- - Variable: binary-process-output
+ -- Variable: binary-process-output
      If this variable is `nil', convert CRLF sequences to newlines in
      the output from a synchronous subprocess.
 
@@ -3901,8 +4903,8 @@ is text, and calls for conversion.
 \1f
 File: lispref.info,  Node: Asynchronous Processes,  Next: Deleting Processes,  Prev: MS-DOS Subprocesses,  Up: Processes
 
-Creating an Asynchronous Process
-================================
+56.4 Creating an Asynchronous Process
+=====================================
 
 After an "asynchronous process" is created, Emacs and the Lisp program
 both continue running immediately.  The process may thereafter run in
@@ -3910,7 +4912,7 @@ parallel with Emacs, and the two may communicate with each other using
 the functions described in following sections.  Here we describe how to
 create an asynchronous process with `start-process'.
 
- - Function: start-process name buffer-or-name program &rest args
+ -- Function: start-process name buffer-or-name program &rest args
      This function creates a new asynchronous subprocess and starts the
      program PROGRAM running in it.  It returns a process object that
      stands for the new subprocess in Lisp.  The argument NAME
@@ -3933,28 +4935,28 @@ create an asynchronous process with `start-process'.
 
           (start-process "my-process" "foo" "sleep" "100")
                => #<process my-process>
-          
+
           (start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin")
                => #<process my-process<1>>
-          
+
           ---------- Buffer: foo ----------
           total 2
           lrwxrwxrwx  1 lewis     14 Jul 22 10:12 gnuemacs --> /emacs
           -rwxrwxrwx  1 lewis     19 Jul 30 21:02 lemon
-          
+
           Process my-process<1> finished
-          
+
           Process my-process finished
           ---------- Buffer: foo ----------
 
- - Function: start-process-shell-command name buffer-or-name command
+ -- Function: start-process-shell-command name buffer-or-name command
           &rest command-args
      This function is like `start-process' except that it uses a shell
      to execute the specified command.  The argument COMMAND is a shell
      command name, and COMMAND-ARGS are the arguments for the shell
      command.
 
- - Variable: process-connection-type
+ -- Variable: process-connection-type
      This variable controls the type of device used to communicate with
      asynchronous subprocesses.  If it is non-`nil', then PTYs are
      used, when available.  Otherwise, pipes are used.
@@ -3993,8 +4995,8 @@ associated with the current buffer.  *Note Process Information::.
 \1f
 File: lispref.info,  Node: Deleting Processes,  Next: Process Information,  Prev: Asynchronous Processes,  Up: Processes
 
-Deleting Processes
-==================
+56.5 Deleting Processes
+=======================
 
 "Deleting a process" disconnects XEmacs immediately from the
 subprocess, and removes it from the list of active processes.  It sends
@@ -4007,14 +5009,14 @@ deleted automatically after they terminate, but not necessarily right
 away.  If you delete a terminated process explicitly before it is
 deleted automatically, no harm results.
 
- - Variable: delete-exited-processes
+ -- Variable: delete-exited-processes
      This variable controls automatic deletion of processes that have
      terminated (due to calling `exit' or to a signal).  If it is
      `nil', then they continue to exist until the user runs
      `list-processes'.  Otherwise, they are deleted immediately after
      they exit.
 
- - Function: delete-process name
+ -- Function: delete-process name
      This function deletes the process associated with NAME, killing it
      with a `SIGHUP' signal.  The argument NAME may be a process, the
      name of a process, a buffer, or the name of a buffer.
@@ -4022,7 +5024,7 @@ deleted automatically, no harm results.
           (delete-process "*shell*")
                => nil
 
- - Function: process-kill-without-query process &optional
+ -- Function: process-kill-without-query process &optional
           require-query-p
      This function declares that XEmacs need not query the user if
      PROCESS is still running when XEmacs is exited.  The process will
@@ -4036,25 +5038,25 @@ deleted automatically, no harm results.
 \1f
 File: lispref.info,  Node: Process Information,  Next: Input to Processes,  Prev: Deleting Processes,  Up: Processes
 
-Process Information
-===================
+56.6 Process Information
+========================
 
 Several functions return information about processes.  `list-processes'
 is provided for interactive use.
 
- - Command: list-processes
+ -- Command: list-processes
      This command displays a listing of all living processes.  In
      addition, it finally deletes any process whose status was `Exited'
      or `Signaled'.  It returns `nil'.
 
- - Function: process-list
+ -- Function: process-list
      This function returns a list of all processes that have not been
      deleted.
 
           (process-list)
                => (#<process display-time> #<process shell>)
 
- - Function: get-process process-name
+ -- Function: get-process process-name
      This function returns the process named PROCESS-NAME.  If
      PROCESS-NAME is a string and there is no process with that name,
      the value is `nil'.  If PROCESS-NAME is actually a process, it is
@@ -4064,7 +5066,7 @@ is provided for interactive use.
           (get-process "shell")
                => #<process shell>
 
- - Function: process-command process
+ -- Function: process-command process
      This function returns the command that was executed to start
      PROCESS.  This is a list of strings, the first string being the
      program executed and the rest of the strings being the arguments
@@ -4073,17 +5075,17 @@ is provided for interactive use.
           (process-command (get-process "shell"))
                => ("/bin/csh" "-i")
 
- - Function: process-id process
+ -- Function: process-id process
      This function returns the PID of PROCESS.  This is an integer that
      distinguishes the process PROCESS from all other processes running
      on the same computer at the current time.  The PID of a process is
      chosen by the operating system kernel when the process is started
      and remains constant as long as the process exists.
 
- - Function: process-name process
+ -- Function: process-name process
      This function returns the name of PROCESS.
 
- - Function: process-status process
+ -- Function: process-status process
      This function returns the status of PROCESS as a symbol.  The
      argument PROCESS must be a process, a buffer, a process name
      (string) or a buffer name (string).
@@ -4129,18 +5131,18 @@ is provided for interactive use.
      In earlier Emacs versions (prior to version 19), the status of a
      network connection was `run' if open, and `exit' if closed.
 
- - Function: process-kill-without-query-p process
+ -- Function: process-kill-without-query-p process
      This function returns whether PROCESS will be killed without
      querying the user, if it is running when XEmacs is exited.  The
      default value is `nil'.
 
- - Function: process-exit-status process
+ -- Function: process-exit-status process
      This function returns the exit status of PROCESS or the signal
      number that killed it.  (Use the result of `process-status' to
      determine which of those it is.)  If PROCESS has not yet
      terminated, the value is 0.
 
- - Function: process-tty-name process
+ -- Function: process-tty-name process
      This function returns the terminal name that PROCESS is using for
      its communication with Emacs--or `nil' if it is using pipes
      instead of a terminal (see `process-connection-type' in *Note
@@ -4149,8 +5151,8 @@ is provided for interactive use.
 \1f
 File: lispref.info,  Node: Input to Processes,  Next: Signals to Processes,  Prev: Process Information,  Up: Processes
 
-Sending Input to Processes
-==========================
+56.7 Sending Input to Processes
+===============================
 
 Asynchronous subprocesses receive input when it is sent to them by
 XEmacs, which is done with the functions in this section.  You must
@@ -4163,7 +5165,7 @@ characters added amidst the other characters, to force the operating
 system to periodically drain the input buffer.  For most programs,
 these EOFs do no harm.
 
- - Function: process-send-string process string &optional start end
+ -- Function: process-send-string process string &optional start end
      This function sends PROCESS the contents of STRING as standard
      input.
 
@@ -4179,8 +5181,8 @@ these EOFs do no harm.
 
           (process-send-string "shell<1>" "ls\n")
                => nil
-          
-          
+
+
           ---------- Buffer: *shell* ----------
           ...
           introduction.texi               syntax-tables.texi~
@@ -4189,7 +5191,7 @@ these EOFs do no harm.
           ...
           ---------- Buffer: *shell* ----------
 
- - Function: process-send-region process start end &optional buffer
+ -- Function: process-send-region process start end &optional buffer
      This function sends the text in the region defined by START and
      END as standard input to PROCESS.
 
@@ -4202,7 +5204,7 @@ these EOFs do no harm.
      markers that indicate positions in the current buffer.  (It is
      unimportant which number is larger.)
 
- - Function: process-send-eof &optional process
+ -- Function: process-send-eof &optional process
      This function makes PROCESS see an end-of-file in its input.  The
      EOF comes after any text already sent to it.
 
@@ -4218,8 +5220,8 @@ these EOFs do no harm.
 \1f
 File: lispref.info,  Node: Signals to Processes,  Next: Output from Processes,  Prev: Input to Processes,  Up: Processes
 
-Sending Signals to Processes
-============================
+56.8 Sending Signals to Processes
+=================================
 
 "Sending a signal" to a subprocess is a way of interrupting its
 activities.  There are several different signals, each with its own
@@ -4271,12 +5273,12 @@ job-control shells won't work when a pipe is used.  See
 a signal to be sent.  It must be either an integer or a symbol which
 names the signal, like `SIGSEGV'.
 
- - Function: process-send-signal signal &optional process current-group
+ -- Function: process-send-signal signal &optional process current-group
      This function sends the signal SIGNAL to the process PROCESS.  The
      following functions can be implemented in terms of
      `process-send-signal'.
 
- - Function: interrupt-process &optional process current-group
+ -- Function: interrupt-process &optional process current-group
      This function interrupts the process PROCESS by sending the signal
      `SIGINT'.  Outside of XEmacs, typing the "interrupt character"
      (normally `C-c') sends this signal.  When the argument
@@ -4284,17 +5286,17 @@ names the signal, like `SIGSEGV'.
      "typing `C-c'" on the terminal by which XEmacs talks to the
      subprocess.
 
- - Function: kill-process &optional process current-group
+ -- Function: kill-process &optional process current-group
      This function kills the process PROCESS by sending the signal
      `SIGKILL'.  This signal kills the subprocess immediately, and
      cannot be handled by the subprocess.
 
- - Function: quit-process &optional process current-group
+ -- Function: quit-process &optional process current-group
      This function sends the signal `SIGQUIT' to the process PROCESS.
      This signal is the one sent by the "quit character" (usually
      `C-\') when you are not inside XEmacs.
 
- - Function: stop-process &optional process current-group
+ -- Function: stop-process &optional process current-group
      This function stops the process PROCESS by sending the signal
      `SIGTSTP'.  Use `continue-process' to resume its execution.
 
@@ -4303,12 +5305,12 @@ names the signal, like `SIGSEGV'.
      non-`nil', you can think of this function as "typing `C-z'" on the
      terminal XEmacs uses to communicate with the subprocess.
 
- - Function: continue-process &optional process current-group
+ -- Function: continue-process &optional process current-group
      This function resumes execution of the process PROCESS by sending
      it the signal `SIGCONT'.  This presumes that PROCESS was stopped
      previously.
 
- - Command: signal-process pid signal
+ -- Command: signal-process pid signal
      This function sends a signal to the process with process id PID,
      which need not be a child of XEmacs.  The argument SIGNAL
      specifies which signal to send.
@@ -4316,8 +5318,8 @@ names the signal, like `SIGSEGV'.
 \1f
 File: lispref.info,  Node: Output from Processes,  Next: Sentinels,  Prev: Signals to Processes,  Up: Processes
 
-Receiving Output from Processes
-===============================
+56.9 Receiving Output from Processes
+====================================
 
 There are two ways to receive the output that a subprocess writes to
 its standard output stream.  The output can be inserted in a buffer,
@@ -4336,8 +5338,8 @@ discarded.
 \1f
 File: lispref.info,  Node: Process Buffers,  Next: Filter Functions,  Up: Output from Processes
 
-Process Buffers
----------------
+56.9.1 Process Buffers
+----------------------
 
 A process can (and usually does) have an "associated buffer", which is
 an ordinary Emacs buffer that is used for two purposes: storing the
@@ -4353,13 +5355,13 @@ the output is determined by the `process-mark', which is then updated
 to point to the end of the text just inserted.  Usually, but not
 always, the `process-mark' is at the end of the buffer.
 
- - Function: process-buffer process
+ -- Function: process-buffer process
      This function returns the associated buffer of the process PROCESS.
 
           (process-buffer (get-process "shell"))
                => #<buffer *shell*>
 
- - Function: process-mark process
+ -- Function: process-mark process
      This function returns the process marker for PROCESS, which is the
      marker that says where to insert output from the process.
 
@@ -4380,11 +5382,11 @@ always, the `process-mark' is at the end of the buffer.
      transmission to the process, the process marker is useful for
      distinguishing the new input from previous output.
 
- - Function: set-process-buffer process buffer
+ -- Function: set-process-buffer process buffer
      This function sets the buffer associated with PROCESS to BUFFER.
      If BUFFER is `nil', the process becomes associated with no buffer.
 
- - Function: get-buffer-process buffer-or-name
+ -- Function: get-buffer-process buffer-or-name
      This function returns the process associated with BUFFER-OR-NAME.
      If there are several processes associated with BUFFER-OR-NAME,
      then one is chosen.  (Presently, the one chosen is the one most
@@ -4400,8 +5402,8 @@ always, the `process-mark' is at the end of the buffer.
 \1f
 File: lispref.info,  Node: Filter Functions,  Next: Accepting Output,  Prev: Process Buffers,  Up: Output from Processes
 
-Process Filter Functions
-------------------------
+56.9.2 Process Filter Functions
+-------------------------------
 
 A process "filter function" is a function that receives the standard
 output from the associated process.  If a process has a filter, then
@@ -4485,7 +5487,7 @@ insert into a dead buffer, it will get an error.  If the buffer is dead,
 that produces the same output twice in a row may send it as one batch
 of 200 characters one time, and five batches of 40 characters the next.
 
- - Function: set-process-filter process filter
+ -- Function: set-process-filter process filter
      This function gives PROCESS the filter function FILTER.  If FILTER
      is `nil', then the process will have no filter.  If FILTER is `t',
      then no output from the process will be accepted until the filter
@@ -4493,7 +5495,7 @@ of 200 characters one time, and five batches of 40 characters the next.
      but is queued, and will be processed as soon as the filter is
      changed.)
 
- - Function: process-filter process
+ -- Function: process-filter process
      This function returns the filter function of PROCESS, or `nil' if
      it has none.  `t' means that output processing has been stopped.
 
@@ -4522,8 +5524,8 @@ of 200 characters one time, and five batches of 40 characters the next.
 \1f
 File: lispref.info,  Node: Accepting Output,  Prev: Filter Functions,  Up: Output from Processes
 
-Accepting Output from Processes
--------------------------------
+56.9.3 Accepting Output from Processes
+--------------------------------------
 
 Output from asynchronous subprocesses normally arrives only while
 XEmacs is waiting for some sort of external event, such as elapsed time
@@ -4531,7 +5533,7 @@ or terminal input.  Occasionally it is useful in a Lisp program to
 explicitly permit output to arrive at a specific point, or even to wait
 until output arrives from a process.
 
- - Function: accept-process-output &optional process seconds millisec
+ -- Function: accept-process-output &optional process seconds millisec
      This function allows XEmacs to read pending output from processes.
      The output is inserted in the associated buffers or given to
      their filter functions.  If PROCESS is non-`nil' then this
@@ -4554,8 +5556,8 @@ until output arrives from a process.
 \1f
 File: lispref.info,  Node: Sentinels,  Next: Process Window Size,  Prev: Output from Processes,  Up: Processes
 
-Sentinels: Detecting Process Status Changes
-===========================================
+56.10 Sentinels: Detecting Process Status Changes
+=================================================
 
 A "process sentinel" is a function that is called whenever the
 associated process changes status for any reason, including signals
@@ -4605,7 +5607,7 @@ or matching had to explicitly save and restore the match data.  Now
 Emacs does this automatically; sentinels never need to do it explicitly.
 *Note Match Data::.
 
- - Function: set-process-sentinel process sentinel
+ -- Function: set-process-sentinel process sentinel
      This function associates SENTINEL with PROCESS.  If SENTINEL is
      `nil', then the process will have no sentinel.  The default
      behavior when there is no sentinel is to insert a message in the
@@ -4620,11 +5622,11 @@ Emacs does this automatically; sentinels never need to do it explicitly.
                -| Process: #<process shell> had the event `killed'
                => #<process shell>
 
- - Function: process-sentinel process
+ -- Function: process-sentinel process
      This function returns the sentinel of PROCESS, or `nil' if it has
      none.
 
- - Function: waiting-for-user-input-p
+ -- Function: waiting-for-user-input-p
      While a sentinel or filter function is running, this function
      returns non-`nil' if XEmacs was waiting for keyboard input from
      the user at the time the sentinel or filter function was called,
@@ -4633,32 +5635,32 @@ Emacs does this automatically; sentinels never need to do it explicitly.
 \1f
 File: lispref.info,  Node: Process Window Size,  Next: Transaction Queues,  Prev: Sentinels,  Up: Processes
 
-Process Window Size
-===================
+56.11 Process Window Size
+=========================
 
- - Function: set-process-window-size process height width
+ -- Function: set-process-window-size process height width
      This function tells PROCESS that its logical window size is HEIGHT
      by WIDTH characters.  This is principally useful with pty's.
 
 \1f
 File: lispref.info,  Node: Transaction Queues,  Next: Network,  Prev: Process Window Size,  Up: Processes
 
-Transaction Queues
-==================
+56.12 Transaction Queues
+========================
 
 You can use a "transaction queue" for more convenient communication
 with subprocesses using transactions.  First use `tq-create' to create
 a transaction queue communicating with a specified process.  Then you
 can call `tq-enqueue' to send a transaction.
 
- - Function: tq-create process
+ -- Function: tq-create process
      This function creates and returns a transaction queue
      communicating with PROCESS.  The argument PROCESS should be a
      subprocess capable of sending and receiving streams of bytes.  It
      may be a child process, or it may be a TCP connection to a server,
      possibly on another machine.
 
- - Function: tq-enqueue queue question regexp closure fn
+ -- Function: tq-enqueue queue question regexp closure fn
      This function sends a transaction to queue QUEUE.  Specifying the
      queue has the effect of specifying the subprocess to talk to.
 
@@ -4673,7 +5675,7 @@ can call `tq-enqueue' to send a transaction.
 
      The return value of `tq-enqueue' itself is not meaningful.
 
- - Function: tq-close queue
+ -- Function: tq-close queue
      Shut down transaction queue QUEUE, waiting for all pending
      transactions to complete, and then terminate the connection or
      child process.
@@ -4684,8 +5686,8 @@ can call `tq-enqueue' to send a transaction.
 \1f
 File: lispref.info,  Node: Network,  Prev: Transaction Queues,  Up: Processes
 
-Network Connections
-===================
+56.13 Network Connections
+=========================
 
 XEmacs Lisp programs can open TCP network connections to other
 processes on the same machine or other machines.  A network connection
@@ -4702,7 +5704,7 @@ function.  It always returns either `open' or `closed' for a network
 connection, and it never returns either of those values for a real
 subprocess.  *Note Process Information::.
 
- - Function: open-network-stream name buffer-or-name host service
+ -- Function: open-network-stream name buffer-or-name host service
           &optional protocol
      This function opens a TCP connection for a service to a host.  It
      returns a process object to represent the connection.
@@ -4739,8 +5741,8 @@ subprocess.  *Note Process Information::.
 \1f
 File: lispref.info,  Node: System Interface,  Next: X-Windows,  Prev: Processes,  Up: Top
 
-Operating System Interface
-**************************
+57 Operating System Interface
+*****************************
 
 This chapter is about starting and getting out of Emacs, access to
 values in the operating system environment, and terminal input, output,
@@ -4768,8 +5770,8 @@ pertaining to the terminal and the screen.
 \1f
 File: lispref.info,  Node: Starting Up,  Next: Getting Out,  Up: System Interface
 
-Starting Up XEmacs
-==================
+57.1 Starting Up XEmacs
+=======================
 
 This section describes what XEmacs does when it is started, and how you
 can customize these actions.
@@ -4785,8 +5787,8 @@ can customize these actions.
 \1f
 File: lispref.info,  Node: Start-up Summary,  Next: Init File,  Up: Starting Up
 
-Summary: Sequence of Actions at Start Up
-----------------------------------------
+57.1.1 Summary: Sequence of Actions at Start Up
+-----------------------------------------------
 
 The order of operations performed (in `startup.el') by XEmacs when it
 is started up is as follows:
@@ -4804,7 +5806,7 @@ is started up is as follows:
 
   5. It loads the library `site-start', unless the option
      `-no-site-file' was specified.  The library's file name is usually
-     `site-start.el'.
+     `site-start.el'.  
 
   6. It loads the file `~/.emacs' unless `-q' was specified on the
      command line.  (This is not done in `-batch' mode.)  The `-u'
@@ -4814,7 +5816,7 @@ is started up is as follows:
   7. It loads the library `default' unless `inhibit-default-init' is
      non-`nil'.  (This is not done in `-batch' mode or if `-q' was
      specified on the command line.)  The library's file name is
-     usually `default.el'.
+     usually `default.el'.  
 
   8. It runs the normal hook `after-init-hook'.
 
@@ -4842,7 +5844,7 @@ is started up is as follows:
      provided there were no remaining command line arguments (a few
      steps above) and the value of `inhibit-startup-message' is `nil'.
 
- - User Option: inhibit-startup-message
+ -- User Option: inhibit-startup-message
      This variable inhibits the initial startup messages (the
      nonwarranty, etc.).  If it is non-`nil', then the messages are not
      printed.
@@ -4853,7 +5855,7 @@ is started up is as follows:
      way that affects more than one user, because that would prevent
      new users from receiving the information they are supposed to see.
 
- - User Option: inhibit-startup-echo-area-message
+ -- User Option: inhibit-startup-echo-area-message
      This variable controls the display of the startup echo area
      message.  You can suppress the startup echo area message by adding
      text with this form to your `.emacs' file:
@@ -4874,8 +5876,8 @@ is started up is as follows:
 \1f
 File: lispref.info,  Node: Init File,  Next: Terminal-Specific,  Prev: Start-up Summary,  Up: Starting Up
 
-The Init File: `.emacs'
------------------------
+57.1.2 The Init File: `.emacs'
+------------------------------
 
 When you start XEmacs, it normally attempts to load the file `.emacs'
 from your home directory.  This file, if it exists, must contain Lisp
@@ -4898,7 +5900,7 @@ not subsequently load the `default.el' file.
 this _before_ the user's init file.  You can inhibit the loading of
 this file with the option `-no-site-file'.
 
- - Variable: site-run-file
+ -- Variable: site-run-file
      This variable specifies the site-customization file to load before
      the user's init file.  Its normal value is `"site-start"'.
 
@@ -4911,14 +5913,14 @@ using `load' (*note Loading::).
 of how to make various commonly desired customizations in your `.emacs'
 file.
 
- - User Option: inhibit-default-init
+ -- User Option: inhibit-default-init
      This variable prevents XEmacs from loading the default
      initialization library file for your session of XEmacs.  If its
      value is non-`nil', then the default library is not loaded.  The
      default value is `nil'.
 
- - Variable: before-init-hook
- - Variable: after-init-hook
+ -- Variable: before-init-hook
+ -- Variable: after-init-hook
      These two normal hooks are run just before, and just after,
      loading of the user's init file, `default.el', and/or
      `site-start.el'.
@@ -4926,8 +5928,8 @@ file.
 \1f
 File: lispref.info,  Node: Terminal-Specific,  Next: Command Line Arguments,  Prev: Init File,  Up: Starting Up
 
-Terminal-Specific Initialization
---------------------------------
+57.1.3 Terminal-Specific Initialization
+---------------------------------------
 
 Each terminal type can have its own Lisp library that XEmacs loads when
 run on that type of terminal.  For a terminal type named TERMTYPE, the
@@ -4966,7 +5968,7 @@ terminal-specific libraries.  You can use this variable to define
 initializations for terminals that do not have their own libraries.
 *Note Hooks::.
 
- - Variable: term-file-prefix
+ -- Variable: term-file-prefix
      If the `term-file-prefix' variable is non-`nil', XEmacs loads a
      terminal-specific initialization file as follows:
 
@@ -4977,7 +5979,7 @@ initializations for terminals that do not have their own libraries.
      terminal-initialization file.  To do this, put the following in
      your `.emacs' file: `(setq term-file-prefix nil)'.
 
- - Variable: term-setup-hook
+ -- Variable: term-setup-hook
      This variable is a normal hook that XEmacs runs after loading your
      `.emacs' file, the default initialization file (if any) and the
      terminal-specific Lisp file.
@@ -4985,7 +5987,7 @@ initializations for terminals that do not have their own libraries.
      You can use `term-setup-hook' to override the definitions made by a
      terminal-specific file.
 
- - Variable: window-setup-hook
+ -- Variable: window-setup-hook
      This variable is a normal hook which XEmacs runs after loading your
      `.emacs' file and the default initialization file (if any), after
      loading terminal-specific Lisp code, and after running the hook
@@ -4994,8 +5996,8 @@ initializations for terminals that do not have their own libraries.
 \1f
 File: lispref.info,  Node: Command Line Arguments,  Prev: Terminal-Specific,  Up: Starting Up
 
-Command Line Arguments
-----------------------
+57.1.4 Command Line Arguments
+-----------------------------
 
 You can use command line arguments to request various actions when you
 start XEmacs.  Since you do not need to start XEmacs more than once per
@@ -5010,12 +6012,12 @@ specific Lisp programs.
    This section describes how Emacs processes command line arguments,
 and how you can customize them.
 
- - Function: command-line
+ -- Function: command-line
      This function parses the command line that XEmacs was called with,
      processes it, loads the user's `.emacs' file and displays the
      startup messages.
 
- - Variable: command-line-processed
+ -- Variable: command-line-processed
      The value of this variable is `t' once the command line has been
      processed.
 
@@ -5023,7 +6025,7 @@ and how you can customize them.
      this variable to `nil' first in order to cause the new dumped
      XEmacs to process its new command line arguments.
 
- - Variable: command-switch-alist
+ -- Variable: command-switch-alist
      The value of this variable is an alist of user-defined command-line
      options and associated handler functions.  This variable exists so
      you can add elements to it.
@@ -5050,11 +6052,11 @@ and how you can customize them.
      function in the `startup.el' file.  See also *Note Command Line
      Switches and Arguments: (xemacs)Command Switches.
 
- - Variable: command-line-args
+ -- Variable: command-line-args
      The value of this variable is the list of command line arguments
      passed to XEmacs.
 
- - Variable: command-line-functions
+ -- Variable: command-line-functions
      This variable's value is a list of functions for handling an
      unrecognized command-line argument.  Each time the next argument
      to be processed has no special meaning, the functions in this list
@@ -5078,8 +6080,8 @@ and how you can customize them.
 \1f
 File: lispref.info,  Node: Getting Out,  Next: System Environment,  Prev: Starting Up,  Up: System Interface
 
-Getting out of XEmacs
-=====================
+57.2 Getting out of XEmacs
+==========================
 
 There are two ways to get out of XEmacs: you can kill the XEmacs job,
 which exits permanently, or you can suspend it, which permits you to
@@ -5095,14 +6097,14 @@ more common.
 \1f
 File: lispref.info,  Node: Killing XEmacs,  Next: Suspending XEmacs,  Up: Getting Out
 
-Killing XEmacs
---------------
+57.2.1 Killing XEmacs
+---------------------
 
 Killing XEmacs means ending the execution of the XEmacs process.  The
 parent process normally resumes control.  The low-level primitive for
 killing XEmacs is `kill-emacs'.
 
- - Command: kill-emacs &optional exit-data
+ -- Command: kill-emacs &optional exit-data
      This function exits the XEmacs process and kills it.
 
      If EXIT-DATA is an integer, then it is used as the exit status of
@@ -5120,14 +6122,14 @@ before actually terminating if you have buffers that need saving or
 subprocesses that are running.  This is done in the function
 `save-buffers-kill-emacs'.
 
- - Variable: kill-emacs-query-functions
+ -- Variable: kill-emacs-query-functions
      After asking the standard questions, `save-buffers-kill-emacs'
      calls the functions in the list `kill-buffer-query-functions', in
      order of appearance, with no arguments.  These functions can ask
      for additional confirmation from the user.  If any of them returns
      non-`nil', XEmacs is not killed.
 
- - Variable: kill-emacs-hook
+ -- Variable: kill-emacs-hook
      This variable is a normal hook; once `save-buffers-kill-emacs' is
      finished with all file saving and confirmation, it runs the
      functions in this hook.
@@ -5135,8 +6137,8 @@ subprocesses that are running.  This is done in the function
 \1f
 File: lispref.info,  Node: Suspending XEmacs,  Prev: Killing XEmacs,  Up: Getting Out
 
-Suspending XEmacs
------------------
+57.2.2 Suspending XEmacs
+------------------------
 
 "Suspending XEmacs" means stopping XEmacs temporarily and returning
 control to its superior process, which is usually the shell.  This
@@ -5156,7 +6158,7 @@ case you can give input to some other job such as a shell merely by
 moving to a different window.  Therefore, suspending is not allowed
 when XEmacs is an X client.
 
- - Command: suspend-emacs &optional stuffstring
+ -- Command: suspend-emacs &optional stuffstring
      This function stops XEmacs and returns control to the superior
      process.  If and when the superior process resumes XEmacs,
      `suspend-emacs' returns `nil' to its caller in Lisp.
@@ -5184,7 +6186,7 @@ when XEmacs is an X client.
 
           (suspend-emacs)
                => nil
-          
+
           (add-hook 'suspend-hook
                     (function (lambda ()
                                 (or (y-or-n-p
@@ -5201,31 +6203,31 @@ when XEmacs is an X client.
           ---------- Buffer: Minibuffer ----------
           Really suspend? y
           ---------- Buffer: Minibuffer ----------
-          
+
           ---------- Parent Shell ----------
           lewis@slug[23] % /user/lewis/manual
           lewis@slug[24] % fg
-          
+
           ---------- Echo Area ----------
           Resumed!
 
- - Variable: suspend-hook
+ -- Variable: suspend-hook
      This variable is a normal hook run before suspending.
 
- - Variable: suspend-resume-hook
+ -- Variable: suspend-resume-hook
      This variable is a normal hook run after suspending.
 
 \1f
 File: lispref.info,  Node: System Environment,  Next: User Identification,  Prev: Getting Out,  Up: System Interface
 
-Operating System Environment
-============================
+57.3 Operating System Environment
+=================================
 
 XEmacs provides access to variables in the operating system environment
 through various functions.  These variables include the name of the
 system, the user's UID, and so on.
 
- - Variable: system-type
+ -- Variable: system-type
      The value of this variable is a symbol indicating the type of
      operating system XEmacs is operating on.  Here is a table of the
      possible values:
@@ -5278,12 +6280,12 @@ system, the user's UID, and so on.
      `system-configuration' to distinguish between different operating
      systems.
 
- - Variable: system-configuration
+ -- Variable: system-configuration
      This variable holds the three-part configuration name for the
      hardware/software configuration of your system, as a string.  The
      convenient way to test parts of this string is with `string-match'.
 
- - Function: system-name
+ -- Function: system-name
      This function returns the name of the machine you are running on.
           (system-name)
                => "prep.ai.mit.edu"
@@ -5294,7 +6296,7 @@ currently holds.  Thus, you can set the variable `system-name' in case
 Emacs is confused about the name of your system.  The variable is also
 useful for constructing frame titles (*note Frame Titles::).
 
- - Variable: mail-host-address
+ -- Variable: mail-host-address
      If this variable is non-`nil', it is used instead of `system-name'
      for purposes of generating email addresses.  For example, it is
      used when constructing the default value of `user-mail-address'.
@@ -5302,7 +6304,7 @@ useful for constructing frame titles (*note Frame Titles::).
      starts up, the value actually used is the one saved when XEmacs
      was dumped.  *Note Building XEmacs::.)
 
- - Command: getenv var &optional interactivep
+ -- Command: getenv var &optional interactivep
      This function returns the value of the environment variable VAR,
      as a string.  Within XEmacs, the environment variable values are
      kept in the Lisp variable `process-environment'.
@@ -5312,7 +6314,7 @@ useful for constructing frame titles (*note Frame Titles::).
 
           (getenv "USER")
                => "lewis"
-          
+
           lewis@slug[10] % printenv
           PATH=.:/user/lewis/bin:/usr/bin:/usr/local/bin
           USER=lewis
@@ -5320,13 +6322,13 @@ useful for constructing frame titles (*note Frame Titles::).
           SHELL=/bin/csh
           HOME=/user/lewis
 
- - Command: setenv variable &optional value unset
+ -- Command: setenv variable &optional value unset
      This command sets the value of the environment variable named
      VARIABLE to VALUE.  Both arguments should be strings.  This
      function works by modifying `process-environment'; binding that
      variable with `let' is also reasonable practice.
 
- - Variable: process-environment
+ -- Variable: process-environment
      This variable is a list of strings, each describing one environment
      variable.  The functions `getenv' and `setenv' work by
      manipulating this variable.
@@ -5339,30 +6341,30 @@ useful for constructing frame titles (*note Frame Titles::).
               "SHELL=/bin/csh"
               "HOME=/user/lewis")
 
- - Variable: path-separator
+ -- Variable: path-separator
      This variable holds a string which says which character separates
      directories in a search path (as found in an environment
      variable).  Its value is `":"' for Unix and GNU systems, and `";"'
      for MS-DOS and Windows NT.
 
- - Variable: invocation-name
+ -- Variable: invocation-name
      This variable holds the program name under which Emacs was
      invoked.  The value is a string, and does not include a directory
      name.
 
- - Variable: invocation-directory
+ -- Variable: invocation-directory
      This variable holds the directory from which the Emacs executable
      was invoked, or perhaps `nil' if that directory cannot be
      determined.
 
- - Variable: installation-directory
+ -- Variable: installation-directory
      If non-`nil', this is a directory within which to look for the
      `lib-src' and `etc' subdirectories.  This is non-`nil' when Emacs
      can't find those directories in their standard installed
      locations, but can find them in a directory related somehow to the
      one containing the Emacs executable.
 
- - Function: load-average &optional use-floats
+ -- Function: load-average &optional use-floats
      This function returns a list of the current 1-minute, 5-minute and
      15-minute load averages.  The values are integers that are 100
      times the system load averages.  (The load averages indicate the
@@ -5375,7 +6377,7 @@ useful for constructing frame titles (*note Frame Titles::).
                => (169 158 164)
           (load-average t)
                => (1.69921875 1.58984375 1.640625)
-          
+
           lewis@rocky[5] % uptime
             8:06pm  up 16 day(s), 21:57,  40 users,
            load average: 1.68, 1.59, 1.64
@@ -5388,22 +6390,22 @@ useful for constructing frame titles (*note Frame Titles::).
      run, or it may be unimplemented for the particular system type.
      In that case, the function will signal an error.
 
- - Function: emacs-pid
+ -- Function: emacs-pid
      This function returns the process ID of the Emacs process.
 
 \1f
 File: lispref.info,  Node: User Identification,  Next: Time of Day,  Prev: System Environment,  Up: System Interface
 
-User Identification
-===================
+57.4 User Identification
+========================
 
- - Variable: user-mail-address
+ -- Variable: user-mail-address
      This holds the nominal email address of the user who is using
      Emacs.  When Emacs starts up, it computes a default value that is
      usually right, but users often set this themselves when the
      default value is not right.
 
- - Function: user-login-name &optional uid
+ -- Function: user-login-name &optional uid
      If you don't specify UID, this function returns the name under
      which the user is logged in.  If the environment variable `LOGNAME'
      is set, that value is used.  Otherwise, if the environment variable
@@ -5416,18 +6418,18 @@ User Identification
           (user-login-name)
                => "lewis"
 
- - Function: user-real-login-name
+ -- Function: user-real-login-name
      This function returns the user name corresponding to Emacs's real
      UID.  This ignores the effective UID and ignores the environment
      variables `LOGNAME' and `USER'.
 
- - Variable: user-full-name
+ -- Variable: user-full-name
      This variable holds the name of the user running this Emacs.  It is
      initialized at startup time from the value of `NAME' environment
      variable.  You can change the value of this variable to alter the
      result of the `user-full-name' function.
 
- - Function: user-full-name &optional user
+ -- Function: user-full-name &optional user
      This function returns the full name of USER.  If USER is `nil', it
      defaults to the user running this Emacs.  In that case, the value
      of `user-full-name' variable, if non-`nil', will be used.
@@ -5450,16 +6452,16 @@ you to "fake out" Emacs by telling the functions what to return.  The
 variables are also useful for constructing frame titles (*note Frame
 Titles::).
 
- - Function: user-real-uid
+ -- Function: user-real-uid
      This function returns the real UID of the user.
 
           (user-real-uid)
                => 19
 
- - Function: user-uid
+ -- Function: user-uid
      This function returns the effective UID of the user.
 
- - Function: user-home-directory
+ -- Function: user-home-directory
      This function returns the "`HOME'" directory of the user, and is
      intended to replace occurrences of "`(getenv "HOME")'".  Under
      Unix systems, the following is done:
@@ -5485,13 +6487,13 @@ Titles::).
 \1f
 File: lispref.info,  Node: Time of Day,  Next: Time Conversion,  Prev: User Identification,  Up: System Interface
 
-Time of Day
-===========
+57.5 Time of Day
+================
 
 This section explains how to determine the current time and the time
 zone.
 
- - Function: current-time-string &optional time-value
+ -- Function: current-time-string &optional time-value
      This function returns the current time and date as a
      humanly-readable string.  The format of the string is unvarying;
      the number of characters used for each part is always the same, so
@@ -5509,7 +6511,7 @@ zone.
           (current-time-string)
                => "Wed Oct 14 22:21:05 1987"
 
- - Function: current-time
+ -- Function: current-time
      This function returns the system's time value as a list of three
      integers: `(HIGH LOW MICROSEC)'.  The integers HIGH and LOW
      combine to give the number of seconds since 0:00 January 1, 1970,
@@ -5523,7 +6525,7 @@ zone.
      as you get with the function `file-attributes'.  *Note File
      Attributes::.
 
- - Function: current-time-zone &optional time-value
+ -- Function: current-time-zone &optional time-value
      This function returns a list describing the time zone that the
      user is in.
 
@@ -5548,8 +6550,8 @@ zone.
 \1f
 File: lispref.info,  Node: Time Conversion,  Next: Timers,  Prev: Time of Day,  Up: System Interface
 
-Time Conversion
-===============
+57.6 Time Conversion
+====================
 
 These functions convert time values (lists of two or three integers) to
 strings or to calendrical information.  There is also a function to
@@ -5557,7 +6559,7 @@ convert calendrical information to a time value.  You can get time
 values from the functions `current-time' (*note Time of Day::) and
 `file-attributes' (*note File Attributes::).
 
- - Function: format-time-string format-string &optional time
+ -- Function: format-time-string format-string &optional time
      This function converts TIME to a string according to
      FORMAT-STRING.  If TIME is omitted, it defaults to the current
      time.  The argument FORMAT-STRING may contain `%'-sequences which
@@ -5666,7 +6668,7 @@ values from the functions `current-time' (*note Time of Day::) and
     `%Z'
           This stands for the time zone abbreviation.
 
- - Function: decode-time &optional specified-time
+ -- Function: decode-time &optional specified-time
      This function converts a time value into calendrical information.
      The optional SPECIFIED-TIME should be a list of (HIGH LOW .
      IGNORED) or (HIGH . LOW), as from `current-time' and
@@ -5711,7 +6713,7 @@ values from the functions `current-time' (*note Time of Day::) and
 
      Note that Common Lisp has different meanings for DOW and ZONE.
 
- - Function: encode-time seconds minutes hour day month year &optional
+ -- Function: encode-time seconds minutes hour day month year &optional
           zone
      This function is the inverse of `decode-time'.  It converts seven
      items of calendrical data into a time value.  For the meanings of
@@ -5730,12 +6732,12 @@ values from the functions `current-time' (*note Time of Day::) and
 \1f
 File: lispref.info,  Node: Timers,  Next: Terminal Input,  Prev: Time Conversion,  Up: System Interface
 
-Timers for Delayed Execution
-============================
+57.7 Timers for Delayed Execution
+=================================
 
 You can set up a timer to call a function at a specified future time.
 
- - Function: add-timeout secs function object &optional resignal
+ -- Function: add-timeout secs function object &optional resignal
      This function adds a timeout, to be signaled after the timeout
      period has elapsed.  SECS is a number of seconds, expressed as an
      integer or a float.  FUNCTION will be called after that many
@@ -5767,7 +6769,7 @@ You can set up a timer to call a function at a specified future time.
      (NOTE: In FSF Emacs, this function is called `run-at-time' and has
      different semantics.)
 
- - Function: disable-timeout id
+ -- Function: disable-timeout id
      Cancel the requested action for ID, which should be a value
      previously returned by `add-timeout'.  This cancels the effect of
      that call to `add-timeout'; the arrival of the specified time will
@@ -5777,8 +6779,8 @@ You can set up a timer to call a function at a specified future time.
 \1f
 File: lispref.info,  Node: Terminal Input,  Next: Terminal Output,  Prev: Timers,  Up: System Interface
 
-Terminal Input
-==============
+57.8 Terminal Input
+===================
 
 This section describes functions and variables for recording or
 manipulating terminal input.  See *Note Display::, for related
@@ -5794,10 +6796,10 @@ functions.
 \1f
 File: lispref.info,  Node: Input Modes,  Next: Translating Input,  Up: Terminal Input
 
-Input Modes
------------
+57.8.1 Input Modes
+------------------
 
- - Function: set-input-mode interrupt flow meta &optional quit-char
+ -- Function: set-input-mode interrupt flow meta &optional quit-char
           console
      This function sets the mode for reading keyboard input.  If
      INTERRUPT is non-null, then XEmacs uses input interrupts.  If it is
@@ -5826,7 +6828,7 @@ Input Modes
    The `current-input-mode' function returns the input mode settings
 XEmacs is currently using.
 
- - Function: current-input-mode &optional console
+ -- Function: current-input-mode &optional console
      This function returns current mode for reading keyboard input.  It
      returns a list, corresponding to the arguments of `set-input-mode',
      of the form `(INTERRUPT FLOW META QUIT)' in which:
@@ -5852,13 +6854,13 @@ XEmacs is currently using.
 \1f
 File: lispref.info,  Node: Translating Input,  Next: Recording Input,  Prev: Input Modes,  Up: Terminal Input
 
-Translating Input Events
-------------------------
+57.8.2 Translating Input Events
+-------------------------------
 
 This section describes features for translating input events into other
 input events before they become part of key sequences.
 
- - Variable: function-key-map
+ -- Variable: function-key-map
      This variable holds a keymap that describes the character sequences
      sent by function keys on an ordinary character terminal.  This
      keymap uses the same data structure as other keymaps, but is used
@@ -5895,7 +6897,7 @@ input events before they become part of key sequences.
      Emacs versions 18 and earlier used totally different means of
      detecting the character sequences that represent function keys.
 
- - Variable: key-translation-map
+ -- Variable: key-translation-map
      This variable is another keymap used just like `function-key-map'
      to translate input events into other events.  It differs from
      `function-key-map' in two ways:
@@ -5931,7 +6933,7 @@ altering the event that follows.  For example, here's how to define
                    (if (memq 'hyper (event-modifiers e))
                        e
                      (add-event-modifier "H-" e))))))
-     
+
      (defun add-event-modifier (string e)
        (let ((symbol (if (symbolp e) e (car e))))
          (setq symbol (intern (concat string
@@ -5939,7 +6941,7 @@ altering the event that follows.  For example, here's how to define
          (if (symbolp e)
              symbol
            (cons symbol (cdr e)))))
-     
+
      (define-key function-key-map "\C-ch" 'hyperify)
 
    The `iso-transl' library uses this feature to provide a way of
@@ -5948,10 +6950,10 @@ inputting non-ASCII Latin-1 characters.
 \1f
 File: lispref.info,  Node: Recording Input,  Prev: Translating Input,  Up: Terminal Input
 
-Recording Input
----------------
+57.8.3 Recording Input
+----------------------
 
- - Function: recent-keys &optional number
+ -- Function: recent-keys &optional number
      This function returns a vector containing recent input events from
      the keyboard or mouse.  By default, 100 events are recorded, which
      is how many `recent-keys' returns.
@@ -5966,12 +6968,12 @@ Recording Input
      returned.  You may change the number of stored events using
      `set-recent-keys-ring-size'.
 
- - Function: recent-keys-ring-size
+ -- Function: recent-keys-ring-size
      This function returns the number of recent events stored
      internally.  This is also the maximum number of events
      `recent-keys' can return.  By default, 100 events are stored.
 
- - Function: set-recent-keys-ring-size size
+ -- Function: set-recent-keys-ring-size size
      This function changes the number of events stored by XEmacs and
      returned by `recent-keys'.
 
@@ -5979,7 +6981,7 @@ Recording Input
      remember last 250 events and will make `recent-keys' return last
      250 events by default.
 
- - Command: open-dribble-file filename
+ -- Command: open-dribble-file filename
      This function opens a "dribble file" named FILENAME.  When a
      dribble file is open, each input event from the keyboard or mouse
      (but not those from keyboard macros) is written in that file.  A
@@ -6000,14 +7002,14 @@ Recording Input
 \1f
 File: lispref.info,  Node: Terminal Output,  Next: Flow Control,  Prev: Terminal Input,  Up: System Interface
 
-Terminal Output
-===============
+57.9 Terminal Output
+====================
 
 The terminal output functions send output to the terminal or keep track
 of output sent to the terminal.  The function `device-baud-rate' tells
 you what XEmacs thinks is the output speed of the terminal.
 
- - Function: device-baud-rate &optional device
+ -- Function: device-baud-rate &optional device
      This function's value is the output speed of the terminal
      associated with DEVICE, as far as XEmacs knows.  DEVICE defaults
      to the selected device (usually the only device) if omitted.
@@ -6030,12 +7032,12 @@ the proper value, but others do not.  If XEmacs has the wrong value, it
 makes decisions that are less than optimal.  To fix the problem, use
 `set-device-baud-rate'.
 
- - Function: set-device-baud-rate device baud-rate
+ -- Function: set-device-baud-rate device baud-rate
      This function sets the output speed of DEVICE.  See
      `device-baud-rate'.  DEVICE defaults to the selected device
      (usually the only device) if `nil'.
 
- - Function: send-string-to-terminal char-or-string &optional stdout-p
+ -- Function: send-string-to-terminal char-or-string &optional stdout-p
           device
      This function sends CHAR-OR-STRING to the terminal without
      alteration.  Control characters in CHAR-OR-STRING have
@@ -6055,7 +7057,7 @@ makes decisions that are less than optimal.  To fix the problem, use
           (send-string-to-terminal "\eF4\^U\^F")
                => nil
 
- - Command: open-termscript filename
+ -- Command: open-termscript filename
      This function is used to open a "termscript file" that will record
      all the characters sent by XEmacs to the terminal. (If there are
      multiple tty or stream devices, all characters sent to all such
@@ -6074,1021 +7076,3 @@ makes decisions that are less than optimal.  To fix the problem, use
           (open-termscript "../junk/termscript")
                => nil
 
-\1f
-File: lispref.info,  Node: Flow Control,  Next: Batch Mode,  Prev: Terminal Output,  Up: System Interface
-
-Flow Control
-============
-
-This section attempts to answer the question "Why does XEmacs choose to
-use flow-control characters in its command character set?"  For a
-second view on this issue, read the comments on flow control in the
-`emacs/INSTALL' file from the distribution; for help with Termcap
-entries and DEC terminal concentrators, see `emacs/etc/TERMS'.
-
-   At one time, most terminals did not need flow control, and none used
-`C-s' and `C-q' for flow control.  Therefore, the choice of `C-s' and
-`C-q' as command characters was uncontroversial.  XEmacs, for economy
-of keystrokes and portability, used nearly all the ASCII control
-characters, with mnemonic meanings when possible; thus, `C-s' for
-search and `C-q' for quote.
-
-   Later, some terminals were introduced which required these characters
-for flow control.  They were not very good terminals for full-screen
-editing, so XEmacs maintainers did not pay attention.  In later years,
-flow control with `C-s' and `C-q' became widespread among terminals,
-but by this time it was usually an option.  And the majority of users,
-who can turn flow control off, were unwilling to switch to less
-mnemonic key bindings for the sake of flow control.
-
-   So which usage is "right", XEmacs's or that of some terminal and
-concentrator manufacturers?  This question has no simple answer.
-
-   One reason why we are reluctant to cater to the problems caused by
-`C-s' and `C-q' is that they are gratuitous.  There are other
-techniques (albeit less common in practice) for flow control that
-preserve transparency of the character stream.  Note also that their use
-for flow control is not an official standard.  Interestingly, on the
-model 33 teletype with a paper tape punch (which is very old), `C-s'
-and `C-q' were sent by the computer to turn the punch on and off!
-
-   As X servers and other window systems replace character-only
-terminals, this problem is gradually being cured.  For the mean time,
-XEmacs provides a convenient way of enabling flow control if you want
-it: call the function `enable-flow-control'.
-
- - Command: enable-flow-control &optional argument
-     This function enables use of `C-s' and `C-q' for output flow
-     control, and provides the characters `C-\' and `C-^' as aliases
-     for them using `keyboard-translate-table' (*note Translating
-     Input::).
-
-     With optional argument ARGUMENT (interactively the prefix
-     argument), enable flow control mode if ARGUMENT is positive; else
-     disable it.
-
-   You can use the function `enable-flow-control-on' in your `.emacs'
-file to enable flow control automatically on certain terminal types.
-
- - Function: enable-flow-control-on &rest termtypes
-     This function enables flow control, and the aliases `C-\' and
-     `C-^', if the terminal type is one of TERMTYPES.  For example:
-
-          (enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
-
-   Here is how `enable-flow-control' does its job:
-
-  1. It sets CBREAK mode for terminal input, and tells the operating
-     system to handle flow control, with `(set-input-mode nil t)'.
-
-  2. It sets up `keyboard-translate-table' to translate `C-\' and `C-^'
-     into `C-s' and `C-q'.  Except at its very lowest level, XEmacs
-     never knows that the characters typed were anything but `C-s' and
-     `C-q', so you can in effect type them as `C-\' and `C-^' even when
-     they are input for other commands.  *Note Translating Input::.
-
-   If the terminal is the source of the flow control characters, then
-once you enable kernel flow control handling, you probably can make do
-with less padding than normal for that terminal.  You can reduce the
-amount of padding by customizing the Termcap entry.  You can also
-reduce it by setting `baud-rate' to a smaller value so that XEmacs uses
-a smaller speed when calculating the padding needed.  *Note Terminal
-Output::.
-
-\1f
-File: lispref.info,  Node: Batch Mode,  Prev: Flow Control,  Up: System Interface
-
-Batch Mode
-==========
-
-The command line option `-batch' causes XEmacs to run noninteractively.
-In this mode, XEmacs does not read commands from the terminal, it does
-not alter the terminal modes, and it does not expect to be outputting
-to an erasable screen.  The idea is that you specify Lisp programs to
-run; when they are finished, XEmacs should exit.  The way to specify
-the programs to run is with `-l FILE', which loads the library named
-FILE, and `-f FUNCTION', which calls FUNCTION with no arguments.
-
-   Any Lisp program output that would normally go to the echo area,
-either using `message' or using `prin1', etc., with `t' as the stream,
-goes instead to XEmacs's standard error descriptor when in batch mode.
-Thus, XEmacs behaves much like a noninteractive application program.
-(The echo area output that XEmacs itself normally generates, such as
-command echoing, is suppressed entirely.)
-
- - Function: noninteractive
-     This function returns non-`nil' when XEmacs is running in batch
-     mode.
-
- - Variable: noninteractive
-     This variable is non-`nil' when XEmacs is running in batch mode.
-     Setting this variable to `nil', however, will not change whether
-     XEmacs is running in batch mode, and will not change the return
-     value of the `noninteractive' function.
-
-\1f
-File: lispref.info,  Node: X-Windows,  Next: ToolTalk Support,  Prev: System Interface,  Up: Top
-
-Functions Specific to the X Window System
-*****************************************
-
-XEmacs provides the concept of "devices", which generalizes connections
-to an X server, a TTY device, etc.  Most information about an X server
-that XEmacs is connected to can be determined through general console
-and device functions.  *Note Consoles and Devices::.  However, there
-are some features of the X Window System that do not generalize well,
-and they are covered specially here.
-
-* Menu:
-
-* X Selections::                Transferring text to and from other X clients.
-* X Server::                    Information about the X server connected to
-                                  a particular device.
-* X Miscellaneous::             Other X-specific functions and variables.
-
-\1f
-File: lispref.info,  Node: X Selections,  Next: X Server,  Up: X-Windows
-
-X Selections
-============
-
-The X server records a set of "selections" which permit transfer of
-data between application programs.  The various selections are
-distinguished by "selection types", represented in XEmacs by symbols.
-X clients including XEmacs can read or set the selection for any given
-type.
-
- - Function: x-own-selection data &optional type
-     This function sets a "selection" in the X server.  It takes two
-     arguments: a value, DATA, and the selection type TYPE to assign it
-     to.  DATA may be a string, a cons of two markers, or an extent.
-     In the latter cases, the selection is considered to be the text
-     between the markers, or between the extent's endpoints.
-
-     Each possible TYPE has its own selection value, which changes
-     independently.  The usual values of TYPE are `PRIMARY' and
-     `SECONDARY'; these are symbols with upper-case names, in accord
-     with X Windows conventions.  The default is `PRIMARY'.
-
-     (In FSF Emacs, this function is called `x-set-selection' and takes
-     different arguments.)
-
- - Function: x-get-selection
-     This function accesses selections set up by XEmacs or by other X
-     clients.  It returns the value of the current primary selection.
-
- - Function: x-disown-selection &optional secondary-p
-     Assuming we own the selection, this function disowns it.  If
-     SECONDARY-P is non-`nil', the secondary selection instead of the
-     primary selection is discarded.
-
-   The X server also has a set of numbered "cut buffers" which can
-store text or other data being moved between applications.  Cut buffers
-are considered obsolete, but XEmacs supports them for the sake of X
-clients that still use them.
-
- - Function: x-get-cutbuffer &optional n
-     This function returns the contents of cut buffer number N. (This
-     function is called `x-get-cut-buffer' in FSF Emacs.)
-
- - Function: x-store-cutbuffer string &optional push
-     This function stores STRING into the first cut buffer (cut buffer
-     0).
-
-     Normally, the contents of the first cut buffer are simply replaced
-     by STRING.  However, if optional argument PUSH is non-`nil', the
-     cut buffers are rotated.  This means that the previous value of
-     the first cut buffer moves to the second cut buffer, and the
-     second to the third, and so on, moving the other values down
-     through the series of cut buffers, kill-ring-style.  There are 8
-     cut buffers altogether.
-
-     Cut buffers are considered obsolete; you should use selections
-     instead.
-
-     This function has no effect if support for cut buffers was not
-     compiled in.
-
-     This function is called `x-set-cut-buffer' in FSF Emacs.
-
-\1f
-File: lispref.info,  Node: X Server,  Next: X Miscellaneous,  Prev: X Selections,  Up: X-Windows
-
-X Server
-========
-
-This section describes how to access and change the overall status of
-the X server XEmacs is using.
-
-* Menu:
-
-* Resources::                   Getting resource values from the server.
-* Server Data::                 Getting info about the X server.
-* Grabs::                       Restricting access to the server by other apps.
-
-\1f
-File: lispref.info,  Node: Resources,  Next: Server Data,  Up: X Server
-
-Resources
----------
-
- - Function: default-x-device
-     This function return the default X device for resourcing.  This is
-     the first-created X device that still exists.
-
- - Function: x-get-resource name class type &optional locale device
-          noerror
-     This function retrieves a resource value from the X resource
-     manager.
-
-        * The first arg is the name of the resource to retrieve, such as
-          `"font"'.
-
-        * The second arg is the class of the resource to retrieve, like
-          `"Font"'.
-
-        * The third arg should be one of the symbols `string',
-          `integer', `natnum', or `boolean', specifying the type of
-          object that the database is searched for.
-
-        * The fourth arg is the locale to search for the resources on,
-          and can currently be a buffer, a frame, a device, or the
-          symbol `global'.  If omitted, it defaults to `global'.
-
-        * The fifth arg is the device to search for the resources on.
-          (The resource database for a particular device is constructed
-          by combining non-device- specific resources such any
-          command-line resources specified and any app-defaults files
-          found [or the fallback resources supplied by XEmacs, if no
-          app-defaults file is found] with device-specific resources
-          such as those supplied using `xrdb'.) If omitted, it defaults
-          to the device of LOCALE, if a device can be derived (i.e. if
-          LOCALE is a frame or device), and otherwise defaults to the
-          value of `default-x-device'.
-
-        * The sixth arg NOERROR, if non-`nil', means do not signal an
-          error if a bogus resource specification was retrieved (e.g.
-          if a non-integer was given when an integer was requested).
-          In this case, a warning is issued instead.
-
-     The resource names passed to this function are looked up relative
-     to the locale.
-
-     If you want to search for a subresource, you just need to specify
-     the resource levels in NAME and CLASS.  For example, NAME could be
-     `"modeline.attributeFont"', and CLASS `"Face.AttributeFont"'.
-
-     Specifically,
-
-       1. If LOCALE is a buffer, a call
-
-                   `(x-get-resource "foreground" "Foreground" 'string SOME-BUFFER)'
-
-          is an interface to a C call something like
-
-                   `XrmGetResource (db, "xemacs.buffer.BUFFER-NAME.foreground",
-                                       "Emacs.EmacsLocaleType.EmacsBuffer.Foreground",
-                                       "String");'
-
-       2. If LOCALE is a frame, a call
-
-                   `(x-get-resource "foreground" "Foreground" 'string SOME-FRAME)'
-
-          is an interface to a C call something like
-
-                   `XrmGetResource (db, "xemacs.frame.FRAME-NAME.foreground",
-                                       "Emacs.EmacsLocaleType.EmacsFrame.Foreground",
-                                       "String");'
-
-       3. If LOCALE is a device, a call
-
-                   `(x-get-resource "foreground" "Foreground" 'string SOME-DEVICE)'
-
-          is an interface to a C call something like
-
-                   `XrmGetResource (db, "xemacs.device.DEVICE-NAME.foreground",
-                                       "Emacs.EmacsLocaleType.EmacsDevice.Foreground",
-                                       "String");'
-
-       4. If LOCALE is the symbol `global', a call
-
-                   `(x-get-resource "foreground" "Foreground" 'string 'global)'
-
-          is an interface to a C call something like
-
-                   `XrmGetResource (db, "xemacs.foreground",
-                                       "Emacs.Foreground",
-                                       "String");'
-
-     Note that for `global', no prefix is added other than that of the
-     application itself; thus, you can use this locale to retrieve
-     arbitrary application resources, if you really want to.
-
-     The returned value of this function is `nil' if the queried
-     resource is not found.  If TYPE is `string', a string is returned,
-     and if it is `integer', an integer is returned.  If TYPE is
-     `boolean', then the returned value is the list `(t)' for true,
-     `(nil)' for false, and is `nil' to mean "unspecified".
-
- - Function: x-put-resource resource-line &optional device
-     This function adds a resource to the resource database for DEVICE.
-     RESOURCE-LINE specifies the resource to add and should be a
-     standard resource specification.
-
- - Variable: x-emacs-application-class
-     This variable holds The X application class of the XEmacs process.
-     This controls, among other things, the name of the "app-defaults"
-     file that XEmacs will use.  For changes to this variable to take
-     effect, they must be made before the connection to the X server is
-     initialized, that is, this variable may only be changed before
-     XEmacs is dumped, or by setting it in the file
-     `lisp/term/x-win.el'.
-
-     By default, this variable is `nil' at startup.  When the connection
-     to the X server is first initialized, the X resource database will
-     be consulted and the value will be set according to whether any
-     resources are found for the application class "XEmacs".
-
-\1f
-File: lispref.info,  Node: Server Data,  Next: Grabs,  Prev: Resources,  Up: X Server
-
-Data about the X Server
------------------------
-
-This section describes functions and a variable that you can use to get
-information about the capabilities and origin of the X server
-corresponding to a particular device.  The device argument is generally
-optional and defaults to the selected device.
-
- - Function: x-server-version &optional device
-     This function returns the list of version numbers of the X server
-     DEVICE is on.  The returned value is a list of three integers: the
-     major and minor version numbers of the X protocol in use, and the
-     vendor-specific release number.
-
- - Function: x-server-vendor &optional device
-     This function returns the vendor supporting the X server DEVICE is
-     on.
-
- - Function: x-display-visual-class &optional device
-     This function returns the visual class of the display DEVICE is
-     on.  The value is one of the symbols `static-gray', `gray-scale',
-     `static-color', `pseudo-color', `true-color', and `direct-color'.
-     (Note that this is different from previous versions of XEmacs,
-     which returned `StaticGray', `GrayScale', etc.)
-
-\1f
-File: lispref.info,  Node: Grabs,  Prev: Server Data,  Up: X Server
-
-Restricting Access to the Server by Other Apps
-----------------------------------------------
-
- - Function: x-grab-keyboard &optional device
-     This function grabs the keyboard on the given device (defaulting
-     to the selected one).  So long as the keyboard is grabbed, all
-     keyboard events will be delivered to XEmacs--it is not possible
-     for other X clients to eavesdrop on them.  Ungrab the keyboard
-     with `x-ungrab-keyboard' (use an `unwind-protect').  Returns `t'
-     if the grab was successful; `nil' otherwise.
-
- - Function: x-ungrab-keyboard &optional device
-     This function releases a keyboard grab made with `x-grab-keyboard'.
-
- - Function: x-grab-pointer &optional device cursor ignore-keyboard
-     This function grabs the pointer and restricts it to its current
-     window.  If optional DEVICE argument is `nil', the selected device
-     will be used.  If optional CURSOR argument is non-`nil', change
-     the pointer shape to that until `x-ungrab-pointer' is called (it
-     should be an object returned by the `make-cursor' function).  If
-     the second optional argument IGNORE-KEYBOARD is non-`nil', ignore
-     all keyboard events during the grab.  Returns `t' if the grab is
-     successful, `nil' otherwise.
-
- - Function: x-ungrab-pointer &optional device
-     This function releases a pointer grab made with `x-grab-pointer'.
-     If optional first arg DEVICE is `nil' the selected device is used.
-     If it is `t' the pointer will be released on all X devices.
-
-\1f
-File: lispref.info,  Node: X Miscellaneous,  Prev: X Server,  Up: X-Windows
-
-Miscellaneous X Functions and Variables
-=======================================
-
- - Variable: x-bitmap-file-path
-     This variable holds a list of the directories in which X bitmap
-     files may be found.  If `nil', this is initialized from the
-     `"*bitmapFilePath"' resource.  This is used by the
-     `make-image-instance' function (however, note that if the
-     environment variable `XBMLANGPATH' is set, it is consulted first).
-
- - Variable: x-library-search-path
-     This variable holds the search path used by `read-color' to find
-     `rgb.txt'.
-
- - Function: x-valid-keysym-name-p keysym
-     This function returns true if KEYSYM names a keysym that the X
-     library knows about.  Valid keysyms are listed in the files
-     `/usr/include/X11/keysymdef.h' and in `/usr/lib/X11/XKeysymDB', or
-     whatever the equivalents are on your system.
-
- - Function: x-window-id &optional frame
-     This function returns the ID of the X11 window.  This gives us a
-     chance to manipulate the Emacs window from within a different
-     program.  Since the ID is an unsigned long, we return it as a
-     string.
-
- - Variable: x-allow-sendevents
-     If non-`nil', synthetic events are allowed.  `nil' means they are
-     ignored.  Beware: allowing XEmacs to process SendEvents opens a
-     big security hole.
-
- - Function: x-debug-mode arg &optional device
-     With a true arg, make the connection to the X server synchronous.
-     With false, make it asynchronous.  Synchronous connections are
-     much slower, but are useful for debugging. (If you get X errors,
-     make the connection synchronous, and use a debugger to set a
-     breakpoint on `x_error_handler'.  Your backtrace of the C stack
-     will now be useful.  In asynchronous mode, the stack above
-     `x_error_handler' isn't helpful because of buffering.)  If DEVICE
-     is not specified, the selected device is assumed.
-
-     Calling this function is the same as calling the C function
-     `XSynchronize', or starting the program with the `-sync' command
-     line argument.
-
- - Variable: x-debug-events
-     If non-zero, debug information about events that XEmacs sees is
-     displayed.  Information is displayed on stderr.  Currently defined
-     values are:
-
-        * 1 == non-verbose output
-
-        * 2 == verbose output
-
-\1f
-File: lispref.info,  Node: ToolTalk Support,  Next: LDAP Support,  Prev: X-Windows,  Up: Top
-
-ToolTalk Support
-****************
-
-* Menu:
-
-* XEmacs ToolTalk API Summary::
-* Sending Messages::
-* Receiving Messages::
-
-\1f
-File: lispref.info,  Node: XEmacs ToolTalk API Summary,  Next: Sending Messages,  Up: ToolTalk Support
-
-XEmacs ToolTalk API Summary
-===========================
-
-The XEmacs Lisp interface to ToolTalk is similar, at least in spirit,
-to the standard C ToolTalk API.  Only the message and pattern parts of
-the API are supported at present; more of the API could be added if
-needed.  The Lisp interface departs from the C API in a few ways:
-
-   * ToolTalk is initialized automatically at XEmacs startup-time.
-     Messages can only be sent other ToolTalk applications connected to
-     the same X11 server that XEmacs is running on.
-
-   * There are fewer entry points; polymorphic functions with keyword
-     arguments are used instead.
-
-   * The callback interface is simpler and marginally less functional.
-     A single callback may be associated with a message or a pattern;
-     the callback is specified with a Lisp symbol (the symbol should
-     have a function binding).
-
-   * The session attribute for messages and patterns is always
-     initialized to the default session.
-
-   * Anywhere a ToolTalk enum constant, e.g. `TT_SESSION', is valid, one
-     can substitute the corresponding symbol, e.g. `'TT_SESSION'.  This
-     simplifies building lists that represent messages and patterns.
-
-\1f
-File: lispref.info,  Node: Sending Messages,  Next: Receiving Messages,  Prev: XEmacs ToolTalk API Summary,  Up: ToolTalk Support
-
-Sending Messages
-================
-
-* Menu:
-
-* Example of Sending Messages::
-* Elisp Interface for Sending Messages::
-
-\1f
-File: lispref.info,  Node: Example of Sending Messages,  Next: Elisp Interface for Sending Messages,  Up: Sending Messages
-
-Example of Sending Messages
----------------------------
-
-Here's a simple example that sends a query to another application and
-then displays its reply.  Both the query and the reply are stored in
-the first argument of the message.
-
-     (defun tooltalk-random-query-handler (msg)
-       (let ((state (get-tooltalk-message-attribute msg 'state)))
-         (cond
-           ((eq state 'TT_HANDLED)
-            (message (get-tooltalk-message-attribute msg arg_val 0)))
-           ((memq state '(TT_FAILED TT_REJECTED))
-            (message "Random query turns up nothing")))))
-     
-     (defvar random-query-message
-       '(   class TT_REQUEST
-            scope TT_SESSION
-          address TT_PROCEDURE
-               op "random-query"
-             args '((TT_INOUT "?" "string"))
-         callback tooltalk-random-query-handler))
-     
-     (let ((m (make-tooltalk-message random-query-message)))
-       (send-tooltalk-message m))
-
-\1f
-File: lispref.info,  Node: Elisp Interface for Sending Messages,  Prev: Example of Sending Messages,  Up: Sending Messages
-
-Elisp Interface for Sending Messages
-------------------------------------
-
- - Function: make-tooltalk-message attributes
-     Create a ToolTalk message and initialize its attributes.  The
-     value of ATTRIBUTES must be a list of alternating keyword/values,
-     where keywords are symbols that name valid message attributes.
-     For example:
-
-            (make-tooltalk-message
-              '(class TT_NOTICE
-                scope TT_SESSION
-                address TT_PROCEDURE
-                op "do-something"
-                args ("arg1" 12345 (TT_INOUT "arg3" "string"))))
-
-     Values must always be strings, integers, or symbols that represent
-     ToolTalk constants.  Attribute names are the same as those
-     supported by `set-tooltalk-message-attribute', plus `args'.
-
-     The value of `args' should be a list of message arguments where
-     each message argument has the following form:
-
-             `(mode [value [type]])' or just `value'
-
-     Where MODE is one of `TT_IN', `TT_OUT', or `TT_INOUT' and TYPE is
-     a string.  If TYPE isn't specified then `int' is used if VALUE is
-     a number; otherwise `string' is used.  If TYPE is `string' then
-     VALUE is converted to a string (if it isn't a string already) with
-     `prin1-to-string'.  If only a value is specified then MODE
-     defaults to `TT_IN'.  If MODE is `TT_OUT' then VALUE and TYPE
-     don't need to be specified.  You can find out more about the
-     semantics and uses of ToolTalk message arguments in chapter 4 of
-     the `ToolTalk Programmer's Guide'.
-
-
- - Function: send-tooltalk-message msg
-     Send the message on its way.  Once the message has been sent it's
-     almost always a good idea to get rid of it with
-     `destroy-tooltalk-message'.
-
-
- - Function: return-tooltalk-message msg &optional mode
-     Send a reply to this message.  The second argument can be `reply',
-     `reject' or `fail'; the default is `reply'.  Before sending a
-     reply, all message arguments whose mode is `TT_INOUT' or `TT_OUT'
-     should have been filled in--see `set-tooltalk-message-attribute'.
-
-
- - Function: get-tooltalk-message-attribute msg attribute &optional argn
-     Returns the indicated ToolTalk message attribute.  Attributes are
-     identified by symbols with the same name (underscores and all) as
-     the suffix of the ToolTalk `tt_message_<attribute>' function that
-     extracts the value.  String attribute values are copied and
-     enumerated type values (except disposition) are converted to
-     symbols; e.g. `TT_HANDLER' is `'TT_HANDLER', `uid' and `gid' are
-     represented by fixnums (small integers), `opnum' is converted to a
-     string, and `disposition' is converted to a fixnum.  We convert
-     `opnum' (a C int) to a string (e.g. `123' => `"123"') because
-     there's no guarantee that opnums will fit within the range of
-     XEmacs Lisp integers.
-
-     [TBD] Use the `plist' attribute instead of C API `user' attribute
-     for user-defined message data.  To retrieve the value of a message
-     property, specify the indicator for ARGN.  For example, to get the
-     value of a property called `rflag', use
-
-             (get-tooltalk-message-attribute msg 'plist 'rflag)
-
-     To get the value of a message argument use one of the `arg_val'
-     (strings), `arg_ival' (integers), or `arg_bval' (strings with
-     embedded nulls), attributes.  For example, to get the integer
-     value of the third argument:
-
-             (get-tooltalk-message-attribute msg 'arg_ival 2)
-
-     As you can see, argument numbers are zero-based.  The type of each
-     arguments can be retrieved with the `arg_type' attribute; however
-     ToolTalk doesn't define any semantics for the string value of
-     `arg_type'.  Conventionally `string' is used for strings and `int'
-     for 32 bit integers.  Note that XEmacs Lisp stores the lengths of
-     strings explicitly (unlike C) so treating the value returned by
-     `arg_bval' like a string is fine.
-
-
- - Function: set-tooltalk-message-attribute value msg attribute
-          &optional argn
-     Initialize one ToolTalk message attribute.
-
-     Attribute names and values are the same as for
-     `get-tooltalk-message-attribute'.  A property list is provided for
-     user data (instead of the `user' message attribute); see
-     `get-tooltalk-message-attribute'.
-
-     Callbacks are handled slightly differently than in the C ToolTalk
-     API.  The value of CALLBACK should be the name of a function of one
-     argument.  It will be called each time the state of the message
-     changes.  This is usually used to notice when the message's state
-     has changed to `TT_HANDLED' (or `TT_FAILED'), so that reply
-     argument values can be used.
-
-     If one of the argument attributes is specified as `arg_val',
-     `arg_ival', or `arg_bval', then ARGN must be the number of an
-     already created argument.  Arguments can be added to a message
-     with `add-tooltalk-message-arg'.
-
-
- - Function: add-tooltalk-message-arg msg mode type &optional value
-     Append one new argument to the message.  MODE must be one of
-     `TT_IN', `TT_INOUT', or `TT_OUT', TYPE must be a string, and VALUE
-     can be a string or an integer.  ToolTalk doesn't define any
-     semantics for TYPE, so only the participants in the protocol
-     you're using need to agree what types mean (if anything).
-     Conventionally `string' is used for strings and `int' for 32 bit
-     integers.  Arguments can initialized by providing a value or with
-     `set-tooltalk-message-attribute'; the latter is necessary if you
-     want to initialize the argument with a string that can contain
-     embedded nulls (use `arg_bval').
-
-
- - Function: create-tooltalk-message &optional no-callback
-     Create a new ToolTalk message.  The message's session attribute is
-     initialized to the default session.  Other attributes can be
-     initialized with `set-tooltalk-message-attribute'.
-     `make-tooltalk-message' is the preferred way to create and
-     initialize a message.
-
-     Optional arg NO-CALLBACK says don't add a C-level callback at all.
-     Normally don't do that; just don't specify the Lisp callback when
-     calling `make-tooltalk-message'.
-
-
- - Function: destroy-tooltalk-message msg
-     Apply `tt_message_destroy' to the message.  It's not necessary to
-     destroy messages after they've been processed by a message or
-     pattern callback, the Lisp/ToolTalk callback machinery does this
-     for you.
-
-\1f
-File: lispref.info,  Node: Receiving Messages,  Prev: Sending Messages,  Up: ToolTalk Support
-
-Receiving Messages
-==================
-
-* Menu:
-
-* Example of Receiving Messages::
-* Elisp Interface for Receiving Messages::
-
-\1f
-File: lispref.info,  Node: Example of Receiving Messages,  Next: Elisp Interface for Receiving Messages,  Up: Receiving Messages
-
-Example of Receiving Messages
------------------------------
-
-Here's a simple example of a handler for a message that tells XEmacs to
-display a string in the mini-buffer area.  The message operation is
-called `emacs-display-string'.  Its first (0th) argument is the string
-to display.
-
-     (defun tooltalk-display-string-handler (msg)
-       (message (get-tooltalk-message-attribute msg 'arg_val 0)))
-     
-     (defvar display-string-pattern
-       '(category TT_HANDLE
-            scope TT_SESSION
-               op "emacs-display-string"
-         callback tooltalk-display-string-handler))
-     
-     (let ((p (make-tooltalk-pattern display-string-pattern)))
-       (register-tooltalk-pattern p))
-
-\1f
-File: lispref.info,  Node: Elisp Interface for Receiving Messages,  Prev: Example of Receiving Messages,  Up: Receiving Messages
-
-Elisp Interface for Receiving Messages
---------------------------------------
-
- - Function: make-tooltalk-pattern attributes
-     Create a ToolTalk pattern and initialize its attributes.  The
-     value of attributes must be a list of alternating keyword/values,
-     where keywords are symbols that name valid pattern attributes or
-     lists of valid attributes.  For example:
-
-            (make-tooltalk-pattern
-              '(category TT_OBSERVE
-                   scope TT_SESSION
-                      op ("operation1" "operation2")
-                    args ("arg1" 12345 (TT_INOUT "arg3" "string"))))
-
-     Attribute names are the same as those supported by
-     `add-tooltalk-pattern-attribute', plus `'args'.
-
-     Values must always be strings, integers, or symbols that represent
-     ToolTalk constants or lists of same.  When a list of values is
-     provided all of the list elements are added to the attribute.  In
-     the example above, messages whose `op' attribute is `"operation1"'
-     or `"operation2"' would match the pattern.
-
-     The value of ARGS should be a list of pattern arguments where each
-     pattern argument has the following form:
-
-             `(mode [value [type]])' or just `value'
-
-     Where MODE is one of `TT_IN', `TT_OUT', or `TT_INOUT' and TYPE is
-     a string.  If TYPE isn't specified then `int' is used if VALUE is
-     a number; otherwise `string' is used.  If TYPE is `string' then
-     VALUE is converted to a string (if it isn't a string already) with
-     `prin1-to-string'.  If only a value is specified then MODE
-     defaults to `TT_IN'.  If MODE is `TT_OUT' then VALUE and TYPE
-     don't need to be specified.  You can find out more about the
-     semantics and uses of ToolTalk pattern arguments in chapter 3 of
-     the `ToolTalk Programmer's Guide'.
-
-
- - Function: register-tooltalk-pattern pattern
-     XEmacs will begin receiving messages that match this pattern.
-
- - Function: unregister-tooltalk-pattern pattern
-     XEmacs will stop receiving messages that match this pattern.
-
- - Function: add-tooltalk-pattern-attribute value pattern indicator
-     Add one value to the indicated pattern attribute. The names of
-     attributes are the same as the ToolTalk accessors used to set them
-     less the `tooltalk_pattern_' prefix and the `_add' suffix.  For
-     example, the name of the attribute for the
-     `tt_pattern_disposition_add' attribute is `disposition'.  The
-     `category' attribute is handled specially, since a pattern can only
-     be a member of one category (`TT_OBSERVE' or `TT_HANDLE').
-
-     Callbacks are handled slightly differently than in the C ToolTalk
-     API.  The value of CALLBACK should be the name of a function of one
-     argument.  It will be called each time the pattern matches an
-     incoming message.
-
- - Function: add-tooltalk-pattern-arg pattern mode vtype &optional value
-     Add one fully-specified argument to a ToolTalk pattern.  MODE must
-     be one of `TT_IN', `TT_INOUT', or `TT_OUT'.  VTYPE must be a
-     string.  VALUE can be an integer, string or `nil'.  If VALUE is an
-     integer then an integer argument (`tt_pattern_iarg_add') is added;
-     otherwise a string argument is added.  At present there's no way
-     to add a binary data argument.
-
-
- - Function: create-tooltalk-pattern
-     Create a new ToolTalk pattern and initialize its session attribute
-     to be the default session.
-
- - Function: destroy-tooltalk-pattern pattern
-     Apply `tt_pattern_destroy' to the pattern.  This effectively
-     unregisters the pattern.
-
- - Function: describe-tooltalk-message msg &optional stream
-     Print the message's attributes and arguments to STREAM.  This is
-     often useful for debugging.
-
-\1f
-File: lispref.info,  Node: LDAP Support,  Next: PostgreSQL Support,  Prev: ToolTalk Support,  Up: Top
-
-LDAP Support
-************
-
-XEmacs can be linked with a LDAP client library to provide Elisp
-primitives to access directory servers using the Lightweight Directory
-Access Protocol.
-
-* Menu:
-
-* Building XEmacs with LDAP support::  How to add LDAP support to XEmacs
-* XEmacs LDAP API::             Lisp access to LDAP functions
-* Syntax of Search Filters::    A brief summary of RFC 1558
-
-\1f
-File: lispref.info,  Node: Building XEmacs with LDAP support,  Next: XEmacs LDAP API,  Prev: LDAP Support,  Up: LDAP Support
-
-Building XEmacs with LDAP support
-=================================
-
-LDAP support must be added to XEmacs at build time since it requires
-linking to an external LDAP client library.  As of 21.2, XEmacs has been
-successfully built and tested with
-
-   * OpenLDAP 1.2 (<http://www.openldap.org/>)
-
-   * University of Michigan's LDAP 3.3
-     (<http://www.umich.edu/~dirsvcs/ldap/>)
-
-   * LDAP SDK 1.0 from Netscape Corp. (<http://developer.netscape.com/>)
-
-   Other libraries conforming to RFC 1823 will probably work also but
-may require some minor tweaking at C level.
-
-   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.
-
-\1f
-File: lispref.info,  Node: XEmacs LDAP API,  Next: Syntax of Search Filters,  Prev: Building XEmacs with LDAP support,  Up: LDAP Support
-
-XEmacs LDAP API
-===============
-
-XEmacs LDAP API consists of two layers:  a low-level layer which 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.
-
-   The low-level API should be used directly for very specific purposes
-(such as multiple operations on a connection) only.  The higher-level
-functions provide a more convenient way to access LDAP directories
-hiding the subtleties of handling the connection, translating arguments
-and ensuring compliance with LDAP internationalization rules and formats
-(currently partly implemented only).
-
-* Menu:
-
-* LDAP Variables::              Lisp variables related to LDAP
-* The High-Level LDAP API::     High-level LDAP lisp functions
-* The Low-Level LDAP API::      Low-level LDAP lisp primitives
-* LDAP Internationalization::   I18n variables and functions
-
-\1f
-File: lispref.info,  Node: LDAP Variables,  Next: The High-Level LDAP API,  Prev: XEmacs LDAP API,  Up: XEmacs LDAP API
-
-LDAP Variables
---------------
-
- - Variable: ldap-default-host
-     The default LDAP server hostname.  A TCP port number can be
-     appended to that name using a colon as a separator.
-
- - Variable: ldap-default-port
-     Default TCP port for LDAP connections.  Initialized from the LDAP
-     library. Default value is 389.
-
- - Variable: ldap-default-base
-     Default base for LDAP searches.  This is a string using the syntax
-     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
-     An alist of per host options for LDAP transactions.  The list
-     elements look like `(HOST PROP1 VAL1 PROP2 VAL2 ...)' HOST is the
-     name of an LDAP server. A TCP port number can be appended to that
-     name using a colon as a separator.  PROPN and VALN are
-     property/value pairs describing parameters for the server.  Valid
-     properties:
-    `binddn'
-          The distinguished name of the user to bind as.  This may look
-          like `cn=Babs Jensen,o=ACME,c=US', see RFC 1779 for details.
-
-    `passwd'
-          The password to use for authentication.
-
-    `auth'
-          The authentication method to use, possible values depend on
-          the LDAP library XEmacs was compiled with, they may include
-          `simple', `krbv41' and `krbv42'.
-
-    `base'
-          The base for the search. This may look like `cÿ, o¬me', see
-          RFC 1779 for syntax details.
-
-    `scope'
-          One of the symbols `base', `onelevel' or `subtree' indicating
-          the scope of the search limited to a base object, to a single
-          level or to the whole subtree.
-
-    `deref'
-          The dereference policy is one of the symbols `never',
-          `always', `search' or `find' and defines how aliases are
-          dereferenced.
-         `never'
-               Aliases are never dereferenced
-
-         `always'
-               Aliases are always dereferenced
-
-         `search'
-               Aliases are dereferenced when searching
-
-         `find'
-               Aliases are dereferenced when locating the base object
-               for the search
-
-    `timelimit'
-          The timeout limit for the connection in seconds.
-
-    `sizelimit'
-          The maximum number of matches to return for searches
-          performed on this connection.
-
- - Variable: ldap-verbose
-     If non-`nil', LDAP operations will echo progress messages.
-     Defaults to `nil'.
-
-\1f
-File: lispref.info,  Node: The High-Level LDAP API,  Next: The Low-Level LDAP API,  Prev: LDAP Variables,  Up: XEmacs LDAP API
-
-The High-Level LDAP API
------------------------
-
-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::.
-
-   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.
-
- - Command: 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.  If WITHDN is
-     non-`nil' each entry in the result will be prepended with its
-     distinguished name DN.  Additional search parameters can be
-     specified through `ldap-host-parameters-alist'.  The function
-     returns a list of matching entries.  Each entry is itself an alist
-     of attribute/value pairs optionally preceded by the DN of the
-     entry according to the value of WITHDN.
-
- - Function: ldap-add-entries entries &optional host binddn passwd
-     Add entries to an LDAP directory.  ENTRIES is a list of entry
-     specifications of the form `(DN (ATTR . VALUE) (ATTR . VALUE) ...)'
-     where DN the distinguished name of an entry to add, the following
-     are cons cells containing attribute/value string pairs.  HOST is
-     the LDAP host, defaulting to `ldap-default-host'.  BINDDN is the
-     DN to bind as to the server.  PASSWD is the corresponding password.
-
- - Function: ldap-modify-entries entry-mods &optional host binddn passwd
-     Modify entries of an LDAP directory.  ENTRY_MODS is a list of
-     entry modifications of the form `(DN MOD-SPEC1 MOD-SPEC2 ...)'
-     where DN is the distinguished name of the entry to modify, the
-     following are modification specifications.  A modification
-     specification is itself a list of the form `(MOD-OP ATTR VALUE1
-     VALUE2 ...)' MOD-OP and ATTR are mandatory, VALUES are optional
-     depending on MOD-OP.  MOD-OP is the type of modification, one of
-     the symbols `add', `delete' or `replace'. ATTR is the LDAP
-     attribute type to modify.  HOST is the LDAP host, defaulting to
-     `ldap-default-host'.  BINDDN is the DN to bind as to the server.
-     PASSWD is the corresponding password.
-
- - Function: ldap-delete-entries dn &optional host binddn passwd
-     Delete an entry from an LDAP directory.  DN is the distinguished
-     name of an entry to delete or a list of those.  HOST is the LDAP
-     host, defaulting to `ldap-default-host'.  BINDDN is the DN to bind
-     as to the server.  PASSWD is the corresponding password.
-
-\1f
-File: lispref.info,  Node: The Low-Level LDAP API,  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::
-* Low-level Operations on a LDAP Server::
-
index 74c0357..6615f42 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.6 from
+This is ../info/lispref.info, produced by makeinfo version 4.8 from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -50,29 +50,1050 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Flow Control,  Next: Batch Mode,  Prev: Terminal Output,  Up: System Interface
+
+57.10 Flow Control
+==================
+
+This section attempts to answer the question "Why does XEmacs choose to
+use flow-control characters in its command character set?"  For a
+second view on this issue, read the comments on flow control in the
+`emacs/INSTALL' file from the distribution; for help with Termcap
+entries and DEC terminal concentrators, see `emacs/etc/TERMS'.
+
+   At one time, most terminals did not need flow control, and none used
+`C-s' and `C-q' for flow control.  Therefore, the choice of `C-s' and
+`C-q' as command characters was uncontroversial.  XEmacs, for economy
+of keystrokes and portability, used nearly all the ASCII control
+characters, with mnemonic meanings when possible; thus, `C-s' for
+search and `C-q' for quote.
+
+   Later, some terminals were introduced which required these characters
+for flow control.  They were not very good terminals for full-screen
+editing, so XEmacs maintainers did not pay attention.  In later years,
+flow control with `C-s' and `C-q' became widespread among terminals,
+but by this time it was usually an option.  And the majority of users,
+who can turn flow control off, were unwilling to switch to less
+mnemonic key bindings for the sake of flow control.
+
+   So which usage is "right", XEmacs's or that of some terminal and
+concentrator manufacturers?  This question has no simple answer.
+
+   One reason why we are reluctant to cater to the problems caused by
+`C-s' and `C-q' is that they are gratuitous.  There are other
+techniques (albeit less common in practice) for flow control that
+preserve transparency of the character stream.  Note also that their use
+for flow control is not an official standard.  Interestingly, on the
+model 33 teletype with a paper tape punch (which is very old), `C-s'
+and `C-q' were sent by the computer to turn the punch on and off!
+
+   As X servers and other window systems replace character-only
+terminals, this problem is gradually being cured.  For the mean time,
+XEmacs provides a convenient way of enabling flow control if you want
+it: call the function `enable-flow-control'.
+
+ -- Command: enable-flow-control &optional argument
+     This function enables use of `C-s' and `C-q' for output flow
+     control, and provides the characters `C-\' and `C-^' as aliases
+     for them using `keyboard-translate-table' (*note Translating
+     Input::).
+
+     With optional argument ARGUMENT (interactively the prefix
+     argument), enable flow control mode if ARGUMENT is positive; else
+     disable it.
+
+   You can use the function `enable-flow-control-on' in your `.emacs'
+file to enable flow control automatically on certain terminal types.
+
+ -- Function: enable-flow-control-on &rest termtypes
+     This function enables flow control, and the aliases `C-\' and
+     `C-^', if the terminal type is one of TERMTYPES.  For example:
+
+          (enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
+
+   Here is how `enable-flow-control' does its job:
+
+  1. It sets CBREAK mode for terminal input, and tells the operating
+     system to handle flow control, with `(set-input-mode nil t)'.
+
+  2. It sets up `keyboard-translate-table' to translate `C-\' and `C-^'
+     into `C-s' and `C-q'.  Except at its very lowest level, XEmacs
+     never knows that the characters typed were anything but `C-s' and
+     `C-q', so you can in effect type them as `C-\' and `C-^' even when
+     they are input for other commands.  *Note Translating Input::.
+
+   If the terminal is the source of the flow control characters, then
+once you enable kernel flow control handling, you probably can make do
+with less padding than normal for that terminal.  You can reduce the
+amount of padding by customizing the Termcap entry.  You can also
+reduce it by setting `baud-rate' to a smaller value so that XEmacs uses
+a smaller speed when calculating the padding needed.  *Note Terminal
+Output::.
+
+\1f
+File: lispref.info,  Node: Batch Mode,  Prev: Flow Control,  Up: System Interface
+
+57.11 Batch Mode
+================
+
+The command line option `-batch' causes XEmacs to run noninteractively.
+In this mode, XEmacs does not read commands from the terminal, it does
+not alter the terminal modes, and it does not expect to be outputting
+to an erasable screen.  The idea is that you specify Lisp programs to
+run; when they are finished, XEmacs should exit.  The way to specify
+the programs to run is with `-l FILE', which loads the library named
+FILE, and `-f FUNCTION', which calls FUNCTION with no arguments.
+
+   Any Lisp program output that would normally go to the echo area,
+either using `message' or using `prin1', etc., with `t' as the stream,
+goes instead to XEmacs's standard error descriptor when in batch mode.
+Thus, XEmacs behaves much like a noninteractive application program.
+(The echo area output that XEmacs itself normally generates, such as
+command echoing, is suppressed entirely.)
+
+ -- Function: noninteractive
+     This function returns non-`nil' when XEmacs is running in batch
+     mode.
+
+ -- Variable: noninteractive
+     This variable is non-`nil' when XEmacs is running in batch mode.
+     Setting this variable to `nil', however, will not change whether
+     XEmacs is running in batch mode, and will not change the return
+     value of the `noninteractive' function.
+
+\1f
+File: lispref.info,  Node: X-Windows,  Next: ToolTalk Support,  Prev: System Interface,  Up: Top
+
+58 Functions Specific to the X Window System
+********************************************
+
+XEmacs provides the concept of "devices", which generalizes connections
+to an X server, a TTY device, etc.  Most information about an X server
+that XEmacs is connected to can be determined through general console
+and device functions.  *Note Consoles and Devices::.  However, there
+are some features of the X Window System that do not generalize well,
+and they are covered specially here.
+
+* Menu:
+
+* X Selections::                Transferring text to and from other X clients.
+* X Server::                    Information about the X server connected to
+                                  a particular device.
+* X Miscellaneous::             Other X-specific functions and variables.
+
+\1f
+File: lispref.info,  Node: X Selections,  Next: X Server,  Up: X-Windows
+
+58.1 X Selections
+=================
+
+The X server records a set of "selections" which permit transfer of
+data between application programs.  The various selections are
+distinguished by "selection types", represented in XEmacs by symbols.
+X clients including XEmacs can read or set the selection for any given
+type.
+
+ -- Function: x-own-selection data &optional type
+     This function sets a "selection" in the X server.  It takes two
+     arguments: a value, DATA, and the selection type TYPE to assign it
+     to.  DATA may be a string, a cons of two markers, or an extent.
+     In the latter cases, the selection is considered to be the text
+     between the markers, or between the extent's endpoints.
+
+     Each possible TYPE has its own selection value, which changes
+     independently.  The usual values of TYPE are `PRIMARY' and
+     `SECONDARY'; these are symbols with upper-case names, in accord
+     with X Windows conventions.  The default is `PRIMARY'.
+
+     (In FSF Emacs, this function is called `x-set-selection' and takes
+     different arguments.)
+
+ -- Function: x-get-selection
+     This function accesses selections set up by XEmacs or by other X
+     clients.  It returns the value of the current primary selection.
+
+ -- Function: x-disown-selection &optional secondary-p
+     Assuming we own the selection, this function disowns it.  If
+     SECONDARY-P is non-`nil', the secondary selection instead of the
+     primary selection is discarded.
+
+   The X server also has a set of numbered "cut buffers" which can
+store text or other data being moved between applications.  Cut buffers
+are considered obsolete, but XEmacs supports them for the sake of X
+clients that still use them.
+
+ -- Function: x-get-cutbuffer &optional n
+     This function returns the contents of cut buffer number N. (This
+     function is called `x-get-cut-buffer' in FSF Emacs.)
+
+ -- Function: x-store-cutbuffer string &optional push
+     This function stores STRING into the first cut buffer (cut buffer
+     0).
+
+     Normally, the contents of the first cut buffer are simply replaced
+     by STRING.  However, if optional argument PUSH is non-`nil', the
+     cut buffers are rotated.  This means that the previous value of
+     the first cut buffer moves to the second cut buffer, and the
+     second to the third, and so on, moving the other values down
+     through the series of cut buffers, kill-ring-style.  There are 8
+     cut buffers altogether.
+
+     Cut buffers are considered obsolete; you should use selections
+     instead.
+
+     This function has no effect if support for cut buffers was not
+     compiled in.
+
+     This function is called `x-set-cut-buffer' in FSF Emacs.
+
+\1f
+File: lispref.info,  Node: X Server,  Next: X Miscellaneous,  Prev: X Selections,  Up: X-Windows
+
+58.2 X Server
+=============
+
+This section describes how to access and change the overall status of
+the X server XEmacs is using.
+
+* Menu:
+
+* Resources::                   Getting resource values from the server.
+* Server Data::                 Getting info about the X server.
+* Grabs::                       Restricting access to the server by other apps.
+
+\1f
+File: lispref.info,  Node: Resources,  Next: Server Data,  Up: X Server
+
+58.2.1 Resources
+----------------
+
+ -- Function: default-x-device
+     This function return the default X device for resourcing.  This is
+     the first-created X device that still exists.
+
+ -- Function: x-get-resource name class type &optional locale device
+          noerror
+     This function retrieves a resource value from the X resource
+     manager.
+
+        * The first arg is the name of the resource to retrieve, such as
+          `"font"'.
+
+        * The second arg is the class of the resource to retrieve, like
+          `"Font"'.
+
+        * The third arg should be one of the symbols `string',
+          `integer', `natnum', or `boolean', specifying the type of
+          object that the database is searched for.
+
+        * The fourth arg is the locale to search for the resources on,
+          and can currently be a buffer, a frame, a device, or the
+          symbol `global'.  If omitted, it defaults to `global'.
+
+        * The fifth arg is the device to search for the resources on.
+          (The resource database for a particular device is constructed
+          by combining non-device- specific resources such any
+          command-line resources specified and any app-defaults files
+          found [or the fallback resources supplied by XEmacs, if no
+          app-defaults file is found] with device-specific resources
+          such as those supplied using `xrdb'.) If omitted, it defaults
+          to the device of LOCALE, if a device can be derived (i.e. if
+          LOCALE is a frame or device), and otherwise defaults to the
+          value of `default-x-device'.
+
+        * The sixth arg NOERROR, if non-`nil', means do not signal an
+          error if a bogus resource specification was retrieved (e.g.
+          if a non-integer was given when an integer was requested).
+          In this case, a warning is issued instead.
+
+     The resource names passed to this function are looked up relative
+     to the locale.
+
+     If you want to search for a subresource, you just need to specify
+     the resource levels in NAME and CLASS.  For example, NAME could be
+     `"modeline.attributeFont"', and CLASS `"Face.AttributeFont"'.
+
+     Specifically,
+
+       1. If LOCALE is a buffer, a call
+
+                   `(x-get-resource "foreground" "Foreground" 'string SOME-BUFFER)'
+
+          is an interface to a C call something like
+
+                   `XrmGetResource (db, "xemacs.buffer.BUFFER-NAME.foreground",
+                                       "Emacs.EmacsLocaleType.EmacsBuffer.Foreground",
+                                       "String");'
+
+       2. If LOCALE is a frame, a call
+
+                   `(x-get-resource "foreground" "Foreground" 'string SOME-FRAME)'
+
+          is an interface to a C call something like
+
+                   `XrmGetResource (db, "xemacs.frame.FRAME-NAME.foreground",
+                                       "Emacs.EmacsLocaleType.EmacsFrame.Foreground",
+                                       "String");'
+
+       3. If LOCALE is a device, a call
+
+                   `(x-get-resource "foreground" "Foreground" 'string SOME-DEVICE)'
+
+          is an interface to a C call something like
+
+                   `XrmGetResource (db, "xemacs.device.DEVICE-NAME.foreground",
+                                       "Emacs.EmacsLocaleType.EmacsDevice.Foreground",
+                                       "String");'
+
+       4. If LOCALE is the symbol `global', a call
+
+                   `(x-get-resource "foreground" "Foreground" 'string 'global)'
+
+          is an interface to a C call something like
+
+                   `XrmGetResource (db, "xemacs.foreground",
+                                       "Emacs.Foreground",
+                                       "String");'
+
+     Note that for `global', no prefix is added other than that of the
+     application itself; thus, you can use this locale to retrieve
+     arbitrary application resources, if you really want to.
+
+     The returned value of this function is `nil' if the queried
+     resource is not found.  If TYPE is `string', a string is returned,
+     and if it is `integer', an integer is returned.  If TYPE is
+     `boolean', then the returned value is the list `(t)' for true,
+     `(nil)' for false, and is `nil' to mean "unspecified".
+
+ -- Function: x-put-resource resource-line &optional device
+     This function adds a resource to the resource database for DEVICE.
+     RESOURCE-LINE specifies the resource to add and should be a
+     standard resource specification.
+
+ -- Variable: x-emacs-application-class
+     This variable holds The X application class of the XEmacs process.
+     This controls, among other things, the name of the "app-defaults"
+     file that XEmacs will use.  For changes to this variable to take
+     effect, they must be made before the connection to the X server is
+     initialized, that is, this variable may only be changed before
+     XEmacs is dumped, or by setting it in the file
+     `lisp/term/x-win.el'.
+
+     By default, this variable is `nil' at startup.  When the connection
+     to the X server is first initialized, the X resource database will
+     be consulted and the value will be set according to whether any
+     resources are found for the application class "XEmacs".
+
+\1f
+File: lispref.info,  Node: Server Data,  Next: Grabs,  Prev: Resources,  Up: X Server
+
+58.2.2 Data about the X Server
+------------------------------
+
+This section describes functions and a variable that you can use to get
+information about the capabilities and origin of the X server
+corresponding to a particular device.  The device argument is generally
+optional and defaults to the selected device.
+
+ -- Function: x-server-version &optional device
+     This function returns the list of version numbers of the X server
+     DEVICE is on.  The returned value is a list of three integers: the
+     major and minor version numbers of the X protocol in use, and the
+     vendor-specific release number.
+
+ -- Function: x-server-vendor &optional device
+     This function returns the vendor supporting the X server DEVICE is
+     on.
+
+ -- Function: x-display-visual-class &optional device
+     This function returns the visual class of the display DEVICE is
+     on.  The value is one of the symbols `static-gray', `gray-scale',
+     `static-color', `pseudo-color', `true-color', and `direct-color'.
+     (Note that this is different from previous versions of XEmacs,
+     which returned `StaticGray', `GrayScale', etc.)
+
+\1f
+File: lispref.info,  Node: Grabs,  Prev: Server Data,  Up: X Server
+
+58.2.3 Restricting Access to the Server by Other Apps
+-----------------------------------------------------
+
+ -- Function: x-grab-keyboard &optional device
+     This function grabs the keyboard on the given device (defaulting
+     to the selected one).  So long as the keyboard is grabbed, all
+     keyboard events will be delivered to XEmacs--it is not possible
+     for other X clients to eavesdrop on them.  Ungrab the keyboard
+     with `x-ungrab-keyboard' (use an `unwind-protect').  Returns `t'
+     if the grab was successful; `nil' otherwise.
+
+ -- Function: x-ungrab-keyboard &optional device
+     This function releases a keyboard grab made with `x-grab-keyboard'.
+
+ -- Function: x-grab-pointer &optional device cursor ignore-keyboard
+     This function grabs the pointer and restricts it to its current
+     window.  If optional DEVICE argument is `nil', the selected device
+     will be used.  If optional CURSOR argument is non-`nil', change
+     the pointer shape to that until `x-ungrab-pointer' is called (it
+     should be an object returned by the `make-cursor' function).  If
+     the second optional argument IGNORE-KEYBOARD is non-`nil', ignore
+     all keyboard events during the grab.  Returns `t' if the grab is
+     successful, `nil' otherwise.
+
+ -- Function: x-ungrab-pointer &optional device
+     This function releases a pointer grab made with `x-grab-pointer'.
+     If optional first arg DEVICE is `nil' the selected device is used.
+     If it is `t' the pointer will be released on all X devices.
+
+\1f
+File: lispref.info,  Node: X Miscellaneous,  Prev: X Server,  Up: X-Windows
+
+58.3 Miscellaneous X Functions and Variables
+============================================
+
+ -- Variable: x-bitmap-file-path
+     This variable holds a list of the directories in which X bitmap
+     files may be found.  If `nil', this is initialized from the
+     `"*bitmapFilePath"' resource.  This is used by the
+     `make-image-instance' function (however, note that if the
+     environment variable `XBMLANGPATH' is set, it is consulted first).
+
+ -- Variable: x-library-search-path
+     This variable holds the search path used by `read-color' to find
+     `rgb.txt'.
+
+ -- Function: x-valid-keysym-name-p keysym
+     This function returns true if KEYSYM names a keysym that the X
+     library knows about.  Valid keysyms are listed in the files
+     `/usr/include/X11/keysymdef.h' and in `/usr/lib/X11/XKeysymDB', or
+     whatever the equivalents are on your system.
+
+ -- Function: x-window-id &optional frame
+     This function returns the ID of the X11 window.  This gives us a
+     chance to manipulate the Emacs window from within a different
+     program.  Since the ID is an unsigned long, we return it as a
+     string.
+
+ -- Variable: x-allow-sendevents
+     If non-`nil', synthetic events are allowed.  `nil' means they are
+     ignored.  Beware: allowing XEmacs to process SendEvents opens a
+     big security hole.
+
+ -- Function: x-debug-mode arg &optional device
+     With a true arg, make the connection to the X server synchronous.
+     With false, make it asynchronous.  Synchronous connections are
+     much slower, but are useful for debugging. (If you get X errors,
+     make the connection synchronous, and use a debugger to set a
+     breakpoint on `x_error_handler'.  Your backtrace of the C stack
+     will now be useful.  In asynchronous mode, the stack above
+     `x_error_handler' isn't helpful because of buffering.)  If DEVICE
+     is not specified, the selected device is assumed.
+
+     Calling this function is the same as calling the C function
+     `XSynchronize', or starting the program with the `-sync' command
+     line argument.
+
+ -- Variable: x-debug-events
+     If non-zero, debug information about events that XEmacs sees is
+     displayed.  Information is displayed on stderr.  Currently defined
+     values are:
+
+        * 1 == non-verbose output
+
+        * 2 == verbose output
+
+\1f
+File: lispref.info,  Node: ToolTalk Support,  Next: LDAP Support,  Prev: X-Windows,  Up: Top
+
+59 ToolTalk Support
+*******************
+
+* Menu:
+
+* XEmacs ToolTalk API Summary::
+* Sending Messages::
+* Receiving Messages::
+
+\1f
+File: lispref.info,  Node: XEmacs ToolTalk API Summary,  Next: Sending Messages,  Up: ToolTalk Support
+
+59.1 XEmacs ToolTalk API Summary
+================================
+
+The XEmacs Lisp interface to ToolTalk is similar, at least in spirit,
+to the standard C ToolTalk API.  Only the message and pattern parts of
+the API are supported at present; more of the API could be added if
+needed.  The Lisp interface departs from the C API in a few ways:
+
+   * ToolTalk is initialized automatically at XEmacs startup-time.
+     Messages can only be sent other ToolTalk applications connected to
+     the same X11 server that XEmacs is running on.
+
+   * There are fewer entry points; polymorphic functions with keyword
+     arguments are used instead.
+
+   * The callback interface is simpler and marginally less functional.
+     A single callback may be associated with a message or a pattern;
+     the callback is specified with a Lisp symbol (the symbol should
+     have a function binding).
+
+   * The session attribute for messages and patterns is always
+     initialized to the default session.
+
+   * Anywhere a ToolTalk enum constant, e.g. `TT_SESSION', is valid, one
+     can substitute the corresponding symbol, e.g. `'TT_SESSION'.  This
+     simplifies building lists that represent messages and patterns.
+
+\1f
+File: lispref.info,  Node: Sending Messages,  Next: Receiving Messages,  Prev: XEmacs ToolTalk API Summary,  Up: ToolTalk Support
+
+59.2 Sending Messages
+=====================
+
+* Menu:
+
+* Example of Sending Messages::
+* Elisp Interface for Sending Messages::
+
+\1f
+File: lispref.info,  Node: Example of Sending Messages,  Next: Elisp Interface for Sending Messages,  Up: Sending Messages
+
+59.2.1 Example of Sending Messages
+----------------------------------
+
+Here's a simple example that sends a query to another application and
+then displays its reply.  Both the query and the reply are stored in
+the first argument of the message.
+
+     (defun tooltalk-random-query-handler (msg)
+       (let ((state (get-tooltalk-message-attribute msg 'state)))
+         (cond
+           ((eq state 'TT_HANDLED)
+            (message (get-tooltalk-message-attribute msg arg_val 0)))
+           ((memq state '(TT_FAILED TT_REJECTED))
+            (message "Random query turns up nothing")))))
+
+     (defvar random-query-message
+       '(   class TT_REQUEST
+            scope TT_SESSION
+          address TT_PROCEDURE
+               op "random-query"
+             args '((TT_INOUT "?" "string"))
+         callback tooltalk-random-query-handler))
+
+     (let ((m (make-tooltalk-message random-query-message)))
+       (send-tooltalk-message m))
+
+\1f
+File: lispref.info,  Node: Elisp Interface for Sending Messages,  Prev: Example of Sending Messages,  Up: Sending Messages
+
+59.2.2 Elisp Interface for Sending Messages
+-------------------------------------------
+
+ -- Function: make-tooltalk-message attributes
+     Create a ToolTalk message and initialize its attributes.  The
+     value of ATTRIBUTES must be a list of alternating keyword/values,
+     where keywords are symbols that name valid message attributes.
+     For example:
+
+            (make-tooltalk-message
+              '(class TT_NOTICE
+                scope TT_SESSION
+                address TT_PROCEDURE
+                op "do-something"
+                args ("arg1" 12345 (TT_INOUT "arg3" "string"))))
+
+     Values must always be strings, integers, or symbols that represent
+     ToolTalk constants.  Attribute names are the same as those
+     supported by `set-tooltalk-message-attribute', plus `args'.
+
+     The value of `args' should be a list of message arguments where
+     each message argument has the following form:
+
+             `(mode [value [type]])' or just `value'
+
+     Where MODE is one of `TT_IN', `TT_OUT', or `TT_INOUT' and TYPE is
+     a string.  If TYPE isn't specified then `int' is used if VALUE is
+     a number; otherwise `string' is used.  If TYPE is `string' then
+     VALUE is converted to a string (if it isn't a string already) with
+     `prin1-to-string'.  If only a value is specified then MODE
+     defaults to `TT_IN'.  If MODE is `TT_OUT' then VALUE and TYPE
+     don't need to be specified.  You can find out more about the
+     semantics and uses of ToolTalk message arguments in chapter 4 of
+     the `ToolTalk Programmer's Guide'.
+
+
+ -- Function: send-tooltalk-message msg
+     Send the message on its way.  Once the message has been sent it's
+     almost always a good idea to get rid of it with
+     `destroy-tooltalk-message'.
+
+
+ -- Function: return-tooltalk-message msg &optional mode
+     Send a reply to this message.  The second argument can be `reply',
+     `reject' or `fail'; the default is `reply'.  Before sending a
+     reply, all message arguments whose mode is `TT_INOUT' or `TT_OUT'
+     should have been filled in--see `set-tooltalk-message-attribute'.
+
+
+ -- Function: get-tooltalk-message-attribute msg attribute &optional
+          argn
+     Returns the indicated ToolTalk message attribute.  Attributes are
+     identified by symbols with the same name (underscores and all) as
+     the suffix of the ToolTalk `tt_message_<attribute>' function that
+     extracts the value.  String attribute values are copied and
+     enumerated type values (except disposition) are converted to
+     symbols; e.g. `TT_HANDLER' is `'TT_HANDLER', `uid' and `gid' are
+     represented by fixnums (small integers), `opnum' is converted to a
+     string, and `disposition' is converted to a fixnum.  We convert
+     `opnum' (a C int) to a string (e.g. `123' => `"123"') because
+     there's no guarantee that opnums will fit within the range of
+     XEmacs Lisp integers.
+
+     [TBD] Use the `plist' attribute instead of C API `user' attribute
+     for user-defined message data.  To retrieve the value of a message
+     property, specify the indicator for ARGN.  For example, to get the
+     value of a property called `rflag', use
+
+             (get-tooltalk-message-attribute msg 'plist 'rflag)
+
+     To get the value of a message argument use one of the `arg_val'
+     (strings), `arg_ival' (integers), or `arg_bval' (strings with
+     embedded nulls), attributes.  For example, to get the integer
+     value of the third argument:
+
+             (get-tooltalk-message-attribute msg 'arg_ival 2)
+
+     As you can see, argument numbers are zero-based.  The type of each
+     arguments can be retrieved with the `arg_type' attribute; however
+     ToolTalk doesn't define any semantics for the string value of
+     `arg_type'.  Conventionally `string' is used for strings and `int'
+     for 32 bit integers.  Note that XEmacs Lisp stores the lengths of
+     strings explicitly (unlike C) so treating the value returned by
+     `arg_bval' like a string is fine.
+
+
+ -- Function: set-tooltalk-message-attribute value msg attribute
+          &optional argn
+     Initialize one ToolTalk message attribute.
+
+     Attribute names and values are the same as for
+     `get-tooltalk-message-attribute'.  A property list is provided for
+     user data (instead of the `user' message attribute); see
+     `get-tooltalk-message-attribute'.
+
+     Callbacks are handled slightly differently than in the C ToolTalk
+     API.  The value of CALLBACK should be the name of a function of one
+     argument.  It will be called each time the state of the message
+     changes.  This is usually used to notice when the message's state
+     has changed to `TT_HANDLED' (or `TT_FAILED'), so that reply
+     argument values can be used.
+
+     If one of the argument attributes is specified as `arg_val',
+     `arg_ival', or `arg_bval', then ARGN must be the number of an
+     already created argument.  Arguments can be added to a message
+     with `add-tooltalk-message-arg'.
+
+
+ -- Function: add-tooltalk-message-arg msg mode type &optional value
+     Append one new argument to the message.  MODE must be one of
+     `TT_IN', `TT_INOUT', or `TT_OUT', TYPE must be a string, and VALUE
+     can be a string or an integer.  ToolTalk doesn't define any
+     semantics for TYPE, so only the participants in the protocol
+     you're using need to agree what types mean (if anything).
+     Conventionally `string' is used for strings and `int' for 32 bit
+     integers.  Arguments can initialized by providing a value or with
+     `set-tooltalk-message-attribute'; the latter is necessary if you
+     want to initialize the argument with a string that can contain
+     embedded nulls (use `arg_bval').
+
+
+ -- Function: create-tooltalk-message &optional no-callback
+     Create a new ToolTalk message.  The message's session attribute is
+     initialized to the default session.  Other attributes can be
+     initialized with `set-tooltalk-message-attribute'.
+     `make-tooltalk-message' is the preferred way to create and
+     initialize a message.
+
+     Optional arg NO-CALLBACK says don't add a C-level callback at all.
+     Normally don't do that; just don't specify the Lisp callback when
+     calling `make-tooltalk-message'.
+
+
+ -- Function: destroy-tooltalk-message msg
+     Apply `tt_message_destroy' to the message.  It's not necessary to
+     destroy messages after they've been processed by a message or
+     pattern callback, the Lisp/ToolTalk callback machinery does this
+     for you.
+
+\1f
+File: lispref.info,  Node: Receiving Messages,  Prev: Sending Messages,  Up: ToolTalk Support
+
+59.3 Receiving Messages
+=======================
+
+* Menu:
+
+* Example of Receiving Messages::
+* Elisp Interface for Receiving Messages::
+
+\1f
+File: lispref.info,  Node: Example of Receiving Messages,  Next: Elisp Interface for Receiving Messages,  Up: Receiving Messages
+
+59.3.1 Example of Receiving Messages
+------------------------------------
+
+Here's a simple example of a handler for a message that tells XEmacs to
+display a string in the mini-buffer area.  The message operation is
+called `emacs-display-string'.  Its first (0th) argument is the string
+to display.
+
+     (defun tooltalk-display-string-handler (msg)
+       (message (get-tooltalk-message-attribute msg 'arg_val 0)))
+
+     (defvar display-string-pattern
+       '(category TT_HANDLE
+            scope TT_SESSION
+               op "emacs-display-string"
+         callback tooltalk-display-string-handler))
+
+     (let ((p (make-tooltalk-pattern display-string-pattern)))
+       (register-tooltalk-pattern p))
+
+\1f
+File: lispref.info,  Node: Elisp Interface for Receiving Messages,  Prev: Example of Receiving Messages,  Up: Receiving Messages
+
+59.3.2 Elisp Interface for Receiving Messages
+---------------------------------------------
+
+ -- Function: make-tooltalk-pattern attributes
+     Create a ToolTalk pattern and initialize its attributes.  The
+     value of attributes must be a list of alternating keyword/values,
+     where keywords are symbols that name valid pattern attributes or
+     lists of valid attributes.  For example:
+
+            (make-tooltalk-pattern
+              '(category TT_OBSERVE
+                   scope TT_SESSION
+                      op ("operation1" "operation2")
+                    args ("arg1" 12345 (TT_INOUT "arg3" "string"))))
+
+     Attribute names are the same as those supported by
+     `add-tooltalk-pattern-attribute', plus `'args'.
+
+     Values must always be strings, integers, or symbols that represent
+     ToolTalk constants or lists of same.  When a list of values is
+     provided all of the list elements are added to the attribute.  In
+     the example above, messages whose `op' attribute is `"operation1"'
+     or `"operation2"' would match the pattern.
+
+     The value of ARGS should be a list of pattern arguments where each
+     pattern argument has the following form:
+
+             `(mode [value [type]])' or just `value'
+
+     Where MODE is one of `TT_IN', `TT_OUT', or `TT_INOUT' and TYPE is
+     a string.  If TYPE isn't specified then `int' is used if VALUE is
+     a number; otherwise `string' is used.  If TYPE is `string' then
+     VALUE is converted to a string (if it isn't a string already) with
+     `prin1-to-string'.  If only a value is specified then MODE
+     defaults to `TT_IN'.  If MODE is `TT_OUT' then VALUE and TYPE
+     don't need to be specified.  You can find out more about the
+     semantics and uses of ToolTalk pattern arguments in chapter 3 of
+     the `ToolTalk Programmer's Guide'.
+
+
+ -- Function: register-tooltalk-pattern pattern
+     XEmacs will begin receiving messages that match this pattern.
+
+ -- Function: unregister-tooltalk-pattern pattern
+     XEmacs will stop receiving messages that match this pattern.
+
+ -- Function: add-tooltalk-pattern-attribute value pattern indicator
+     Add one value to the indicated pattern attribute. The names of
+     attributes are the same as the ToolTalk accessors used to set them
+     less the `tooltalk_pattern_' prefix and the `_add' suffix.  For
+     example, the name of the attribute for the
+     `tt_pattern_disposition_add' attribute is `disposition'.  The
+     `category' attribute is handled specially, since a pattern can only
+     be a member of one category (`TT_OBSERVE' or `TT_HANDLE').
+
+     Callbacks are handled slightly differently than in the C ToolTalk
+     API.  The value of CALLBACK should be the name of a function of one
+     argument.  It will be called each time the pattern matches an
+     incoming message.
+
+ -- Function: add-tooltalk-pattern-arg pattern mode vtype &optional
+          value
+     Add one fully-specified argument to a ToolTalk pattern.  MODE must
+     be one of `TT_IN', `TT_INOUT', or `TT_OUT'.  VTYPE must be a
+     string.  VALUE can be an integer, string or `nil'.  If VALUE is an
+     integer then an integer argument (`tt_pattern_iarg_add') is added;
+     otherwise a string argument is added.  At present there's no way
+     to add a binary data argument.
+
+
+ -- Function: create-tooltalk-pattern
+     Create a new ToolTalk pattern and initialize its session attribute
+     to be the default session.
+
+ -- Function: destroy-tooltalk-pattern pattern
+     Apply `tt_pattern_destroy' to the pattern.  This effectively
+     unregisters the pattern.
+
+ -- Function: describe-tooltalk-message msg &optional stream
+     Print the message's attributes and arguments to STREAM.  This is
+     often useful for debugging.
+
+\1f
+File: lispref.info,  Node: LDAP Support,  Next: PostgreSQL Support,  Prev: ToolTalk Support,  Up: Top
+
+60 LDAP Support
+***************
+
+XEmacs can be linked with a LDAP client library to provide Elisp
+primitives to access directory servers using the Lightweight Directory
+Access Protocol.
+
+* Menu:
+
+* Building XEmacs with LDAP support::  How to add LDAP support to XEmacs
+* XEmacs LDAP API::             Lisp access to LDAP functions
+* Syntax of Search Filters::    A brief summary of RFC 1558
+
+\1f
+File: lispref.info,  Node: Building XEmacs with LDAP support,  Next: XEmacs LDAP API,  Prev: LDAP Support,  Up: LDAP Support
+
+60.1 Building XEmacs with LDAP support
+======================================
+
+LDAP support must be added to XEmacs at build time since it requires
+linking to an external LDAP client library.  As of 21.2, XEmacs has been
+successfully built and tested with
+
+   * OpenLDAP 1.2 (`http://www.openldap.org/')
+
+   * University of Michigan's LDAP 3.3
+     (`http://www.umich.edu/~dirsvcs/ldap/')
+
+   * LDAP SDK 1.0 from Netscape Corp. (`http://developer.netscape.com/')
+
+   Other libraries conforming to RFC 1823 will probably work also but
+may require some minor tweaking at C level.
+
+   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.
+
+\1f
+File: lispref.info,  Node: XEmacs LDAP API,  Next: Syntax of Search Filters,  Prev: Building XEmacs with LDAP support,  Up: LDAP Support
+
+60.2 XEmacs LDAP API
+====================
+
+XEmacs LDAP API consists of two layers:  a low-level layer which 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.
+
+   The low-level API should be used directly for very specific purposes
+(such as multiple operations on a connection) only.  The higher-level
+functions provide a more convenient way to access LDAP directories
+hiding the subtleties of handling the connection, translating arguments
+and ensuring compliance with LDAP internationalization rules and formats
+(currently partly implemented only).
+
+* Menu:
+
+* LDAP Variables::              Lisp variables related to LDAP
+* The High-Level LDAP API::     High-level LDAP lisp functions
+* The Low-Level LDAP API::      Low-level LDAP lisp primitives
+* LDAP Internationalization::   I18n variables and functions
+
+\1f
+File: lispref.info,  Node: LDAP Variables,  Next: The High-Level LDAP API,  Prev: XEmacs LDAP API,  Up: XEmacs LDAP API
+
+60.2.1 LDAP Variables
+---------------------
+
+ -- Variable: ldap-default-host
+     The default LDAP server hostname.  A TCP port number can be
+     appended to that name using a colon as a separator.
+
+ -- Variable: ldap-default-port
+     Default TCP port for LDAP connections.  Initialized from the LDAP
+     library. Default value is 389.
+
+ -- Variable: ldap-default-base
+     Default base for LDAP searches.  This is a string using the syntax
+     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
+     An alist of per host options for LDAP transactions.  The list
+     elements look like `(HOST PROP1 VAL1 PROP2 VAL2 ...)' HOST is the
+     name of an LDAP server. A TCP port number can be appended to that
+     name using a colon as a separator.  PROPN and VALN are
+     property/value pairs describing parameters for the server.  Valid
+     properties:
+    `binddn'
+          The distinguished name of the user to bind as.  This may look
+          like `cn=Babs Jensen,o=ACME,c=US', see RFC 1779 for details.
+
+    `passwd'
+          The password to use for authentication.
+
+    `auth'
+          The authentication method to use, possible values depend on
+          the LDAP library XEmacs was compiled with, they may include
+          `simple', `krbv41' and `krbv42'.
+
+    `base'
+          The base for the search. This may look like `cÿ, o¬me', see
+          RFC 1779 for syntax details.
+
+    `scope'
+          One of the symbols `base', `onelevel' or `subtree' indicating
+          the scope of the search limited to a base object, to a single
+          level or to the whole subtree.
+
+    `deref'
+          The dereference policy is one of the symbols `never',
+          `always', `search' or `find' and defines how aliases are
+          dereferenced.
+         `never'
+               Aliases are never dereferenced
+
+         `always'
+               Aliases are always dereferenced
+
+         `search'
+               Aliases are dereferenced when searching
+
+         `find'
+               Aliases are dereferenced when locating the base object
+               for the search
+
+    `timelimit'
+          The timeout limit for the connection in seconds.
+
+    `sizelimit'
+          The maximum number of matches to return for searches
+          performed on this connection.
+
+ -- Variable: ldap-verbose
+     If non-`nil', LDAP operations will echo progress messages.
+     Defaults to `nil'.
+
+\1f
+File: lispref.info,  Node: The High-Level LDAP API,  Next: The Low-Level LDAP API,  Prev: LDAP Variables,  Up: XEmacs LDAP API
+
+60.2.2 The High-Level LDAP API
+------------------------------
+
+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::.
+
+   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.
+
+ -- Command: 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.  If WITHDN is
+     non-`nil' each entry in the result will be prepended with its
+     distinguished name DN.  Additional search parameters can be
+     specified through `ldap-host-parameters-alist'.  The function
+     returns a list of matching entries.  Each entry is itself an alist
+     of attribute/value pairs optionally preceded by the DN of the
+     entry according to the value of WITHDN.
+
+ -- Function: ldap-add-entries entries &optional host binddn passwd
+     Add entries to an LDAP directory.  ENTRIES is a list of entry
+     specifications of the form `(DN (ATTR . VALUE) (ATTR . VALUE) ...)'
+     where DN the distinguished name of an entry to add, the following
+     are cons cells containing attribute/value string pairs.  HOST is
+     the LDAP host, defaulting to `ldap-default-host'.  BINDDN is the
+     DN to bind as to the server.  PASSWD is the corresponding password.
+
+ -- Function: ldap-modify-entries entry-mods &optional host binddn
+          passwd
+     Modify entries of an LDAP directory.  ENTRY_MODS is a list of
+     entry modifications of the form `(DN MOD-SPEC1 MOD-SPEC2 ...)'
+     where DN is the distinguished name of the entry to modify, the
+     following are modification specifications.  A modification
+     specification is itself a list of the form `(MOD-OP ATTR VALUE1
+     VALUE2 ...)' MOD-OP and ATTR are mandatory, VALUES are optional
+     depending on MOD-OP.  MOD-OP is the type of modification, one of
+     the symbols `add', `delete' or `replace'. ATTR is the LDAP
+     attribute type to modify.  HOST is the LDAP host, defaulting to
+     `ldap-default-host'.  BINDDN is the DN to bind as to the server.
+     PASSWD is the corresponding password.
+
+ -- Function: ldap-delete-entries dn &optional host binddn passwd
+     Delete an entry from an LDAP directory.  DN is the distinguished
+     name of an entry to delete or a list of those.  HOST is the LDAP
+     host, defaulting to `ldap-default-host'.  BINDDN is the DN to bind
+     as to the server.  PASSWD is the corresponding password.
+
+\1f
+File: lispref.info,  Node: The Low-Level LDAP API,  Next: LDAP Internationalization,  Prev: The High-Level LDAP API,  Up: XEmacs LDAP API
+
+60.2.3 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::
+* Low-level Operations on a LDAP Server::
+
+\1f
 File: lispref.info,  Node: The LDAP Lisp Object,  Next: Opening and Closing a LDAP Connection,  Prev: The Low-Level LDAP API,  Up: The Low-Level LDAP API
 
-The LDAP Lisp Object
-....................
+60.2.3.1 The LDAP Lisp Object
+.............................
 
 An internal built-in `ldap' lisp object represents a LDAP connection.
 
- - Function: ldapp object
+ -- Function: ldapp object
      This function returns non-`nil' if OBJECT is a `ldap' object.
 
- - Function: ldap-host ldap
+ -- Function: ldap-host ldap
      Return the server host of the connection represented by LDAP.
 
- - Function: ldap-live-p ldap
+ -- Function: ldap-live-p ldap
      Return non-`nil' if LDAP is an active LDAP connection.
 
 \1f
 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
-.....................................
+60.2.3.2 Opening and Closing a LDAP Connection
+..............................................
 
- - Function: ldap-open host &optional plist
+ -- Function: ldap-open host &optional plist
      Open a LDAP connection to HOST.  PLIST is a property list
      containing additional parameters for the connection.  Valid keys
      in that list are:
@@ -118,14 +1139,14 @@ Opening and Closing a LDAP Connection
           The maximum number of matches to return for searches
           performed on this connection.
 
- - Function: ldap-close ldap
+ -- Function: ldap-close ldap
      Close the connection represented by LDAP.
 
 \1f
 File: lispref.info,  Node: Low-level Operations on a LDAP Server,  Prev: Opening and Closing a LDAP Connection,  Up: The Low-Level LDAP API
 
-Low-level Operations on a LDAP Server
-.....................................
+60.2.3.3 Low-level Operations on a LDAP Server
+..............................................
 
 `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
@@ -133,7 +1154,7 @@ 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-basic ldap filter &optional base scope attrs
+ -- Function: ldap-search-basic ldap filter &optional base scope attrs
           attrsonly withdn verbose
      Perform a search on an open connection LDAP created with
      `ldap-open'.  FILTER is a filter string for the search *note
@@ -152,13 +1173,13 @@ made on the same connection, then the session must be closed with
      attribute/value pairs optionally preceded by the DN of the entry
      according to the value of WITHDN.
 
- - Function: ldap-add ldap dn entry
+ -- 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
+ -- 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
@@ -168,7 +1189,7 @@ made on the same connection, then the session must be closed with
      the symbols `add', `delete' or `replace'. ATTR is the LDAP
      attribute type to modify.
 
- - Function: ldap-delete ldap dn
+ -- 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.
@@ -176,8 +1197,8 @@ made on the same connection, then the session must be closed with
 \1f
 File: lispref.info,  Node: LDAP Internationalization,  Prev: The Low-Level LDAP API,  Up: XEmacs LDAP API
 
-LDAP Internationalization
--------------------------
+60.2.4 LDAP Internationalization
+--------------------------------
 
 The XEmacs LDAP API provides basic internationalization features based
 on the LDAP v3 specification (essentially RFC2252 on "LDAP v3 Attribute
@@ -185,7 +1206,7 @@ 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
+ -- 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
@@ -199,67 +1220,67 @@ should be considered experimental.  The framework is in place though.
 \1f
 File: lispref.info,  Node: LDAP Internationalization Variables,  Next: Encoder/Decoder Functions,  Prev: LDAP Internationalization,  Up: LDAP Internationalization
 
-LDAP Internationalization Variables
-...................................
+60.2.4.1 LDAP Internationalization Variables
+............................................
 
- - Variable: ldap-ignore-attribute-codings
+ -- Variable: ldap-ignore-attribute-codings
      If non-`nil', no encoding/decoding will be performed LDAP
      attribute values
 
- - Variable: ldap-coding-system
+ -- 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
+ -- 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
+ -- 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
+ -- 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
+ -- Variable: ldap-attribute-syntaxes-alist
      A map of LDAP attribute names to their type object id minor number.
      This table is built from RFC2252 Section 5 and RFC2256 Section 5.
 
 \1f
 File: lispref.info,  Node: Encoder/Decoder Functions,  Prev: LDAP Internationalization Variables,  Up: LDAP Internationalization
 
-Encoder/Decoder Functions
-.........................
+60.2.4.2 Encoder/Decoder Functions
+..................................
 
- - Function: ldap-encode-boolean bool
+ -- Function: ldap-encode-boolean bool
      A function that encodes an elisp boolean BOOL into a LDAP boolean
      string representation.
 
- - Function: ldap-decode-boolean str
+ -- Function: ldap-decode-boolean str
      A function that decodes a LDAP boolean string representation STR
      into an elisp boolean.
 
- - Function: ldap-decode-string str
+ -- Function: ldap-decode-string str
      Decode a string STR according to `ldap-coding-system'.
 
- - Function: ldap-encode-string str
+ -- Function: ldap-encode-string str
      Encode a string STR according to `ldap-coding-system'.
 
- - Function: ldap-decode-address str
+ -- 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
+ -- 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.
@@ -267,8 +1288,8 @@ Encoder/Decoder Functions
 \1f
 File: lispref.info,  Node: Syntax of Search Filters,  Prev: XEmacs LDAP API,  Up: LDAP Support
 
-Syntax of Search Filters
-========================
+60.3 Syntax of Search Filters
+=============================
 
 LDAP search functions use RFC1558 syntax to describe the search filter.
 In that syntax simple filters have the form:
@@ -302,8 +1323,8 @@ is `John'.
 \1f
 File: lispref.info,  Node: PostgreSQL Support,  Next: Internationalization,  Prev: LDAP Support,  Up: Top
 
-PostgreSQL Support
-******************
+61 PostgreSQL Support
+*********************
 
 XEmacs can be linked with PostgreSQL libpq run-time support to provide
 relational database access from Emacs Lisp code.
@@ -317,15 +1338,15 @@ relational database access from Emacs Lisp code.
 \1f
 File: lispref.info,  Node: Building XEmacs with PostgreSQL support,  Next: XEmacs PostgreSQL libpq API,  Up: PostgreSQL Support
 
-Building XEmacs with PostgreSQL support
-=======================================
+61.1 Building XEmacs with PostgreSQL support
+============================================
 
 XEmacs PostgreSQL support requires linking to the PostgreSQL libpq
 library.  Describing how to build and install PostgreSQL is beyond the
 scope of this document.  See the PostgreSQL manual for details.
 
    If you have installed XEmacs from one of the binary kits on
-(<ftp://ftp.xemacs.org/>), or are using an XEmacs binary from a CD ROM,
+(`ftp://ftp.xemacs.org/'), or are using an XEmacs binary from a CD ROM,
 you may have XEmacs PostgreSQL support by default.  `M-x
 describe-installation' will tell you if you do.
 
@@ -345,8 +1366,8 @@ V6.5.  In particular, asynchronous queries are supported.
 \1f
 File: lispref.info,  Node: XEmacs PostgreSQL libpq API,  Next: XEmacs PostgreSQL libpq Examples,  Prev: Building XEmacs with PostgreSQL support,  Up: PostgreSQL Support
 
-XEmacs PostgreSQL libpq API
-===========================
+61.2 XEmacs PostgreSQL libpq API
+================================
 
 The XEmacs PostgreSQL API is intended to be a policy-free, low-level
 binding to libpq.  The intent is to provide all the basic functionality
@@ -392,8 +1413,8 @@ original edition of this manual were run against Postgres 7.0beta1.
 \1f
 File: lispref.info,  Node: libpq Lisp Variables,  Next: libpq Lisp Symbols and DataTypes,  Prev: XEmacs PostgreSQL libpq API,  Up: XEmacs PostgreSQL libpq API
 
-libpq Lisp Variables
---------------------
+61.2.1 libpq Lisp Variables
+---------------------------
 
 Various Unix environment variables are used by libpq to provide defaults
 to the many different parameters.  In the XEmacs Lisp API, these
@@ -402,38 +1423,38 @@ convenient access to Lisp Code.  These variables are passed to the
 backend database server during the establishment of a database
 connection and when the `pq-setenv' call is made.
 
- - Variable: pg:host
+ -- Variable: pg:host
      Initialized from the `PGHOST' environment variable.  The default
      host to connect to.
 
- - Variable: pg:user
+ -- Variable: pg:user
      Initialized from the `PGUSER' environment variable.  The default
      database user name.
 
- - Variable: pg:options
+ -- Variable: pg:options
      Initialized from the `PGOPTIONS' environment variable.  Default
      additional server options.
 
- - Variable: pg:port
+ -- Variable: pg:port
      Initialized from the `PGPORT' environment variable.  The default
      TCP port to connect to.
 
- - Variable: pg:tty
+ -- Variable: pg:tty
      Initialized from the `PGTTY' environment variable.  The default
      debugging TTY.
 
      Compatibility note:  Debugging TTYs are turned off in the XEmacs
      Lisp binding.
 
- - Variable: pg:database
+ -- Variable: pg:database
      Initialized from the `PGDATABASE' environment variable.  The
      default database to connect to.
 
- - Variable: pg:realm
+ -- Variable: pg:realm
      Initialized from the `PGREALM' environment variable.  The default
      Kerberos realm.
 
- - Variable: pg:client-encoding
+ -- Variable: pg:client-encoding
      Initialized from the `PGCLIENTENCODING' environment variable.  The
      default client encoding.
 
@@ -442,7 +1463,7 @@ connection and when the `pq-setenv' call is made.
      to 7.0.  In the current implementation, client encoding is
      equivalent to the `file-name-coding-system' format.
 
- - Variable: pg:authtype
+ -- Variable: pg:authtype
      Initialized from the `PGAUTHTYPE' environment variable.  The
      default authentication scheme used.
 
@@ -450,27 +1471,27 @@ connection and when the `pq-setenv' call is made.
      after 6.5.  It is not implemented at all in the XEmacs Lisp
      binding.
 
- - Variable: pg:geqo
+ -- Variable: pg:geqo
      Initialized from the `PGGEQO' environment variable.  Genetic
      optimizer options.
 
- - Variable: pg:cost-index
+ -- Variable: pg:cost-index
      Initialized from the `PGCOSTINDEX' environment variable.  Cost
      index options.
 
- - Variable: pg:cost-heap
+ -- Variable: pg:cost-heap
      Initialized from the `PGCOSTHEAP' environment variable.  Cost heap
      options.
 
- - Variable: pg:tz
+ -- Variable: pg:tz
      Initialized from the `PGTZ' environment variable.  Default
      timezone.
 
- - Variable: pg:date-style
+ -- Variable: pg:date-style
      Initialized from the `PGDATESTYLE' environment variable.  Default
      date style in returned date objects.
 
- - Variable: pg-coding-system
+ -- Variable: pg-coding-system
      This is a variable controlling which coding system is used to
      encode non-ASCII strings sent to the database.
 
@@ -479,32 +1500,32 @@ connection and when the `pq-setenv' call is made.
 \1f
 File: lispref.info,  Node: libpq Lisp Symbols and DataTypes,  Next: Synchronous Interface Functions,  Prev: libpq Lisp Variables,  Up: XEmacs PostgreSQL libpq API
 
-libpq Lisp Symbols and Datatypes
---------------------------------
+61.2.2 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
+ -- Symbol: pgres::polling-failed
      Undocumented.  A fatal error has occurred during processing of an
      asynchronous operation.
 
- - Symbol: pgres::polling-reading
+ -- 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
+ -- 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
+ -- Symbol: pgres::polling-ok
      An asynchronous operation has successfully completed.
 
- - Symbol: pgres::polling-active
+ -- 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
+ -- 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.
@@ -605,7 +1626,7 @@ directly by `pq-clear' the printed representation will look like:
    The following set of functions are accessors to various data in the
 PGresult object.
 
- - Function: pq-result-status result
+ -- 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'
@@ -637,7 +1658,7 @@ PGresult object.
           Undocumented.  An error has occurred in processing the query
           and the operation was not completed.
 
- - Function: pq-res-status result
+ -- Function: pq-res-status result
      Return the query result status as a string, not a symbol.  RESULT
      is a PGresult object.
 
@@ -646,7 +1667,7 @@ PGresult object.
           (pq-res-status R)
                => "PGRES_TUPLES_OK"
 
- - Function: pq-result-error-message result
+ -- Function: pq-result-error-message result
      Return an error message generated by the query, if any.  RESULT is
      a PGresult object.
 
@@ -656,7 +1677,7 @@ PGresult object.
                => "ERROR:  parser: parse error at or near \"-\"
           "
 
- - Function: pq-ntuples result
+ -- Function: pq-ntuples result
      Return the number of tuples in the query result.  RESULT is a
      PGresult object.
 
@@ -665,7 +1686,7 @@ PGresult object.
           (pq-ntuples R)
                => 5
 
- - Function: pq-nfields result
+ -- Function: pq-nfields result
      Return the number of fields in each tuple of the query result.
      RESULT is a PGresult object.
 
@@ -674,7 +1695,7 @@ PGresult object.
           (pq-nfields R)
                => 3
 
- - Function: pq-binary-tuples result
+ -- Function: pq-binary-tuples result
      Returns t if binary tuples are present in the results, nil
      otherwise.  RESULT is a PGresult object.
 
@@ -683,7 +1704,7 @@ PGresult object.
           (pq-binary-tuples R)
                => nil
 
- - Function: pq-fname result field-index
+ -- 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.
@@ -696,7 +1717,7 @@ PGresult object.
             l)
                => ("id" "shikona" "rank")
 
- - Function: pq-fnumber result field-name
+ -- 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.
@@ -707,7 +1728,7 @@ PGresult object.
           (pq-fnumber R "Not a field")
                => -1
 
- - Function: pq-ftype result field-num
+ -- 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.
@@ -716,12 +1737,12 @@ PGresult object.
      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
+ -- 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
+ -- Function: pq-fsize result field-index
      Return size of the given field.  RESULT is a PGresult object.
      FIELD-INDEX selects which field to use.
 
@@ -733,7 +1754,7 @@ PGresult object.
             l)
                => ((23 23) (25 25) (25 25))
 
- - Function: pq-get-value result tup-num field-num
+ -- 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.
@@ -749,7 +1770,7 @@ PGresult object.
           (pq-get-value R 2 1)
                => "Musoyama"
 
- - Function: pq-get-length result tup-num field-num
+ -- 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.
@@ -763,12 +1784,12 @@ PGresult object.
           (pq-get-length R 2 1)
                => 8
 
- - Function: pq-get-is-null result tup-num field-num
+ -- 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
+ -- Function: pq-cmd-status result
      Return a summary string from the query.  RESULT is a PGresult
      object.
           (setq R (pq-exec P "INSERT INTO xemacs_test
@@ -787,7 +1808,7 @@ PGresult object.
      system to system since object ID numbers in Postgres must be unique
      across all databases.
 
- - Function: pq-cmd-tuples result
+ -- 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.
@@ -807,7 +1828,7 @@ PGresult object.
           (pq-cmd-tuples R)
                => "2"
 
- - Function: pq-oid-value result
+ -- 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.
@@ -827,7 +1848,7 @@ PGresult object.
           (pq-oid-value R)
                => 0
 
- - Function: pq-make-empty-pgresult conn status
+ -- 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'.
@@ -838,10 +1859,10 @@ PGresult object.
 \1f
 File: lispref.info,  Node: Synchronous Interface Functions,  Next: Asynchronous Interface Functions,  Prev: libpq Lisp Symbols and DataTypes,  Up: XEmacs PostgreSQL libpq API
 
-Synchronous Interface Functions
--------------------------------
+61.2.3 Synchronous Interface Functions
+--------------------------------------
 
- - Function: pq-connectdb conninfo
+ -- 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.
@@ -912,7 +1933,7 @@ Synchronous Interface Functions
      A database connection object is returned regardless of whether a
      connection was established or not.
 
- - Function: pq-reset conn
+ -- Function: pq-reset conn
      Reestablish database connection.  CONN A database connection
      object.
 
@@ -920,7 +1941,7 @@ Synchronous Interface Functions
      original connection parameters.  This is useful if something has
      happened to the TCP link and it has become broken.
 
- - Function: pq-exec conn query
+ -- 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
@@ -932,7 +1953,7 @@ Synchronous Interface Functions
           DELETE FROM xemacs_test WHERE id=8;"))
                => #<PGresult PGRES_COMMAND_OK[1] - DELETE 1>
 
- - Function: pq-notifies conn
+ -- 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
@@ -940,7 +1961,7 @@ Synchronous Interface Functions
      element contains the backend process ID number.  nil is returned
      if there aren't any notifications to process.
 
- - Function: PQsetenv conn
+ -- Function: PQsetenv conn
      Synchronous transfer of environment variables to a backend CONN A
      database connection object.
 
@@ -953,42 +1974,42 @@ Synchronous Interface Functions
 \1f
 File: lispref.info,  Node: Asynchronous Interface Functions,  Next: Large Object Support,  Prev: Synchronous Interface Functions,  Up: XEmacs PostgreSQL libpq API
 
-Asynchronous Interface Functions
---------------------------------
+61.2.4 Asynchronous Interface Functions
+---------------------------------------
 
 Making command by command examples is too complex with the asynchronous
 interface functions.  See the examples section for complete calling
 sequences.
 
- - Function: pq-connect-start conninfo
+ -- Function: pq-connect-start conninfo
      Begin establishing an asynchronous database connection.  CONNINFO
      A string containing the connection options.  See the documentation
      of `pq-connectdb' for a listing of all the available flags.
 
- - Function: pq-connect-poll conn
+ -- Function: pq-connect-poll conn
      An intermediate function to be called during an asynchronous
      database connection.  CONN A database connection object.  The
      result codes are documented in a previous section.
 
- - Function: pq-is-busy conn
+ -- Function: pq-is-busy conn
      Returns t if `pq-get-result' would block waiting for input.  CONN
      A database connection object.
 
- - Function: pq-consume-input conn
+ -- Function: pq-consume-input conn
      Consume any available input from the backend.  CONN A database
      connection object.
 
      Nil is returned if anything bad happens.
 
- - Function: pq-reset-start conn
+ -- Function: pq-reset-start conn
      Reset connection to the backend asynchronously.  CONN A database
      connection object.
 
- - Function: pq-reset-poll conn
+ -- Function: pq-reset-poll conn
      Poll an asynchronous reset for completion CONN A database
      connection object.
 
- - Function: pq-reset-cancel conn
+ -- Function: pq-reset-cancel conn
      Attempt to request cancellation of the current operation.  CONN A
      database connection object.
 
@@ -998,44 +2019,44 @@ sequences.
      effect at the backend.  The application must read the operation
      result as usual.
 
- - Function: pq-send-query conn query
+ -- Function: pq-send-query conn query
      Submit a query to Postgres and don't wait for the result.  CONN A
      database connection object.  Returns: t if successfully submitted
             nil if error (conn->errorMessage is set)
 
- - Function: pq-get-result conn
+ -- Function: pq-get-result conn
      Retrieve an asynchronous result from a query.  CONN A database
      connection object.
 
      `nil' is returned when no more query work remains.
 
- - Function: pq-set-nonblocking conn arg
+ -- Function: pq-set-nonblocking conn arg
      Sets the PGconn's database connection non-blocking if the arg is
      TRUE or makes it non-blocking if the arg is FALSE, this will not
      protect you from PQexec(), you'll only be safe when using the
      non-blocking API.  CONN A database connection object.
 
- - Function: pq-is-nonblocking conn
+ -- Function: pq-is-nonblocking conn
      Return the blocking status of the database connection CONN A
      database connection object.
 
- - Function: pq-flush conn
+ -- Function: pq-flush conn
      Force the write buffer to be written (or at least try) CONN A
      database connection object.
 
- - Function: PQsetenvStart conn
+ -- Function: PQsetenvStart conn
      Start asynchronously passing environment variables to a backend.
      CONN A database connection object.
 
      Compatibility note: this function is only available with libpq-7.0.
 
- - Function: PQsetenvPoll conn
+ -- Function: PQsetenvPoll conn
      Check an asynchronous environment variables transfer for
      completion.  CONN A database connection object.
 
      Compatibility note: this function is only available with libpq-7.0.
 
- - Function: PQsetenvAbort conn
+ -- Function: PQsetenvAbort conn
      Attempt to terminate an asynchronous environment variables
      transfer.  CONN A database connection object.
 
@@ -1044,16 +2065,16 @@ sequences.
 \1f
 File: lispref.info,  Node: Large Object Support,  Next: Other libpq Functions,  Prev: Asynchronous Interface Functions,  Up: XEmacs PostgreSQL libpq API
 
-Large Object Support
---------------------
+61.2.5 Large Object Support
+---------------------------
 
- - Function: pq-lo-import conn filename
+ -- Function: pq-lo-import conn filename
      Import a file as a large object into the database.  CONN a
      database connection object FILENAME filename to import
 
      On success, the object id is returned.
 
- - Function: pq-lo-export conn oid filename
+ -- Function: pq-lo-export conn oid filename
      Copy a large object in the database into a file.  CONN a database
      connection object.  OID object id number of a large object.
      FILENAME filename to export to.
@@ -1061,10 +2082,10 @@ Large Object Support
 \1f
 File: lispref.info,  Node: Other libpq Functions,  Next: Unimplemented libpq Functions,  Prev: Large Object Support,  Up: XEmacs PostgreSQL libpq API
 
-Other libpq Functions
----------------------
+61.2.6 Other libpq Functions
+----------------------------
 
- - Function: pq-finish conn
+ -- Function: pq-finish conn
      Destroy a database connection object by calling free on it.  CONN
      a database connection object
 
@@ -1078,7 +2099,7 @@ Other libpq Functions
      After calling this routine, the printed representation of the
      XEmacs wrapper object will contain the string "DEAD".
 
- - Function: pq-client-encoding conn
+ -- Function: pq-client-encoding conn
      Return the client encoding as an integer code.  CONN a database
      connection object
 
@@ -1088,7 +2109,7 @@ Other libpq Functions
      Compatibility note: This function did not exist prior to libpq-7.0
      and does not exist in a non-Mule XEmacs.
 
- - Function: pq-set-client-encoding conn encoding
+ -- Function: pq-set-client-encoding conn encoding
      Set client coding system.  CONN a database connection object
      ENCODING a string representing the desired coding system
 
@@ -1106,7 +2127,7 @@ Other libpq Functions
      Compatibility note: This function did not exist prior to libpq-7.0
      and does not exist in a non-Mule XEmacs.
 
- - Function: pq-env-2-encoding
+ -- Function: pq-env-2-encoding
      Return the integer code representing the coding system in
      `PGCLIENTENCODING'.
 
@@ -1115,7 +2136,7 @@ Other libpq Functions
      Compatibility note: This function did not exist prior to libpq-7.0
      and does not exist in a non-Mule XEmacs.
 
- - Function: pq-clear res
+ -- Function: pq-clear res
      Destroy a query result object by calling free() on it.  RES a
      query result object
 
@@ -1129,7 +2150,7 @@ Other libpq Functions
      string "DEAD" after this routine is called indicating that it is no
      longer useful for anything.
 
- - Function: pq-conn-defaults
+ -- Function: pq-conn-defaults
      Return a data structure that represents the connection defaults.
      The data is returned as a list of lists, where each sublist
      contains info regarding a single option.
@@ -1137,10 +2158,10 @@ Other libpq Functions
 \1f
 File: lispref.info,  Node: Unimplemented libpq Functions,  Prev: Other libpq Functions,  Up: XEmacs PostgreSQL libpq API
 
-Unimplemented libpq Functions
------------------------------
+61.2.7 Unimplemented libpq Functions
+------------------------------------
 
- - Unimplemented Function: PGconn *PQsetdbLogin (char *pghost, char
+ -- Unimplemented Function: PGconn *PQsetdbLogin (char *pghost, char
           *pgport, char *pgoptions, char *pgtty, char *dbName, char
           *login, char *pwd)
      Synchronous database connection.  PGHOST is the hostname of the
@@ -1153,8 +2174,8 @@ Unimplemented libpq Functions
      This routine is deprecated as of libpq-7.0, and its functionality
      can be replaced by external Lisp code if needed.
 
- - Unimplemented Function: PGconn *PQsetdb (char *pghost, char *pgport,
-          char *pgoptions, char *pgtty, char *dbName)
+ -- Unimplemented Function: PGconn *PQsetdb (char *pghost, char
+          *pgport, char *pgoptions, char *pgtty, char *dbName)
      Synchronous database connection.  PGHOST is the hostname of the
      PostgreSQL backend to connect to.  PGPORT is the TCP port number
      to use.  PGOPTIONS specifies other backend options.  PGTTY
@@ -1163,11 +2184,11 @@ Unimplemented libpq Functions
 
      This routine was deprecated in libpq-6.5.
 
- - Unimplemented Function: int PQsocket (PGconn *conn)
+ -- Unimplemented Function: int PQsocket (PGconn *conn)
      Return socket file descriptor to a backend database process.  CONN
      database connection object.
 
- - Unimplemented Function: void PQprint (FILE *fout, PGresult *res,
+ -- Unimplemented Function: void PQprint (FILE *fout, PGresult *res,
           PGprintOpt *ps)
      Print out the results of a query to a designated C stream.  FOUT C
      stream to print to RES the query result object to print PS the
@@ -1176,7 +2197,7 @@ Unimplemented libpq Functions
      This routine is deprecated as of libpq-7.0 and cannot be sensibly
      exported to XEmacs Lisp.
 
- - Unimplemented Function: void PQdisplayTuples (PGresult *res, FILE
+ -- Unimplemented Function: void PQdisplayTuples (PGresult *res, FILE
           *fp, int fillAlign, char *fieldSep, int printHeader, int
           quiet)
      RES query result object to print FP C stream to print to FILLALIGN
@@ -1185,7 +2206,7 @@ Unimplemented libpq Functions
 
      This routine was deprecated in libpq-6.5.
 
- - Unimplemented Function: void PQprintTuples (PGresult *res, FILE
+ -- Unimplemented Function: void PQprintTuples (PGresult *res, FILE
           *fout, int printAttName, int terseOutput, int width)
      RES query result object to print FOUT C stream to print to
      PRINTATTNAME print attribute names TERSEOUTPUT delimiter bars
@@ -1193,20 +2214,21 @@ Unimplemented libpq Functions
 
      This routine was deprecated in libpq-6.5.
 
- - Unimplemented Function: int PQmblen (char *s, int encoding)
+ -- Unimplemented Function: int PQmblen (char *s, int encoding)
      Determine length of a multibyte encoded char at `*s'.  S encoded
      string ENCODING type of encoding
 
      Compatibility note:  This function was introduced in libpq-7.0.
 
- - Unimplemented Function: void PQtrace (PGconn *conn, FILE *debug_port)
+ -- Unimplemented Function: void PQtrace (PGconn *conn, FILE
+          *debug_port)
      Enable tracing on `debug_port'.  CONN database connection object.
      DEBUG_PORT C output stream to use.
 
- - Unimplemented Function: void PQuntrace (PGconn *conn)
+ -- Unimplemented Function: void PQuntrace (PGconn *conn)
      Disable tracing.  CONN database connection object.
 
- - Unimplemented Function: char *PQoidStatus (PGconn *conn)
+ -- Unimplemented Function: char *PQoidStatus (PGconn *conn)
      Return the object id as a string of the last tuple inserted.  CONN
      database connection object.
 
@@ -1214,7 +2236,7 @@ Unimplemented libpq Functions
      however it is used internally by the XEmacs binding code when
      linked against versions prior to 7.0.
 
- - Unimplemented Function: PGresult *PQfn (PGconn *conn, int fnid, int
+ -- Unimplemented Function: PGresult *PQfn (PGconn *conn, int fnid, int
           *result_buf, int *result_len, int result_is_int, PQArgBlock
           *args, int nargs)
      "Fast path" interface -- not really recommended for application use
@@ -1224,45 +2246,45 @@ Unimplemented libpq Functions
    The following set of very low level large object functions aren't
 appropriate to be exported to Lisp.
 
- - Unimplemented Function: int pq-lo-open (PGconn *conn, int lobjid,
+ -- Unimplemented Function: int pq-lo-open (PGconn *conn, int lobjid,
           int mode)
      CONN a database connection object.  LOBJID a large object ID.
      MODE opening modes.
 
- - Unimplemented Function: int pq-lo-close (PGconn *conn, int fd)
+ -- Unimplemented Function: int pq-lo-close (PGconn *conn, int fd)
      CONN a database connection object.  FD a large object file
      descriptor
 
- - Unimplemented Function: int pq-lo-read (PGconn *conn, int fd, char
+ -- Unimplemented Function: int pq-lo-read (PGconn *conn, int fd, char
           *buf, int len)
      CONN a database connection object.  FD a large object file
      descriptor.  BUF buffer to read into.  LEN size of buffer.
 
- - Unimplemented Function: int pq-lo-write (PGconn *conn, int fd, char
+ -- Unimplemented Function: int pq-lo-write (PGconn *conn, int fd, char
           *buf, size_t len)
      CONN a database connection object.  FD a large object file
      descriptor.  BUF buffer to write from.  LEN size of buffer.
 
- - Unimplemented Function: int pq-lo-lseek (PGconn *conn, int fd, int
+ -- Unimplemented Function: int pq-lo-lseek (PGconn *conn, int fd, int
           offset, int whence)
      CONN a database connection object.  FD a large object file
      descriptor.  OFFSET WHENCE
 
- - Unimplemented Function: int pq-lo-creat (PGconn *conn, int mode)
+ -- Unimplemented Function: int pq-lo-creat (PGconn *conn, int mode)
      CONN a database connection object.  MODE opening modes.
 
- - Unimplemented Function: int pq-lo-tell (PGconn *conn, int fd)
+ -- Unimplemented Function: int pq-lo-tell (PGconn *conn, int fd)
      CONN a database connection object.  FD a large object file
      descriptor.
 
- - Unimplemented Function: int pq-lo-unlink (PGconn *conn, int lobjid)
+ -- Unimplemented Function: int pq-lo-unlink (PGconn *conn, int lobjid)
      CONN a database connection object.  LBOJID a large object ID.
 
 \1f
 File: lispref.info,  Node: XEmacs PostgreSQL libpq Examples,  Prev: XEmacs PostgreSQL libpq API,  Up: PostgreSQL Support
 
-XEmacs PostgreSQL libpq Examples
-================================
+61.3 XEmacs PostgreSQL libpq Examples
+=====================================
 
 This is an example of one method of establishing an asynchronous
 connection.
@@ -1385,7 +2407,7 @@ query, including the field names.
      (let (data R)
        (setq R (pq-exec P "BEGIN;"))
        (setq R (pq-exec P "DECLARE k_cursor CURSOR FOR SELECT * FROM xemacs_test ORDER BY f1 DESC;"))
-     
+
        (setq R (pq-exec P "FETCH k_cursor;"))
        (while (eq (pq-ntuples R) 1)
          (push (list (pq-get-value R 0 0) (pq-get-value R 0 1)) data)
@@ -1424,8 +2446,8 @@ implement a mapping function over a table.
 \1f
 File: lispref.info,  Node: Internationalization,  Next: MULE,  Prev: PostgreSQL Support,  Up: Top
 
-Internationalization
-********************
+62 Internationalization
+***********************
 
 * Menu:
 
@@ -1436,8 +2458,8 @@ Internationalization
 \1f
 File: lispref.info,  Node: I18N Levels 1 and 2,  Next: I18N Level 3,  Up: Internationalization
 
-I18N Levels 1 and 2
-===================
+62.1 I18N Levels 1 and 2
+========================
 
 XEmacs is now compliant with I18N levels 1 and 2.  Specifically, this
 means that it is 8-bit clean and correctly handles time and date
@@ -1453,8 +2475,8 @@ display all valid completions and the character which would be produced.
 \1f
 File: lispref.info,  Node: I18N Level 3,  Next: I18N Level 4,  Prev: I18N Levels 1 and 2,  Up: Internationalization
 
-I18N Level 3
-============
+62.2 I18N Level 3
+=================
 
 * Menu:
 
@@ -1467,8 +2489,8 @@ I18N Level 3
 \1f
 File: lispref.info,  Node: Level 3 Basics,  Next: Level 3 Primitives,  Up: I18N Level 3
 
-Level 3 Basics
---------------
+62.2.1 Level 3 Basics
+---------------------
 
 XEmacs now provides alpha-level functionality for I18N Level 3.  This
 means that everything necessary for full messaging is available, but
@@ -1488,20 +2510,20 @@ variable's documentation.
 \1f
 File: lispref.info,  Node: Level 3 Primitives,  Next: Dynamic Messaging,  Prev: Level 3 Basics,  Up: I18N Level 3
 
-Level 3 Primitives
-------------------
+62.2.2 Level 3 Primitives
+-------------------------
 
- - Function: gettext string
+ -- Function: gettext string
      This function looks up STRING in the default message domain and
      returns its translation.  If `I18N3' was not enabled when XEmacs
      was compiled, it just returns STRING.
 
- - Function: dgettext domain string
+ -- Function: dgettext domain string
      This function looks up STRING in the specified message domain and
      returns its translation.  If `I18N3' was not enabled when XEmacs
      was compiled, it just returns STRING.
 
- - Function: bind-text-domain domain pathname
+ -- Function: bind-text-domain domain pathname
      This function associates a pathname with a message domain.  Here's
      how the path to message file is constructed under SunOS 5.x:
 
@@ -1510,7 +2532,7 @@ Level 3 Primitives
      If `I18N3' was not enabled when XEmacs was compiled, this function
      does nothing.
 
- - Special Form: domain string
+ -- Special Form: domain string
      This function specifies the text domain used for translating
      documentation strings and interactive prompts of a function.  For
      example, write:
@@ -1521,7 +2543,7 @@ Level 3 Primitives
      The "call" to `domain' is actually a declaration rather than a
      function; when actually called, `domain' just returns `nil'.
 
- - Function: domain-of function
+ -- Function: domain-of function
      This function returns the text domain of FUNCTION; it returns
      `nil' if it is the default domain.  If `I18N3' was not enabled
      when XEmacs was compiled, it always returns `nil'.
@@ -1529,8 +2551,8 @@ Level 3 Primitives
 \1f
 File: lispref.info,  Node: Dynamic Messaging,  Next: Domain Specification,  Prev: Level 3 Primitives,  Up: I18N Level 3
 
-Dynamic Messaging
------------------
+62.2.3 Dynamic Messaging
+------------------------
 
 The `format' function has been extended to permit you to change the
 order of parameter insertion.  For example, the conversion format
@@ -1541,8 +2563,8 @@ you to change the word order.
 \1f
 File: lispref.info,  Node: Domain Specification,  Next: Documentation String Extraction,  Prev: Dynamic Messaging,  Up: I18N Level 3
 
-Domain Specification
---------------------
+62.2.4 Domain Specification
+---------------------------
 
 The default message domain of XEmacs is `emacs'.  For add-on packages,
 it is best to use a different domain.  For example, let us say we want
@@ -1568,24 +2590,24 @@ function body, before the `interactive' form.
    For variables and constants which have documentation strings,
 specify the domain after the documentation.
 
- - Special Form: defvar symbol [value [doc-string [domain]]]
+ -- Special Form: defvar symbol [value [doc-string [domain]]]
      Example:
           (defvar weight 250 "Weight of gorilla, in pounds." "emacs-gorilla")
 
- - Special Form: defconst symbol [value [doc-string [domain]]]
+ -- Special Form: defconst symbol [value [doc-string [domain]]]
      Example:
           (defconst limbs 4 "Number of limbs" "emacs-gorilla")
 
- - Function: autoload function filename &optional docstring interactive
-          type
+ -- Function: autoload function filename &optional docstring
+          interactive type
      This function defines FUNCTION to autoload from FILENAME Example:
           (autoload 'explore "jungle" "Explore the jungle." nil nil "emacs-gorilla")
 
 \1f
 File: lispref.info,  Node: Documentation String Extraction,  Prev: Domain Specification,  Up: I18N Level 3
 
-Documentation String Extraction
--------------------------------
+62.2.5 Documentation String Extraction
+--------------------------------------
 
 The utility `etc/make-po' scans the file `DOC' to extract documentation
 strings and creates a message file `doc.po'.  This file may then be
@@ -1605,16 +2627,16 @@ packages, the final carriage returns in the strings produced by
 \1f
 File: lispref.info,  Node: I18N Level 4,  Prev: I18N Level 3,  Up: Internationalization
 
-I18N Level 4
-============
+62.3 I18N Level 4
+=================
 
 The Asian-language support in XEmacs is called "MULE".  *Note MULE::.
 
 \1f
 File: lispref.info,  Node: MULE,  Next: Tips,  Prev: Internationalization,  Up: Top
 
-MULE
-****
+63 MULE
+*******
 
 "MULE" is the name originally given to the version of GNU Emacs
 extended for multi-lingual (and in particular Asian-language) support.
@@ -1638,8 +2660,8 @@ on "MULE".
 \1f
 File: lispref.info,  Node: Internationalization Terminology,  Next: Charsets,  Up: MULE
 
-Internationalization Terminology
-================================
+63.1 Internationalization Terminology
+=====================================
 
 In internationalization terminology, a string of text is divided up
 into "characters", which are the printable units that make up the text.
@@ -1840,14 +2862,14 @@ others had 10-bit bytes, etc.
 \1f
 File: lispref.info,  Node: Charsets,  Next: MULE Characters,  Prev: Internationalization Terminology,  Up: MULE
 
-Charsets
-========
+63.2 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
+ -- Function: charsetp object
      This function returns non-`nil' if OBJECT is a charset.
 
 * Menu:
@@ -1860,8 +2882,8 @@ permanent objects and are named using symbols, like faces.
 \1f
 File: lispref.info,  Node: Charset Properties,  Next: Basic Charset Functions,  Up: Charsets
 
-Charset Properties
-------------------
+63.2.1 Charset Properties
+-------------------------
 
 Charsets have the following properties:
 
@@ -1960,25 +2982,25 @@ Functions::.
 \1f
 File: lispref.info,  Node: Basic Charset Functions,  Next: Charset Property Functions,  Prev: Charset Properties,  Up: Charsets
 
-Basic Charset Functions
------------------------
+63.2.2 Basic Charset Functions
+------------------------------
 
- - Function: find-charset charset-or-name
+ -- 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
+ -- 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
+ -- Function: charset-list
      This function returns a list of the names of all defined charsets.
 
- - Function: make-charset name doc-string props
+ -- 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
@@ -1988,19 +3010,19 @@ Basic Charset Functions
      `chars', `final', `graphic', `direction', and `ccl-program', as
      previously described.
 
- - Function: make-reverse-direction-charset charset new-name
+ -- 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
+ -- 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
+ -- 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.
@@ -2008,70 +3030,70 @@ Basic Charset Functions
 \1f
 File: lispref.info,  Node: Charset Property Functions,  Next: Predefined Charsets,  Prev: Basic Charset Functions,  Up: Charsets
 
-Charset Property Functions
---------------------------
+63.2.3 Charset Property Functions
+---------------------------------
 
 All of these functions accept either a charset name or charset object.
 
- - Function: charset-property charset prop
+ -- 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
+ -- Function: charset-name charset
      This function returns the name of CHARSET.  This will be a symbol.
 
- - Function: charset-description charset
+ -- Function: charset-description charset
      This function returns the documentation string of CHARSET.
 
- - Function: charset-registry charset
+ -- Function: charset-registry charset
      This function returns the registry of CHARSET.
 
- - Function: charset-dimension charset
+ -- Function: charset-dimension charset
      This function returns the dimension of CHARSET.
 
- - Function: charset-chars charset
+ -- Function: charset-chars charset
      This function returns the number of characters per dimension of
      CHARSET.
 
- - Function: charset-width charset
+ -- Function: charset-width charset
      This function returns the number of display columns per character
      (in TTY mode) of CHARSET.
 
- - Function: charset-direction charset
+ -- Function: charset-direction charset
      This function returns the display direction of CHARSET--either
      `l2r' or `r2l'.
 
- - Function: charset-iso-final-char charset
+ -- Function: charset-iso-final-char charset
      This function returns the final byte of the ISO 2022 escape
      sequence designating CHARSET.
 
- - Function: charset-iso-graphic-plane charset
+ -- Function: charset-iso-graphic-plane 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
+ -- 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 two properties of a charset that can currently be set after the
 charset has been created are the CCL program and the font registry.
 
- - Function: set-charset-ccl-program charset ccl-program
+ -- Function: set-charset-ccl-program charset ccl-program
      This function sets the `ccl-program' property of CHARSET to
      CCL-PROGRAM.
 
- - Function: set-charset-registry charset registry
+ -- Function: set-charset-registry charset registry
      This function sets the `registry' property of CHARSET to REGISTRY.
 
 \1f
 File: lispref.info,  Node: Predefined Charsets,  Prev: Charset Property Functions,  Up: Charsets
 
-Predefined Charsets
--------------------
+63.2.4 Predefined Charsets
+--------------------------
 
 The following charsets are predefined in the C code.
 
@@ -2131,51 +3153,51 @@ fields (e.g. the type) are not really accurate.
 \1f
 File: lispref.info,  Node: MULE Characters,  Next: Composite Characters,  Prev: Charsets,  Up: MULE
 
-MULE Characters
-===============
+63.3 MULE Characters
+====================
 
- - Function: make-char charset arg1 &optional arg2
+ -- Function: make-char charset arg1 &optional arg2
      This function makes a multi-byte character from CHARSET and octets
      ARG1 and ARG2.
 
- - Function: char-charset character
+ -- Function: char-charset character
      This function returns the character set of char CHARACTER.
 
- - Function: char-octet character &optional n
+ -- Function: char-octet character &optional n
      This function returns the octet (i.e. position code) numbered N
      (should be 0 or 1) of char CHARACTER.  N defaults to 0 if omitted.
 
- - Function: find-charset-region start end &optional buffer
+ -- Function: find-charset-region start end &optional buffer
      This function returns a list of the charsets in the region between
      START and END.  BUFFER defaults to the current buffer if omitted.
 
- - Function: find-charset-string string
+ -- Function: find-charset-string string
      This function returns a list of the charsets in STRING.
 
 \1f
 File: lispref.info,  Node: Composite Characters,  Next: Coding Systems,  Prev: MULE Characters,  Up: MULE
 
-Composite Characters
-====================
+63.4 Composite Characters
+=========================
 
 Composite characters are not yet completely implemented.
 
- - Function: make-composite-char string
+ -- Function: make-composite-char string
      This function converts a string into a single composite character.
      The character is the result of overstriking all the characters in
      the string.
 
- - Function: composite-char-string character
+ -- Function: composite-char-string character
      This function returns a string of the characters comprising a
      composite character.
 
- - Function: compose-region start end &optional buffer
+ -- Function: compose-region start end &optional buffer
      This function composes the characters in the region from START to
      END in BUFFER into one composite character.  The composite
      character replaces the composed characters.  BUFFER defaults to
      the current buffer if omitted.
 
- - Function: decompose-region start end &optional buffer
+ -- Function: decompose-region start end &optional buffer
      This function decomposes any composite characters in the region
      from START to END in BUFFER.  This converts each composite
      character into one or more characters, the individual characters
@@ -2186,8 +3208,8 @@ Composite characters are not yet completely implemented.
 \1f
 File: lispref.info,  Node: Coding Systems,  Next: CCL,  Prev: Composite Characters,  Up: MULE
 
-Coding Systems
-==============
+63.5 Coding Systems
+===================
 
 A coding system is an object that defines how text containing multiple
 character sets is encoded into a stream of (typically 8-bit) bytes.  The
@@ -2208,7 +3230,7 @@ symbol is accepted in place of the actual coding system object whenever
 a coding system is called for. (This is similar to how faces and
 charsets work.)
 
- - Function: coding-system-p object
+ -- Function: coding-system-p object
      This function returns non-`nil' if OBJECT is a coding system.
 
 * Menu:
@@ -2230,8 +3252,8 @@ charsets work.)
 \1f
 File: lispref.info,  Node: Coding System Types,  Next: ISO 2022,  Up: Coding Systems
 
-Coding System Types
--------------------
+63.5.1 Coding System Types
+--------------------------
 
 The coding system type determines the basic algorithm XEmacs will use to
 decode or encode a data stream.  Character encodings will be converted
@@ -2319,8 +3341,8 @@ Emacs 20.)
 \1f
 File: lispref.info,  Node: ISO 2022,  Next: EOL Conversion,  Prev: Coding System Types,  Up: Coding Systems
 
-ISO 2022
-========
+63.6 ISO 2022
+=============
 
 This section briefly describes the ISO 2022 encoding standard.  A more
 thorough treatment is available in the original document of ISO 2022 as
@@ -2554,7 +3576,7 @@ attributes:
              6. No.
              7. Use ASCII
              8. Use JIS X 0208-1983
-     
+
      ctext -- X11 Compound Text
              1. G0 <- ASCII, G1 <- Latin-1, G2,3 <- never used.
              2. No.
@@ -2564,7 +3586,7 @@ attributes:
              6. No.
              7. Use ASCII.
              8. Use JIS X 0208-1983.
-     
+
      euc-china -- Chinese EUC.  Often called the "GB encoding", but that is
      technically incorrect.
              1. G0 <- ASCII, G1 <- GB 2312, G2,3 <- never used.
@@ -2575,7 +3597,7 @@ attributes:
              6. No.
              7. Use ASCII.
              8. Use JIS X 0208-1983.
-     
+
      ISO-2022-KR -- Coding system used in Korean email.
              1. G0 <- ASCII, G1 <- KSC 5601, G2,3 <- never used.
              2. No.
@@ -2591,8 +3613,8 @@ attributes:
 \1f
 File: lispref.info,  Node: EOL Conversion,  Next: Coding System Properties,  Prev: ISO 2022,  Up: Coding Systems
 
-EOL Conversion
---------------
+63.6.1 EOL Conversion
+---------------------
 
 `nil'
      Automatically detect the end-of-line type (LF, CRLF, or CR).  Also
@@ -2622,8 +3644,8 @@ EOL Conversion
 \1f
 File: lispref.info,  Node: Coding System Properties,  Next: Basic Coding System Functions,  Prev: EOL Conversion,  Up: Coding Systems
 
-Coding System Properties
-------------------------
+63.6.2 Coding System Properties
+-------------------------------
 
 `mnemonic'
      String to be displayed in the modeline when this coding system is
@@ -2745,10 +3767,10 @@ EOL-LF, and BASE.
 \1f
 File: lispref.info,  Node: Basic Coding System Functions,  Next: Coding System Property Functions,  Prev: Coding System Properties,  Up: Coding Systems
 
-Basic Coding System Functions
------------------------------
+63.6.3 Basic Coding System Functions
+------------------------------------
 
- - Function: find-coding-system coding-system-or-name
+ -- 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
@@ -2756,23 +3778,23 @@ Basic Coding System Functions
      If there is no such coding system, `nil' is returned.  Otherwise
      the associated coding system object is returned.
 
- - Function: get-coding-system name
+ -- 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
+ -- Function: coding-system-list
      This function returns a list of the names of all defined coding
      systems.
 
- - Function: coding-system-name coding-system
+ -- Function: coding-system-name coding-system
      This function returns the name of the given coding system.
 
- - Function: coding-system-base 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
+ -- 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
@@ -2784,36 +3806,36 @@ Basic Coding System Functions
      character set.  Recognized properties are as in *Note Coding
      System Properties::.
 
- - Function: copy-coding-system old-coding-system new-name
+ -- 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
+ -- Function: subsidiary-coding-system coding-system eol-type
      This function returns the subsidiary coding system of
      CODING-SYSTEM with eol type EOL-TYPE.
 
 \1f
 File: lispref.info,  Node: Coding System Property Functions,  Next: Encoding and Decoding Text,  Prev: Basic Coding System Functions,  Up: Coding Systems
 
-Coding System Property Functions
---------------------------------
+63.6.4 Coding System Property Functions
+---------------------------------------
 
- - Function: coding-system-doc-string coding-system
+ -- Function: coding-system-doc-string coding-system
      This function returns the doc string for CODING-SYSTEM.
 
- - Function: coding-system-type coding-system
+ -- Function: coding-system-type coding-system
      This function returns the type of CODING-SYSTEM.
 
- - Function: coding-system-property coding-system prop
+ -- Function: coding-system-property coding-system prop
      This function returns the PROP property of CODING-SYSTEM.
 
 \1f
 File: lispref.info,  Node: Encoding and Decoding Text,  Next: Detection of Textual Encoding,  Prev: Coding System Property Functions,  Up: Coding Systems
 
-Encoding and Decoding Text
---------------------------
+63.6.5 Encoding and Decoding Text
+---------------------------------
 
- - Function: decode-coding-region start end coding-system &optional
+ -- 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
@@ -2823,7 +3845,7 @@ Encoding and Decoding Text
      encoded text is returned.  BUFFER defaults to the current buffer
      if unspecified.
 
- - Function: encode-coding-region start end coding-system &optional
+ -- Function: encode-coding-region start end coding-system &optional
           buffer
      This function encodes the text between START and END using
      CODING-SYSTEM.  This will, for example, convert Japanese
@@ -2834,32 +3856,32 @@ Encoding and Decoding Text
 \1f
 File: lispref.info,  Node: Detection of Textual Encoding,  Next: Big5 and Shift-JIS Functions,  Prev: Encoding and Decoding Text,  Up: Coding Systems
 
-Detection of Textual Encoding
------------------------------
+63.6.6 Detection of Textual Encoding
+------------------------------------
 
- - Function: coding-category-list
+ -- Function: coding-category-list
      This function returns a list of all recognized coding categories.
 
- - Function: set-coding-priority-list list
+ -- Function: set-coding-priority-list list
      This function changes the priority order of the coding categories.
      LIST should be a list of coding categories, in descending order of
      priority.  Unspecified coding categories will be lower in priority
      than all specified ones, in the same relative order they were in
      previously.
 
- - Function: coding-priority-list
+ -- Function: coding-priority-list
      This function returns a list of coding categories in descending
      order of priority.
 
- - Function: set-coding-category-system coding-category coding-system
+ -- Function: set-coding-category-system coding-category coding-system
      This function changes the coding system associated with a coding
      category.
 
- - Function: coding-category-system coding-category
+ -- Function: coding-category-system coding-category
      This function returns the coding system associated with a coding
      category.
 
- - Function: detect-coding-region start end &optional buffer
+ -- Function: detect-coding-region start end &optional buffer
      This function detects coding system of the text in the region
      between START and END.  Returned value is a list of possible coding
      systems ordered by priority.  If only ASCII characters are found,
@@ -2870,28 +3892,28 @@ Detection of Textual Encoding
 \1f
 File: lispref.info,  Node: Big5 and Shift-JIS Functions,  Next: Predefined Coding Systems,  Prev: Detection of Textual Encoding,  Up: Coding Systems
 
-Big5 and Shift-JIS Functions
-----------------------------
+63.6.7 Big5 and Shift-JIS Functions
+-----------------------------------
 
 These are special functions for working with the non-standard Shift-JIS
 and Big5 encodings.
 
- - Function: decode-shift-jis-char code
+ -- Function: decode-shift-jis-char code
      This function decodes a JIS X 0208 character of Shift-JIS
      coding-system.  CODE is the character code in Shift-JIS as a cons
      of type bytes.  The corresponding character is returned.
 
- - Function: encode-shift-jis-char character
+ -- Function: encode-shift-jis-char character
      This function encodes a JIS X 0208 character CHARACTER to
      SHIFT-JIS coding-system.  The corresponding character code in
      SHIFT-JIS is returned as a cons of two bytes.
 
- - Function: decode-big5-char code
+ -- Function: decode-big5-char code
      This function decodes a Big5 character CODE of BIG5 coding-system.
      CODE is the character code in BIG5.  The corresponding character
      is returned.
 
- - Function: encode-big5-char character
+ -- Function: encode-big5-char character
      This function encodes the Big5 character CHARACTER to BIG5
      coding-system.  The corresponding character code in Big5 is
      returned.
@@ -2899,8 +3921,8 @@ and Big5 encodings.
 \1f
 File: lispref.info,  Node: Predefined Coding Systems,  Prev: Big5 and Shift-JIS Functions,  Up: Coding Systems
 
-Coding Systems Implemented
---------------------------
+63.6.8 Coding Systems Implemented
+---------------------------------
 
 MULE initializes most of the commonly used coding systems at XEmacs's
 startup.  A few others are initialized only when the relevant language
@@ -3235,8 +4257,8 @@ as Lisp objects.
 \1f
 File: lispref.info,  Node: CCL,  Next: Category Tables,  Prev: Coding Systems,  Up: MULE
 
-CCL
-===
+63.7 CCL
+========
 
 CCL (Code Conversion Language) is a simple structured programming
 language designed for character coding conversions.  A CCL program is
@@ -3293,13 +4315,13 @@ keyword).
 * CCL Statements::      Semantics of CCL statements.
 * CCL Expressions::     Operators and expressions in CCL.
 * Calling CCL::         Running CCL programs.
-* CCL Examples::        The encoding functions for Big5 and KOI-8.
+* CCL Example::         A trivial program to transform the Web's URL encoding.
 
 \1f
 File: lispref.info,  Node: CCL Syntax,  Next: CCL Statements,  Up: CCL
 
-CCL Syntax
-----------
+63.7.1 CCL Syntax
+-----------------
 
 The full syntax of a CCL program in BNF notation:
 
@@ -3357,8 +4379,8 @@ ARRAY := '[' integer ... ']'
 \1f
 File: lispref.info,  Node: CCL Statements,  Next: CCL Expressions,  Prev: CCL Syntax,  Up: CCL
 
-CCL Statements
---------------
+63.7.2 CCL Statements
+---------------------
 
 The Emacs Code Conversion Language provides the following statement
 types: "set", "if", "branch", "loop", "repeat", "break", "read",
@@ -3459,8 +4481,8 @@ does not alter the status of the registers.
 \1f
 File: lispref.info,  Node: CCL Expressions,  Next: Calling CCL,  Prev: CCL Statements,  Up: CCL
 
-CCL Expressions
----------------
+63.7.3 CCL Expressions
+----------------------
 
 CCL, unlike Lisp, uses infix expressions.  The simplest CCL expressions
 consist of a single OPERAND, either a register (one of `r0', ..., `r0')
@@ -3508,10 +4530,10 @@ standard JIS encoding to Shift JIS.  CCL_DECODE_SJIS is its inverse.)
 It is somewhat odd to represent the SJIS operations in infix form.
 
 \1f
-File: lispref.info,  Node: Calling CCL,  Next: CCL Examples,  Prev: CCL Expressions,  Up: CCL
+File: lispref.info,  Node: Calling CCL,  Next: CCL Example,  Prev: CCL Expressions,  Up: CCL
 
-Calling CCL
------------
+63.7.4 Calling CCL
+------------------
 
 CCL programs are called automatically during Emacs buffer I/O when the
 external representation has a coding system type of `shift-jis',
@@ -3519,7 +4541,7 @@ external representation has a coding system type of `shift-jis',
 Coding Systems::).  You can also call CCL programs from other CCL
 programs, and from Lisp using these functions:
 
- - Function: ccl-execute ccl-program status
+ -- Function: ccl-execute ccl-program status
      Execute CCL-PROGRAM with registers initialized by STATUS.
      CCL-PROGRAM is a vector of compiled CCL code created by
      `ccl-compile'.  It is an error for the program to try to execute a
@@ -3532,7 +4554,7 @@ programs, and from Lisp using these functions:
      side-effect) to contain the ending values for the corresponding
      registers and IC.
 
- - Function: ccl-execute-on-string ccl-program status string &optional
+ -- Function: ccl-execute-on-string ccl-program status string &optional
           continue
      Execute CCL-PROGRAM with initial STATUS on STRING.  CCL-PROGRAM is
      a vector of compiled CCL code created by `ccl-compile'.  STATUS
@@ -3551,7 +4573,7 @@ programs, and from Lisp using these functions:
    To call a CCL program from another CCL program, it must first be
 registered:
 
- - Function: register-ccl-program name ccl-program
+ -- Function: register-ccl-program name ccl-program
      Register NAME for CCL program CCL-PROGRAM in `ccl-program-table'.
      CCL-PROGRAM should be the compiled form of a CCL program, or
      `nil'.  Return index number of the registered CCL program.
@@ -3559,28 +4581,327 @@ registered:
    Information about the processor time used by the CCL interpreter can
 be obtained using these functions:
 
- - Function: ccl-elapsed-time
+ -- Function: ccl-elapsed-time
      Returns the elapsed processor time of the CCL interpreter as cons
      of user and system time, as floating point numbers measured in
      seconds.  If only one overall value can be determined, the return
      value will be a cons of that value and 0.
 
- - Function: ccl-reset-elapsed-time
+ -- Function: ccl-reset-elapsed-time
      Resets the CCL interpreter's internal elapsed time registers.
 
 \1f
-File: lispref.info,  Node: CCL Examples,  Prev: Calling CCL,  Up: CCL
+File: lispref.info,  Node: CCL Example,  Prev: Calling CCL,  Up: CCL
+
+63.7.5 CCL Example
+------------------
+
+In this section, we describe the implementation of a trivial coding
+system to transform from the Web's URL encoding to XEmacs' internal
+coding.  Many people will have been first exposed to URL encoding when
+they saw "%20" where they expected a space in a file's name on their
+local hard disk; this can happen when a browser saves a file from the
+web and doesn't encode the name, as passed from the server, properly.
+
+   URL encoding itself is underspecified with regard to encodings beyond
+ASCII.  The relevant document, RFC 1738, explicitly doesn't give any
+information on how to encode non-ASCII characters, and the "obvious"
+way--use the %xx values for the octets of the eight bit MIME character
+set in which the page was served--breaks when a user types a character
+outside that character set.  Best practice for web development is to
+serve all pages as UTF-8 and treat incoming form data as using that
+coding system.  (Oh, and gamble that your clients won't ever want to
+type anything outside Unicode.  But that's not so much of a gamble with
+today's client operating systems.)  We don't treat non-ASCII in this
+example, as dealing with `(read-multibyte-character ...)' and errors
+therewith would make it much harder to understand.
+
+   Since CCL isn't a very rich language, we move much of the logic that
+would ordinarily be computed from operations like `(member ..)', `(and
+...)' and `(or ...)' into tables, from which register values are read
+and written, and on which `if' statements are predicated.  Much more of
+the implementation of this coding system is occupied with constructing
+these tables--in normal Emacs Lisp--than it is with actual CCL code.
+
+   All the `defvar' statements we deal with in the next few sections
+are surrounded by a `(eval-and-compile ...)', which means that the
+logic which initializes these variables executes at compile time, and if
+XEmacs loads the compiled version of the file, these variables are
+initialized as constants.
 
-CCL Examples
-------------
+* Menu:
 
-This section is not yet written.
+* Four bits to ASCII::  Two tables used for getting hex digits from ASCII.
+* URI Encoding constants::  Useful predefined characters.
+* Numeric to ASCII-hexadecimal conversion:: Trivial in Lisp, not so in CCL.
+* Characters to be preserved:: No transformation needed for these characters.
+* The program to decode to internal format:: .
+* The program to encode from internal format:: .
+* The actual coding system:: .
+
+\1f
+File: lispref.info,  Node: Four bits to ASCII,  Next: URI Encoding constants,  Up: CCL Example
+
+63.7.5.1 Four bits to ASCII
+...........................
+
+The first `defvar' is for `url-coding-high-order-nybble-as-ascii', a
+256-entry table that maps from an octet's value to the ASCII encoding
+for the hex value of its most significant four bits.  That might sound
+complex, but it isn't; for decimal 65, hex value `#x41', the entry in
+the table is the ASCII encoding of `4'.  For decimal 122, ASCII `z',
+hex value `#x7a', `(elt url-coding-high-order-nybble-as-ascii #x7a)'
+after this file is loaded gives the ASCII encoding of 7.
+
+     (defvar url-coding-high-order-nybble-as-ascii
+       (let ((val (make-vector 256 0))
+       (i 0))
+         (while (< i (length val))
+           (aset val i (char-to-int (aref (format "%02X" i) 0)))
+           (setq i (1+ i)))
+         val)
+       "Table to find an ASCII version of an octet's most significant 4 bits.")
+
+   The next table, `url-coding-low-order-nybble-as-ascii' is almost the
+same thing, but this time it has a map for the hex encoding of the
+low-order four bits.  So the sixty-fifth entry (offset `#x41') is the
+ASCII encoding of `1', the hundred-and-twenty-second (offset `#x7a') is
+the ASCII encoding of `A'.
+
+     (defvar url-coding-low-order-nybble-as-ascii
+       (let ((val (make-vector 256 0))
+       (i 0))
+         (while (< i (length val))
+           (aset val i (char-to-int (aref (format "%02X" i) 1)))
+           (setq i (1+ i)))
+         val)
+       "Table to find an ASCII version of an octet's least significant 4 bits.")
+
+\1f
+File: lispref.info,  Node: URI Encoding constants,  Next: Numeric to ASCII-hexadecimal conversion,  Prev: Four bits to ASCII,  Up: CCL Example
+
+63.7.5.2 URI Encoding constants
+...............................
+
+Next, we have a couple of variables that make the CCL code more
+readable.  The first is the ASCII encoding of the percentage sign; this
+character is used as an escape code, to start the encoding of a
+non-printable character.  For historical reasons, URL encoding allows
+the space character to be encoded as a plus sign-it does make typing
+URLs like `http://google.com/search?q=XEmacs+home+page' easier-and as
+such, we have to check when decoding for this value, and map it to the
+space character.  When doing this in CCL, we use the
+`url-coding-escaped-space-code' variable.
+
+     (defvar url-coding-escape-character-code (char-to-int ?%)
+       "The code point for the percentage sign, in ASCII.")
+
+     (defvar url-coding-escaped-space-code (char-to-int ?+)
+       "The URL-encoded value of the space character, that is, +.")
+
+\1f
+File: lispref.info,  Node: Numeric to ASCII-hexadecimal conversion,  Next: Characters to be preserved,  Prev: URI Encoding constants,  Up: CCL Example
+
+63.7.5.3 Numeric to ASCII-hexadecimal conversion
+................................................
+
+Now, we have a couple of utility tables that wouldn't be necessary in a
+more expressive programming language than is CCL. The first is sixteen
+in length, and maps a hexadecimal number to the ASCII encoding of that
+number; so zero maps to ASCII `0', ten maps to ASCII `A.' The second
+does the reverse; that is, it maps an ASCII character to its value when
+interpreted as a hexadecimal digit. ('A' => 10, 'c' => 12, '2' => 2, as
+a few examples.)
+
+     (defvar url-coding-hex-digit-table
+       (let ((i 0)
+       (val (make-vector 16 0)))
+         (while (< i 16)
+           (aset val i (char-to-int (aref (format "%X" i) 0)))
+           (setq i (1+ i)))
+         val)
+       "A map from a hexadecimal digit's numeric value to its encoding in ASCII.")
+
+     (defvar url-coding-latin-1-as-hex-table
+       (let ((val (make-vector 256 0))
+       (i 0))
+         (while (< i (length val))
+           ;; Get a hex val for this ASCII character.
+           (aset val i (string-to-int (format "%c" i) 16))
+           (setq i (1+ i)))
+         val)
+       "A map from Latin 1 code points to their values as hexadecimal digits.")
+
+\1f
+File: lispref.info,  Node: Characters to be preserved,  Next: The program to decode to internal format,  Prev: Numeric to ASCII-hexadecimal conversion,  Up: CCL Example
+
+63.7.5.4 Characters to be preserved
+...................................
+
+And finally, the last of these tables.  URL encoding says that
+alphanumeric characters, the underscore, hyphen and the full stop (1)
+retain their ASCII encoding, and don't undergo transformation.
+`url-coding-should-preserve-table' is an array in which the entries are
+one if the corresponding ASCII character should be left as-is, and zero
+if they should be transformed.  So the entries for all the control and
+most of the punctuation charcters are zero.  Lisp programmers will
+observe that this initialization is particularly inefficient, but
+they'll also be aware that this is a long way from an inner loop where
+every nanosecond counts.
+
+     (defvar url-coding-should-preserve-table
+       (let ((preserve
+        (list ?- ?_ ?. ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o
+              ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z ?A ?B ?C ?D ?E ?F ?G
+              ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y
+              ?Z ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
+       (i 0)
+       (res (make-vector 256 0)))
+         (while (< i 256)
+           (when (member (int-char i) preserve)
+       (aset res i 1))
+           (setq i (1+ i)))
+         res)
+       "A 256-entry array of flags, indicating whether or not to preserve an
+     octet as its ASCII encoding.")
+
+   ---------- Footnotes ----------
+
+   (1) That's what the standards call it, though my North American
+readers will be more familiar with it as the period character.
+
+\1f
+File: lispref.info,  Node: The program to decode to internal format,  Next: The program to encode from internal format,  Prev: Characters to be preserved,  Up: CCL Example
+
+63.7.5.5 The program to decode to internal format
+.................................................
+
+After the almost interminable tables, we get to the CCL.  The first CCL
+program, `ccl-decode-urlcoding' decodes from the URL coding to our
+internal format; since this version of CCL doesn't have support for
+error checking on the input, we don't do any verification on it.
+
+   The buffer magnification-approximate ratio of the size of the output
+buffer to the size of the input buffer-is declared as one, because
+fractional values aren't allowed. (Since all those %20's will map to `
+', the length of the output text will be less than that of the input
+text.)
+
+   So, first we read an octet from the input buffer into register `r0',
+to set up the loop.  Next, we start the loop, with a `(loop ...)'
+statement, and we check if the value in `r0' is a percentage sign.
+(Note the comma before `url-coding-escape-character-code'; since CCL is
+a Lisp macro language, we can break out of the macro evaluation with a
+comman, and as such, "`,url-coding-escape-character-code'" will be
+evaluated as a literal `37.')
+
+   If it is a percentage sign, we read the next two octets into `r2'
+and `r3', and convert them into their hexadecimal numeric values, using
+the `url-coding-latin-1-as-hex-table' array declared above.  (But
+again, it'll be interpreted as a literal array.)  We then left shift
+the first by four bits, mask the two together, and write the result to
+the output buffer.
+
+   If it isn't a percentage sign, and it is a `+' sign, we write a
+space-hexadecimal 20-to the output buffer.
+
+   If none of those things are true, we pass the octet to the output
+buffer untransformed.  (This could be a place to put error checking, in
+a more expressive language.)  We then read one more octet from the input
+buffer, and move to the next iteration of the loop.
+
+     (define-ccl-program ccl-decode-urlcoding
+       `(1
+         ((read r0)
+          (loop
+            (if (r0 == ,url-coding-escape-character-code)
+          ((read r2 r3)
+           ;; Assign the value at offset r2 in the url-coding-hex-digit-table
+           ;; to r3.
+           (r2 = r2 ,url-coding-latin-1-as-hex-table)
+           (r3 = r3 ,url-coding-latin-1-as-hex-table)
+           (r2 <<= 4)
+           (r3 |= r2)
+           (write r3))
+        (if (r0 == ,url-coding-escaped-space-code)
+            (write #x20)
+          (write r0)))
+            (read r0)
+            (repeat))))
+       "CCL program to take URI-encoded ASCII text and transform it to our
+     internal encoding. ")
+
+\1f
+File: lispref.info,  Node: The program to encode from internal format,  Next: The actual coding system,  Prev: The program to decode to internal format,  Up: CCL Example
+
+63.7.5.6 The program to encode from internal format
+...................................................
+
+Next, we see the CCL program to encode ASCII text as URL coded text.
+Here, the buffer magnification is specified as three, to account for ` '
+mapping to %20, etc.  As before, we read an octet from the input into
+`r0', and move into the body of the loop.  Next, we check if we should
+preserve the value of this octet, by reading from offset `r0' in the
+`url-coding-should-preserve-table' into `r1'.  Then we have an `if'
+statement predicated on the value in `r1'; for the true branch, we
+write the input octet directly.  For the false branch, we write a
+percentage sign, the ASCII encoding of the high four bits in hex, and
+then the ASCII encoding of the low four bits in hex.
+
+   We then read an octet from the input into `r0', and repeat the loop.
+
+     (define-ccl-program ccl-encode-urlcoding
+       `(3
+         ((read r0)
+          (loop
+            (r1 = r0 ,url-coding-should-preserve-table)
+            ;; If we should preserve the value, just write the octet directly.
+            (if r1
+          (write r0)
+        ;; else, write a percentage sign, and the hex value of the octet, in
+        ;; an ASCII-friendly format.
+        ((write ,url-coding-escape-character-code)
+         (write r0 ,url-coding-high-order-nybble-as-ascii)
+         (write r0 ,url-coding-low-order-nybble-as-ascii)))
+            (read r0)
+            (repeat))))
+       "CCL program to encode octets (almost) according to RFC 1738")
+
+\1f
+File: lispref.info,  Node: The actual coding system,  Prev: The program to encode from internal format,  Up: CCL Example
+
+63.7.5.7 The actual coding system
+.................................
+
+To actually create the coding system, we call `make-coding-system'.
+The first argument is the symbol that is to be the name of the coding
+system, in our case `url-coding'. The second specifies that the coding
+system is to be of type `ccl'--there are several other coding system
+types available, including, see the documentation for
+`make-coding-system' for the full list. Then there's a documentation
+string describing the wherefore and caveats of the coding system, and
+the final argument is a property list giving information about the CCL
+programs and the coding system's mnemonic.
+
+     (make-coding-system
+      'url-coding 'ccl
+      "The coding used by application/x-www-form-urlencoded HTTP applications.
+     This coding form doesn't specify anything about non-ASCII characters, so
+     make sure you've transformed to a seven-bit coding system first."
+      '(decode ccl-decode-urlcoding
+        encode ccl-encode-urlcoding
+        mnemonic "URLenc"))
+
+   If you're lucky, the `url-coding' coding system describe here should
+be available in the XEmacs package system. Otherwise, downloading it
+from `http://www.parhasard.net/url-coding.el' should work for the
+foreseeable future.
 
 \1f
 File: lispref.info,  Node: Category Tables,  Prev: CCL,  Up: MULE
 
-Category Tables
-===============
+63.8 Category Tables
+====================
 
 A category table is a type of char table used for keeping track of
 categories.  Categories are used for classifying characters for use in
@@ -3604,38 +4925,38 @@ the character is in that category.
    Special Lisp functions are provided that abstract this, so you do not
 have to directly manipulate bit vectors.
 
- - Function: category-table-p object
+ -- Function: category-table-p object
      This function returns `t' if OBJECT is a category table.
 
- - Function: category-table &optional buffer
+ -- Function: category-table &optional buffer
      This function returns the current category table.  This is the one
      specified by the current buffer, or by BUFFER if it is non-`nil'.
 
- - Function: standard-category-table
+ -- Function: standard-category-table
      This function returns the standard category table.  This is the
      one used for new buffers.
 
- - Function: copy-category-table &optional category-table
+ -- Function: copy-category-table &optional category-table
      This function returns a new category table which is a copy of
      CATEGORY-TABLE, which defaults to the standard category table.
 
- - Function: set-category-table category-table &optional buffer
+ -- Function: set-category-table category-table &optional buffer
      This function selects CATEGORY-TABLE as the new category table for
      BUFFER.  BUFFER defaults to the current buffer if omitted.
 
- - Function: category-designator-p object
+ -- Function: category-designator-p object
      This function returns `t' if OBJECT is a category designator (a
      char in the range `' '' to `'~'').
 
- - Function: category-table-value-p object
+ -- Function: category-table-value-p object
      This function returns `t' if OBJECT is a category table value.
      Valid values are `nil' or a bit vector of size 95.
 
 \1f
 File: lispref.info,  Node: Tips,  Next: Building XEmacs and Object Allocation,  Prev: MULE,  Up: Top
 
-Tips and Standards
-******************
+Appendix A Tips and Standards
+*****************************
 
 This chapter describes no additional features of XEmacs Lisp.  Instead
 it gives advice on making effective use of the features described in
@@ -3652,8 +4973,8 @@ the previous chapters.
 \1f
 File: lispref.info,  Node: Style Tips,  Next: Compilation Tips,  Up: Tips
 
-Writing Clean Lisp Programs
-===========================
+A.1 Writing Clean Lisp Programs
+===============================
 
 Here are some tips for avoiding common errors in writing Lisp code
 intended for widespread use:
@@ -3866,8 +5187,8 @@ intended for widespread use:
 \1f
 File: lispref.info,  Node: Compilation Tips,  Next: Documentation Tips,  Prev: Style Tips,  Up: Tips
 
-Tips for Making Compiled Code Fast
-==================================
+A.2 Tips for Making Compiled Code Fast
+======================================
 
 Here are ways of improving the execution speed of byte-compiled Lisp
 programs.
@@ -3897,7 +5218,7 @@ programs.
 
           (get 'aref 'byte-compile)
                => byte-compile-two-args
-          
+
           (get 'elt 'byte-compile)
                => nil
 
@@ -3911,8 +5232,8 @@ programs.
 \1f
 File: lispref.info,  Node: Documentation Tips,  Next: Comment Tips,  Prev: Compilation Tips,  Up: Tips
 
-Tips for Documentation Strings
-==============================
+A.3 Tips for Documentation Strings
+==================================
 
 Here are some tips for the writing of documentation strings.
 
@@ -4020,8 +5341,8 @@ Here are some tips for the writing of documentation strings.
 \1f
 File: lispref.info,  Node: Comment Tips,  Next: Library Headers,  Prev: Documentation Tips,  Up: Tips
 
-Tips on Writing Comments
-========================
+A.4 Tips on Writing Comments
+============================
 
 We recommend these conventions for where to put comments and how to
 indent them:
@@ -4094,23 +5415,23 @@ of semicolons.  *Note Manipulating Comments: (xemacs)Comments.
 \1f
 File: lispref.info,  Node: Library Headers,  Prev: Comment Tips,  Up: Tips
 
-Conventional Headers for XEmacs Libraries
-=========================================
+A.5 Conventional Headers for XEmacs Libraries
+=============================================
 
 XEmacs has conventions for using special comments in Lisp libraries to
 divide them into sections and give information such as who wrote them.
 This section explains these conventions.  First, an example:
 
      ;;; lisp-mnt.el --- minor mode for Emacs Lisp maintainers
-     
+
      ;; Copyright (C) 1992 Free Software Foundation, Inc.
-     
+
      ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
      ;; Maintainer: Eric S. Raymond <esr@snark.thyrsus.com>
      ;; Created: 14 Jul 1992
      ;; Version: 1.2
      ;; Keywords: docs
-     
+
      ;; This file is part of XEmacs.
      COPYING PERMISSIONS...
 
@@ -4199,8 +5520,8 @@ library file.  Here is a table of them:
 \1f
 File: lispref.info,  Node: Building XEmacs and Object Allocation,  Next: Standard Errors,  Prev: Tips,  Up: Top
 
-Building XEmacs; Allocation of Objects
-**************************************
+Appendix B 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.
@@ -4220,8 +5541,8 @@ aspects related to the internals of XEmacs.
 \1f
 File: lispref.info,  Node: Building XEmacs,  Next: Pure Storage,  Up: Building XEmacs and Object Allocation
 
-Building XEmacs
-===============
+B.1 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
@@ -4301,7 +5622,7 @@ variables) in the file where they are stored, by calling
 were moved out of the `xemacs' executable to make it smaller.  *Note
 Documentation Basics::.
 
- - Function: dump-emacs to-file from-file
+ -- 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').
@@ -4310,13 +5631,13 @@ Documentation Basics::.
      must set `command-line-processed' to `nil' first for good results.
      *Note Command Line Arguments::.
 
- - Function: run-emacs-from-temacs &rest args
+ -- 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 &optional arg
+ -- Command: emacs-version &optional arg
      This function returns a string describing the version of XEmacs
      that is running.  It is useful to include this string in bug
      reports.
@@ -4333,14 +5654,14 @@ Documentation Basics::.
      Called interactively, the function prints the same information in
      the echo area.
 
- - Variable: emacs-build-time
+ -- 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
+ -- 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"'.
 
@@ -4348,19 +5669,19 @@ Documentation Basics::.
 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
+ -- 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
+ -- Variable: emacs-minor-version
      The minor version number of Emacs, as an integer.  For XEmacs
      version 20.1, the value is 1.
 
 \1f
 File: lispref.info,  Node: Pure Storage,  Next: Garbage Collection,  Prev: Building XEmacs,  Up: Building XEmacs and Object Allocation
 
-Pure Storage
-============
+B.2 Pure Storage
+================
 
 XEmacs Lisp uses two kinds of storage for user-created Lisp objects:
 "normal storage" and "pure storage".  Normal storage is where all the
@@ -4381,7 +5702,7 @@ must increase the compilation parameter `PURESIZE' using the
 you try to preload additional libraries or add features to the standard
 ones.
 
- - Function: purecopy object
+ -- Function: purecopy object
      This function makes a copy of OBJECT in pure storage and returns
      it.  It copies strings by simply making a new string with the same
      characters in pure storage.  It recursively copies the contents of
@@ -4392,13 +5713,13 @@ ones.
      This function is a no-op in XEmacs, and its use in new code is
      deprecated.
 
- - Variable: pure-bytes-used
+ -- Variable: pure-bytes-used
      The value of this variable is the number of bytes of pure storage
      allocated so far.  Typically, in a dumped XEmacs, this number is
      very close to the total amount of pure storage available--if it
      were not, we would preallocate less.
 
- - Variable: purify-flag
+ -- Variable: purify-flag
      This variable determines whether `defun' should make a copy of the
      function definition in pure storage.  If it is non-`nil', then the
      function definition is copied into pure storage.
@@ -4414,8 +5735,8 @@ ones.
 \1f
 File: lispref.info,  Node: Garbage Collection,  Prev: Pure Storage,  Up: Building XEmacs and Object Allocation
 
-Garbage Collection
-==================
+B.3 Garbage Collection
+======================
 
 When a program creates a list or the user defines a new function (such
 as by loading a library), that data is placed in normal storage.  If
@@ -4471,7 +5792,7 @@ using `malloc' and `free'.
      of the program does not use so much space as to force a second
      garbage collection).
 
- - Command: garbage-collect
+ -- Command: garbage-collect
      This command runs a garbage collection, and returns information on
      the amount of space in use.  (Garbage collection can also occur
      spontaneously if you use more than `gc-cons-threshold' bytes of
@@ -4486,7 +5807,7 @@ using `malloc' and `free'.
            USED-STRING-CHARS
            USED-VECTOR-SLOTS
            (PLIST))
-          
+
           => ((73362 . 8325) (13718 . 164)
           (5089 . 5098) 949121 118677
           (conses-used 73362 conses-free 8329 cons-storage 658168
@@ -4569,7 +5890,7 @@ using `malloc' and `free'.
           detailed information. (As you can see above, quite a lot of
           information is provided.)
 
- - User Option: gc-cons-threshold
+ -- User Option: gc-cons-threshold
      The value of this variable is the number of bytes of storage that
      must be allocated for Lisp objects after one garbage collection in
      order to trigger another garbage collection.  A cons cell counts
@@ -4592,20 +5913,20 @@ using `malloc' and `free'.
      not apply if XEmacs was configured with `--debug'.  Therefore, be
      careful when setting `gc-cons-threshold' in that case!)
 
- - Variable: pre-gc-hook
+ -- Variable: pre-gc-hook
      This is a normal hook to be run just before each garbage
      collection.  Interrupts, garbage collection, and errors are
      inhibited while this hook runs, so be extremely careful in what
      you add here.  In particular, avoid consing, and do not interact
      with the user.
 
- - Variable: post-gc-hook
+ -- Variable: post-gc-hook
      This is a normal hook to be run just after each garbage collection.
      Interrupts, garbage collection, and errors are inhibited while
      this hook runs, so be extremely careful in what you add here.  In
      particular, avoid consing, and do not interact with the user.
 
- - Variable: gc-message
+ -- Variable: gc-message
      This is a string to print to indicate that a garbage collection is
      in progress.  This is printed in the echo area.  If the selected
      frame is on a window system and `gc-pointer-glyph' specifies a
@@ -4613,7 +5934,7 @@ using `malloc' and `free'.
      selected frame, the mouse cursor will change instead of this
      message being printed.
 
- - Glyph: gc-pointer-glyph
+ -- Glyph: gc-pointer-glyph
      This holds the pointer glyph used to indicate that a garbage
      collection is in progress.  If the selected window is on a window
      system and this glyph specifies a value (i.e. a pointer image
@@ -4626,19 +5947,19 @@ using `malloc' and `free'.
 two variables to get direct information about all the allocation that
 is happening in a segment of Lisp code.
 
- - Variable: debug-allocation
+ -- Variable: debug-allocation
      If non-zero, print out information to stderr about all objects
      allocated.
 
- - Variable: debug-allocation-backtrace
+ -- Variable: debug-allocation-backtrace
      Length (in stack frames) of short backtrace printed out by
      `debug-allocation'.
 
 \1f
 File: lispref.info,  Node: Standard Errors,  Next: Standard Buffer-Local Variables,  Prev: Building XEmacs and Object Allocation,  Up: Top
 
-Standard Errors
-***************
+Appendix C Standard Errors
+**************************
 
 Here is the complete list of the error symbols in standard Emacs,
 grouped by concept.  The list includes each symbol's message (on the
@@ -4805,8 +6126,8 @@ mathematical functions.
 \1f
 File: lispref.info,  Node: Standard Buffer-Local Variables,  Next: Standard Keymaps,  Prev: Standard Errors,  Up: Top
 
-Buffer-Local Variables
-**********************
+Appendix D Buffer-Local Variables
+*********************************
 
 The table below lists the general-purpose Emacs variables that are
 automatically local (when set) in each buffer.  Many Lisp packages
@@ -4954,8 +6275,8 @@ define such variables for their internal use; we don't list them here.
 \1f
 File: lispref.info,  Node: Standard Keymaps,  Next: Standard Hooks,  Prev: Standard Buffer-Local Variables,  Up: Top
 
-Standard Keymaps
-****************
+Appendix E 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
@@ -5093,8 +6414,8 @@ the global keymap.
 \1f
 File: lispref.info,  Node: Standard Hooks,  Next: Index,  Prev: Standard Keymaps,  Up: Top
 
-Standard Hooks
-**************
+Appendix F Standard Hooks
+*************************
 
 The following is a list of hook variables that let you provide
 functions to be called from within Emacs on suitable occasions.
index 715274f..14b52bf 100644 (file)
Binary files a/info/lispref.info-9 and b/info/lispref.info-9 differ
index dbebb64..d1bb4e4 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/new-users-guide.info, produced by makeinfo version 4.6
+This is ../info/new-users-guide.info, produced by makeinfo version 4.8
 from new-users-guide/new-users-guide.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -177,8 +177,8 @@ anybody can use it afterward.
 \1f
 File: new-users-guide.info,  Node: Entering,  Next: Windows and Menus,  Prev: Concept Index,  Up: Top
 
-Entering and Exiting Emacs
-**************************
+1 Entering and Exiting Emacs
+****************************
 
 While using Emacs you should be familiar with the following three terms:
 
@@ -214,8 +214,8 @@ Windows
 \1f
 File: new-users-guide.info,  Node: Enter,  Next: Frame,  Prev: Entering,  Up: Entering
 
-Entering Emacs
-==============
+1.1 Entering Emacs
+==================
 
 To enter Emacs type `xemacs' and press the Return key at the shell i.e.
 `xemacs <RET>'.  This will bring up an emacs window with `*scratch*' as
@@ -231,8 +231,8 @@ the buffer.
 \1f
 File: new-users-guide.info,  Node: Frame,  Next: Exiting,  Prev: Enter,  Up: Entering
 
-Emacs Frame
-===========
+1.2 Emacs Frame
+===============
 
 When you run XEmacs under X, a menu bar on top of the Emacs frame
 provides access to pull-down menus of file, edit, and help-related
@@ -265,8 +265,8 @@ switching between buffers.
 \1f
 File: new-users-guide.info,  Node: Exiting,  Next: Mode Line,  Prev: Frame,  Up: Entering
 
-Exiting Emacs
-=============
+1.3 Exiting Emacs
+=================
 
 There are two commands for exiting Emacs, one for "suspending" Emacs
 and the other for "killing" Emacs. "Suspending" means stopping Emacs
@@ -292,8 +292,8 @@ the same editing session after it has been killed.
 \1f
 File: new-users-guide.info,  Node: Mode Line,  Next: Echo Area,  Prev: Exiting,  Up: Entering
 
-The Mode Line
-=============
+1.4 The Mode Line
+=================
 
 When you enter XEmacs, each text window's last line is a "mode line"
 which describes what is going on in that window. Normally, the mode
@@ -353,8 +353,8 @@ information on various minor modes and how to enable them.
 \1f
 File: new-users-guide.info,  Node: Echo Area,  Prev: Mode Line,  Up: Entering
 
-The Echo Area
-=============
+1.5 The Echo Area
+=================
 
 The line at the bottom of the frame (below the mode line) is the "echo
 area".  Emacs uses this area to communicate with you:
@@ -386,8 +386,8 @@ area".  Emacs uses this area to communicate with you:
 \1f
 File: new-users-guide.info,  Node: Windows and Menus,  Next: Edit,  Prev: Entering,  Up: Top
 
-XEmacs Windows and Menus
-************************
+2 XEmacs Windows and Menus
+**************************
 
 The first section of this chapter will show you how you can manipulate
 XEmacs Windows and the other section will explain the Pull-down Menus of
@@ -401,8 +401,8 @@ an XEmacs window.
 \1f
 File: new-users-guide.info,  Node: XEmacs Window,  Next: Pull-down Menus,  Prev: Windows and Menus,  Up: Windows and Menus
 
-XEmacs Windows
-==============
+2.1 XEmacs Windows
+==================
 
 When you use XEmacs under X, you can open multiple windows and each
 window can display one buffer or multiple parts of one buffer. Each
@@ -440,9 +440,8 @@ there is only one "selected window" and the buffer it displays is the
      This will split the selected window into two windows positioned
      side by side (`split-window-horizontally'). A line of vertical
      bars will separate the window.
-
-You can select a buffer in another window by using some other commands.
-These commands all have a prefix key `C-x 4'
+   You can select a buffer in another window by using some other
+commands. These commands all have a prefix key `C-x 4'
 `C-x 4 b BUFNAME <RET>'
      This command will select a buffer BUFNAME in another window.  This
      runs `switch-to-buffer-other-window'. It will prompt you for a
@@ -466,7 +465,7 @@ These commands all have a prefix key `C-x 4'
      using Rmail.
 
    If you click the right button on the mouse on a mode line, you will
-get a menu with following options:
+get a menu with following options: 
 Delete Window
      Choosing this menu will remove the window above this modeline from
      the frame.
@@ -490,8 +489,8 @@ Balance Windows
 \1f
 File: new-users-guide.info,  Node: Pull-down Menus,  Prev: XEmacs Window,  Up: Windows and Menus
 
-XEmacs Pull-down Menus
-======================
+2.2 XEmacs Pull-down Menus
+==========================
 
 When you run XEmacs under X, each Emacs frame has a menu-bar at the top
 which provides commands for editing, help and other options. All these
@@ -512,8 +511,8 @@ default menus on the menu bar:
 \1f
 File: new-users-guide.info,  Node: File menu,  Next: Edit menu,  Prev: Pull-down Menus,  Up: Pull-down Menus
 
-The File Menu
--------------
+2.2.1 The File Menu
+-------------------
 
 The File menu bar contains the following items. To choose a particular
 option, press the left mouse button and drag it to the item you wish to
@@ -524,7 +523,6 @@ Open...
      message in the echo area:
 
           Find File:
-
      After Find File, there might be a directory path also. After you
      type the file name and press <RET> the file will be loaded into a
      new buffer.
@@ -541,7 +539,6 @@ Insert File...
      the following message in the echo area:
 
           Insert file:
-
      Insert the file name and press <RET>.
 
 Save <Buffername>
@@ -603,8 +600,8 @@ Exit Emacs
 \1f
 File: new-users-guide.info,  Node: Edit menu,  Next: Options Menu,  Prev: File menu,  Up: Pull-down Menus
 
-The Edit Menu
--------------
+2.2.2 The Edit Menu
+-------------------
 
 Most of the commands in this menu work on a block of text or a selected
 region. The text will be highlighted as you select it.
@@ -660,8 +657,8 @@ Execute Last Macro
 \1f
 File: new-users-guide.info,  Node: Options Menu,  Next: Buffers Menu,  Prev: Edit menu,  Up: Pull-down Menus
 
-The Options Menu
-----------------
+2.2.3 The Options Menu
+----------------------
 
 There are sub-menus for some of the menus which you will need to
 select. If sub-menus exist for an item, they will be displayed
@@ -762,8 +759,8 @@ Save Options
 \1f
 File: new-users-guide.info,  Node: Buffers Menu,  Next: Help menu,  Prev: Options Menu,  Up: Pull-down Menus
 
-The Buffers Menu
-----------------
+2.2.4 The Buffers Menu
+----------------------
 
 The Buffers menu provides a selection of up to ten buffers and the item
 List All Buffers, which provides a Buffer List. If you select Buffers
@@ -773,8 +770,8 @@ of the buffer listing.
 \1f
 File: new-users-guide.info,  Node: Help menu,  Prev: Buffers Menu,  Up: Pull-down Menus
 
-The Help Menu
--------------
+2.2.5 The Help Menu
+-------------------
 
 The Help Menu gives you access to Emacs Info and provides a menu
 equivalent for some of the choices you have when using `C-h'.  *Note
@@ -788,8 +785,8 @@ option.
 \1f
 File: new-users-guide.info,  Node: Edit,  Next: Customization Basics,  Prev: Windows and Menus,  Up: Top
 
-Basic Editing Commands
-**********************
+3 Basic Editing Commands
+************************
 
 This chapter will introduce you to some basic editing commands. You can
 also learn the basic editing commands by typing `Control-h t'
@@ -841,8 +838,8 @@ or the <META> key. The following abbreviations will be used for the
 \1f
 File: new-users-guide.info,  Node: Insert,  Next: Cursor Position,  Prev: Edit,  Up: Edit
 
-Inserting Text
-==============
+3.1 Inserting Text
+==================
 
 To insert printing characters into the text you are editing, just type
 them. Emacs will automatically insert the characters that you type into
@@ -870,8 +867,8 @@ turn on a special mode called "Auto Fill" mode.  *Note Filling:
 \1f
 File: new-users-guide.info,  Node: Cursor Position,  Next: Erase,  Prev: Insert,  Up: Edit
 
-Moving Around
-=============
+3.2 Moving Around
+=================
 
 The following commands will allow you to move the cursor around the
 screen. The actual function names corresponding to these commands are
@@ -935,8 +932,8 @@ given in parenthesis. You can also invoke these commands by typing `M-x
 \1f
 File: new-users-guide.info,  Node: Erase,  Next: Numeric Argument,  Prev: Cursor Position,  Up: Edit
 
-Erasing Text
-============
+3.3 Erasing Text
+================
 
 `<DEL>'
      If you press <DEL> i.e. the "delete" key, it will delete the
@@ -974,8 +971,8 @@ Erasing Text
 \1f
 File: new-users-guide.info,  Node: Numeric Argument,  Next: Undo,  Prev: Erase,  Up: Edit
 
-Giving Numeric Arguments
-========================
+3.4 Giving Numeric Arguments
+============================
 
 Any Emacs command can be given a "numeric argument".  Some commands
 interpret the argument as a repetition count.  For example, if you want
@@ -986,27 +983,23 @@ character). Negative arguments are also allowed. Often they tell a
 command to move or act backwards. For example, if you want to move down
 ten lines, type the following:
      C-u 10 C-n RET
-
-After you press <RET> key, the cursor will move ten lines downward. You
-can also type:
+   After you press <RET> key, the cursor will move ten lines downward.
+You can also type:
      M-10 C-n RET
-
-Both `C-u' and `M-' allow you to give numeric arguments. If you want to
-move ten lines backward, you can also give negative arguments, like:
+   Both `C-u' and `M-' allow you to give numeric arguments. If you want
+to move ten lines backward, you can also give negative arguments, like:
      C-u -10 C-n RET
-
-OR you could also type:
+   OR you could also type:
      M--10 C-n RET
-
-You can obviously use `C-b' to move backward rather than giving
+   You can obviously use `C-b' to move backward rather than giving
 negative arguments to `C-n'. *Note Numeric Arguments: (xemacs)Numeric
 Arguments, for more information on numeric arguments.
 
 \1f
 File: new-users-guide.info,  Node: Undo,  Prev: Numeric Argument,  Up: Edit
 
-Undoing Changes
-===============
+3.5 Undoing Changes
+===================
 
 When you are editing a buffer, you might type something by mistake.
 Emacs allows you to undo all changes you make to a buffer (but not more
@@ -1028,8 +1021,8 @@ on undoing changes.
 \1f
 File: new-users-guide.info,  Node: Customization Basics,  Next: Help,  Prev: Edit,  Up: Top
 
-Customize key bindings and menus
-********************************
+4 Customize key bindings and menus
+**********************************
 
 When you start Emacs, it reads the file `~/.xemacs/init.el' in the
 `.xemacs/' subdirectory of your home directory. You can use this file
@@ -1055,8 +1048,8 @@ customizations in that Emacs session only (*note Lisp Eval:
 \1f
 File: new-users-guide.info,  Node: Customizing key Bindings,  Next: Customizing Menus,  Prev: Customization Basics,  Up: Customization Basics
 
-Customize key bindings
-======================
+4.1 Customize key bindings
+==========================
 
 Most of Emacs commands use key sequences. *Note Keystrokes:
 (xemacs)Keystrokes, for more information about Keys and Commands. In
@@ -1071,10 +1064,9 @@ next-line. To bind keys to globally run commands you need to use the
 following syntax in your init.el file:
 
      `(global-set-key KEYS CMD)'
-
-Here, `global-set-key' is a function which will bind the "keys" to the
-specified "cmd". For example, if you type the following in your init.el
-file:
+   Here, `global-set-key' is a function which will bind the "keys" to
+the specified "cmd". For example, if you type the following in your
+init.el file:
 
      (global-set-key "\C-p" 'next-line)
      (global-set-key "\C-n" 'previous-line)
@@ -1142,8 +1134,8 @@ in XEmacs.
 \1f
 File: new-users-guide.info,  Node: Customizing Menus,  Prev: Customizing key Bindings,  Up: Customization Basics
 
-Customizing Menus
-=================
+4.2 Customizing Menus
+=====================
 
 You can customize any of the  XEmacs Pull-down-Menus. You can create
 your own menu, delete an existing one, enable a menu or disable a menu.
@@ -1222,7 +1214,6 @@ are:
           (add-menu-item '("File" "Management") "Copy File" 'copy-file t)
           (add-menu-item '("File" "Management") "Delete File" 'delete-file t)
           (add-menu-item '("File" "Management") "Rename File" 'rename-file t)
-
      This will create a sub-menu Management under the File menu. When
      you select the submenu Management, it will contain three submenus:
      Copy File, Delete File and Rename File.
@@ -1234,16 +1225,16 @@ are:
 
           ;; deletes the "Replace String" menu item created earlier
           (delete-menu-item '("Edit" "Replace String"))
-          
+
           ;; deletes the "Bot" menu created earlier
           (delete-menu-item '("Bot"))
-          
+
           ;; deletes the sub-menu "Copy File" created earlier
           (delete-menu-item '("File" "File Management" "Copy File"))
-          
+
           ;; deletes the sub-menu "Delete File" created earlier
           (delete-menu-item '("File" "Management" "Delete File"))
-          
+
           ;; deletes the sub-menu "Rename File" created earlier
           (delete-menu-item '("File" "Management" "Rename File"))
 
@@ -1276,8 +1267,8 @@ are:
 \1f
 File: new-users-guide.info,  Node: Help,  Next: Modes,  Prev: Customization Basics,  Up: Top
 
-Help
-****
+5 Help
+******
 
 XEmacs provides a comprehensive Help facility. On the extreme right of
 the menu-bar there is a Help menu. There are several help commands
@@ -1295,8 +1286,8 @@ you can type and what they will do. Initially if you want help, type
 \1f
 File: new-users-guide.info,  Node: The Help Menu,  Prev: Help,  Up: Help
 
-Help menu
-=========
+5.1 Help menu
+=============
 
 When you click on the Help menu with any of the mouse buttons you will
 get the following menu items:
@@ -1327,18 +1318,18 @@ Hyper Apropos...
      at the bottom:
 
           auto-fill-mode
-          
+
           Function, Command:
-          
+
             Toggle auto-fill mode.
             With arg, turn auto-fill mode on if and only if arg is positive.
             In auto-fill mode, inserting a space at a column beyond `fill-column'
             automatically breaks the line at a previous space.
-          
+
           Variable:
-          
+
             value = nil
-          
+
             variable not documented
 
 Command Apropos...
@@ -1372,7 +1363,6 @@ List Keybindings
           C-c C-c v       texinfo-insert-@var
           C-c C-c x       texinfo-insert-@example
           C-c C-c {      texinfo-insert-braces
-
      These keybindings apply only to "Texinfo" mode. *Note Modes::, for
      more information on various modes.
 
@@ -1395,7 +1385,6 @@ Describe Function...
      echo area:
 
           Describe function (default <some function name>):
-
      If you hit <RET> without giving a function name, you will get
      documentation for that default function name, otherwise if you
      type a function name and hit <RET>, you will get documentation for
@@ -1412,7 +1401,6 @@ Unix Manual...
      message in the echo area:
 
           Manual entry: (default <some name>)
-
      Now you can type any command, for example type `who' and press
      <RET>. You will get the man page for the Unix command `who' which
      lists who is on the system.
@@ -1431,8 +1419,8 @@ Emacs News
 \1f
 File: new-users-guide.info,  Node: Modes,  Next: Files,  Prev: Help,  Up: Top
 
-Major and Minor Modes
-*********************
+6 Major and Minor Modes
+***********************
 
 XEmacs is "language sensitive". It has several "major" and "minor"
 modes.  The major modes customize Emacs to edit text of a particular
@@ -1453,8 +1441,8 @@ documentation about those modes.
 \1f
 File: new-users-guide.info,  Node: Major Modes,  Next: Minor Modes,  Prev: Modes,  Up: Modes
 
-Major Modes
-===========
+6.1 Major Modes
+===============
 
 Emacs has several major modes which customize Emacs to edit text of
 various sorts. You can have only one major mode at any time. Within each
@@ -1472,7 +1460,7 @@ To explicitly select a mode type the following command:
 
      ;;; selects lisp mode
      M-x lisp-mode
-     
+
      ;;; selects C mode
      M-x c-mode
 
@@ -1551,8 +1539,8 @@ mode look at the manual for Calendar Mode and Diary.
 \1f
 File: new-users-guide.info,  Node: Minor Modes,  Prev: Major Modes,  Up: Modes
 
-Minor Modes
-===========
+6.2 Minor Modes
+===============
 
 The minor modes in Emacs provide some optional features which you can
 turn on or off. Any number of minor modes can be active at the same time
@@ -1561,9 +1549,8 @@ disable it in other mode. To enable a minor mode, for example the
 font-lock mode type the following command:
 
      M-x font-lock-mode
-
-To enable the other minor modes, replace the "font-lock" with the name
-of the minor mode. To disable the mode type the command again. A
+   To enable the other minor modes, replace the "font-lock" with the
+name of the minor mode. To disable the mode type the command again. A
 positive argument will always turn the mode on. Whenever you type this
 command, it will turn the mode on if it was off, OR it will turn it off
 if it was on i.e. it toggles. Look at the mode-line at the bottom of the
@@ -1645,8 +1632,8 @@ and the associated files.
 \1f
 File: new-users-guide.info,  Node: Files,  Next: Other Customizations,  Prev: Modes,  Up: Top
 
-Files
-*****
+7 Files
+*******
 
 The basic unit of stored data in Unix is the "file".  To edit a file,
 you must tell Emacs to read the file into a buffer. This is called
@@ -1665,8 +1652,8 @@ rename, and append to files, and operate on file directories.
 \1f
 File: new-users-guide.info,  Node: File Names,  Next: Visiting,  Prev: Files,  Up: Files
 
-File Names
-==========
+7.1 File Names
+==============
 
 Most of the Emacs commands that operate on a file require you to
 specify a file name. For example, you might specify the file name
@@ -1708,8 +1695,8 @@ directory. For more information on file names, *Note File Names:
 \1f
 File: new-users-guide.info,  Node: Visiting,  Next: Saving Files,  Prev: File Names,  Up: Files
 
-Visiting Files
-==============
+7.2 Visiting Files
+==================
 
 To edit a file in Emacs you need to "visit" it. "Visiting" a file means
 copying its contents (or reading them) into the current buffer. Emacs
@@ -1753,8 +1740,8 @@ Once you are in XEmacs, you can use the following commands:
 \1f
 File: new-users-guide.info,  Node: Saving Files,  Prev: Visiting,  Up: Files
 
-Saving Files
-============
+7.3 Saving Files
+================
 
 The changes that you make after visiting a file will not be saved
 unless you save the buffer. When you save the buffer, Emacs writes the
@@ -1830,8 +1817,8 @@ against simultaneous editing, *Note Interlocking: (xemacs)Interlocking.
 \1f
 File: new-users-guide.info,  Node: Other Customizations,  Next: Select and Move,  Prev: Files,  Up: Top
 
-Other Customizations
-********************
+8 Other Customizations
+**********************
 
 You can modify the behavior of Emacs in minor ways permanently by
 putting your changes in your `init.el' file. This file contains Lisp
@@ -1862,10 +1849,10 @@ the statements do.
 
      ;;; enables the font-lock-mode in Lisp Mode
      (add-hook 'lisp-mode-hook    'turn-on-font-lock)
-     
+
      ;;; enables the font-lock-mode in Texinfo Mode
      (add-hook 'texinfo-mode-hook    'turn-on-font-lock)
-     
+
      ;;; enables the font-lock mode in C Mode
      (add-hook 'c-mode-hook          'turn-on-font-lock)
 
@@ -1876,7 +1863,7 @@ functions, comments or other keywords  should be displayed in :
 
      ;;; the function names will now be displayed in blue color
      (set-face-foreground 'font-lock-function-name-face "blue")
-     
+
      ;;; the comments will be displayed in forest green
       (set-face-foreground 'font-lock-comment-face "forest green")
 
@@ -1892,8 +1879,8 @@ For other customizations regarding the font-lock face, look at the file
 \1f
 File: new-users-guide.info,  Node: Setting Variables,  Next: Init File,  Prev: Other Customizations,  Up: Other Customizations
 
-Other Customizations
-====================
+8.1 Other Customizations
+========================
 
 In XEmacs, "variables" are used for internal record-keeping and
 customizations. There are some variables called "options" which you can
@@ -1911,7 +1898,7 @@ and you will see the following message in that window:
 
      case-fold-search's value is t
      This value is specific to the current buffer.
-     
+
      Documentation:
      *Non-nil if searches should ignore case.
      Automatically becomes buffer-local when set in any fashion.
@@ -1954,7 +1941,7 @@ customization type:
 
      ;;; displays a buffer listing names, values and documentation of options
      M-x list-options
-     
+
      ;;; displays options and allows you to edit those list of options
      M-x edit-options
 
@@ -1983,8 +1970,8 @@ values to use for certain Emacs variables when you edit that file.
 \1f
 File: new-users-guide.info,  Node: Init File,  Prev: Setting Variables,  Up: Other Customizations
 
-Init File Examples
-==================
+8.2 Init File Examples
+======================
 
 For customizing Emacs, you need to put Lisp expressions in your
 `init.el' file. The following are some useful Lisp expressions. If you
@@ -2141,8 +2128,8 @@ in Emacs.
 \1f
 File: new-users-guide.info,  Node: Select and Move,  Next: Search and Replace,  Prev: Other Customizations,  Up: Top
 
-Selecting and Moving Text
-*************************
+9 Selecting and Moving Text
+***************************
 
 Many Emacs commands operate on an arbitrary contiguous part of the
 current buffer. You can select some part of the buffer and edit only
@@ -2166,8 +2153,8 @@ can select text in two ways:
 \1f
 File: new-users-guide.info,  Node: Selecting Text,  Next: Mouse,  Prev: Select and Move,  Up: Select and Move
 
-Setting the Mark
-================
+9.1 Setting the Mark
+====================
 
 To define a region you need to set "the mark" at one end of it and move
 the cursor to the other end. Once you set the mark, it remains there
@@ -2196,15 +2183,14 @@ mark). To set "the mark", you can use the following commands:
 `C->'
      This command will push the mark at the end of the buffer without
      changing the position of your cursor.
-
-You can also give arguments to `C-<' or `C->'. *Note The Mark and the
-Region: (xemacs)The Mark and the Region, for more information.
+   You can also give arguments to `C-<' or `C->'. *Note The Mark and
+the Region: (xemacs)The Mark and the Region, for more information.
 
 \1f
 File: new-users-guide.info,  Node: Mouse,  Next: Region Operation,  Prev: Selecting Text,  Up: Select and Move
 
-Selecting Text with Mouse
-=========================
+9.2 Selecting Text with Mouse
+=============================
 
 If you are using XEmacs under X, you can use the mouse to select text.
 The selected text will always be highlighted, so just by looking at the
@@ -2234,11 +2220,11 @@ operations.
 \1f
 File: new-users-guide.info,  Node: Region Operation,  Next: Moving Text,  Prev: Mouse,  Up: Select and Move
 
-Operating on the Region
-=======================
+9.3 Operating on the Region
+===========================
 
 Once you have selected a region you can do a lot of things to the text
-in the region:
+in the region: 
    * Kill the text with `C-w'. For example if you want to kill a
      paragraph, position the cursor to the beginning of the paragraph
      and type `C-SPC'. Then go to the end of the paragraph and type
@@ -2264,8 +2250,8 @@ in the region:
 \1f
 File: new-users-guide.info,  Node: Moving Text,  Next: Accumulating text,  Prev: Region Operation,  Up: Select and Move
 
-Moving Text
-===========
+9.4 Moving Text
+===============
 
 The most common way to move or copy text in Emacs is through "killing"
 or `cutting' it and then "yanking" or `pasting' it. You can also use
@@ -2293,8 +2279,8 @@ text you can use the following commands:
 \1f
 File: new-users-guide.info,  Node: Accumulating text,  Prev: Moving Text,  Up: Select and Move
 
-Accumulating Text
-=================
+9.5 Accumulating Text
+=====================
 
 The following commands can be used for accumulating text from different
 buffers into one place or for copying one region of text into many
@@ -2306,7 +2292,6 @@ buffers:
      <RET>, Emacs will prompt you for a buffer name. You will see a
      message in the echo area:
           Append to buffer: (default <buffer name>)
-
      After you type in a buffer name, a copy of the region will be
      inserted at the location of the cursor into that buffer. If there
      is no buffer with the name given by you, Emacs will create a new
@@ -2348,8 +2333,8 @@ registers *Note Registers: (xemacs)Registers.
 \1f
 File: new-users-guide.info,  Node: Search and Replace,  Prev: Select and Move,  Up: Top
 
-Searching and Replacing
-***********************
+10 Searching and Replacing
+**************************
 
 Emacs provides commands for searching for occurrences of a particular
 string. The search is incremental i.e. it begins even before you
@@ -2409,7 +2394,7 @@ you have typed the whole string you can use the following commands:
 expressions, *Note Search: (xemacs)Search.
 
    To replace all occurrences of a string in Emacs, you can use the
-following command:
+following command: 
      M-x replace-string
 
 After you type `M-x replace-string', you will be prompted for a string
@@ -2446,65 +2431,66 @@ File: new-users-guide.info,  Node: Key Index,  Next: Command Index,  Prev: Intro
 Key (Character) Index
 *********************
 
+\0\b[index\0\b]
 * Menu:
 
-* C-<:                                   Selecting Text.
-* C->:                                   Selecting Text.
-* C-a:                                   Cursor Position.
-* C-b:                                   Cursor Position.
-* C-d:                                   Erase.
-* C-e:                                   Cursor Position.
-* C-fx:                                  Cursor Position.
-* C-g:                                   The Help Menu.
-* C-h d:                                 The Help Menu.
-* C-h k:                                 The Help Menu.
-* C-h t:                                 Edit.
-* C-k:                                   Erase.
-* C-M-\:                                 Region Operation.
-* C-n:                                   Cursor Position.
-* C-p:                                   Cursor Position.
-* C-r:                                   Search and Replace.
-* C-s:                                   Search and Replace.
-* C-SPC <1>:                             Region Operation.
-* C-SPC:                                 Selecting Text.
-* C-t:                                   Cursor Position.
-* C-u:                                   Numeric Argument.
-* C-v:                                   Cursor Position.
-* C-w:                                   Region Operation.
-* C-x 0:                                 XEmacs Window.
-* C-x 1:                                 XEmacs Window.
-* C-x 2:                                 XEmacs Window.
-* C-x 3:                                 XEmacs Window.
-* C-x 4:                                 XEmacs Window.
-* C-x 4 b:                               XEmacs Window.
-* C-x 4 d:                               XEmacs Window.
-* C-x 4 f:                               XEmacs Window.
-* C-x 4 m:                               XEmacs Window.
-* C-x 5 C-f:                             Visiting.
-* C-x C-c:                               Exiting.
-* C-x C-f:                               Visiting.
-* C-x C-l:                               Region Operation.
-* C-x C-s:                               Saving Files.
-* C-x C-u:                               Region Operation.
-* C-x C-v:                               Visiting.
-* C-x C-w:                               Saving Files.
-* C-x C-x:                               Selecting Text.
-* C-x s:                                 Saving Files.
-* C-x TAB:                               Region Operation.
-* C-x u:                                 Undo.
-* C-y:                                   Moving Text.
-* C-z:                                   Exiting.
-* DEL:                                   Insert.
-* M--:                                   Numeric Argument.
-* M-<:                                   Cursor Position.
-* M->:                                   Cursor Position.
-* M-C-v:                                 XEmacs Window.
-* M-d:                                   Erase.
-* M-DEL:                                 Erase.
-* M-k:                                   Erase.
-* M-v:                                   Cursor Position.
-* M-z:                                   Erase.
-* RET:                                   Insert.
+* C-<:                                   Selecting Text.      (line   6)
+* C->:                                   Selecting Text.      (line   6)
+* C-a:                                   Cursor Position.     (line  11)
+* C-b:                                   Cursor Position.     (line  11)
+* C-d:                                   Erase.               (line   6)
+* C-e:                                   Cursor Position.     (line  11)
+* C-fx:                                  Cursor Position.     (line  11)
+* C-g:                                   The Help Menu.       (line  92)
+* C-h d:                                 The Help Menu.       (line  96)
+* C-h k:                                 The Help Menu.       (line 107)
+* C-h t:                                 Edit.                (line   6)
+* C-k:                                   Erase.               (line   6)
+* C-M-\:                                 Region Operation.    (line   7)
+* C-n:                                   Cursor Position.     (line  11)
+* C-p:                                   Cursor Position.     (line  11)
+* C-r:                                   Search and Replace.  (line  33)
+* C-s:                                   Search and Replace.  (line  18)
+* C-SPC <1>:                             Region Operation.    (line   7)
+* C-SPC:                                 Selecting Text.      (line   6)
+* C-t:                                   Cursor Position.     (line  11)
+* C-u:                                   Numeric Argument.    (line   6)
+* C-v:                                   Cursor Position.     (line  11)
+* C-w:                                   Region Operation.    (line   7)
+* C-x 0:                                 XEmacs Window.       (line  12)
+* C-x 1:                                 XEmacs Window.       (line  12)
+* C-x 2:                                 XEmacs Window.       (line  12)
+* C-x 3:                                 XEmacs Window.       (line  12)
+* C-x 4:                                 XEmacs Window.       (line  12)
+* C-x 4 b:                               XEmacs Window.       (line  44)
+* C-x 4 d:                               XEmacs Window.       (line  44)
+* C-x 4 f:                               XEmacs Window.       (line  44)
+* C-x 4 m:                               XEmacs Window.       (line  44)
+* C-x 5 C-f:                             Visiting.            (line  38)
+* C-x C-c:                               Exiting.             (line  15)
+* C-x C-f:                               Visiting.            (line  19)
+* C-x C-l:                               Region Operation.    (line   7)
+* C-x C-s:                               Saving Files.        (line  12)
+* C-x C-u:                               Region Operation.    (line   7)
+* C-x C-v:                               Visiting.            (line  33)
+* C-x C-w:                               Saving Files.        (line  37)
+* C-x C-x:                               Selecting Text.      (line   6)
+* C-x s:                                 Saving Files.        (line  28)
+* C-x TAB:                               Region Operation.    (line   7)
+* C-x u:                                 Undo.                (line  12)
+* C-y:                                   Moving Text.         (line   6)
+* C-z:                                   Exiting.             (line  15)
+* DEL:                                   Insert.              (line  13)
+* M--:                                   Numeric Argument.    (line   6)
+* M-<:                                   Cursor Position.     (line  11)
+* M->:                                   Cursor Position.     (line  11)
+* M-C-v:                                 XEmacs Window.       (line  12)
+* M-d:                                   Erase.               (line   6)
+* M-DEL:                                 Erase.               (line   6)
+* M-k:                                   Erase.               (line   6)
+* M-v:                                   Cursor Position.     (line  11)
+* M-z:                                   Erase.               (line   6)
+* RET:                                   Insert.              (line  19)
 
 \1f
 File: new-users-guide.info,  Node: Command Index,  Next: Variable Index,  Prev: Key Index,  Up: Top
@@ -2512,78 +2498,81 @@ File: new-users-guide.info,  Node: Command Index,  Next: Variable Index,  Prev:
 Command and Function Index
 **************************
 
+\0\b[index\0\b]
 * Menu:
 
-* add-menu-item:                         Customizing Menus.
-* append-to-buffer:                      Accumulating text.
-* append-to-file:                        Accumulating text.
-* auto-fill-mode <1>:                    Minor Modes.
-* auto-fill-mode:                        Insert.
-* backward-char:                         Cursor Position.
-* backward-kill-word:                    Erase.
-* backward-word:                         Cursor Position.
-* beginning-of-buffer:                   Cursor Position.
-* beginning-of-line:                     Cursor Position.
-* copy-to-buffer:                        Accumulating text.
-* delete-backward-char:                  Erase.
-* delete-char:                           Erase.
-* delete-menu-item:                      Customizing Menus.
-* delete-other-windows <1>:              XEmacs Window.
-* delete-other-windows:                  Windows and Menus.
-* delete-window <1>:                     XEmacs Window.
-* delete-window:                         Windows and Menus.
-* describe-variable:                     Setting Variables.
-* dired-other-window:                    XEmacs Window.
-* disable-menu-item:                     Customizing Menus.
-* edit-options:                          Setting Variables.
-* enable-menu-item:                      Customizing Menus.
-* end-of-buffer:                         Cursor Position.
-* end-of-line:                           Cursor Position.
-* eval-expression:                       Init File.
+* add-menu-item:                         Customizing Menus.   (line   6)
+* append-to-buffer:                      Accumulating text.   (line   6)
+* append-to-file:                        Accumulating text.   (line   6)
+* auto-fill-mode <1>:                    Minor Modes.         (line  49)
+* auto-fill-mode:                        Insert.              (line  19)
+* backward-char:                         Cursor Position.     (line  11)
+* backward-kill-word:                    Erase.               (line   6)
+* backward-word:                         Cursor Position.     (line  33)
+* beginning-of-buffer:                   Cursor Position.     (line  11)
+* beginning-of-line:                     Cursor Position.     (line  11)
+* copy-to-buffer:                        Accumulating text.   (line   6)
+* delete-backward-char:                  Erase.               (line   6)
+* delete-char:                           Erase.               (line   6)
+* delete-menu-item:                      Customizing Menus.   (line  87)
+* delete-other-windows <1>:              XEmacs Window.       (line  22)
+* delete-other-windows:                  Windows and Menus.   (line   6)
+* delete-window <1>:                     XEmacs Window.       (line  16)
+* delete-window:                         Windows and Menus.   (line   6)
+* describe-variable:                     Setting Variables.   (line   6)
+* dired-other-window:                    XEmacs Window.       (line  44)
+* disable-menu-item:                     Customizing Menus.   (line 107)
+* edit-options:                          Setting Variables.   (line  62)
+* enable-menu-item:                      Customizing Menus.   (line 116)
+* end-of-buffer:                         Cursor Position.     (line  11)
+* end-of-line:                           Cursor Position.     (line  11)
+* eval-expression:                       Init File.           (line  37)
 * eval-region:                           Customization Basics.
-* exchange-point-and-mark:               Selecting Text.
-* find-alternate-file:                   Visiting.
-* find-file:                             Visiting.
-* find-file-other-frame:                 Visiting.
-* find-file-other-window:                XEmacs Window.
-* forward-char:                          Cursor Position.
-* forward-word:                          Cursor Position.
-* goto-char:                             Cursor Position.
-* goto-line:                             Cursor Position.
-* help-with-tutorial:                    Edit.
-* isearch-backward:                      Search and Replace.
-* isearch-forward:                       Search and Replace.
-* kill-line:                             Erase.
-* kill-sentence:                         Erase.
-* kill-word:                             Erase.
-* list-options:                          Setting Variables.
-* mail-other-window:                     XEmacs Window.
-* make-directory:                        File Names.
+                                                              (line   6)
+* exchange-point-and-mark:               Selecting Text.      (line   6)
+* find-alternate-file:                   Visiting.            (line  33)
+* find-file:                             Visiting.            (line  19)
+* find-file-other-frame:                 Visiting.            (line  38)
+* find-file-other-window:                XEmacs Window.       (line  44)
+* forward-char:                          Cursor Position.     (line  11)
+* forward-word:                          Cursor Position.     (line  30)
+* goto-char:                             Cursor Position.     (line  11)
+* goto-line:                             Cursor Position.     (line  11)
+* help-with-tutorial:                    Edit.                (line   6)
+* isearch-backward:                      Search and Replace.  (line  33)
+* isearch-forward:                       Search and Replace.  (line  18)
+* kill-line:                             Erase.               (line   6)
+* kill-sentence:                         Erase.               (line   6)
+* kill-word:                             Erase.               (line   6)
+* list-options:                          Setting Variables.   (line  62)
+* mail-other-window:                     XEmacs Window.       (line  44)
+* make-directory:                        File Names.          (line  35)
 * make-symbolic-link:                    Customizing key Bindings.
-* mark-beginning-of-buffer:              Selecting Text.
-* mark-end-of-buffer:                    Selecting Text.
-* next-line:                             Cursor Position.
-* prepend-to-buffer:                     Accumulating text.
-* previous-line:                         Cursor Position.
-* print-region:                          Region Operation.
-* relabel-menu-items:                    Customizing Menus.
-* remove-directory:                      File Names.
-* replace-string:                        Search and Replace.
-* save-buffer:                           Saving Files.
-* save-buffers-kill-emacs:               Exiting.
-* save-some-buffers:                     Saving Files.
-* scroll-other-window <1>:               XEmacs Window.
-* scroll-other-window:                   Windows and Menus.
-* set-mark-command:                      Selecting Text.
-* set-variable:                          Setting Variables.
-* split-window-horizontally:             XEmacs Window.
-* split-window-vertically:               XEmacs Window.
-* suspend-emacs:                         Exiting.
-* switch-to-buffer-other-window:         XEmacs Window.
-* transpose-chars:                       Cursor Position.
-* write file:                            Saving Files.
-* yank:                                  Moving Text.
-* zap-to-char:                           Erase.
+                                                              (line  80)
+* mark-beginning-of-buffer:              Selecting Text.      (line   6)
+* mark-end-of-buffer:                    Selecting Text.      (line   6)
+* next-line:                             Cursor Position.     (line  11)
+* prepend-to-buffer:                     Accumulating text.   (line   6)
+* previous-line:                         Cursor Position.     (line  11)
+* print-region:                          Region Operation.    (line   7)
+* relabel-menu-items:                    Customizing Menus.   (line 124)
+* remove-directory:                      File Names.          (line  35)
+* replace-string:                        Search and Replace.  (line  64)
+* save-buffer:                           Saving Files.        (line  12)
+* save-buffers-kill-emacs:               Exiting.             (line  15)
+* save-some-buffers:                     Saving Files.        (line  28)
+* scroll-other-window <1>:               XEmacs Window.       (line  13)
+* scroll-other-window:                   Windows and Menus.   (line   6)
+* set-mark-command:                      Selecting Text.      (line   6)
+* set-variable:                          Setting Variables.   (line  32)
+* split-window-horizontally:             XEmacs Window.       (line  38)
+* split-window-vertically:               XEmacs Window.       (line  32)
+* suspend-emacs:                         Exiting.             (line  15)
+* switch-to-buffer-other-window:         XEmacs Window.       (line  44)
+* transpose-chars:                       Cursor Position.     (line  11)
+* write file:                            Saving Files.        (line  37)
+* yank:                                  Moving Text.         (line   6)
+* zap-to-char:                           Erase.               (line   6)
 
 \1f
 File: new-users-guide.info,  Node: Variable Index,  Next: Concept Index,  Prev: Command Index,  Up: Top
@@ -2591,16 +2580,17 @@ File: new-users-guide.info,  Node: Variable Index,  Next: Concept Index,  Prev:
 Variable Index
 **************
 
+\0\b[index\0\b]
 * Menu:
 
-* buffers-menu-max-size:                 Init File.
-* case-fold-search:                      Search and Replace.
-* default-directory:                     File Names.
-* display-time:                          Init File.
-* fill-column:                           Init File.
-* frame-title-format:                    Init File.
-* make-backup-files:                     Saving Files.
-* zmacs-regions:                         Init File.
+* buffers-menu-max-size:                 Init File.           (line 129)
+* case-fold-search:                      Search and Replace.  (line   6)
+* default-directory:                     File Names.          (line  19)
+* display-time:                          Init File.           (line 108)
+* fill-column:                           Init File.           (line  33)
+* frame-title-format:                    Init File.           (line 135)
+* make-backup-files:                     Saving Files.        (line  51)
+* zmacs-regions:                         Init File.           (line 119)
 
 \1f
 File: new-users-guide.info,  Node: Concept Index,  Next: Entering,  Prev: Variable Index,  Up: Top
@@ -2608,145 +2598,154 @@ File: new-users-guide.info,  Node: Concept Index,  Next: Entering,  Prev: Variab
 Concept Index
 *************
 
+\0\b[index\0\b]
 * Menu:
 
-* abbrev-mode:                           Minor Modes.
-* accumulating text:                     Accumulating text.
-* add menus:                             Customizing Menus.
-* asm-mode:                              Major Modes.
-* Auto Delete Selection menu item:       Options Menu.
-* auto saving:                           Saving Files.
-* auto-save-mode:                        Minor Modes.
+* abbrev-mode:                           Minor Modes.         (line  60)
+* accumulating text:                     Accumulating text.   (line   6)
+* add menus:                             Customizing Menus.   (line   6)
+* asm-mode:                              Major Modes.         (line  86)
+* Auto Delete Selection menu item:       Options Menu.        (line   6)
+* auto saving:                           Saving Files.        (line  61)
+* auto-save-mode:                        Minor Modes.         (line  72)
 * binding keys:                          Customizing key Bindings.
-* blink-paren:                           Minor Modes.
-* buffer:                                Entering.
-* Buffers menu:                          Buffers Menu.
-* Buffers Menu Length... menu item:      Options Menu.
-* Buffers Sub-Menus menu item:           Options Menu.
-* c-mode:                                Major Modes.
-* Case Sensitive Search menu item:       Options Menu.
-* Clear menu item:                       Edit menu.
-* clipboard selection:                   Mouse.
-* Copy menu item:                        Edit menu.
-* copying text:                          Accumulating text.
-* creating-directories:                  File Names.
-* cursor control:                        Cursor Position.
-* cursor position:                       Cursor Position.
-* cursor shapes:                         Mouse.
+                                                              (line  18)
+* blink-paren:                           Minor Modes.         (line  81)
+* buffer:                                Entering.            (line   6)
+* Buffers menu:                          Buffers Menu.        (line   6)
+* Buffers Menu Length... menu item:      Options Menu.        (line   6)
+* Buffers Sub-Menus menu item:           Options Menu.        (line   6)
+* c-mode:                                Major Modes.         (line  68)
+* Case Sensitive Search menu item:       Options Menu.        (line   6)
+* Clear menu item:                       Edit menu.           (line   6)
+* clipboard selection:                   Mouse.               (line   6)
+* Copy menu item:                        Edit menu.           (line   6)
+* copying text:                          Accumulating text.   (line   6)
+* creating-directories:                  File Names.          (line  35)
+* cursor control:                        Cursor Position.     (line   6)
+* cursor position:                       Cursor Position.     (line   6)
+* cursor shapes:                         Mouse.               (line   6)
 * customize <1>:                         Other Customizations.
+                                                              (line   6)
 * customize:                             Customization Basics.
-* customize menus:                       Customizing Menus.
-* Cut menu item:                         Edit menu.
-* Delete Frame menu item:                File menu.
-* delete menus:                          Customizing Menus.
-* deleting:                              Erase.
-* deleting menu items:                   Customizing Menus.
-* deletion:                              Insert.
-* digit argument:                        Numeric Argument.
-* disable menus:                         Customizing Menus.
-* disabling menu items:                  Customizing Menus.
-* displaying time:                       Init File.
-* echo area:                             Echo Area.
-* edit-picture:                          Major Modes.
-* enabling menu items:                   Customizing Menus.
-* End Macro Recording menu item:         Edit menu.
-* entering Emacs:                        Enter.
-* entering XEmacs:                       Enter.
-* erasing:                               Erase.
-* Execute Last Macro menu item:          Edit menu.
-* Exit Emacs menu item:                  File menu.
-* exiting:                               Exiting.
-* file:                                  Entering.
-* File menu:                             File menu.
-* file names:                            File Names.
-* files:                                 Files.
-* Font menu item:                        Options Menu.
+                                                              (line   6)
+* customize menus:                       Customizing Menus.   (line   6)
+* Cut menu item:                         Edit menu.           (line   6)
+* Delete Frame menu item:                File menu.           (line   6)
+* delete menus:                          Customizing Menus.   (line   6)
+* deleting:                              Erase.               (line   6)
+* deleting menu items:                   Customizing Menus.   (line  87)
+* deletion:                              Insert.              (line  13)
+* digit argument:                        Numeric Argument.    (line   6)
+* disable menus:                         Customizing Menus.   (line   6)
+* disabling menu items:                  Customizing Menus.   (line 107)
+* displaying time:                       Init File.           (line 108)
+* echo area:                             Echo Area.           (line   6)
+* edit-picture:                          Major Modes.         (line  81)
+* enabling menu items:                   Customizing Menus.   (line 116)
+* End Macro Recording menu item:         Edit menu.           (line   6)
+* entering Emacs:                        Enter.               (line   6)
+* entering XEmacs:                       Enter.               (line   6)
+* erasing:                               Erase.               (line   6)
+* Execute Last Macro menu item:          Edit menu.           (line   6)
+* Exit Emacs menu item:                  File menu.           (line   6)
+* exiting:                               Exiting.             (line   6)
+* file:                                  Entering.            (line   6)
+* File menu:                             File menu.           (line   6)
+* file names:                            File Names.          (line   6)
+* files:                                 Files.               (line   6)
+* Font menu item:                        Options Menu.        (line   6)
 * font-lock-mode <1>:                    Other Customizations.
-* font-lock-mode:                        Minor Modes.
-* fortran-mode:                          Major Modes.
-* fundamental-mode:                      Major Modes.
-* goto-line:                             Cursor Position.
-* help <1>:                              The Help Menu.
-* help:                                  Help.
-* Help menu:                             Help menu.
+                                                              (line   6)
+* font-lock-mode:                        Minor Modes.         (line  25)
+* fortran-mode:                          Major Modes.         (line  76)
+* fundamental-mode:                      Major Modes.         (line  36)
+* goto-line:                             Cursor Position.     (line  55)
+* help <1>:                              The Help Menu.       (line   6)
+* help:                                  Help.                (line   6)
+* Help menu:                             Help menu.           (line   6)
 * hook:                                  Other Customizations.
-* init file examples:                    Init File.
+                                                              (line   6)
+* init file examples:                    Init File.           (line   6)
 * init.el:                               Customization Basics.
-* Insert File... menu item:              File menu.
-* insertion:                             Insert.
+                                                              (line   6)
+* Insert File... menu item:              File menu.           (line   6)
+* insertion:                             Insert.              (line   6)
 * key bindings:                          Customizing key Bindings.
+                                                              (line   6)
 * keystrokes:                            Customizing key Bindings.
-* Kill Buffer menu item:                 File menu.
-* kill ring:                             Moving Text.
-* killing:                               Moving Text.
-* killing Emacs:                         Exiting.
-* line-number-mode:                      Minor Modes.
-* lisp-mode:                             Major Modes.
-* major modes:                           Major Modes.
-* mark:                                  Select and Move.
-* menus:                                 XEmacs Window.
-* minor modes:                           Minor Modes.
-* mistakes, correcting:                  Undo.
-* mode line:                             Mode Line.
-* modes:                                 Modes.
-* mouse selection:                       Mouse.
-* moving text:                           Moving Text.
-* negative argument:                     Numeric Argument.
-* New Frame menu item:                   File menu.
-* newline:                               Insert.
-* nroff-mode:                            Major Modes.
-* numeric argument:                      Numeric Argument.
-* Open ... menu item:                    File menu.
-* open another file:                     Frame.
-* Open in New Frame... menu item:        File menu.
-* Options menu:                          Options Menu.
-* outline-mode:                          Major Modes.
-* overstrike:                            Insert.
-* Overstrike menu item:                  Options Menu.
-* overwrite-mode:                        Minor Modes.
-* Paren Highlighting menu item:          Options Menu.
-* Paste menu item:                       Edit menu.
-* pasting:                               Moving Text.
-* primary selection:                     Mouse.
-* Print Buffer menu item:                File menu.
-* pull-down-menus:                       XEmacs Window.
-* Read Only menu item:                   Options Menu.
-* rectangle commands:                    Accumulating text.
-* region:                                Select and Move.
-* registers:                             Accumulating text.
-* relabelling menu items:                Customizing Menus.
-* removing-directories:                  File Names.
-* replace:                               Search and Replace.
-* Revert Buffer menu item:               File menu.
-* Save Buffer As ... menu item:          File menu.
-* Save Buffer menu item:                 File menu.
-* Save Options:                          Options Menu.
-* saving files:                          Saving Files.
-* searching:                             Search and Replace.
-* selected window:                       Windows and Menus.
-* setting variables:                     Setting Variables.
-* shrinking XEmacs frame:                Exiting.
-* simultaneous editing:                  Saving Files.
-* Size menu item:                        Options Menu.
-* Split Frame:                           File menu.
-* Start Macro Recording menu item:       Edit menu.
-* suspending:                            Exiting.
-* Syntax Highlighting menu item:         Options Menu.
-* Teach Extended Commands menu item:     Options Menu.
-* temporary storage:                     Accumulating text.
-* tex-mode:                              Major Modes.
-* texinfo-mode:                          Major Modes.
-* top level:                             Mode Line.
-* Un-split (Keep Others):                File menu.
-* Un-split (Keep This):                  File menu.
-* undo:                                  Undo.
-* Undo menu item:                        Edit menu.
-* visiting files:                        Visiting.
-* Weight menu item:                      Options Menu.
-* windows <1>:                           XEmacs Window.
-* windows <2>:                           Windows and Menus.
-* windows:                               Entering.
-* yanking:                               Moving Text.
+                                                              (line   6)
+* Kill Buffer menu item:                 File menu.           (line   6)
+* kill ring:                             Moving Text.         (line   6)
+* killing:                               Moving Text.         (line   6)
+* killing Emacs:                         Exiting.             (line   6)
+* line-number-mode:                      Minor Modes.         (line  77)
+* lisp-mode:                             Major Modes.         (line  72)
+* major modes:                           Major Modes.         (line   6)
+* mark:                                  Select and Move.     (line   6)
+* menus:                                 XEmacs Window.       (line  67)
+* minor modes:                           Minor Modes.         (line   6)
+* mistakes, correcting:                  Undo.                (line   6)
+* mode line:                             Mode Line.           (line   6)
+* modes:                                 Modes.               (line   6)
+* mouse selection:                       Mouse.               (line   6)
+* moving text:                           Moving Text.         (line   6)
+* negative argument:                     Numeric Argument.    (line   6)
+* New Frame menu item:                   File menu.           (line   6)
+* newline:                               Insert.              (line  19)
+* nroff-mode:                            Major Modes.         (line  41)
+* numeric argument:                      Numeric Argument.    (line   6)
+* Open ... menu item:                    File menu.           (line   6)
+* open another file:                     Frame.               (line   6)
+* Open in New Frame... menu item:        File menu.           (line   6)
+* Options menu:                          Options Menu.        (line   6)
+* outline-mode:                          Major Modes.         (line  62)
+* overstrike:                            Insert.              (line   6)
+* Overstrike menu item:                  Options Menu.        (line   6)
+* overwrite-mode:                        Minor Modes.         (line  54)
+* Paren Highlighting menu item:          Options Menu.        (line   6)
+* Paste menu item:                       Edit menu.           (line   6)
+* pasting:                               Moving Text.         (line   6)
+* primary selection:                     Mouse.               (line   6)
+* Print Buffer menu item:                File menu.           (line   6)
+* pull-down-menus:                       XEmacs Window.       (line  67)
+* Read Only menu item:                   Options Menu.        (line   6)
+* rectangle commands:                    Accumulating text.   (line   6)
+* region:                                Select and Move.     (line   6)
+* registers:                             Accumulating text.   (line   6)
+* relabelling menu items:                Customizing Menus.   (line 124)
+* removing-directories:                  File Names.          (line  35)
+* replace:                               Search and Replace.  (line   6)
+* Revert Buffer menu item:               File menu.           (line   6)
+* Save Buffer As ... menu item:          File menu.           (line   6)
+* Save Buffer menu item:                 File menu.           (line   6)
+* Save Options:                          Options Menu.        (line   6)
+* saving files:                          Saving Files.        (line   6)
+* searching:                             Search and Replace.  (line   6)
+* selected window:                       Windows and Menus.   (line   6)
+* setting variables:                     Setting Variables.   (line   6)
+* shrinking XEmacs frame:                Exiting.             (line   6)
+* simultaneous editing:                  Saving Files.        (line  70)
+* Size menu item:                        Options Menu.        (line   6)
+* Split Frame:                           File menu.           (line   6)
+* Start Macro Recording menu item:       Edit menu.           (line   6)
+* suspending:                            Exiting.             (line   6)
+* Syntax Highlighting menu item:         Options Menu.        (line   6)
+* Teach Extended Commands menu item:     Options Menu.        (line   6)
+* temporary storage:                     Accumulating text.   (line   6)
+* tex-mode:                              Major Modes.         (line  47)
+* texinfo-mode:                          Major Modes.         (line  53)
+* top level:                             Mode Line.           (line   6)
+* Un-split (Keep Others):                File menu.           (line   6)
+* Un-split (Keep This):                  File menu.           (line   6)
+* undo:                                  Undo.                (line   6)
+* Undo menu item:                        Edit menu.           (line   6)
+* visiting files:                        Visiting.            (line   6)
+* Weight menu item:                      Options Menu.        (line   6)
+* windows <1>:                           XEmacs Window.       (line  67)
+* windows <2>:                           Windows and Menus.   (line   6)
+* windows:                               Entering.            (line   6)
+* yanking:                               Moving Text.         (line   6)
 
 
 \1f
@@ -2754,50 +2753,50 @@ Tag Table:
 Node: Top\7f635
 Node: Intro\7f4610
 Node: Entering\7f7190
-Node: Enter\7f8701
-Node: Frame\7f9380
-Node: Exiting\7f11046
-Node: Mode Line\7f12243
-Node: Echo Area\7f14387
-Node: Windows and Menus\7f15739
-Node: XEmacs Window\7f16189
-Node: Pull-down Menus\7f19807
-Node: File menu\7f20683
-Node: Edit menu\7f23940
-Node: Options Menu\7f26463
-Node: Buffers Menu\7f31245
-Node: Help menu\7f31628
-Node: Edit\7f32123
-Node: Insert\7f33714
-Node: Cursor Position\7f35039
-Node: Erase\7f37108
-Node: Numeric Argument\7f38262
-Node: Undo\7f39443
-Node: Customization Basics\7f40203
-Node: Customizing key Bindings\7f41472
-Node: Customizing Menus\7f44964
-Node: Help\7f50451
-Node: The Help Menu\7f51136
-Node: Modes\7f56100
-Node: Major Modes\7f57013
-Node: Minor Modes\7f60962
-Node: Files\7f65056
-Node: File Names\7f65775
-Node: Visiting\7f67577
-Node: Saving Files\7f69698
-Node: Other Customizations\7f73076
-Node: Setting Variables\7f75557
-Node: Init File\7f78767
-Node: Select and Move\7f84270
-Node: Selecting Text\7f85221
-Node: Mouse\7f86731
-Node: Region Operation\7f88053
-Node: Moving Text\7f89310
-Node: Accumulating text\7f90547
-Node: Search and Replace\7f92865
-Node: Key Index\7f96730
-Node: Command Index\7f100019
-Node: Variable Index\7f104121
-Node: Concept Index\7f104698
+Node: Enter\7f8705
+Node: Frame\7f9392
+Node: Exiting\7f11066
+Node: Mode Line\7f12271
+Node: Echo Area\7f14423
+Node: Windows and Menus\7f15783
+Node: XEmacs Window\7f16237
+Node: Pull-down Menus\7f19866
+Node: File menu\7f20750
+Node: Edit menu\7f24017
+Node: Options Menu\7f26552
+Node: Buffers Menu\7f31346
+Node: Help menu\7f31741
+Node: Edit\7f32248
+Node: Insert\7f33843
+Node: Cursor Position\7f35176
+Node: Erase\7f37253
+Node: Numeric Argument\7f38415
+Node: Undo\7f39612
+Node: Customization Basics\7f40380
+Node: Customizing key Bindings\7f41653
+Node: Customizing Menus\7f45155
+Node: Help\7f50609
+Node: The Help Menu\7f51298
+Node: Modes\7f56217
+Node: Major Modes\7f57134
+Node: Minor Modes\7f61086
+Node: Files\7f65190
+Node: File Names\7f65913
+Node: Visiting\7f67723
+Node: Saving Files\7f69852
+Node: Other Customizations\7f73238
+Node: Setting Variables\7f75708
+Node: Init File\7f78916
+Node: Select and Move\7f84427
+Node: Selecting Text\7f85382
+Node: Mouse\7f86902
+Node: Region Operation\7f88232
+Node: Moving Text\7f89498
+Node: Accumulating text\7f90743
+Node: Search and Replace\7f93068
+Node: Key Index\7f96940
+Node: Command Index\7f101262
+Node: Variable Index\7f106682
+Node: Concept Index\7f107426
 \1f
 End Tag Table
index 8574d8f..44a4643 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/standards.info, produced by makeinfo version 4.6 from
+This is ../info/standards.info, produced by makeinfo version 4.8 from
 standards.texi.
 
 START-INFO-DIR-ENTRY
@@ -45,8 +45,8 @@ Last updated February 21, 2001.
 \1f
 File: standards.info,  Node: Preface,  Next: Legal Issues,  Prev: Top,  Up: Top
 
-About the GNU Coding Standards
-******************************
+1 About the GNU Coding Standards
+********************************
 
 The GNU Coding Standards were written by Richard Stallman and other GNU
 Project volunteers.  Their purpose is to make the GNU system clean,
@@ -76,8 +76,8 @@ GNU World Wide Web server: `http://www.gnu.org/prep/standards_toc.html'.
 \1f
 File: standards.info,  Node: Legal Issues,  Next: Design Advice,  Prev: Preface,  Up: Top
 
-Keeping Free Software Free
-**************************
+2 Keeping Free Software Free
+****************************
 
 This node discusses how you can make sure that GNU software avoids
 legal difficulties, and other related issues.
@@ -91,8 +91,8 @@ legal difficulties, and other related issues.
 \1f
 File: standards.info,  Node: Reading Non-Free Code,  Next: Contributions,  Up: Legal Issues
 
-Referring to Proprietary Programs
-=================================
+2.1 Referring to Proprietary Programs
+=====================================
 
 Don't in any circumstances refer to Unix source code for or during your
 work on GNU!  (Or to any other proprietary programs.)
@@ -128,8 +128,8 @@ obstacks.
 \1f
 File: standards.info,  Node: Contributions,  Next: Trademarks,  Prev: Reading Non-Free Code,  Up: Legal Issues
 
-Accepting Contributions
-=======================
+2.2 Accepting Contributions
+===========================
 
 If the program you are working on is copyrighted by the Free Software
 Foundation, then when someone else sends you a piece of code to add to
@@ -175,8 +175,8 @@ released or not), please ask us for a copy.
 \1f
 File: standards.info,  Node: Trademarks,  Prev: Contributions,  Up: Legal Issues
 
-Trademarks
-==========
+2.3 Trademarks
+==============
 
 Please do not include any trademark acknowledgements in GNU software
 packages or documentation.
@@ -199,8 +199,8 @@ language.
 \1f
 File: standards.info,  Node: Design Advice,  Next: Program Behavior,  Prev: Legal Issues,  Up: Top
 
-General Program Design
-**********************
+3 General Program Design
+************************
 
 This node discusses some of the issues you should take into account
 when designing your program.
@@ -215,8 +215,8 @@ when designing your program.
 \1f
 File: standards.info,  Node: Source Language,  Next: Compatibility,  Up: Design Advice
 
-Which Languages to Use
-======================
+3.1 Which Languages to Use
+==========================
 
 When you want to use a language that gets compiled and runs at high
 speed, the best language to use is C.  Using another language is like
@@ -260,8 +260,8 @@ the GNU system.
 \1f
 File: standards.info,  Node: Compatibility,  Next: Using Extensions,  Prev: Source Language,  Up: Design Advice
 
-Compatibility with Other Implementations
-========================================
+3.2 Compatibility with Other Implementations
+============================================
 
 With occasional exceptions, utility programs and libraries for GNU
 should be upward compatible with those in Berkeley Unix, and upward
@@ -295,8 +295,8 @@ is any precedent for them.
 \1f
 File: standards.info,  Node: Using Extensions,  Next: Standard C,  Prev: Compatibility,  Up: Design Advice
 
-Using Non-standard Features
-===========================
+3.3 Using Non-standard Features
+===============================
 
 Many GNU facilities that already exist support a number of convenient
 extensions over the comparable Unix facilities.  Whether to use these
@@ -331,8 +331,8 @@ cases.
 \1f
 File: standards.info,  Node: Standard C,  Prev: Using Extensions,  Up: Design Advice
 
-Standard C and Pre-Standard C
-=============================
+3.4 Standard C and Pre-Standard C
+=================================
 
 1989 Standard C is widespread enough now that it is ok to use its
 features in new programs.  There is one exception: do not ever use the
@@ -395,8 +395,8 @@ prototypes, you may want to use a preprocessor macro like this:
 \1f
 File: standards.info,  Node: Program Behavior,  Next: Writing C,  Prev: Design Advice,  Up: Top
 
-Program Behavior for All Programs
-*********************************
+4 Program Behavior for All Programs
+***********************************
 
 This node describes conventions for writing robust software.  It also
 describes general standards for error messages, the command line
@@ -417,8 +417,8 @@ interface, and how libraries should behave.
 \1f
 File: standards.info,  Node: Semantics,  Next: Libraries,  Up: Program Behavior
 
-Writing Robust Programs
-=======================
+4.1 Writing Robust Programs
+===========================
 
 Avoid arbitrary limits on the length or number of _any_ data structure,
 including file names, lines, files, and symbols, by allocating all data
@@ -515,8 +515,8 @@ or by using the `mkstemps' function from libiberty.
 \1f
 File: standards.info,  Node: Libraries,  Next: Errors,  Prev: Semantics,  Up: Program Behavior
 
-Library Behavior
-================
+4.2 Library Behavior
+====================
 
 Try to make library functions reentrant.  If they need to do dynamic
 storage allocation, at least try to avoid any nonreentrancy aside from
@@ -546,8 +546,8 @@ fit any naming convention.
 \1f
 File: standards.info,  Node: Errors,  Next: User Interfaces,  Prev: Libraries,  Up: Program Behavior
 
-Formatting Error Messages
-=========================
+4.3 Formatting Error Messages
+=============================
 
 Error messages from compilers should look like this:
 
@@ -596,8 +596,8 @@ end with a period.
 \1f
 File: standards.info,  Node: User Interfaces,  Next: Graphical Interfaces,  Prev: Errors,  Up: Program Behavior
 
-Standards for Interfaces Generally
-==================================
+4.4 Standards for Interfaces Generally
+======================================
 
 Please don't make the behavior of a utility depend on the name used to
 invoke it.  It is useful sometimes to make a link to a utility with a
@@ -630,8 +630,8 @@ format.
 \1f
 File: standards.info,  Node: Graphical Interfaces,  Next: Command-Line Interfaces,  Prev: User Interfaces,  Up: Program Behavior
 
-Standards for Graphical Interfaces
-==================================
+4.5 Standards for Graphical Interfaces
+======================================
 
 When you write a program that provides a graphical user interface,
 please make it work with X Windows and the GTK toolkit unless the
@@ -652,8 +652,8 @@ graphical interface, these won't be much extra work.
 \1f
 File: standards.info,  Node: Command-Line Interfaces,  Next: Option Table,  Prev: Graphical Interfaces,  Up: Program Behavior
 
-Standards for Command Line Interfaces
-=====================================
+4.6 Standards for Command Line Interfaces
+=========================================
 
 It is a good idea to follow the POSIX guidelines for the command-line
 options of a program.  The easiest way to do this is to use `getopt' to
@@ -770,8 +770,8 @@ among GNU utilities, and fewer idiosyncracies for users to remember.
 \1f
 File: standards.info,  Node: Option Table,  Next: Memory Usage,  Prev: Command-Line Interfaces,  Up: Program Behavior
 
-Table of Long Options
-=====================
+4.7 Table of Long Options
+=========================
 
 Here is a table of long options used by GNU programs.  It is surely
 incomplete, but we aim to list all the options that a new program might
@@ -1545,7 +1545,7 @@ meanings, so we can update the table.
      `-q' in Make.
 
 `quiet'
-     Used in many programs to inhibit the usual output.  *Note:* every
+     Used in many programs to inhibit the usual output.  *Note_* every
      program accepting `--quiet' should accept `--silent' as a synonym.
 
 `quiet-unshar'
@@ -1657,7 +1657,7 @@ meanings, so we can update the table.
      `-T' in `cat'.
 
 `silent'
-     Used in many programs to inhibit the usual output.  *Note:* every
+     Used in many programs to inhibit the usual output.  *Note_* every
      program accepting `--silent' should accept `--quiet' as a synonym.
 
 `size'
@@ -1860,8 +1860,8 @@ meanings, so we can update the table.
 \1f
 File: standards.info,  Node: Memory Usage,  Next: File Usage,  Prev: Option Table,  Up: Program Behavior
 
-Memory Usage
-============
+4.8 Memory Usage
+================
 
 If a program typically uses just a few meg of memory, don't bother
 making any effort to reduce memory usage.  For example, if it is
@@ -1883,8 +1883,8 @@ in core and give a fatal error if `malloc' returns zero.
 \1f
 File: standards.info,  Node: File Usage,  Prev: Memory Usage,  Up: Program Behavior
 
-File Usage
-==========
+4.9 File Usage
+==============
 
 Programs should be prepared to operate when `/usr' and `/etc' are
 read-only file systems.  Thus, if the program manages log files, lock
@@ -1902,8 +1902,8 @@ directory.
 \1f
 File: standards.info,  Node: Writing C,  Next: Documentation,  Prev: Program Behavior,  Up: Top
 
-Making The Best Use of C
-************************
+5 Making The Best Use of C
+**************************
 
 This node provides advice on how best to use the C language when
 writing GNU software.
@@ -1923,8 +1923,8 @@ writing GNU software.
 \1f
 File: standards.info,  Node: Formatting,  Next: Comments,  Up: Writing C
 
-Formatting Your Source Code
-===========================
+5.1 Formatting Your Source Code
+===============================
 
 It is important to put the open-brace that starts the body of a C
 function in column zero, and avoid putting any other open-brace or
@@ -2042,8 +2042,8 @@ page.  The formfeeds should appear alone on lines by themselves.
 \1f
 File: standards.info,  Node: Comments,  Next: Syntactic Conventions,  Prev: Formatting,  Up: Writing C
 
-Commenting Your Work
-====================
+5.2 Commenting Your Work
+========================
 
 Every program should start with a comment saying briefly what it is for.
 Example: `fmt - filter for simple filling of text'.
@@ -2122,8 +2122,8 @@ but, by contrast, write the comments this way for a `#ifndef':
 \1f
 File: standards.info,  Node: Syntactic Conventions,  Next: Names,  Prev: Comments,  Up: Writing C
 
-Clean Use of C Constructs
-=========================
+5.3 Clean Use of C Constructs
+=============================
 
 Please explicitly declare the types of all objects.  For example, you
 should explicitly declare all arguments to functions, and you should
@@ -2235,8 +2235,8 @@ pointer constant, except when calling a varargs function.
 \1f
 File: standards.info,  Node: Names,  Next: System Portability,  Prev: Syntactic Conventions,  Up: Writing C
 
-Naming Variables and Functions
-==============================
+5.4 Naming Variables and Functions
+==================================
 
 The names of global variables and functions in a program serve as
 comments of a sort.  So don't choose terse names--instead, look for
@@ -2284,8 +2284,8 @@ characters.
 \1f
 File: standards.info,  Node: System Portability,  Next: CPU Portability,  Prev: Names,  Up: Writing C
 
-Portability between System Types
-================================
+5.5 Portability between System Types
+====================================
 
 In the Unix world, "portability" refers to porting to different Unix
 versions.  For a GNU program, this kind of portability is desirable, but
@@ -2334,8 +2334,8 @@ to move your code into other GNU programs.
 \1f
 File: standards.info,  Node: CPU Portability,  Next: System Functions,  Prev: System Portability,  Up: Writing C
 
-Portability between CPUs
-========================
+5.6 Portability between CPUs
+============================
 
 Even GNU systems will differ because of differences among CPU
 types--for example, difference in byte ordering and alignment
@@ -2410,8 +2410,8 @@ from zero.
 \1f
 File: standards.info,  Node: System Functions,  Next: Internationalization,  Prev: CPU Portability,  Up: Writing C
 
-Calling System Functions
-========================
+5.7 Calling System Functions
+============================
 
 C implementations differ substantially.  Standard C reduces but does
 not eliminate the incompatibilities; meanwhile, many GNU packages still
@@ -2514,7 +2514,7 @@ library functions to avoid unnecessary loss of portability.
           #ifndef HAVE_STRRCHR
           #define strrchr rindex
           #endif
-          
+
           char *strchr ();
           char *strrchr ();
 
@@ -2525,8 +2525,8 @@ get them properly defined is to use Autoconf.
 \1f
 File: standards.info,  Node: Internationalization,  Next: Mmap,  Prev: System Functions,  Up: Writing C
 
-Internationalization
-====================
+5.8 Internationalization
+========================
 
 GNU has a library called GNU gettext that makes it easy to translate the
 messages in a program into various languages.  You should use this
@@ -2605,8 +2605,8 @@ calls does the job straightfowardly if the code starts out like this:
 \1f
 File: standards.info,  Node: Mmap,  Prev: Internationalization,  Up: Writing C
 
-Mmap
-====
+5.9 Mmap
+========
 
 Don't assume that `mmap' either works on all files or fails for all
 files.  It may work on some files and fail on others.
@@ -2624,8 +2624,8 @@ of files.
 \1f
 File: standards.info,  Node: Documentation,  Next: Managing Releases,  Prev: Writing C,  Up: Top
 
-Documenting Programs
-********************
+6 Documenting Programs
+**********************
 
 A GNU program should ideally come with full free documentation, adequate
 for both reference and tutorial purposes.  If the package can be
@@ -2649,8 +2649,8 @@ extending it, as well as just using it.
 \1f
 File: standards.info,  Node: GNU Manuals,  Next: Doc Strings and Manuals,  Up: Documentation
 
-GNU Manuals
-===========
+6.1 GNU Manuals
+===============
 
 The preferred document format for the GNU system is the Texinfo
 formatting language.  Every GNU package should (ideally) have
@@ -2747,8 +2747,8 @@ computer program.  Please use "invalid" for this, and reserve the term
 \1f
 File: standards.info,  Node: Doc Strings and Manuals,  Next: Manual Structure Details,  Prev: GNU Manuals,  Up: Documentation
 
-Doc Strings and Manuals
-=======================
+6.2 Doc Strings and Manuals
+===========================
 
 Some programming systems, such as Emacs, provide a documentation string
 for each function, command or variable.  You may be tempted to write a
@@ -2777,8 +2777,8 @@ manual is to use them as a source of information for writing good text.
 \1f
 File: standards.info,  Node: Manual Structure Details,  Next: License for Manuals,  Prev: Doc Strings and Manuals,  Up: Documentation
 
-Manual Structure Details
-========================
+6.3 Manual Structure Details
+============================
 
 The title page of the manual should state the version of the programs or
 packages documented in the manual.  The Top node of the manual should
@@ -2807,8 +2807,8 @@ for each program described in the manual.
 \1f
 File: standards.info,  Node: License for Manuals,  Next: Manual Credits,  Prev: Manual Structure Details,  Up: Documentation
 
-License for Manuals
-===================
+6.4 License for Manuals
+=======================
 
 Please use the GNU Free Documentation License for all GNU manuals that
 are more than a few pages long.  Likewise for a collection of short
@@ -2829,8 +2829,8 @@ it.
 \1f
 File: standards.info,  Node: Manual Credits,  Next: Printed Manuals,  Prev: License for Manuals,  Up: Documentation
 
-Manual Credits
-==============
+6.5 Manual Credits
+==================
 
 Please credit the principal human writers of the manual as the authors,
 on the title page of the manual.  If a company sponsored the work, thank
@@ -2840,14 +2840,14 @@ company as an author.
 \1f
 File: standards.info,  Node: Printed Manuals,  Next: NEWS File,  Prev: Manual Credits,  Up: Documentation
 
-Printed Manuals
-===============
+6.6 Printed Manuals
+===================
 
 The FSF publishes some GNU manuals in printed form.  To encourage sales
 of these manuals, the on-line versions of the manual should mention at
 the very start that the printed manual is available and should point at
 information for getting it--for instance, with a link to the page
-<http://www.gnu.org/order/order.html>.  This should not be included in
+`http://www.gnu.org/order/order.html'.  This should not be included in
 the printed manual, though, because there it is redundant.
 
    It is also useful to explain in the on-line forms of the manual how
@@ -2856,8 +2856,8 @@ the user can print out the manual from the sources.
 \1f
 File: standards.info,  Node: NEWS File,  Next: Change Logs,  Prev: Printed Manuals,  Up: Documentation
 
-The NEWS File
-=============
+6.7 The NEWS File
+=================
 
 In addition to its manual, the package should have a file named `NEWS'
 which contains a list of user-visible changes worth mentioning.  In
@@ -2873,8 +2873,8 @@ that file.
 \1f
 File: standards.info,  Node: Change Logs,  Next: Man Pages,  Prev: NEWS File,  Up: Documentation
 
-Change Logs
-===========
+6.8 Change Logs
+===============
 
 Keep a change log to describe all the changes made to program source
 files.  The purpose of this is so that people investigating bugs in the
@@ -2895,8 +2895,8 @@ history of how the conflicting concepts arose and who they came from.
 \1f
 File: standards.info,  Node: Change Log Concepts,  Next: Style of Change Logs,  Up: Change Logs
 
-Change Log Concepts
--------------------
+6.8.1 Change Log Concepts
+-------------------------
 
 You can think of the change log as a conceptual "undo list" which
 explains how earlier versions were different from the current version.
@@ -2933,8 +2933,8 @@ describe the changes you made to that function or variable.
 \1f
 File: standards.info,  Node: Style of Change Logs,  Next: Simple Changes,  Prev: Change Log Concepts,  Up: Change Logs
 
-Style of Change Logs
---------------------
+6.8.2 Style of Change Logs
+--------------------------
 
 Here are some simple examples of change log entries, starting with the
 header line that says who made the change and when, followed by
@@ -2942,16 +2942,16 @@ descriptions of specific changes.  (These examples are drawn from Emacs
 and GCC.)
 
      1998-08-17  Richard Stallman  <rms@gnu.org>
-     
+
      * register.el (insert-register): Return nil.
      (jump-to-register): Likewise.
-     
+
      * sort.el (sort-subr): Return nil.
-     
+
      * tex-mode.el (tex-bibtex-file, tex-file, tex-region):
      Restart the tex shell if process is gone or stopped.
      (tex-shell-running): New function.
-     
+
      * expr.c (store_one_arg): Round size up for move_block_to_reg.
      (expand_call): Round up when emitting USE insns.
      * stmt.c (assign_parms): Round size up for move_block_from_reg.
@@ -2982,8 +2982,8 @@ example:
 \1f
 File: standards.info,  Node: Simple Changes,  Next: Conditional Changes,  Prev: Style of Change Logs,  Up: Change Logs
 
-Simple Changes
---------------
+6.8.3 Simple Changes
+--------------------
 
 Certain simple kinds of changes don't need much detail in the change
 log.
@@ -3011,8 +3011,8 @@ documentation says with the way the program actually works.
 \1f
 File: standards.info,  Node: Conditional Changes,  Next: Indicating the Part Changed,  Prev: Simple Changes,  Up: Change Logs
 
-Conditional Changes
--------------------
+6.8.4 Conditional Changes
+-------------------------
 
 C programs often contain compile-time `#if' conditionals.  Many changes
 are conditional; sometimes you add a new definition which is entirely
@@ -3047,8 +3047,8 @@ macro is _not_ defined:
 \1f
 File: standards.info,  Node: Indicating the Part Changed,  Prev: Conditional Changes,  Up: Change Logs
 
-Indicating the Part Changed
----------------------------
+6.8.5 Indicating the Part Changed
+---------------------------------
 
 Indicate the part of a function which changed by using angle brackets
 enclosing an indication of what the changed part does.  Here is an entry
@@ -3061,8 +3061,8 @@ with `sh' commands:
 \1f
 File: standards.info,  Node: Man Pages,  Next: Reading other Manuals,  Prev: Change Logs,  Up: Documentation
 
-Man Pages
-=========
+6.9 Man Pages
+=============
 
 In the GNU project, man pages are secondary.  It is not necessary or
 expected for every GNU program to have a man page, but some of them do.
@@ -3095,8 +3095,8 @@ documentation.
 \1f
 File: standards.info,  Node: Reading other Manuals,  Prev: Man Pages,  Up: Documentation
 
-Reading other Manuals
-=====================
+6.10 Reading other Manuals
+==========================
 
 There may be non-free books or documentation files that describe the
 program you are documenting.
@@ -3113,8 +3113,8 @@ with the FSF about the individual case.
 \1f
 File: standards.info,  Node: Managing Releases,  Next: References,  Prev: Documentation,  Up: Top
 
-The Release Process
-*******************
+7 The Release Process
+*********************
 
 Making a release is more than just bundling up your source files in a
 tar file and putting it up for FTP.  You should set up your software so
@@ -3133,8 +3133,8 @@ GNU software.
 \1f
 File: standards.info,  Node: Configuration,  Next: Makefile Conventions,  Up: Managing Releases
 
-How Configuration Should Work
-=============================
+7.1 How Configuration Should Work
+=================================
 
 Each GNU distribution should come with a shell script named
 `configure'.  This script is given arguments which describe the kind of
@@ -3280,8 +3280,8 @@ ignore most of its arguments.
 \1f
 File: standards.info,  Node: Makefile Conventions,  Next: Releases,  Prev: Configuration,  Up: Managing Releases
 
-Makefile Conventions
-====================
+7.2 Makefile Conventions
+========================
 
 This node describes conventions for writing the Makefiles for GNU
 programs.  Using Automake will help you write a Makefile that follows
@@ -3300,8 +3300,8 @@ these conventions.
 \1f
 File: standards.info,  Node: Makefile Basics,  Next: Utilities in Makefiles,  Up: Makefile Conventions
 
-General Conventions for Makefiles
----------------------------------
+7.2.1 General Conventions for Makefiles
+---------------------------------------
 
 Every Makefile should contain this line:
 
@@ -3380,8 +3380,8 @@ their subtargets) work correctly with a parallel `make'.
 \1f
 File: standards.info,  Node: Utilities in Makefiles,  Next: Command Variables,  Prev: Makefile Basics,  Up: Makefile Conventions
 
-Utilities in Makefiles
-----------------------
+7.2.2 Utilities in Makefiles
+----------------------------
 
 Write the Makefile commands (and any shell scripts, such as
 `configure') to run in `sh', not in `csh'.  Don't use any special
@@ -3435,8 +3435,8 @@ exist.
 \1f
 File: standards.info,  Node: Command Variables,  Next: Directory Variables,  Prev: Utilities in Makefiles,  Up: Makefile Conventions
 
-Variables for Specifying Commands
----------------------------------
+7.2.3 Variables for Specifying Commands
+---------------------------------------
 
 Makefiles should provide variables for overriding certain commands,
 options, and so on.
@@ -3515,8 +3515,8 @@ installed.
 \1f
 File: standards.info,  Node: Directory Variables,  Next: Standard Targets,  Prev: Command Variables,  Up: Makefile Conventions
 
-Variables for Installation Directories
---------------------------------------
+7.2.4 Variables for Installation Directories
+--------------------------------------------
 
 Installation directories should always be named by variables, so it is
 easy to install in a nonstandard place.  The standard names for these
@@ -3763,8 +3763,8 @@ they will work sensibly when the user does so.
 \1f
 File: standards.info,  Node: Standard Targets,  Next: Install Command Categories,  Prev: Directory Variables,  Up: Makefile Conventions
 
-Standard Targets for Users
---------------------------
+7.2.5 Standard Targets for Users
+--------------------------------
 
 All GNU programs should have the following targets in their Makefiles:
 
@@ -3924,7 +3924,7 @@ All GNU programs should have the following targets in their Makefiles:
      is as follows:
 
           info: foo.info
-          
+
           foo.info: foo.texi chap1.texi chap2.texi
                   $(MAKEINFO) $(srcdir)/foo.texi
 
@@ -3942,7 +3942,7 @@ All GNU programs should have the following targets in their Makefiles:
      Generate DVI files for all Texinfo documentation.  For example:
 
           dvi: foo.dvi
-          
+
           foo.dvi: foo.texi chap1.texi chap2.texi
                   $(TEXI2DVI) $(srcdir)/foo.texi
 
@@ -4020,8 +4020,8 @@ not distributed with Texinfo.
 \1f
 File: standards.info,  Node: Install Command Categories,  Prev: Standard Targets,  Up: Makefile Conventions
 
-Install Command Categories
---------------------------
+7.2.6 Install Command Categories
+--------------------------------
 
 When writing the `install' target, you must classify all the commands
 into three categories: normal ones, "pre-installation" commands and
@@ -4126,8 +4126,8 @@ shell script as part of installing the binary package.
 \1f
 File: standards.info,  Node: Releases,  Prev: Makefile Conventions,  Up: Managing Releases
 
-Making Releases
-===============
+7.3 Making Releases
+===================
 
 Package the distribution of `Foo version 69.96' up in a gzipped tar
 file with the name `foo-69.96.tar.gz'.  It should unpack into a
@@ -4208,8 +4208,8 @@ know what other files to get.
 \1f
 File: standards.info,  Node: References,  Next: Index,  Prev: Managing Releases,  Up: Top
 
-References to Non-Free Software and Documentation
-*************************************************
+8 References to Non-Free Software and Documentation
+***************************************************
 
 A GNU program should not recommend use of any non-free program.  We
 can't stop some people from writing proprietary programs, or stop other
@@ -4239,187 +4239,223 @@ File: standards.info,  Node: Index,  Prev: References,  Up: Top
 Index
 *****
 
+\0\b[index\0\b]
 * Menu:
 
-* #endif, commenting:                    Comments.
+* #endif, commenting:                    Comments.            (line  54)
 * --help option:                         Command-Line Interfaces.
+                                                              (line 107)
 * --version option:                      Command-Line Interfaces.
+                                                              (line  34)
 * -Wall compiler option:                 Syntactic Conventions.
-* accepting contributions:               Contributions.
+                                                              (line  10)
+* accepting contributions:               Contributions.       (line   6)
 * address for bug reports:               Command-Line Interfaces.
-* ANSI C standard:                       Standard C.
-* arbitrary limits on data:              Semantics.
-* autoconf:                              System Portability.
+                                                              (line 113)
+* ANSI C standard:                       Standard C.          (line   6)
+* arbitrary limits on data:              Semantics.           (line   6)
+* autoconf:                              System Portability.  (line  23)
 * avoiding proprietary code:             Reading Non-Free Code.
-* behavior, dependent on program's name: User Interfaces.
+                                                              (line   6)
+* behavior, dependent on program's name: User Interfaces.     (line   6)
 * binary packages:                       Install Command Categories.
-* bindir:                                Directory Variables.
-* braces, in C source:                   Formatting.
+                                                              (line  80)
+* bindir:                                Directory Variables. (line  45)
+* braces, in C source:                   Formatting.          (line   6)
 * bug reports:                           Command-Line Interfaces.
+                                                              (line 113)
 * canonical name of a program:           Command-Line Interfaces.
-* casting pointers to integers:          CPU Portability.
-* change logs:                           Change Logs.
-* change logs, conditional changes:      Conditional Changes.
+                                                              (line  41)
+* casting pointers to integers:          CPU Portability.     (line  67)
+* change logs:                           Change Logs.         (line   6)
+* change logs, conditional changes:      Conditional Changes. (line   6)
 * change logs, style:                    Style of Change Logs.
-* command-line arguments, decoding:      Semantics.
+                                                              (line   6)
+* command-line arguments, decoding:      Semantics.           (line  46)
 * command-line interface:                Command-Line Interfaces.
-* commenting:                            Comments.
-* compatibility with C and POSIX standards: Compatibility.
+                                                              (line   6)
+* commenting:                            Comments.            (line   6)
+* compatibility with C and POSIX standards: Compatibility.    (line   6)
 * compiler warnings:                     Syntactic Conventions.
-* conditional changes, and change logs:  Conditional Changes.
-* conditionals, comments for:            Comments.
-* configure:                             Configuration.
-* control-L:                             Formatting.
+                                                              (line  10)
+* conditional changes, and change logs:  Conditional Changes. (line   6)
+* conditionals, comments for:            Comments.            (line  54)
+* configure:                             Configuration.       (line   6)
+* control-L:                             Formatting.          (line 114)
 * conventions for makefiles:             Makefile Conventions.
+                                                              (line   6)
 * corba:                                 Graphical Interfaces.
-* credits for manuals:                   Manual Credits.
-* data types, and portability:           CPU Portability.
-* declaration for system functions:      System Functions.
-* documentation:                         Documentation.
-* doschk:                                Names.
-* downloading this manual:               Preface.
-* error messages:                        Semantics.
-* error messages, formatting:            Errors.
-* exec_prefix:                           Directory Variables.
-* expressions, splitting:                Formatting.
-* file usage:                            File Usage.
-* file-name limitations:                 Names.
-* formatting error messages:             Errors.
-* formatting source code:                Formatting.
-* formfeed:                              Formatting.
+                                                              (line  16)
+* credits for manuals:                   Manual Credits.      (line   6)
+* data types, and portability:           CPU Portability.     (line   6)
+* declaration for system functions:      System Functions.    (line  21)
+* documentation:                         Documentation.       (line   6)
+* doschk:                                Names.               (line  38)
+* downloading this manual:               Preface.             (line  23)
+* error messages:                        Semantics.           (line  19)
+* error messages, formatting:            Errors.              (line   6)
+* exec_prefix:                           Directory Variables. (line  27)
+* expressions, splitting:                Formatting.          (line  77)
+* file usage:                            File Usage.          (line   6)
+* file-name limitations:                 Names.               (line  38)
+* formatting error messages:             Errors.              (line   6)
+* formatting source code:                Formatting.          (line   6)
+* formfeed:                              Formatting.          (line 114)
 * function argument, declaring:          Syntactic Conventions.
-* function prototypes:                   Standard C.
+                                                              (line   6)
+* function prototypes:                   Standard C.          (line  17)
 * getopt:                                Command-Line Interfaces.
+                                                              (line   6)
 * gettext:                               Internationalization.
+                                                              (line   6)
 * gnome:                                 Graphical Interfaces.
+                                                              (line  16)
 * graphical user interface:              Graphical Interfaces.
+                                                              (line   6)
 * gtk:                                   Graphical Interfaces.
-* GUILE:                                 Source Language.
+                                                              (line   6)
+* GUILE:                                 Source Language.     (line  38)
 * implicit int:                          Syntactic Conventions.
-* impossible conditions:                 Semantics.
+                                                              (line   6)
+* impossible conditions:                 Semantics.           (line  70)
 * internationalization:                  Internationalization.
-* legal aspects:                         Legal Issues.
-* legal papers:                          Contributions.
-* libexecdir:                            Directory Variables.
-* libraries:                             Libraries.
-* library functions, and portability:    System Functions.
-* license for manuals:                   License for Manuals.
+                                                              (line   6)
+* legal aspects:                         Legal Issues.        (line   6)
+* legal papers:                          Contributions.       (line   6)
+* libexecdir:                            Directory Variables. (line  58)
+* libraries:                             Libraries.           (line   6)
+* library functions, and portability:    System Functions.    (line   6)
+* license for manuals:                   License for Manuals. (line   6)
 * lint:                                  Syntactic Conventions.
-* long option names:                     Option Table.
+                                                              (line 109)
+* long option names:                     Option Table.        (line   6)
 * long-named options:                    Command-Line Interfaces.
+                                                              (line  12)
 * makefile, conventions for:             Makefile Conventions.
-* malloc return value:                   Semantics.
-* man pages:                             Man Pages.
+                                                              (line   6)
+* malloc return value:                   Semantics.           (line  25)
+* man pages:                             Man Pages.           (line   6)
 * manual structure:                      Manual Structure Details.
-* memory allocation failure:             Semantics.
-* memory usage:                          Memory Usage.
+                                                              (line   6)
+* memory allocation failure:             Semantics.           (line  25)
+* memory usage:                          Memory Usage.        (line   6)
 * message text, and internationalization: Internationalization.
-* mmap:                                  Mmap.
+                                                              (line  29)
+* mmap:                                  Mmap.                (line   6)
 * multiple variables in a line:          Syntactic Conventions.
-* names of variables and functions:      Names.
-* NEWS file:                             NEWS File.
-* non-POSIX systems, and portability:    System Portability.
-* non-standard extensions:               Using Extensions.
-* NUL characters:                        Semantics.
-* open brace:                            Formatting.
-* optional features, configure-time:     Configuration.
-* options for compatibility:             Compatibility.
-* output device and program's behavior:  User Interfaces.
-* packaging:                             Releases.
-* portability, and data types:           CPU Portability.
-* portability, and library functions:    System Functions.
-* portability, between system types:     System Portability.
-* POSIX compatibility:                   Compatibility.
-* POSIXLY_CORRECT, environment variable: Compatibility.
+                                                              (line  35)
+* names of variables and functions:      Names.               (line   6)
+* NEWS file:                             NEWS File.           (line   6)
+* non-POSIX systems, and portability:    System Portability.  (line  32)
+* non-standard extensions:               Using Extensions.    (line   6)
+* NUL characters:                        Semantics.           (line  11)
+* open brace:                            Formatting.          (line   6)
+* optional features, configure-time:     Configuration.       (line  76)
+* options for compatibility:             Compatibility.       (line  14)
+* output device and program's behavior:  User Interfaces.     (line  13)
+* packaging:                             Releases.            (line   6)
+* portability, and data types:           CPU Portability.     (line   6)
+* portability, and library functions:    System Functions.    (line   6)
+* portability, between system types:     System Portability.  (line   6)
+* POSIX compatibility:                   Compatibility.       (line   6)
+* POSIXLY_CORRECT, environment variable: Compatibility.       (line  21)
 * post-installation commands:            Install Command Categories.
+                                                              (line   6)
 * pre-installation commands:             Install Command Categories.
-* prefix:                                Directory Variables.
-* program configuration:                 Configuration.
-* program design:                        Design Advice.
-* program name and its behavior:         User Interfaces.
+                                                              (line   6)
+* prefix:                                Directory Variables. (line  17)
+* program configuration:                 Configuration.       (line   6)
+* program design:                        Design Advice.       (line   6)
+* program name and its behavior:         User Interfaces.     (line   6)
 * program's canonical name:              Command-Line Interfaces.
-* programming languges:                  Source Language.
+                                                              (line  41)
+* programming languges:                  Source Language.     (line   6)
 * proprietary programs:                  Reading Non-Free Code.
-* README file:                           Releases.
-* references to non-free material:       References.
-* releasing:                             Managing Releases.
-* sbindir:                               Directory Variables.
-* signal handling:                       Semantics.
-* spaces before open-paren:              Formatting.
+                                                              (line   6)
+* README file:                           Releases.            (line  17)
+* references to non-free material:       References.          (line   6)
+* releasing:                             Managing Releases.   (line   6)
+* sbindir:                               Directory Variables. (line  51)
+* signal handling:                       Semantics.           (line  59)
+* spaces before open-paren:              Formatting.          (line  71)
 * standard command-line options:         Command-Line Interfaces.
+                                                              (line  31)
 * standards for makefiles:               Makefile Conventions.
-* string library functions:              System Functions.
+                                                              (line   6)
+* string library functions:              System Functions.    (line  55)
 * syntactic conventions:                 Syntactic Conventions.
-* table of long options:                 Option Table.
-* temporary files:                       Semantics.
+                                                              (line   6)
+* table of long options:                 Option Table.        (line   6)
+* temporary files:                       Semantics.           (line  84)
 * temporary variables:                   Syntactic Conventions.
-* texinfo.tex, in a distribution:        Releases.
-* TMPDIR environment variable:           Semantics.
-* trademarks:                            Trademarks.
-* where to obtain standards.texi:        Preface.
+                                                              (line  23)
+* texinfo.tex, in a distribution:        Releases.            (line  73)
+* TMPDIR environment variable:           Semantics.           (line  84)
+* trademarks:                            Trademarks.          (line   6)
+* where to obtain standards.texi:        Preface.             (line  23)
 
 
 \1f
 Tag Table:
 Node: Top\7f980
 Node: Preface\7f1582
-Node: Legal Issues\7f3099
-Node: Reading Non-Free Code\7f3559
-Node: Contributions\7f5279
-Node: Trademarks\7f7425
-Node: Design Advice\7f8480
-Node: Source Language\7f8983
-Node: Compatibility\7f10987
-Node: Using Extensions\7f12607
-Node: Standard C\7f14175
-Node: Program Behavior\7f16538
-Node: Semantics\7f17453
-Node: Libraries\7f22138
-Node: Errors\7f23375
-Node: User Interfaces\7f25148
-Node: Graphical Interfaces\7f26745
-Node: Command-Line Interfaces\7f27772
-Node: Option Table\7f33254
-Node: Memory Usage\7f48255
-Node: File Usage\7f49272
-Node: Writing C\7f50012
-Node: Formatting\7f50850
-Node: Comments\7f54905
-Node: Syntactic Conventions\7f58199
-Node: Names\7f61603
-Node: System Portability\7f63788
-Node: CPU Portability\7f66165
-Node: System Functions\7f69413
-Node: Internationalization\7f74612
-Node: Mmap\7f77757
-Node: Documentation\7f78459
-Node: GNU Manuals\7f79560
-Node: Doc Strings and Manuals\7f84609
-Node: Manual Structure Details\7f86154
-Node: License for Manuals\7f87564
-Node: Manual Credits\7f88530
-Node: Printed Manuals\7f88915
-Node: NEWS File\7f89593
-Node: Change Logs\7f90263
-Node: Change Log Concepts\7f91009
-Node: Style of Change Logs\7f92861
-Node: Simple Changes\7f94904
-Node: Conditional Changes\7f96136
-Node: Indicating the Part Changed\7f97546
-Node: Man Pages\7f98061
-Node: Reading other Manuals\7f99677
-Node: Managing Releases\7f100458
-Node: Configuration\7f101210
-Node: Makefile Conventions\7f108107
-Node: Makefile Basics\7f108863
-Node: Utilities in Makefiles\7f112025
-Node: Command Variables\7f114158
-Node: Directory Variables\7f117723
-Node: Standard Targets\7f128605
-Ref: Standard Targets-Footnote-1\7f139853
-Node: Install Command Categories\7f139953
-Node: Releases\7f144523
-Node: References\7f148603
-Node: Index\7f149994
+Node: Legal Issues\7f3103
+Node: Reading Non-Free Code\7f3567
+Node: Contributions\7f5295
+Node: Trademarks\7f7449
+Node: Design Advice\7f8512
+Node: Source Language\7f9019
+Node: Compatibility\7f11031
+Node: Using Extensions\7f12659
+Node: Standard C\7f14235
+Node: Program Behavior\7f16606
+Node: Semantics\7f17525
+Node: Libraries\7f22218
+Node: Errors\7f23463
+Node: User Interfaces\7f25244
+Node: Graphical Interfaces\7f26849
+Node: Command-Line Interfaces\7f27884
+Node: Option Table\7f33374
+Node: Memory Usage\7f48383
+Node: File Usage\7f49408
+Node: Writing C\7f50156
+Node: Formatting\7f50998
+Node: Comments\7f55061
+Node: Syntactic Conventions\7f58363
+Node: Names\7f61775
+Node: System Portability\7f63968
+Node: CPU Portability\7f66353
+Node: System Functions\7f69609
+Node: Internationalization\7f74806
+Node: Mmap\7f77959
+Node: Documentation\7f78669
+Node: GNU Manuals\7f79774
+Node: Doc Strings and Manuals\7f84831
+Node: Manual Structure Details\7f86384
+Node: License for Manuals\7f87802
+Node: Manual Credits\7f88776
+Node: Printed Manuals\7f89169
+Node: NEWS File\7f89855
+Node: Change Logs\7f90533
+Node: Change Log Concepts\7f91287
+Node: Style of Change Logs\7f93151
+Node: Simple Changes\7f95186
+Node: Conditional Changes\7f96430
+Node: Indicating the Part Changed\7f97852
+Node: Man Pages\7f98379
+Node: Reading other Manuals\7f100003
+Node: Managing Releases\7f100794
+Node: Configuration\7f101550
+Node: Makefile Conventions\7f108455
+Node: Makefile Basics\7f109219
+Node: Utilities in Makefiles\7f112393
+Node: Command Variables\7f114538
+Node: Directory Variables\7f118115
+Node: Standard Targets\7f129009
+Ref: Standard Targets-Footnote-1\7f140249
+Node: Install Command Categories\7f140349
+Node: Releases\7f144931
+Node: References\7f149019
+Node: Index\7f150414
 \1f
 End Tag Table
index 326ec06..4cd3b6d 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/term.info, produced by makeinfo version 4.6 from
+This is ../info/term.info, produced by makeinfo version 4.8 from
 term.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -21,8 +21,8 @@ Terminal emulator mode
 \1f
 File: term.info,  Node: term mode,  Prev: Top,  Up: Top
 
-Term Mode
-*********
+1 Term Mode
+***********
 
 * Menu:
 
@@ -47,8 +47,8 @@ shell and gud modes.
 \1f
 File: term.info,  Node: Overview,  Next: Connecting to remote computers,  Up: term mode
 
-Overview
-========
+1.1 Overview
+============
 
 The `term' mode is used to control a program (an "inferior process").
 It sends most keyboard input characters to the program, and displays
@@ -69,8 +69,8 @@ somewhat differently.
 \1f
 File: term.info,  Node: Output from the inferior,  Next: subbuffer,  Up: Overview
 
-Output from the inferior
-------------------------
+1.1.1 Output from the inferior
+------------------------------
 
 In typical usage, output from the inferior is added to the end of the
 buffer.  If needed, the window will be scrolled, just like a regular
@@ -101,8 +101,8 @@ the old shell mode doesn't handle terminal control codes at all.)
 \1f
 File: term.info,  Node: subbuffer,  Next: altsubbuffer,  Prev: Output from the inferior,  Up: Overview
 
-The sub-buffer
---------------
+1.1.2 The sub-buffer
+--------------------
 
 A program that talks to terminal expects the terminal to have a fixed
 size.  If the program is talking a terminal emulator program such as
@@ -118,13 +118,13 @@ sub-buffer is the part of the buffer that is displayed in a window.
 
    The sub-buffer is defined in terms of three buffer-local-variable:
 
- - Variable: term-height
+ -- Variable: term-height
      The height of the sub-buffer, in screen lines.
 
- - Variable: term-width
+ -- Variable: term-width
      The width of the sub-buffer, in screen columns.
 
- - Variable: term-home-marker
+ -- Variable: term-home-marker
      The "home" position, that is the top left corner of the sub-buffer.
 
    The sub-buffer is assumed to be the end part of the buffer; the
@@ -134,15 +134,15 @@ from the end of the buffer.
 \1f
 File: term.info,  Node: altsubbuffer,  Next: Input to the inferior,  Prev: subbuffer,  Up: Overview
 
-The alternate sub-buffer
-------------------------
+1.1.3 The alternate sub-buffer
+------------------------------
 
 When a "graphical" program finishes, it is nice to restore the screen
 state to what it was before the program started.  Many people are used
 to this behavior from `xterm', and its also offered by the `term'
 emulator.
 
- - Function: term-switch-to-alternate-sub-buffer set
+ -- Function: term-switch-to-alternate-sub-buffer set
      If SET is true, and we're not already using the alternate
      sub-buffer, switch to it.  What this means is that the
      `term-home-marker' is saved (in the variable
@@ -158,8 +158,8 @@ emulator.
 \1f
 File: term.info,  Node: Input to the inferior,  Prev: altsubbuffer,  Up: Overview
 
-Input to the inferior
----------------------
+1.1.4 Input to the inferior
+---------------------------
 
 Characters typed by the user are sent to the inferior.  How this is
 done depends on whether the `term' buffer is in "character" mode or
@@ -191,8 +191,8 @@ the inferior can echo the input, if it wishes (which it normally does).
 \1f
 File: term.info,  Node: Connecting to remote computers,  Next: Paging,  Prev: Overview,  Up: term mode
 
-Connecting to remote computers
-==============================
+1.2 Connecting to remote computers
+==================================
 
 If you want to login to a remove computer, you can do that just as you
 would expect, using whatever commands you would normally use.
@@ -230,8 +230,8 @@ files specified by gdb.
 \1f
 File: term.info,  Node: Paging,  Next: Terminal escapes,  Prev: Connecting to remote computers,  Up: term mode
 
-Paging
-======
+1.3 Paging
+==========
 
 When the pager is enabled, Emacs will "pause" after each screenful of
 output (since the last input sent to the inferior).  It will enter
@@ -247,8 +247,8 @@ available pager mode commands.
 \1f
 File: term.info,  Node: Terminal escapes,  Prev: Paging,  Up: term mode
 
-Terminal Escape sequences
-=========================
+1.4 Terminal Escape sequences
+=============================
 
 A program that does "graphics" on a terminal controls the terminal by
 sending strings called "terminal escape sequences" that the terminal
@@ -275,8 +275,8 @@ the `xterm' program and most modern terminal emulator software.
 \1f
 File: term.info,  Node: Cursor motion,  Next: Erasing,  Up: Terminal escapes
 
-Escape sequences to move the cursor
------------------------------------
+1.4.1 Escape sequences to move the cursor
+-----------------------------------------
 
 `RETURN'
      Moves to the beginning of the current screen line.
@@ -303,8 +303,8 @@ Escape sequences to move the cursor
 \1f
 File: term.info,  Node: Erasing,  Next: Inserting and deleting,  Prev: Cursor motion,  Up: Terminal escapes
 
-Escape commands for erasing text
---------------------------------
+1.4.2 Escape commands for erasing text
+--------------------------------------
 
 These commands "erase" part of the sub-buffer.  Erasing means replacing
 by white space; it is not the same as deleting.  The relative screen
@@ -338,8 +338,8 @@ other, as does the relative cursor position.
 \1f
 File: term.info,  Node: Inserting and deleting,  Next: Scrolling,  Prev: Erasing,  Up: Terminal escapes
 
-Escape sequences to insert and delete text
-------------------------------------------
+1.4.3 Escape sequences to insert and delete text
+------------------------------------------------
 
 `Esc [ N L'
      Insert N (default 1) blank lines.
@@ -356,8 +356,8 @@ Escape sequences to insert and delete text
 \1f
 File: term.info,  Node: Scrolling,  Next: Command hook,  Prev: Inserting and deleting,  Up: Terminal escapes
 
-Escape sequences to scroll part of the visible window
------------------------------------------------------
+1.4.4 Escape sequences to scroll part of the visible window
+-----------------------------------------------------------
 
 `Esc D'
      Scroll forward one screen line.
@@ -372,8 +372,8 @@ Escape sequences to scroll part of the visible window
 \1f
 File: term.info,  Node: Command hook,  Next: Miscellaneous escapes,  Prev: Scrolling,  Up: Terminal escapes
 
-Command hook
-------------
+1.4.5 Command hook
+------------------
 
 If `C-z' is seen, any text up to a following <LF> is scanned.  The text
 in between (not counting the initial C-z or the final LF) is passed to
@@ -400,8 +400,8 @@ function `term-command-hook', which handles the following:
 \1f
 File: term.info,  Node: Miscellaneous escapes,  Prev: Command hook,  Up: Terminal escapes
 
-Miscellaneous escapes
----------------------
+1.4.6 Miscellaneous escapes
+---------------------------
 
 `C-g (Bell)'
      Calls `(beep t)'.
@@ -423,19 +423,19 @@ Miscellaneous escapes
 Tag Table:
 Node: Top\7f201
 Node: term mode\7f367
-Node: Overview\7f1190
-Node: Output from the inferior\7f1937
-Node: subbuffer\7f3514
-Node: altsubbuffer\7f4834
-Node: Input to the inferior\7f5856
-Node: Connecting to remote computers\7f7377
-Node: Paging\7f9279
-Node: Terminal escapes\7f9945
-Node: Cursor motion\7f10810
-Node: Erasing\7f11470
-Node: Inserting and deleting\7f12262
-Node: Scrolling\7f12652
-Node: Command hook\7f13098
-Node: Miscellaneous escapes\7f14131
+Node: Overview\7f1194
+Node: Output from the inferior\7f1949
+Node: subbuffer\7f3538
+Node: altsubbuffer\7f4873
+Node: Input to the inferior\7f5908
+Node: Connecting to remote computers\7f7441
+Node: Paging\7f9351
+Node: Terminal escapes\7f10025
+Node: Cursor motion\7f10898
+Node: Erasing\7f11570
+Node: Inserting and deleting\7f12374
+Node: Scrolling\7f12776
+Node: Command hook\7f13234
+Node: Miscellaneous escapes\7f14279
 \1f
 End Tag Table
index 8f5ec22..5bca270 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/termcap.info, produced by makeinfo version 4.6 from
+This is ../info/termcap.info, produced by makeinfo version 4.8 from
 termcap.texi.
 
 START-INFO-DIR-ENTRY
@@ -84,8 +84,8 @@ and the mostly-portable optimizing C compiler, send one dollar to
 \1f
 File: termcap.info,  Node: Library,  Next: Data Base,  Prev: Introduction,  Up: Top
 
-The Termcap Library
-*******************
+1 The Termcap Library
+*********************
 
 The termcap library is the application programmer's interface to the
 termcap data base.  It contains functions for the following purposes:
@@ -113,8 +113,8 @@ termcap data base.  It contains functions for the following purposes:
 \1f
 File: termcap.info,  Node: Preparation,  Next: Find,  Prev: Library,  Up: Library
 
-Preparing to Use the Termcap Library
-====================================
+1.1 Preparing to Use the Termcap Library
+========================================
 
 To use the termcap library in a program, you need two kinds of
 preparation:
@@ -143,8 +143,8 @@ preparation:
 \1f
 File: termcap.info,  Node: Find,  Next: Interrogate,  Prev: Preparation,  Up: Library
 
-Finding a Terminal Description: `tgetent'
-=========================================
+1.2 Finding a Terminal Description: `tgetent'
+=============================================
 
 An application program that is going to use termcap must first look up
 the description of the terminal type in use.  This is done by calling
@@ -195,15 +195,15 @@ value otherwise.
      #else
      #define term_buffer 0
      #endif
-     
+
      init_terminal_data ()
      {
        char *termtype = getenv ("TERM");
        int success;
-     
+
        if (termtype == 0)
          fatal ("Specify a terminal type with `setenv TERM <yourtype>'.\n");
-     
+
        success = tgetent (term_buffer, termtype);
        if (success < 0)
          fatal ("Could not access the termcap data base.\n");
@@ -226,8 +226,8 @@ terminal description.
 \1f
 File: termcap.info,  Node: Interrogate,  Next: Initialize,  Prev: Find,  Up: Library
 
-Interrogating the Terminal Description
-======================================
+1.3 Interrogating the Terminal Description
+==========================================
 
 Each piece of information recorded in a terminal description is called a
 "capability".  Each defined terminal capability has a two-letter code
@@ -314,16 +314,16 @@ various capabilities, with conditionals to select between the Unix and
 GNU methods of providing buffer space.
 
      char *tgetstr ();
-     
+
      char *cl_string, *cm_string;
      int height;
      int width;
      int auto_wrap;
-     
+
      char PC;   /* For tputs.  */
      char *BC;  /* For tgoto.  */
      char *UP;
-     
+
      interrogate_terminal ()
      {
      #ifdef UNIX
@@ -335,16 +335,16 @@ GNU methods of providing buffer space.
      #else
      #define BUFFADDR 0
      #endif
-     
+
        char *temp;
-     
+
        /* Extract information we will use.  */
        cl_string = tgetstr ("cl", BUFFADDR);
        cm_string = tgetstr ("cm", BUFFADDR);
        auto_wrap = tgetflag ("am");
        height = tgetnum ("li");
        width = tgetnum ("co");
-     
+
        /* Extract information that termcap functions use.  */
        temp = tgetstr ("pc", BUFFADDR);
        PC = temp ? *temp : 0;
@@ -358,8 +358,8 @@ Parameters::, for information on `UP' and `BC'.
 \1f
 File: termcap.info,  Node: Initialize,  Next: Padding,  Prev: Interrogate,  Up: Library
 
-Initialization for Use of Termcap
-=================================
+1.4 Initialization for Use of Termcap
+=====================================
 
 Before starting to output commands to a terminal using termcap, an
 application program should do two things:
@@ -395,8 +395,8 @@ kernel's terminal flags unaltered.
 \1f
 File: termcap.info,  Node: Padding,  Next: Parameters,  Prev: Initialize,  Up: Library
 
-Padding
-=======
+1.5 Padding
+===========
 
 "Padding" means outputting null characters following a terminal display
 command that takes a long time to execute.  The terminal description
@@ -413,8 +413,8 @@ padding information, and then outputs the padding that is necessary.
 \1f
 File: termcap.info,  Node: Why Pad,  Next: Describe Padding,  Prev: Padding,  Up: Padding
 
-Why Pad, and How
-----------------
+1.5.1 Why Pad, and How
+----------------------
 
 Most types of terminal have commands that take longer to execute than
 they do to send over a high-speed line.  For example, clearing the
@@ -445,8 +445,8 @@ to fill up 20msec.
 \1f
 File: termcap.info,  Node: Describe Padding,  Next: Output Padding,  Prev: Why Pad,  Up: Padding
 
-Specifying Padding in a Terminal Description
---------------------------------------------
+1.5.2 Specifying Padding in a Terminal Description
+--------------------------------------------------
 
 In the terminal description, the amount of padding required by each
 display command is recorded as a sequence of digits at the front of the
@@ -479,8 +479,8 @@ most terminals.  *Note Pad Specs::.
 \1f
 File: termcap.info,  Node: Output Padding,  Prev: Describe Padding,  Up: Padding
 
-Performing Padding with `tputs'
--------------------------------
+1.5.3 Performing Padding with `tputs'
+-------------------------------------
 
 Use the termcap function `tputs' to output a string containing an
 optional padding spec of the form described above (*note Describe
@@ -490,7 +490,7 @@ padding.  Here is its declaration in ANSI C:
 
      char PC;
      short ospeed;
-     
+
      int tputs (char *STRING, int NLINES, int (*OUTFUN) ());
 
    Here STRING is the string (including padding spec) to be output;
@@ -551,8 +551,8 @@ programs.
 \1f
 File: termcap.info,  Node: Parameters,  Prev: Padding,  Up: Library
 
-Filling In Parameters
-=====================
+1.6 Filling In Parameters
+=========================
 
 Some terminal control strings require numeric "parameters".  For
 example, when you move the cursor, you need to say what horizontal and
@@ -588,8 +588,8 @@ Padding::).
 \1f
 File: termcap.info,  Node: Encode Parameters,  Next: Using Parameters,  Prev: Parameters,  Up: Parameters
 
-Describing the Encoding
------------------------
+1.6.1 Describing the Encoding
+-----------------------------
 
 A terminal command string that requires parameters contains special
 character sequences starting with `%' to say how to encode the
@@ -750,8 +750,8 @@ defined in standard Unix termcap.
 \1f
 File: termcap.info,  Node: Using Parameters,  Prev: Encode Parameters,  Up: Parameters
 
-Sending Display Commands with Parameters
-----------------------------------------
+1.6.2 Sending Display Commands with Parameters
+----------------------------------------------
 
 The termcap library functions `tparam' and `tgoto' serve as the analog
 of `printf' for terminal string parameters.  The newer function
@@ -767,8 +767,8 @@ preferable for cursor motion.
 \1f
 File: termcap.info,  Node: tparam,  Next: tgoto,  Prev: Using Parameters,  Up: Using Parameters
 
-`tparam'
-........
+1.6.2.1 `tparam'
+................
 
 The function `tparam' can encode display commands with any number of
 parameters and allows you to specify the buffer space.  It is the
@@ -799,7 +799,7 @@ produced by `tparam'.  *Note Padding::.  Here is an example.
      {
        char *buf;
        char buffer[40];
-     
+
        buf = tparam (command, buffer, 40, parm);
        tputs (buf, 1, fputchar);
        if (buf != buffer)
@@ -816,8 +816,8 @@ capability.
 \1f
 File: termcap.info,  Node: tgoto,  Prev: tparam,  Up: Using Parameters
 
-`tgoto'
-.......
+1.6.2.2 `tgoto'
+...............
 
 The special case of cursor motion is handled by `tgoto'.  There are two
 reasons why you might choose to use `tgoto':
@@ -870,8 +870,8 @@ parameter to `tgoto' as the "vertical position".
 \1f
 File: termcap.info,  Node: Data Base,  Next: Capabilities,  Prev: Library,  Up: Top
 
-The Format of the Data Base
-***************************
+2 The Format of the Data Base
+*****************************
 
 The termcap data base of terminal descriptions is stored in the file
 `/etc/termcap'.  It contains terminal descriptions, blank lines, and
@@ -893,8 +893,8 @@ meanings (*note Capabilities::) and their values describe the terminal.
 \1f
 File: termcap.info,  Node: Format,  Next: Capability Format,  Prev: Data Base,  Up: Data Base
 
-Terminal Description Format
-===========================
+2.1 Terminal Description Format
+===============================
 
 Aside from comments (lines starting with `#', which are ignored), each
 nonblank line in the termcap data base is a terminal description.  A
@@ -936,8 +936,8 @@ string" or `li' for "number of display lines".
 \1f
 File: termcap.info,  Node: Capability Format,  Next: Naming,  Prev: Format,  Up: Data Base
 
-Writing the Capabilities
-========================
+2.2 Writing the Capabilities
+============================
 
 There are three kinds of capabilities: flags, numbers, and strings.
 Each kind has its own way of being written in the description.  Each
@@ -1000,8 +1000,8 @@ capabilities are defined elsewhere (*note Capabilities::).
 \1f
 File: termcap.info,  Node: Naming,  Next: Inheriting,  Prev: Capability Format,  Up: Data Base
 
-Terminal Type Name Conventions
-==============================
+2.3 Terminal Type Name Conventions
+==================================
 
 There are conventions for choosing names of terminal types.  For one
 thing, all letters should be in lower case.  The terminal type for a
@@ -1102,8 +1102,8 @@ are used for two reasons:
 \1f
 File: termcap.info,  Node: Inheriting,  Prev: Naming,  Up: Data Base
 
-Inheriting from Related Descriptions
-====================================
+2.4 Inheriting from Related Descriptions
+========================================
 
 When two terminal descriptions are similar, their identical parts do not
 need to be given twice.  Instead, one of the two can be defined in
@@ -1151,8 +1151,8 @@ the capability name, as follows:
 \1f
 File: termcap.info,  Node: Capabilities,  Next: Summary,  Prev: Data Base,  Up: Top
 
-Definitions of the Terminal Capabilities
-****************************************
+3 Definitions of the Terminal Capabilities
+******************************************
 
 This section is divided into many subsections, each for one aspect of
 use of display terminals.  For writing a display program, you usually
@@ -1208,8 +1208,8 @@ should be omitted from terminal descriptions as well.
 \1f
 File: termcap.info,  Node: Basic,  Next: Screen Size,  Prev: Capabilities,  Up: Capabilities
 
-Basic Characteristics
-=====================
+3.1 Basic Characteristics
+=========================
 
 This section documents the capabilities that describe the basic and
 nature of the terminal, and also those that are relevant to the output
@@ -1293,8 +1293,8 @@ of graphic characters.
 \1f
 File: termcap.info,  Node: Screen Size,  Next: Cursor Motion,  Prev: Basic,  Up: Capabilities
 
-Screen Size
-===========
+3.2 Screen Size
+===============
 
 A terminal description has two capabilities, `co' and `li', that
 describe the screen size in columns and lines.  But there is more to
@@ -1332,8 +1332,8 @@ to learn the new screen size.
 \1f
 File: termcap.info,  Node: Cursor Motion,  Next: Wrapping,  Prev: Screen Size,  Up: Capabilities
 
-Cursor Motion
-=============
+3.3 Cursor Motion
+=================
 
 Termcap assumes that the terminal has a "cursor", a spot on the screen
 where a visible mark is displayed, and that most display commands take
@@ -1545,8 +1545,8 @@ programs.
 \1f
 File: termcap.info,  Node: Wrapping,  Next: Scrolling,  Prev: Cursor Motion,  Up: Capabilities
 
-Wrapping
-========
+3.4 Wrapping
+============
 
 "Wrapping" means moving the cursor from the right margin to the left
 margin of the following line.  Some terminals wrap automatically when a
@@ -1605,8 +1605,8 @@ column.
 \1f
 File: termcap.info,  Node: Scrolling,  Next: Windows,  Prev: Wrapping,  Up: Capabilities
 
-Scrolling
-=========
+3.5 Scrolling
+=============
 
 "Scrolling" means moving the contents of the screen up or down one or
 more lines.  Moving the contents up is "forward scrolling"; moving them
@@ -1724,8 +1724,8 @@ this number of lines.  *Note Padding::.
 \1f
 File: termcap.info,  Node: Windows,  Next: Clearing,  Prev: Scrolling,  Up: Capabilities
 
-Windows
-=======
+3.6 Windows
+===========
 
 A "window", in termcap, is a rectangular portion of the screen to which
 all display operations are restricted.  Wrapping, clearing, scrolling,
@@ -1748,8 +1748,8 @@ the screen there was.
 \1f
 File: termcap.info,  Node: Clearing,  Next: Insdel Line,  Prev: Windows,  Up: Capabilities
 
-Clearing Parts of the Screen
-============================
+3.7 Clearing Parts of the Screen
+================================
 
 There are several terminal capabilities for clearing parts of the screen
 to blank.  All display terminals support the `cl' string, and most
@@ -1789,8 +1789,8 @@ the display terminals that fail to support `ce'.
 \1f
 File: termcap.info,  Node: Insdel Line,  Next: Insdel Char,  Prev: Clearing,  Up: Capabilities
 
-Insert/Delete Line
-==================
+3.8 Insert/Delete Line
+======================
 
 "Inserting a line" means creating a blank line in the middle of the
 screen, and pushing the existing lines of text apart.  In fact, the
@@ -1890,8 +1890,8 @@ with `AL' as to insert one line with `al'.
 \1f
 File: termcap.info,  Node: Insdel Char,  Next: Standout,  Prev: Insdel Line,  Up: Capabilities
 
-Insert/Delete Character
-=======================
+3.9 Insert/Delete Character
+===========================
 
 "Inserting a character" means creating a blank space in the middle of a
 line, and pushing the rest of the line rightward.  The character in the
@@ -2127,8 +2127,8 @@ insert/delete mode and reentering it.
 \1f
 File: termcap.info,  Node: Standout,  Next: Underlining,  Prev: Insdel Char,  Up: Capabilities
 
-Standout and Appearance Modes
-=============================
+3.10 Standout and Appearance Modes
+==================================
 
 "Appearance modes" are modifications to the ways characters are
 displayed.  Typical appearance modes include reverse video, dim, bright,
@@ -2320,8 +2320,8 @@ Cursor Motion::).
 \1f
 File: termcap.info,  Node: Underlining,  Next: Cursor Visibility,  Prev: Standout,  Up: Capabilities
 
-Underlining
-===========
+3.11 Underlining
+================
 
 Underlining on most terminals is a kind of appearance mode, much like
 standout mode.  Therefore, it may be implemented using magic cookies or
@@ -2376,8 +2376,8 @@ provide these capabilities when appropriate.
 \1f
 File: termcap.info,  Node: Cursor Visibility,  Next: Bell,  Prev: Underlining,  Up: Capabilities
 
-Cursor Visibility
-=================
+3.12 Cursor Visibility
+======================
 
 Some terminals have the ability to make the cursor invisible, or to
 enhance it.  Enhancing the cursor is often done by programs that plan
@@ -2400,8 +2400,8 @@ normal on exit.
 \1f
 File: termcap.info,  Node: Bell,  Next: Keypad,  Prev: Cursor Visibility,  Up: Capabilities
 
-Bell
-====
+3.13 Bell
+=========
 
 Here we describe commands to make the terminal ask for the user to pay
 attention to it.
@@ -2419,8 +2419,8 @@ attention to it.
 \1f
 File: termcap.info,  Node: Keypad,  Next: Meta Key,  Prev: Bell,  Up: Capabilities
 
-Keypad and Function Keys
-========================
+3.14 Keypad and Function Keys
+=============================
 
 Many terminals have arrow and function keys that transmit specific
 character sequences to the computer.  Since the precise sequences used
@@ -2566,8 +2566,8 @@ Such programs should also send the `ke' string when exiting.
 \1f
 File: termcap.info,  Node: Meta Key,  Next: Initialization,  Prev: Keypad,  Up: Capabilities
 
-Meta Key
-========
+3.15 Meta Key
+=============
 
 A Meta key is a key on the keyboard that modifies each character you
 type by controlling the 0200 bit.  This bit is on if and only if the
@@ -2593,8 +2593,8 @@ would ever not want it to be on.
 \1f
 File: termcap.info,  Node: Initialization,  Next: Pad Specs,  Prev: Meta Key,  Up: Capabilities
 
-Initialization
-==============
+3.16 Initialization
+===================
 
 `ti'
      String of commands to put the terminal into whatever special modes
@@ -2655,8 +2655,8 @@ Initialization
 \1f
 File: termcap.info,  Node: Pad Specs,  Next: Status Line,  Prev: Initialization,  Up: Capabilities
 
-Padding Capabilities
-====================
+3.17 Padding Capabilities
+=========================
 
 There are two terminal capabilities that exist just to explain the
 proper way to obey the padding specifications in all the command string
@@ -2711,8 +2711,8 @@ either of these things.
 \1f
 File: termcap.info,  Node: Status Line,  Next: Half-Line,  Prev: Pad Specs,  Up: Capabilities
 
-Status Line
-===========
+3.18 Status Line
+================
 
 A "status line" is a line on the terminal that is not used for ordinary
 display output but instead used for a special message.  The intended
@@ -2759,8 +2759,8 @@ of this section are used.
 \1f
 File: termcap.info,  Node: Half-Line,  Next: Printer,  Prev: Status Line,  Up: Capabilities
 
-Half-Line Motion
-================
+3.19 Half-Line Motion
+=====================
 
 Some terminals have commands for moving the cursor vertically by
 half-lines, useful for outputting subscripts and superscripts.  Mostly
@@ -2781,8 +2781,8 @@ it is hardcopy terminals that have such features.
 \1f
 File: termcap.info,  Node: Printer,  Prev: Half-Line,  Up: Capabilities
 
-Controlling Printers Attached to Terminals
-==========================================
+3.20 Controlling Printers Attached to Terminals
+===============================================
 
 Some terminals have attached hardcopy printer ports.  They may be able
 to copy the screen contents to the printer; they may also be able to
@@ -2822,8 +2822,8 @@ that are provided, and use it in its own appropriate fashion.
 \1f
 File: termcap.info,  Node: Summary,  Next: Var Index,  Prev: Capabilities,  Up: Top
 
-Summary of Capability Names
-***************************
+4 Summary of Capability Names
+*****************************
 
 Here are all the terminal capability names in alphabetical order with a
 brief description of each.  For cross references to their definitions,
@@ -3321,19 +3321,20 @@ File: termcap.info,  Node: Var Index,  Next: Cap Index,  Prev: Summary,  Up: Top
 Variable and Function Index
 ***************************
 
+\0\b[index\0\b]
 * Menu:
 
-* BC:                                    tgoto.
-* ospeed:                                Output Padding.
-* PC:                                    Output Padding.
-* tgetent:                               Find.
-* tgetflag:                              Interrogate.
-* tgetnum:                               Interrogate.
-* tgetstr:                               Interrogate.
-* tgoto:                                 tgoto.
-* tparam:                                tparam.
-* tputs:                                 Output Padding.
-* UP:                                    tgoto.
+* BC:                                    tgoto.                (line 25)
+* ospeed:                                Output Padding.       (line 24)
+* PC:                                    Output Padding.       (line 24)
+* tgetent:                               Find.                 (line  6)
+* tgetflag:                              Interrogate.          (line 28)
+* tgetnum:                               Interrogate.          (line 28)
+* tgetstr:                               Interrogate.          (line 28)
+* tgoto:                                 tgoto.                (line  6)
+* tparam:                                tparam.               (line  6)
+* tputs:                                 Output Padding.       (line  6)
+* UP:                                    tgoto.                (line 25)
 
 \1f
 File: termcap.info,  Node: Cap Index,  Next: Index,  Prev: Var Index,  Up: Top
@@ -3341,141 +3342,142 @@ File: termcap.info,  Node: Cap Index,  Next: Index,  Prev: Var Index,  Up: Top
 Capability Index
 ****************
 
+\0\b[index\0\b]
 * Menu:
 
-* ae:                                    Standout.
-* AL:                                    Insdel Line.
-* al:                                    Insdel Line.
-* am:                                    Wrapping.
-* as:                                    Standout.
-* bc:                                    Cursor Motion.
-* bl:                                    Bell.
-* bs:                                    Cursor Motion.
-* bt:                                    Cursor Motion.
-* bw:                                    Cursor Motion.
-* CC:                                    Basic.
-* cd:                                    Clearing.
-* ce:                                    Clearing.
-* ch:                                    Cursor Motion.
-* cl:                                    Clearing.
-* CM:                                    Cursor Motion.
-* cm:                                    Cursor Motion.
-* co:                                    Screen Size.
-* cr:                                    Cursor Motion.
-* cS:                                    Scrolling.
-* cs:                                    Scrolling.
-* ct:                                    Initialization.
-* cv:                                    Cursor Motion.
-* da:                                    Scrolling.
-* dB:                                    Pad Specs.
-* db:                                    Scrolling.
-* dC:                                    Pad Specs.
-* DC:                                    Insdel Char.
-* dc:                                    Insdel Char.
-* dF:                                    Pad Specs.
-* DL:                                    Insdel Line.
-* dl:                                    Insdel Line.
-* dm:                                    Insdel Char.
-* dN:                                    Pad Specs.
-* DO:                                    Cursor Motion.
-* do:                                    Cursor Motion.
-* ds:                                    Status Line.
-* dT:                                    Pad Specs.
-* ec:                                    Clearing.
-* ed:                                    Insdel Char.
-* ei:                                    Insdel Char.
-* eo:                                    Basic.
-* es:                                    Status Line.
-* ff:                                    Cursor Motion.
-* fs:                                    Status Line.
-* gn:                                    Basic.
-* hc:                                    Basic.
-* hd:                                    Half-Line.
-* ho:                                    Cursor Motion.
-* hs:                                    Status Line.
-* hu:                                    Half-Line.
-* hz:                                    Basic.
-* i1:                                    Initialization.
-* i3:                                    Initialization.
-* IC:                                    Insdel Char.
-* ic:                                    Insdel Char.
-* if:                                    Initialization.
-* im:                                    Insdel Char.
-* in:                                    Insdel Char.
-* ip:                                    Insdel Char.
-* is:                                    Initialization.
-* it:                                    Initialization.
-* K1...K5:                               Keypad.
-* k1...k9:                               Keypad.
-* kA...kT:                               Keypad.
-* ka...ku:                               Keypad.
-* km:                                    Meta Key.
-* l0...l9:                               Keypad.
-* LE:                                    Cursor Motion.
-* le:                                    Cursor Motion.
-* li:                                    Screen Size.
-* ll:                                    Cursor Motion.
-* lm:                                    Scrolling.
-* mb:                                    Standout.
-* md:                                    Standout.
-* me:                                    Standout.
-* mh:                                    Standout.
-* mi:                                    Insdel Char.
-* mk:                                    Standout.
-* mm:                                    Meta Key.
-* mo:                                    Meta Key.
-* mp:                                    Standout.
-* mr:                                    Standout.
-* ms <1>:                                Underlining.
-* ms:                                    Standout.
-* nc:                                    Cursor Motion.
-* nd:                                    Cursor Motion.
-* nl:                                    Cursor Motion.
-* ns:                                    Scrolling.
-* nw:                                    Cursor Motion.
-* os:                                    Basic.
-* pb:                                    Pad Specs.
-* pc:                                    Pad Specs.
-* pf:                                    Printer.
-* pO:                                    Printer.
-* po:                                    Printer.
-* ps:                                    Printer.
-* rc:                                    Cursor Motion.
-* RI:                                    Cursor Motion.
-* rp:                                    Basic.
-* rs:                                    Initialization.
-* sa:                                    Standout.
-* sc:                                    Cursor Motion.
-* se:                                    Standout.
-* SF:                                    Scrolling.
-* sf:                                    Scrolling.
-* sg:                                    Standout.
-* so:                                    Standout.
-* SR:                                    Scrolling.
-* sr:                                    Scrolling.
-* st:                                    Initialization.
-* ta:                                    Cursor Motion.
-* te:                                    Initialization.
-* ti:                                    Initialization.
-* ts:                                    Status Line.
-* uc:                                    Underlining.
-* ue:                                    Underlining.
-* ug:                                    Underlining.
-* ul:                                    Underlining.
-* UP:                                    Cursor Motion.
-* up:                                    Cursor Motion.
-* us:                                    Underlining.
-* vb:                                    Bell.
-* ve:                                    Cursor Visibility.
-* vi:                                    Cursor Visibility.
-* vs:                                    Cursor Visibility.
-* wi:                                    Windows.
-* ws:                                    Status Line.
-* xb:                                    Basic.
-* xn:                                    Wrapping.
-* xs:                                    Standout.
-* xt <1>:                                Standout.
-* xt:                                    Cursor Motion.
+* ae:                                    Standout.            (line 180)
+* AL:                                    Insdel Line.         (line  49)
+* al:                                    Insdel Line.         (line  29)
+* am:                                    Wrapping.            (line  15)
+* as:                                    Standout.            (line 174)
+* bc:                                    Cursor Motion.       (line 195)
+* bl:                                    Bell.                (line  10)
+* bs:                                    Cursor Motion.       (line 198)
+* bt:                                    Cursor Motion.       (line 160)
+* bw:                                    Cursor Motion.       (line 100)
+* CC:                                    Basic.               (line  65)
+* cd:                                    Clearing.            (line  15)
+* ce:                                    Clearing.            (line  21)
+* ch:                                    Cursor Motion.       (line 124)
+* cl:                                    Clearing.            (line  11)
+* CM:                                    Cursor Motion.       (line 117)
+* cm:                                    Cursor Motion.       (line  36)
+* co:                                    Screen Size.         (line  33)
+* cr:                                    Cursor Motion.       (line  65)
+* cS:                                    Scrolling.           (line  53)
+* cs:                                    Scrolling.           (line  37)
+* ct:                                    Initialization.      (line  56)
+* cv:                                    Cursor Motion.       (line 132)
+* da:                                    Scrolling.           (line  85)
+* dB:                                    Pad Specs.           (line  36)
+* db:                                    Scrolling.           (line  93)
+* dC:                                    Pad Specs.           (line  28)
+* DC:                                    Insdel Char.         (line 199)
+* dc:                                    Insdel Char.         (line 195)
+* dF:                                    Pad Specs.           (line  40)
+* DL:                                    Insdel Line.         (line  54)
+* dl:                                    Insdel Line.         (line  39)
+* dm:                                    Insdel Char.         (line 204)
+* dN:                                    Pad Specs.           (line  32)
+* DO:                                    Cursor Motion.       (line 110)
+* do:                                    Cursor Motion.       (line  87)
+* ds:                                    Status Line.         (line  37)
+* dT:                                    Pad Specs.           (line  44)
+* ec:                                    Clearing.            (line  25)
+* ed:                                    Insdel Char.         (line 209)
+* ei:                                    Insdel Char.         (line  79)
+* eo:                                    Basic.               (line  18)
+* es:                                    Status Line.         (line  30)
+* ff:                                    Cursor Motion.       (line 150)
+* fs:                                    Status Line.         (line  26)
+* gn:                                    Basic.               (line  23)
+* hc:                                    Basic.               (line  39)
+* hd:                                    Half-Line.           (line  18)
+* ho:                                    Cursor Motion.       (line  45)
+* hs:                                    Status Line.         (line  16)
+* hu:                                    Half-Line.           (line  11)
+* hz:                                    Basic.               (line  53)
+* i1:                                    Initialization.      (line  28)
+* i3:                                    Initialization.      (line  28)
+* IC:                                    Insdel Char.         (line 114)
+* ic:                                    Insdel Char.         (line  93)
+* if:                                    Initialization.      (line  22)
+* im:                                    Insdel Char.         (line  68)
+* in:                                    Insdel Char.         (line 126)
+* ip:                                    Insdel Char.         (line 108)
+* is:                                    Initialization.      (line  18)
+* it:                                    Initialization.      (line  47)
+* K1...K5:                               Keypad.              (line  44)
+* k1...k9:                               Keypad.              (line  55)
+* kA...kT:                               Keypad.              (line  69)
+* ka...ku:                               Keypad.              (line  18)
+* km:                                    Meta Key.            (line  13)
+* l0...l9:                               Keypad.              (line  63)
+* LE:                                    Cursor Motion.       (line 110)
+* le:                                    Cursor Motion.       (line  70)
+* li:                                    Screen Size.         (line  37)
+* ll:                                    Cursor Motion.       (line  57)
+* lm:                                    Scrolling.           (line  97)
+* mb:                                    Standout.            (line 150)
+* md:                                    Standout.            (line 153)
+* me:                                    Standout.            (line 168)
+* mh:                                    Standout.            (line 156)
+* mi:                                    Insdel Char.         (line 122)
+* mk:                                    Standout.            (line 159)
+* mm:                                    Meta Key.            (line  16)
+* mo:                                    Meta Key.            (line  19)
+* mp:                                    Standout.            (line 162)
+* mr:                                    Standout.            (line 165)
+* ms <1>:                                Underlining.         (line  31)
+* ms:                                    Standout.            (line 131)
+* nc:                                    Cursor Motion.       (line 170)
+* nd:                                    Cursor Motion.       (line  77)
+* nl:                                    Cursor Motion.       (line 202)
+* ns:                                    Scrolling.           (line  74)
+* nw:                                    Cursor Motion.       (line 105)
+* os:                                    Basic.               (line  11)
+* pb:                                    Pad Specs.           (line  11)
+* pc:                                    Pad Specs.           (line  16)
+* pf:                                    Printer.             (line  20)
+* pO:                                    Printer.             (line  25)
+* po:                                    Printer.             (line  17)
+* ps:                                    Printer.             (line  13)
+* rc:                                    Cursor Motion.       (line 145)
+* RI:                                    Cursor Motion.       (line 110)
+* rp:                                    Basic.               (line  42)
+* rs:                                    Initialization.      (line  39)
+* sa:                                    Standout.            (line 183)
+* sc:                                    Cursor Motion.       (line 139)
+* se:                                    Standout.            (line 123)
+* SF:                                    Scrolling.           (line  29)
+* sf:                                    Scrolling.           (line  21)
+* sg:                                    Standout.            (line 126)
+* so:                                    Standout.            (line 120)
+* SR:                                    Scrolling.           (line  33)
+* sr:                                    Scrolling.           (line  25)
+* st:                                    Initialization.      (line  59)
+* ta:                                    Cursor Motion.       (line 154)
+* te:                                    Initialization.      (line  13)
+* ti:                                    Initialization.      (line   7)
+* ts:                                    Status Line.         (line  21)
+* uc:                                    Underlining.         (line  45)
+* ue:                                    Underlining.         (line  23)
+* ug:                                    Underlining.         (line  27)
+* ul:                                    Underlining.         (line  49)
+* UP:                                    Cursor Motion.       (line 110)
+* up:                                    Cursor Motion.       (line  82)
+* us:                                    Underlining.         (line  19)
+* vb:                                    Bell.                (line  15)
+* ve:                                    Cursor Visibility.   (line  20)
+* vi:                                    Cursor Visibility.   (line  17)
+* vs:                                    Cursor Visibility.   (line  14)
+* wi:                                    Windows.             (line  12)
+* ws:                                    Status Line.         (line  42)
+* xb:                                    Basic.               (line  78)
+* xn:                                    Wrapping.            (line  31)
+* xs:                                    Standout.            (line 137)
+* xt <1>:                                Standout.            (line 144)
+* xt:                                    Cursor Motion.       (line 181)
 
 \1f
 File: termcap.info,  Node: Index,  Prev: Cap Index,  Up: Top
@@ -3483,52 +3485,53 @@ File: termcap.info,  Node: Index,  Prev: Cap Index,  Up: Top
 Concept Index
 *************
 
+\0\b[index\0\b]
 * Menu:
 
-* %:                                     Encode Parameters.
-* appearance modes:                      Standout.
-* bell:                                  Bell.
-* clearing the screen:                   Clearing.
-* command character:                     Basic.
-* cursor motion:                         Cursor Motion.
-* delete character:                      Insdel Char.
-* delete line:                           Insdel Line.
-* delete mode:                           Insdel Char.
-* description format:                    Format.
-* erasing:                               Clearing.
-* generic terminal type:                 Basic.
-* home position:                         Cursor Motion.
-* inheritance:                           Inheriting.
-* initialization:                        Initialization.
-* insert character:                      Insdel Char.
-* insert line:                           Insdel Line.
-* insert mode:                           Insdel Char.
-* line speed:                            Output Padding.
-* magic cookie:                          Standout.
-* meta key:                              Meta Key.
-* names of terminal types:               Naming.
-* overstrike:                            Basic.
-* padding <1>:                           Pad Specs.
-* padding:                               Padding.
-* parameters:                            Parameters.
-* printer:                               Printer.
-* repeat output:                         Basic.
-* reset:                                 Initialization.
-* screen size <1>:                       Screen Size.
-* screen size:                           Naming.
-* scrolling:                             Scrolling.
-* standout:                              Standout.
-* status line:                           Status Line.
-* Superbee:                              Basic.
-* tab stops:                             Initialization.
-* termcap:                               Introduction.
-* terminal flags (kernel):               Initialize.
-* underlining:                           Underlining.
-* visibility:                            Cursor Visibility.
-* visible bell:                          Bell.
-* window:                                Windows.
-* wrapping <1>:                          Wrapping.
-* wrapping:                              Naming.
+* %:                                     Encode Parameters.    (line  6)
+* appearance modes:                      Standout.             (line  6)
+* bell:                                  Bell.                 (line  6)
+* clearing the screen:                   Clearing.             (line  6)
+* command character:                     Basic.                (line 65)
+* cursor motion:                         Cursor Motion.        (line  6)
+* delete character:                      Insdel Char.          (line  6)
+* delete line:                           Insdel Line.          (line  6)
+* delete mode:                           Insdel Char.          (line 40)
+* description format:                    Format.               (line  6)
+* erasing:                               Clearing.             (line  6)
+* generic terminal type:                 Basic.                (line 23)
+* home position:                         Cursor Motion.        (line 45)
+* inheritance:                           Inheriting.           (line  6)
+* initialization:                        Initialization.       (line  6)
+* insert character:                      Insdel Char.          (line  6)
+* insert line:                           Insdel Line.          (line  6)
+* insert mode:                           Insdel Char.          (line 24)
+* line speed:                            Output Padding.       (line  6)
+* magic cookie:                          Standout.             (line  6)
+* meta key:                              Meta Key.             (line  6)
+* names of terminal types:               Naming.               (line  6)
+* overstrike:                            Basic.                (line 11)
+* padding <1>:                           Pad Specs.            (line  6)
+* padding:                               Padding.              (line  6)
+* parameters:                            Parameters.           (line  6)
+* printer:                               Printer.              (line  6)
+* repeat output:                         Basic.                (line 42)
+* reset:                                 Initialization.       (line  6)
+* screen size <1>:                       Screen Size.          (line  6)
+* screen size:                           Naming.               (line 32)
+* scrolling:                             Scrolling.            (line  6)
+* standout:                              Standout.             (line  6)
+* status line:                           Status Line.          (line  6)
+* Superbee:                              Basic.                (line 78)
+* tab stops:                             Initialization.       (line  6)
+* termcap:                               Introduction.         (line  6)
+* terminal flags (kernel):               Initialize.           (line  6)
+* underlining:                           Underlining.          (line  6)
+* visibility:                            Cursor Visibility.    (line  6)
+* visible bell:                          Bell.                 (line  6)
+* window:                                Windows.              (line  6)
+* wrapping <1>:                          Wrapping.             (line  6)
+* wrapping:                              Naming.               (line 20)
 
 
 \1f
@@ -3536,48 +3539,48 @@ Tag Table:
 Node: Top\7f959
 Node: Introduction\7f1604
 Node: Library\7f3328
-Node: Preparation\7f4342
-Node: Find\7f5538
-Node: Interrogate\7f9082
-Node: Initialize\7f14386
-Node: Padding\7f16021
-Node: Why Pad\7f16679
-Node: Describe Padding\7f18320
-Node: Output Padding\7f19792
-Node: Parameters\7f23402
-Node: Encode Parameters\7f25057
-Node: Using Parameters\7f31159
-Node: tparam\7f31745
-Node: tgoto\7f33807
-Node: Data Base\7f36359
-Node: Format\7f37233
-Node: Capability Format\7f39322
-Node: Naming\7f42369
-Node: Inheriting\7f46933
-Node: Capabilities\7f49156
-Node: Basic\7f51996
-Node: Screen Size\7f55837
-Node: Cursor Motion\7f57574
-Node: Wrapping\7f67221
-Node: Scrolling\7f70042
-Node: Windows\7f75059
-Node: Clearing\7f75790
-Node: Insdel Line\7f77549
-Node: Insdel Char\7f82452
-Node: Standout\7f92433
-Node: Underlining\7f101487
-Node: Cursor Visibility\7f103903
-Node: Bell\7f104648
-Node: Keypad\7f105194
-Node: Meta Key\7f109912
-Node: Initialization\7f110863
-Node: Pad Specs\7f113227
-Node: Status Line\7f115277
-Node: Half-Line\7f117158
-Node: Printer\7f117957
-Node: Summary\7f119633
-Node: Var Index\7f129835
-Node: Cap Index\7f130559
-Node: Index\7f137750
+Node: Preparation\7f4346
+Node: Find\7f5550
+Node: Interrogate\7f9087
+Node: Initialize\7f14369
+Node: Padding\7f16012
+Node: Why Pad\7f16678
+Node: Describe Padding\7f18331
+Node: Output Padding\7f19815
+Node: Parameters\7f23432
+Node: Encode Parameters\7f25095
+Node: Using Parameters\7f31209
+Node: tparam\7f31807
+Node: tgoto\7f33880
+Node: Data Base\7f36448
+Node: Format\7f37326
+Node: Capability Format\7f39423
+Node: Naming\7f42478
+Node: Inheriting\7f47050
+Node: Capabilities\7f49281
+Node: Basic\7f52125
+Node: Screen Size\7f55974
+Node: Cursor Motion\7f57719
+Node: Wrapping\7f67374
+Node: Scrolling\7f70203
+Node: Windows\7f75228
+Node: Clearing\7f75967
+Node: Insdel Line\7f77734
+Node: Insdel Char\7f82645
+Node: Standout\7f92634
+Node: Underlining\7f101698
+Node: Cursor Visibility\7f104124
+Node: Bell\7f104879
+Node: Keypad\7f105435
+Node: Meta Key\7f110163
+Node: Initialization\7f111124
+Node: Pad Specs\7f113498
+Node: Status Line\7f115558
+Node: Half-Line\7f117449
+Node: Printer\7f118258
+Node: Summary\7f119944
+Node: Var Index\7f130150
+Node: Cap Index\7f131116
+Node: Index\7f140964
 \1f
 End Tag Table
index d17adb9..3231158 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.6 from
+This is ../info/texinfo.info, produced by makeinfo version 4.8 from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
@@ -35,306 +35,306 @@ translation approved by the Free Software Foundation.
 \1f
 Indirect:
 texinfo.info-1: 1484
-texinfo.info-2: 300413
+texinfo.info-2: 298772
 \1f
 Tag Table:
 (Indirect)
 Node: Top\7f1484
 Node: Copying\7f23797
 Node: Overview\7f25800
-Node: Overview-Footnotes\7f27227
-Ref: Overview-Footnote-1\7f27291
-Node: Using Texinfo\7f27763
-Node: Info Files\7f30250
-Node: Info Files-Footnotes\7f34284
-Ref: Info Files-Footnote-1\7f34352
-Node: Printed Books\7f34531
-Node: Printed Books-Footnotes\7f37200
-Ref: Printed Books-Footnote-1\7f37274
-Node: Formatting Commands\7f37484
-Node: Formatting Commands-Footnotes\7f40309
-Ref: Formatting Commands-Footnote-1\7f40395
-Node: Conventions\7f41011
-Node: Comments\7f43571
-Node: Minimum\7f44991
-Node: Six Parts\7f47175
-Node: Short Sample\7f48685
-Node: Acknowledgements\7f52817
-Node: Texinfo Mode\7f53650
-Node: Texinfo Mode Overview\7f55021
-Node: Emacs Editing\7f55797
-Node: Inserting\7f57925
-Node: Showing the Structure\7f62204
-Node: Updating Nodes and Menus\7f64729
-Node: Updating Commands\7f65800
-Node: Updating Requirements\7f71861
-Node: Other Updating Commands\7f74156
-Node: Info Formatting\7f77422
-Node: Printing\7f78678
-Node: Texinfo Mode Summary\7f81021
-Node: Beginning a File\7f85757
-Node: Four Parts\7f86646
-Node: Sample Beginning\7f88116
-Node: Header\7f89734
-Node: First Line\7f91084
-Node: Start of Header\7f92071
-Node: setfilename\7f92782
-Node: settitle\7f94716
-Node: setchapternewpage\7f96604
-Node: paragraphindent\7f99363
-Node: End of Header\7f100843
-Node: Info Summary and Permissions\7f101680
-Node: Titlepage & Copyright Page\7f102697
-Node: titlepage\7f104301
-Node: titlepage-Footnotes\7f106581
-Ref: titlepage-Footnote-1\7f106647
-Node: titlefont center sp\7f106921
-Node: title subtitle author\7f108145
-Node: Copyright & Permissions\7f110415
-Node: end titlepage\7f112414
-Node: headings on off\7f114118
-Node: The Top Node\7f116161
-Node: Title of Top Node\7f117314
-Node: Master Menu Parts\7f118567
-Node: Software Copying Permissions\7f120802
-Node: Ending a File\7f121968
-Node: Printing Indices & Menus\7f122814
-Node: Contents\7f125120
-Node: File End\7f127458
-Node: Structuring\7f128129
-Node: Tree Structuring\7f129784
-Node: Structuring Command Types\7f131225
-Node: makeinfo top\7f133550
-Node: chapter\7f134081
-Node: unnumbered & appendix\7f135103
-Node: majorheading & chapheading\7f135940
-Node: section\7f136759
-Node: unnumberedsec appendixsec heading\7f137521
-Node: subsection\7f138508
-Node: unnumberedsubsec appendixsubsec subheading\7f139078
-Node: subsubsection\7f140029
-Node: Raise/lower sections\7f141577
-Node: Nodes\7f143710
-Node: Two Paths\7f144645
-Node: Node Menu Illustration\7f145931
-Node: node\7f149624
-Node: Node Names\7f152318
-Node: Writing a Node\7f153394
-Node: Node Line Tips\7f155410
-Node: Node Line Requirements\7f156202
-Node: First Node\7f157801
-Node: makeinfo top command\7f159238
-Node: Top Node Summary\7f160415
-Node: makeinfo Pointer Creation\7f161863
-Node: Menus\7f163108
-Node: Menus-Footnotes\7f164045
-Ref: Menus-Footnote-1\7f164103
-Node: Menu Location\7f164396
-Node: Writing a Menu\7f166073
-Node: Menu Parts\7f167037
-Node: Less Cluttered Menu Entry\7f168193
-Node: Menu Example\7f168816
-Node: Other Info Files\7f170335
-Node: Cross References\7f172201
-Node: References\7f173156
-Node: Cross Reference Commands\7f174903
-Node: Cross Reference Parts\7f175960
-Node: xref\7f178794
-Node: Reference Syntax\7f179591
-Node: One Argument\7f181245
-Node: Two Arguments\7f182255
-Node: Three Arguments\7f183368
-Node: Four and Five Arguments\7f185757
-Node: Top Node Naming\7f188167
-Node: ref\7f189175
-Node: pxref\7f190565
-Node: inforef\7f192945
-Node: uref\7f194236
-Node: Marking Text\7f195233
-Node: Indicating\7f195855
-Node: Useful Highlighting\7f197758
-Node: code\7f199148
-Node: kbd\7f202184
-Node: key\7f204052
-Node: samp\7f205383
-Node: var\7f206968
-Node: file\7f208759
-Node: dfn\7f209364
-Node: cite\7f210272
-Node: url\7f210724
-Node: email\7f211286
-Node: Emphasis\7f212096
-Node: emph & strong\7f212994
-Node: Smallcaps\7f213978
-Node: Fonts\7f215301
-Node: Customized Highlighting\7f216387
-Node: Customized Highlighting-Footnotes\7f219200
-Ref: Customized Highlighting-Footnote-1\7f219294
-Node: Quotations and Examples\7f219420
-Node: Block Enclosing Commands\7f221040
-Node: quotation\7f223063
-Node: example\7f224151
-Node: noindent\7f226204
-Node: Lisp Example\7f227666
-Node: Lisp Example-Footnotes\7f228366
-Ref: Lisp Example-Footnote-1\7f228438
-Node: smallexample & smalllisp\7f228556
-Node: display\7f230579
-Node: format\7f231209
-Node: exdent\7f231668
-Node: flushleft & flushright\7f232746
-Node: cartouche\7f234010
-Node: Lists and Tables\7f234775
-Node: Introducing Lists\7f235449
-Node: itemize\7f237114
-Node: enumerate\7f239258
-Node: Two-column Tables\7f241757
-Node: table\7f242444
-Node: ftable vtable\7f244875
-Node: itemx\7f245974
-Node: Multi-column Tables\7f246983
-Node: Multitable Column Widths\7f247652
-Node: Multitable Rows\7f249104
-Node: Indices\7f250883
-Node: Index Entries\7f252031
-Node: Predefined Indices\7f253162
-Node: Indexing Commands\7f254157
-Node: Combining Indices\7f258695
-Node: syncodeindex\7f260056
-Node: synindex\7f261716
-Node: New Indices\7f262239
-Node: Insertions\7f264062
-Node: Braces Atsigns\7f265244
-Node: Inserting An Atsign\7f265794
-Node: Inserting Braces\7f266066
-Node: Inserting Space\7f266427
-Node: Not Ending a Sentence\7f266929
-Node: Ending a Sentence\7f268281
-Node: Multiple Spaces\7f269407
-Node: dmn\7f270624
-Node: Inserting Accents\7f271829
-Node: Dots Bullets\7f273584
-Node: dots\7f274404
-Node: bullet\7f274926
-Node: TeX and copyright\7f275321
-Node: tex\7f275886
-Node: copyright symbol\7f276301
-Node: pounds\7f276559
-Node: minus\7f276920
-Node: math\7f277840
-Node: Glyphs\7f278565
-Node: Glyphs Summary\7f279676
-Node: result\7f280302
-Node: expansion\7f280785
-Node: Print Glyph\7f281739
-Node: Error Glyph\7f282614
-Node: Equivalence\7f283445
-Node: Point Glyph\7f284131
-Node: Images\7f285686
-Node: Breaks\7f287351
-Node: Break Commands\7f288780
-Node: Line Breaks\7f289621
-Node: - and hyphenation\7f290637
-Node: w\7f291885
-Node: sp\7f292596
-Node: page\7f293003
-Node: group\7f293378
-Node: need\7f295120
-Node: Definition Commands\7f295848
-Node: Def Cmd Template\7f297417
-Node: Optional Arguments\7f300413
-Node: deffnx\7f301999
-Node: Def Cmds in Detail\7f302952
-Node: Functions Commands\7f304060
-Node: Variables Commands\7f307063
-Node: Typed Functions\7f309147
-Node: Typed Variables\7f312688
-Node: Abstract Objects\7f314669
-Node: Data Types\7f319893
-Node: Def Cmd Conventions\7f321146
-Node: Sample Function Definition\7f321707
-Node: Footnotes\7f324590
-Node: Footnotes-Footnotes\7f324976
-Ref: Footnotes-Footnote-1\7f325042
-Node: Footnote Commands\7f325322
-Node: Footnote Commands-Footnotes\7f326817
-Ref: Footnote Commands-Footnote-1\7f326899
-Node: Footnote Styles\7f326935
-Node: Conditionals\7f329519
-Node: Conditional Commands\7f330328
-Node: Conditional Not Commands\7f331821
-Node: Raw Formatter Commands\7f332564
-Node: set clear value\7f334392
-Node: ifset ifclear\7f335191
-Node: value\7f338369
-Node: value Example\7f339779
-Node: Macros\7f341355
-Node: Defining Macros\7f342058
-Node: Invoking Macros\7f343145
-Node: Format/Print Hardcopy\7f344249
-Node: Use TeX\7f346084
-Node: Format with tex/texindex\7f346712
-Node: Format with texi2dvi\7f350351
-Node: Print with lpr\7f350940
-Node: Within Emacs\7f351792
-Node: Texinfo Mode Printing\7f352709
-Node: Compile-Command\7f356117
-Node: Requirements Summary\7f357003
-Node: Preparing for TeX\7f358314
-Node: Overfull hboxes\7f361101
-Node: smallbook\7f362658
-Node: A4 Paper\7f364174
-Node: Cropmarks and Magnification\7f365397
-Node: Create an Info File\7f367336
-Node: makeinfo advantages\7f368637
-Node: Invoking makeinfo\7f369553
-Node: makeinfo options\7f370239
-Node: Pointer Validation\7f375722
-Node: makeinfo in Emacs\7f377064
-Node: texinfo-format commands\7f379620
-Node: Batch Formatting\7f380891
-Node: Tag and Split Files\7f382105
-Node: Install an Info File\7f385457
-Node: Directory file\7f386273
-Node: New Info File\7f388141
-Node: Other Info Directories\7f389200
-Node: Installing Dir Entries\7f392413
-Node: Invoking install-info\7f394405
-Node: Command List\7f396819
-Node: Tips\7f434787
-Node: Sample Texinfo File\7f446174
-Node: Sample Permissions\7f448291
-Node: Inserting Permissions\7f449332
-Node: ifinfo Permissions\7f451638
-Node: Titlepage Permissions\7f453257
-Node: Include Files\7f454517
-Node: Using Include Files\7f455602
-Node: texinfo-multiple-files-update\7f457555
-Node: Include File Requirements\7f459914
-Node: Sample Include File\7f461157
-Node: Include Files Evolution\7f462674
-Node: Headings\7f464643
-Node: Headings Introduced\7f465278
-Node: Heading Format\7f467166
-Node: Heading Choice\7f469616
-Node: Custom Headings\7f470986
-Node: Catching Mistakes\7f475312
-Node: makeinfo Preferred\7f476599
-Node: Debugging with Info\7f477504
-Node: Debugging with TeX\7f480848
-Node: Using texinfo-show-structure\7f485126
-Node: Using occur\7f488223
-Node: Running Info-Validate\7f489758
-Node: Using Info-validate\7f490817
-Node: Unsplit\7f492657
-Node: Tagifying\7f493701
-Node: Splitting\7f494551
-Node: Refilling Paragraphs\7f496165
-Node: Refilling Paragraphs-Footnotes\7f497817
-Ref: Refilling Paragraphs-Footnote-1\7f497905
-Node: Command Syntax\7f498068
-Node: Obtaining TeX\7f501023
-Node: Command and Variable Index\7f503134
-Node: Concept Index\7f518984
+Node: Overview-Footnotes\7f27231
+Ref: Overview-Footnote-1\7f27295
+Node: Using Texinfo\7f27767
+Node: Info Files\7f30254
+Node: Info Files-Footnotes\7f34296
+Ref: Info Files-Footnote-1\7f34364
+Node: Printed Books\7f34543
+Node: Printed Books-Footnotes\7f37220
+Ref: Printed Books-Footnote-1\7f37294
+Node: Formatting Commands\7f37504
+Node: Formatting Commands-Footnotes\7f40337
+Ref: Formatting Commands-Footnote-1\7f40423
+Node: Conventions\7f41039
+Node: Comments\7f43607
+Node: Minimum\7f45039
+Node: Six Parts\7f47231
+Node: Short Sample\7f48749
+Node: Acknowledgements\7f52839
+Node: Texinfo Mode\7f53680
+Node: Texinfo Mode Overview\7f55055
+Node: Emacs Editing\7f55831
+Node: Inserting\7f57967
+Node: Showing the Structure\7f62254
+Node: Updating Nodes and Menus\7f64787
+Node: Updating Commands\7f65866
+Node: Updating Requirements\7f71927
+Node: Other Updating Commands\7f74234
+Node: Info Formatting\7f77512
+Node: Printing\7f78776
+Node: Texinfo Mode Summary\7f81127
+Node: Beginning a File\7f85836
+Node: Four Parts\7f86729
+Node: Sample Beginning\7f88199
+Node: Header\7f89760
+Node: First Line\7f91118
+Node: Start of Header\7f92117
+Node: setfilename\7f92840
+Node: settitle\7f94786
+Node: setchapternewpage\7f96686
+Node: paragraphindent\7f99457
+Node: End of Header\7f100949
+Node: Info Summary and Permissions\7f101798
+Node: Titlepage & Copyright Page\7f102823
+Node: titlepage\7f104435
+Node: titlepage-Footnotes\7f106727
+Ref: titlepage-Footnote-1\7f106793
+Node: titlefont center sp\7f107067
+Node: title subtitle author\7f108303
+Node: Copyright & Permissions\7f110585
+Node: end titlepage\7f112596
+Node: headings on off\7f114312
+Node: The Top Node\7f116367
+Node: Title of Top Node\7f117528
+Node: Master Menu Parts\7f118760
+Node: Software Copying Permissions\7f120982
+Node: Ending a File\7f122156
+Node: Printing Indices & Menus\7f122996
+Node: Contents\7f125290
+Node: File End\7f127636
+Node: Structuring\7f128315
+Node: Tree Structuring\7f129974
+Node: Structuring Command Types\7f131423
+Node: makeinfo top\7f133751
+Node: chapter\7f134290
+Node: unnumbered & appendix\7f135320
+Node: majorheading & chapheading\7f136165
+Node: section\7f136992
+Node: unnumberedsec appendixsec heading\7f137762
+Node: subsection\7f138759
+Node: unnumberedsubsec appendixsubsec subheading\7f139337
+Node: subsubsection\7f140298
+Node: Raise/lower sections\7f141856
+Node: Nodes\7f143989
+Node: Two Paths\7f144928
+Node: Node Menu Illustration\7f146214
+Node: node\7f149915
+Node: Node Names\7f152617
+Node: Writing a Node\7f153693
+Node: Node Line Tips\7f155721
+Node: Node Line Requirements\7f156525
+Node: First Node\7f158136
+Node: makeinfo top command\7f159585
+Node: Top Node Summary\7f160774
+Node: makeinfo Pointer Creation\7f162234
+Node: Menus\7f163487
+Node: Menus-Footnotes\7f164428
+Ref: Menus-Footnote-1\7f164486
+Node: Menu Location\7f164779
+Node: Writing a Menu\7f166451
+Node: Menu Parts\7f167418
+Node: Less Cluttered Menu Entry\7f168582
+Node: Menu Example\7f169213
+Node: Other Info Files\7f170725
+Node: Cross References\7f172599
+Node: References\7f173558
+Node: Cross Reference Commands\7f175305
+Node: Cross Reference Parts\7f176370
+Node: xref\7f179212
+Node: Reference Syntax\7f180017
+Node: One Argument\7f181671
+Node: Two Arguments\7f182693
+Node: Three Arguments\7f183818
+Node: Four and Five Arguments\7f186219
+Node: Top Node Naming\7f188641
+Node: ref\7f189657
+Node: pxref\7f191055
+Node: inforef\7f193443
+Node: uref\7f194742
+Node: Marking Text\7f195747
+Node: Indicating\7f196373
+Node: Useful Highlighting\7f198284
+Node: code\7f199674
+Node: kbd\7f202722
+Node: key\7f204603
+Node: samp\7f205947
+Node: var\7f207544
+Node: file\7f209347
+Node: dfn\7f209964
+Node: cite\7f210884
+Node: url\7f211348
+Node: email\7f211922
+Node: Emphasis\7f212747
+Node: emph & strong\7f213653
+Node: Smallcaps\7f214649
+Node: Fonts\7f215984
+Node: Customized Highlighting\7f217082
+Node: Customized Highlighting-Footnotes\7f219907
+Ref: Customized Highlighting-Footnote-1\7f220001
+Node: Quotations and Examples\7f220127
+Node: Block Enclosing Commands\7f221755
+Node: quotation\7f223788
+Node: example\7f224886
+Node: noindent\7f226944
+Node: Lisp Example\7f228400
+Node: Lisp Example-Footnotes\7f229110
+Ref: Lisp Example-Footnote-1\7f229182
+Node: smallexample & smalllisp\7f229300
+Node: display\7f231333
+Node: format\7f231973
+Node: exdent\7f232442
+Node: flushleft & flushright\7f233530
+Node: cartouche\7f234806
+Node: Lists and Tables\7f235583
+Node: Introducing Lists\7f236263
+Node: itemize\7f237930
+Node: enumerate\7f240066
+Node: Two-column Tables\7f242560
+Node: table\7f243257
+Node: ftable vtable\7f245685
+Node: itemx\7f246798
+Node: Multi-column Tables\7f247821
+Node: Multitable Column Widths\7f248500
+Node: Multitable Rows\7f249966
+Node: Indices\7f251759
+Node: Index Entries\7f252913
+Node: Predefined Indices\7f254054
+Node: Indexing Commands\7f255059
+Node: Combining Indices\7f259609
+Node: syncodeindex\7f260980
+Node: synindex\7f262656
+Node: New Indices\7f263193
+Node: Insertions\7f265021
+Node: Braces Atsigns\7f266209
+Node: Inserting An Atsign\7f266769
+Node: Inserting Braces\7f267055
+Node: Inserting Space\7f267430
+Node: Not Ending a Sentence\7f267942
+Node: Ending a Sentence\7f269308
+Node: Multiple Spaces\7f270448
+Node: dmn\7f271679
+Node: Inserting Accents\7f272898
+Node: Dots Bullets\7f274663
+Node: dots\7f275493
+Node: bullet\7f276029
+Node: TeX and copyright\7f276438
+Node: tex\7f277013
+Node: copyright symbol\7f277442
+Node: pounds\7f277714
+Node: minus\7f278085
+Node: math\7f279003
+Node: Glyphs\7f279738
+Node: Glyphs Summary\7f280859
+Node: result\7f281485
+Node: expansion\7f281982
+Node: Print Glyph\7f282950
+Node: Error Glyph\7f283839
+Node: Equivalence\7f284684
+Node: Point Glyph\7f285384
+Node: Images\7f286948
+Node: Breaks\7f288625
+Node: Break Commands\7f290060
+Node: Line Breaks\7f290901
+Node: - and hyphenation\7f291927
+Node: w\7f293184
+Node: sp\7f293905
+Node: page\7f294322
+Node: group\7f294707
+Node: need\7f296459
+Node: Definition Commands\7f297197
+Node: Def Cmd Template\7f298772
+Node: Optional Arguments\7f301780
+Node: deffnx\7f303377
+Node: Def Cmds in Detail\7f304342
+Node: Functions Commands\7f305460
+Node: Variables Commands\7f308476
+Node: Typed Functions\7f310574
+Node: Typed Variables\7f314129
+Node: Abstract Objects\7f316124
+Node: Data Types\7f321362
+Node: Def Cmd Conventions\7f322629
+Node: Sample Function Definition\7f323200
+Node: Footnotes\7f326054
+Node: Footnotes-Footnotes\7f326446
+Ref: Footnotes-Footnote-1\7f326512
+Node: Footnote Commands\7f326792
+Node: Footnote Commands-Footnotes\7f328297
+Ref: Footnote Commands-Footnote-1\7f328379
+Node: Footnote Styles\7f328415
+Node: Conditionals\7f330990
+Node: Conditional Commands\7f331805
+Node: Conditional Not Commands\7f333298
+Node: Raw Formatter Commands\7f334052
+Node: set clear value\7f335890
+Node: ifset ifclear\7f336699
+Node: value\7f339877
+Node: value Example\7f341301
+Node: Macros\7f342891
+Node: Defining Macros\7f343600
+Node: Invoking Macros\7f344697
+Node: Format/Print Hardcopy\7f345811
+Node: Use TeX\7f347652
+Node: Format with tex/texindex\7f348280
+Node: Format with texi2dvi\7f351929
+Node: Print with lpr\7f352528
+Node: Within Emacs\7f353390
+Node: Texinfo Mode Printing\7f354317
+Node: Compile-Command\7f357730
+Node: Requirements Summary\7f358626
+Node: Preparing for TeX\7f359947
+Node: Overfull hboxes\7f362744
+Node: smallbook\7f364311
+Node: A4 Paper\7f365839
+Node: Cropmarks and Magnification\7f367074
+Node: Create an Info File\7f369025
+Node: makeinfo advantages\7f370332
+Node: Invoking makeinfo\7f371248
+Node: makeinfo options\7f371944
+Node: Pointer Validation\7f377437
+Node: makeinfo in Emacs\7f378789
+Node: texinfo-format commands\7f381359
+Node: Batch Formatting\7f382644
+Node: Tag and Split Files\7f383868
+Node: Install an Info File\7f387225
+Node: Directory file\7f388047
+Node: New Info File\7f389910
+Node: Other Info Directories\7f390979
+Node: Installing Dir Entries\7f394202
+Node: Invoking install-info\7f396204
+Node: Command List\7f398628
+Node: Tips\7f436618
+Node: Sample Texinfo File\7f447987
+Node: Sample Permissions\7f450046
+Node: Inserting Permissions\7f451109
+Node: ifinfo Permissions\7f453423
+Node: Titlepage Permissions\7f455025
+Node: Include Files\7f456283
+Node: Using Include Files\7f457390
+Node: texinfo-multiple-files-update\7f459351
+Node: Include File Requirements\7f461718
+Node: Sample Include File\7f462969
+Node: Include Files Evolution\7f464454
+Node: Headings\7f466431
+Node: Headings Introduced\7f467088
+Node: Heading Format\7f468976
+Node: Heading Choice\7f471434
+Node: Custom Headings\7f472812
+Node: Catching Mistakes\7f477148
+Node: makeinfo Preferred\7f478457
+Node: Debugging with Info\7f479362
+Node: Debugging with TeX\7f482709
+Node: Using texinfo-show-structure\7f486990
+Node: Using occur\7f490095
+Node: Running Info-Validate\7f491638
+Node: Using Info-validate\7f492705
+Node: Unsplit\7f494557
+Node: Tagifying\7f495615
+Node: Splitting\7f496477
+Node: Refilling Paragraphs\7f498103
+Node: Refilling Paragraphs-Footnotes\7f499777
+Ref: Refilling Paragraphs-Footnote-1\7f499865
+Node: Command Syntax\7f500028
+Node: Obtaining TeX\7f503005
+Node: Command and Variable Index\7f505128
+Node: Concept Index\7f528865
 \1f
 End Tag Table
index c45b639..8cd9c48 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.6 from
+This is ../info/texinfo.info, produced by makeinfo version 4.8 from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
@@ -553,8 +553,8 @@ Licenses that accompany them.
 \1f
 File: texinfo.info,  Node: Overview,  Next: Texinfo Mode,  Prev: Copying,  Up: Top
 
-Overview of Texinfo
-*******************
+1 Overview of Texinfo
+*********************
 
 "Texinfo"(1) (*note Overview-Footnote-1::) is a documentation system
 that uses a single source file to produce both on-line information and
@@ -645,8 +645,8 @@ written.
 \1f
 File: texinfo.info,  Node: Info Files,  Next: Printed Books,  Prev: Using Texinfo,  Up: Overview
 
-Info files
-==========
+1.1 Info files
+==============
 
 An Info file is a Texinfo file formatted so that the Info documentation
 reading program can operate on it.  (`makeinfo' and
@@ -730,8 +730,8 @@ higher level node as its `Next' pointer.
 \1f
 File: texinfo.info,  Node: Printed Books,  Next: Formatting Commands,  Prev: Info Files,  Up: Overview
 
-Printed Books
-=============
+1.2 Printed Books
+=================
 
 A Texinfo file can be formatted and typeset as a printed book or manual.
 To do this, you need TeX, a powerful, sophisticated typesetting program
@@ -792,8 +792,8 @@ distribution.
 \1f
 File: texinfo.info,  Node: Formatting Commands,  Next: Conventions,  Prev: Printed Books,  Up: Overview
 
-@-commands
-==========
+1.3 @-commands
+==============
 
 In a Texinfo file, the commands that tell TeX how to typeset the
 printed manual and tell `makeinfo' and `texinfo-format-buffer' how to
@@ -865,8 +865,8 @@ which led to the meaning of `argument' as a disputation.
 \1f
 File: texinfo.info,  Node: Conventions,  Next: Comments,  Prev: Formatting Commands,  Up: Overview
 
-General Syntactic Conventions
-=============================
+1.4 General Syntactic Conventions
+=================================
 
 All printable ASCII characters except `@', `{' and `}' can appear in a
 Texinfo file and stand for themselves.  `@' is the escape character
@@ -918,8 +918,8 @@ you cannot use in TeX.  Similarly for `@ifhtml ... @end ifhtml',
 \1f
 File: texinfo.info,  Node: Comments,  Next: Minimum,  Prev: Conventions,  Up: Overview
 
-Comments
-========
+1.5 Comments
+============
 
 You can write comments in a Texinfo file that will not appear in either
 the Info file or the printed manual by using the `@comment' command
@@ -931,7 +931,7 @@ the `@comment' or `@c' in the middle of a line, and only the text that
 follows after the `@comment' or `@c' command does not appear; but some
 commands, such as `@settitle' and `@setfilename', work on a whole line.
 You cannot use `@comment' or `@c' in a line beginning with such a
-command.)
+command.)  
 
   You can write long stretches of text that will not appear in either
 the Info file or the printed manual by using the `@ignore' and `@end
@@ -941,13 +941,13 @@ two commands does not appear in the processed output.  You can use
 `@ignore' and `@end ignore' for writing comments.  Often, `@ignore' and
 `@end ignore' is used to enclose a part of the copying permissions that
 applies to the Texinfo source file of a document, but not to the Info
-or printed version of the document.
+or printed version of the document.  
 
 \1f
 File: texinfo.info,  Node: Minimum,  Next: Six Parts,  Prev: Comments,  Up: Overview
 
-What a Texinfo File Must Have
-=============================
+1.6 What a Texinfo File Must Have
+=================================
 
 By convention, the names of Texinfo files end with one of the
 extensions `.texinfo', `.texi', or `.tex'.  The longer extension is
@@ -1003,8 +1003,8 @@ line at the end.
 \1f
 File: texinfo.info,  Node: Six Parts,  Next: Short Sample,  Prev: Minimum,  Up: Overview
 
-Six Parts of a Texinfo File
-===========================
+1.7 Six Parts of a Texinfo File
+===============================
 
 Generally, a Texinfo file contains more than the minimal beginning and
 end--it usually contains six parts:
@@ -1043,8 +1043,8 @@ end--it usually contains six parts:
 \1f
 File: texinfo.info,  Node: Short Sample,  Next: Acknowledgements,  Prev: Six Parts,  Up: Overview
 
-A Short Sample Texinfo File
-===========================
+1.8 A Short Sample Texinfo File
+===============================
 
 Here is a complete but very short Texinfo file, in six parts.  The first
 three parts of the file, from `\input texinfo' through to `@end
@@ -1068,7 +1068,7 @@ file and the title used in the header.
      @setfilename sample.info
      @settitle Sample Document
      @c %**end of header
-     
+
      @setchapternewpage odd
 
 Part 2: Summary Description and Copyright
@@ -1079,7 +1079,7 @@ printed document.
 
      @ifinfo
      This is a short example of a complete Texinfo file.
-     
+
      Copyright @copyright{} 1990 Free Software Foundation, Inc.
      @end ifinfo
 
@@ -1092,7 +1092,7 @@ The titlepage segment does not appear in the Info file.
      @sp 10
      @comment The title is printed in a large font.
      @center @titlefont{Sample Title}
-     
+
      @c The following two commands start the copyright page.
      @page
      @vskip 0pt plus 1filll
@@ -1126,20 +1126,20 @@ chapter containing an enumerated list.
      @comment node-name,     next,          previous, up
      @chapter First Chapter
      @cindex Sample index entry
-     
+
      This is the contents of the first chapter.
      @cindex Another sample index entry
-     
+
      Here is a numbered list.
-     
+
      @enumerate
      @item
      This is the first item.
-     
+
      @item
      This is the second item.
      @end enumerate
-     
+
      The @code{makeinfo} and @code{texinfo-format-buffer}
      commands transform a Texinfo file such as this into
      an Info file; and @TeX{} typesets it for a printed
@@ -1156,9 +1156,9 @@ document.
      @node    Concept Index,    ,  First Chapter, Top
      @comment node-name,    next,  previous,      up
      @unnumbered Concept Index
-     
+
      @printindex cp
-     
+
      @contents
      @bye
 
@@ -1183,8 +1183,8 @@ Here is what the contents of the first chapter of the sample look like:
 \1f
 File: texinfo.info,  Node: Acknowledgements,  Prev: Short Sample,  Up: Overview
 
-Acknowledgements
-================
+1.9 Acknowledgements
+====================
 
 Richard M. Stallman wrote Edition 1.0 of this manual.
 Robert J. Chassell revised and extended it, starting with Edition 1.1.
@@ -1208,8 +1208,8 @@ messages.
 \1f
 File: texinfo.info,  Node: Texinfo Mode,  Next: Beginning a File,  Prev: Overview,  Up: Top
 
-Using Texinfo Mode
-******************
+2 Using Texinfo Mode
+********************
 
 You may edit a Texinfo file with any text editor you choose.  A Texinfo
 file is no different from any other ASCII file.  However, GNU Emacs
@@ -1265,8 +1265,8 @@ frequently used @-commands and for creating node pointers and menus.
 \1f
 File: texinfo.info,  Node: Emacs Editing,  Next: Inserting,  Prev: Texinfo Mode Overview,  Up: Texinfo Mode
 
-The Usual GNU Emacs Editing Commands
-====================================
+2.1 The Usual GNU Emacs Editing Commands
+========================================
 
 In most cases, the usual Text mode commands work the same in Texinfo
 mode as they do in Text mode.  Texinfo mode adds new editing commands
@@ -1305,8 +1305,8 @@ ones.
 \1f
 File: texinfo.info,  Node: Inserting,  Next: Showing the Structure,  Prev: Emacs Editing,  Up: Texinfo Mode
 
-Inserting Frequently Used Commands
-==================================
+2.2 Inserting Frequently Used Commands
+======================================
 
 Texinfo mode provides commands to insert various frequently used
 @-commands into the buffer.  You can use these commands to save
@@ -1419,8 +1419,8 @@ different words.
 \1f
 File: texinfo.info,  Node: Showing the Structure,  Next: Updating Nodes and Menus,  Prev: Inserting,  Up: Texinfo Mode
 
-Showing the Section Structure of a File
-=======================================
+2.3 Showing the Section Structure of a File
+===========================================
 
 You can show the section structure of a Texinfo file by using the `C-c
 C-s' command (`texinfo-show-structure').  This command shows the
@@ -1470,8 +1470,8 @@ information about the page commands.
 \1f
 File: texinfo.info,  Node: Updating Nodes and Menus,  Next: Info Formatting,  Prev: Showing the Structure,  Up: Texinfo Mode
 
-Updating Nodes and Menus
-========================
+2.4 Updating Nodes and Menus
+============================
 
 Texinfo mode provides commands for automatically creating or updating
 menus and node pointers.  The commands are called "update" commands
@@ -1638,8 +1638,8 @@ for more information.)
 \1f
 File: texinfo.info,  Node: Updating Requirements,  Next: Other Updating Commands,  Prev: Updating Commands,  Up: Updating Nodes and Menus
 
-Updating Requirements
----------------------
+2.4.1 Updating Requirements
+---------------------------
 
 To use the updating commands, you must organize the Texinfo file
 hierarchically with chapters, sections, subsections, and the like.
@@ -1689,8 +1689,8 @@ information about `makeinfo'.)  However, both `makeinfo' and the
 \1f
 File: texinfo.info,  Node: Other Updating Commands,  Prev: Updating Requirements,  Up: Updating Nodes and Menus
 
-Other Updating Commands
------------------------
+2.4.2 Other Updating Commands
+-----------------------------
 
 In addition to the five major updating commands, Texinfo mode possesses
 several less frequently used updating commands:
@@ -1755,8 +1755,8 @@ several less frequently used updating commands:
 \1f
 File: texinfo.info,  Node: Info Formatting,  Next: Printing,  Prev: Updating Nodes and Menus,  Up: Texinfo Mode
 
-Formatting for Info
-===================
+2.5 Formatting for Info
+=======================
 
 Texinfo mode provides several commands for formatting part or all of a
 Texinfo file for Info.  Often, when you are writing a document, you
@@ -1801,8 +1801,8 @@ include a line that has `@setfilename' in its header.
 \1f
 File: texinfo.info,  Node: Printing,  Next: Texinfo Mode Summary,  Prev: Info Formatting,  Up: Texinfo Mode
 
-Formatting and Printing
-=======================
+2.6 Formatting and Printing
+===========================
 
 Typesetting and printing a Texinfo file is a multi-step process in which
 you first create a file for printing (called a DVI file), and then
@@ -1855,8 +1855,8 @@ related commands, such as `tex-show-print-queue'.
 \1f
 File: texinfo.info,  Node: Texinfo Mode Summary,  Prev: Printing,  Up: Texinfo Mode
 
-Texinfo Mode Summary
-====================
+2.7 Texinfo Mode Summary
+========================
 
 In Texinfo mode, each set of commands has default keybindings that
 begin with the same keys.  All the commands that are custom-created for
@@ -1880,7 +1880,7 @@ is quick to type.)
      C-c C-c {       Insert braces.
      C-c C-c ]
      C-c C-c }       Move out of enclosing braces.
-     
+
      C-c C-c C-d     Insert a node's section title
                      in the space for the description
                      in a menu entry line.
@@ -1902,7 +1902,7 @@ used to update every node and menu in a file as well.
      C-c C-u m
      M-x texinfo-master-menu
                      Create or update a master menu.
-     
+
      C-u C-c C-u m   With `C-u' as a prefix argument, first
                      create or update all nodes and regular
                      menus, and then create a master menu.
@@ -1926,10 +1926,10 @@ To update both nodes and menus at the same time, precede `C-c C-u C-a'
 with `C-u'.
 
      C-c C-u C-m     Make or update a menu.
-     
+
      C-c C-u C-a     Make or update all
                      menus in a buffer.
-     
+
      C-u C-c C-u C-a With `C-u' as a prefix argument,
                      first create or update all nodes and
                      then create or update all menus.
@@ -1984,24 +1984,24 @@ they are rarely used.
                      Insert missing `@node' lines in region.
                      With `C-u' as a prefix argument,
                      use section titles as node names.
-     
+
      M-x texinfo-multiple-files-update
                      Update a multi-file document.
                      With `C-u 2' as a prefix argument,
                      create or update all nodes and menus
                      in all included files first.
-     
+
      M-x texinfo-indent-menu-description
                      Indent descriptions.
-     
+
      M-x texinfo-sequential-node-update
                      Insert node pointers in strict sequence.
 
 \1f
 File: texinfo.info,  Node: Beginning a File,  Next: Ending a File,  Prev: Texinfo Mode,  Up: Top
 
-Beginning a Texinfo File
-************************
+3 Beginning a Texinfo File
+**************************
 
 Certain pieces of information must be provided at the beginning of a
 Texinfo file, such as the name of the file and the title of the
@@ -2055,8 +2055,8 @@ this information must be given twice.
 \1f
 File: texinfo.info,  Node: Sample Beginning,  Next: Header,  Prev: Four Parts,  Up: Beginning a File
 
-Sample Texinfo File Beginning
-=============================
+3.1 Sample Texinfo File Beginning
+=================================
 
 The following sample shows what is needed.
 
@@ -2066,44 +2066,44 @@ The following sample shows what is needed.
      @settitle NAME-OF-MANUAL
      @setchapternewpage odd
      @c %**end of header
-     
+
      @ifinfo
      This file documents ...
-     
+
      Copyright YEAR COPYRIGHT-OWNER
-     
+
      Permission is granted to ...
      @end ifinfo
-     
+
      @c  This title page illustrates only one of the
      @c  two methods of forming a title page.
-     
+
      @titlepage
      @title NAME-OF-MANUAL-WHEN-PRINTED
      @subtitle SUBTITLE-IF-ANY
      @subtitle SECOND-SUBTITLE
      @author AUTHOR
-     
+
      @c  The following two commands
      @c  start the copyright page.
      @page
      @vskip 0pt plus 1filll
      Copyright @copyright{} YEAR COPYRIGHT-OWNER
-     
+
      Published by ...
-     
+
      Permission is granted to ...
      @end titlepage
-     
+
      @node Top, Overview, , (dir)
-     
+
      @ifinfo
      This document describes ...
-     
+
      This document applies to version ...
      of the program named ...
      @end ifinfo
-     
+
      @menu
      * Copying::          Your rights and freedoms.
      * First Chapter::    Getting started ...
@@ -2111,7 +2111,7 @@ The following sample shows what is needed.
        ...
        ...
      @end menu
-     
+
      @node    First Chapter, Second Chapter, top,      top
      @comment node-name,     next,           previous, up
      @chapter First Chapter
@@ -2120,8 +2120,8 @@ The following sample shows what is needed.
 \1f
 File: texinfo.info,  Node: Header,  Next: Info Summary and Permissions,  Prev: Sample Beginning,  Up: Beginning a File
 
-The Texinfo File Header
-=======================
+3.2 The Texinfo File Header
+===========================
 
 Texinfo files start with at least three lines that provide Info and TeX
 with necessary information.  These are the `\input texinfo' line, the
@@ -2156,8 +2156,8 @@ or else like this:
 \1f
 File: texinfo.info,  Node: First Line,  Next: Start of Header,  Prev: Header,  Up: Header
 
-The First Line of a Texinfo File
---------------------------------
+3.2.1 The First Line of a Texinfo File
+--------------------------------------
 
 Every Texinfo file that is to be the top-level input to TeX must begin
 with a line that looks like this:
@@ -2181,8 +2181,8 @@ This line serves two functions:
 \1f
 File: texinfo.info,  Node: Start of Header,  Next: setfilename,  Prev: First Line,  Up: Header
 
-Start of Header
----------------
+3.2.2 Start of Header
+---------------------
 
 Write a start-of-header line on the second line of a Texinfo file.
 Follow the start-of-header line with `@setfilename' and `@settitle'
@@ -2203,8 +2203,8 @@ comment is accidentally taken for a start-of-header line.
 \1f
 File: texinfo.info,  Node: setfilename,  Next: settitle,  Prev: Start of Header,  Up: Header
 
-`@setfilename'
---------------
+3.2.3 `@setfilename'
+--------------------
 
 In order to serve as the primary input file for either `makeinfo' or
 TeX, a Texinfo file must contain a line that looks like this:
@@ -2245,8 +2245,8 @@ Preparing to Use TeX: Preparing for TeX.).
 \1f
 File: texinfo.info,  Node: settitle,  Next: setchapternewpage,  Prev: setfilename,  Up: Header
 
-`@settitle'
------------
+3.2.4 `@settitle'
+-----------------
 
 In order to be made into a printed manual, a Texinfo file must contain
 a line that looks like this:
@@ -2291,8 +2291,8 @@ this process.
 \1f
 File: texinfo.info,  Node: setchapternewpage,  Next: paragraphindent,  Prev: settitle,  Up: Header
 
-`@setchapternewpage'
---------------------
+3.2.5 `@setchapternewpage'
+--------------------------
 
 In a book or a manual, text is usually printed on both sides of the
 paper, chapters start on right-hand pages, and right-hand pages have
@@ -2357,8 +2357,8 @@ you write an `@setchapternewpage odd' command for double-sided printing.
 \1f
 File: texinfo.info,  Node: paragraphindent,  Next: End of Header,  Prev: setchapternewpage,  Up: Header
 
-Paragraph Indenting
--------------------
+3.2.6 Paragraph Indenting
+-------------------------
 
 The Info formatting commands may insert spaces at the beginning of the
 first line of each paragraph, thereby indenting that paragraph.  You
@@ -2394,8 +2394,8 @@ Paragraphs::, for a detailed description of what goes on.
 \1f
 File: texinfo.info,  Node: End of Header,  Prev: paragraphindent,  Up: Header
 
-End of Header
--------------
+3.2.7 End of Header
+-------------------
 
 Follow the header lines with an end-of-header line.  An end-of-header
 line looks like this:
@@ -2418,8 +2418,8 @@ variables that you can change.
 \1f
 File: texinfo.info,  Node: Info Summary and Permissions,  Next: Titlepage & Copyright Page,  Prev: Header,  Up: Beginning a File
 
-Summary and Copying Permissions for Info
-========================================
+3.3 Summary and Copying Permissions for Info
+============================================
 
 The title page and the copyright page appear only in the printed copy of
 the manual; therefore, the same information must be inserted in a
@@ -2444,8 +2444,8 @@ using Info, except when using the advanced Info command `g *'.
 \1f
 File: texinfo.info,  Node: Titlepage & Copyright Page,  Next: The Top Node,  Prev: Info Summary and Permissions,  Up: Beginning a File
 
-The Title and Copyright Pages
-=============================
+3.4 The Title and Copyright Pages
+=================================
 
 A manual's name and author are usually printed on a title page.
 Sometimes copyright information is printed on the title page as well;
@@ -2479,8 +2479,8 @@ standard text for the copyright permissions.
 \1f
 File: texinfo.info,  Node: titlepage,  Next: titlefont center sp,  Prev: Titlepage & Copyright Page,  Up: Titlepage & Copyright Page
 
-`@titlepage'
-------------
+3.4.1 `@titlepage'
+------------------
 
 Start the material for the title page and following copyright page with
 `@titlepage' on a line by itself and end it with `@end titlepage' on a
@@ -2531,8 +2531,8 @@ to both the documentation and the software with the same words.
 \1f
 File: texinfo.info,  Node: titlefont center sp,  Next: title subtitle author,  Prev: titlepage,  Up: Titlepage & Copyright Page
 
-`@titlefont', `@center', and `@sp'
-----------------------------------
+3.4.2 `@titlefont', `@center', and `@sp'
+----------------------------------------
 
 You can use the `@titlefont', `@sp', and `@center' commands to create a
 title page for a printed document.  (This is the first of the two
@@ -2577,8 +2577,8 @@ for more information about the `@sp' command.)
 \1f
 File: texinfo.info,  Node: title subtitle author,  Next: Copyright & Permissions,  Prev: titlefont center sp,  Up: Titlepage & Copyright Page
 
-`@title', `@subtitle', and `@author'
-------------------------------------
+3.4.3 `@title', `@subtitle', and `@author'
+------------------------------------------
 
 You can use the `@title', `@subtitle', and `@author' commands to create
 a title page in which the vertical and horizontal spacing is done for
@@ -2647,8 +2647,8 @@ Contrast this form with the form of a title page written using the
 \1f
 File: texinfo.info,  Node: Copyright & Permissions,  Next: end titlepage,  Prev: title subtitle author,  Up: Titlepage & Copyright Page
 
-Copyright Page and Permissions
-------------------------------
+3.4.4 Copyright Page and Permissions
+------------------------------------
 
 By international treaty, the copyright notice for a book should be
 either on the title page or on the back of the title page.  The
@@ -2693,8 +2693,8 @@ header since this text appears only in the printed manual and the
 \1f
 File: texinfo.info,  Node: end titlepage,  Next: headings on off,  Prev: Copyright & Permissions,  Up: Titlepage & Copyright Page
 
-Heading Generation
-------------------
+3.4.5 Heading Generation
+------------------------
 
 An `@end titlepage' command on a line by itself not only marks the end
 of the title and copyright pages, but also causes TeX to start
@@ -2729,8 +2729,8 @@ printing and no `@setchapternewpage' command for single-sided printing.
 \1f
 File: texinfo.info,  Node: headings on off,  Prev: end titlepage,  Up: Titlepage & Copyright Page
 
-The `@headings' Command
------------------------
+3.4.6 The `@headings' Command
+-----------------------------
 
 The `@headings' command is rarely used.  It specifies what kind of page
 headings and footings to print on each page.  Usually, this is
@@ -2785,8 +2785,8 @@ which would otherwise cause TeX to print page headings.
 \1f
 File: texinfo.info,  Node: The Top Node,  Next: Software Copying Permissions,  Prev: Titlepage & Copyright Page,  Up: Beginning a File
 
-The `Top' Node and Master Menu
-==============================
+3.5 The `Top' Node and Master Menu
+==================================
 
 The `Top' node is the node from which you enter an Info file.
 
@@ -2817,7 +2817,7 @@ File: texinfo.info,  Node: Title of Top Node,  Next: Master Menu Parts,  Prev: T
 
   Sometimes, you will want to place an `@top' sectioning command line
 containing the title of the document immediately after the `@node Top'
-line (*note The `@top' Sectioning Command: makeinfo top command., for
+line (*note The `@top' Sectioning Command: makeinfo top command, for
 more information).
 
   For example, the beginning of the Top node of this manual contains an
@@ -2826,17 +2826,17 @@ information.  It looks like this:
 
      ...
      @end titlepage
-     
+
      @ifinfo
      @node Top, Copying, , (dir)
      @top Texinfo
-     
+
      Texinfo is a documentation system...
-     
+
      This is edition...
      ...
      @end ifinfo
-     
+
      @menu
      * Copying::                 Texinfo is freely
                                    redistributable.
@@ -2853,8 +2853,8 @@ chapter.
 \1f
 File: texinfo.info,  Node: Master Menu Parts,  Prev: Title of Top Node,  Up: The Top Node
 
-Parts of a Master Menu
-----------------------
+3.5.1 Parts of a Master Menu
+----------------------------
 
 A "master menu" is a detailed main menu listing all the nodes in a file.
 
@@ -2895,20 +2895,20 @@ information.)
      * Command and Variable Index::
                              An entry for each @-command.
      * Concept Index::       An entry for each concept.
-     
+
      @detailmenu
       --- The Detailed Node Listing ---
-     
+
      Overview of Texinfo
-     
+
      * Info Files::          What is an Info file?
      * Printed Manuals::     Characteristics of
                                a printed manual.
      ...
      ...
-     
+
      Using Texinfo Mode
-     
+
      * Info on a Region::    Formatting part of a file
                                for Info.
      ...
@@ -2919,8 +2919,8 @@ information.)
 \1f
 File: texinfo.info,  Node: Software Copying Permissions,  Prev: The Top Node,  Up: Beginning a File
 
-Software Copying Permissions
-============================
+3.6 Software Copying Permissions
+================================
 
 If the Texinfo file has a section containing the "General Public
 License" and the distribution information and a warranty disclaimer for
@@ -2943,8 +2943,8 @@ The `@unnumbered' and `@appendix' Commands: unnumbered & appendix.)
 \1f
 File: texinfo.info,  Node: Ending a File,  Next: Structuring,  Prev: Beginning a File,  Up: Top
 
-Ending a Texinfo File
-*********************
+4 Ending a Texinfo File
+***********************
 
 The end of a Texinfo file should include the commands that create
 indices and generate detailed and summary tables of contents.  And it
@@ -2956,9 +2956,9 @@ TeX.
      @node    Concept Index,     , Variables Index, Top
      @c        node-name,    next, previous,        up
      @unnumbered Concept Index
-     
+
      @printindex cp
-     
+
      @contents
      @bye
 
@@ -2972,8 +2972,8 @@ TeX.
 \1f
 File: texinfo.info,  Node: Printing Indices & Menus,  Next: Contents,  Prev: Ending a File,  Up: Ending a File
 
-Index Menus and Printing an Index
-=================================
+4.1 Index Menus and Printing an Index
+=====================================
 
 To print an index means to include it as part of a manual or Info file.
 This does not happen automatically just because you use `@cindex' or
@@ -3009,15 +3009,15 @@ Precede the `@unnumbered' command with an `@node' line.
      @node Variable Index, Concept Index, Function Index, Top
      @comment    node-name,         next,       previous, up
      @unnumbered Variable Index
-     
+
      @printindex vr
-     
+
      @node     Concept Index,     , Variable Index, Top
      @comment      node-name, next,       previous, up
      @unnumbered Concept Index
-     
+
      @printindex cp
-     
+
      @summarycontents
      @contents
      @bye
@@ -3028,8 +3028,8 @@ that makes it easiest to find.)
 \1f
 File: texinfo.info,  Node: Contents,  Next: File End,  Prev: Printing Indices & Menus,  Up: Ending a File
 
-Generating a Table of Contents
-==============================
+4.2 Generating a Table of Contents
+==================================
 
 The `@chapter', `@section', and other structuring commands supply the
 information to make up a table of contents, but they do not cause an
@@ -3084,8 +3084,8 @@ commands.
 \1f
 File: texinfo.info,  Node: File End,  Prev: Contents,  Up: Ending a File
 
-`@bye' File Ending
-==================
+4.3 `@bye' File Ending
+======================
 
 An `@bye' command terminates TeX or Info formatting.  None of the
 formatting commands see any of the file following `@bye'.  The `@bye'
@@ -3101,8 +3101,8 @@ Compile-Command, for more information.
 \1f
 File: texinfo.info,  Node: Structuring,  Next: Nodes,  Prev: Ending a File,  Up: Top
 
-Chapter Structuring
-*******************
+5 Chapter Structuring
+*********************
 
 The "chapter structuring" commands divide a document into a hierarchy of
 chapters, sections, subsections, and subsubsections.  These commands
@@ -3140,8 +3140,8 @@ heading at the top of each node--but you don't need to.
 \1f
 File: texinfo.info,  Node: Tree Structuring,  Next: Structuring Command Types,  Prev: Structuring,  Up: Structuring
 
-Tree Structure of Sections
-==========================
+5.1 Tree Structure of Sections
+==============================
 
 A Texinfo file is usually structured like a book with chapters,
 sections, subsections, and the like.  This structure can be visualized
@@ -3176,8 +3176,8 @@ chapters. (*Note Nodes::, and see *Note Menus::.)
 \1f
 File: texinfo.info,  Node: Structuring Command Types,  Next: makeinfo top,  Prev: Tree Structuring,  Up: Structuring
 
-Types of Structuring Commands
-=============================
+5.2 Types of Structuring Commands
+=================================
 
 The chapter structuring commands fall into four groups or series, each
 of which contains structuring commands corresponding to the
@@ -3218,7 +3218,7 @@ that are listed in the table of contents of a printed book or manual.
                                                             No new pages
      Numbered       Unnumbered       Lettered and numbered  Unnumbered
      In contents    In contents          In contents        Not in contents
-     
+
                     @top                                    @majorheading
      @chapter       @unnumbered          @appendix          @chapheading
      @section       @unnumberedsec       @appendixsec       @heading
@@ -3228,8 +3228,8 @@ that are listed in the table of contents of a printed book or manual.
 \1f
 File: texinfo.info,  Node: makeinfo top,  Next: chapter,  Prev: Structuring Command Types,  Up: Structuring
 
-`@top'
-======
+5.3 `@top'
+==========
 
 The `@top' command is a special sectioning command that you use only
 after an `@node Top' line at the beginning of a Texinfo file.  The
@@ -3241,8 +3241,8 @@ information, see *Note The `@top' Command: makeinfo top command.
 \1f
 File: texinfo.info,  Node: chapter,  Next: unnumbered & appendix,  Prev: makeinfo top,  Up: Structuring
 
-`@chapter'
-==========
+5.4 `@chapter'
+==============
 
 `@chapter' identifies a chapter in the document.  Write the command at
 the beginning of a line and follow it on the same line by the title of
@@ -3270,8 +3270,8 @@ kind of stylistic choice is not usually offered by Texinfo.
 \1f
 File: texinfo.info,  Node: unnumbered & appendix,  Next: majorheading & chapheading,  Prev: chapter,  Up: Structuring
 
-`@unnumbered', `@appendix'
-==========================
+5.5 `@unnumbered', `@appendix'
+==============================
 
 Use the `@unnumbered' command to create a chapter that appears in a
 printed manual without chapter numbers of any kind.  Use the
@@ -3289,8 +3289,8 @@ the same line by the title, as you would if you were creating a chapter.
 \1f
 File: texinfo.info,  Node: majorheading & chapheading,  Next: section,  Prev: unnumbered & appendix,  Up: Structuring
 
-`@majorheading', `@chapheading'
-===============================
+5.6 `@majorheading', `@chapheading'
+===================================
 
 The `@majorheading' and `@chapheading' commands put chapter-like
 headings in the body of a document.
@@ -3310,8 +3310,8 @@ a line of asterisks underneath.  (*Note `@chapter': chapter.)
 \1f
 File: texinfo.info,  Node: section,  Next: unnumberedsec appendixsec heading,  Prev: majorheading & chapheading,  Up: Structuring
 
-`@section'
-==========
+5.7 `@section'
+==============
 
 In a printed manual, an `@section' command identifies a numbered
 section within a chapter.  The section title appears in the table of
@@ -3340,8 +3340,8 @@ in Info.
 \1f
 File: texinfo.info,  Node: unnumberedsec appendixsec heading,  Next: subsection,  Prev: section,  Up: Structuring
 
-`@unnumberedsec', `@appendixsec', `@heading'
-============================================
+5.8 `@unnumberedsec', `@appendixsec', `@heading'
+================================================
 
 The `@unnumberedsec', `@appendixsec', and `@heading' commands are,
 respectively, the unnumbered, appendix-like, and heading-like
@@ -3355,7 +3355,7 @@ equivalents of the `@section' command.  (*Note `@section': section.)
 `@appendixsec'
 `@appendixsection'
      `@appendixsection' is a longer spelling of the `@appendixsec'
-     command; the two are synonymous.
+     command; the two are synonymous.  
 
      Conventionally, the `@appendixsec' or `@appendixsection' command
      is used only within appendices.
@@ -3368,8 +3368,8 @@ equivalents of the `@section' command.  (*Note `@section': section.)
 \1f
 File: texinfo.info,  Node: subsection,  Next: unnumberedsubsec appendixsubsec subheading,  Prev: unnumberedsec appendixsec heading,  Up: Structuring
 
-The `@subsection' Command
-=========================
+5.9 The `@subsection' Command
+=============================
 
 Subsections are to sections as sections are to chapters.  (*Note
 `@section': section.)  In Info, subsection titles are underlined with
@@ -3388,8 +3388,8 @@ and are numbered three levels deep.
 \1f
 File: texinfo.info,  Node: unnumberedsubsec appendixsubsec subheading,  Next: subsubsection,  Prev: subsection,  Up: Structuring
 
-The `@subsection'-like Commands
-===============================
+5.10 The `@subsection'-like Commands
+====================================
 
 The `@unnumberedsubsec', `@appendixsubsec', and `@subheading' commands
 are, respectively, the unnumbered, appendix-like, and heading-like
@@ -3408,8 +3408,8 @@ these commands produce headings that appear in the table of contents.
 \1f
 File: texinfo.info,  Node: subsubsection,  Next: Raise/lower sections,  Prev: unnumberedsubsec appendixsubsec subheading,  Up: Structuring
 
-The `subsub' Commands
-=====================
+5.11 The `subsub' Commands
+==========================
 
 The fourth and lowest level sectioning commands in Texinfo are the
 `subsub' commands.  They are:
@@ -3450,8 +3450,8 @@ produces
 \1f
 File: texinfo.info,  Node: Raise/lower sections,  Prev: subsubsection,  Up: Structuring
 
-`@raisesections' and `@lowersections'
-=====================================
+5.12 `@raisesections' and `@lowersections'
+==========================================
 
 The `@raisesections' and `@lowersections' commands raise and lower the
 hierarchical level of chapters, sections, subsections and the like.
@@ -3470,7 +3470,7 @@ formatted as if they were `@subsection' commands, and so on.
 structuring hierarchy:
 
        Change           To
-     
+
      @subsection     @section,
      @section        @chapter,
      @heading        @chapheading,
@@ -3480,7 +3480,7 @@ structuring hierarchy:
 structuring hierarchy:
 
        Change           To
-     
+
      @chapter        @section,
      @subsection     @subsubsection,
      @heading        @subheading,
@@ -3511,8 +3511,8 @@ commands.
 \1f
 File: texinfo.info,  Node: Nodes,  Next: Menus,  Prev: Structuring,  Up: Top
 
-Nodes
-*****
+6 Nodes
+*******
 
 "Nodes" are the primary segments of a Texinfo file.  They do not
 themselves impose a hierarchic or any other kind of structure on a file.
@@ -3565,8 +3565,8 @@ matching structure in the Info output.
 \1f
 File: texinfo.info,  Node: Node Menu Illustration,  Next: node,  Prev: Two Paths,  Up: Nodes
 
-Node and Menu Illustration
-==========================
+6.1 Node and Menu Illustration
+==============================
 
 Here is a copy of the diagram shown earlier that illustrates a Texinfo
 file with three chapters, each of which contains two sections.
@@ -3649,8 +3649,8 @@ an `@chapter' line, and then by indexing lines.
 \1f
 File: texinfo.info,  Node: node,  Next: makeinfo Pointer Creation,  Prev: Node Menu Illustration,  Up: Nodes
 
-The `@node' Command
-===================
+6.2 The `@node' Command
+=======================
 
 A "node" is a segment of text that begins at an `@node' command and
 continues until the next `@node' command.  The definition of node is
@@ -3728,8 +3728,8 @@ first node of a Texinfo file.
 \1f
 File: texinfo.info,  Node: Writing a Node,  Next: Node Line Tips,  Prev: Node Names,  Up: node
 
-How to Write an `@node' Line
-----------------------------
+6.2.1 How to Write an `@node' Line
+----------------------------------
 
 The easiest way to write an `@node' line is to write `@node' at the
 beginning of a line and then the name of the node, like this:
@@ -3773,8 +3773,8 @@ for people to find the node.
 \1f
 File: texinfo.info,  Node: Node Line Tips,  Next: Node Line Requirements,  Prev: Writing a Node,  Up: node
 
-`@node' Line Tips
------------------
+6.2.2 `@node' Line Tips
+-----------------------
 
 Here are three suggestions:
 
@@ -3795,8 +3795,8 @@ Here are three suggestions:
 \1f
 File: texinfo.info,  Node: Node Line Requirements,  Next: First Node,  Prev: Node Line Tips,  Up: node
 
-`@node' Line Requirements
--------------------------
+6.2.3 `@node' Line Requirements
+-------------------------------
 
 Here are several requirements for `@node' lines:
 
@@ -3842,8 +3842,8 @@ Here are several requirements for `@node' lines:
 \1f
 File: texinfo.info,  Node: First Node,  Next: makeinfo top command,  Prev: Node Line Requirements,  Up: node
 
-The First Node
---------------
+6.2.4 The First Node
+--------------------
 
 The first node of a Texinfo file is the "Top" node, except in an
 included file (*note Include Files::).  The Top node contains the main
@@ -3876,8 +3876,8 @@ an Info file in the `info' directory.
 \1f
 File: texinfo.info,  Node: makeinfo top command,  Next: Top Node Summary,  Prev: First Node,  Up: node
 
-The `@top' Sectioning Command
------------------------------
+6.2.5 The `@top' Sectioning Command
+-----------------------------------
 
 A special sectioning command, `@top', has been created for use with the
 `@node Top' line.  The `@top' sectioning command tells `makeinfo' that
@@ -3901,8 +3901,8 @@ menus.
 \1f
 File: texinfo.info,  Node: Top Node Summary,  Prev: makeinfo top command,  Up: node
 
-The `Top' Node Summary
-----------------------
+6.2.6 The `Top' Node Summary
+----------------------------
 
 You can help readers by writing a summary in the `Top' node, after the
 `@top' line, before the main or master menu.  The summary should
@@ -3930,8 +3930,8 @@ contain this information: see *Note `@titlepage': titlepage.)
 \1f
 File: texinfo.info,  Node: makeinfo Pointer Creation,  Prev: node,  Up: Nodes
 
-Creating Pointers with `makeinfo'
-=================================
+6.3 Creating Pointers with `makeinfo'
+=====================================
 
 The `makeinfo' program has a feature for automatically creating node
 pointers for a hierarchically organized file that lacks them.
@@ -3959,8 +3959,8 @@ who do not use GNU Emacs for writing Texinfo documents.
 \1f
 File: texinfo.info,  Node: Menus,  Next: Cross References,  Prev: Nodes,  Up: Top
 
-Menus
-*****
+7 Menus
+*******
 
 "Menus" contain pointers to subordinate nodes.(1) (*note
 Menus-Footnote-1::) In Info, you use menus to go to such nodes.  Menus
@@ -4021,7 +4021,7 @@ and title appear only in the Info file, not the printed document.
      * Other Info Files::          How to refer to a different
                                      Info file.
      @end menu
-     
+
      @node Menu Location, Writing a Menu, , Menus
      @ifinfo
      @heading Menus Need Short Nodes
@@ -4034,8 +4034,8 @@ another is at the beginning of the "Cross References" chapter.
 \1f
 File: texinfo.info,  Node: Writing a Menu,  Next: Menu Parts,  Prev: Menu Location,  Up: Menus
 
-Writing a Menu
-==============
+7.1 Writing a Menu
+==================
 
 A menu consists of an `@menu' command on a line by itself followed by
 menu entry lines or menu comment lines and then by an `@end menu'
@@ -4045,7 +4045,7 @@ command on a line by itself.
 
      @menu
      Larger Units of Text
-     
+
      * Files::                       All about handling files.
      * Multiples: Buffers.           Multiple buffers; editing
                                        several files at once.
@@ -4061,8 +4061,8 @@ lines starting with `* ' are menu entries.
 \1f
 File: texinfo.info,  Node: Menu Parts,  Next: Less Cluttered Menu Entry,  Prev: Writing a Menu,  Up: Menus
 
-The Parts of a Menu
-===================
+7.2 The Parts of a Menu
+=======================
 
 A menu entry has three parts, only the second of which is required:
 
@@ -4093,8 +4093,8 @@ with the first (and all others).  It's up to you.
 \1f
 File: texinfo.info,  Node: Less Cluttered Menu Entry,  Next: Menu Example,  Prev: Menu Parts,  Up: Menus
 
-Less Cluttered Menu Entry
-=========================
+7.3 Less Cluttered Menu Entry
+=============================
 
 When the menu entry name and node name are the same, you can write the
 name immediately after the asterisk and space at the beginning of the
@@ -4114,8 +4114,8 @@ possible, since it reduces visual clutter in the menu.
 \1f
 File: texinfo.info,  Node: Menu Example,  Next: Other Info Files,  Prev: Less Cluttered Menu Entry,  Up: Menus
 
-A Menu Example
-==============
+7.4 A Menu Example
+==================
 
 A menu looks like this in Texinfo:
 
@@ -4127,7 +4127,7 @@ A menu looks like this in Texinfo:
 This produces:
 
      * menu:
-     
+
      * menu entry name: Node name.   A short description.
      * Node name::                   This form is preferred.
 
@@ -4135,7 +4135,7 @@ This produces:
 
      @menu
      Larger Units of Text
-     
+
      * Files::                       All about handling files.
      * Multiples: Buffers.           Multiple buffers; editing
                                        several files at once.
@@ -4145,7 +4145,7 @@ This produces:
 
      * menu:
      Larger Units of Text
-     
+
      * Files::                       All about handling files.
      * Multiples: Buffers.           Multiple buffers; editing
                                        several files at once.
@@ -4163,8 +4163,8 @@ to Other Info Files: Other Info Files.).
 \1f
 File: texinfo.info,  Node: Other Info Files,  Prev: Menu Example,  Up: Menus
 
-Referring to Other Info Files
-=============================
+7.5 Referring to Other Info Files
+=================================
 
 You can create a menu entry that enables a reader in Info to go to a
 node in another Info file by writing the file name in parentheses just
@@ -4211,8 +4211,8 @@ menus that refer to other files.  You must write such menus by hand.
 \1f
 File: texinfo.info,  Node: Cross References,  Next: Marking Text,  Prev: Menus,  Up: Top
 
-Cross References
-****************
+8 Cross References
+******************
 
 "Cross references" are used to refer the reader to other parts of the
 same or different Texinfo files.  In Texinfo, nodes are the places to
@@ -4270,8 +4270,8 @@ cross references.
 \1f
 File: texinfo.info,  Node: Cross Reference Commands,  Next: Cross Reference Parts,  Prev: References,  Up: Cross References
 
-Different Cross Reference Commands
-==================================
+8.1 Different Cross Reference Commands
+======================================
 
 There are four different cross reference commands:
 
@@ -4300,8 +4300,8 @@ to which to point.   *Note `@cite': cite.)
 \1f
 File: texinfo.info,  Node: Cross Reference Parts,  Next: xref,  Prev: Cross Reference Commands,  Up: Cross References
 
-Parts of a Cross Reference
-==========================
+8.2 Parts of a Cross Reference
+==============================
 
 A cross reference command requires only one argument, which is the name
 of the node to which it refers.  But a cross reference command may
@@ -4381,8 +4381,8 @@ within parentheses, and so on.
 \1f
 File: texinfo.info,  Node: xref,  Next: Top Node Naming,  Prev: Cross Reference Parts,  Up: Cross References
 
-`@xref'
-=======
+8.3 `@xref'
+===========
 
 The `@xref' command generates a cross reference for the beginning of a
 sentence.  The Info formatting commands convert it into an Info cross
@@ -4448,8 +4448,8 @@ cross reference that looks somewhat different.
 \1f
 File: texinfo.info,  Node: One Argument,  Next: Two Arguments,  Prev: Reference Syntax,  Up: xref
 
-`@xref' with One Argument
--------------------------
+8.3.1 `@xref' with One Argument
+-------------------------------
 
 The simplest form of `@xref' takes one argument, the name of another
 node in the same Info file.    The Info formatters produce output that
@@ -4487,8 +4487,8 @@ comma, and then by the clause, which is followed by a period.)
 \1f
 File: texinfo.info,  Node: Two Arguments,  Next: Three Arguments,  Prev: One Argument,  Up: xref
 
-`@xref' with Two Arguments
---------------------------
+8.3.2 `@xref' with Two Arguments
+--------------------------------
 
 With two arguments, the second is used as the name of the Info cross
 reference, while the first is still the name of the node to which the
@@ -4531,8 +4531,8 @@ comma, and then by the clause, which is followed by a period.)
 \1f
 File: texinfo.info,  Node: Three Arguments,  Next: Four and Five Arguments,  Prev: Two Arguments,  Up: xref
 
-`@xref' with Three Arguments
-----------------------------
+8.3.3 `@xref' with Three Arguments
+----------------------------------
 
 A third argument replaces the node name in the TeX output.  The third
 argument should be the name of the section in the printed output, or
@@ -4601,8 +4601,8 @@ are different.
 \1f
 File: texinfo.info,  Node: Four and Five Arguments,  Prev: Three Arguments,  Up: xref
 
-`@xref' with Four and Five Arguments
-------------------------------------
+8.3.4 `@xref' with Four and Five Arguments
+------------------------------------------
 
 In a cross reference, a fourth argument specifies the name of another
 Info file, different from the file in which the reference appears, and
@@ -4679,8 +4679,8 @@ fifth.
 \1f
 File: texinfo.info,  Node: Top Node Naming,  Next: ref,  Prev: xref,  Up: Cross References
 
-Naming a `Top' Node
-===================
+8.4 Naming a `Top' Node
+=======================
 
 In a cross reference, you must always name a node.  This means that in
 order to refer to a whole manual, you must identify the `Top' node by
@@ -4709,8 +4709,8 @@ the name of the first section of the manual.
 \1f
 File: texinfo.info,  Node: ref,  Next: pxref,  Prev: Top Node Naming,  Up: Cross References
 
-`@ref'
-======
+8.5 `@ref'
+==========
 
 `@ref' is nearly the same as `@xref' except that it does not generate a
 `See' in the printed output, just the reference itself.  This makes it
@@ -4755,8 +4755,8 @@ in a printed document, and the following in Info:
 \1f
 File: texinfo.info,  Node: pxref,  Next: inforef,  Prev: ref,  Up: Cross References
 
-`@pxref'
-========
+8.6 `@pxref'
+============
 
 The parenthetical reference command, `@pxref', is nearly the same as
 `@xref', but you use it _only_ inside parentheses and you do _not_ type
@@ -4823,8 +4823,8 @@ and
 \1f
 File: texinfo.info,  Node: inforef,  Next: uref,  Prev: pxref,  Up: Cross References
 
-`@inforef'
-==========
+8.7 `@inforef'
+==============
 
 `@inforef' is used for cross references to Info files for which there
 are no printed manuals.  Even in a printed manual, `@inforef' generates
@@ -4879,8 +4879,8 @@ printed works for which no Info form exists.  *Note `@cite': cite.
 \1f
 File: texinfo.info,  Node: uref,  Prev: inforef,  Up: Cross References
 
-`@uref{URL[, DISPLAYED-TEXT]}'
-==============================
+8.8 `@uref{URL[, DISPLAYED-TEXT]}'
+==================================
 
 `@uref' produces a reference to a uniform resource locator (URL).  It
 takes one mandatory argument, the URL, and one optional argument, the
@@ -4912,8 +4912,8 @@ and (in HTML):
 \1f
 File: texinfo.info,  Node: Marking Text,  Next: Quotations and Examples,  Prev: Cross References,  Up: Top
 
-Marking Words and Phrases
-*************************
+9 Marking Words and Phrases
+***************************
 
 In Texinfo, you can mark words and phrases in a variety of ways.  The
 Texinfo formatters use this information to determine how to highlight
@@ -4929,8 +4929,8 @@ program.  Also, you can emphasize text.
 \1f
 File: texinfo.info,  Node: Indicating,  Next: Emphasis,  Prev: Marking Text,  Up: Marking Text
 
-Indicating Definitions, Commands, etc.
-======================================
+9.1 Indicating Definitions, Commands, etc.
+==========================================
 
 Texinfo has commands for indicating just what kind of object a piece of
 text refers to.  For example, metasyntactic variables are marked by
@@ -5013,8 +5013,8 @@ construct an index of functions if you had not already made the entries.
 \1f
 File: texinfo.info,  Node: code,  Next: kbd,  Prev: Useful Highlighting,  Up: Indicating
 
-`@code'{SAMPLE-CODE}
---------------------
+9.1.1 `@code'{SAMPLE-CODE}
+--------------------------
 
 Use the `@code' command to indicate text that is a piece of a program
 and which consists of entire syntactic tokens.  Enclose the text in
@@ -5080,8 +5080,8 @@ produces this in the printed manual:
 \1f
 File: texinfo.info,  Node: kbd,  Next: key,  Prev: code,  Up: Indicating
 
-`@kbd'{KEYBOARD-CHARACTERS}
----------------------------
+9.1.2 `@kbd'{KEYBOARD-CHARACTERS}
+---------------------------------
 
 Use the `@kbd' command for characters of input to be typed by users.
 For example, to refer to the characters `M-a', write
@@ -5101,7 +5101,7 @@ characters they are supposed to type from those the computer outputs.
 control the font switching with the `@kbdinputstyle' command.  This
 command has no effect on Info output.  Write this command at the
 beginning of a line with a single word as an argument, one of the
-following:
+following: 
 `code'
      Always use the same font for `@kbd' as `@code'.
 
@@ -5139,8 +5139,8 @@ input, write `@key{SPC}' for it.)
 \1f
 File: texinfo.info,  Node: key,  Next: samp,  Prev: kbd,  Up: Indicating
 
-`@key'{KEY-NAME}
-----------------
+9.1.3 `@key'{KEY-NAME}
+----------------------
 
 Use the `@key' command for the conventional name for a key on a
 keyboard, as in:
@@ -5155,7 +5155,7 @@ more keys that are described by name.
 
      @kbd{C-x @key{ESC}}
 
-  Here is a list of the recommended names for keys:
+  Here is a list of the recommended names for keys: 
 
     SPC
           Space
@@ -5199,8 +5199,8 @@ modifier key in isolation, use the `@key' command.  For example, write
 \1f
 File: texinfo.info,  Node: samp,  Next: var,  Prev: key,  Up: Indicating
 
-`@samp'{TEXT}
--------------
+9.1.4 `@samp'{TEXT}
+-------------------
 
 Use the `@samp' command to indicate text that is a literal example or
 `sample' of a sequence of characters in a file, string, pattern, etc.
@@ -5241,8 +5241,8 @@ This produces:
 \1f
 File: texinfo.info,  Node: var,  Next: file,  Prev: samp,  Up: Indicating
 
-`@var'{METASYNTACTIC-VARIABLE}
-------------------------------
+9.1.5 `@var'{METASYNTACTIC-VARIABLE}
+------------------------------------
 
 Use the `@var' command to indicate metasyntactic variables.  A
 "metasyntactic variable" is something that stands for another piece of
@@ -5296,8 +5296,8 @@ the `<...>' format if you wish.)
 \1f
 File: texinfo.info,  Node: file,  Next: dfn,  Prev: var,  Up: Indicating
 
-`@file'{FILE-NAME}
-------------------
+9.1.6 `@file'{FILE-NAME}
+------------------------
 
 Use the `@file' command to indicate text that is the name of a file,
 buffer, or directory, or is the name of a node in Info.  You can also
@@ -5317,8 +5317,8 @@ produces
 \1f
 File: texinfo.info,  Node: dfn,  Next: cite,  Prev: file,  Up: Indicating
 
-`@dfn'{TERM}
-------------
+9.1.7 `@dfn'{TERM}
+------------------
 
 Use the `@dfn' command to identify the introductory or defining use of
 a technical term.  Use the command only in passages whose purpose is to
@@ -5341,8 +5341,8 @@ information of a definition--it should make the meaning clear.
 \1f
 File: texinfo.info,  Node: cite,  Next: url,  Prev: dfn,  Up: Indicating
 
-`@cite'{REFERENCE}
-------------------
+9.1.8 `@cite'{REFERENCE}
+------------------------
 
 Use the `@cite' command for the name of a book that lacks a companion
 Info file. The command produces italics in the printed manual, and
@@ -5355,8 +5355,8 @@ Info.  *Note `@xref': xref.)
 \1f
 File: texinfo.info,  Node: url,  Next: email,  Prev: cite,  Up: Indicating
 
-`@url'{UNIFORM-RESOURCE-LOCATOR}
---------------------------------
+9.1.9 `@url'{UNIFORM-RESOURCE-LOCATOR}
+--------------------------------------
 
 Use the `@url' to indicate a uniform resource locator on the World Wide
 Web.  This is analogous to `@file', `@var', etc., and is purely for
@@ -5370,8 +5370,8 @@ for example URL's which do not actually exist.  For example:
 \1f
 File: texinfo.info,  Node: email,  Prev: url,  Up: Indicating
 
-`@email'{EMAIL-ADDRESS[, DISPLAYED-TEXT]}
------------------------------------------
+9.1.10 `@email'{EMAIL-ADDRESS[, DISPLAYED-TEXT]}
+------------------------------------------------
 
 Use the `@email' command to indicate an electronic mail address.  It
 takes one mandatory argument, the address, and one optional argument,
@@ -5384,16 +5384,15 @@ example:
 
      Send bug reports to @email{bug-texinfo@@gnu.org}.
      Send suggestions to the @email{bug-texinfo@@gnu.org, same place}.
-
-produces
+  produces
      Send bug reports to <bug-texinfo@gnu.org>.
      Send suggestions to the same place <bug-texinfo@gnu.org>.
 
 \1f
 File: texinfo.info,  Node: Emphasis,  Prev: Indicating,  Up: Marking Text
 
-Emphasizing Text
-================
+9.2 Emphasizing Text
+====================
 
 Usually, Texinfo changes the font to mark words in the text according to
 what category the words belong to; an example is the `@code' command.
@@ -5414,8 +5413,8 @@ regular use.
 \1f
 File: texinfo.info,  Node: emph & strong,  Next: Smallcaps,  Prev: Emphasis,  Up: Emphasis
 
-`@emph'{TEXT} and `@strong'{TEXT}
----------------------------------
+9.2.1 `@emph'{TEXT} and `@strong'{TEXT}
+---------------------------------------
 
 The `@emph' and `@strong' commands are for emphasis; `@strong' is
 stronger.  In printed output, `@emph' produces _italics_ and `@strong'
@@ -5447,8 +5446,8 @@ text.
 \1f
 File: texinfo.info,  Node: Smallcaps,  Next: Fonts,  Prev: emph & strong,  Up: Emphasis
 
-`@sc'{TEXT}: The Small Caps Font
---------------------------------
+9.2.2 `@sc'{TEXT}: The Small Caps Font
+--------------------------------------
 
 Use the `@sc' command to set text in the printed output in a small caps
 font and set text in the Info file in upper case letters.
@@ -5481,8 +5480,8 @@ subsequent elements of a list (the CDR of the list), but you should use
 \1f
 File: texinfo.info,  Node: Fonts,  Next: Customized Highlighting,  Prev: Smallcaps,  Up: Emphasis
 
-Fonts for Printing, Not Info
-----------------------------
+9.2.3 Fonts for Printing, Not Info
+----------------------------------
 
 Texinfo provides four font commands that specify font changes in the
 printed manual but have no effect in the Info file.  `@i' requests
@@ -5513,8 +5512,8 @@ language.
 \1f
 File: texinfo.info,  Node: Customized Highlighting,  Prev: Fonts,  Up: Emphasis
 
-Customized Highlighting
------------------------
+9.2.4 Customized Highlighting
+-----------------------------
 
 You can use regular TeX commands inside of `@iftex' ...  `@end iftex'
 to create your own customized highlighting commands for Texinfo.  The
@@ -5598,8 +5597,8 @@ File: texinfo.info,  Node: Customized Highlighting-Footnotes,  Up: Customized Hi
 \1f
 File: texinfo.info,  Node: Quotations and Examples,  Next: Lists and Tables,  Prev: Marking Text,  Up: Top
 
-Quotations and Examples
-***********************
+10 Quotations and Examples
+**************************
 
 Quotations and examples are blocks of text consisting of one or more
 whole paragraphs that are set off from the bulk of the text and treated
@@ -5610,7 +5609,7 @@ differently.  They are usually indented.
 an `@end' command that is also at the beginning of a line by itself.
 For instance, you begin an example by writing `@example' by itself at
 the beginning of a line and end the example by writing `@end example'
-on a line by itself, at the beginning of that line.
+on a line by itself, at the beginning of that line.  
 
 * Menu:
 
@@ -5631,8 +5630,8 @@ on a line by itself, at the beginning of that line.
 \1f
 File: texinfo.info,  Node: Block Enclosing Commands,  Next: quotation,  Prev: Quotations and Examples,  Up: Quotations and Examples
 
-The Block Enclosing Commands
-============================
+10.1 The Block Enclosing Commands
+=================================
 
 Here are commands for quotations and examples:
 
@@ -5685,8 +5684,8 @@ Cartouches Around Examples: cartouche.)
 \1f
 File: texinfo.info,  Node: quotation,  Next: example,  Prev: Block Enclosing Commands,  Up: Quotations and Examples
 
-`@quotation'
-============
+10.2 `@quotation'
+=================
 
 The text of a quotation is processed normally except that:
 
@@ -5721,8 +5720,8 @@ produces
 \1f
 File: texinfo.info,  Node: example,  Next: noindent,  Prev: quotation,  Up: Quotations and Examples
 
-`@example'
-==========
+10.3 `@example'
+===============
 
 The `@example' command is used to indicate an example that is not part
 of the running text, such as computer input or output.
@@ -5731,7 +5730,7 @@ of the running text, such as computer input or output.
      `@example' command
      and an `@end example' command.
      The text is indented but not filled.
-     
+
      In the printed manual, the text is typeset in a
      fixed-width font, and extra spaces and blank lines are
      significant.  In the Info file, an analogous result is
@@ -5776,8 +5775,8 @@ within sentences, not set off from preceding and following text.  *Note
 \1f
 File: texinfo.info,  Node: noindent,  Next: Lisp Example,  Prev: example,  Up: Quotations and Examples
 
-`@noindent'
-===========
+10.4 `@noindent'
+================
 
 An example or other inclusion can break a paragraph into segments.
 Ordinarily, the formatters indent text that follows an example as a new
@@ -5789,7 +5788,7 @@ beginning of a line by itself preceding the continuation text.
      @example
      This is an example
      @end example
-     
+
      @noindent
      This line is not indented.  As you can see, the
      beginning of the line is fully flush left with the line
@@ -5799,8 +5798,7 @@ beginning of a line by itself preceding the continuation text.
 produces
 
           This is an example
-     
-     
+
      This line is not indented.  As you can see, the
      beginning of the line is fully flush left with the line
      that follows after it.  (This whole example is between
@@ -5820,8 +5818,8 @@ necessary, since `@noindent' is a command used outside of paragraphs
 \1f
 File: texinfo.info,  Node: Lisp Example,  Next: smallexample & smalllisp,  Prev: noindent,  Up: Quotations and Examples
 
-`@lisp'
-=======
+10.5 `@lisp'
+============
 
 The `@lisp' command is used for Lisp code.  It is synonymous with the
 `@example' command.
@@ -5846,8 +5844,8 @@ similar fashion for C, Fortran, or other languages.
 \1f
 File: texinfo.info,  Node: smallexample & smalllisp,  Next: display,  Prev: Lisp Example,  Up: Quotations and Examples
 
-`@smallexample' and `@smalllisp'
-================================
+10.6 `@smallexample' and `@smalllisp'
+=====================================
 
 In addition to the regular `@example' and `@lisp' commands, Texinfo has
 two other "example-style" commands.  These are the `@smallexample' and
@@ -5889,8 +5887,8 @@ the `@smallbook' command.
 \1f
 File: texinfo.info,  Node: display,  Next: format,  Prev: smallexample & smalllisp,  Up: Quotations and Examples
 
-`@display'
-==========
+10.7 `@display'
+===============
 
 The `@display' command begins a kind of example.  It is like the
 `@example' command except that, in a printed manual, `@display' does
@@ -5905,8 +5903,8 @@ appeared in without the `@display' command.
 \1f
 File: texinfo.info,  Node: format,  Next: exdent,  Prev: display,  Up: Quotations and Examples
 
-`@format'
-=========
+10.8 `@format'
+==============
 
 The `@format' command is similar to `@example' except that, in the
 printed manual, `@format' does not select the fixed-width font and does
@@ -5920,8 +5918,8 @@ the `@format' command does not fill the text.
 \1f
 File: texinfo.info,  Node: exdent,  Next: flushleft & flushright,  Prev: format,  Up: Quotations and Examples
 
-`@exdent': Undoing a Line's Indentation
-=======================================
+10.9 `@exdent': Undoing a Line's Indentation
+============================================
 
 The `@exdent' command removes any indentation a line might have.  The
 command is written at the beginning of a line and applies only to the
@@ -5952,8 +5950,8 @@ normal width.
 \1f
 File: texinfo.info,  Node: flushleft & flushright,  Next: cartouche,  Prev: exdent,  Up: Quotations and Examples
 
-`@flushleft' and `@flushright'
-==============================
+10.10 `@flushleft' and `@flushright'
+====================================
 
 The `@flushleft' and `@flushright' commands line up the ends of lines
 on the left and right margins of a page, but do not fill the text.  The
@@ -5993,8 +5991,8 @@ produces
 \1f
 File: texinfo.info,  Node: cartouche,  Prev: flushleft & flushright,  Up: Quotations and Examples
 
-Drawing Cartouches Around Examples
-==================================
+10.11 Drawing Cartouches Around Examples
+========================================
 
 In a printed manual, the `@cartouche' command draws a box with rounded
 corners around its contents.  You can use this command to further
@@ -6020,8 +6018,8 @@ printed manual.
 \1f
 File: texinfo.info,  Node: Lists and Tables,  Next: Indices,  Prev: Quotations and Examples,  Up: Top
 
-Lists and Tables
-****************
+11 Lists and Tables
+*******************
 
 Texinfo has several ways of making lists and tables.  Lists can be
 bulleted or numbered; two-column tables can highlight the items in the
@@ -6055,7 +6053,7 @@ you write formatting information on the same line as the beginning
 and end the list with an `@end enumerate' command.  Begin an itemized
 list with an `@itemize' command, followed on the same line by a
 formatting command such as `@bullet', and end the list with an `@end
-itemize' command.
+itemize' command.  
 
   Precede each element of a list with an `@item' or `@itemx' command.
 
@@ -6094,8 +6092,8 @@ And here is a two-column table with the same items and their @-commands:
 \1f
 File: texinfo.info,  Node: itemize,  Next: enumerate,  Prev: Introducing Lists,  Up: Lists and Tables
 
-Making an Itemized List
-=======================
+11.1 Making an Itemized List
+============================
 
 The `@itemize' command produces sequences of indented paragraphs, with
 a bullet or other mark inside the left margin at the beginning of each
@@ -6114,7 +6112,7 @@ command, you may omit the `{}'.)
 
   Before each paragraph for which a mark in the margin is desired, write
 a line that says just `@item'.  Do not write any other text on this
-line.
+line.  
 
   Usually, you should put a blank line before an `@item'.  This puts a
 blank line in the Info file. (TeX inserts the proper interline
@@ -6128,7 +6126,7 @@ dot in TeX.
      @itemize @bullet
      @item
      Some text for foo.
-     
+
      @item
      Some text
      for bar.
@@ -6146,15 +6144,15 @@ list marked with dashes embedded in a list marked with bullets:
      @itemize @bullet
      @item
      First item.
-     
+
      @itemize @minus
      @item
      Inner item.
-     
+
      @item
      Second inner item.
      @end itemize
-     
+
      @item
      Second outer item.
      @end itemize
@@ -6172,8 +6170,8 @@ This produces:
 \1f
 File: texinfo.info,  Node: enumerate,  Next: Two-column Tables,  Prev: itemize,  Up: Lists and Tables
 
-Making a Numbered or Lettered List
-==================================
+11.2 Making a Numbered or Lettered List
+=======================================
 
 `@enumerate' is like `@itemize' (*note `@itemize': itemize.), except
 that the labels on the items are successive integers or letters instead
@@ -6199,7 +6197,7 @@ generally makes it easier to read the Info file.
      @enumerate
      @item
      Underlying causes.
-     
+
      @item
      Proximate causes.
      @end enumerate
@@ -6216,10 +6214,10 @@ This produces:
      @enumerate 3
      @item
      Predisposing causes.
-     
+
      @item
      Precipitating causes.
-     
+
      @item
      Perpetuating causes.
      @end enumerate
@@ -6262,8 +6260,8 @@ constructed using `@enumerate' with an argument of `a'.
 \1f
 File: texinfo.info,  Node: Two-column Tables,  Next: Multi-column Tables,  Prev: enumerate,  Up: Lists and Tables
 
-Making a Two-column Table
-=========================
+11.3 Making a Two-column Table
+==============================
 
 `@table' is similar to `@itemize' (*note `@itemize': itemize.), but
 allows you to specify a name or heading line for each item.  The
@@ -6312,7 +6310,7 @@ command.  Write the second column text on the line following the
 anything for an empty second column entry.)  You may write as many
 lines of supporting text as you wish, even several paragraphs.  But
 only text on the same line as the `@item' will be placed in the first
-column.
+column.  
 
   Normally, you should put a blank line before an `@item' line.  This
 puts a blank like in the Info file.  Except when the entries are very
@@ -6325,7 +6323,7 @@ column with an `@samp' command:
      @item foo
      This is the text for
      @samp{foo}.
-     
+
      @item bar
      Text for @samp{bar}.
      @end table
@@ -6344,8 +6342,8 @@ text, use the `@itemx' command.  (*Note `@itemx': itemx.)
 \1f
 File: texinfo.info,  Node: ftable vtable,  Next: itemx,  Prev: table,  Up: Two-column Tables
 
-`@ftable' and `@vtable'
------------------------
+11.3.1 `@ftable' and `@vtable'
+------------------------------
 
 The `@ftable' and `@vtable' commands are the same as the `@table'
 command except that `@ftable' automatically enters each of the items in
@@ -6368,8 +6366,8 @@ or `@end vtable' command on a line by itself.
 \1f
 File: texinfo.info,  Node: itemx,  Prev: ftable vtable,  Up: Two-column Tables
 
-`@itemx'
---------
+11.3.2 `@itemx'
+---------------
 
 Use the `@itemx' command inside a table when you have two or more first
 column entries for the same item, each of which should appear on a line
@@ -6402,8 +6400,8 @@ a two-column table.)
 \1f
 File: texinfo.info,  Node: Multi-column Tables,  Prev: Two-column Tables,  Up: Lists and Tables
 
-Multi-column Tables
-===================
+11.4 Multi-column Tables
+========================
 
 `@multitable' allows you to construct tables with any number of
 columns, with each column having any width you like.
@@ -6421,8 +6419,8 @@ completes the table.  Details in the sections below.
 \1f
 File: texinfo.info,  Node: Multitable Column Widths,  Next: Multitable Rows,  Prev: Multi-column Tables,  Up: Multi-column Tables
 
-Multitable Column Widths
-------------------------
+11.4.1 Multitable Column Widths
+-------------------------------
 
 You can define the column widths for a multitable in two ways: as
 fractions of the line length; or with a prototype row.  Mixing the two
@@ -6458,8 +6456,8 @@ entirely on the same line as the `@multitable' command.
 \1f
 File: texinfo.info,  Node: Multitable Rows,  Prev: Multitable Column Widths,  Up: Multi-column Tables
 
-Multitable Rows
----------------
+11.4.2 Multitable Rows
+----------------------
 
 After the `@multitable' command defining the column widths (see the
 previous section), you begin each row in the body of a multitable with
@@ -6503,8 +6501,8 @@ C-Mouse-2                                    In the mode line or scroll
 \1f
 File: texinfo.info,  Node: Indices,  Next: Insertions,  Prev: Lists and Tables,  Up: Top
 
-Creating Indices
-****************
+12 Creating Indices
+*******************
 
 Using Texinfo, you can generate indices without having to sort and
 collate entries manually.  In an index, the entries are listed in
@@ -6530,8 +6528,8 @@ purpose.  If you wish, you can define your own indices.
 \1f
 File: texinfo.info,  Node: Index Entries,  Next: Predefined Indices,  Prev: Indices,  Up: Indices
 
-Making Index Entries
-====================
+12.1 Making Index Entries
+=========================
 
 When you are making index entries, it is good practice to think of the
 different ways people may look for something.  Different people _do
@@ -6554,8 +6552,8 @@ index at the end of a book or creating an index menu in an Info file.
 \1f
 File: texinfo.info,  Node: Predefined Indices,  Next: Indexing Commands,  Prev: Index Entries,  Up: Indices
 
-Predefined Indices
-==================
+12.2 Predefined Indices
+=======================
 
 Texinfo provides six predefined indices:
 
@@ -6584,8 +6582,8 @@ Combining Indices::.
 \1f
 File: texinfo.info,  Node: Indexing Commands,  Next: Combining Indices,  Prev: Predefined Indices,  Up: Indices
 
-Defining the Entries of an Index
-================================
+12.3 Defining the Entries of an Index
+=====================================
 
 The data to make an index come from many individual indexing commands
 scattered throughout the Texinfo source file.  Each command says to add
@@ -6632,7 +6630,7 @@ case-sensitive, so use upper and lower case as required for them.
 font and entries for the other indices are printed in a small `@code'
 font.  You may change the way part of an entry is printed with the
 usual Texinfo commands, such as `@file' for file names and `@emph' for
-emphasis (*note Marking Text::).
+emphasis (*note Marking Text::).  
 
   The six indexing commands for predefined indices are:
 
@@ -6685,8 +6683,8 @@ Indices & Menus::.)
 \1f
 File: texinfo.info,  Node: Combining Indices,  Next: New Indices,  Prev: Indexing Commands,  Up: Indices
 
-Combining Indices
-=================
+12.4 Combining Indices
+======================
 
 Sometimes you will want to combine two disparate indices such as
 functions and concepts, perhaps because you have few enough of one of
@@ -6714,13 +6712,13 @@ enclose every one of them between the braces of `@code'.
 \1f
 File: texinfo.info,  Node: syncodeindex,  Next: synindex,  Prev: Combining Indices,  Up: Combining Indices
 
-`@syncodeindex'
----------------
+12.4.1 `@syncodeindex'
+----------------------
 
 When you want to combine functions and concepts into one index, you
 should index the functions with `@findex' and index the concepts with
 `@cindex', and use the `@syncodeindex' command to redirect the function
-index entries into the concept index.
+index entries into the concept index.  
 
   The `@syncodeindex' command takes two arguments; they are the name of
 the index to redirect, and the name of the index to redirect it to.
@@ -6773,8 +6771,8 @@ font as you would expect.
 \1f
 File: texinfo.info,  Node: synindex,  Prev: syncodeindex,  Up: Combining Indices
 
-`@synindex'
------------
+12.4.2 `@synindex'
+------------------
 
 The `@synindex' command is nearly the same as the `@syncodeindex'
 command, except that it does not put the `from' index  entries into the
@@ -6787,8 +6785,8 @@ index at the end of a book or creating an index menu in an Info file.
 \1f
 File: texinfo.info,  Node: New Indices,  Prev: Combining Indices,  Up: Indices
 
-Defining New Indices
-====================
+12.5 Defining New Indices
+=========================
 
 In addition to the predefined indices, you may use the `@defindex' and
 `@defcodeindex' commands to define new indices.  These commands create
@@ -6825,7 +6823,7 @@ predefined indices.  For example:
 
      @node Author Index, Subject Index, , Top
      @unnumbered Author Index
-     
+
      @printindex au
 
   The `@defcodeindex' is like the `@defindex' command, except that, in
@@ -6840,8 +6838,8 @@ commands (*note Header::).
 \1f
 File: texinfo.info,  Node: Insertions,  Next: Breaks,  Prev: Indices,  Up: Top
 
-Special Insertions
-******************
+13 Special Insertions
+*********************
 
 Texinfo provides several commands for inserting characters that have
 special meaning in Texinfo, such as braces, and for other graphic
@@ -6866,8 +6864,8 @@ elements that do not correspond to simple characters you can type.
 \1f
 File: texinfo.info,  Node: Braces Atsigns,  Next: Inserting Space,  Prev: Insertions,  Up: Insertions
 
-Inserting @ and Braces
-======================
+13.1 Inserting @ and Braces
+===========================
 
 `@' and curly braces are special characters in Texinfo.  To insert
 these characters so they appear in text, you must put an `@' in front
@@ -6883,8 +6881,8 @@ of these characters to prevent Texinfo from misinterpreting them.
 \1f
 File: texinfo.info,  Node: Inserting An Atsign,  Next: Inserting Braces,  Prev: Braces Atsigns,  Up: Braces Atsigns
 
-Inserting `@' with @@
----------------------
+13.1.1 Inserting `@' with @@
+----------------------------
 
 `@@' stands for a single `@' in either printed or Info output.
 
@@ -6893,8 +6891,8 @@ Inserting `@' with @@
 \1f
 File: texinfo.info,  Node: Inserting Braces,  Prev: Inserting An Atsign,  Up: Braces Atsigns
 
-Inserting `{' and `}'with @{ and @}
------------------------------------
+13.1.2 Inserting `{' and `}'with @{ and @}
+------------------------------------------
 
 `@{' stands for a single `{' in either printed or Info output.
 
@@ -6905,8 +6903,8 @@ Inserting `{' and `}'with @{ and @}
 \1f
 File: texinfo.info,  Node: Inserting Space,  Next: Inserting Accents,  Prev: Braces Atsigns,  Up: Insertions
 
-Inserting Space
-===============
+13.2 Inserting Space
+====================
 
 The following sections describe commands that control spacing of various
 kinds within and after sentences.
@@ -6921,8 +6919,8 @@ kinds within and after sentences.
 \1f
 File: texinfo.info,  Node: Not Ending a Sentence,  Next: Ending a Sentence,  Prev: Inserting Space,  Up: Inserting Space
 
-Not Ending a Sentence
----------------------
+13.2.1 Not Ending a Sentence
+----------------------------
 
 Depending on whether a period or exclamation point or question mark is
 inside or at the end of a sentence, less or more space is inserted after
@@ -6957,8 +6955,8 @@ Procedure".)
 \1f
 File: texinfo.info,  Node: Ending a Sentence,  Next: Multiple Spaces,  Prev: Not Ending a Sentence,  Up: Inserting Space
 
-Ending a Sentence
------------------
+13.2.2 Ending a Sentence
+------------------------
 
 Use `@.' instead of a period, `@!' instead of an exclamation point, and
 `@?' instead of a question mark at the end of a sentence that ends with
@@ -6987,8 +6985,8 @@ incompatible with some other formatting systems that use @-commands.
 \1f
 File: texinfo.info,  Node: Multiple Spaces,  Next: dmn,  Prev: Ending a Sentence,  Up: Inserting Space
 
-Multiple Spaces
----------------
+13.2.3 Multiple Spaces
+----------------------
 
 Ordinarily, TeX collapses multiple whitespace characters (space, tab,
 and newline) into a single space.  Info output, on the other hand,
@@ -7021,8 +7019,8 @@ produces
 \1f
 File: texinfo.info,  Node: dmn,  Prev: Multiple Spaces,  Up: Inserting Space
 
-`@dmn'{DIMENSION}: Format a Dimension
--------------------------------------
+13.2.4 `@dmn'{DIMENSION}: Format a Dimension
+--------------------------------------------
 
 At times, you may want to write `12pt' or `8.5in' with little or no
 space between the number and the abbreviation for the dimension.  You
@@ -7052,8 +7050,8 @@ here.  *Note Inserting Space::.
 \1f
 File: texinfo.info,  Node: Inserting Accents,  Next: Dots Bullets,  Prev: Inserting Space,  Up: Insertions
 
-Inserting Accents
-=================
+13.3 Inserting Accents
+======================
 
 Here is a table with the commands Texinfo provides for inserting
 floating accents.  The commands with non-alphabetic names do not take
@@ -7096,8 +7094,8 @@ commonly used in languages other than English.
 \1f
 File: texinfo.info,  Node: Dots Bullets,  Next: TeX and copyright,  Prev: Inserting Accents,  Up: Insertions
 
-Inserting Ellipsis, Dots, and Bullets
-=====================================
+13.4 Inserting Ellipsis, Dots, and Bullets
+==========================================
 
 An "ellipsis" (a line of dots) is not typeset as a string of periods,
 so a special command is used for ellipsis in Texinfo.  The `@bullet'
@@ -7116,8 +7114,8 @@ information.)
 \1f
 File: texinfo.info,  Node: dots,  Next: bullet,  Prev: Dots Bullets,  Up: Dots Bullets
 
-`@dots'{} (...)
----------------
+13.4.1 `@dots'{} (...)
+----------------------
 
 Use the `@dots{}' command to generate an ellipsis, which is three dots
 in a row, appropriately spaced, like this: `...'.  Do not simply write
@@ -7131,8 +7129,8 @@ ellipsis (four dots) ....
 \1f
 File: texinfo.info,  Node: bullet,  Prev: dots,  Up: Dots Bullets
 
-`@bullet'{} (*)
----------------
+13.4.2 `@bullet'{} (*)
+----------------------
 
 Use the `@bullet{}' command to generate a large round dot, or the
 closest possible thing to one.  In Info, an asterisk is used.
@@ -7145,8 +7143,8 @@ braces, because `@itemize' supplies them.  (*Note `@itemize': itemize.)
 \1f
 File: texinfo.info,  Node: TeX and copyright,  Next: pounds,  Prev: Dots Bullets,  Up: Insertions
 
-Inserting TeX and the Copyright Symbol
-======================================
+13.5 Inserting TeX and the Copyright Symbol
+===========================================
 
 The logo `TeX' is typeset in a special fashion and it needs an
 @-command.  The copyright symbol, `(C)', is also special.  Each of
@@ -7161,8 +7159,8 @@ whitespace between the name of the command and the braces.
 \1f
 File: texinfo.info,  Node: tex,  Next: copyright symbol,  Prev: TeX and copyright,  Up: TeX and copyright
 
-`@TeX'{} (TeX)
---------------
+13.5.1 `@TeX'{} (TeX)
+---------------------
 
 Use the `@TeX{}' command to generate `TeX'.  In a printed manual, this
 is a special logo that is different from three ordinary letters.  In
@@ -7172,8 +7170,8 @@ Texinfo commands in that the `T' and the `X' are in upper case.
 \1f
 File: texinfo.info,  Node: copyright symbol,  Prev: tex,  Up: TeX and copyright
 
-`@copyright'{} ((C))
---------------------
+13.5.2 `@copyright'{} ((C))
+---------------------------
 
 Use the `@copyright{}' command to generate `(C)'.  In a printed manual,
 this is a `c' inside a circle, and in Info, this is `(C)'.
@@ -7181,8 +7179,8 @@ this is a `c' inside a circle, and in Info, this is `(C)'.
 \1f
 File: texinfo.info,  Node: pounds,  Next: minus,  Prev: TeX and copyright,  Up: Insertions
 
-`@pounds{}' (#): Pounds Sterling
-================================
+13.6 `@pounds{}' (#): Pounds Sterling
+=====================================
 
 Use the `@pounds{}' command to generate `#'.  In a printed manual, this
 is the symbol for the currency pounds sterling.  In Info, it is a `#'.
@@ -7191,8 +7189,8 @@ Other currency symbols are unfortunately not available.
 \1f
 File: texinfo.info,  Node: minus,  Next: math,  Prev: pounds,  Up: Insertions
 
-`@minus'{} (-): Inserting a Minus Sign
-======================================
+13.7 `@minus'{} (-): Inserting a Minus Sign
+===========================================
 
 Use the `@minus{}' command to generate a minus sign.  In a fixed-width
 font, this is a single hyphen, but in a proportional font, the symbol
@@ -7200,10 +7198,10 @@ is the customary length for a minus sign--a little longer than a
 hyphen, shorter than an em-dash:
 
      `-' is a minus sign generated with `@minus{}',
-     
+
      `-' is a hyphen generated with the character `-',
-     
-     `---' is an em-dash for text.
+
+     `--' is an em-dash for text.
 
 In the fixed-width font used by Info, `@minus{}' is the same as a
 hyphen.
@@ -7213,13 +7211,13 @@ the width distinction is not made in the fixed-width font they use.
 
   When you use `@minus' to specify the mark beginning each entry in an
 itemized list, you do not need to type the braces (*note `@itemize':
-itemize..)
+itemize.)
 
 \1f
 File: texinfo.info,  Node: math,  Next: Glyphs,  Prev: minus,  Up: Insertions
 
-`@math' - Inserting Mathematical Expressions
-============================================
+13.8 `@math' - Inserting Mathematical Expressions
+=================================================
 
 You can write a short mathematical expression with the `@math' command.
 Write the mathematical expression between braces, like this:
@@ -7240,8 +7238,8 @@ to write the mathematical expression between one or two `$'
 \1f
 File: texinfo.info,  Node: Glyphs,  Next: Images,  Prev: math,  Up: Insertions
 
-Glyphs for Examples
-===================
+13.9 Glyphs for Examples
+========================
 
 In Texinfo, code is often illustrated in examples that are delimited by
 `@example' and `@end example', or by `@lisp' and `@end lisp'.  In such
@@ -7302,8 +7300,8 @@ error-->
 \1f
 File: texinfo.info,  Node: result,  Next: expansion,  Prev: Glyphs Summary,  Up: Glyphs
 
-`@result{}' (=>): Indicating Evaluation
----------------------------------------
+13.9.1 `@result{}' (=>): Indicating Evaluation
+----------------------------------------------
 
 Use the `@result{}' command to indicate the result of evaluating an
 expression.
@@ -7321,8 +7319,8 @@ may be read as "`(cdr '(1 2 3))' evaluates to `(2 3)'".
 \1f
 File: texinfo.info,  Node: expansion,  Next: Print Glyph,  Prev: result,  Up: Glyphs
 
-`@expansion{}' (==>): Indicating an Expansion
----------------------------------------------
+13.9.2 `@expansion{}' (==>): Indicating an Expansion
+----------------------------------------------------
 
 When an expression is a macro call, it expands into a new expression.
 You can indicate the result of the expansion with the `@expansion{}'
@@ -7356,8 +7354,8 @@ and `@result{}' commands are indented five spaces.
 \1f
 File: texinfo.info,  Node: Print Glyph,  Next: Error Glyph,  Prev: expansion,  Up: Glyphs
 
-`@print{}' (-|): Indicating Printed Output
-------------------------------------------
+13.9.3 `@print{}' (-|): Indicating Printed Output
+-------------------------------------------------
 
 Sometimes an expression will print output during its execution.  You
 can indicate the printed output with the `@print{}' command.
@@ -7385,8 +7383,8 @@ In a Texinfo source file, this example is written as follows:
 \1f
 File: texinfo.info,  Node: Error Glyph,  Next: Equivalence,  Prev: Print Glyph,  Up: Glyphs
 
-`@error{}' (error-->): Indicating an Error Message
---------------------------------------------------
+13.9.4 `@error{}' (error-->): Indicating an Error Message
+---------------------------------------------------------
 
 A piece of code may cause an error when you evaluate it.  You can
 designate the error message with the `@error{}' command.
@@ -7416,8 +7414,8 @@ evaluate the expression:
 \1f
 File: texinfo.info,  Node: Equivalence,  Next: Point Glyph,  Prev: Error Glyph,  Up: Glyphs
 
-`@equiv{}' (==): Indicating Equivalence
----------------------------------------
+13.9.5 `@equiv{}' (==): Indicating Equivalence
+----------------------------------------------
 
 Sometimes two expressions produce identical results.  You can indicate
 the exact equivalence of two forms with the `@equiv{}' command.
@@ -7441,8 +7439,8 @@ identical results to evaluating `(list 'keymap)'.
 \1f
 File: texinfo.info,  Node: Point Glyph,  Prev: Equivalence,  Up: Glyphs
 
-`@point{}' (-!-): Indicating Point in a Buffer
-----------------------------------------------
+13.9.6 `@point{}' (-!-): Indicating Point in a Buffer
+-----------------------------------------------------
 
 Sometimes you need to show an example of text in an Emacs buffer.  In
 such examples, the convention is to include the entire contents of the
@@ -7476,7 +7474,7 @@ after evaluating a Lisp command to insert the word `changed'.
      ---------- Buffer: foo ----------
      This is the @point{}contents of foo.
      ---------- Buffer: foo ----------
-     
+
      (insert "changed ")
           @result{} nil
      ---------- Buffer: foo ----------
@@ -7487,8 +7485,8 @@ after evaluating a Lisp command to insert the word `changed'.
 \1f
 File: texinfo.info,  Node: Images,  Prev: Glyphs,  Up: Insertions
 
-Inserting Images
-================
+13.10 Inserting Images
+======================
 
 You can insert an image in an external file with the `@image' command:
 
@@ -7549,8 +7547,8 @@ distribution and is available from `ftp://ftp.tug.org/tex/epsf.tex'.
 \1f
 File: texinfo.info,  Node: Breaks,  Next: Definition Commands,  Prev: Insertions,  Up: Top
 
-Making and Preventing Breaks
-****************************
+14 Making and Preventing Breaks
+*******************************
 
 Usually, a Texinfo file is processed both by TeX and by one of the Info
 formatting commands.  Line, paragraph, or page breaks sometimes occur
@@ -7616,8 +7614,8 @@ files do not have pages.
 \1f
 File: texinfo.info,  Node: Line Breaks,  Next: - and hyphenation,  Prev: Break Commands,  Up: Breaks
 
-`@*': Generate Line Breaks
-==========================
+14.1 `@*': Generate Line Breaks
+===============================
 
 The `@*' command forces a line break in both the printed manual and in
 Info.
@@ -7654,8 +7652,8 @@ across the whole page in an ugly manner.
 \1f
 File: texinfo.info,  Node: - and hyphenation,  Next: w,  Prev: Line Breaks,  Up: Breaks
 
-`@-' and `@hyphenation': Helping TeX hyphenate
-==============================================
+14.2 `@-' and `@hyphenation': Helping TeX hyphenate
+===================================================
 
 Although TeX's hyphenation algorithm is generally pretty good, it does
 miss useful hyphenation points from time to time.  (Or, far more
@@ -7674,7 +7672,6 @@ wish to help TeX out.  Texinfo supports two commands for this:
      Tell TeX how to hyphenate HY-PHEN-A-TED WORDS.  As shown, you put
      a `-' at each hyphenation point.  For example:
           @hyphenation{man-u-script man-u-scripts}
-
      TeX only uses the specified hyphenation points when the words
      match exactly, so give all necessary variants.
 
@@ -7683,8 +7680,8 @@ wish to help TeX out.  Texinfo supports two commands for this:
 \1f
 File: texinfo.info,  Node: w,  Next: sp,  Prev: - and hyphenation,  Up: Breaks
 
-`@w'{TEXT}: Prevent Line Breaks
-===============================
+14.3 `@w'{TEXT}: Prevent Line Breaks
+====================================
 
 `@w{TEXT}' outputs TEXT and prohibits line breaks within TEXT.
 
@@ -7706,8 +7703,8 @@ produces
 \1f
 File: texinfo.info,  Node: sp,  Next: page,  Prev: w,  Up: Breaks
 
-`@sp' N: Insert Blank Lines
-===========================
+14.4 `@sp' N: Insert Blank Lines
+================================
 
 A line beginning with and containing only `@sp N' generates N blank
 lines of space in both the printed manual and the Info file.  `@sp'
@@ -7722,8 +7719,8 @@ generates two blank lines.
 \1f
 File: texinfo.info,  Node: page,  Next: group,  Prev: sp,  Up: Breaks
 
-`@page': Start a New Page
-=========================
+14.5 `@page': Start a New Page
+==============================
 
 A line containing only `@page' starts a new page in a printed manual.
 The command has no effect on Info files since they are not paginated.
@@ -7733,8 +7730,8 @@ Texinfo file to start the copyright page.
 \1f
 File: texinfo.info,  Node: group,  Next: need,  Prev: page,  Up: Breaks
 
-`@group': Prevent Page Breaks
-=============================
+14.6 `@group': Prevent Page Breaks
+==================================
 
 The `@group' command (on a line by itself) is used inside an `@example'
 or similar construct to begin an unsplittable vertical group, which
@@ -7776,8 +7773,8 @@ get incomprehensible error messages in TeX.
 \1f
 File: texinfo.info,  Node: need,  Prev: group,  Up: Breaks
 
-`@need MILS': Prevent Page Breaks
-=================================
+14.7 `@need MILS': Prevent Page Breaks
+======================================
 
 A line containing only `@need N' starts a new page in a printed manual
 if fewer than N mils (thousandths of an inch) remain on the current
@@ -7797,8 +7794,8 @@ the bottoms of printed pages).
 \1f
 File: texinfo.info,  Node: Definition Commands,  Next: Footnotes,  Prev: Breaks,  Up: Top
 
-Definition Commands
-*******************
+15 Definition Commands
+**********************
 
 The `@deffn' command and the other "definition commands" enable you to
 describe functions, variables, macros, commands, user options, special
@@ -7829,86 +7826,3 @@ rather than the definition commands.
 * Def Cmd Conventions::         Conventions for writing definitions.
 * Sample Function Definition::
 
-\1f
-File: texinfo.info,  Node: Def Cmd Template,  Next: Optional Arguments,  Prev: Definition Commands,  Up: Definition Commands
-
-The Template for a Definition
-=============================
-
-The `@deffn' command is used for definitions of entities that resemble
-functions.  To write a definition using the `@deffn' command, write the
-`@deffn' command at the beginning of a line and follow it on the same
-line by the category of the entity, the name of the entity itself, and
-its arguments (if any).  Then write the body of the definition on
-succeeding lines.  (You may embed examples in the body.)  Finally, end
-the definition with an `@end deffn' command written on a line of its
-own.  (The other definition commands follow the same format.)
-
-  The template for a definition looks like this:
-
-     @deffn CATEGORY NAME ARGUMENTS...
-     BODY-OF-DEFINITION
-     @end deffn
-
-For example,
-
-     @deffn Command forward-word count
-     This command moves point forward @var{count} words
-     (or backward if @var{count} is negative). ...
-     @end deffn
-
-produces
-
-      - Command: forward-word count
-          This function moves point forward COUNT words (or backward if
-          COUNT is negative). ...
-
-  Capitalize the category name like a title.  If the name of the
-category contains spaces, as in the phrase `Interactive Command', write
-braces around it.  For example:
-
-     @deffn {Interactive Command} isearch-forward
-     ...
-     @end deffn
-
-Otherwise, the second word will be mistaken for the name of the entity.
-
-  Some of the definition commands are more general than others.  The
-`@deffn' command, for example, is the general definition command for
-functions and the like--for entities that may take arguments.  When you
-use this command, you specify the category to which the entity belongs.
-The `@deffn' command possesses three predefined, specialized
-variations, `@defun', `@defmac', and `@defspec', that specify the
-category for you: "Function", "Macro", and "Special Form" respectively.
-(In Lisp, a special form is an entity much like a function.)  The
-`@defvr' command also is accompanied by several predefined, specialized
-variations for describing particular kinds of variables.
-
-  The template for a specialized definition, such as `@defun', is
-similar to the template for a generalized definition, except that you
-do not need to specify the category:
-
-     @defun NAME ARGUMENTS...
-     BODY-OF-DEFINITION
-     @end defun
-
-Thus,
-
-     @defun buffer-end flag
-     This function returns @code{(point-min)} if @var{flag}
-     is less than 1, @code{(point-max)} otherwise.
-     ...
-     @end defun
-
-produces
-
-      - Function: buffer-end flag
-          This function returns `(point-min)' if FLAG is less than 1,
-          `(point-max)' otherwise.  ...
-
-*Note Sample Function Definition: Sample Function Definition, for a
-more detailed example of a function definition, including the use of
-`@example' inside the definition.
-
-  The other specialized commands work like `@defun'.
-
index cf8eff3..3f2fe6b 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.6 from
+This is ../info/texinfo.info, produced by makeinfo version 4.8 from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
@@ -33,10 +33,93 @@ versions, except that this permission notice may be stated in a
 translation approved by the Free Software Foundation.
 
 \1f
+File: texinfo.info,  Node: Def Cmd Template,  Next: Optional Arguments,  Prev: Definition Commands,  Up: Definition Commands
+
+15.1 The Template for a Definition
+==================================
+
+The `@deffn' command is used for definitions of entities that resemble
+functions.  To write a definition using the `@deffn' command, write the
+`@deffn' command at the beginning of a line and follow it on the same
+line by the category of the entity, the name of the entity itself, and
+its arguments (if any).  Then write the body of the definition on
+succeeding lines.  (You may embed examples in the body.)  Finally, end
+the definition with an `@end deffn' command written on a line of its
+own.  (The other definition commands follow the same format.)
+
+  The template for a definition looks like this:
+
+     @deffn CATEGORY NAME ARGUMENTS...
+     BODY-OF-DEFINITION
+     @end deffn
+
+For example,
+
+     @deffn Command forward-word count
+     This command moves point forward @var{count} words
+     (or backward if @var{count} is negative). ...
+     @end deffn
+
+produces
+
+      -- Command: forward-word count
+          This function moves point forward COUNT words (or backward if
+          COUNT is negative). ...
+
+  Capitalize the category name like a title.  If the name of the
+category contains spaces, as in the phrase `Interactive Command', write
+braces around it.  For example:
+
+     @deffn {Interactive Command} isearch-forward
+     ...
+     @end deffn
+
+Otherwise, the second word will be mistaken for the name of the entity.
+
+  Some of the definition commands are more general than others.  The
+`@deffn' command, for example, is the general definition command for
+functions and the like--for entities that may take arguments.  When you
+use this command, you specify the category to which the entity belongs.
+The `@deffn' command possesses three predefined, specialized
+variations, `@defun', `@defmac', and `@defspec', that specify the
+category for you: "Function", "Macro", and "Special Form" respectively.
+(In Lisp, a special form is an entity much like a function.)  The
+`@defvr' command also is accompanied by several predefined, specialized
+variations for describing particular kinds of variables.
+
+  The template for a specialized definition, such as `@defun', is
+similar to the template for a generalized definition, except that you
+do not need to specify the category:
+
+     @defun NAME ARGUMENTS...
+     BODY-OF-DEFINITION
+     @end defun
+
+Thus,
+
+     @defun buffer-end flag
+     This function returns @code{(point-min)} if @var{flag}
+     is less than 1, @code{(point-max)} otherwise.
+     ...
+     @end defun
+
+produces
+
+      -- Function: buffer-end flag
+          This function returns `(point-min)' if FLAG is less than 1,
+          `(point-max)' otherwise.  ...
+
+*Note Sample Function Definition: Sample Function Definition, for a
+more detailed example of a function definition, including the use of
+`@example' inside the definition.
+
+  The other specialized commands work like `@defun'.
+
+\1f
 File: texinfo.info,  Node: Optional Arguments,  Next: deffnx,  Prev: Def Cmd Template,  Up: Definition Commands
 
-Optional and Repeated Arguments
-===============================
+15.2 Optional and Repeated Arguments
+====================================
 
 Some entities take optional or repeated arguments, which may be
 specified by a distinctive glyph that uses square brackets and
@@ -54,7 +137,7 @@ list structure in Lisp.
   Here is the `@defspec' line of an example of an imaginary special
 form:
 
-      - Special Form: foobar (VAR [FROM TO [INC]]) BODY...
+      -- Special Form: foobar (VAR [FROM TO [INC]]) BODY...
 
 In this example, the arguments FROM and TO are optional, but must both
 be present or both absent.  If they are present, INC may optionally be
@@ -73,8 +156,8 @@ The function is listed in the Command and Variable Index under `foobar'.
 \1f
 File: texinfo.info,  Node: deffnx,  Next: Def Cmds in Detail,  Prev: Optional Arguments,  Up: Definition Commands
 
-Two or More `First' Lines
-=========================
+15.3 Two or More `First' Lines
+==============================
 
 To create two or more `first' or header lines for a definition, follow
 the first `@deffn' line by a line beginning with `@deffnx'.  The
@@ -90,8 +173,8 @@ generate extra vertical white space between it and the preceding line.
 
 produces
 
- - Interactive Command: isearch-forward
- - Interactive Command: isearch-backward
+ -- Interactive Command: isearch-forward
+ -- Interactive Command: isearch-backward
      These two search commands are similar except ...
 
   Each of the other definition commands has an `x' form: `@defunx',
@@ -102,8 +185,8 @@ produces
 \1f
 File: texinfo.info,  Node: Def Cmds in Detail,  Next: Def Cmd Conventions,  Prev: deffnx,  Up: Definition Commands
 
-The Definition Commands
-=======================
+15.4 The Definition Commands
+============================
 
 Texinfo provides more than a dozen definition commands, all of which
 are described in this section.
@@ -128,8 +211,8 @@ can be used for other programming languages.
 \1f
 File: texinfo.info,  Node: Functions Commands,  Next: Variables Commands,  Prev: Def Cmds in Detail,  Up: Def Cmds in Detail
 
-Functions and Similar Entities
-------------------------------
+15.4.1 Functions and Similar Entities
+-------------------------------------
 
 This section describes the commands for describing functions and similar
 entities:
@@ -200,14 +283,14 @@ entities:
 `@defspec NAME ARGUMENTS...'
      The `@defspec' command is the definition command for special
      forms.  (In Lisp, a special form is an entity much like a function,
-     *note Special Forms: (lispref)Special Forms..)  `@defspec' is
+     *note Special Forms: (lispref)Special Forms.)  `@defspec' is
      equivalent to `@deffn {Special Form} ...' and works like `@defun'.
 
 \1f
 File: texinfo.info,  Node: Variables Commands,  Next: Typed Functions,  Prev: Functions Commands,  Up: Def Cmds in Detail
 
-Variables and Similar Entities
-------------------------------
+15.4.2 Variables and Similar Entities
+-------------------------------------
 
 Here are the commands for defining variables and similar entities:
 
@@ -269,8 +352,8 @@ Here are the commands for defining variables and similar entities:
 \1f
 File: texinfo.info,  Node: Typed Functions,  Next: Typed Variables,  Prev: Variables Commands,  Up: Def Cmds in Detail
 
-Functions in Typed Languages
-----------------------------
+15.4.3 Functions in Typed Languages
+-----------------------------------
 
 The `@deftypefn' command and its variations are for describing
 functions in languages in which you must declare types of variables and
@@ -368,8 +451,8 @@ functions, such as C and C++.
 \1f
 File: texinfo.info,  Node: Typed Variables,  Next: Abstract Objects,  Prev: Typed Functions,  Up: Def Cmds in Detail
 
-Variables in Typed Languages
-----------------------------
+15.4.4 Variables in Typed Languages
+-----------------------------------
 
 Variables in typed languages are handled in a manner similar to
 functions in typed languages.  *Note Typed Functions::.  The general
@@ -434,8 +517,8 @@ specialized definition command `@deftypevar' corresponds to
 \1f
 File: texinfo.info,  Node: Abstract Objects,  Next: Data Types,  Prev: Typed Variables,  Up: Def Cmds in Detail
 
-Object-Oriented Programming
----------------------------
+15.4.5 Object-Oriented Programming
+----------------------------------
 
 Here are the commands for formatting descriptions about abstract
 objects, such as are used in object-oriented programming.  A class is a
@@ -566,8 +649,8 @@ it.  Otherwise, it is printed in the usual text font.
 \1f
 File: texinfo.info,  Node: Data Types,  Prev: Abstract Objects,  Up: Def Cmds in Detail
 
-Data Types
-----------
+15.4.6 Data Types
+-----------------
 
 Here is the command for data types:
 
@@ -602,8 +685,8 @@ Here is the command for data types:
 \1f
 File: texinfo.info,  Node: Def Cmd Conventions,  Next: Sample Function Definition,  Prev: Def Cmds in Detail,  Up: Definition Commands
 
-Conventions for Writing Definitions
-===================================
+15.5 Conventions for Writing Definitions
+========================================
 
 When you write a definition using `@deffn', `@defun', or one of the
 other definition commands, please take care to use arguments that
@@ -615,8 +698,8 @@ type.
 \1f
 File: texinfo.info,  Node: Sample Function Definition,  Prev: Def Cmd Conventions,  Up: Definition Commands
 
-A Sample Function Definition
-============================
+15.6 A Sample Function Definition
+=================================
 
 A function definition uses the `@defun' and `@end defun' commands.  The
 name of the function follows immediately after the `@defun' command and
@@ -625,7 +708,7 @@ it is followed, on the same line, by the parameter list.
   Here is a definition from *Note Calling Functions: (lispref)Calling
 Functions.
 
-      - Function: apply function &rest arguments
+      -- Function: apply function &rest arguments
           `apply' calls FUNCTION with ARGUMENTS, just like `funcall'
           but with one difference: the last of ARGUMENTS is a list of
           arguments to give to FUNCTION, rather than a single argument.
@@ -645,7 +728,7 @@ Functions.
                     => 10
                (apply '+ '(1 2 3 4))
                     => 10
-               
+
                (apply 'append '((a b c) nil (x y z) nil))
                     => (a b c x y z)
 
@@ -655,20 +738,20 @@ Functions.
   In the Texinfo source file, this example looks like this:
 
      @defun apply function &rest arguments
-     
+
      @code{apply} calls @var{function} with
      @var{arguments}, just like @code{funcall} but with one
      difference: the last of @var{arguments} is a list of
      arguments to give to @var{function}, rather than a single
      argument.  We also say that this list is @dfn{appended}
      to the other arguments.
-     
+
      @code{apply} returns the result of calling
      @var{function}.  As with @code{funcall},
      @var{function} must either be a Lisp function or a
      primitive function; special forms and macros do not make
      sense in @code{apply}.
-     
+
      @example
      (setq f 'list)
           @result{} list
@@ -678,11 +761,11 @@ Functions.
           @result{} 10
      (apply '+ '(1 2 3 4))
           @result{} 10
-     
+
      (apply 'append '((a b c) nil (x y z) nil))
           @result{} (a b c x y z)
      @end example
-     
+
      An interesting example of using @code{apply} is found
      in the description of @code{mapcar}.@refill
      @end defun
@@ -696,8 +779,8 @@ that for functions except that variables do not take arguments.
 \1f
 File: texinfo.info,  Node: Footnotes,  Next: Conditionals,  Prev: Definition Commands,  Up: Top
 
-Footnotes
-*********
+16 Footnotes
+************
 
 A "footnote" is for a reference that documents or elucidates the
 primary text.(1) (*note Footnotes-Footnote-1::)
@@ -718,8 +801,8 @@ of Style', which is published by the University of Chicago Press.
 \1f
 File: texinfo.info,  Node: Footnote Commands,  Next: Footnote Styles,  Prev: Footnotes,  Up: Footnotes
 
-Footnote Commands
-=================
+16.1 Footnote Commands
+======================
 
 In Texinfo, footnotes are created with the `@footnote' command.  This
 command is followed immediately by a left brace, then by the text of
@@ -760,8 +843,8 @@ File: texinfo.info,  Node: Footnote Commands-Footnotes,  Up: Footnote Commands
 \1f
 File: texinfo.info,  Node: Footnote Styles,  Prev: Footnote Commands,  Up: Footnotes
 
-Footnote Styles
-===============
+16.2 Footnote Styles
+====================
 
 Info has two footnote styles, which determine where the text of the
 footnote is located:
@@ -774,7 +857,7 @@ footnote is located:
      Here is an example of a single footnote in the end of node style:
 
            --------- Footnotes ---------
-          
+
           (1)  Here is a sample footnote.
 
    * In the `Separate' node style, all the footnotes for a single node
@@ -793,7 +876,7 @@ footnote is located:
      formatted for Info in the separate node style:
 
           File: texinfo.info  Node: Overview-Footnotes, Up: Overview
-          
+
           (1) Note that the first syllable of "Texinfo" is
           pronounced like "speck", not "hex". ...
 
@@ -808,8 +891,7 @@ separate node style.
   For example,
 
      @footnotestyle end
-
-or
+  or
      @footnotestyle separate
 
   Write an `@footnotestyle' command before or shortly after the
@@ -828,8 +910,8 @@ the `end' style.
 \1f
 File: texinfo.info,  Node: Conditionals,  Next: Macros,  Prev: Footnotes,  Up: Top
 
-Conditionally Visible Text
-**************************
+17 Conditionally Visible Text
+*****************************
 
 Sometimes it is good to use different text for a printed manual and its
 corresponding Info file.  In this case, you can use the "conditional
@@ -887,17 +969,16 @@ used for making the title and copyright pages of the printed manual.
 \1f
 File: texinfo.info,  Node: Conditional Not Commands,  Next: Raw Formatter Commands,  Prev: Conditional Commands,  Up: Conditionals
 
-Conditional Not Commands
-========================
+17.1 Conditional Not Commands
+=============================
 
 You can specify text to be included in any output format _other_ than
 some given one with the `@ifnot...' commands:
      @ifnothtml ... @end ifnothtml
      @ifnotinfo ... @end ifnotinfo
      @ifnottex ... @end ifnottex
-
-(The `@ifnot...' command and the `@end' command must actually appear on
-lines by themselves.)
+  (The `@ifnot...' command and the `@end' command must actually appear
+on lines by themselves.)
 
   If the output file is not being made for the given format, the region
 is included.  Otherwise, it is ignored.
@@ -908,8 +989,8 @@ with `@iftex', not raw formatter source as with `@tex'.
 \1f
 File: texinfo.info,  Node: Raw Formatter Commands,  Next: set clear value,  Prev: Conditional Not Commands,  Up: Conditionals
 
-Raw Formatter Commands
-======================
+17.2 Raw Formatter Commands
+===========================
 
 Inside a region delineated by `@iftex' and `@end iftex', you can embed
 some raw TeX commands.  Info will ignore these commands since they are
@@ -950,8 +1031,8 @@ character, so the `@end' command can be recognized.)
 \1f
 File: texinfo.info,  Node: set clear value,  Prev: Raw Formatter Commands,  Up: Conditionals
 
-`@set', `@clear', and `@value'
-==============================
+17.3 `@set', `@clear', and `@value'
+===================================
 
 You can direct the Texinfo formatting commands to format or ignore parts
 of a Texinfo file with the `@set', `@clear', `@ifset', and `@ifclear'
@@ -971,8 +1052,8 @@ string.  You can use `@set', for example, to set a date and use
 \1f
 File: texinfo.info,  Node: ifset ifclear,  Next: value,  Prev: set clear value,  Up: set clear value
 
-`@ifset' and `@ifclear'
------------------------
+17.3.1 `@ifset' and `@ifclear'
+------------------------------
 
 When a FLAG is set, the Texinfo formatting commands format text between
 subsequent pairs of `@ifset FLAG' and `@end ifset' commands.  When the
@@ -980,7 +1061,7 @@ FLAG is cleared, the Texinfo formatting commands do _not_ format the
 text.
 
   Use the `@set FLAG' command to turn on, or "set", a FLAG; a "flag"
-can be any single word.  The format for the command looks like this:
+can be any single word.  The format for the command looks like this: 
 
      @set FLAG
 
@@ -996,13 +1077,13 @@ as a manual for a `large' and `small' model:
 
      You can use this machine to dig up shrubs
      without hurting them.
-     
+
      @set large
-     
+
      @ifset large
      It can also dig up fully grown trees.
      @end ifset
-     
+
      Remember to replant promptly ...
 
 In the example, the formatting commands will format the text between
@@ -1062,8 +1143,8 @@ and an `@end ifclear' command; rather, they ignore that text.  An
 \1f
 File: texinfo.info,  Node: value,  Next: value Example,  Prev: ifset ifclear,  Up: set clear value
 
-`@value'
---------
+17.3.2 `@value'
+---------------
 
 You can use the `@set' command to specify a value for a flag, which is
 expanded by the `@value' command.  The value is a string a characters.
@@ -1119,8 +1200,8 @@ into
 \1f
 File: texinfo.info,  Node: value Example,  Prev: value,  Up: set clear value
 
-`@value' Example
-----------------
+17.3.3 `@value' Example
+-----------------------
 
 You can use the `@value' command to limit the number of places you need
 to change when you record an update to a manual.  Here is how it is
@@ -1170,8 +1251,8 @@ do not need to rewrite the three sections.
 \1f
 File: texinfo.info,  Node: Macros,  Next: Format/Print Hardcopy,  Prev: Conditionals,  Up: Top
 
-Macros: Defining New Texinfo Commands
-*************************************
+18 Macros: Defining New Texinfo Commands
+****************************************
 
 A Texinfo "macro" allows you to define a new Texinfo command as any
 sequence of text and/or existing commands (including other macros).  The
@@ -1188,8 +1269,8 @@ Cmd Template::.)
 \1f
 File: texinfo.info,  Node: Defining Macros,  Next: Invoking Macros,  Prev: Macros,  Up: Macros
 
-Defining Macros
-===============
+18.1 Defining Macros
+====================
 
 You use the Texinfo `@macro' command to define a macro.  For example:
 
@@ -1219,8 +1300,8 @@ to undefine a macro that is already undefined.  For example:
 \1f
 File: texinfo.info,  Node: Invoking Macros,  Prev: Defining Macros,  Up: Macros
 
-Invoking Macros
-===============
+18.2 Invoking Macros
+====================
 
 After a macro is defined (see the previous section), you can use
 ("invoke") it in your document like this:
@@ -1265,8 +1346,8 @@ produces:
 \1f
 File: texinfo.info,  Node: Format/Print Hardcopy,  Next: Create an Info File,  Prev: Macros,  Up: Top
 
-Format and Print Hardcopy
-*************************
+19 Format and Print Hardcopy
+****************************
 
 There are three major shell commands for making a printed manual from a
 Texinfo file: one for converting the Texinfo file into a file that will
@@ -1317,8 +1398,8 @@ Info File::.
 \1f
 File: texinfo.info,  Node: Format with tex/texindex,  Next: Format with texi2dvi,  Prev: Use TeX,  Up: Format/Print Hardcopy
 
-Format using `tex' and `texindex'
-=================================
+19.1 Format using `tex' and `texindex'
+======================================
 
 Format the Texinfo file with the shell command `tex' followed by the
 name of the Texinfo file.  For example:
@@ -1398,8 +1479,8 @@ This is usually ok while you are debugging.
 \1f
 File: texinfo.info,  Node: Format with texi2dvi,  Next: Print with lpr,  Prev: Format with tex/texindex,  Up: Format/Print Hardcopy
 
-Format using `texi2dvi'
-=======================
+19.2 Format using `texi2dvi'
+============================
 
 The `texi2dvi' command automatically runs both `tex' and `texindex' as
 many times as necessary to produce a DVI file with up-to-date, sorted
@@ -1416,8 +1497,8 @@ prompt):
 \1f
 File: texinfo.info,  Node: Print with lpr,  Next: Within Emacs,  Prev: Format with texi2dvi,  Up: Format/Print Hardcopy
 
-Shell Print Using `lpr -d'
-==========================
+19.3 Shell Print Using `lpr -d'
+===============================
 
 The precise command to print a DVI file depends on your system
 installation, but `lpr -d' is common.  The command may require the DVI
@@ -1443,8 +1524,8 @@ these are commonly used versions.)
 \1f
 File: texinfo.info,  Node: Within Emacs,  Next: Texinfo Mode Printing,  Prev: Print with lpr,  Up: Format/Print Hardcopy
 
-From an Emacs Shell
-===================
+19.4 From an Emacs Shell
+========================
 
 You can give formatting and printing commands from a shell within GNU
 Emacs.  To create a shell within Emacs, type `M-x shell'.  In this
@@ -1468,8 +1549,8 @@ and printing in Texinfo mode.
 \1f
 File: texinfo.info,  Node: Texinfo Mode Printing,  Next: Compile-Command,  Prev: Within Emacs,  Up: Format/Print Hardcopy
 
-Formatting and Printing in Texinfo Mode
-=======================================
+19.5 Formatting and Printing in Texinfo Mode
+============================================
 
 Texinfo mode provides several predefined key commands for TeX
 formatting and printing.  These include commands for sorting indices,
@@ -1541,7 +1622,7 @@ would any other shell buffer.
 variables.  The default values are:
 
           Variable                              Default value
-     
+
      texinfo-texi2dvi-command                  "texi2dvi"
      texinfo-tex-command                       "tex"
      texinfo-texindex-command                  "texindex"
@@ -1561,8 +1642,8 @@ initialization file (*note Init File: (xemacs)Init File.).
 \1f
 File: texinfo.info,  Node: Compile-Command,  Next: Requirements Summary,  Prev: Texinfo Mode Printing,  Up: Format/Print Hardcopy
 
-Using the Local Variables List
-==============================
+19.6 Using the Local Variables List
+===================================
 
 Yet another way to apply the TeX formatting command to a Texinfo file
 is to put that command in a "local variables list" at the end of the
@@ -1582,8 +1663,8 @@ programs this way; see *Note Compilation: (xemacs)Compilation.
 \1f
 File: texinfo.info,  Node: Requirements Summary,  Next: Preparing for TeX,  Prev: Compile-Command,  Up: Format/Print Hardcopy
 
-TeX Formatting Requirements Summary
-===================================
+19.7 TeX Formatting Requirements Summary
+========================================
 
 Every Texinfo file that is to be input to TeX must begin with a
 `\input' command and must contain an `@setfilename' command:
@@ -1619,8 +1700,8 @@ For more information, see
 \1f
 File: texinfo.info,  Node: Preparing for TeX,  Next: Overfull hboxes,  Prev: Requirements Summary,  Up: Format/Print Hardcopy
 
-Preparing to Use TeX
-====================
+19.8 Preparing to Use TeX
+=========================
 
 TeX needs to know where to find the `texinfo.tex' file that you have
 told it to input with the `\input texinfo' command at the beginning of
@@ -1681,8 +1762,8 @@ directory, indicated by the `.', then in a hypothetical user's
 \1f
 File: texinfo.info,  Node: Overfull hboxes,  Next: smallbook,  Prev: Preparing for TeX,  Up: Format/Print Hardcopy
 
-Overfull "hboxes"
-=================
+19.9 Overfull "hboxes"
+======================
 
 TeX is sometimes unable to typeset a line without extending it into the
 right margin.  This can occur when TeX comes upon what it interprets as
@@ -1720,8 +1801,8 @@ before the `@titlepage' command:
 \1f
 File: texinfo.info,  Node: smallbook,  Next: A4 Paper,  Prev: Overfull hboxes,  Up: Format/Print Hardcopy
 
-Printing "Small" Books
-======================
+19.10 Printing "Small" Books
+============================
 
 By default, TeX typesets pages for printing in an 8.5 by 11 inch
 format.  However, you can direct TeX to typeset a document in a 7 by
@@ -1756,8 +1837,8 @@ differently.
 \1f
 File: texinfo.info,  Node: A4 Paper,  Next: Cropmarks and Magnification,  Prev: smallbook,  Up: Format/Print Hardcopy
 
-Printing on A4 Paper
-====================
+19.11 Printing on A4 Paper
+==========================
 
 You can tell TeX to typeset a document for printing on European size A4
 paper with the `@afourpaper' command.  Write the command on a line by
@@ -1790,8 +1871,8 @@ that paper size in effect.
 \1f
 File: texinfo.info,  Node: Cropmarks and Magnification,  Prev: A4 Paper,  Up: Format/Print Hardcopy
 
-Cropmarks and Magnification
-===========================
+19.12 Cropmarks and Magnification
+=================================
 
 You can attempt to direct TeX to print cropmarks at the corners of
 pages with the `@cropmarks' command.  Write the `@cropmarks' command on
@@ -1836,8 +1917,8 @@ certain magnifications.  Be prepared to experiment.
 \1f
 File: texinfo.info,  Node: Create an Info File,  Next: Install an Info File,  Prev: Format/Print Hardcopy,  Up: Top
 
-Creating an Info File
-*********************
+20 Creating an Info File
+************************
 
 `makeinfo' is a utility that converts a Texinfo file into an Info file;
 `texinfo-format-region' and `texinfo-format-buffer' are GNU Emacs
@@ -1885,8 +1966,8 @@ they format short regions or buffers more quickly than `makeinfo'.
 \1f
 File: texinfo.info,  Node: Invoking makeinfo,  Next: makeinfo options,  Prev: makeinfo advantages,  Up: Create an Info File
 
-Running `makeinfo' from a Shell
-===============================
+20.1 Running `makeinfo' from a Shell
+====================================
 
 To create an Info file from a Texinfo file, type `makeinfo' followed by
 the name of the Texinfo file.  Thus, to create the Info file for Bison,
@@ -1906,8 +1987,8 @@ to discover which version of `makeinfo' you are using, type:
 \1f
 File: texinfo.info,  Node: makeinfo options,  Next: Pointer Validation,  Prev: Invoking makeinfo,  Up: Create an Info File
 
-Options for `makeinfo'
-======================
+20.2 Options for `makeinfo'
+===========================
 
 The `makeinfo' command takes a number of options.  Most often, options
 are used to set the value of the fill column and specify the footnote
@@ -2048,8 +2129,8 @@ and would also set the fill column to 70.
 \1f
 File: texinfo.info,  Node: Pointer Validation,  Next: makeinfo in Emacs,  Prev: makeinfo options,  Up: Create an Info File
 
-Pointer Validation
-==================
+20.3 Pointer Validation
+=======================
 
 If you do not suppress pointer-validation, `makeinfo' will check the
 validity of the final Info file.  Mostly, this means ensuring that
@@ -2079,8 +2160,8 @@ is checked:
 \1f
 File: texinfo.info,  Node: makeinfo in Emacs,  Next: texinfo-format commands,  Prev: Pointer Validation,  Up: Create an Info File
 
-Running `makeinfo' inside Emacs
-===============================
+20.4 Running `makeinfo' inside Emacs
+====================================
 
 You can run `makeinfo' in GNU Emacs Texinfo mode by using either the
 `makeinfo-region' or the `makeinfo-buffer' commands.  In Texinfo mode,
@@ -2088,11 +2169,11 @@ the commands are bound to `C-c C-m C-r' and `C-c C-m C-b' by default.
 
 `C-c C-m C-r'
 `M-x makeinfo-region'
-     Format the current region for Info.
+     Format the current region for Info.  
 
 `C-c C-m C-b'
 `M-x makeinfo-buffer'
-     Format the current buffer for Info.
+     Format the current buffer for Info.  
 
   When you invoke either `makeinfo-region' or `makeinfo-buffer', Emacs
 prompts for a file name, offering the name of the visited file as the
@@ -2145,8 +2226,8 @@ For more information, see
 \1f
 File: texinfo.info,  Node: texinfo-format commands,  Next: Batch Formatting,  Prev: makeinfo in Emacs,  Up: Create an Info File
 
-The `texinfo-format...' Commands
-================================
+20.5 The `texinfo-format...' Commands
+=====================================
 
 In GNU Emacs in Texinfo mode, you can format part or all of a Texinfo
 file with the `texinfo-format-region' command.  This formats the
@@ -2161,11 +2242,11 @@ of the Texinfo file.
 
 `C-c C-e C-r'
 ``texinfo-format-region''
-     Format the current region for Info.
+     Format the current region for Info.  
 
 `C-c C-e C-b'
 ``texinfo-format-buffer''
-     Format the current buffer for Info.
+     Format the current buffer for Info.  
 
   The `texinfo-format-region' and `texinfo-format-buffer' commands
 provide you with some error checking, and other functions can provide
@@ -2177,8 +2258,8 @@ checking (*note makeinfo in Emacs::).
 \1f
 File: texinfo.info,  Node: Batch Formatting,  Next: Tag and Split Files,  Prev: texinfo-format commands,  Up: Create an Info File
 
-Batch Formatting
-================
+20.6 Batch Formatting
+=====================
 
 You can format Texinfo files for Info using `batch-texinfo-format' and
 Emacs Batch mode.  You can run Emacs in Batch mode from any shell,
@@ -2206,8 +2287,8 @@ until the command finishes.)
 \1f
 File: texinfo.info,  Node: Tag and Split Files,  Prev: Batch Formatting,  Up: Create an Info File
 
-Tag Files and Split Files
-=========================
+20.7 Tag Files and Split Files
+==============================
 
 If a Texinfo file has more than 30,000 bytes, `texinfo-format-buffer'
 automatically creates a tag table for its Info file;  `makeinfo' always
@@ -2244,7 +2325,7 @@ saved as `test-texinfo' and that file looked like this:
      Info file: test-texinfo,    -*-Text-*-
      produced by texinfo-format-buffer
      from file: new-texinfo-manual.texinfo
-     
+
      ^_
      Indirect:
      test-texinfo-1: 102
@@ -2283,8 +2364,8 @@ Info-validate::.
 \1f
 File: texinfo.info,  Node: Install an Info File,  Next: Command List,  Prev: Create an Info File,  Up: Top
 
-Installing an Info File
-***********************
+21 Installing an Info File
+**************************
 
 Info files are usually kept in the `info' directory.  You can read Info
 files using the standalone Info program or the Info reader built into
@@ -2316,7 +2397,7 @@ to see the pathname to the `info' directory.)
 menu for all the Info files in the system.  The menu looks like this:
 
      * Menu:
-     
+
      * Info:    (info).     Documentation browsing system.
      * Emacs:   (emacs).    The extensible, self-documenting
                             text editor.
@@ -2347,8 +2428,8 @@ it cannot find the name as written.)
 \1f
 File: texinfo.info,  Node: New Info File,  Next: Other Info Directories,  Prev: Directory file,  Up: Install an Info File
 
-Listing a New Info File
-=======================
+21.1 Listing a New Info File
+============================
 
 To add a new Info file to your system, you must write a menu entry to
 add to the menu in the `dir' file in the `info' directory.  For
@@ -2371,8 +2452,8 @@ use just `gdb' for the file name, not `gdb.info'.
 \1f
 File: texinfo.info,  Node: Other Info Directories,  Next: Installing Dir Entries,  Prev: New Info File,  Up: Install an Info File
 
-Info Files in Other Directories
-===============================
+21.2 Info Files in Other Directories
+====================================
 
 If an Info file is not in the `info' directory, there are three ways to
 specify its location:
@@ -2451,8 +2532,8 @@ Leading or doubled colons are not treated specially.
 \1f
 File: texinfo.info,  Node: Installing Dir Entries,  Next: Invoking install-info,  Prev: Other Info Directories,  Up: Install an Info File
 
-Installing Info Directory Files
-===============================
+21.3 Installing Info Directory Files
+====================================
 
 When you install an Info file onto your system, you can use the program
 `install-info' to update the Info directory file `dir'.  Normally the
@@ -2499,8 +2580,8 @@ specified categories.
 \1f
 File: texinfo.info,  Node: Invoking install-info,  Prev: Installing Dir Entries,  Up: Install an Info File
 
-Invoking install-info
-=====================
+21.4 Invoking install-info
+==========================
 
 `install-info' inserts menu entries from an Info file into the
 top-level `dir' file in the Info system (see the previous sections for
@@ -2570,8 +2651,8 @@ creates it if possible (with no entries).
 \1f
 File: texinfo.info,  Node: Command List,  Next: Tips,  Prev: Install an Info File,  Up: Top
 
-@-Command List
-**************
+Appendix A @-Command List
+*************************
 
 Here is an alphabetical list of the @-commands in Texinfo.  Square
 brackets, [ ], indicate optional arguments; an ellipsis, `...',
@@ -3562,8 +3643,8 @@ indicates repeated text.
 \1f
 File: texinfo.info,  Node: Tips,  Next: Sample Texinfo File,  Prev: Command List,  Up: Top
 
-Tips and Hints
-**************
+Appendix B Tips and Hints
+*************************
 
 Here are some tips for writing Texinfo documentation:
 
@@ -3619,7 +3700,7 @@ split across pages.
           @section The Dog and the Fox
           @cindex Jumping, in general
           @cindex Leaping
-          
+
           @cindex Dog, lazy, jumped over
           @cindex Lazy dog jumped over
           @cindex Fox, jumps over dog
@@ -3646,11 +3727,11 @@ Blank Lines
      For example,
 
           Types of fox:
-          
+
           @table @samp
           @item Quick
           Jump over lazy dogs.
-          
+
           @item Brown
           Also jump over lazy dogs.
           @end table
@@ -3697,7 +3778,7 @@ For example:
      @c in *three* places:
      @c   1. First ifinfo section  2. title page  3. top node
      @c To find the locations, search for !!set
-     
+
      @ifinfo
      @c !!set edition, date, version
      This is Edition 4.03, January 1992,
@@ -3843,7 +3924,7 @@ writing the same argument names, again highlighted with `@var'.
   Avoid the obsolete style that looks like this:
 
      #include <dld.h>
-     
+
      dld_init (path)
      char *path;
 
@@ -3892,8 +3973,8 @@ And Finally ...
 \1f
 File: texinfo.info,  Node: Sample Texinfo File,  Next: Sample Permissions,  Prev: Tips,  Up: Top
 
-A Sample Texinfo File
-*********************
+Appendix C A Sample Texinfo File
+********************************
 
 Here is a complete, short sample Texinfo file, without any commentary.
 You can see this file, with comments, in the first chapter.  *Note A
@@ -3905,72 +3986,72 @@ Short Sample Texinfo File: Short Sample.
      @setfilename sample.info
      @settitle Sample Document
      @c %**end of header
-     
+
      @setchapternewpage odd
-     
+
      @ifinfo
      This is a short example of a complete Texinfo file.
-     
+
      Copyright 1990 Free Software Foundation, Inc.
      @end ifinfo
-     
+
      @titlepage
      @sp 10
      @comment The title is printed in a large font.
      @center @titlefont{Sample Title}
-     
+
      @c The following two commands start the copyright page.
      @page
      @vskip 0pt plus 1filll
      Copyright @copyright{} 1990 Free Software Foundation, Inc.
      @end titlepage
-     
+
      @node    Top,       First Chapter,         , (dir)
      @comment node-name, next,          previous, up
-     
+
      @menu
      * First Chapter::    The first chapter is the
                           only chapter in this sample.
      * Concept Index::    This index has two entries.
      @end menu
-     
+
      @node    First Chapter, Concept Index, Top,      Top
      @comment node-name,     next,          previous, up
      @chapter First Chapter
      @cindex Sample index entry
-     
+
      This is the contents of the first chapter.
      @cindex Another sample index entry
-     
+
      Here is a numbered list.
-     
+
      @enumerate
      @item
      This is the first item.
-     
+
      @item
      This is the second item.
      @end enumerate
-     
+
      The @code{makeinfo} and @code{texinfo-format-buffer}
      commands transform a Texinfo file such as this into
      an Info file; and @TeX{} typesets it for a printed
      manual.
-     
+
      @node    Concept Index,    ,  First Chapter, Top
      @comment node-name,    next,  previous,      up
      @unnumbered Concept Index
-     
+
      @printindex cp
-     
+
      @contents
      @bye
 
 \1f
 File: texinfo.info,  Node: Sample Permissions,  Next: Include Files,  Prev: Sample Texinfo File,  Up: Top
 
-Sample Permissions
-******************
+Appendix D Sample Permissions
+*****************************
 
 Texinfo files should contain sections that tell the readers that they
 have the right to copy and distribute the Texinfo file, the Info file,
@@ -3994,8 +4075,8 @@ you with rights.
 \1f
 File: texinfo.info,  Node: Inserting Permissions,  Next: ifinfo Permissions,  Prev: Sample Permissions,  Up: Sample Permissions
 
-Inserting Permissions
-=====================
+D.1 Inserting Permissions
+=========================
 
   In a Texinfo file, the first `@ifinfo' section usually begins with a
 line that says what the file documents.  This is what a person reading
@@ -4039,27 +4120,27 @@ the rest of the sentence.
 \1f
 File: texinfo.info,  Node: ifinfo Permissions,  Next: Titlepage Permissions,  Prev: Inserting Permissions,  Up: Sample Permissions
 
-`ifinfo' Copying Permissions
-============================
+D.2 `ifinfo' Copying Permissions
+================================
 
 In the `@ifinfo' section of a Texinfo file, the standard Free Software
 Foundation permission notice reads as follows:
 
      This file documents ...
-     
+
      Copyright 1998 Free Software Foundation, Inc.
-     
+
      Permission is granted to make and distribute verbatim
      copies of this manual provided the copyright notice and
      this permission notice are preserved on all copies.
-     
+
      @ignore
      Permission is granted to process this file through TeX
      and print the results, provided the printed document
      carries a copying permission notice identical to this
      one except for the removal of this paragraph (this
      paragraph not being relevant to the printed manual).
-     
+
      @end ignore
      Permission is granted to copy and distribute modified
      versions of this manual under the conditions for
@@ -4069,7 +4150,7 @@ Foundation permission notice reads as follows:
      that the entire resulting derived work is distributed
      under the terms of a permission notice identical to this
      one.
-     
+
      Permission is granted to copy and distribute
      translations of this manual into another language,
      under the above conditions for modified versions,
@@ -4079,8 +4160,8 @@ Foundation permission notice reads as follows:
 \1f
 File: texinfo.info,  Node: Titlepage Permissions,  Prev: ifinfo Permissions,  Up: Sample Permissions
 
-Titlepage Copying Permissions
-=============================
+D.3 Titlepage Copying Permissions
+=================================
 
 In the `@titlepage' section of a Texinfo file, the standard Free
 Software Foundation copying permission notice follows the copyright
@@ -4089,7 +4170,7 @@ notice and publishing information.  The standard phrasing is as follows:
      Permission is granted to make and distribute verbatim
      copies of this manual provided the copyright notice and
      this permission notice are preserved on all copies.
-     
+
      Permission is granted to copy and distribute modified
      versions of this manual under the conditions for
      verbatim copying, provided also that the sections
@@ -4098,7 +4179,7 @@ notice and publishing information.  The standard phrasing is as follows:
      that the entire resulting derived work is distributed
      under the terms of a permission notice identical to this
      one.
-     
+
      Permission is granted to copy and distribute
      translations of this manual into another language,
      under the above conditions for modified versions,
@@ -4108,8 +4189,8 @@ notice and publishing information.  The standard phrasing is as follows:
 \1f
 File: texinfo.info,  Node: Include Files,  Next: Headings,  Prev: Sample Permissions,  Up: Top
 
-Include Files
-*************
+Appendix E Include Files
+************************
 
 When TeX or an Info formatting command sees an `@include' command in a
 Texinfo file, it processes the contents of the file named by the
@@ -4134,8 +4215,8 @@ conveniently small parts.
 \1f
 File: texinfo.info,  Node: Using Include Files,  Next: texinfo-multiple-files-update,  Prev: Include Files,  Up: Include Files
 
-How to Use Include Files
-========================
+E.1 How to Use Include Files
+============================
 
 To include another file within a Texinfo file, write the `@include'
 command at the beginning of a line and follow it on the same line by
@@ -4173,8 +4254,8 @@ command, `texinfo-multiple-files-update', that is designed for
 \1f
 File: texinfo.info,  Node: texinfo-multiple-files-update,  Next: Include File Requirements,  Prev: Using Include Files,  Up: Include Files
 
-`texinfo-multiple-files-update'
-===============================
+E.2 `texinfo-multiple-files-update'
+===================================
 
 GNU Emacs Texinfo mode provides the `texinfo-multiple-files-update'
 command.  This command creates or updates `Next', `Previous', and `Up'
@@ -4233,8 +4314,8 @@ files and then inserts a master menu.
 \1f
 File: texinfo.info,  Node: Include File Requirements,  Next: Sample Include File,  Prev: texinfo-multiple-files-update,  Up: Include Files
 
-Include File Requirements
-=========================
+E.3 Include File Requirements
+=============================
 
 If you plan to use the `texinfo-multiple-files-update' command, the
 outer Texinfo file that lists included files within it should contain
@@ -4259,8 +4340,8 @@ should _not_ contain any nodes besides the single `Top' node.  The
 \1f
 File: texinfo.info,  Node: Sample Include File,  Next: Include Files Evolution,  Prev: Include File Requirements,  Up: Include Files
 
-Sample File with `@include'
-===========================
+E.4 Sample File with `@include'
+===============================
 
 Here is an example of a complete outer Texinfo file with `@include'
 files within it before running `texinfo-multiple-files-update', which
@@ -4269,38 +4350,38 @@ would insert a main or master menu:
      \input texinfo @c -*-texinfo-*-
      @setfilename  include-example.info
      @settitle Include Example
-     
+
      @setchapternewpage odd
      @titlepage
      @sp 12
      @center @titlefont{Include Example}
      @sp 2
      @center by Whom Ever
-     
+
      @page
      @vskip 0pt plus 1filll
      Copyright @copyright{} 1998 Free Software Foundation, Inc.
      @end titlepage
-     
+
      @ifinfo
      @node Top, First, , (dir)
      @top Master Menu
      @end ifinfo
-     
+
      @include foo.texinfo
      @include bar.texinfo
      @include concept-index.texinfo
-     
+
      @summarycontents
      @contents
-     
+
      @bye
 
   An included file, such as `foo.texinfo', might look like this:
 
      @node First, Second, , Top
      @chapter First Chapter
-     
+
      Contents of first chapter ...
 
   The full contents of `concept-index.texinfo' might be as simple as
@@ -4308,7 +4389,7 @@ this:
 
      @node Concept Index, , Second, Top
      @unnumbered Concept Index
-     
+
      @printindex cp
 
   The outer Texinfo source file for `The XEmacs Lisp Reference Manual'
@@ -4318,8 +4399,8 @@ entries and a list of 41 `@include' files.
 \1f
 File: texinfo.info,  Node: Include Files Evolution,  Prev: Sample Include File,  Up: Include Files
 
-Evolution of Include Files
-==========================
+E.5 Evolution of Include Files
+==============================
 
 When Info was first created, it was customary to create many small Info
 files on one subject.  Each Info file was formatted from its own
@@ -4359,8 +4440,8 @@ files.
 \1f
 File: texinfo.info,  Node: Headings,  Next: Catching Mistakes,  Prev: Include Files,  Up: Top
 
-Page Headings
-*************
+Appendix F Page Headings
+************************
 
 Most printed manuals contain headings along the top of every page
 except the title and copyright pages.  Some manuals also contain
@@ -4415,8 +4496,8 @@ right part is set flushright.
 \1f
 File: texinfo.info,  Node: Heading Format,  Next: Heading Choice,  Prev: Headings Introduced,  Up: Headings
 
-Standard Heading Formats
-========================
+F.1 Standard Heading Formats
+============================
 
 Texinfo provides two standard heading formats, one for manuals printed
 on one side of each sheet of paper, and the other for manuals printed
@@ -4472,8 +4553,8 @@ manual.
 \1f
 File: texinfo.info,  Node: Heading Choice,  Next: Custom Headings,  Prev: Heading Format,  Up: Headings
 
-Specifying the Type of Heading
-==============================
+F.2 Specifying the Type of Heading
+==================================
 
 TeX does not begin to generate page headings for a standard Texinfo
 file until it reaches the `@end titlepage' command.  Thus, the title
@@ -4508,8 +4589,8 @@ Texinfo lacks an `@setchapternewpage even' command.
 \1f
 File: texinfo.info,  Node: Custom Headings,  Prev: Heading Choice,  Up: Headings
 
-How to Make Your Own Headings
-=============================
+F.3 How to Make Your Own Headings
+=================================
 
 You can use the standard headings provided with Texinfo or specify your
 own.  By default, Texinfo has no footers, so if you specify them, the
@@ -4597,7 +4678,7 @@ and `@end iftex' commands.
      information about `@include' files.)
 
 You can also use the `@today{}' command, which expands to the current
-date, in `1 Jan 1900' format.
+date, in `1 Jan 1900' format.  
 
   Other @-commands and text are printed in a header or footer just as
 if they were in the body of a page.  It is useful to incorporate text,
@@ -4615,8 +4696,8 @@ header or footer and blot it out.
 \1f
 File: texinfo.info,  Node: Catching Mistakes,  Next: Refilling Paragraphs,  Prev: Headings,  Up: Top
 
-Formatting Mistakes
-*******************
+Appendix G Formatting Mistakes
+******************************
 
 Besides mistakes in the content of your documentation, there are two
 kinds of mistake you can make with Texinfo:  you can make mistakes with
@@ -4666,8 +4747,8 @@ in this appendix.
 \1f
 File: texinfo.info,  Node: Debugging with Info,  Next: Debugging with TeX,  Prev: makeinfo Preferred,  Up: Catching Mistakes
 
-Catching Errors with Info Formatting
-====================================
+G.1 Catching Errors with Info Formatting
+========================================
 
 After you have written part of a Texinfo file, you can use the
 `texinfo-format-region' or the `makeinfo-region' command to see whether
@@ -4697,7 +4778,7 @@ or not long after it.  The buffer will look like this:
 
      ---------- Buffer: *Info Region* ----------
      * Menu:
-     
+
      * Using texinfo-show-structure::  How to use
                                        `texinfo-show-structure'
                                        to catch mistakes.
@@ -4748,8 +4829,8 @@ Mistakes' node by typing `l' (`Info-last').)
 \1f
 File: texinfo.info,  Node: Debugging with TeX,  Next: Using texinfo-show-structure,  Prev: Debugging with Info,  Up: Catching Mistakes
 
-Catching Errors with TeX Formatting
-===================================
+G.2 Catching Errors with TeX Formatting
+=======================================
 
 You can also catch mistakes when you format a file with TeX.
 
@@ -4781,7 +4862,7 @@ following output, after which it stopped:
      <to be read again>
                         @par
      l.27
-     
+
      ?
      ---------- Buffer: *tex-shell* ----------
 
@@ -4854,8 +4935,8 @@ Texinfo.)
 \1f
 File: texinfo.info,  Node: Using texinfo-show-structure,  Next: Using occur,  Prev: Debugging with TeX,  Up: Catching Mistakes
 
-Using `texinfo-show-structure'
-==============================
+G.3 Using `texinfo-show-structure'
+==================================
 
 It is not always easy to keep track of the nodes, chapters, sections,
 and subsections of a Texinfo file.  This is especially true if you are
@@ -4918,8 +4999,8 @@ or left out a section, you can correct the mistake.
 \1f
 File: texinfo.info,  Node: Using occur,  Next: Running Info-Validate,  Prev: Using texinfo-show-structure,  Up: Catching Mistakes
 
-Using `occur'
-=============
+G.4 Using `occur'
+=================
 
 Sometimes the `texinfo-show-structure' command produces too much
 information.  Perhaps you want to remind yourself of the overall
@@ -4954,8 +5035,8 @@ information.
 \1f
 File: texinfo.info,  Node: Running Info-Validate,  Prev: Using occur,  Up: Catching Mistakes
 
-Finding Badly Referenced Nodes
-==============================
+G.5 Finding Badly Referenced Nodes
+==================================
 
 You can use the `Info-validate' command to check whether any of the
 `Next', `Previous', `Up' or other node pointers fail to point to a
@@ -4980,8 +5061,8 @@ Info file from scratch.
 \1f
 File: texinfo.info,  Node: Using Info-validate,  Next: Unsplit,  Prev: Running Info-Validate,  Up: Running Info-Validate
 
-Running `Info-validate'
------------------------
+G.5.1 Running `Info-validate'
+-----------------------------
 
 To use `Info-validate', visit the Info file you wish to check and type:
 
@@ -5027,8 +5108,8 @@ for the unsplit file.
 \1f
 File: texinfo.info,  Node: Unsplit,  Next: Tagifying,  Prev: Using Info-validate,  Up: Running Info-Validate
 
-Creating an Unsplit File
-------------------------
+G.5.2 Creating an Unsplit File
+------------------------------
 
 You can run `Info-validate' only on a single Info file that has a tag
 table.  The command will not work on the indirect subfiles that are
@@ -5050,13 +5131,13 @@ or else
      C-u C-c C-e C-b
 
 When you do this, Texinfo will not split the file and will not create a
-tag table for it.
+tag table for it.  
 
 \1f
 File: texinfo.info,  Node: Tagifying,  Next: Splitting,  Prev: Unsplit,  Up: Running Info-Validate
 
-Tagifying a File
-----------------
+G.5.3 Tagifying a File
+----------------------
 
 After creating an unsplit Info file, you must create a tag table for
 it.  Visit the Info file you wish to tagify and type:
@@ -5084,8 +5165,8 @@ and split the file manually.
 \1f
 File: texinfo.info,  Node: Splitting,  Prev: Tagifying,  Up: Running Info-Validate
 
-Splitting a File Manually
--------------------------
+G.5.4 Splitting a File Manually
+-------------------------------
 
 You should split a large file or else let the `texinfo-format-buffer'
 or `makeinfo-buffer' command do it for you automatically.  (Generally
@@ -5125,8 +5206,8 @@ the tag table and a directory of subfiles.
 \1f
 File: texinfo.info,  Node: Refilling Paragraphs,  Next: Command Syntax,  Prev: Catching Mistakes,  Up: Top
 
-Refilling Paragraphs
-********************
+Appendix H Refilling Paragraphs
+*******************************
 
 The `@refill' command refills and, optionally, indents the first line
 of a paragraph.(1) (*note Refilling Paragraphs-Footnote-1::) The
@@ -5164,8 +5245,8 @@ chosen before indenting was possible.
 \1f
 File: texinfo.info,  Node: Command Syntax,  Next: Obtaining TeX,  Prev: Refilling Paragraphs,  Up: Top
 
-@-Command Syntax
-****************
+Appendix I @-Command Syntax
+***************************
 
 The character `@' is used to start special Texinfo commands.  (It has
 the same meaning that `\' has in plain TeX.)  Texinfo has four types of
@@ -5222,8 +5303,8 @@ because it cannot appear at the beginning of a line.
 \1f
 File: texinfo.info,  Node: Obtaining TeX,  Next: Command and Variable Index,  Prev: Command Syntax,  Up: Top
 
-How to Obtain TeX
-*****************
+Appendix J How to Obtain TeX
+****************************
 
 TeX is freely redistributable.  You can obtain TeX for Unix systems via
 anonymous ftp or on physical media.  The core material consists of the
@@ -5245,7 +5326,7 @@ the TeX Users Group co-sponsors a complete CD-ROM TeX distribution.
           59 Temple Place Suite 330
           Boston, MA   02111-1307
           USA
-          
+
           Telephone: +1-617-542-5942
           Fax: (including Japan) +1-617-542-2652
           Free Dial Fax (in Japan):
@@ -5287,277 +5368,333 @@ This is an alphabetical list of all the @-commands, assorted Emacs Lisp
 functions, and several variables.  To make the list easier to use, the
 commands are listed without their preceding `@'.
 
+\0\b[index\0\b]
 * Menu:
 
-* ! (end of sentence):                   Ending a Sentence.
-* ":                                     Inserting Accents.
-* ':                                     Inserting Accents.
-* (newline):                             Multiple Spaces.
-* (space):                               Multiple Spaces.
-* (tab):                                 Multiple Spaces.
-* * (force line break):                  Line Breaks.
-* ,:                                     Inserting Accents.
-* -:                                     - and hyphenation.
-* .  (end of sentence):                  Ending a Sentence.
+* ! (end of sentence):                   Ending a Sentence.   (line   6)
+* ":                                     Inserting Accents.   (line  13)
+* ':                                     Inserting Accents.   (line  13)
+* (newline):                             Multiple Spaces.     (line   6)
+* (space):                               Multiple Spaces.     (line   6)
+* (tab):                                 Multiple Spaces.     (line   6)
+* * (force line break):                  Line Breaks.         (line   6)
+* ,:                                     Inserting Accents.   (line  13)
+* -:                                     - and hyphenation.   (line   6)
+* .  (end of sentence):                  Ending a Sentence.   (line   6)
 * : (suppress widening):                 Not Ending a Sentence.
-* =:                                     Inserting Accents.
-* ? (end of sentence):                   Ending a Sentence.
-* @ (single @):                          Inserting An Atsign.
-* ^:                                     Inserting Accents.
-* `:                                     Inserting Accents.
-* AA:                                    Inserting Accents.
-* aa:                                    Inserting Accents.
-* AE:                                    Inserting Accents.
-* ae:                                    Inserting Accents.
-* afourpaper:                            A4 Paper.
+                                                              (line  16)
+* =:                                     Inserting Accents.   (line  13)
+* ? (end of sentence):                   Ending a Sentence.   (line   6)
+* @ (single @):                          Inserting An Atsign. (line   6)
+* ^:                                     Inserting Accents.   (line  13)
+* `:                                     Inserting Accents.   (line  13)
+* AA:                                    Inserting Accents.   (line  33)
+* aa:                                    Inserting Accents.   (line  33)
+* AE:                                    Inserting Accents.   (line  33)
+* ae:                                    Inserting Accents.   (line  33)
+* afourpaper:                            A4 Paper.            (line   6)
 * appendix:                              unnumbered & appendix.
+                                                              (line   6)
 * appendixsec:                           unnumberedsec appendixsec heading.
+                                                              (line   6)
 * appendixsection:                       unnumberedsec appendixsec heading.
+                                                              (line  18)
 * appendixsubsec:                        unnumberedsubsec appendixsubsec subheading.
-* appendixsubsubsec:                     subsubsection.
+                                                              (line   6)
+* appendixsubsubsec:                     subsubsection.       (line   6)
 * apply:                                 Sample Function Definition.
-* asis:                                  table.
+                                                              (line  14)
+* asis:                                  table.               (line  19)
 * author:                                title subtitle author.
-* b (bold font):                         Fonts.
-* buffer-end:                            Def Cmd Template.
-* bullet:                                bullet.
-* bye <1>:                               File End.
-* bye:                                   Ending a File.
-* c (comment):                           Comments.
-* cartouche:                             cartouche.
-* center:                                titlefont center sp.
-* centerchap:                            chapter.
+                                                              (line   6)
+* b (bold font):                         Fonts.               (line   6)
+* buffer-end:                            Def Cmd Template.    (line  74)
+* bullet:                                bullet.              (line   6)
+* bye <1>:                               File End.            (line   6)
+* bye:                                   Ending a File.       (line   6)
+* c (comment):                           Comments.            (line  16)
+* cartouche:                             cartouche.           (line   6)
+* center:                                titlefont center sp. (line   6)
+* centerchap:                            chapter.             (line  25)
 * chapheading:                           majorheading & chapheading.
-* chapter:                               chapter.
-* cindex:                                Indexing Commands.
-* cite:                                  cite.
-* clear:                                 ifset ifclear.
-* code:                                  code.
+                                                              (line   6)
+* chapter:                               chapter.             (line   6)
+* cindex:                                Indexing Commands.   (line  56)
+* cite:                                  cite.                (line   6)
+* clear:                                 ifset ifclear.       (line  40)
+* code:                                  code.                (line   6)
 * columnfractions:                       Multitable Column Widths.
-* comment:                               Comments.
-* contents:                              Contents.
-* copyright <1>:                         copyright symbol.
+                                                              (line  11)
+* comment:                               Comments.            (line  16)
+* contents:                              Contents.            (line   6)
+* copyright <1>:                         copyright symbol.    (line   6)
 * copyright:                             Copyright & Permissions.
+                                                              (line  30)
 * cropmarks:                             Cropmarks and Magnification.
-* defcodeindex:                          New Indices.
-* defcv:                                 Abstract Objects.
-* deffn:                                 Functions Commands.
-* deffnx:                                deffnx.
-* defindex:                              New Indices.
+                                                              (line   6)
+* defcodeindex:                          New Indices.         (line   6)
+* defcv:                                 Abstract Objects.    (line  17)
+* deffn:                                 Functions Commands.  (line   9)
+* deffnx:                                deffnx.              (line   6)
+* defindex:                              New Indices.         (line   6)
 * definfoenclose:                        Customized Highlighting.
-* defivar:                               Abstract Objects.
-* defmac:                                Functions Commands.
-* defmethod:                             Abstract Objects.
-* defop:                                 Abstract Objects.
-* defopt:                                Variables Commands.
-* defspec:                               Functions Commands.
-* deftp:                                 Data Types.
-* deftypefn:                             Typed Functions.
-* deftypefun:                            Typed Functions.
-* deftypevar:                            Typed Variables.
-* deftypevr:                             Typed Variables.
-* defun:                                 Functions Commands.
-* defvar:                                Variables Commands.
-* defvr:                                 Variables Commands.
-* dfn:                                   dfn.
+                                                              (line  12)
+* defivar:                               Abstract Objects.    (line  39)
+* defmac:                                Functions Commands.  (line  67)
+* defmethod:                             Abstract Objects.    (line  96)
+* defop:                                 Abstract Objects.    (line  52)
+* defopt:                                Variables Commands.  (line  56)
+* defspec:                               Functions Commands.  (line  72)
+* deftp:                                 Data Types.          (line   8)
+* deftypefn:                             Typed Functions.     (line  10)
+* deftypefun:                            Typed Functions.     (line  75)
+* deftypevar:                            Typed Variables.     (line  42)
+* deftypevr:                             Typed Variables.     (line  12)
+* defun:                                 Functions Commands.  (line  42)
+* defvar:                                Variables Commands.  (line  38)
+* defvr:                                 Variables Commands.  (line   8)
+* dfn:                                   dfn.                 (line   6)
 * dircategory:                           Installing Dir Entries.
+                                                              (line  11)
 * direntry:                              Installing Dir Entries.
-* display:                               display.
-* dmn:                                   dmn.
-* dotaccent:                             Inserting Accents.
-* dotless:                               Inserting Accents.
-* dots:                                  dots.
-* email:                                 email.
-* emph:                                  emph & strong.
-* end <1>:                               Introducing Lists.
+                                                              (line  11)
+* display:                               display.             (line   6)
+* dmn:                                   dmn.                 (line   6)
+* dotaccent:                             Inserting Accents.   (line  13)
+* dotless:                               Inserting Accents.   (line  33)
+* dots:                                  dots.                (line   6)
+* email:                                 email.               (line   6)
+* emph:                                  emph & strong.       (line   6)
+* end <1>:                               Introducing Lists.   (line  20)
 * end:                                   Quotations and Examples.
-* end titlepage:                         end titlepage.
-* enumerate:                             enumerate.
-* evenfooting:                           Custom Headings.
-* evenheading:                           Custom Headings.
-* everyfooting:                          Custom Headings.
-* everyheading:                          Custom Headings.
-* example:                               example.
-* exclamdown:                            Inserting Accents.
-* exdent:                                exdent.
-* file:                                  file.
+                                                              (line  15)
+* end titlepage:                         end titlepage.       (line   6)
+* enumerate:                             enumerate.           (line   6)
+* evenfooting:                           Custom Headings.     (line  53)
+* evenheading:                           Custom Headings.     (line  53)
+* everyfooting:                          Custom Headings.     (line  46)
+* everyheading:                          Custom Headings.     (line  46)
+* example:                               example.             (line   6)
+* exclamdown:                            Inserting Accents.   (line  33)
+* exdent:                                exdent.              (line   6)
+* file:                                  file.                (line   6)
 * filll:                                 Copyright & Permissions.
-* finalout:                              Overfull hboxes.
-* findex:                                Indexing Commands.
+                                                              (line  16)
+* finalout:                              Overfull hboxes.     (line  33)
+* findex:                                Indexing Commands.   (line  59)
 * flushleft:                             flushleft & flushright.
+                                                              (line   6)
 * flushright:                            flushleft & flushright.
-* foobar:                                Optional Arguments.
-* footnote:                              Footnotes.
-* footnotestyle:                         Footnote Styles.
-* format:                                format.
-* forward-word:                          Def Cmd Template.
-* ftable:                                ftable vtable.
-* group:                                 group.
-* H:                                     Inserting Accents.
+                                                              (line   6)
+* foobar:                                Optional Arguments.  (line  23)
+* footnote:                              Footnotes.           (line   6)
+* footnotestyle:                         Footnote Styles.     (line  43)
+* format:                                format.              (line   6)
+* forward-word:                          Def Cmd Template.    (line  31)
+* ftable:                                ftable vtable.       (line   6)
+* group:                                 group.               (line   6)
+* H:                                     Inserting Accents.   (line  13)
 * heading:                               unnumberedsec appendixsec heading.
-* headings:                              headings on off.
+                                                              (line   6)
+* headings:                              headings on off.     (line   6)
 * html:                                  Raw Formatter Commands.
-* hyphenation:                           - and hyphenation.
-* i (italic font):                       Fonts.
-* ifclear:                               ifset ifclear.
+                                                              (line  37)
+* hyphenation:                           - and hyphenation.   (line   6)
+* i (italic font):                       Fonts.               (line   6)
+* ifclear:                               ifset ifclear.       (line  60)
 * ifhtml <1>:                            Raw Formatter Commands.
+                                                              (line  37)
 * ifhtml:                                Conditional Commands.
+                                                              (line  14)
 * ifinfo:                                Conditional Commands.
+                                                              (line   6)
 * ifnothtml:                             Conditional Not Commands.
+                                                              (line   6)
 * ifnotinfo:                             Conditional Not Commands.
+                                                              (line   6)
 * ifnottex:                              Conditional Not Commands.
-* ifset:                                 ifset ifclear.
+                                                              (line   6)
+* ifset:                                 ifset ifclear.       (line   6)
 * iftex:                                 Conditional Commands.
-* ignore:                                Comments.
-* image:                                 Images.
-* include:                               Using Include Files.
+                                                              (line  14)
+* ignore:                                Comments.            (line  26)
+* image:                                 Images.              (line   6)
+* include:                               Using Include Files. (line   6)
 * Info-validate:                         Running Info-Validate.
-* inforef:                               inforef.
-* input (TeX command):                   Minimum.
-* isearch-backward:                      deffnx.
-* isearch-forward:                       deffnx.
-* item <1>:                              Multitable Rows.
-* item <2>:                              table.
-* item:                                  itemize.
-* itemize:                               itemize.
-* itemx:                                 itemx.
-* kbd:                                   kbd.
-* kbdinputstyle:                         kbd.
-* key:                                   key.
-* kindex:                                Indexing Commands.
-* L:                                     Inserting Accents.
-* l:                                     Inserting Accents.
-* lisp:                                  Lisp Example.
+                                                              (line   6)
+* inforef:                               inforef.             (line   6)
+* input (TeX command):                   Minimum.             (line  24)
+* isearch-backward:                      deffnx.              (line  22)
+* isearch-forward:                       deffnx.              (line  21)
+* item <1>:                              Multitable Rows.     (line   6)
+* item <2>:                              table.               (line  35)
+* item:                                  itemize.             (line  23)
+* itemize:                               itemize.             (line   6)
+* itemx:                                 itemx.               (line   6)
+* kbd:                                   kbd.                 (line   6)
+* kbdinputstyle:                         kbd.                 (line  20)
+* key:                                   key.                 (line   6)
+* kindex:                                Indexing Commands.   (line  65)
+* L:                                     Inserting Accents.   (line  33)
+* l:                                     Inserting Accents.   (line  33)
+* lisp:                                  Lisp Example.        (line   6)
 * lowersections:                         Raise/lower sections.
-* macro:                                 Defining Macros.
+                                                              (line   6)
+* macro:                                 Defining Macros.     (line   6)
 * mag (TeX command):                     Cropmarks and Magnification.
+                                                              (line  24)
 * majorheading:                          majorheading & chapheading.
-* makeinfo-buffer:                       makeinfo in Emacs.
-* makeinfo-kill-job:                     makeinfo in Emacs.
-* makeinfo-recenter-output-buffer:       makeinfo in Emacs.
-* makeinfo-region:                       makeinfo in Emacs.
-* math:                                  math.
-* menu:                                  Menus.
-* minus:                                 minus.
-* multitable:                            Multi-column Tables.
-* need:                                  need.
-* next-error:                            makeinfo in Emacs.
-* noindent:                              noindent.
-* O:                                     Inserting Accents.
-* o:                                     Inserting Accents.
-* occur:                                 Using occur.
+                                                              (line   6)
+* makeinfo-buffer:                       makeinfo in Emacs.   (line  16)
+* makeinfo-kill-job:                     makeinfo in Emacs.   (line  38)
+* makeinfo-recenter-output-buffer:       makeinfo in Emacs.   (line  43)
+* makeinfo-region:                       makeinfo in Emacs.   (line  12)
+* math:                                  math.                (line   6)
+* menu:                                  Menus.               (line   6)
+* minus:                                 minus.               (line   6)
+* multitable:                            Multi-column Tables. (line   6)
+* need:                                  need.                (line   6)
+* next-error:                            makeinfo in Emacs.   (line  27)
+* noindent:                              noindent.            (line   6)
+* O:                                     Inserting Accents.   (line  33)
+* o:                                     Inserting Accents.   (line  33)
+* occur:                                 Using occur.         (line   6)
 * occur-mode-goto-occurrence:            Showing the Structure.
-* oddfooting:                            Custom Headings.
-* oddheading:                            Custom Headings.
-* OE:                                    Inserting Accents.
-* oe:                                    Inserting Accents.
-* page:                                  page.
-* paragraphindent:                       paragraphindent.
-* pindex:                                Indexing Commands.
-* pounds:                                pounds.
+                                                              (line  22)
+* oddfooting:                            Custom Headings.     (line  53)
+* oddheading:                            Custom Headings.     (line  53)
+* OE:                                    Inserting Accents.   (line  33)
+* oe:                                    Inserting Accents.   (line  33)
+* page:                                  page.                (line   6)
+* paragraphindent:                       paragraphindent.     (line   6)
+* pindex:                                Indexing Commands.   (line  68)
+* pounds:                                pounds.              (line   6)
 * printindex:                            Printing Indices & Menus.
-* pxref:                                 pxref.
-* questiondown:                          Inserting Accents.
-* quotation:                             quotation.
-* r (Roman font):                        Fonts.
+                                                              (line   6)
+* pxref:                                 pxref.               (line   6)
+* questiondown:                          Inserting Accents.   (line  33)
+* quotation:                             quotation.           (line   6)
+* r (Roman font):                        Fonts.               (line   6)
 * raisesections:                         Raise/lower sections.
-* ref:                                   ref.
+                                                              (line   6)
+* ref:                                   ref.                 (line   6)
 * refill:                                Refilling Paragraphs.
-* ringaccent:                            Inserting Accents.
-* samp:                                  samp.
-* sc (small caps font):                  Smallcaps.
-* section:                               section.
-* set:                                   ifset ifclear.
-* setchapternewpage:                     setchapternewpage.
-* setfilename:                           setfilename.
-* settitle:                              settitle.
-* shortcontents:                         Contents.
-* shorttitlepage:                        titlepage.
-* smallbook:                             smallbook.
+                                                              (line   6)
+* ringaccent:                            Inserting Accents.   (line  13)
+* samp:                                  samp.                (line   6)
+* sc (small caps font):                  Smallcaps.           (line   6)
+* section:                               section.             (line   6)
+* set:                                   ifset ifclear.       (line  12)
+* setchapternewpage:                     setchapternewpage.   (line   6)
+* setfilename:                           setfilename.         (line   6)
+* settitle:                              settitle.            (line   6)
+* shortcontents:                         Contents.            (line   6)
+* shorttitlepage:                        titlepage.           (line  40)
+* smallbook:                             smallbook.           (line   6)
 * smallexample:                          smallexample & smalllisp.
+                                                              (line   6)
 * smalllisp:                             smallexample & smalllisp.
-* sp (line spacing):                     sp.
-* sp (titlepage line spacing):           titlefont center sp.
-* ss:                                    Inserting Accents.
-* strong:                                emph & strong.
+                                                              (line   6)
+* sp (line spacing):                     sp.                  (line   6)
+* sp (titlepage line spacing):           titlefont center sp. (line   6)
+* ss:                                    Inserting Accents.   (line  33)
+* strong:                                emph & strong.       (line   6)
 * subheading:                            unnumberedsubsec appendixsubsec subheading.
-* subsection:                            subsection.
-* subsubheading:                         subsubsection.
-* subsubsection:                         subsubsection.
+                                                              (line   6)
+* subsection:                            subsection.          (line   6)
+* subsubheading:                         subsubsection.       (line   6)
+* subsubsection:                         subsubsection.       (line   6)
 * subtitle:                              title subtitle author.
-* summarycontents:                       Contents.
-* syncodeindex:                          syncodeindex.
-* synindex:                              synindex.
-* t (typewriter font):                   Fonts.
-* table:                                 Two-column Tables.
+                                                              (line   6)
+* summarycontents:                       Contents.            (line   6)
+* syncodeindex:                          syncodeindex.        (line   6)
+* synindex:                              synindex.            (line   6)
+* t (typewriter font):                   Fonts.               (line   6)
+* table:                                 Two-column Tables.   (line   6)
 * tex:                                   Raw Formatter Commands.
-* tex (command):                         tex.
-* texinfo-all-menus-update:              Updating Commands.
-* texinfo-every-node-update:             Updating Commands.
+                                                              (line  19)
+* tex (command):                         tex.                 (line   6)
+* texinfo-all-menus-update:              Updating Commands.   (line 112)
+* texinfo-every-node-update:             Updating Commands.   (line 107)
 * texinfo-format-buffer <1>:             texinfo-format commands.
-* texinfo-format-buffer:                 Info Formatting.
+                                                              (line   6)
+* texinfo-format-buffer:                 Info Formatting.     (line  22)
 * texinfo-format-region <1>:             texinfo-format commands.
-* texinfo-format-region:                 Info Formatting.
+                                                              (line   6)
+* texinfo-format-region:                 Info Formatting.     (line  13)
 * texinfo-indent-menu-description:       Other Updating Commands.
-* texinfo-insert-@code:                  Inserting.
-* texinfo-insert-@dfn:                   Inserting.
-* texinfo-insert-@end:                   Inserting.
-* texinfo-insert-@example:               Inserting.
-* texinfo-insert-@item:                  Inserting.
-* texinfo-insert-@kbd:                   Inserting.
-* texinfo-insert-@node:                  Inserting.
-* texinfo-insert-@noindent:              Inserting.
-* texinfo-insert-@samp:                  Inserting.
-* texinfo-insert-@table:                 Inserting.
-* texinfo-insert-@var:                   Inserting.
-* texinfo-insert-braces:                 Inserting.
+                                                              (line  45)
+* texinfo-insert-@code:                  Inserting.           (line  15)
+* texinfo-insert-@dfn:                   Inserting.           (line  19)
+* texinfo-insert-@end:                   Inserting.           (line  23)
+* texinfo-insert-@example:               Inserting.           (line  62)
+* texinfo-insert-@item:                  Inserting.           (line  30)
+* texinfo-insert-@kbd:                   Inserting.           (line  35)
+* texinfo-insert-@node:                  Inserting.           (line  39)
+* texinfo-insert-@noindent:              Inserting.           (line  44)
+* texinfo-insert-@samp:                  Inserting.           (line  49)
+* texinfo-insert-@table:                 Inserting.           (line  53)
+* texinfo-insert-@var:                   Inserting.           (line  58)
+* texinfo-insert-braces:                 Inserting.           (line  67)
 * texinfo-insert-node-lines:             Other Updating Commands.
-* texinfo-make-menu:                     Updating Commands.
-* texinfo-master-menu:                   Updating Commands.
+                                                              (line  10)
+* texinfo-make-menu:                     Updating Commands.   (line  93)
+* texinfo-master-menu:                   Updating Commands.   (line  55)
 * texinfo-multiple-files-update:         texinfo-multiple-files-update.
+                                                              (line   6)
 * texinfo-multiple-files-update (in brief): Other Updating Commands.
+                                                              (line  34)
 * texinfo-sequential-node-update:        Other Updating Commands.
+                                                              (line  54)
 * texinfo-show-structure <1>:            Using texinfo-show-structure.
+                                                              (line   6)
 * texinfo-show-structure:                Showing the Structure.
-* texinfo-start-menu-description:        Inserting.
-* texinfo-tex-buffer:                    Printing.
-* texinfo-tex-print:                     Printing.
-* texinfo-tex-region:                    Printing.
-* texinfo-update-node:                   Updating Commands.
-* thischapter:                           Custom Headings.
-* thischaptername:                       Custom Headings.
-* thisfile:                              Custom Headings.
-* thispage:                              Custom Headings.
-* thistitle:                             Custom Headings.
-* tieaccent:                             Inserting Accents.
-* tindex:                                Indexing Commands.
+                                                              (line  18)
+* texinfo-start-menu-description:        Inserting.           (line  94)
+* texinfo-tex-buffer:                    Printing.            (line  21)
+* texinfo-tex-print:                     Printing.            (line  42)
+* texinfo-tex-region:                    Printing.            (line  27)
+* texinfo-update-node:                   Updating Commands.   (line  83)
+* thischapter:                           Custom Headings.     (line  75)
+* thischaptername:                       Custom Headings.     (line  72)
+* thisfile:                              Custom Headings.     (line  83)
+* thispage:                              Custom Headings.     (line  69)
+* thistitle:                             Custom Headings.     (line  79)
+* tieaccent:                             Inserting Accents.   (line  13)
+* tindex:                                Indexing Commands.   (line  71)
 * title:                                 title subtitle author.
-* titlefont:                             titlefont center sp.
-* titlepage:                             titlepage.
-* today:                                 Custom Headings.
+                                                              (line   6)
+* titlefont:                             titlefont center sp. (line   6)
+* titlepage:                             titlepage.           (line   6)
+* today:                                 Custom Headings.     (line  92)
 * top (@-command):                       makeinfo top command.
-* u:                                     Inserting Accents.
-* ubaraccent:                            Inserting Accents.
-* udotaccent:                            Inserting Accents.
-* unmacro:                               Defining Macros.
+                                                              (line   6)
+* u:                                     Inserting Accents.   (line  13)
+* ubaraccent:                            Inserting Accents.   (line  13)
+* udotaccent:                            Inserting Accents.   (line  13)
+* unmacro:                               Defining Macros.     (line  26)
 * unnumbered:                            unnumbered & appendix.
+                                                              (line   6)
 * unnumberedsec:                         unnumberedsec appendixsec heading.
+                                                              (line   6)
 * unnumberedsubsec:                      unnumberedsubsec appendixsubsec subheading.
-* unnumberedsubsubsec:                   subsubsection.
-* up-list:                               Inserting.
-* uref:                                  uref.
-* url:                                   url.
-* v:                                     Inserting Accents.
-* value:                                 value.
-* var:                                   var.
-* vindex:                                Indexing Commands.
+                                                              (line   6)
+* unnumberedsubsubsec:                   subsubsection.       (line   6)
+* up-list:                               Inserting.           (line  72)
+* uref:                                  uref.                (line   6)
+* url:                                   url.                 (line   6)
+* v:                                     Inserting Accents.   (line  13)
+* value:                                 value.               (line   6)
+* var:                                   var.                 (line   6)
+* vindex:                                Indexing Commands.   (line  62)
 * vskip:                                 Copyright & Permissions.
-* vtable:                                ftable vtable.
-* w (prevent line break):                w.
-* xref:                                  xref.
-* { (single {):                          Inserting Braces.
-* } (single }):                          Inserting Braces.
-* ~:                                     Inserting Accents.
+                                                              (line  16)
+* vtable:                                ftable vtable.       (line   6)
+* w (prevent line break):                w.                   (line   6)
+* xref:                                  xref.                (line   6)
+* { (single {):                          Inserting Braces.    (line   6)
+* } (single }):                          Inserting Braces.    (line   6)
+* ~:                                     Inserting Accents.   (line  13)
 
 \1f
 File: texinfo.info,  Node: Concept Index,  Prev: Command and Variable Index,  Up: Top
@@ -5565,604 +5702,743 @@ File: texinfo.info,  Node: Concept Index,  Prev: Command and Variable Index,  Up
 Concept Index
 *************
 
+\0\b[index\0\b]
 * Menu:
 
-* !:                                     Inserting Accents.
-* (dir) as Up node of Top node:          First Node.
+* !:                                     Inserting Accents.   (line  33)
+* (dir) as Up node of Top node:          First Node.          (line  11)
 * --delete:                              Invoking install-info.
+                                                              (line  25)
 * --dir-file=NAME:                       Invoking install-info.
+                                                              (line  30)
 * --entry=TEXT:                          Invoking install-info.
-* --error-limit=LIMIT:                   makeinfo options.
-* --fill-column=WIDTH:                   makeinfo options.
-* --footnote-style=STYLE:                makeinfo options.
-* --force:                               makeinfo options.
+                                                              (line  34)
+* --error-limit=LIMIT:                   makeinfo options.    (line  32)
+* --fill-column=WIDTH:                   makeinfo options.    (line  37)
+* --footnote-style=STYLE:                makeinfo options.    (line  45)
+* --force:                               makeinfo options.    (line  55)
 * --help <1>:                            Invoking install-info.
-* --help:                                makeinfo options.
+                                                              (line  41)
+* --help:                                makeinfo options.    (line  59)
 * --info-dir=DIR:                        Invoking install-info.
+                                                              (line  49)
 * --info-file=FILE:                      Invoking install-info.
+                                                              (line  45)
 * --item=TEXT:                           Invoking install-info.
-* --no-headers:                          makeinfo options.
-* --no-number-footnotes:                 makeinfo options.
-* --no-pointer-validate:                 makeinfo options.
-* --no-split:                            makeinfo options.
-* --no-validate:                         makeinfo options.
-* --no-warn:                             makeinfo options.
-* --output=FILE:                         makeinfo options.
-* --paragraph-indent=INDENT:             makeinfo options.
+                                                              (line  52)
+* --no-headers:                          makeinfo options.    (line  68)
+* --no-number-footnotes:                 makeinfo options.    (line  93)
+* --no-pointer-validate:                 makeinfo options.    (line  81)
+* --no-split:                            makeinfo options.    (line  75)
+* --no-validate:                         makeinfo options.    (line  81)
+* --no-warn:                             makeinfo options.    (line  87)
+* --output=FILE:                         makeinfo options.    (line  99)
+* --paragraph-indent=INDENT:             makeinfo options.    (line 109)
 * --quiet:                               Invoking install-info.
-* --reference-limit=LIMIT:               makeinfo options.
+                                                              (line  56)
+* --reference-limit=LIMIT:               makeinfo options.    (line 124)
 * --remove:                              Invoking install-info.
+                                                              (line  59)
 * --section=SEC:                         Invoking install-info.
-* --verbose:                             makeinfo options.
+                                                              (line  62)
+* --verbose:                             makeinfo options.    (line 134)
 * --version <1>:                         Invoking install-info.
-* --version:                             makeinfo options.
-* -D VAR:                                makeinfo options.
-* -I DIR:                                makeinfo options.
-* -o FILE:                               makeinfo options.
-* -P DIR:                                makeinfo options.
-* .cshrc initialization file:            Preparing for TeX.
-* .profile initialization file:          Preparing for TeX.
-* /L:                                    Inserting Accents.
-* /l:                                    Inserting Accents.
-* /O:                                    Inserting Accents.
-* /o:                                    Inserting Accents.
-* ?:                                     Inserting Accents.
+                                                              (line  68)
+* --version:                             makeinfo options.    (line 139)
+* -D VAR:                                makeinfo options.    (line  28)
+* -I DIR:                                makeinfo options.    (line  63)
+* -o FILE:                               makeinfo options.    (line  99)
+* -P DIR:                                makeinfo options.    (line 105)
+* .cshrc initialization file:            Preparing for TeX.   (line   6)
+* .profile initialization file:          Preparing for TeX.   (line   6)
+* /L:                                    Inserting Accents.   (line  33)
+* /l:                                    Inserting Accents.   (line  33)
+* /O:                                    Inserting Accents.   (line  33)
+* /o:                                    Inserting Accents.   (line  33)
+* ?:                                     Inserting Accents.   (line  33)
 * @-command in nodename:                 Node Line Requirements.
-* @-command list:                        Command List.
-* @-command syntax:                      Command Syntax.
-* @-commands:                            Formatting Commands.
-* @include file sample:                  Sample Include File.
-* @menu parts:                           Menu Parts.
-* @node line writing:                    Writing a Node.
-* A4 paper, printing on:                 A4 Paper.
-* AA:                                    Inserting Accents.
-* aa:                                    Inserting Accents.
-* Abbreviations for keys:                key.
-* Accents, inserting:                    Inserting Accents.
-* Acute accent:                          Inserting Accents.
-* Adding a new info file:                New Info File.
-* AE:                                    Inserting Accents.
-* ae:                                    Inserting Accents.
-* Alphabetical @-command list:           Command List.
+                                                              (line  23)
+* @-command list:                        Command List.        (line   6)
+* @-command syntax:                      Command Syntax.      (line   6)
+* @-commands:                            Formatting Commands. (line   6)
+* @include file sample:                  Sample Include File. (line   6)
+* @menu parts:                           Menu Parts.          (line   6)
+* @node line writing:                    Writing a Node.      (line   6)
+* A4 paper, printing on:                 A4 Paper.            (line   6)
+* AA:                                    Inserting Accents.   (line  33)
+* aa:                                    Inserting Accents.   (line  33)
+* Abbreviations for keys:                key.                 (line  19)
+* Accents, inserting:                    Inserting Accents.   (line   6)
+* Acute accent:                          Inserting Accents.   (line  13)
+* Adding a new info file:                New Info File.       (line   6)
+* AE:                                    Inserting Accents.   (line  33)
+* ae:                                    Inserting Accents.   (line  33)
+* Alphabetical @-command list:           Command List.        (line   6)
 * Another Info directory:                Other Info Directories.
+                                                              (line   6)
 * Apostrophe in nodename:                Node Line Requirements.
-* Arguments, repeated and optional:      Optional Arguments.
-* Aspect ratio of images:                Images.
+                                                              (line  34)
+* Arguments, repeated and optional:      Optional Arguments.  (line   6)
+* Aspect ratio of images:                Images.              (line  16)
 * Automatic pointer creation with makeinfo: makeinfo Pointer Creation.
+                                                              (line   6)
 * Automatically insert nodes, menus:     Updating Nodes and Menus.
-* Backslash, and macros:                 Invoking Macros.
+                                                              (line   6)
+* Backslash, and macros:                 Invoking Macros.     (line  23)
 * Badly referenced nodes:                Running Info-Validate.
-* Batch formatting for Info:             Batch Formatting.
-* Beginning a Texinfo file:              Beginning a File.
-* Beginning line of a Texinfo file:      First Line.
-* Berry, Karl:                           Acknowledgements.
-* Big points:                            Images.
-* Black rectangle in hardcopy:           Overfull hboxes.
-* Blank lines:                           sp.
-* Body of a macro:                       Defining Macros.
-* Book characteristics, printed:         Printed Books.
-* Book, printing small:                  smallbook.
-* Box with rounded corners:              cartouche.
-* Braces and argument syntax:            Command Syntax.
-* Braces, inserting:                     Braces Atsigns.
-* Braces, when to use:                   Formatting Commands.
-* Breaks in a line:                      Line Breaks.
-* Breve accent:                          Inserting Accents.
-* Buffer formatting and printing:        Printing.
-* Bullets, inserting:                    Dots Bullets.
+                                                              (line   6)
+* Batch formatting for Info:             Batch Formatting.    (line   6)
+* Beginning a Texinfo file:              Beginning a File.    (line   6)
+* Beginning line of a Texinfo file:      First Line.          (line   6)
+* Berry, Karl:                           Acknowledgements.    (line   6)
+* Big points:                            Images.              (line  33)
+* Black rectangle in hardcopy:           Overfull hboxes.     (line  28)
+* Blank lines:                           sp.                  (line   6)
+* Body of a macro:                       Defining Macros.     (line  19)
+* Book characteristics, printed:         Printed Books.       (line   6)
+* Book, printing small:                  smallbook.           (line   6)
+* Box with rounded corners:              cartouche.           (line   6)
+* Braces and argument syntax:            Command Syntax.      (line  40)
+* Braces, inserting:                     Braces Atsigns.      (line   6)
+* Braces, when to use:                   Formatting Commands. (line  49)
+* Breaks in a line:                      Line Breaks.         (line   6)
+* Breve accent:                          Inserting Accents.   (line  13)
+* Buffer formatting and printing:        Printing.            (line   6)
+* Bullets, inserting:                    Dots Bullets.        (line   6)
 * Case in nodename:                      Node Line Requirements.
-* Catching errors with Info formatting:  Debugging with Info.
-* Catching errors with TeX formatting:   Debugging with TeX.
-* Catching mistakes:                     Catching Mistakes.
-* Cedilla accent:                        Inserting Accents.
-* Centimeters:                           Images.
-* Chapter structuring:                   Structuring.
-* Characteristics, printed books or manuals: Printed Books.
-* Chassell, Robert J.:                   Acknowledgements.
-* Check accent:                          Inserting Accents.
+                                                              (line  45)
+* Catching errors with Info formatting:  Debugging with Info. (line   6)
+* Catching errors with TeX formatting:   Debugging with TeX.  (line   6)
+* Catching mistakes:                     Catching Mistakes.   (line   6)
+* Cedilla accent:                        Inserting Accents.   (line  13)
+* Centimeters:                           Images.              (line  39)
+* Chapter structuring:                   Structuring.         (line   6)
+* Characteristics, printed books or manuals: Printed Books.   (line   6)
+* Chassell, Robert J.:                   Acknowledgements.    (line   6)
+* Check accent:                          Inserting Accents.   (line  13)
 * Checking for badly referenced nodes:   Running Info-Validate.
-* Ciceros:                               Images.
-* Circumflex accent:                     Inserting Accents.
-* code, arg to @kbdinputstyle:           kbd.
+                                                              (line   6)
+* Ciceros:                               Images.              (line  48)
+* Circumflex accent:                     Inserting Accents.   (line  13)
+* code, arg to @kbdinputstyle:           kbd.                 (line  24)
 * colon last in INFOPATH:                Other Info Directories.
+                                                              (line  69)
 * Column widths, defining for multitables: Multitable Column Widths.
-* Combining indices:                     Combining Indices.
+                                                              (line   6)
+* Combining indices:                     Combining Indices.   (line   6)
 * Comma in nodename:                     Node Line Requirements.
+                                                              (line  34)
 * Command definitions:                   Sample Function Definition.
-* Commands to insert special characters: Braces Atsigns.
+                                                              (line   6)
+* Commands to insert special characters: Braces Atsigns.      (line   6)
 * Commands using raw HTML:               Raw Formatter Commands.
+                                                              (line   6)
 * Commands using raw TeX:                Raw Formatter Commands.
-* Commands, inserting them:              Inserting.
-* Comments:                              Comments.
-* Compile command for formatting:        Compile-Command.
-* Conditionally visible text:            Conditionals.
-* Conditions for copying Texinfo:        Copying.
-* Contents, Table of:                    Contents.
+                                                              (line   6)
+* Commands, inserting them:              Inserting.           (line   6)
+* Comments:                              Comments.            (line  16)
+* Compile command for formatting:        Compile-Command.     (line   6)
+* Conditionally visible text:            Conditionals.        (line   6)
+* Conditions for copying Texinfo:        Copying.             (line   6)
+* Contents, Table of:                    Contents.            (line   6)
 * Contents-like outline of file structure: Showing the Structure.
-* Conventions for writing definitions:   Def Cmd Conventions.
-* Conventions, syntactic:                Conventions.
-* Copying conditions:                    Copying.
-* Copying permissions:                   Sample Permissions.
+                                                              (line   6)
+* Conventions for writing definitions:   Def Cmd Conventions. (line   6)
+* Conventions, syntactic:                Conventions.         (line   6)
+* Copying conditions:                    Copying.             (line   6)
+* Copying permissions:                   Sample Permissions.  (line   6)
 * Copying software:                      Software Copying Permissions.
+                                                              (line   6)
 * Copyright page:                        Copyright & Permissions.
-* Correcting mistakes:                   Catching Mistakes.
+                                                              (line   6)
+* Correcting mistakes:                   Catching Mistakes.   (line   6)
 * Create nodes, menus automatically:     Updating Nodes and Menus.
-* Creating an Info file:                 Create an Info File.
-* Creating an unsplit file:              Unsplit.
-* Creating index entries:                Indexing Commands.
-* Creating indices:                      Indices.
+                                                              (line   6)
+* Creating an Info file:                 Create an Info File. (line   6)
+* Creating an unsplit file:              Unsplit.             (line   6)
+* Creating index entries:                Indexing Commands.   (line   6)
+* Creating indices:                      Indices.             (line   6)
 * Creating pointers with makeinfo:       makeinfo Pointer Creation.
+                                                              (line   6)
 * Cropmarks for printing:                Cropmarks and Magnification.
+                                                              (line   6)
 * Cross reference parts:                 Cross Reference Parts.
-* Cross references:                      Cross References.
-* Cross references using @inforef:       inforef.
-* Cross references using @pxref:         pxref.
-* Cross references using @ref:           ref.
-* Cross references using @xref:          xref.
+                                                              (line   6)
+* Cross references:                      Cross References.    (line   6)
+* Cross references using @inforef:       inforef.             (line   6)
+* Cross references using @pxref:         pxref.               (line   6)
+* Cross references using @ref:           ref.                 (line   6)
+* Cross references using @xref:          xref.                (line   6)
 * Customized highlighting:               Customized Highlighting.
-* Customizing of TeX for Texinfo:        Preparing for TeX.
-* Debugging the Texinfo structure:       Catching Mistakes.
-* Debugging with Info formatting:        Debugging with Info.
-* Debugging with TeX formatting:         Debugging with TeX.
-* Defining indexing entries:             Indexing Commands.
-* Defining macros:                       Defining Macros.
-* Defining new indices:                  New Indices.
-* Defining new Texinfo commands:         Macros.
-* Definition commands:                   Definition Commands.
-* Definition conventions:                Def Cmd Conventions.
-* Definition template:                   Def Cmd Template.
-* Definitions grouped together:          deffnx.
-* Description for menu, start:           Inserting.
-* Dido^t points:                         Images.
+                                                              (line   6)
+* Customizing of TeX for Texinfo:        Preparing for TeX.   (line  24)
+* Debugging the Texinfo structure:       Catching Mistakes.   (line   6)
+* Debugging with Info formatting:        Debugging with Info. (line   6)
+* Debugging with TeX formatting:         Debugging with TeX.  (line   6)
+* Defining indexing entries:             Indexing Commands.   (line   6)
+* Defining macros:                       Defining Macros.     (line   6)
+* Defining new indices:                  New Indices.         (line   6)
+* Defining new Texinfo commands:         Macros.              (line   6)
+* Definition commands:                   Definition Commands. (line   6)
+* Definition conventions:                Def Cmd Conventions. (line   6)
+* Definition template:                   Def Cmd Template.    (line   6)
+* Definitions grouped together:          deffnx.              (line   6)
+* Description for menu, start:           Inserting.           (line  94)
+* Dido^t points:                         Images.              (line  45)
 * Different cross reference commands:    Cross Reference Commands.
-* Dimension formatting:                  dmn.
-* Dimensions and image sizes:            Images.
+                                                              (line   6)
+* Dimension formatting:                  dmn.                 (line   6)
+* Dimensions and image sizes:            Images.              (line  23)
 * dir directory for Info installation:   Install an Info File.
-* dir file listing:                      New Info File.
+                                                              (line   6)
+* dir file listing:                      New Info File.       (line   6)
 * dir, created by install-info:          Invoking install-info.
-* Display formatting:                    display.
-* distinct, arg to @kbdinputstyle:       kbd.
-* Distorting images:                     Images.
+                                                              (line  19)
+* Display formatting:                    display.             (line   6)
+* distinct, arg to @kbdinputstyle:       kbd.                 (line  24)
+* Distorting images:                     Images.              (line  16)
 * Distribution:                          Software Copying Permissions.
-* Dot accent:                            Inserting Accents.
-* Dotless i, j:                          Inserting Accents.
-* Dots, inserting <1>:                   dots.
-* Dots, inserting:                       Dots Bullets.
+                                                              (line   6)
+* Dot accent:                            Inserting Accents.   (line  13)
+* Dotless i, j:                          Inserting Accents.   (line  33)
+* Dots, inserting <1>:                   dots.                (line   6)
+* Dots, inserting:                       Dots Bullets.        (line   6)
 * Double-colon menu entries:             Less Cluttered Menu Entry.
+                                                              (line   6)
 * DVI file:                              Format with tex/texindex.
-* Ellipsis, inserting:                   Dots Bullets.
-* Emacs:                                 Texinfo Mode.
-* Emacs shell, format, print from:       Within Emacs.
-* Emphasizing text:                      Emphasis.
-* Emphasizing text, font for:            emph & strong.
+                                                              (line   6)
+* Ellipsis, inserting:                   Dots Bullets.        (line   6)
+* Emacs:                                 Texinfo Mode.        (line   6)
+* Emacs shell, format, print from:       Within Emacs.        (line   6)
+* Emphasizing text:                      Emphasis.            (line   6)
+* Emphasizing text, font for:            emph & strong.       (line   6)
 * Enclosure command for Info:            Customized Highlighting.
-* End node footnote style:               Footnote Styles.
-* End of header line:                    End of Header.
-* End titlepage starts headings:         end titlepage.
-* Ending a Sentence:                     Ending a Sentence.
-* Ending a Texinfo file:                 Ending a File.
-* Entries for an index:                  Indexing Commands.
-* Entries, making index:                 Index Entries.
-* Enumeration:                           enumerate.
-* epsf.tex:                              Images.
-* epsf.tex, installing:                  Preparing for TeX.
-* Equivalence, indicating it:            Equivalence.
-* Error message, indicating it:          Error Glyph.
-* Errors, parsing:                       makeinfo in Emacs.
-* Es-zet:                                Inserting Accents.
-* European A4 paper:                     A4 Paper.
-* Evaluation glyph:                      result.
+                                                              (line  12)
+* End node footnote style:               Footnote Styles.     (line   9)
+* End of header line:                    End of Header.       (line   6)
+* End titlepage starts headings:         end titlepage.       (line   6)
+* Ending a Sentence:                     Ending a Sentence.   (line   6)
+* Ending a Texinfo file:                 Ending a File.       (line   6)
+* Entries for an index:                  Indexing Commands.   (line   6)
+* Entries, making index:                 Index Entries.       (line   6)
+* Enumeration:                           enumerate.           (line   6)
+* epsf.tex:                              Images.              (line  58)
+* epsf.tex, installing:                  Preparing for TeX.   (line  19)
+* Equivalence, indicating it:            Equivalence.         (line   6)
+* Error message, indicating it:          Error Glyph.         (line   6)
+* Errors, parsing:                       makeinfo in Emacs.   (line  27)
+* Es-zet:                                Inserting Accents.   (line  33)
+* European A4 paper:                     A4 Paper.            (line   6)
+* Evaluation glyph:                      result.              (line   6)
 * Example for a small book:              smallexample & smalllisp.
-* Example menu:                          Menu Example.
-* example, arg to @kbdinputstyle:        kbd.
-* Examples, formatting them:             example.
-* Expansion, indicating it:              expansion.
-* File beginning:                        Beginning a File.
-* File ending:                           Ending a File.
+                                                              (line   6)
+* Example menu:                          Menu Example.        (line   6)
+* example, arg to @kbdinputstyle:        kbd.                 (line  24)
+* Examples, formatting them:             example.             (line   6)
+* Expansion, indicating it:              expansion.           (line   6)
+* File beginning:                        Beginning a File.    (line   6)
+* File ending:                           Ending a File.       (line   6)
 * File section structure, showing it:    Showing the Structure.
+                                                              (line   6)
 * Filling paragraphs:                    Refilling Paragraphs.
-* Final output:                          Overfull hboxes.
+                                                              (line   6)
+* Final output:                          Overfull hboxes.     (line   6)
 * Finding badly referenced nodes:        Running Info-Validate.
-* Fine-tuning, and hyphenation:          - and hyphenation.
-* First line of a Texinfo file:          First Line.
-* First node:                            First Node.
-* Floating accents, inserting:           Inserting Accents.
-* Fonts for indices:                     syncodeindex.
-* Fonts for printing, not for Info:      Fonts.
-* Footings:                              Headings.
-* Footnotes:                             Footnotes.
-* Format a dimension:                    dmn.
+                                                              (line   6)
+* Fine-tuning, and hyphenation:          - and hyphenation.   (line   6)
+* First line of a Texinfo file:          First Line.          (line   6)
+* First node:                            First Node.          (line   6)
+* Floating accents, inserting:           Inserting Accents.   (line   6)
+* Fonts for indices:                     syncodeindex.        (line  52)
+* Fonts for printing, not for Info:      Fonts.               (line   6)
+* Footings:                              Headings.            (line   6)
+* Footnotes:                             Footnotes.           (line   6)
+* Format a dimension:                    dmn.                 (line   6)
 * Format and print hardcopy:             Format/Print Hardcopy.
+                                                              (line   6)
 * Format and print in Texinfo mode:      Texinfo Mode Printing.
-* Format with the compile command:       Compile-Command.
-* Format, print from Emacs shell:        Within Emacs.
-* Formats for images:                    Images.
-* Formatting a file for Info:            Create an Info File.
-* Formatting commands:                   Formatting Commands.
-* Formatting examples:                   example.
-* Formatting for Info:                   Info Formatting.
-* Formatting for printing:               Printing.
-* Formatting headings and footings:      Headings.
+                                                              (line   6)
+* Format with the compile command:       Compile-Command.     (line   6)
+* Format, print from Emacs shell:        Within Emacs.        (line   6)
+* Formats for images:                    Images.              (line  10)
+* Formatting a file for Info:            Create an Info File. (line   6)
+* Formatting commands:                   Formatting Commands. (line   6)
+* Formatting examples:                   example.             (line   6)
+* Formatting for Info:                   Info Formatting.     (line   6)
+* Formatting for printing:               Printing.            (line   6)
+* Formatting headings and footings:      Headings.            (line   6)
 * Formatting requirements:               Requirements Summary.
+                                                              (line   6)
 * Formatting with tex and texindex:      Format with tex/texindex.
-* Frequently used commands, inserting:   Inserting.
+                                                              (line   6)
+* Frequently used commands, inserting:   Inserting.           (line   6)
 * Function definitions:                  Sample Function Definition.
-* General syntactic conventions:         Conventions.
+                                                              (line   6)
+* General syntactic conventions:         Conventions.         (line   6)
 * Generating menus with indices:         Printing Indices & Menus.
-* German S:                              Inserting Accents.
+                                                              (line   6)
+* German S:                              Inserting Accents.   (line  33)
 * Globbing:                              Format with tex/texindex.
-* Glyphs:                                Glyphs.
-* GNU Emacs:                             Texinfo Mode.
-* GNU Emacs shell, format, print from:   Within Emacs.
-* Going to other Info files' nodes:      Other Info Files.
-* Grave accent:                          Inserting Accents.
-* Group (hold text together vertically): group.
-* Grouping two definitions together:     deffnx.
+                                                              (line  32)
+* Glyphs:                                Glyphs.              (line   6)
+* GNU Emacs:                             Texinfo Mode.        (line   6)
+* GNU Emacs shell, format, print from:   Within Emacs.        (line   6)
+* Going to other Info files' nodes:      Other Info Files.    (line   6)
+* Grave accent:                          Inserting Accents.   (line  13)
+* Group (hold text together vertically): group.               (line   6)
+* Grouping two definitions together:     deffnx.              (line   6)
 * Hardcopy, printing it:                 Format/Print Hardcopy.
-* hboxes, overfull:                      Overfull hboxes.
-* Header for Texinfo files:              Header.
-* Header of a Texinfo file:              First Line.
-* Headings:                              Headings.
-* Headings, page, begin to appear:       end titlepage.
-* Height of images:                      Images.
-* Highlighting text:                     Indicating.
+                                                              (line   6)
+* hboxes, overfull:                      Overfull hboxes.     (line   6)
+* Header for Texinfo files:              Header.              (line   6)
+* Header of a Texinfo file:              First Line.          (line   6)
+* Headings:                              Headings.            (line   6)
+* Headings, page, begin to appear:       end titlepage.       (line   6)
+* Height of images:                      Images.              (line  16)
+* Highlighting text:                     Indicating.          (line   6)
 * Highlighting, customized:              Customized Highlighting.
-* Hints:                                 Tips.
-* Holding text together vertically:      group.
+                                                              (line   6)
+* Hints:                                 Tips.                (line   8)
+* Holding text together vertically:      group.               (line   6)
 * HTML commands, using ordinary:         Raw Formatter Commands.
-* Hungariam umlaut accent:               Inserting Accents.
-* Hyphenation, helping TeX do:           - and hyphenation.
-* Hyphenation, preventing:               w.
-* i:                                     Inserting Accents.
-* If text conditionally visible:         Conditionals.
-* ifinfo permissions:                    ifinfo Permissions.
-* Ignored before @setfilename:           setfilename.
-* Ignored text:                          Comments.
-* Image formats:                         Images.
-* Images, inserting:                     Images.
-* Inches:                                Images.
+                                                              (line   6)
+* Hungariam umlaut accent:               Inserting Accents.   (line  13)
+* Hyphenation, helping TeX do:           - and hyphenation.   (line   6)
+* Hyphenation, preventing:               w.                   (line   6)
+* i:                                     Inserting Accents.   (line  33)
+* If text conditionally visible:         Conditionals.        (line   6)
+* ifinfo permissions:                    ifinfo Permissions.  (line   6)
+* Ignored before @setfilename:           setfilename.         (line  32)
+* Ignored text:                          Comments.            (line  26)
+* Image formats:                         Images.              (line  10)
+* Images, inserting:                     Images.              (line   6)
+* Inches:                                Images.              (line  36)
 * Include file requirements:             Include File Requirements.
-* Include file sample:                   Sample Include File.
-* Include files:                         Include Files.
+                                                              (line   6)
+* Include file sample:                   Sample Include File. (line   6)
+* Include files:                         Include Files.       (line   6)
 * Include files, and section levels:     Raise/lower sections.
-* Indentation undoing:                   exdent.
-* Indenting paragraphs:                  paragraphindent.
-* Index entries:                         Indexing Commands.
-* Index entries, making:                 Index Entries.
-* Index entry writing:                   Indexing Commands.
-* Index font types:                      Indexing Commands.
-* Indexing commands, predefined:         Indexing Commands.
-* Indexing table entries automatically:  ftable vtable.
-* Indicating commands, definitions, etc.: Indicating.
-* Indicating evaluation:                 result.
-* Indices:                               Indices.
-* Indices, combining them:               Combining Indices.
-* Indices, defining new:                 New Indices.
+                                                              (line  12)
+* Indentation undoing:                   exdent.              (line   6)
+* Indenting paragraphs:                  paragraphindent.     (line   6)
+* Index entries:                         Indexing Commands.   (line   6)
+* Index entries, making:                 Index Entries.       (line   6)
+* Index entry writing:                   Indexing Commands.   (line  26)
+* Index font types:                      Indexing Commands.   (line  51)
+* Indexing commands, predefined:         Indexing Commands.   (line  53)
+* Indexing table entries automatically:  ftable vtable.       (line   6)
+* Indicating commands, definitions, etc.: Indicating.         (line   6)
+* Indicating evaluation:                 result.              (line   6)
+* Indices:                               Indices.             (line   6)
+* Indices, combining them:               Combining Indices.   (line   6)
+* Indices, defining new:                 New Indices.         (line   6)
 * Indices, printing and menus:           Printing Indices & Menus.
+                                                              (line   6)
 * Indices, sorting:                      Format/Print Hardcopy.
-* Indices, two letter names:             syncodeindex.
-* Indirect subfiles:                     Tag and Split Files.
-* Info batch formatting:                 Batch Formatting.
+                                                              (line   6)
+* Indices, two letter names:             syncodeindex.        (line  17)
+* Indirect subfiles:                     Tag and Split Files. (line  11)
+* Info batch formatting:                 Batch Formatting.    (line   6)
 * Info file installation:                Install an Info File.
-* Info file requires @setfilename:       setfilename.
-* Info file, listing new one:            New Info File.
-* Info file, splitting manually:         Splitting.
-* Info files:                            Info Files.
-* Info formatting:                       Info Formatting.
+                                                              (line   6)
+* Info file requires @setfilename:       setfilename.         (line   6)
+* Info file, listing new one:            New Info File.       (line   6)
+* Info file, splitting manually:         Splitting.           (line   6)
+* Info files:                            Info Files.          (line   6)
+* Info formatting:                       Info Formatting.     (line   6)
 * Info installed in another directory:   Other Info Directories.
-* Info validating a large file:          Using Info-validate.
-* Info, creating an on-line file:        Create an Info File.
+                                                              (line   6)
+* Info validating a large file:          Using Info-validate. (line   6)
+* Info, creating an on-line file:        Create an Info File. (line   6)
 * Info-directory-list:                   Other Info Directories.
-* Info; other files' nodes:              Other Info Files.
+                                                              (line  36)
+* Info; other files' nodes:              Other Info Files.    (line   6)
 * INFOPATH:                              Other Info Directories.
-* Initialization file for TeX input:     Preparing for TeX.
+                                                              (line  47)
+* Initialization file for TeX input:     Preparing for TeX.   (line   6)
 * Insert nodes, menus automatically:     Updating Nodes and Menus.
-* Inserting @, braces:                   Braces Atsigns.
-* Inserting accents:                     Inserting Accents.
-* Inserting dots <1>:                    dots.
-* Inserting dots:                        Dots Bullets.
-* Inserting ellipsis:                    Dots Bullets.
-* Inserting frequently used commands:    Inserting.
-* Inserting space:                       Inserting Space.
-* Inserting special characters and symbols: Insertions.
+                                                              (line   6)
+* Inserting @, braces:                   Braces Atsigns.      (line   6)
+* Inserting accents:                     Inserting Accents.   (line   6)
+* Inserting dots <1>:                    dots.                (line   6)
+* Inserting dots:                        Dots Bullets.        (line   6)
+* Inserting ellipsis:                    Dots Bullets.        (line   6)
+* Inserting frequently used commands:    Inserting.           (line   6)
+* Inserting space:                       Inserting Space.     (line   6)
+* Inserting special characters and symbols: Insertions.       (line   6)
 * install-info:                          Invoking install-info.
+                                                              (line   6)
 * Installing an Info file:               Install an Info File.
+                                                              (line   6)
 * Installing Info in another directory:  Other Info Directories.
+                                                              (line   6)
 * Introduction, as part of file:         Software Copying Permissions.
-* Invoking macros:                       Invoking Macros.
-* Itemization:                           itemize.
-* j:                                     Inserting Accents.
-* keyboard input:                        kbd.
-* Keys, recommended names:               key.
-* Knuth, Donald:                         Printed Books.
+                                                              (line  16)
+* Invoking macros:                       Invoking Macros.     (line   6)
+* Itemization:                           itemize.             (line   6)
+* j:                                     Inserting Accents.   (line  33)
+* keyboard input:                        kbd.                 (line   6)
+* Keys, recommended names:               key.                 (line  19)
+* Knuth, Donald:                         Printed Books.       (line   6)
 * Larger or smaller pages:               Cropmarks and Magnification.
+                                                              (line  24)
 * Less cluttered menu entry:             Less Cluttered Menu Entry.
+                                                              (line   6)
 * License agreement:                     Software Copying Permissions.
-* Line breaks:                           Line Breaks.
-* Line breaks, preventing:               w.
+                                                              (line   6)
+* Line breaks:                           Line Breaks.         (line   6)
+* Line breaks, preventing:               w.                   (line   6)
 * Line length, column widths as fraction of: Multitable Column Widths.
-* Line spacing:                          sp.
-* Lisp example:                          Lisp Example.
+                                                              (line  11)
+* Line spacing:                          sp.                  (line   6)
+* Lisp example:                          Lisp Example.        (line   6)
 * Lisp example for a small book:         smallexample & smalllisp.
-* List of  @-commands:                   Command List.
-* Listing a new info file:               New Info File.
-* Lists and tables, making:              Lists and Tables.
-* Local variables:                       Compile-Command.
-* Location of menus:                     Menu Location.
+                                                              (line   6)
+* List of  @-commands:                   Command List.        (line   6)
+* Listing a new info file:               New Info File.       (line   6)
+* Lists and tables, making:              Lists and Tables.    (line   6)
+* Local variables:                       Compile-Command.     (line   6)
+* Location of menus:                     Menu Location.       (line   6)
 * Looking for badly referenced nodes:    Running Info-Validate.
-* lpr (DVI print command):               Print with lpr.
-* Macro definitions <1>:                 Defining Macros.
+                                                              (line   6)
+* lpr (DVI print command):               Print with lpr.      (line   6)
+* Macro definitions <1>:                 Defining Macros.     (line   6)
 * Macro definitions:                     Sample Function Definition.
-* Macro invocation:                      Invoking Macros.
-* Macron accent:                         Inserting Accents.
-* Macros:                                Macros.
-* Macros, undefining:                    Defining Macros.
+                                                              (line   6)
+* Macro invocation:                      Invoking Macros.     (line   6)
+* Macron accent:                         Inserting Accents.   (line  13)
+* Macros:                                Macros.              (line   6)
+* Macros, undefining:                    Defining Macros.     (line  26)
 * Magnified printing:                    Cropmarks and Magnification.
-* mailto link:                           email.
-* makeinfo inside Emacs:                 makeinfo in Emacs.
-* makeinfo options:                      makeinfo options.
+                                                              (line  24)
+* mailto link:                           email.               (line  10)
+* makeinfo inside Emacs:                 makeinfo in Emacs.   (line   6)
+* makeinfo options:                      makeinfo options.    (line   6)
 * Making a printed manual:               Format/Print Hardcopy.
-* Making a tag table automatically:      Tag and Split Files.
-* Making a tag table manually:           Unsplit.
-* Making cross references:               Cross References.
-* Making line and page breaks:           Breaks.
-* Making lists and tables:               Lists and Tables.
-* Manual characteristics, printed:       Printed Books.
-* Marking text within a paragraph:       Marking Text.
-* Marking words and phrases:             Marking Text.
-* Master menu:                           The Top Node.
-* Master menu parts:                     Master Menu Parts.
+                                                              (line   6)
+* Making a tag table automatically:      Tag and Split Files. (line   6)
+* Making a tag table manually:           Unsplit.             (line  26)
+* Making cross references:               Cross References.    (line   6)
+* Making line and page breaks:           Breaks.              (line   6)
+* Making lists and tables:               Lists and Tables.    (line   6)
+* Manual characteristics, printed:       Printed Books.       (line   6)
+* Marking text within a paragraph:       Marking Text.        (line   6)
+* Marking words and phrases:             Marking Text.        (line   6)
+* Master menu:                           The Top Node.        (line   6)
+* Master menu parts:                     Master Menu Parts.   (line   6)
 * Mathematical expressions <1>:          Raw Formatter Commands.
-* Mathematical expressions:              math.
-* Menu description, start:               Inserting.
+                                                              (line  25)
+* Mathematical expressions:              math.                (line   6)
+* Menu description, start:               Inserting.           (line  94)
 * Menu entries with two colons:          Less Cluttered Menu Entry.
-* Menu example:                          Menu Example.
-* Menu location:                         Menu Location.
-* Menu parts:                            Menu Parts.
-* Menu writing:                          Writing a Menu.
-* Menus:                                 Menus.
+                                                              (line   6)
+* Menu example:                          Menu Example.        (line   6)
+* Menu location:                         Menu Location.       (line   6)
+* Menu parts:                            Menu Parts.          (line   6)
+* Menu writing:                          Writing a Menu.      (line   6)
+* Menus:                                 Menus.               (line   6)
 * Menus generated with indices:          Printing Indices & Menus.
-* META key:                              key.
-* Meta-syntactic chars for arguments:    Optional Arguments.
-* Millimeters:                           Images.
+                                                              (line   6)
+* META key:                              key.                 (line  53)
+* Meta-syntactic chars for arguments:    Optional Arguments.  (line   6)
+* Millimeters:                           Images.              (line  42)
 * Minimal requirements for formatting:   Requirements Summary.
-* Minimal Texinfo file (requirements):   Minimum.
-* Mistakes, catching:                    Catching Mistakes.
-* Mode, using Texinfo:                   Texinfo Mode.
-* Multiple spaces:                       Multiple Spaces.
+                                                              (line   6)
+* Minimal Texinfo file (requirements):   Minimum.             (line   6)
+* Mistakes, catching:                    Catching Mistakes.   (line   6)
+* Mode, using Texinfo:                   Texinfo Mode.        (line   6)
+* Multiple spaces:                       Multiple Spaces.     (line   6)
 * Multitable column widths:              Multitable Column Widths.
-* Multitable rows:                       Multitable Rows.
-* Must have in Texinfo file:             Minimum.
-* Mutually recursive macros:             Defining Macros.
-* Names for indices:                     syncodeindex.
+                                                              (line   6)
+* Multitable rows:                       Multitable Rows.     (line   6)
+* Must have in Texinfo file:             Minimum.             (line   6)
+* Mutually recursive macros:             Defining Macros.     (line  19)
+* Names for indices:                     syncodeindex.        (line  17)
 * Names of index files:                  Format with tex/texindex.
-* Names recommended for keys:            key.
-* Naming a `Top' Node in references:     Top Node Naming.
-* Need space at page bottom:             need.
-* New index defining:                    New Indices.
-* New info file, listing it in dir file: New Info File.
-* New Texinfo commands, defining:        Macros.
+                                                              (line  24)
+* Names recommended for keys:            key.                 (line  19)
+* Naming a `Top' Node in references:     Top Node Naming.     (line   6)
+* Need space at page bottom:             need.                (line   6)
+* New index defining:                    New Indices.         (line   6)
+* New info file, listing it in dir file: New Info File.       (line   6)
+* New Texinfo commands, defining:        Macros.              (line   6)
 * Node line requirements:                Node Line Requirements.
-* Node line writing:                     Writing a Node.
-* Node, `Top':                           The Top Node.
-* Node, defined:                         node.
+                                                              (line   6)
+* Node line writing:                     Writing a Node.      (line   6)
+* Node, `Top':                           The Top Node.        (line   6)
+* Node, defined:                         node.                (line   6)
 * Nodename must be unique:               Node Line Requirements.
+                                                              (line   8)
 * Nodename, cannot contain:              Node Line Requirements.
-* Nodes for menus are short:             Menu Location.
-* Nodes in other Info files:             Other Info Files.
-* Nodes, catching mistakes:              Catching Mistakes.
+                                                              (line  23)
+* Nodes for menus are short:             Menu Location.       (line   6)
+* Nodes in other Info files:             Other Info Files.    (line   6)
+* Nodes, catching mistakes:              Catching Mistakes.   (line   6)
 * Nodes, checking for badly referenced:  Running Info-Validate.
+                                                              (line   6)
 * Not ending a sentence:                 Not Ending a Sentence.
-* Obtaining TeX:                         Obtaining TeX.
-* Occurrences, listing with @occur:      Using occur.
-* OE:                                    Inserting Accents.
-* oe:                                    Inserting Accents.
-* Optional and repeated arguments:       Optional Arguments.
-* Options for makeinfo:                  makeinfo options.
+                                                              (line   6)
+* Obtaining TeX:                         Obtaining TeX.       (line   6)
+* Occurrences, listing with @occur:      Using occur.         (line   6)
+* OE:                                    Inserting Accents.   (line  33)
+* oe:                                    Inserting Accents.   (line  33)
+* Optional and repeated arguments:       Optional Arguments.  (line   6)
+* Options for makeinfo:                  makeinfo options.    (line   6)
 * Ordinary HTML commands, using:         Raw Formatter Commands.
+                                                              (line   6)
 * Ordinary TeX commands, using:          Raw Formatter Commands.
-* Other Info files' nodes:               Other Info Files.
+                                                              (line   6)
+* Other Info files' nodes:               Other Info Files.    (line   6)
 * Outline of file structure, showing it: Showing the Structure.
-* Overfull hboxes:                       Overfull hboxes.
-* Overview of Texinfo:                   Overview.
-* Page breaks:                           page.
+                                                              (line   6)
+* Overfull hboxes:                       Overfull hboxes.     (line   6)
+* Overview of Texinfo:                   Overview.            (line   6)
+* Page breaks:                           page.                (line   6)
 * Page delimiter in Texinfo mode:        Showing the Structure.
-* Page headings:                         Headings.
-* Page numbering:                        Headings.
-* Page sizes for books:                  smallbook.
+                                                              (line  43)
+* Page headings:                         Headings.            (line   6)
+* Page numbering:                        Headings.            (line   6)
+* Page sizes for books:                  smallbook.           (line   6)
 * page-delimiter:                        Showing the Structure.
-* Pages, starting odd:                   setchapternewpage.
-* Paper size, European A4:               A4 Paper.
-* Paragraph indentation:                 paragraphindent.
-* Paragraph, marking text within:        Marking Text.
-* Parsing errors:                        makeinfo in Emacs.
-* Part of file formatting and printing:  Printing.
+                                                              (line  43)
+* Pages, starting odd:                   setchapternewpage.   (line   6)
+* Paper size, European A4:               A4 Paper.            (line   6)
+* Paragraph indentation:                 paragraphindent.     (line   6)
+* Paragraph, marking text within:        Marking Text.        (line   6)
+* Parsing errors:                        makeinfo in Emacs.   (line  27)
+* Part of file formatting and printing:  Printing.            (line   6)
 * Parts of a cross reference:            Cross Reference Parts.
-* Parts of a master menu:                Master Menu Parts.
-* Parts of a menu:                       Menu Parts.
+                                                              (line   6)
+* Parts of a master menu:                Master Menu Parts.   (line   6)
+* Parts of a menu:                       Menu Parts.          (line   6)
 * Periods, inserting:                    Not Ending a Sentence.
-* Permissions:                           Sample Permissions.
+                                                              (line   6)
+* Permissions:                           Sample Permissions.  (line   6)
 * Permissions, printed:                  Copyright & Permissions.
-* Picas:                                 Images.
-* Pictures, inserting:                   Images.
-* Pinard, Franc,ois:                     Acknowledgements.
+                                                              (line   6)
+* Picas:                                 Images.              (line  30)
+* Pictures, inserting:                   Images.              (line   6)
+* Pinard, Franc,ois:                     Acknowledgements.    (line  11)
 * plain TeX:                             Raw Formatter Commands.
-* Point, indicating it in a buffer:      Point Glyph.
+                                                              (line   6)
+* Point, indicating it in a buffer:      Point Glyph.         (line   6)
 * Pointer creation with makeinfo:        makeinfo Pointer Creation.
-* Pointer validation with makeinfo:      Pointer Validation.
-* Points (dimension):                    Images.
-* Predefined indexing commands:          Indexing Commands.
-* Predefined names for indices:          syncodeindex.
-* Preparing to use TeX:                  Preparing for TeX.
-* Preventing line and page breaks:       Breaks.
-* Previous node of Top node:             First Node.
+                                                              (line   6)
+* Pointer validation with makeinfo:      Pointer Validation.  (line   6)
+* Points (dimension):                    Images.              (line  27)
+* Predefined indexing commands:          Indexing Commands.   (line  53)
+* Predefined names for indices:          syncodeindex.        (line  17)
+* Preparing to use TeX:                  Preparing for TeX.   (line   6)
+* Preventing line and page breaks:       Breaks.              (line   6)
+* Previous node of Top node:             First Node.          (line  25)
 * Print and format in Texinfo mode:      Texinfo Mode Printing.
-* Print, format from Emacs shell:        Within Emacs.
-* Printed book and manual characteristics: Printed Books.
-* Printed output, indicating it:         Print Glyph.
+                                                              (line   6)
+* Print, format from Emacs shell:        Within Emacs.        (line   6)
+* Printed book and manual characteristics: Printed Books.     (line   6)
+* Printed output, indicating it:         Print Glyph.         (line   6)
 * Printed permissions:                   Copyright & Permissions.
-* Printing a region or buffer:           Printing.
+                                                              (line   6)
+* Printing a region or buffer:           Printing.            (line   6)
 * Printing an index:                     Printing Indices & Menus.
+                                                              (line   6)
 * Printing cropmarks:                    Cropmarks and Magnification.
-* Problems, catching:                    Catching Mistakes.
+                                                              (line   6)
+* Problems, catching:                    Catching Mistakes.   (line   6)
 * Prototype row, column widths defined by: Multitable Column Widths.
-* Quotations:                            quotation.
+                                                              (line  21)
+* Quotations:                            quotation.           (line   6)
 * Raising and lowering sections:         Raise/lower sections.
+                                                              (line   6)
 * Raw formatter commands:                Raw Formatter Commands.
-* Recommended names for keys:            key.
-* Rectangle, ugly, black in hardcopy:    Overfull hboxes.
-* Recursion, mutual:                     Defining Macros.
-* References:                            Cross References.
-* References using @inforef:             inforef.
-* References using @pxref:               pxref.
-* References using @ref:                 ref.
-* References using @xref:                xref.
-* Referring to other Info files:         Other Info Files.
+                                                              (line   6)
+* Recommended names for keys:            key.                 (line  19)
+* Rectangle, ugly, black in hardcopy:    Overfull hboxes.     (line  28)
+* Recursion, mutual:                     Defining Macros.     (line  19)
+* References:                            Cross References.    (line   6)
+* References using @inforef:             inforef.             (line   6)
+* References using @pxref:               pxref.               (line   6)
+* References using @ref:                 ref.                 (line   6)
+* References using @xref:                xref.                (line   6)
+* Referring to other Info files:         Other Info Files.    (line   6)
 * Refilling paragraphs:                  Refilling Paragraphs.
-* Region formatting and printing:        Printing.
+                                                              (line   6)
+* Region formatting and printing:        Printing.            (line   6)
 * Region printing in Texinfo mode:       Texinfo Mode Printing.
-* Repeated and optional arguments:       Optional Arguments.
-* Required in Texinfo file:              Minimum.
+                                                              (line   6)
+* Repeated and optional arguments:       Optional Arguments.  (line   6)
+* Required in Texinfo file:              Minimum.             (line   6)
 * Requirements for formatting:           Requirements Summary.
+                                                              (line   6)
 * Requirements for include files:        Include File Requirements.
+                                                              (line   6)
 * Requirements for updating commands:    Updating Requirements.
-* Result of an expression:               result.
-* ridt.eps:                              Images.
-* Ring accent:                           Inserting Accents.
-* Rows, of a multitable:                 Multitable Rows.
-* Running an Info formatter:             Info Formatting.
-* Running Info-validate:                 Using Info-validate.
-* Running makeinfo in Emacs:             makeinfo in Emacs.
-* Sample @include file:                  Sample Include File.
+                                                              (line   6)
+* Result of an expression:               result.              (line   6)
+* ridt.eps:                              Images.              (line  53)
+* Ring accent:                           Inserting Accents.   (line  13)
+* Rows, of a multitable:                 Multitable Rows.     (line   6)
+* Running an Info formatter:             Info Formatting.     (line   6)
+* Running Info-validate:                 Using Info-validate. (line   6)
+* Running makeinfo in Emacs:             makeinfo in Emacs.   (line   6)
+* Sample @include file:                  Sample Include File. (line   6)
 * Sample function definition:            Sample Function Definition.
-* Sample Texinfo file:                   Short Sample.
-* Sample Texinfo file, no comments:      Sample Texinfo File.
-* Scaled points:                         Images.
+                                                              (line   6)
+* Sample Texinfo file:                   Short Sample.        (line   6)
+* Sample Texinfo file, no comments:      Sample Texinfo File. (line   6)
+* Scaled points:                         Images.              (line  51)
 * Section structure of a file, showing it: Showing the Structure.
+                                                              (line   6)
 * Sections, raising and lowering:        Raise/lower sections.
-* Sentence ending punctuation:           Ending a Sentence.
+                                                              (line   6)
+* Sentence ending punctuation:           Ending a Sentence.   (line   6)
 * Sentence non-ending punctuation:       Not Ending a Sentence.
-* Separate footnote style:               Footnote Styles.
-* Sharp S:                               Inserting Accents.
+                                                              (line   6)
+* Separate footnote style:               Footnote Styles.     (line  20)
+* Sharp S:                               Inserting Accents.   (line  33)
 * Shell formatting with tex and texindex: Format with tex/texindex.
-* Shell, format, print from:             Within Emacs.
-* Shell, running makeinfo in:            makeinfo in Emacs.
-* Short nodes for menus:                 Menu Location.
+                                                              (line   6)
+* Shell, format, print from:             Within Emacs.        (line   6)
+* Shell, running makeinfo in:            makeinfo in Emacs.   (line   6)
+* Short nodes for menus:                 Menu Location.       (line   6)
 * Showing the section structure of a file: Showing the Structure.
+                                                              (line   6)
 * Showing the structure of a file:       Using texinfo-show-structure.
-* Site-wide Texinfo configuration file:  Preparing for TeX.
-* Size of printed book:                  smallbook.
-* slanted typewriter font, for @kbd:     kbd.
+                                                              (line   6)
+* Site-wide Texinfo configuration file:  Preparing for TeX.   (line  24)
+* Size of printed book:                  smallbook.           (line   6)
+* slanted typewriter font, for @kbd:     kbd.                 (line  15)
 * Small book example:                    smallexample & smalllisp.
-* Small book size:                       smallbook.
-* Small caps font:                       Smallcaps.
+                                                              (line   6)
+* Small book size:                       smallbook.           (line   6)
+* Small caps font:                       Smallcaps.           (line   6)
 * Software copying permissions:          Software Copying Permissions.
+                                                              (line   6)
 * Sorting indices:                       Format/Print Hardcopy.
-* Spaces (blank lines):                  sp.
-* Spacing, inserting:                    Inserting Space.
-* Special characters, commands to insert: Braces Atsigns.
-* Special insertions:                    Insertions.
-* Special typesetting commands:          Dots Bullets.
-* Specifying index entries:              Indexing Commands.
-* Splitting an Info file manually:       Splitting.
-* ss:                                    Inserting Accents.
-* Stallman, Richard M.:                  Acknowledgements.
-* Start of header line:                  Start of Header.
-* Starting chapters:                     setchapternewpage.
+                                                              (line   6)
+* Spaces (blank lines):                  sp.                  (line   6)
+* Spacing, inserting:                    Inserting Space.     (line   6)
+* Special characters, commands to insert: Braces Atsigns.     (line   6)
+* Special insertions:                    Insertions.          (line   6)
+* Special typesetting commands:          Dots Bullets.        (line   6)
+* Specifying index entries:              Indexing Commands.   (line   6)
+* Splitting an Info file manually:       Splitting.           (line   6)
+* ss:                                    Inserting Accents.   (line  33)
+* Stallman, Richard M.:                  Acknowledgements.    (line   6)
+* Start of header line:                  Start of Header.     (line   6)
+* Starting chapters:                     setchapternewpage.   (line   6)
 * Structure of a file, showing it:       Showing the Structure.
-* Structure, catching mistakes in:       Catching Mistakes.
-* Structuring of chapters:               Structuring.
+                                                              (line   6)
+* Structure, catching mistakes in:       Catching Mistakes.   (line   6)
+* Structuring of chapters:               Structuring.         (line   6)
 * Subsection-like commands:              unnumberedsubsec appendixsubsec subheading.
-* Subsub commands:                       subsubsection.
-* Syntactic conventions:                 Conventions.
-* Syntax, optional & repeated arguments: Optional Arguments.
-* tab:                                   Multitable Rows.
-* Table of contents:                     Contents.
-* Tables and lists, making:              Lists and Tables.
-* Tables with indexes:                   ftable vtable.
-* Tables, making multi-column:           Multi-column Tables.
-* Tables, making two-column:             Two-column Tables.
-* Tabs; don't use!:                      Conventions.
-* Tag table, making automatically:       Tag and Split Files.
-* Tag table, making manually:            Unsplit.
-* Template for a definition:             Def Cmd Template.
+                                                              (line   6)
+* Subsub commands:                       subsubsection.       (line   6)
+* Syntactic conventions:                 Conventions.         (line   6)
+* Syntax, optional & repeated arguments: Optional Arguments.  (line   6)
+* tab:                                   Multitable Rows.     (line   6)
+* Table of contents:                     Contents.            (line   6)
+* Tables and lists, making:              Lists and Tables.    (line   6)
+* Tables with indexes:                   ftable vtable.       (line   6)
+* Tables, making multi-column:           Multi-column Tables. (line   6)
+* Tables, making two-column:             Two-column Tables.   (line   6)
+* Tabs; don't use!:                      Conventions.         (line  38)
+* Tag table, making automatically:       Tag and Split Files. (line   6)
+* Tag table, making manually:            Unsplit.             (line  26)
+* Template for a definition:             Def Cmd Template.    (line   6)
 * TeX commands, using ordinary:          Raw Formatter Commands.
+                                                              (line   6)
 * TeX index sorting:                     Format/Print Hardcopy.
-* TeX input initialization:              Preparing for TeX.
-* TeX, how to obtain:                    Obtaining TeX.
+                                                              (line   6)
+* TeX input initialization:              Preparing for TeX.   (line   6)
+* TeX, how to obtain:                    Obtaining TeX.       (line   6)
 * texi2dvi:                              Format with tex/texindex.
+                                                              (line  74)
 * texi2dvi (shell script):               Format with texi2dvi.
+                                                              (line   6)
 * texindex <1>:                          Format with tex/texindex.
+                                                              (line  16)
 * texindex:                              Format/Print Hardcopy.
-* Texinfo commands, defining new:        Macros.
-* Texinfo file beginning:                Beginning a File.
-* Texinfo file ending:                   Ending a File.
-* Texinfo file header:                   Header.
-* Texinfo file minimum:                  Minimum.
+                                                              (line   6)
+* Texinfo commands, defining new:        Macros.              (line   6)
+* Texinfo file beginning:                Beginning a File.    (line   6)
+* Texinfo file ending:                   Ending a File.       (line   6)
+* Texinfo file header:                   Header.              (line   6)
+* Texinfo file minimum:                  Minimum.             (line   6)
 * Texinfo file section structure, showing it: Showing the Structure.
-* Texinfo mode:                          Texinfo Mode.
-* Texinfo overview:                      Overview.
-* Texinfo printed book characteristics:  Printed Books.
-* texinfo.cnf <1>:                       A4 Paper.
-* texinfo.cnf:                           setfilename.
-* texinfo.cnf installation:              Preparing for TeX.
-* texinfo.tex, installing:               Preparing for TeX.
-* TEXINPUTS:                             Preparing for TeX.
-* TEXINPUTS environment variable:        Preparing for TeX.
-* Text, conditionally visible:           Conditionals.
-* Thin space between number, dimension:  dmn.
-* Tie-after accent:                      Inserting Accents.
-* Tilde accent:                          Inserting Accents.
-* Tips:                                  Tips.
-* Title page:                            titlepage.
-* Titlepage end starts headings:         end titlepage.
+                                                              (line   6)
+* Texinfo mode:                          Texinfo Mode.        (line   6)
+* Texinfo overview:                      Overview.            (line   6)
+* Texinfo printed book characteristics:  Printed Books.       (line   6)
+* texinfo.cnf <1>:                       A4 Paper.            (line  29)
+* texinfo.cnf:                           setfilename.         (line  36)
+* texinfo.cnf installation:              Preparing for TeX.   (line  24)
+* texinfo.tex, installing:               Preparing for TeX.   (line  11)
+* TEXINPUTS:                             Preparing for TeX.   (line   6)
+* TEXINPUTS environment variable:        Preparing for TeX.   (line   6)
+* Text, conditionally visible:           Conditionals.        (line   6)
+* Thin space between number, dimension:  dmn.                 (line   6)
+* Tie-after accent:                      Inserting Accents.   (line  13)
+* Tilde accent:                          Inserting Accents.   (line  13)
+* Tips:                                  Tips.                (line   8)
+* Title page:                            titlepage.           (line   6)
+* Titlepage end starts headings:         end titlepage.       (line   6)
 * Titlepage permissions:                 Titlepage Permissions.
-* Top node:                              The Top Node.
-* Top node is first:                     First Node.
-* Top node naming for references:        Top Node Naming.
-* Top node summary:                      Top Node Summary.
-* Tree structuring:                      Tree Structuring.
-* Two `First' Lines for @deffn:          deffnx.
-* Two letter names for indices:          syncodeindex.
-* Two named items for @table:            itemx.
+                                                              (line   6)
+* Top node:                              The Top Node.        (line   6)
+* Top node is first:                     First Node.          (line   6)
+* Top node naming for references:        Top Node Naming.     (line   6)
+* Top node summary:                      Top Node Summary.    (line   6)
+* Tree structuring:                      Tree Structuring.    (line   6)
+* Two `First' Lines for @deffn:          deffnx.              (line   6)
+* Two letter names for indices:          syncodeindex.        (line  17)
+* Two named items for @table:            itemx.               (line   6)
 * Two part menu entry:                   Less Cluttered Menu Entry.
-* Typesetting commands for dots, etc.:   Dots Bullets.
-* Umlaut accent:                         Inserting Accents.
+                                                              (line   6)
+* Typesetting commands for dots, etc.:   Dots Bullets.        (line   6)
+* Umlaut accent:                         Inserting Accents.   (line  13)
 * Uncluttered menu entry:                Less Cluttered Menu Entry.
-* Undefining macros:                     Defining Macros.
-* Underbar accent:                       Inserting Accents.
-* Underdot accent:                       Inserting Accents.
-* Uniform resource locator, indicating:  url.
-* Uniform resource locator, referring to: uref.
+                                                              (line   6)
+* Undefining macros:                     Defining Macros.     (line  26)
+* Underbar accent:                       Inserting Accents.   (line  13)
+* Underdot accent:                       Inserting Accents.   (line  13)
+* Uniform resource locator, indicating:  url.                 (line   6)
+* Uniform resource locator, referring to: uref.               (line   6)
 * Unique nodename requirement:           Node Line Requirements.
-* Unprocessed text:                      Comments.
-* Unsplit file creation:                 Unsplit.
-* Up node of Top node:                   First Node.
+                                                              (line   8)
+* Unprocessed text:                      Comments.            (line  26)
+* Unsplit file creation:                 Unsplit.             (line   6)
+* Up node of Top node:                   First Node.          (line  11)
 * Updating nodes and menus:              Updating Nodes and Menus.
+                                                              (line   6)
 * Updating requirements:                 Updating Requirements.
-* URL, indicating:                       url.
-* URL, referring to:                     uref.
-* Usage tips:                            Tips.
-* user input:                            kbd.
-* User options, marking:                 Variables Commands.
-* User-defined Texinfo commands:         Macros.
-* Validating a large file:               Using Info-validate.
-* Validation of pointers:                Pointer Validation.
-* Value of an expression, indicating:    result.
+                                                              (line   6)
+* URL, indicating:                       url.                 (line   6)
+* URL, referring to:                     uref.                (line   6)
+* Usage tips:                            Tips.                (line   8)
+* user input:                            kbd.                 (line  15)
+* User options, marking:                 Variables Commands.  (line  57)
+* User-defined Texinfo commands:         Macros.              (line   6)
+* Validating a large file:               Using Info-validate. (line   6)
+* Validation of pointers:                Pointer Validation.  (line   6)
+* Value of an expression, indicating:    result.              (line   6)
 * version number, finding:               Invoking install-info.
+                                                              (line  68)
 * Vertical whitespace (vskip):           Copyright & Permissions.
-* Vertically holding text together:      group.
-* Visibility of conditional text:        Conditionals.
-* Weisshaus, Melissa:                    Acknowledgements.
-* Whitespace, inserting <1>:             Multiple Spaces.
-* Whitespace, inserting:                 Inserting Space.
-* Width of images:                       Images.
+                                                              (line  16)
+* Vertically holding text together:      group.               (line   6)
+* Visibility of conditional text:        Conditionals.        (line   6)
+* Weisshaus, Melissa:                    Acknowledgements.    (line  11)
+* Whitespace, inserting <1>:             Multiple Spaces.     (line   6)
+* Whitespace, inserting:                 Inserting Space.     (line   6)
+* Width of images:                       Images.              (line  16)
 * Widths, defining multitable column:    Multitable Column Widths.
+                                                              (line   6)
 * Wildcards:                             Format with tex/texindex.
-* Words and phrases, marking them:       Marking Text.
-* Writing a menu:                        Writing a Menu.
-* Writing an @node line:                 Writing a Node.
-* Writing index entries:                 Indexing Commands.
-* Zuhn, David D.:                        Acknowledgements.
+                                                              (line  32)
+* Words and phrases, marking them:       Marking Text.        (line   6)
+* Writing a menu:                        Writing a Menu.      (line   6)
+* Writing an @node line:                 Writing a Node.      (line   6)
+* Writing index entries:                 Indexing Commands.   (line  26)
+* Zuhn, David D.:                        Acknowledgements.    (line  11)
 
 
index 9190fc7..298f536 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/widget.info, produced by makeinfo version 4.6 from
+This is ../info/widget.info, produced by makeinfo version 4.8 from
 widget.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -137,32 +137,32 @@ the foo field, meaning the field tagged with `Foo'. Here is an example
 form:
 
      Here is some documentation.
-     
+
      Name: My Name     *Choose*: This option
      Address:  Some Place
      In some City
      Some country.
-     
+
      See also _other work_ for more information.
-     
+
      Numbers: count to three below
      [INS] [DEL] One
      [INS] [DEL] Eh, two?
      [INS] [DEL] Five!
      [INS]
-     
+
      Select multiple:
-     
+
      [X] This
      [ ] That
      [X] Thus
-     
+
      Select one:
-     
+
      (*) One
      ( ) Another One.
      ( ) A Final One.
-     
+
      [Apply Form] [Reset Form]
 
    The top level widgets in is example are tagged `Name', `Choose',
@@ -187,7 +187,7 @@ middle of another field is prohibited.
    The editing text fields are highlighted with the `widget-field-face'
 face, making them easy to find.
 
- - Face: widget-field-face
+ -- Face: widget-field-face
      Face used for other editing fields.
 
 Buttons
@@ -198,13 +198,13 @@ Some portions of the buffer have an associated "action", which can be
 called "buttons".  The default commands for activating a button are:
 
 `<RET>'
-      - Command: widget-button-press POS &optional EVENT
+      -- Command: widget-button-press POS &optional EVENT
           Invoke the button at POS, defaulting to point.  If point is
           not located on a button, invoke the binding in
           `widget-global-map' (by default the global map).
 
 `mouse-2'
-      - Command: widget-button-click EVENT
+      -- Command: widget-button-click EVENT
           Invoke the button at the location of the mouse pointer.  If
           the mouse pointer is located in an editable text field,
           invoke the binding in `widget-global-map' (by default the
@@ -247,10 +247,10 @@ _The `[Apply Form]' `[Reset Form]' buttons._
 
    To make them easier to locate, buttons are emphasized in the buffer.
 
- - Face: widget-button-face
+ -- Face: widget-button-face
      Face used for buttons.
 
- - User Option: widget-mouse-face
+ -- User Option: widget-mouse-face
      Face used for buttons when the mouse pointer is above it.
 
 Navigation
@@ -260,11 +260,11 @@ You can use all the normal Emacs commands to move around in a form
 buffer, plus you will have these additional commands:
 
 `<TAB>'
-      - Command: widget-forward &optional count
+      -- Command: widget-forward &optional count
           Move point COUNT buttons or editing fields forward.
 
 `<M-TAB>'
-      - Command: widget-backward &optional count
+      -- Command: widget-backward &optional count
           Move point COUNT buttons or editing fields backward.
 
 \1f
@@ -277,12 +277,12 @@ Here is the code to implement the user interface example (see *Note
 User Interface::).
 
      (require 'widget)
-     
+
      (eval-when-compile
        (require 'wid-edit))
-     
+
      (defvar widget-example-repeat)
-     
+
      (defun widget-example ()
        "Create the widgets from the Widget manual."
        (interactive)
@@ -370,17 +370,17 @@ object.  This object can be queried and manipulated by other widget
 functions, until it is deleted with `widget-delete'.  After the widgets
 have been created, `widget-setup' must be called to enable them.
 
- - Function: widget-create type [ keyword argument ]...
+ -- Function: widget-create type [ keyword argument ]...
      Create and return a widget of type TYPE.  The syntax for the TYPE
      argument is described in *Note Basic Types::.
 
      The keyword arguments can be used to overwrite the keyword
      arguments that are part of TYPE.
 
- - Function: widget-delete widget
+ -- Function: widget-delete widget
      Delete WIDGET and remove it from the buffer.
 
- - Function: widget-setup
+ -- Function: widget-setup
      Setup a buffer to support widgets.
 
      This should be called after creating all the widgets and before
@@ -390,19 +390,19 @@ have been created, `widget-setup' must be called to enable them.
    If you want to insert text outside the widgets in the form, the
 recommended way to do that is with `widget-insert'.
 
- - Function: widget-insert
+ -- Function: widget-insert
      Insert the arguments, either strings or characters, at point.  The
      inserted text will be read only.
 
    There is a standard widget keymap which you might find useful.
 
- - Const: widget-keymap
+ -- Const: widget-keymap
      A keymap with the global keymap as its parent.
      <TAB> and `C-<TAB>' are bound to `widget-forward' and
      `widget-backward', respectively.  `<RET>' and `mouse-2' are bound
      to `widget-button-press' and `widget-button-'.
 
- - Variable: widget-global-map
+ -- Variable: widget-global-map
      Keymap used by `widget-button-press' and `widget-button-click'
      when not on a button.  By default this is `global-map'.
 
@@ -437,10 +437,10 @@ widget specific way.
           By default, the text will be shown in `widget-button-face',
           and surrounded by brackets.
 
-           - User Option: widget-button-prefix
+           -- User Option: widget-button-prefix
                String to prefix buttons.
 
-           - User Option: widget-button-suffix
+           -- User Option: widget-button-suffix
                String to suffix buttons.
 
     `%{'
@@ -549,7 +549,7 @@ widget specific way.
 
      The following predefined function can be used:
 
-      - Function: widget-children-validate widget
+      -- Function: widget-children-validate widget
           All the `:children' of WIDGET must be valid.
 
 `:tab-order'
@@ -578,12 +578,12 @@ widget specific way.
      `checkbox' associated with this item.
 
 
- - User Option: widget-glyph-directory
+ -- User Option: widget-glyph-directory
      Directory where glyphs are found.  Widget will look here for a
      file with the same name as specified for the image, with either a
      `.xpm' (if supported) or `.xbm' extension.
 
- - User Option: widget-glyph-enable
+ -- User Option: widget-glyph-enable
      If non-nil, allow glyphs to appear on displays where they are
      supported.
 
@@ -620,10 +620,10 @@ The value should be a string, which will be inserted in the buffer.
 
    By default the link will be shown in brackets.
 
- - User Option: widget-link-prefix
+ -- User Option: widget-link-prefix
      String to prefix links.
 
- - User Option: widget-link-suffix
+ -- User Option: widget-link-suffix
      String to suffix links.
 
 \1f
@@ -667,10 +667,10 @@ The value should be a string, which will be inserted in the buffer.
 
    By default the tag will be shown in brackets.
 
- - User Option: widget-push-button-prefix
+ -- User Option: widget-push-button-prefix
      String to prefix push buttons.
 
- - User Option: widget-push-button-suffix
+ -- User Option: widget-push-button-suffix
      String to suffix push buttons.
 
 \1f
@@ -805,7 +805,7 @@ any value matching at least one of the specified TYPE arguments.
 widget after it has been created with the function
 `widget-radio-add-item'.
 
- - Function: widget-radio-add-item widget type
+ -- Function: widget-radio-add-item widget type
      Add to `radio-button-choice' widget WIDGET a new radio button item
      of type TYPE.
 
@@ -1031,7 +1031,7 @@ of the composite widgets.
    The VALUE, if present, is used to initialize the `:value' property
 and can be any s-expression.
 
- - Widget: const
+ -- Widget: const
      This will display any valid s-expression in an immutable part of
      the buffer.
 
@@ -1041,10 +1041,10 @@ with a variable or function binding.  The major difference from the
 `const' widget is that they will allow the user to see the variable or
 function documentation for the symbol.
 
- - Widget: variable-item
+ -- Widget: variable-item
      An immutable symbol that is bound as a variable.
 
- - Widget: function-item
+ -- Widget: function-item
      An immutable symbol that is bound as a function.
 
 \1f
@@ -1060,7 +1060,7 @@ to edit it inline in the buffer.
 
      TYPE ::= (sexp [KEYWORD ARGUMENT]...  [ VALUE ])
 
- - Widget: sexp
+ -- Widget: sexp
      This will allow you to edit any valid s-expression in an editable
      buffer field.
 
@@ -1088,16 +1088,16 @@ string widget can only be initialized with a string.
    All the atom widgets take the same keyword arguments as the
 `editable-field' widget.
 
- - Widget: string
+ -- Widget: string
      Allows you to edit a string in an editable field.
 
- - Widget: regexp
+ -- Widget: regexp
      Allows you to edit a regular expression in an editable field.
 
- - Widget: character
+ -- Widget: character
      Allows you to enter a character in an editable field.
 
- - Widget: file
+ -- Widget: file
      Allows you to edit a file name in an editable field.  If you invoke
      the tag button, you can edit the file name in the mini-buffer with
      completion.
@@ -1107,27 +1107,27 @@ string widget can only be initialized with a string.
           If this is set to non-nil, only existing file names will be
           allowed in the minibuffer.
 
- - Widget: directory
+ -- Widget: directory
      Allows you to edit a directory name in an editable field.  Similar
      to the `file' widget.
 
- - Widget: symbol
+ -- Widget: symbol
      Allows you to edit a lisp symbol in an editable field.
 
- - Widget: function
+ -- Widget: function
      Allows you to edit a lambda expression, or a function name with
      completion.
 
- - Widget: variable
+ -- Widget: variable
      Allows you to edit a variable name, with completion.
 
- - Widget: integer
+ -- Widget: integer
      Allows you to edit an integer in an editable field.
 
- - Widget: number
+ -- Widget: number
      Allows you to edit a number in an editable field.
 
- - Widget: boolean
+ -- Widget: boolean
      Allows you to edit a boolean.  In lisp this means a variable which
      is either nil meaning false, or non-nil meaning true.
 
@@ -1144,16 +1144,16 @@ The syntax for the composite are
    Where each COMPONENT must be a widget type.  Each component widget
 will be displayed in the buffer, and be editable to the user.
 
- - Widget: cons
+ -- Widget: cons
      The value of a `cons' widget is a cons-cell where the car is the
      value of the first component and the cdr is the value of the second
      component.  There must be exactly two components.
 
- - Widget: list
+ -- Widget: list
      The value of a `list' widget is a list containing the value of
      each of its component.
 
- - Widget: vector
+ -- Widget: vector
      The value of a `vector' widget is a vector containing the value of
      each of its component.
 
@@ -1179,18 +1179,18 @@ t)' or `(file string string)'.
 certainly hard to implement so instead of confusing you more by trying
 to explain it here, I'll just suggest you meditate over it for a while.
 
- - Widget: choice
+ -- Widget: choice
      Allows you to edit a sexp which may have one of a fixed set of
      types.  It is currently implemented with the `choice-menu' basic
      widget, and has a similar syntax.
 
- - Widget: set
+ -- Widget: set
      Allows you to specify a type which must be a list whose elements
      all belong to given set.  The elements of the list is not
      significant.  This is implemented on top of the `checklist' basic
      widget, and has a similar syntax.
 
- - Widget: repeat
+ -- Widget: repeat
      Allows you to specify a variable length list whose members are all
      of the same type.  Implemented on top of the `editable-list' basic
      widget, and has a similar syntax.
@@ -1204,11 +1204,11 @@ Properties
 You can examine or set the value of a widget by using the widget object
 that was returned by `widget-create'.
 
- - Function: widget-value widget
+ -- Function: widget-value widget
      Return the current value contained in WIDGET.  It is an error to
      call this function on an uninitialized widget.
 
- - Function: widget-value-set widget value
+ -- Function: widget-value-set widget value
      Set the value contained in WIDGET to VALUE.  It is an error to
      call this function with an invalid VALUE.
 
@@ -1223,22 +1223,22 @@ widget objects, for example a reference to the item being edited, it
 can be done with `widget-put' and `widget-get'.  The property names
 must begin with a `:'.
 
- - Function: widget-put widget property value
+ -- Function: widget-put widget property value
      In WIDGET set PROPERTY to VALUE.  PROPERTY should be a symbol,
      while VALUE can be anything.
 
- - Function: widget-get widget property
+ -- Function: widget-get widget property
      In WIDGET return the value for PROPERTY.  PROPERTY should be a
      symbol, the value is what was last set by `widget-put' for
      PROPERTY.
 
- - Function: widget-member widget property
+ -- Function: widget-member widget property
      Non-nil if WIDGET has a value (even nil) for property PROPERTY.
 
    Occasionally it can be useful to know which kind of widget you have,
 i.e. the name of the widget type you gave when the widget was created.
 
- - Function: widget-type widget
+ -- Function: widget-type widget
      Return the name of WIDGET, a symbol.
 
    Widgets can be in two states: active, which means they are
@@ -1250,10 +1250,10 @@ following code:
      (if (widget-apply WIDGET :active)
          (message "Widget is active.")
        (message "Widget is inactive.")
-     
+
      ;; Make WIDGET inactive.
      (widget-apply WIDGET :deactivate)
-     
+
      ;; Make WIDGET active.
      (widget-apply WIDGET :activate)
 
@@ -1284,7 +1284,7 @@ to create a shorthand for more complex widgets.  This includes
 specifying component widgets and new default values for the keyword
 arguments.
 
- - Function: define-widget name class doc &rest args
+ -- Function: define-widget name class doc &rest args
      Define a new widget type named NAME from `class'.
 
      NAME and class should both be symbols, `class' should be one of
@@ -1324,11 +1324,11 @@ new widgets:
 
      The following predefined functions can be used here:
 
-      - Function: widget-types-convert-widget widget
+      -- Function: widget-types-convert-widget widget
           Convert each member of `:args' in WIDGET from a widget type
           to a widget.
 
-      - Function: widget-value-convert-widget widget
+      -- Function: widget-value-convert-widget widget
           Initialize `:value' from `(car :args)' in WIDGET, and reset
           `:args'.
 
@@ -1381,7 +1381,7 @@ new widgets:
 
      The following predefined function can be used here:
 
-      - Function: widget-children-value-delete widget
+      -- Function: widget-children-value-delete widget
           Delete all `:children' and `:buttons' in WIDGET.
 
 `:value-get'
@@ -1390,7 +1390,7 @@ new widgets:
 
      The following predefined function can be used here:
 
-      - Function: widget-value-value-get widget
+      -- Function: widget-value-value-get widget
           Return the `:value' property of WIDGET.
 
 `:format-handler'
@@ -1411,7 +1411,7 @@ new widgets:
 
      The following predefined function can be used here:
 
-      - Function: widget-parent-action widget &optional event
+      -- Function: widget-parent-action widget &optional event
           Tell `:parent' of WIDGET to handle the `:action'.
           Optional EVENT is the event that triggered the action.
 
@@ -1427,7 +1427,7 @@ new widgets:
    If you want to define a new widget from scratch, use the `default'
 widget as its base.
 
- - Widget: default
+ -- Widget: default
      Widget used as a base for other widgets.
 
      It provides most of the functionality that is referred to as "by
@@ -1438,20 +1438,20 @@ widget as its base.
 the TYPE arguments to these functions is described in *Note Basic
 Types::.
 
- - Function: widget-create-child-and-convert parent type &rest args
+ -- Function: widget-create-child-and-convert parent type &rest args
      As a child of PARENT, create a widget with type TYPE and value
      VALUE.  TYPE is copied, and the `:widget-contvert' method is
      applied to the optional keyword arguments from ARGS.
 
- - Function: widget-create-child parent type
+ -- Function: widget-create-child parent type
      As a child of PARENT, create a widget with type TYPE.  TYPE is
      copied, but no conversion method is applied.
 
- - Function: widget-create-child-value parent type value
+ -- Function: widget-create-child-value parent type value
      As a child of PARENT, create a widget with type TYPE and value
      VALUE.  TYPE is copied, but no conversion method is applied.
 
- - Function: widget-convert type &rest args
+ -- Function: widget-convert type &rest args
      Convert TYPE to a widget without inserting it in the buffer.  The
      optional ARGS are additional keyword arguments.
 
@@ -1475,15 +1475,15 @@ programmers who want to examine the content of a widget.  The browser
 shows the value of each keyword, but uses links for certain keywords
 such as `:parent', which avoids printing cyclic structures.
 
- - Command: widget-browse WIDGET
+ -- Command: widget-browse WIDGET
      Create a widget browser for WIDGET.  When called interactively,
      prompt for WIDGET.
 
- - Command: widget-browse-other-window WIDGET
+ -- Command: widget-browse-other-window WIDGET
      Create a widget browser for WIDGET and show it in another window.
      When called interactively, prompt for WIDGET.
 
- - Command: widget-browse-at POS
+ -- Command: widget-browse-at POS
      Create a widget browser for the widget at POS.  When called
      interactively, use the position of point.
 
@@ -1497,11 +1497,11 @@ There is a minor mode for manipulating widgets in major modes that
 doesn't provide any support for widgets themselves.  This is mostly
 intended to be useful for programmers doing experiments.
 
- - Command: widget-minor-mode
+ -- Command: widget-minor-mode
      Toggle minor mode for traversing widgets.  With arg, turn widget
      mode on if and only if arg is positive.
 
- - Variable: widget-minor-mode-keymap
+ -- Variable: widget-minor-mode-keymap
      Keymap used in `widget-minor-mode'.
 
 \1f
@@ -1510,12 +1510,12 @@ File: widget.info,  Node: Utilities,  Next: Widget Wishlist,  Prev: Widget Minor
 Utilities.
 ==========
 
- - Function: widget-prompt-value widget prompt [ value unbound ]
+ -- Function: widget-prompt-value widget prompt [ value unbound ]
      Prompt for a value matching WIDGET, using PROMPT.
      The current value is assumed to be VALUE, unless UNBOUND is
      non-nil.
 
- - Function: widget-get-sibling widget
+ -- Function: widget-get-sibling widget
      Get the item WIDGET is assumed to toggle.
      This is only meaningful for radio buttons or checkboxes in a list.
 
@@ -1614,35 +1614,35 @@ Tag Table:
 Node: Top\7f211
 Node: Introduction\7f612
 Node: User Interface\7f4087
-Node: Programming Example\7f8976
-Node: Setting Up the Buffer\7f13123
-Node: Basic Types\7f14837
-Node: link\7f21042
-Node: url-link\7f21553
-Node: info-link\7f21862
-Node: push-button\7f22150
-Node: editable-field\7f22720
-Node: text\7f24200
-Node: menu-choice\7f24495
-Node: radio-button-choice\7f25345
-Node: item\7f26909
-Node: choice-item\7f27294
-Node: toggle\7f27789
-Node: checkbox\7f28523
-Node: checklist\7f28826
-Node: editable-list\7f30267
-Node: group\7f31447
-Node: Sexp Types\7f31733
-Node: constants\7f32043
-Node: generic\7f33114
-Node: atoms\7f33644
-Node: composite\7f35588
-Node: Widget Properties\7f38055
-Node: Defining New Widgets\7f41117
-Node: Widget Browser\7f49281
-Node: Widget Minor Mode\7f50136
-Node: Utilities\7f50690
-Node: Widget Wishlist\7f51171
-Node: Widget Internals\7f52892
+Node: Programming Example\7f8943
+Node: Setting Up the Buffer\7f13075
+Node: Basic Types\7f14795
+Node: link\7f21005
+Node: url-link\7f21518
+Node: info-link\7f21827
+Node: push-button\7f22115
+Node: editable-field\7f22687
+Node: text\7f24167
+Node: menu-choice\7f24462
+Node: radio-button-choice\7f25312
+Node: item\7f26877
+Node: choice-item\7f27262
+Node: toggle\7f27757
+Node: checkbox\7f28491
+Node: checklist\7f28794
+Node: editable-list\7f30235
+Node: group\7f31415
+Node: Sexp Types\7f31701
+Node: constants\7f32011
+Node: generic\7f33085
+Node: atoms\7f33616
+Node: composite\7f35571
+Node: Widget Properties\7f38044
+Node: Defining New Widgets\7f41102
+Node: Widget Browser\7f49277
+Node: Widget Minor Mode\7f50135
+Node: Utilities\7f50691
+Node: Widget Wishlist\7f51174
+Node: Widget Internals\7f52895
 \1f
 End Tag Table
index d8c7476..d8338d7 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.6 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.8 from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -7,7430 +7,279 @@ START-INFO-DIR-ENTRY
 END-INFO-DIR-ENTRY
 
 \1f
-File: xemacs-faq.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
-
-XEmacs FAQ
-**********
-
-This is the guide to the XEmacs Frequently Asked Questions list--a
-compendium of questions and answers pertaining to one of the finest
-programs ever written.  XEmacs is much more than just a Text Editor.
-
-   This FAQ is freely redistributable.  This FAQ is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
-implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-   If you have a Web browser, the official hypertext version is at
-`http://www.xemacs.org/FAQ/xemacs-faq.html'
-
-* Menu:
-
-* Introduction::        Introduction, Policy, Credits.
-* Installation::        Installation and Trouble Shooting.
-* Customization::       Customization and Options.
-* Subsystems::          Major Subsystems.
-* Miscellaneous::       The Miscellaneous Stuff.
-* MS Windows::          XEmacs on Microsoft Windows.
-* Current Events::      What the Future Holds.
-* Legacy Versions::     New information about old XEmacsen.
-
-
- --- The Detailed Node Listing ---
-
-Introduction, Policy, Credits
-
-* Q1.0.1::      What is XEmacs?
-* Q1.0.2::      What is the current version of XEmacs?
-* Q1.0.3::      Where can I find it?
-* Q1.0.4::      Why Another Version of Emacs?
-* Q1.0.5::      Why Haven't XEmacs and GNU Emacs Merged?
-* Q1.0.6::      Where can I get help?
-* Q1.0.7::      Where are the mailing lists archived?
-* Q1.0.8::      How do you pronounce XEmacs?
-* Q1.0.9::      What does XEmacs look like?
-* Q1.0.10::     Is there a port of XEmacs to Microsoft ('95 or NT)?
-* Q1.0.11::     Is there a port of XEmacs to the Macintosh?
-* Q1.0.12::     Is there a port of XEmacs to NextStep?
-* Q1.0.13::     Is there a port of XEmacs to OS/2?
-* Q1.0.14::     Where can I get a printed copy of the XEmacs users manual?
-
-Policies:
-* Q1.1.1::      What is the FAQ editorial policy?
-* Q1.1.2::      How do I become a Beta Tester?
-* Q1.1.3::      How do I contribute to XEmacs itself?
-
-Credits:
-* Q1.2.1::      Who wrote XEmacs?
-* Q1.2.2::      Who contributed to this version of the FAQ?
-* Q1.2.3::      Who contributed to the FAQ in the past?
-
-Internationalization:
-* Q1.3.1::      What is the status of internationalization support aka MULE (including Asian language support?
-* Q1.3.2::      How can I help with internationalization?
-* Q1.3.3::      How do I type non-ASCII characters?
-* Q1.3.4::      Can XEmacs messages come out in a different language?
-* Q1.3.5::      Please explain the various input methods in MULE/XEmacs
-* Q1.3.6::      How do I portably code for MULE/XEmacs?
-* Q1.3.7::      How about Cyrillic Modes?
-* Q1.3.8::      Does XEmacs support Unicode?
-* Q1.3.9::      How does XEmacs display Unicode?
-
-Getting Started:
-* Q1.4.1::      What is an `init.el' or `.emacs' and is there a sample one?
-* Q1.4.2::      Can I use the same `init.el'/`.emacs' with the other Emacs?
-* Q1.4.3::      Any good XEmacs tutorials around?
-* Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
-* Q1.4.5::      And how do I bind it to a key?
-* Q1.4.6::      What's the difference between a macro and a function?
-
-Installation and Trouble Shooting
-
-* Q2.0.1::      Running XEmacs without installing.
-* Q2.0.2::      XEmacs is too big.
-* Q2.0.3::      Compiling XEmacs with Netaudio.
-* Q2.0.4::      Problems with Linux and ncurses.
-* Q2.0.5::      Do I need X11 to run XEmacs?
-* Q2.0.6::      I'm having strange crashes.  What do I do?
-* Q2.0.7::      Libraries in non-standard locations.
-* Q2.0.8::      can't resolve symbol _h_errno
-* Q2.0.9::      Where do I find external libraries?
-* Q2.0.10::     After I run configure I find a coredump, is something wrong?
-* Q2.0.11::     XEmacs can't resolve host names.
-* Q2.0.12::     Why can't I strip XEmacs?
-* Q2.0.13::     I don't need no steenkin' packages.  Do I?
-* Q2.0.14::     How do I figure out which packages to install?
-* Q2.0.15::     EFS fails with "500 AUTH not understood" (NEW)
-* Q2.0.16::     Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW)
-
-Trouble Shooting:
-* Q2.1.1::      XEmacs just crashed on me!
-* Q2.1.2::      Cryptic Minibuffer messages.
-* Q2.1.3::      Translation Table Syntax messages at Startup.
-* Q2.1.4::      Startup warnings about deducing proper fonts?
-* Q2.1.5::      XEmacs cannot connect to my X Terminal.
-* Q2.1.6::      XEmacs just locked up my Linux X server.
-* Q2.1.7::      HP Alt key as Meta.
-* Q2.1.8::      got (wrong-type-argument color-instance-p nil)!
-* Q2.1.9::      XEmacs causes my OpenWindows 3.0 server to crash.
-* Q2.1.10::     Warnings from incorrect key modifiers.
-* Q2.1.11::     Can't instantiate image error... in toolbar
-* Q2.1.12::     Regular Expression Problems on DEC OSF1.
-* Q2.1.13::     HP/UX 10.10 and `create_process' failure
-* Q2.1.14::     C-g doesn't work for me.  Is it broken?
-* Q2.1.15::     How to debug an XEmacs problem with a debugger.
-* Q2.1.16::     XEmacs crashes in `strcat' on HP/UX 10.
-* Q2.1.17::     `Marker does not point anywhere'.
-* Q2.1.18::     XEmacs is outputting lots of X errors.
-* Q2.1.19::     XEmacs does not follow the local timezone.
-* Q2.1.20::     `Symbol's function definition is void: hkey-help-show.'
-* Q2.1.21::     [This question intentionally left blank]
-* Q2.1.22::     XEmacs seems to take a really long time to do some things.
-* Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
-* Q2.1.24::     XEmacs won't start without network.
-* Q2.1.25::     After upgrading, XEmacs won't do `foo' any more!
-
-Customization and Options
-
-* Q3.0.1::      What version of Emacs am I running?
-* Q3.0.2::      How do I evaluate Elisp expressions?
-* Q3.0.3::      `(setq tab-width 6)' behaves oddly.
-* Q3.0.4::      How can I add directories to the `load-path'?
-* Q3.0.5::      How to check if a lisp function is defined?
-* Q3.0.6::      Can I force the output of `(face-list)' to a buffer?
-* Q3.0.7::      Font selections don't get saved after `Save Options'.
-* Q3.0.8::      How do I make a single minibuffer frame?
-* Q3.0.9::      What is `Customize'?
-
-X Window System & Resources:
-* Q3.1.1::      Where is a list of X resources?
-* Q3.1.2::      How can I detect a color display?
-* Q3.1.3::      [This question intentionally left blank]
-* Q3.1.4::      [This question intentionally left blank]
-* Q3.1.5::      How can I get the icon to just say `XEmacs'?
-* Q3.1.6::      How can I have the window title area display the full path?
-* Q3.1.7::      `xemacs -name junk' doesn't work?
-* Q3.1.8::      `-iconic' doesn't work.
-
-Textual Fonts & Colors:
-* Q3.2.1::      How can I set color options from `init.el'/`.emacs'?
-* Q3.2.2::      How do I set the text, menu and modeline fonts?
-* Q3.2.3::      How can I set the colors when highlighting a region?
-* Q3.2.4::      How can I limit color map usage?
-* Q3.2.5::      My tty supports color, but XEmacs doesn't use them.
-* Q3.2.6::      Can I have pixmap backgrounds in XEmacs?
-
-The Modeline:
-* Q3.3.1::      How can I make the modeline go away?
-* Q3.3.2::      How do you have XEmacs display the line number in the modeline?
-* Q3.3.3::      How do I get XEmacs to put the time of day on the modeline?
-* Q3.3.4::      How do I turn off current chapter from AUC TeX modeline?
-* Q3.3.5::      How can one change the modeline color based on the mode used?
-
-Multiple Device Support:
-* Q3.4.1::      How do I open a frame on another screen of my multi-headed display?
-* Q3.4.2::      Can I really connect to a running XEmacs after calling up over a modem?  How?
-
-The Keyboard:
-* Q3.5.1::      How can I bind complex functions (or macros) to keys?
-* Q3.5.2::      How can I stop down-arrow from adding empty lines to the bottom of my buffers?
-* Q3.5.3::      How do I bind C-. and C-; to scroll one line up and down?
-* Q3.5.4::      Globally binding Delete?
-* Q3.5.5::      Scrolling one line at a time.
-* Q3.5.6::      How to map Help key alone on Sun type4 keyboard?
-* Q3.5.7::      How can you type in special characters in XEmacs?
-* Q3.5.8::      [This question intentionally left blank]
-* Q3.5.9::      How do I make the Delete key delete forward?
-* Q3.5.10::     Can I turn on "sticky" modifier keys?
-* Q3.5.11::     How do I map the arrow keys?
-
-The Cursor:
-* Q3.6.1::      Is there a way to make the bar cursor thicker?
-* Q3.6.2::      Is there a way to get back the old block cursor where the cursor covers the character in front of the point?
-* Q3.6.3::      Can I make the cursor blink?
-
-The Mouse and Highlighting:
-* Q3.7.1::      How can I turn off Mouse pasting?
-* Q3.7.2::      How do I set control/meta/etc modifiers on mouse buttons?
-* Q3.7.3::      Clicking the left button does not do anything in buffer list.
-* Q3.7.4::      How can I get a list of buffers when I hit mouse button 3?
-* Q3.7.5::      Why does cut-and-paste not work between XEmacs and a cmdtool?
-* Q3.7.6::      How I can set XEmacs up so that it pastes where the text cursor is?
-* Q3.7.7::      How do I select a rectangular region?
-* Q3.7.8::      Why does M-w take so long?
-
-The Menubar and Toolbar:
-* Q3.8.1::      How do I get rid of the menu (or menubar)?
-* Q3.8.2::      Can I customize the basic menubar?
-* Q3.8.3::      How do I control how many buffers are listed in the menu `Buffers' list?
-* Q3.8.4::      Resources like `Emacs*menubar*font' are not working?
-* Q3.8.5::      How can I bind a key to a function to toggle the toolbar?
-
-Scrollbars:
-* Q3.9.1::      How can I disable the scrollbar?
-* Q3.9.2::      How can one use resources to change scrollbar colors?
-* Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
-* Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
-
-Text Selections:
-* Q3.10.1::     How can I turn off or change highlighted selections?
-* Q3.10.2::     How do I get that typing on an active region removes it?
-* Q3.10.3::     Can I turn off the highlight during isearch?
-* Q3.10.4::     How do I turn off highlighting after C-x C-p (mark-page)?
-* Q3.10.5::     The region disappears when I hit the end of buffer while scrolling.
-* Q3.10.6::     Why is killing so slow?
-
-Major Subsystems
-
-* Q4.0.1::      How do I set up VM to retrieve remote mail using POP?
-* Q4.0.2::      How do I get VM to filter mail for me?
-* Q4.0.3::      How can I get VM to automatically check for new mail?
-* Q4.0.4::      [This question intentionally left blank]
-* Q4.0.5::      How do I get my outgoing mail archived?
-* Q4.0.6::      I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
-* Q4.0.7::      Is there a mailing list or FAQ for VM?
-* Q4.0.8::      Remote mail reading with VM.
-* Q4.0.9::      rmail or VM gets an error incorporating new mail.
-* Q4.0.10::     How do I make VM stay in a single frame?
-* Q4.0.11::     How do I make VM or mh-e display graphical smilies?
-* Q4.0.12::     Customization of VM not covered in the manual or here.
-
-Web browsing with W3:
-* Q4.1.1::      What is W3?
-* Q4.1.2::      How do I run W3 from behind a firewall?
-* Q4.1.3::      Is it true that W3 supports style sheets and tables?
-
-Reading Netnews and Mail with Gnus:
-* Q4.2.1::      GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
-* Q4.2.2::      [This question intentionally left blank]
-* Q4.2.3::      How do I make Gnus stay within a single frame?
-* Q4.2.4::      How do I customize the From: line?
-
-Other Mail & News:
-* Q4.3.1::      How can I read and/or compose MIME messages?
-* Q4.3.2::      What is TM and where do I get it?
-* Q4.3.3::      Why isn't this `movemail' program working?
-* Q4.3.4::      Movemail is also distributed by Netscape?  Can that cause problems?
-* Q4.3.5::      Where do I find pstogif (required by tm)?
-
-Sparcworks, EOS, and WorkShop:
-* Q4.4.1::      What is SPARCworks, EOS, and WorkShop
-* Q4.4.2::      How do I start the Sun Workshop support in XEmacs 21?
-
-Energize:
-* Q4.5.1::      What is/was Energize?
-
-Infodock:
-* Q4.6.1::      What is Infodock?
-
-Other Unbundled Packages:
-* Q4.7.1::      What is AUC TeX?  Where do you get it?
-* Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
-* Q4.7.3::      [This question intentionally left blank]
-* Q4.7.4::      Problems installing AUC TeX
-* Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
-* Q4.7.6::      Is there a MatLab mode?
-* Q4.7.7::      Can I edit files on other hosts?
-
-The Miscellaneous Stuff
-
-* Q5.0.1::      How can I do source code highlighting using font-lock?
-* Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
-* Q5.0.3::      How do I get `More' Syntax Highlighting on by default?
-* Q5.0.4::      How can I enable auto-indent and/or Filladapt?
-* Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
-* Q5.0.6::      How do I start up a second shell buffer?
-* Q5.0.7::      Telnet from shell filters too much.
-* Q5.0.8::      Why does edt emulation not work?
-* Q5.0.9::      How can I emulate VI and use it as my default mode?
-* Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     [This question intentionally left blank]
-* Q5.0.12::     How do I disable gnuserv from opening a new frame?
-* Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
-* Q5.0.14::     Strange things are happening in Shell Mode.
-* Q5.0.15::     Where do I get the latest CC Mode?
-* Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
-* Q5.0.17::     How can I get two instances of info?
-* Q5.0.18::     [This question intentionally left blank]
-* Q5.0.19::     Is there something better than LaTeX mode?
-* Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
-
-Emacs Lisp Programming Techniques:
-* Q5.1.1::      The difference in key sequences between XEmacs and GNU Emacs?
-* Q5.1.2::      Can I generate "fake" keyboard events?
-* Q5.1.3::      Could you explain `read-kbd-macro' in more detail?
-* Q5.1.4::      What is the performance hit of `let'?
-* Q5.1.5::      What is the recommended use of `setq'?
-* Q5.1.6::      What is the typical misuse of `setq' ?
-* Q5.1.7::      I like the `do' form of cl, does it slow things down?
-* Q5.1.8::      I like recursion, does it slow things down?
-* Q5.1.9::      How do I put a glyph as annotation in a buffer?
-* Q5.1.10::     `map-extents' won't traverse all of my extents!
-* Q5.1.11::     My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
-
-Sound:
-* Q5.2.1::      How do I turn off the sound?
-* Q5.2.2::      How do I get funky sounds instead of a boring beep?
-* Q5.2.3::      What's NAS, how do I get it?
-* Q5.2.4::      Sunsite sounds don't play.
-
-Miscellaneous:
-* Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
-* Q5.3.2::      [This question intentionally left blank]
-* Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
-* Q5.3.4::      Getting M-x lpr to work with postscript printer.
-* Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
-* Q5.3.6::      [This question intentionally left blank]
-* Q5.3.7::      Can I have the end of the buffer delimited in some way?
-* Q5.3.8::      How do I insert today's date into a buffer?
-* Q5.3.9::      Are only certain syntactic character classes available for abbrevs?
-* Q5.3.10::     How can I get those oh-so-neat X-Face lines?
-* Q5.3.11::     How do I add new Info directories?
-* Q5.3.12::     What do I need to change to make printing work?
-
-XEmacs on MS Windows
-
-General Info:
-* Q6.0.1::      What is the status of the XEmacs port to Windows?
-* Q6.0.2::      What flavors of MS Windows are supported?  The list name implies NT only.
-* Q6.0.3::      Are binaries available?
-* Q6.0.4::      Can I build XEmacs on MS Windows with X support?  Do I need to?
-* Q6.0.5::      I'd like to help out.  What do I do?
-* Q6.0.6::      What are Cygwin and MinGW, and do I need them to run XEmacs?
-* Q6.0.7::      What exactly are all the different ways to build XEmacs under Windows?
-
-Building XEmacs on MS Windows:
-* Q6.1.1::      What compiler/libraries do I need to compile XEmacs?
-* Q6.1.2::      How do I compile the native port?
-* Q6.1.3::      What do I need for Cygwin?
-* Q6.1.4::      How do I compile under Cygwin?
-* Q6.1.5::      How do I compile using MinGW (aka `the -mno-cygwin flag to gcc')?
-* Q6.1.6::      I decided to run with X.  Where do I get an X server?
-* Q6.1.7::      How do I compile with X support?
-
-Customization and User Interface:
-* Q6.2.1::      How does the port cope with differences in the Windows user interface?
-* Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
-* Q6.2.3::      Where do I put my `init.el'/`.emacs' file?
-* Q6.2.4::      How do I get Windows Explorer to associate a file type with XEmacs?
-* Q6.2.5::      Is it possible to print from XEmacs?
-
-Miscellaneous:
-* Q6.3.1::      Does XEmacs rename all the `win32-*' symbols to `w32-*'?
-* Q6.3.2::      What are the differences between the various MS Windows emacsen?
-* Q6.3.3::      XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
-* Q6.3.4::      What is the porting team doing at the moment?
-
-Troubleshooting:
-* Q6.4.1::      XEmacs won't start on Windows.
-* Q6.4.2::      Why do I get a blank toolbar on Windows 95?
-* Q6.4.3::      XEmacs complains "No such file or directory, diff"
-
-What the Future Holds
-
-* Q7.0.1::      What new features will be in XEmacs soon?
-* Q7.0.2::      What's new in XEmacs 21.4?
-* Q7.0.3::      What's new in XEmacs 21.1?
-* Q7.0.4::      What's new in XEmacs 20.4?
-* Q7.0.5::      What's new in XEmacs 20.3?
-* Q7.0.6::      What's new in XEmacs 20.2?
-
-New information about old XEmacsen.
-
-XEmacs 21.1:
-* Q8.0.1::      Gnus 5.10 won't display smileys in XEmacs 21.1.
-
-\1f
-File: xemacs-faq.info,  Node: Introduction,  Next: Installation,  Prev: Top,  Up: Top
-
-1 Introduction, Policy, Credits
-*******************************
-
-Learning XEmacs is a lifelong activity.  Even people who have used Emacs
-for years keep discovering new features.  Therefore this document cannot
-be complete.  Instead it is aimed at the person who is either
-considering XEmacs for their own use, or has just obtained it and is
-wondering what to do next.  It is also useful as a reference to
-available resources.
-
-   The previous maintainer of the FAQ was Anthony Rossini
-<rossini@biostat.washington.edu>, who started it, after getting tired
-of hearing JWZ complain about repeatedly having to answer questions.
-Ben Wing <ben@xemacs.org> and Chuck Thompson <cthomp@xemacs.org>, the
-principal authors of XEmacs, then took over and Ben did a massive
-update reorganizing the whole thing.  At which point Anthony took back
-over, but then had to give it up again.  Some of the other contributors
-to this FAQ are listed later in this document.
-
-   The previous version was converted to hypertext format, and edited by
-Steven L. Baur <steve@xemacs.org>.  It was converted back to texinfo by
-Hrvoje Niksic <hniksic@xemacs.org>.  The FAQ was then maintained by
-Andreas Kaempf <andreas@sccon.com>, who passed it on to ChristianNyb/o.
-
-   If you notice any errors or items which should be added or amended to
-this FAQ please send email to Sandra Wambold <faq@xemacs.org>.  Include
-`XEmacs FAQ' on the Subject: line.
-
-* Menu:
-
-Introduction:
-* Q1.0.1::      What is XEmacs?
-* Q1.0.2::      What is the current version of XEmacs?
-* Q1.0.3::      Where can I find it?
-* Q1.0.4::      Why Another Version of Emacs?
-* Q1.0.5::      Why Haven't XEmacs and GNU Emacs Merged?
-* Q1.0.6::      Where can I get help?
-* Q1.0.7::      Where are the mailing lists archived?
-* Q1.0.8::      How do you pronounce XEmacs?
-* Q1.0.9::      What does XEmacs look like?
-* Q1.0.10::     Is there a port of XEmacs to Microsoft ('95 or NT)?
-* Q1.0.11::     Is there a port of XEmacs to the Macintosh?
-* Q1.0.12::     Is there a port of XEmacs to NextStep?
-* Q1.0.13::     Is there a port of XEmacs to OS/2?
-* Q1.0.14::     Where can I get a printed copy of the XEmacs users manual?
-
-Policies:
-* Q1.1.1::      What is the FAQ editorial policy?
-* Q1.1.2::      How do I become a Beta Tester?
-* Q1.1.3::      How do I contribute to XEmacs itself?
-
-Credits:
-* Q1.2.1::      Who wrote XEmacs?
-* Q1.2.2::      Who contributed to this version of the FAQ?
-* Q1.2.3::      Who contributed to the FAQ in the past?
-
-Internationalization:
-* Q1.3.1::      What is the status of internationalization support aka MULE (including Asian language support?
-* Q1.3.2::      How can I help with internationalization?
-* Q1.3.3::      How do I type non-ASCII characters?
-* Q1.3.4::      Can XEmacs messages come out in a different language?
-* Q1.3.5::      Please explain the various input methods in MULE/XEmacs
-* Q1.3.6::      How do I portably code for MULE/XEmacs?
-* Q1.3.7::      How about Cyrillic Modes?
-* Q1.3.8::      Does XEmacs support Unicode?
-* Q1.3.9::      How does XEmacs display Unicode?
-
-Getting Started:
-* Q1.4.1::      What is an `init.el' or `.emacs' and is there a sample one?
-* Q1.4.2::      Can I use the same `init.el'/`.emacs' with the other Emacs?
-* Q1.4.3::      Any good XEmacs tutorials around?
-* Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
-* Q1.4.5::      And how do I bind it to a key?
-* Q1.4.6::      What's the difference between a macro and a function?
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.1,  Next: Q1.0.2,  Prev: Introduction,  Up: Introduction
-
-1.0: Introduction
-=================
-
-Q1.0.1: What is XEmacs?
------------------------
-
-XEmacs is a powerful, highly customizable open source text editor and
-application development system, with full GUI support.  It is protected
-under the GNU Public License and related to other versions of Emacs, in
-particular GNU Emacs.  Its emphasis is on modern graphical user
-interface support and an open software development model, similar to
-Linux.  XEmacs has an active development community numbering in the
-hundreds (and thousands of active beta testers on top of this), and runs
-on all versions of MS Windows, on Linux, and on nearly every other
-version of Unix in existence.  Support for XEmacs has been supplied by
-Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical
-Laboratory, Amdahl Corporation, BeOpen, and others, as well as the
-unpaid time of a great number of individual developers.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.2,  Next: Q1.0.3,  Prev: Q1.0.1,  Up: Introduction
-
-Q1.0.2: What is the current version of XEmacs?
-----------------------------------------------
-
-XEmacs versions 21.1.* are releases made from the current stable
-sources.  XEmacs versions 21.2.* are releases made from the development
-sources.  Check at `http://www.xemacs.org' for the current minor
-version.
-
-   XEmacs 19.16 was the last release of v19, released in November, 1997,
-which was also the last version without international language support.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.3,  Next: Q1.0.4,  Prev: Q1.0.2,  Up: Introduction
-
-Q1.0.3: Where can I find it?
-----------------------------
-
-The canonical source and binaries can be found via anonymous FTP at:
-
-     `ftp://ftp.xemacs.org/pub/xemacs/'
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.4,  Next: Q1.0.5,  Prev: Q1.0.3,  Up: Introduction
-
-Q1.0.4: Why Another Version of Emacs?
--------------------------------------
-
-For a detailed description of the differences between GNU Emacs and
-XEmacs and a detailed history of XEmacs, check out the
-     NEWS file (http://www.xemacs.org/About/XEmacsVsGNUemacs.html)
-
-   However, here is a list of some of the reasons why we think you might
-consider using it:
-
-   * It looks nicer.
-
-   * The XEmacs maintainers are generally more receptive to suggestions
-     than the GNU Emacs maintainers.
-
-   * Many more bundled packages than GNU Emacs.
-
-   * Binaries are available for many common operating systems.
-
-   * Face support on TTY's.
-
-   * A built-in toolbar.
-
-   * Better Motif compliance.
-
-   * Some internationalization support (including full MULE support, if
-     compiled with it).
-
-   * Variable-width fonts.
-
-   * Variable-height lines.
-
-   * Marginal annotations.
-
-   * ToolTalk support.
-
-   * XEmacs can be used as an Xt widget, and can be embedded within
-     another application.
-
-   * Horizontal and vertical scrollbars (using real toolkit scrollbars).
-
-   * Better APIs (and performance) for attaching fonts, colors, and
-     other properties to text.
-
-   * The ability to embed arbitrary graphics in a buffer.
-
-   * Completely compatible (at the C level) with the Xt-based toolkits.
-
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.5,  Next: Q1.0.6,  Prev: Q1.0.4,  Up: Introduction
-
-Q1.0.5: Why Haven't XEmacs and GNU Emacs Merged?
-------------------------------------------------
-
-There are currently irreconcilable differences in the views about
-technical, programming, design and organizational matters between RMS
-and the XEmacs development team which provide little hope for a merge to
-take place in the short-term future.
-
-   If you have a comment to add regarding the merge, it is a good idea
-to avoid posting to the newsgroups,  because of the very heated
-flamewars that often result.  Mail your questions to
-<xemacs-beta@xemacs.org> and <bug-gnu-emacs@prep.ai.mit.edu>.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.6,  Next: Q1.0.7,  Prev: Q1.0.5,  Up: Introduction
-
-Q1.0.6: Where can I get help?
------------------------------
-
-Probably the easiest way, if everything is installed, is to use Info, by
-pressing `C-h i', or looking for an Info item on the Help Menu.  `M-x
-apropos' can be used to look for particular commands.
-
-   For items not found in the manual, try reading this FAQ and reading
-the Usenet group comp.emacs.xemacs.
-
-   If you choose to post to a newsgroup, *please use
-comp.emacs.xemacs*.  Please do not post XEmacs related questions to
-gnu.emacs.help.
-
-   If you cannot post or read Usenet news, there is a corresponding
-mailing list <xemacs-news@xemacs.org> which is available.  It can be
-subscribed to via the Mailman Web interface or by sending mail to to
-<xemacs-news-request@xemacs.org> with `subscribe' in the body of the
-message.  See also `http://www.xemacs.org/Lists/#xemacs-news'.  To
-cancel a subscription, you may use the <xemacs-news-request@xemacs.org>
-address or the Web interface.  Send a message with a subject of
-`unsubscribe' to be removed.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.7,  Next: Q1.0.8,  Prev: Q1.0.6,  Up: Introduction
-
-Q1.0.7: Where are the mailing lists archived?
----------------------------------------------
-
-The archives can be found at `http://list-archive.xemacs.org'
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.8,  Next: Q1.0.9,  Prev: Q1.0.7,  Up: Introduction
-
-Q1.0.8: How do you pronounce XEmacs?
-------------------------------------
-
-The most common pronounciation is `Eks eemax'.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.9,  Next: Q1.0.10,  Prev: Q1.0.8,  Up: Introduction
-
-Q1.0.9: What does XEmacs look like?
------------------------------------
-
-Screen snapshots are available at
-`http://www.xemacs.org/About/Screenshots/index.html' as part of the
-XEmacs website.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.10,  Next: Q1.0.11,  Prev: Q1.0.9,  Up: Introduction
-
-Q1.0.10: Is there a port of XEmacs to Microsoft ('95 or NT)?
-------------------------------------------------------------
-
-Yes.  XEmacs can be built under MS Windows and is fully-featured and
-actively developed.  See *Note MS Windows::.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.11,  Next: Q1.0.12,  Prev: Q1.0.10,  Up: Introduction
-
-Q1.0.11: Is there a port of XEmacs to the Macintosh?
-----------------------------------------------------
-
-Yes.
-
-   XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it
-certainly will not feel very much like a Mac application as it has no
-Mac-specific code in it.
-
-   There is also a port of XEmacs 19.14 that works on all recent
-versions of MacOS, from 8.1 through MacOS X, by Pitts Jarvis
-<pjarvis@ispchannel.com>.  It runs in an equivalent of TTY mode only
-(one single Macintosh window, 25 colors), but has a large number of
-Mac-specific additions.  It's available at
-`http://homepage.mac.com/pjarvis/xemacs.html'.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.12,  Next: Q1.0.13,  Prev: Q1.0.11,  Up: Introduction
-
-Q1.0.12: Is there a port of XEmacs to NextStep?
------------------------------------------------
-
-Carl Edman, apparently no longer at <cedman@princeton.edu>, did the
-port of GNU Emacs to NeXTstep and expressed interest in doing the
-XEmacs port, but never went any farther.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.13,  Next: Q1.0.14,  Prev: Q1.0.12,  Up: Introduction
-
-Q1.0.13: Is there a port of XEmacs to OS/2?
--------------------------------------------
-
-No, but Alexander Nikolaev <avn_1251@mail.ru> is working on it.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.0.14,  Next: Q1.1.1,  Prev: Q1.0.13,  Up: Introduction
-
-Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual?
------------------------------------------------------------------------
-
-Pre-printed manuals are not available.  If you are familiar with TeX,
-you can generate your own manual from the XEmacs sources.
-
-   HTML and Postscript versions of XEmacs manuals are available from the
-XEmacs web site at `http://www.xemacs.org/Documentation/index.html'.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.1.1,  Next: Q1.1.2,  Prev: Q1.0.14,  Up: Introduction
-
-1.1: Policies
-=============
-
-Q1.1.1: What is the FAQ editorial policy?
------------------------------------------
-
-The FAQ is actively maintained and modified regularly.  All links should
-be up to date.  Unfortunately, some of the information is out of date -
-a situation which the FAQ maintainer is working on.  All submissions are
-welcome, please e-mail submissions to XEmacs FAQ maintainers
-<faq@xemacs.org>.
-
-   Please make sure that `XEmacs FAQ' appears on the Subject: line.  If
-you think you have a better way of answering a question, or think a
-question should be included, we'd like to hear about it.  Questions and
-answers included into the FAQ will be edited for spelling and grammar
-and will be attributed.  Answers appearing without attribution are
-either from versions of the FAQ dated before May 1996 or are from
-previous FAQ maintainers.  Answers quoted from Usenet news articles will
-always be attributed, regardless of the author.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.1.2,  Next: Q1.1.3,  Prev: Q1.1.1,  Up: Introduction
-
-Q1.1.2: How do I become a Beta Tester?
---------------------------------------
-
-Send an email message to <xemacs-beta-request@xemacs.org> with the line
-`subscribe' in the body of the message.
-
-   Be prepared to get your hands dirty, as beta testers are expected to
-identify problems as best they can.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.1.3,  Next: Q1.2.1,  Prev: Q1.1.2,  Up: Introduction
-
-Q1.1.3: How do I contribute to XEmacs itself?
----------------------------------------------
-
-Ben Wing <ben@xemacs.org> writes:
-
-     BTW if you have a wish list of things that you want added, you
-     have to speak up about it!  More specifically, you can do the
-     following if you want a feature added (in increasing order of
-     usefulness):
-
-        * Make a posting about a feature you want added.
-
-        * Become a beta tester and make more postings about those same
-          features.
-
-        * Convince us that you're going to use the features in some
-          cool and useful way.
-
-        * Come up with a clear and well-thought-out API concerning the
-          features.
-
-        * Write the code to implement a feature and send us a patch.
-
-     (not that we're necessarily requiring you to write the code, but
-     we can always hope :)
-
-\1f
-File: xemacs-faq.info,  Node: Q1.2.1,  Next: Q1.2.2,  Prev: Q1.1.3,  Up: Introduction
-
-1.2: Credits
-============
-
-Q1.2.1: Who wrote XEmacs?
--------------------------
-
-XEmacs is the result of the time and effort of many people.  The
-developers responsible for recent releases are:
-
-   * Martin Buchholz <martin@xemacs.org>
-
-   * Stephen Turnbull <stephen@xemacs.org>
-
-   * Ben Wing <ben@xemacs.org>
-
-   * Hrvoje Niksic <hniksic@xemacs.org>
-
-
-   The developers responsible for older releases were:
-
-   * Steve Baur <steve@xemacs.org>
-
-   * Chuck Thompson <cthomp@xemacs.org>
-
-   * Jamie Zawinski <jwz@jwz.org>
-
-   * Richard Mlynarik <mly@adoc.xerox.com>
-
-     Steve Baur was the primary maintainer for 19.15 through 21.0.
-
-     Chuck Thompson and Ben Wing were the maintainers for 19.11 through
-     19.14 and heavy code contributors for 19.8 through 19.10.
-
-     Jamie Zawinski was the maintainer for 19.0 through 19.10 (the
-     entire history of Lucid Emacs).  Richard Mlynarik was a heavy code
-     contributor to 19.6 through 19.8.
-
-
-   Along with many other contributors, partially enumerated in the
-`About XEmacs' option in the Help menu.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.2.2,  Next: Q1.2.3,  Prev: Q1.2.1,  Up: Introduction
-
-Q1.2.2: Who contributed to this version of the FAQ?
----------------------------------------------------
-
-The following people contributed valuable suggestions to building this
-version of the FAQ (listed in alphabetical order):
-
-   * SL Baur <steve@xemacs.org>
-
-   * Hrvoje Niksic <hniksic@xemacs.org>
-
-   * Aki Vehtari <Aki.Vehtari@hut.fi>
-
-
-\1f
-File: xemacs-faq.info,  Node: Q1.2.3,  Next: Q1.3.1,  Prev: Q1.2.2,  Up: Introduction
-
-Q1.2.3: Who contributed to the FAQ in the past?
------------------------------------------------
-
-This is only a partial list, as many names were lost in a hard disk
-crash some time ago.
-
-   * Curtis.N.Bingham <binge@aloft.att.com>
-
-   * Georges Brun-Cottan <bruncott@dormeur.inria.fr>
-
-   * Richard Caley <rjc@cogsci.ed.ac.uk>
-
-   * Richard Cognot <cognot@ensg.u-nancy.fr>
-
-   * Mark Daku <daku@nortel.ca>
-
-   * William G. Dubuque <wgd@martigny.ai.mit.edu>
-
-   * Eric Eide <eeide@cs.utah.edu>
-
-   * Alain Fauconnet <af@biomath.jussieu.fr>
-
-   * Chris Flatters <cflatter@nrao.edu>
-
-   * Evelyn Ginsparg <ginsparg@adra.com>
-
-   * Marty Hall <hall@aplcenmp.apl.jhu.edu>
-
-   * Darrell Kindred <dkindred@cmu.edu>
-
-   * David Moore <dmoore@ucsd.edu>
-
-   * Arup Mukherjee <arup+@cmu.edu>
-
-   * Juergen Nickelsen <nickel@prz.tu-berlin.de>
-
-   * Kevin R. Powell <powell@csl.ncsa.uiuc.edu>
-
-   * Justin Sheehy <dworkin@ccs.neu.edu>
-
-   * Stig <stig@hackvan.com>
-
-   * Aki Vehtari <Aki.Vehtari@hut.fi>
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.1,  Next: Q1.3.2,  Prev: Q1.2.3,  Up: Introduction
-
-1.3: Internationalization
-=========================
-
-Q1.3.1: What is the status of internationalization support aka MULE (including Asian language support?
-------------------------------------------------------------------------------------------------------
-
-Both the stable and development versions of XEmacs include
-internationalization support (aka MULE).  MULE currently (21.4) works on
-UNIX and Linux systems.  It is possible to build with MULE on Windows
-systems, but if you really need MULE on Windows, it is recommended that
-you build and use the development (21.5) version, and deal with the
-instability of the development tree.  Binaries compiled without MULE
-support run faster than MULE capable XEmacsen.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.2,  Next: Q1.3.3,  Prev: Q1.3.1,  Up: Introduction
-
-Q1.3.2: How can I help with internationalization?
--------------------------------------------------
-
-If you would like to help, you may want to join the
-<xemacs-mule@xemacs.org> mailing list.  Especially needed are people
-who speak/write languages other than English, who are willing to use
-XEmacs/MULE regularly, and have some experience with Elisp.
-
-   Translations of the TUTORIAL and man page are welcome, and XEmacs
-does support multilingual menus, but we have few current translations.
-
-   *Note Q1.1.2::.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.3,  Next: Q1.3.4,  Prev: Q1.3.2,  Up: Introduction
-
-Q1.3.3: How do I type non-ASCII characters?
--------------------------------------------
-
-See question 3.5.7 (*note Q3.5.7::) in part 3 of this FAQ for some
-simple methods that also work in non-MULE builds of XEmacs (but only for
-one-octet coded character sets, and mostly for ISO 8859/1).  Many of the
-methods available for Cyrillic (*note Q1.3.7::) work without MULE.
-MULE has more general capabilities.  *Note Q1.3.5::.
-
-   *Note Q3.2.7::, which covers display of non-ASCII characters.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.4,  Next: Q1.3.5,  Prev: Q1.3.3,  Up: Introduction
-
-Q1.3.4: Can XEmacs messages come out in a different language?
--------------------------------------------------------------
-
-The message-catalog support was written but is badly bit-rotted.  XEmacs
-20 and 21 did _not_ support it, and early releases of XEmacs 22 will
-not either.
-
-   However, menubar localization _does_ work.  To enable it, add to
-your `Emacs' file entries like this:
-
-     Emacs*XlwMenu.resourceLabels:                   True
-     Emacs*XlwMenu.file.labelString:                 Fichier
-     Emacs*XlwMenu.openInOtherWindow.labelString:      In anderem Fenster oeffnen
-
-   The name of the resource is derived from the non-localized entry by
-removing punctuation and capitalizing as above.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.5,  Next: Q1.3.6,  Prev: Q1.3.4,  Up: Introduction
-
-Q1.3.5: Please explain the various input methods in MULE/XEmacs
----------------------------------------------------------------
-
-Mule supports a wide variety of input methods.  There are three basic
-classes: Lisp implementations, generic platform support, and library
-interfaces.
-
-   _Lisp implementations_ include Quail, which provides table-driven
-input methods for almost all the character sets that Mule supports
-(including all of the ISO 8859 family, the Indic languages, Thai, and
-so on), and SKK, for Japanese.  (SKK also supports an interface to an
-external "dictionary server" process.)  Quail supports both typical
-"dead-key" methods (eg, in the "latin-1-prefix" method, `" a' produces
-ä, LATIN SMALL LETTER A WITH DIAERESIS), and the complex
-dictionary-based phonetic methods used for Asian ideographic languages
-like Chinese.
-
-   Lisp implementations can be less powerful (but they are not
-perceptibly inefficient), and of course are not portable to non-Emacs
-applications.  The incompatibility can be very annoying.  On the other
-hand, they require no special platform support or external libraries,
-so if you can display the characters, Mule can input them for you and
-you can edit, anywhere.
-
-   _Generic platform support_ is currently limited to the X Input
-Method (XIM) framework, although support for MSIME (for MS Windows) is
-planned, and IIIMF (Sun's Internet-Intranet Input Method Framework)
-support is extremely desirable.  XIM is enabled at build time by use of
-the `--with-xim' flag to `configure'.  For use of XIM, see your
-platform documentation.  However, normally the input method you use is
-specified via the `LANG' and `XMODIFIERS' environment variables.
-
-   Of course, input skills are portable across most applications.
-However, especially in modern GUI systems the habit of using bucky bits
-has fallen into sad disuse, and many XIM systems are poorly configured
-for use with Emacs.  For example, the kinput2 input manager (a separate
-process providing an interface between Japanese dictionary servers such
-as Canna and Wnn, and the application) tends to gobble up keystrokes
-generating Meta characters.  This means that to edit while using an XIM
-input method, you must toggle the input method off every time you want
-to use `M-f'.  Your mileage may vary.
-
-   _Library interfaces_ are most common for Japanese, although Wnn
-supports Chinese (traditional and simplified) and Korean.  There are
-Chinese and Korean input servers available, but we do not know of any
-patches for XEmacs to use them directly.  You can use them via
-IM-enabled terminals, by manipulating the terminal coding systems.  We
-describe only the Japanese-oriented systems here.  The advantage of
-these systems is that they are very powerful, and on platforms where
-they are available there is typically a wide range of applications that
-support them.  Thus your input skills are portable across applications.
-
-   Mule provides built-in interfaces to the following input methods:
-Wnn4, Wnn6, Canna, and SJ3.  These can be configured at build time.
-There are patches available (no URL, sorry) to support the SKK server,
-as well.  Wnn and SJ3 use the `egg' user interface.  The interface for
-Canna is specialized to Canna.
-
-   Wnn supports Japanese, Chinese and Korean. It is made by OMRON and
-Kyôto University. It is a powerful and complex system.  Wnn4 is free
-and Wnn6 is not.  Wnn uses grammatical hints and probability of word
-association, so in principle Wnn can be cleverer than other methods.
-
-   Canna, made by NEC, supports only Japanese.  It is a simple and
-powerful system. Canna uses only grammar, but its grammar and
-dictionary are quite sophisticated.  So for standard modern Japanese,
-Canna seems cleverer than Wnn4. In addition, the UNIX version of Canna
-is free (now there is a Microsoft Windows version).
-
-   SJ3, by Sony, supports only Japanese.
-
-   Egg consists of following parts:
-
-  1. Input character Translation System (ITS) layer.  It translates
-     ASCII inputs to Kana/PinYin/Hangul characters.
-
-  2. Kana/PinYin/Hangul to Kanji transfer layer.  The interface layer
-     to network Kana-Kanji server (Wnn and Sj3).
-
-   These input methods are modal.  They have a raw (alphabet) mode, a
-phonetic input mode, and Kana-Kanji transfer mode.  However there are
-mode-less input methods for Egg and Canna.  `boiled-egg' is a mode-less
-input method running on Egg.  For Canna, `canna.el' has a tiny
-boiled-egg-like command, `(canna-boil)', and there are some
-boiled-egg-like utilities.
-
-   Much of this information was provided by MORIOKA Tomohiko
-<morioka@jaist.ac.jp>.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.6,  Next: Q1.3.7,  Prev: Q1.3.5,  Up: Introduction
-
-Q1.3.6: How do I portably code for MULE/XEmacs?
------------------------------------------------
-
-MULE has evolved rapidly over the last few years, and the original third
-party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite
-different implementations.  The APIs also vary although recent versions
-of XEmacs have tended to converge to the GNU Emacs standard.
-
-   MULE implementations are going to continue to evolve.  Both GNU Emacs
-and XEmacs are working hard on Unicode support, which will involve new
-APIs and probably variations on old ones.  For XEmacs 22, the old ISO
-2022-based system for recognizing encodings will be replaced by a much
-more flexible system, which should improve accuracy of automatic coding
-detections, but will also involve new APIs.
-
-   MORIOKA Tomohiko <morioka@jaist.ac.jp> writes:
-
-     The application implementor must write separate code for these mule
-     variants.  [Please don't hesitate to report these variants to us;
-     they are not, strictly speaking, bugs, but they give third-party
-     developers the same kind of creepy-crawly feeling.  We'll do what
-     we can. - Ed.]
-
-     MULE and the next version of Emacs are similar but the symbols are
-     very different--requiring separate code as well.
-
-     Namely we must support 3 kinds of mule variants and 4 or 5 or 6
-     kinds of emacs variants... (;_;) I'm shocked, so I wrote a wrapper
-     package called `emu' to provide a common interface.  [There is an
-     XEmacs package of APEL which provides much more comprehensive
-     coverage.  Be careful, however; APEL has problems of its own. -
-     Ed.]
-
-     I have the following suggestions about dealing with mule variants:
-
-        * `(featurep 'mule)' `t' on all mule variants
-
-        * `(boundp 'MULE)' is `t' on only MULE.  Maybe the next version
-          of Emacs will not have this symbol.
-
-        * MULE has a variable `mule-version'.  Perhaps the next version
-          of Emacs will have this variable as well.
-
-     Following is a sample to distinguish mule variants:
-
-          (if (featurep 'mule)
-              (cond ((boundp 'MULE)
-                     ;; for original Mule
-                     )
-                    ((string-match "XEmacs" emacs-version)
-                     ;; for XEmacs with Mule
-                     )
-                    (t
-                     ;; for next version of Emacs
-                     ))
-            ;; for old emacs variants
-            )
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.7,  Next: Q1.3.8,  Prev: Q1.3.6,  Up: Introduction
-
-Q1.3.7: How about Cyrillic Modes?
----------------------------------
-
-Ilya Zakharevich <ilya@math.ohio-state.edu> writes:
-
-     There is a cyrillic mode in the file `mysetup.zip' in
-     `ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/'.  This is a
-     modification to Valery Alexeev's <ava@math.jhu.ed> `russian.el'
-     which can be obtained from
-
-   `http://www.math.uga.edu/~valery/russian.el'.
-
-   Dima Barsky <d.barsky@ee.surrey.ac.uk> writes:
-
-     There is another cyrillic mode for both GNU Emacs and XEmacs by
-     Dmitrii (Mitya) Manin <manin@camelot.mssm.edu> at
-     `http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el'.
-
-   Rebecca Ore <rebecca.ore@op.net> writes:
-
-     The fullest resource I found on Russian language use (in and out of
-     XEmacs) is `http://www.ibiblio.org/sergei/Software/Software.html'
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.8,  Next: Q1.3.9,  Prev: Q1.3.7,  Up: Introduction
-
-Q1.3.8: Does XEmacs support Unicode?
-------------------------------------
-
-Partially, as an external encoding for files, processes, and terminals.
-It does not yet support Unicode fonts *Note Does XEmacs support Unicode
-Fonts?: Q1.3.9
-
-   To get Unicode support, you need a Mule-enabled XEmacs.  Install
-Mule-UCS from packages in the usual way.  Put
-
-     (require 'un-define)
-     (set-coding-priority-list '(utf-8))
-     (set-coding-category-system 'utf-8 'utf-8)
-
-   in your init file to enable the UTF-8 coding system.  You may wish to
-view the documentation of `set-coding-priority-list' if you find that
-files that are not UTF-8 are being mis-recognized as UTF-8.
-
-   Install standard national fonts (not Unicode fonts) for all
-character sets you use.  See *Note Q1.3.9::.
-
-   Mule-UCS also supports 16-bit forms of Unicode (UTF-16).  It does not
-support 31-bit forms of Unicode (UTF-32 or UCS-4).
-
-\1f
-File: xemacs-faq.info,  Node: Q1.3.9,  Next: Q1.4.1,  Prev: Q1.3.8,  Up: Introduction
-
-Q1.3.9: How does XEmacs display Unicode?
-----------------------------------------
-
-Mule doesn't have a Unicode charset internally, so there's nothing to
-bind a Unicode registry to.  It would not be straightforward to create,
-either, because Unicode is not ISO 2022-compatible.  You'd have to
-translate it to multiple 96x96 pages.
-
-   This means that Mule-UCS uses ordinary national fonts for display.
-This is not really a problem, except for those languages that use the
-Unified Han characters.  The problem here is that Mule-UCS maps from
-Unicode code points to national character sets in a deterministic way.
-By default, this means that Japanese fonts are tried first, then
-Chinese, then Korean.  To change the priority ordering, use the command
-`un-define-change-charset-order'.
-
-   It also means you can't use Unicode fonts directly, at least not
-without extreme hackery.  You can run -nw with
-(set-terminal-coding-system 'utf-8) if you really want a Unicode font
-for some reason.
-
-   Real Unicode support will be introduced in XEmacs 22.0.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.4.1,  Next: Q1.4.2,  Prev: Q1.3.9,  Up: Introduction
-
-1.4: Getting Started, Backing up & Recovery
-===========================================
-
-Q1.4.1: What is an `init.el' or `.emacs' and is there a sample one?
--------------------------------------------------------------------
-
-The `init.el' or `.emacs' file is used to customize XEmacs to your
-tastes.  Starting in 21.4, the preferred location for the init file is
-`~/.xemacs/init.el'; in previous versions, it was `~/.emacs'.  21.4
-still accepts the old location, but the first time you run it, it will
-ask to migrate your file to the new location.  If you answer yes, the
-file will be moved, and a "compatibility" `.emacs' file will be placed
-in the old location so that you can still run older versions of XEmacs,
-and versions of GNU Emacs, which expect the old location.  The `.emacs'
-file present is just a stub that loads the real file in
-`~/.xemacs/init.el'.
-
-   No two init files are alike, nor are they expected to be alike, but
-that's the point.  The XEmacs distribution contains an excellent starter
-example in the `etc/' directory called `sample.init.el' (starting in
-21.4) or `sample.emacs' in older versions.  Copy this file from there
-to `~/.xemacs/init.el' (starting in 21.4) or `~/.emacs' in older
-versions, where `~' means your home directory, of course.  Then edit it
-to suit.
-
-   You may bring the `sample.init.el' or `sample.emacs' file into an
-XEmacs buffer from the menubar. (The menu entry for it is always under
-the `Help' menu, but its location under that has changed in various
-versions.  Recently, look under the `Samples' submenu.)  To determine
-the location of the `etc/' directory type the command `C-h v
-data-directory <RET>'.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.4.2,  Next: Q1.4.3,  Prev: Q1.4.1,  Up: Introduction
-
-Q1.4.2: Can I use the same `init.el'/`.emacs' with the other Emacs?
--------------------------------------------------------------------
-
-Yes.  The sample `init.el'/`.emacs' included in the XEmacs distribution
-will show you how to handle different versions and flavors of Emacs.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.4.3,  Next: Q1.4.4,  Prev: Q1.4.2,  Up: Introduction
-
-Q1.4.3: Any good tutorials around?
-----------------------------------
-
-There's the XEmacs tutorial available from the Help Menu under
-`Basics->Tutorials', or by typing `C-h t'. To check whether it's
-available in a non-english language, type `C-u C-h t TAB', type the
-first letters of your preferred language, then type <RET>.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.4.4,  Next: Q1.4.5,  Prev: Q1.4.3,  Up: Introduction
-
-Q1.4.4: May I see an example of a useful XEmacs Lisp function?
---------------------------------------------------------------
-
-The following function does a little bit of everything useful.  It does
-something with the prefix argument, it examines the text around the
-cursor, and it's interactive so it may be bound to a key.  It inserts
-copies of the current word the cursor is sitting on at the cursor.  If
-you give it a prefix argument: `C-u 3 M-x double-word' then it will
-insert 3 copies.
-
-     (defun double-word (count)
-       "Insert a copy of the current word underneath the cursor"
-       (interactive "*p")
-       (let (here there string)
-         (save-excursion
-           (forward-word -1)
-           (setq here (point))
-           (forward-word 1)
-           (setq there (point))
-           (setq string (buffer-substring here there)))
-         (while (>= count 1)
-           (insert string)
-           (decf count))))
-
-   The best way to see what is going on here is to let XEmacs tell you.
-Put the code into an XEmacs buffer, and do a `C-h f' with the cursor
-sitting just to the right of the function you want explained.  Eg.  move
-the cursor to the SPACE between `interactive' and `"*p"' and hit `C-h
-f' to see what the function `interactive' does.  Doing this will tell
-you that the `*' requires a writable buffer, and `p' converts the
-prefix argument to a number, and `interactive' allows you to execute
-the command with `M-x'.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.4.5,  Next: Q1.4.6,  Prev: Q1.4.4,  Up: Introduction
-
-Q1.4.5: And how do I bind it to a key?
---------------------------------------
-
-To bind to a key do:
-
-     (global-set-key "\C-cd" 'double-word)
-
-   Or interactively, `M-x global-set-key' and follow the prompts.
-
-\1f
-File: xemacs-faq.info,  Node: Q1.4.6,  Prev: Q1.4.5,  Up: Introduction
-
-Q1.4.6: What's the difference between a macro and a function?
--------------------------------------------------------------
-
-Quoting from the Lisp Reference (a.k.a "Lispref") Manual:
-
-   "Macros" enable you to define new control constructs and other
-language features.  A macro is defined much like a function, but instead
-of telling how to compute a value, it tells how to compute another Lisp
-expression which will in turn compute the value.  We call this
-expression the "expansion" of the macro.
-
-   Macros can do this because they operate on the unevaluated
-expressions for the arguments, not on the argument values as functions
-do.  They can therefore construct an expansion containing these
-argument expressions or parts of them.
-
-   Do not confuse the two terms with "keyboard macros", which are
-another matter, entirely.  A keyboard macro is a key bound to several
-other keys.  Refer to manual for details.
-
-\1f
-File: xemacs-faq.info,  Node: Installation,  Next: Customization,  Prev: Introduction,  Up: Top
-
-2 Installation and Trouble Shooting
-***********************************
-
-This is part 2 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to Installation, Maintenance and Trouble Shooting.
-
-* Menu:
-
-Installation:
-* Q2.0.1::      Running XEmacs without installing.
-* Q2.0.2::      XEmacs is too big.
-* Q2.0.3::      Compiling XEmacs with Netaudio.
-* Q2.0.4::      Problems with Linux and ncurses.
-* Q2.0.5::      Do I need X11 to run XEmacs?
-* Q2.0.6::      I'm having strange crashes.  What do I do?
-* Q2.0.7::      Libraries in non-standard locations.
-* Q2.0.8::      can't resolve symbol _h_errno
-* Q2.0.9::      Where do I find external libraries?
-* Q2.0.10::     After I run configure I find a coredump, is something wrong?
-* Q2.0.11::     XEmacs can't resolve host names.
-* Q2.0.12::     Why can't I strip XEmacs?
-* Q2.0.13::     I don't need no steenkin' packages.  Do I?
-* Q2.0.14::     I don't want to install a million .els one at a time!
-* Q2.0.15::     EFS fails with "500 AUTH not understood" (NEW)
-* Q2.0.16::     Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW)
-
-Trouble Shooting:
-* Q2.1.1::      XEmacs just crashed on me!
-* Q2.1.2::      Cryptic Minibuffer messages.
-* Q2.1.3::      Translation Table Syntax messages at Startup.
-* Q2.1.4::      Startup warnings about deducing proper fonts?
-* Q2.1.5::      XEmacs cannot connect to my X Terminal.
-* Q2.1.6::      XEmacs just locked up my Linux X server.
-* Q2.1.7::      HP Alt key as Meta.
-* Q2.1.8::      got (wrong-type-argument color-instance-p nil)!
-* Q2.1.9::      XEmacs causes my OpenWindows 3.0 server to crash.
-* Q2.1.10::     Warnings from incorrect key modifiers.
-* Q2.1.11::     Can't instantiate image error... in toolbar
-* Q2.1.12::     Regular Expression Problems on DEC OSF1.
-* Q2.1.13::     HP/UX 10.10 and `create_process' failure
-* Q2.1.14::     C-g doesn't work for me.  Is it broken?
-* Q2.1.15::     How to debug an XEmacs problem with a debugger.
-* Q2.1.16::     XEmacs crashes in `strcat' on HP/UX 10.
-* Q2.1.17::     `Marker does not point anywhere'.
-* Q2.1.18::     XEmacs is outputting lots of X errors.
-* Q2.1.19::     XEmacs does not follow the local timezone.
-* Q2.1.20::     `Symbol's function definition is void: hkey-help-show.'
-* Q2.1.21::     [This question intentionally left blank]
-* Q2.1.22::     XEmacs seems to take a really long time to do some things.
-* Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
-* Q2.1.24::     XEmacs won't start without network.
-* Q2.1.25::     After upgrading, XEmacs won't do `foo' any more!
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.1,  Next: Q2.0.2,  Prev: Installation,  Up: Installation
-
-2.0: Installation
-=================
-
-Q2.0.1: Running XEmacs without installing
------------------------------------------
-
-How can I just try XEmacs without installing it?
-
-   XEmacs will run in place without requiring installation and copying
-of the Lisp directories, and without having to specify a special
-build-time flag.  It's the copying of the Lisp directories that
-requires so much space.  XEmacs is largely written in Lisp.
-
-   A good method is to make a shell alias for xemacs:
-
-     alias xemacs=/i/xemacs-20.2/src/xemacs
-
-   (You will obviously use whatever directory you downloaded the source
-tree to instead of `/i/xemacs-20.2').
-
-   This will let you run XEmacs without massive copying.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.2,  Next: Q2.0.3,  Prev: Q2.0.1,  Up: Installation
-
-Q2.0.2: XEmacs is too big
--------------------------
-
-The space required by the installation directories can be reduced
-dramatically if desired.  Gzip all the .el files.  Remove all the
-packages you'll never want to use.  Remove the TexInfo manuals.  Remove
-the Info (and use just hardcopy versions of the manual).  Remove most
-of the stuff in etc.  Remove or gzip all the source code.  Gzip or
-remove the C source code.  Configure it so that copies are not made of
-the support lisp.
-
-   These are all Emacs Lisp source code and bytecompiled object code.
-You may safely gzip everything named *.el here.  You may remove any
-package you don't use.  _Nothing bad will happen if you delete a package
-that you do not use_.  You must be sure you do not use it though, so be
-conservative at first.
-
-   Any package with the possible exceptions of xemacs-base, and EFS are
-candidates for removal.  Ask yourself, _Do I ever want to use this
-package?_  If the answer is no, then it is a candidate for removal.
-
-   First, gzip all the .el files.  Then go about package by package and
-start gzipping the .elc files.  Then run XEmacs and do whatever it is
-you normally do.  If nothing bad happens, then remove the package.  You
-can remove a package via the PUI interface (`M-x pui-list-packages',
-then press `d' to mark the packages you wish to delete, and then `x' to
-delete them.
-
-   Another method is to do `M-x package-get-delete-package'.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.3,  Next: Q2.0.4,  Prev: Q2.0.2,  Up: Installation
-
-Q2.0.3: Compiling XEmacs with Netaudio.
----------------------------------------
-
-What is the best way to compile XEmacs with the netaudio system, since I
-have got the netaudio system compiled but installed at a weird place, I
-am not root.  Also in the READMEs it does not say anything about
-compiling with the audioserver?
-
-   You should only need to add some stuff to the configure command line.
-To tell it to compile in netaudio support: `--with-sound=both', or
-`--with-sound=nas' if you don't want native sound support for some
-reason.) To tell it where to find the netaudio includes and libraries:
-
-     --site-libraries=WHATEVER
-     --site-includes=WHATEVER
-
-   Then (fingers crossed) it should compile and it will use netaudio if
-you have a server running corresponding to the X server. The netaudio
-server has to be there when XEmacs starts. If the netaudio server goes
-away and another is run, XEmacs should cope (fingers crossed, error
-handling in netaudio isn't perfect).
-
-   BTW, netaudio has been renamed as it has a name clash with something
-else, so if you see references to NAS or Network Audio System, it's the
-same thing.  It also might be found at
-`ftp://ftp.x.org/contrib/audio/nas/'.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.4,  Next: Q2.0.5,  Prev: Q2.0.3,  Up: Installation
-
-Q2.0.4: Problems with Linux and ncurses.
-----------------------------------------
-
-On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc
-5.2.18, XEmacs 20.0b20 is unable to open a tty device:
-
-     src/xemacs -nw -q
-     Initialization error:
-     Terminal type `xterm' undefined (or can't access database?)
-
-   Ben Wing <ben@xemacs.org> writes:
-
-     Your ncurses configuration is messed up.  Your /usr/lib/terminfo
-     is a bad pointer, perhaps to a CD-ROM that is not inserted.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.5,  Next: Q2.0.6,  Prev: Q2.0.4,  Up: Installation
-
-Q2.0.5: Do I need X11 to run XEmacs?
-------------------------------------
-
-No.  The name "XEmacs" is unfortunate in the sense that it is *not* an
-X Window System-only version of Emacs.  XEmacs has full color support
-on a color-capable character terminal.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.6,  Next: Q2.0.7,  Prev: Q2.0.5,  Up: Installation
-
-Q2.0.6: I'm having strange crashes.  What do I do?
---------------------------------------------------
-
-There have been a variety of reports of crashes due to compilers with
-buggy optimizers.  Please see the `PROBLEMS' file that comes with
-XEmacs to read what it says about your platform.
-
-   If you compiled XEmacs using `--use-union-type' (or the option
-`USE_UNION_TYPE' in `config.inc' under Windows), try recompiling again
-without it.  The union type has been known to trigger compiler errors
-in a number of cases.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.7,  Next: Q2.0.8,  Prev: Q2.0.6,  Up: Installation
-
-Q2.0.7: Libraries in non-standard locations
--------------------------------------------
-
-I have x-faces, jpeg, xpm etc. all in different places.  I've tried
-space-separated, comma-separated, several -site-libraries, all to no
-avail.
-
-     --site-libraries='/path/one /path/two /path/etc'
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.8,  Next: Q2.0.9,  Prev: Q2.0.7,  Up: Installation
-
-Q2.0.8: can't resolve symbol _h_errno
--------------------------------------
-
-You are using the Linux/ELF distribution of XEmacs 19.14, and your ELF
-libraries are out of date.  You have the following options:
-
-  1. Upgrade your libc to at least 5.2.16 (better is 5.2.18, 5.3.12, or
-     5.4.10).
-
-  2. Patch the XEmacs binary by replacing all occurrences of
-     `_h_errno^@' with `h_errno^@^@'.  Any version of Emacs will
-     suffice.  If you don't understand how to do this, don't do it.
-
-  3. Rebuild XEmacs yourself--any working ELF version of libc should be
-     O.K.
-
-   Hrvoje Niksic <hniksic@xemacs.org> writes:
-
-     Why not use a Perl one-liner for No. 2?
-
-          perl -pi -e 's/_h_errno\0/h_errno\0\0/g' \
-          /usr/local/bin/xemacs-19.14
-
-     NB: You _must_ patch `/usr/local/bin/xemacs-19.14', and not
-     `xemacs' because `xemacs' is a link to `xemacs-19.14'; the Perl
-     `-i' option will cause unwanted side-effects if applied to a
-     symbolic link.
-
-   SL Baur <steve@xemacs.org> writes:
-
-     If you build against a recent libc-5.4 (late enough to have caused
-     problems earlier in the beta cycle) and then run with an earlier
-     version of libc, you get a
-
-          $ xemacs
-          xemacs: can't resolve symbol '__malloc_hook'
-          zsh: 7942 segmentation fault (core dumped)  xemacs
-
-     (Example binary compiled against libc-5.4.23 and run with
-     libc-5.4.16).
-
-     The solution is to upgrade to at least libc-5.4.23.  Sigh.  Drat.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.9,  Next: Q2.0.10,  Prev: Q2.0.8,  Up: Installation
-
-Q2.0.9: Where do I find external libraries?
--------------------------------------------
-
-All external libraries used by XEmacs can be found at the XEmacs FTP
-site `ftp://ftp.xemacs.org/pub/xemacs/aux/'.  [These tarballs and this
-FAQ are wa-a-ay out of date.  Sorry, I'm not currently network-capable,
-and I will probably forgot to update this before submitting the patch.
-- Ed.]
-
-   The canonical locations (at the time of this writing) are as follows:
-
-JPEG
-     `ftp://ftp.uu.net/graphics/jpeg/'.  Version 6a is current.
-
-XPM
-     `ftp://ftp.x.org/contrib/libraries/'.  Version 3.4j is current.
-     Older versions of this package are known to cause XEmacs crashes.
-
-TIFF
-     `ftp://ftp.sgi.com/graphics/tiff/'.  v3.4 is current.  The latest
-     beta is v3.4b035.  There is a HOWTO here.
-
-PNG
-     `ftp://ftp.uu.net/graphics/png/'.  0.89c is current.  XEmacs
-     requires a fairly recent version to avoid using temporary files.
-
-     `ftp://swrinde.nde.swri.edu/pub/png/src/'
-
-Compface
-     `ftp://ftp.cs.indiana.edu/pub/faces/compface/'.  This library has
-     been frozen for about 6 years, and is distributed without version
-     numbers.  _It should be compiled with the same options that X11 was
-     compiled with on your system_.  The version of this library at
-     XEmacs.org includes the `xbm2xface.pl' script, written by
-     <stig@hackvan.com>, which may be useful when generating your own
-     xface.
-
-NAS
-     `ftp://ftp.x.org/contrib/audio/nas/'.  Version 1.2p5 is current.
-     There is a FAQ here.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.10,  Next: Q2.0.11,  Prev: Q2.0.9,  Up: Installation
-
-Q2.0.10: After I run configure I find a core dump, is something wrong?
-----------------------------------------------------------------------
-
-Not necessarily.  If you have GNU sed 3.0 you should downgrade it to
-2.05.  From the `README' at prep.ai.mit.edu:
-
-     sed 3.0 has been withdrawn from distribution.  It has major
-     revisions, which mostly seem to be improvements; but it turns out
-     to have bugs too which cause trouble in some common cases.
-
-     Tom Lord won't be able to work fixing the bugs until May.  So in
-     the mean time, we've decided to withdraw sed 3.0 from distribution
-     and make version 2.05 once again the recommended version.
-
-   It has also been observed that the vfork test on Solaris will leave a
-core dump.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.11,  Next: Q2.0.12,  Prev: Q2.0.10,  Up: Installation
-
-Q2.0.11: XEmacs doesn't resolve hostnames.
-------------------------------------------
-
-This is the result of a long-standing problem with SunOS and the fact
-that stock SunOS systems do not ship with DNS resolver code in libc.
-
-   Christopher Davis <ckd@loiosh.kei.com> writes:
-
-     That's correct [The SunOS 4.1.3 precompiled binaries don't do name
-     lookup].  Since Sun figured that everyone used NIS to do name
-     lookups (that DNS thing was apparently only a passing fad,
-     right?), the stock SunOS 4.x systems don't have DNS-based name
-     lookups in libc.
-
-     This is also why Netscape ships two binaries for SunOS 4.1.x.
-
-     The best solution is to compile it yourself; the configure script
-     will check to see if you've put DNS in the shared libc and will
-     then proceed to link against the DNS resolver library code.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.12,  Next: Q2.0.13,  Prev: Q2.0.11,  Up: Installation
-
-Q2.0.12: Why can't I strip XEmacs?
-----------------------------------
-
-Richard Cognot <cognot@fronsac.ensg.u-nancy.fr> writes:
-
-     Because of the way XEmacs (and every other Emacsen, AFAIK) is
-     built. The link gives you a bare-boned emacs (called temacs).
-     temacs is then run, preloading some of the lisp files. The result
-     is then dumped into a new executable, named xemacs, which will
-     contain all of the preloaded lisp functions and data.
-
-     Now, during the dump itself, the executable (code+data+symbols) is
-     written on disk using a special unexec() function. This function is
-     obviously heavily system dependent. And on some systems, it leads
-     to an executable which, although valid, cannot be stripped without
-     damage. If memory serves, this is especially the case for AIX
-     binaries. On other architectures it might work OK.
-
-     The Right Way to strip the emacs binary is to strip temacs prior to
-     dumping xemacs. This will always work, although you can do that
-     only if you install from sources (as temacs is `not' part of the
-     binary kits).
-
-   Nat Makarevitch <nat@nataa.fr.eu.org> writes:
-
-     Here is the trick:
-
-       1. [ ./configure; make ]
-
-       2. rm src/xemacs
-
-       3. strip src/temacs
-
-       4. make
-
-       5. cp src/xemacs /usr/local/bin/xemacs
-
-       6. cp lib-src/DOC-19.16-XEmacs
-          /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.13,  Next: Q2.0.14,  Prev: Q2.0.12,  Up: Installation
-
-Q2.0.13: I don't need no steenkin' packages.  Do I?
----------------------------------------------------
-
-Strictly speaking, no.  XEmacs will build and install just fine without
-any packages installed.  However, only the most basic editing functions
-will be available with no packages installed, so installing packages is
-an essential part of making your installed XEmacs _useful_.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.14,  Next: Q2.0.15,  Prev: Q2.0.13,  Up: Installation
-
-Q2.0.14: How do I figure out which packages to install?
--------------------------------------------------------
-
-Many people really liked the old way that packages were bundled and do
-not want to mess with packages at all.  You can grab all the packages at
-once like you used to with old XEmacs versions.  Download the file
-
-   `xemacs-sumo.tar.gz'
-
-   For an XEmacs compiled with Mule you also need
-
-   `xemacs-mule-sumo.tar.gz'
-
-   from the `packages' directory on your XEmacs mirror archive.  N.B.
-They are called 'Sumo Tarballs' for good reason. They are currently
-about 15MB and 2.3MB (gzipped) respectively.
-
-   Install them by
-
-   `cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -'
-
-   See README.packages for more detailed installation instructions.
-
-   As the Sumo tarballs are not regenerated as often as the individual
-packages, it is recommended that you use the automatic package tools
-afterwards to pick up any recent updates.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.15,  Next: Q2.0.16,  Prev: Q2.0.14,  Up: Installation
-
-Q2.0.15: EFS fails with "500 AUTH not understood" (NEW)
--------------------------------------------------------
-
-A typical error: FTP Error: USER request failed; 500 AUTH not
-understood.
-
-   Thanks to giacomo boffi <giacomo.boffi@polimi.it> who recommends on
-comp.emacs.xemacs:
-
-   tell your ftp client to not attempt AUTH authentication (or do not
-use FTP servers that don't understand AUTH)
-
-   and notes that you need to add an element (often "-u") to
-`efs-ftp-program-args'.  Use M-x customize-variable, and verify the
-needed flag with `man ftp' or other local documentation.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.16,  Next: Q2.1.1,  Prev: Q2.0.15,  Up: Installation
-
-Q2.0.16: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW)
------------------------------------------------------------------------
-
-The Cygwin binary distributed with the netinstaller uses an external DLL
-to handle XPM images (such as toolbar buttons).  You may get an error
-like
-
-   This application has failed to start because cygXpm-noX4.dll was not
-found.      Re-installing the application may fix this problem.
-
-   Andy Piper <andy@xemacs.org> sez:
-
-   cygXpm-noX4 is part of the cygwin distribution under libraries or
-graphics, but is not installed by default. You need to run the
-cygwin setup again and select this package.
-
-   Ie, reinstalling XEmacs won't help because it is not part of the
-XEmacs distribution.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.1,  Next: Q2.1.2,  Prev: Q2.0.16,  Up: Installation
-
-2.1: Trouble Shooting
-=====================
-
-Q2.1.1: Help!  XEmacs just crashed on me!
------------------------------------------
-
-First of all, don't panic.  Whenever XEmacs crashes, it tries extremely
-hard to auto-save all of your files before dying.  (The main time that
-this will not happen is if the machine physically lost power or if you
-killed the XEmacs process using `kill -9').  The next time you try to
-edit those files, you will be informed that a more recent auto-save
-file exists.  You can use `M-x recover-file' to retrieve the auto-saved
-version of the file.
-
-   You can use the command `M-x recover-session' after a crash to pick
-up where you left off.
-
-   Now, XEmacs is not perfect, and there may occasionally be times, or
-particular sequences of actions, that cause it to crash.  If you can
-come up with a reproducible way of doing this (or even if you have a
-pretty good memory of exactly what you were doing at the time), the
-maintainers would be very interested in knowing about it.  The best way
-to report a bug is using `M-x report-emacs-bug' (or by selecting `Send
-Bug Report...' from the Help menu).  If that won't work (e.g. you can't
-get XEmacs working at all), send ordinary mail to <crashes@xemacs.org>.
-_MAKE SURE_ to include the output from the crash, especially including
-the Lisp backtrace, as well as the XEmacs configuration from `M-x
-describe-installation' (or equivalently, the file `Installation' in the
-top of the build tree).  Please note that the `crashes' address is
-exclusively for crash reports.  The best way to report bugs in general
-is through the `M-x report-emacs-bug' interface just mentioned, or if
-necessary by emailing <xemacs-beta@xemacs.org>.  Note that the
-developers do _not_ usually follow `comp.emacs.xemacs' on a regular
-basis; thus, this is better for general questions about XEmacs than bug
-reports.
-
-   If at all possible, include a C stack backtrace of the core dump that
-was produced.  This shows where exactly things went wrong, and makes it
-much easier to diagnose problems.  To do this under Unix, you need to
-locate the core file (it's called `core', and is usually sitting in the
-directory that you started XEmacs from, or your home directory if that
-other directory was not writable).  Then, go to that directory and
-execute a command like:
-
-     gdb `which xemacs` core
-
-   and then issue the command `where' to get the stack backtrace.  You
-might have to use `dbx' or some similar debugger in place of `gdb'.  If
-you don't have any such debugger available, complain to your system
-administrator.
-
-   It's possible that a core file didn't get produced, in which case
-you're out of luck.  Go complain to your system administrator and tell
-him not to disable core files by default.  Also see *Note Q2.1.15::,
-for tips and techniques for dealing with a debugger.
-
-   If you're under Microsoft Windows, you're out of luck unless you
-happen to have a debugging aid installed on your system, for example
-Visual C++.  In this case, the crash will result in a message giving
-you the option to enter a debugger (for example, by pressing `Cancel').
-Do this and locate the stack-trace window. (If your XEmacs was built
-without debugging information, the stack trace may not be very useful.)
-
-   When making a problem report make sure that:
-
-  1. Report *all* of the information output by XEmacs during the crash.
-
-  2. You mention what O/S & Hardware you are running XEmacs on.
-
-  3. What version of XEmacs you are running.
-
-  4. What build options you are using.
-
-  5. If the problem is related to graphics and you are running Unix, we
-     will also need to know what version of the X Window System you are
-     running, and what window manager you are using.
-
-  6. If the problem happened on a TTY, please include the terminal type.
-
-   Much of the information above is automatically generated by `M-x
-report-emacs-bug'.  Even more, and often useful, information can be
-generated by redirecting the output of `make' and `make check' to a
-file (`beta.err' is the default used by `build-report'), and executing
-`M-x build-report'.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.2,  Next: Q2.1.3,  Prev: Q2.1.1,  Up: Installation
-
-Q2.1.2: Cryptic Minibuffer messages.
-------------------------------------
-
-When I try to use some particular option of some particular package, I
-get a cryptic error in the minibuffer.
-
-   If you can't figure out what's going on, select Options/General
-Options/Debug on Error from the Menubar and then try and make the error
-happen again.  This will give you a backtrace that may be enlightening.
-If not, try reading through this FAQ; if that fails, you could try
-posting to comp.emacs.xemacs (making sure to include the backtrace) and
-someone may be able to help.  If you can identify which Emacs lisp
-source file the error is coming from you can get a more detailed stack
-backtrace by doing the following:
-
-  1. Visit the .el file in an XEmacs buffer.
-
-  2. Issue the command `M-x eval-current-buffer'.
-
-  3. Reproduce the error.
-
-   Depending on the version of XEmacs, you may either select View->Show
-Message Log (recent versions), Edit->Show Messages (some earlier
-versions) or Help->Recent Keystrokes/Messages (other earlier versions)
-from the menubar to see the most recent messages.  This command is bound
-to `C-h l' by default.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.3,  Next: Q2.1.4,  Prev: Q2.1.2,  Up: Installation
-
-Q2.1.3: Translation Table Syntax messages at Startup
-----------------------------------------------------
-
-I get tons of translation table syntax error messages during startup.
-How do I get rid of them?
-
-   There are two causes of this problem.  The first usually only strikes
-people using the prebuilt binaries.  The culprit in both cases is the
-file `XKeysymDB'.
-
-   * The binary cannot find the `XKeysymDB' file.  The location is
-     hardcoded at compile time so if the system the binary was built on
-     puts it a different place than your system does, you have
-     problems.  To fix, set the environment variable `XKEYSYMDB' to the
-     location of the `XKeysymDB' file on your system or to the location
-     of the one included with XEmacs which should be at
-     `<xemacs_root_directory>/lib/xemacs-19.16/etc/XKeysymDB'.
-
-   * The binary is finding the XKeysymDB but it is out-of-date on your
-     system and does not contain the necessary lines.  Either ask your
-     system administrator to replace it with the one which comes with
-     XEmacs (which is the stock R6 version and is backwards compatible)
-     or set your `XKEYSYMDB' variable to the location of XEmacs's
-     described above.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.4,  Next: Q2.1.5,  Prev: Q2.1.3,  Up: Installation
-
-Q2.1.4: Startup warnings about deducing proper fonts?
------------------------------------------------------
-
-How can I avoid the startup warnings about deducing proper fonts?
-
-   This is highly dependent on your installation, but try with the
-following font as your base font for XEmacs and see what it does:
-
--adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
-
-   More precisely, do the following in your resource file:
-
-Emacs.default.attributeFont: \
--adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
-
-   If you just don't want to see the `*Warnings*' buffer at startup
-time, you can set this:
-
-     (setq display-warning-minimum-level 'error)
-
-   The buffer still exists; it just isn't in your face.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.5,  Next: Q2.1.6,  Prev: Q2.1.4,  Up: Installation
-
-Q2.1.5: XEmacs cannot connect to my X Terminal!
------------------------------------------------
-
-Help!  I can not get XEmacs to display on my Envizex X-terminal!
-
-   Try setting the `DISPLAY' variable using the numeric IP address of
-the host you are running XEmacs from.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.6,  Next: Q2.1.7,  Prev: Q2.1.5,  Up: Installation
-
-Q2.1.6: XEmacs just locked up my Linux X server!
-------------------------------------------------
-
-There have been several reports of the X server locking up under Linux.
-In all reported cases removing speedo and scaled fonts from the font
-path corrected the problem.  This can be done with the command `xset'.
-
-   It is possible that using a font server may also solve the problem.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.7,  Next: Q2.1.8,  Prev: Q2.1.6,  Up: Installation
-
-Q2.1.7: HP Alt key as Meta.
----------------------------
-
-How can I make XEmacs recognize the Alt key of my HP workstation as a
-Meta key?
-
-   Put the following line into a file and load it with xmodmap(1) before
-starting XEmacs:
-
-     remove Mod1 = Mode_switch
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.8,  Next: Q2.1.9,  Prev: Q2.1.7,  Up: Installation
-
-Q2.1.8: got (wrong-type-argument color-instance-p nil)
-------------------------------------------------------
-
-Natalie Kershaw <nataliek@rd.scitec.com.au> writes:
-
-     I am trying to run xemacs 19.13 under X11R4. Whenever I move the
-     mouse I get the following error. Has anyone seen anything like
-     this? This doesn't occur on X11R5.
-
-          Signalling:
-          (error "got (wrong-type-argument color-instance-p nil)
-          and I don't know why!")
-
-   dinos <map01kd@gold.ac.uk> writes:
-
-     I think this is due to undefined resources; You need to define
-     color backgrounds and foregrounds into your
-     `.../app-defaults/Emacs' like:
-
-          *Foreground:    Black   ;everything will be of black on grey95,
-          *Background:    Grey95  ;unless otherwise specified.
-          *cursorColor:   Red3    ;red3 cursor with grey95 border.
-          *pointerColor:  Red3    ;red3 pointer with grey95 border.
-
-   Natalie Kershaw adds:
-
-     What fixed the problem was adding some more colors to the X color
-     database (copying the X11R5 colors over), and also defining the
-     following resources:
-
-          xemacs*cursorColor:    black
-          xemacs*pointerColor:   black
-
-     With the new colors installed the problem still occurs if the above
-     resources are not defined.
-
-     If the new colors are not present then an additional error occurs
-     on XEmacs startup, which says `Color Red3' not defined.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.9,  Next: Q2.1.10,  Prev: Q2.1.8,  Up: Installation
-
-Q2.1.9: XEmacs causes my OpenWindows 3.0 server to crash.
----------------------------------------------------------
-
-The OpenWindows 3.0 server is incredibly buggy.  Your best bet is to
-replace it with one from the generic MIT X11 release.  You might also
-try disabling parts of your `init.el'/`.emacs', like those that enable
-background pixmaps.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.10,  Next: Q2.1.11,  Prev: Q2.1.9,  Up: Installation
-
-Q2.1.10: Warnings from incorrect key modifiers.
------------------------------------------------
-
-The following information comes from the `PROBLEMS' file that comes
-with XEmacs.
-
-   If you're having troubles with HP/UX it is because HP/UX defines the
-modifiers wrong in X.  Here is a shell script to fix the problem; be
-sure that it is run after VUE configures the X server.
-
-     #! /bin/sh
-     xmodmap 2> /dev/null - << EOF
-     keysym Alt_L = Meta_L
-     keysym Alt_R = Meta_R
-     EOF
-     
-     xmodmap - << EOF
-     clear mod1
-     keysym Mode_switch = NoSymbol
-     add mod1 = Meta_L
-     keysym Meta_R = Mode_switch
-     add mod2 = Mode_switch
-     EOF
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.11,  Next: Q2.1.12,  Prev: Q2.1.10,  Up: Installation
-
-Q2.1.11: `Can't instantiate image error...' in toolbar
-------------------------------------------------------
-
-Dr. Ram Samudrala <expt@alanine.ram.org> writes:
-
-   I just installed the XEmacs (20.4-2) RPMS that I downloaded from
-`http://www.xemacs.org/'.  Everything works fine, except that when I
-place my mouse over the toolbar, it beeps and gives me this message:
-
-      Can't instantiate image (probably cached):
-      [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
-      (16 16 <strange control characters> ...
-
-   Kyle Jones <kyle_jones@wonderworks.com> writes:
-
-     This is problem specific to some Chips and Technologies video
-     chips, when running XFree86.  Putting
-
-     `Option "sw_cursor"'
-
-     in `XF86Config' gets rid of the problem.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.12,  Next: Q2.1.13,  Prev: Q2.1.11,  Up: Installation
-
-Q2.1.12: Problems with Regular Expressions on DEC OSF1.
--------------------------------------------------------
-
-I have xemacs 19.13 running on an alpha running OSF1 V3.2 148 and ispell
-would not run because it claimed the version number was incorrect
-although it was indeed OK. I traced the problem to the regular
-expression handler.
-
-   Douglas Kosovic <douglask@dstc.edu.au> writes:
-
-     Actually it's a DEC cc optimization bug that screws up the regexp
-     handling in XEmacs.
-
-     Rebuilding using the `-migrate' switch for DEC cc (which uses a
-     different sort of optimization) works fine.
-
-   See `xemacs-19_13-dunix-3_2c.patch' at the following URL on how to
-build with the `-migrate' flag:
-
-     `http://www-digital.cern.ch/carney/emacs/emacs.html'
-
-   NOTE: There have been a variety of other problems reported that are
-fixed in this fashion.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.13,  Next: Q2.1.14,  Prev: Q2.1.12,  Up: Installation
-
-Q2.1.13: HP/UX 10.10 and `create_process' failure.
---------------------------------------------------
-
-Dave Carrigan <Dave.Carrigan@ipl.ca> writes:
-
-     With XEmacs 19.13 and HP/UX 10.10, anything that relies on the
-     `create_process' function fails. This breaks a lot of things
-     (shell-mode, compile, ange-ftp, to name a few).
-
-   Phil Johnson <johnson@dtc.hp.com> writes:
-
-     This is a problem specific to HP-UX 10.10.  It only occurs when
-     XEmacs is compiled for shared libraries (the default), so you can
-     work around it by compiling a statically-linked binary (run
-     configure with `--dynamic=no').
-
-     I'm not sure whether the problem is with a particular shared
-     library or if it's a kernel problem which crept into 10.10.
-
-   Richard Cognot <cognot@ensg.u-nancy.fr> writes:
-
-     I had a few problems with 10.10. Apparently, some of them were
-     solved by forcing a static link of libc (manually).
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.14,  Next: Q2.1.15,  Prev: Q2.1.13,  Up: Installation
-
-Q2.1.14: `C-g' doesn't work for me.  Is it broken?
---------------------------------------------------
-
-Ben Wing <ben@xemacs.org> writes:
-
-     `C-g' does work for most people in most circumstances.  If it
-     doesn't, there are only two explanations:
-
-       1. The code is wrapped with a binding of `inhibit-quit' to `t'.
-          `Ctrl-Shift-G' should still work, I think.
-
-       2. SIGIO is broken on your system, but BROKEN_SIGIO isn't
-          defined.
-
-     To test #2, try executing `(while t)' from the `*scratch*' buffer.
-     If `C-g' doesn't interrupt, then you're seeing #2.
-
-   Morten Welinder <terra@diku.dk> writes:
-
-     On some (but _not_ all) machines a hung XEmacs can be revived by
-     `kill -FPE <pid>'.  This is a hack, of course, not a solution.
-     This technique works on a Sun4 running 4.1.3_U1.  To see if it
-     works for you, start another XEmacs and test with that first.  If
-     you get a core dump the method doesn't work and if you get
-     `Arithmetic error' then it does.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.15,  Next: Q2.1.16,  Prev: Q2.1.14,  Up: Installation
-
-Q2.1.15: How to debug an XEmacs problem with a debugger
--------------------------------------------------------
-
-If XEmacs does crash on you, one of the most productive things you can
-do to help get the bug fixed is to poke around a bit with the debugger.
-Here are some hints:
-
-   * First of all, if the crash is at all reproducible, consider very
-     strongly recompiling your XEmacs with debugging symbols and with no
-     optimization (e.g. with GCC use the compiler flags `-g -O0' -
-     that's an "oh" followed by a zero), and with the configure options
-     `--debug=yes' and `--error-checking=all'.  This will make your
-     XEmacs run somewhat slower, but you are a lot more likely to catch
-     the problem earlier (closer to its source).  It makes it a lot
-     easier to determine what's going on with a debugger.
-
-   * If it's not a true crash (_i.e._, XEmacs is hung, or a zombie
-     process), or it's inconvenient to run XEmacs again because XEmacs
-     is already running or is running in batch mode as part of a bunch
-     of scripts, you may be able to attach to the existing process with
-     your debugger.  Most debuggers let you do this by substituting the
-     process ID for the core file when you invoke the debugger from the
-     command line, or by using the `attach' command or something
-     similar.
-
-   * If you're able to run XEmacs under a debugger and reproduce the
-     crash, here are some things you can do:
-
-   * If XEmacs is hitting an assertion failure, put a breakpoint on
-     `assert_failed()'.
-
-   * If XEmacs is hitting some weird Lisp error that's causing it to
-     crash (e.g. during startup), put a breakpoint on
-     `signal_1()'--this is declared static in eval.c.
-
-   * If XEmacs is outputting lots of X errors, put a breakpoint on
-     `x_error_handler()'; that will tell you which call is causing them.
-
-   * Internally, you will probably see lots of variables that hold
-     objects of type `Lisp_Object'.  These are references to Lisp
-     objects.  Printing them out with the debugger probably won't be too
-     useful--you'll likely just see a number.  To decode them, do this:
-
-          call dp (OBJECT)
-
-     where OBJECT is whatever you want to decode (it can be a variable,
-     a function call, etc.).  This uses the Lisp printing routines to
-     out a readable representation on the TTY from which the xemacs
-     process was invoked.
-
-   * If you want to get a Lisp backtrace showing the Lisp call stack,
-     do this:
-
-          call db ()
-
-   * Using `dp' and `db' has two disadvantages - they can only be used
-     with a running (including hung or zombie) xemacs process, and they
-     do not display the internal C structure of a Lisp Object.  Even if
-     all you've got is a core dump, all is not lost.
-
-     If you're using GDB, there are some macros in the file
-     `src/.gdbinit' in the XEmacs source distribution that should make
-     it easier for you to decode Lisp objects.  This file is
-     automatically read by gdb if gdb is run in the directory where
-     xemacs was built, and contains these useful macros to inspect the
-     state of xemacs:
-
-    `pobj'
-          Usage: pobj lisp_object
-          Print the internal C representation of a lisp object.
-
-    `xtype'
-          Usage: xtype lisp_object
-          Print the Lisp type of a lisp object.
-
-    `lbt'
-          Usage: lbt
-          Print the current Lisp stack trace.  Requires a running
-          xemacs process.  (It works by calling the db routine
-          described above.)
-
-    `ldp'
-          Usage: ldp lisp_object
-          Print a Lisp Object value using the Lisp printer.  Requires a
-          running xemacs process.  (It works by calling the dp routine
-          described above.)
-
-    `run-temacs'
-          Usage: run-temacs
-          Run temacs interactively, like xemacs.  Use this with
-          debugging tools (like purify) that cannot deal with dumping,
-          or when temacs builds successfully, but xemacs does not.
-
-    `dump-temacs'
-          Usage: dump-temacs
-          Run the dumping part of the build procedure.  Use when
-          debugging temacs, not xemacs!  Use this when temacs builds
-          successfully, but xemacs does not.
-
-    `check-xemacs'
-          Usage: check-xemacs
-          Run the test suite.  Equivalent to 'make check'.
-
-    `check-temacs'
-          Usage: check-temacs
-          Run the test suite on temacs.  Equivalent to 'make
-          check-temacs'.  Use this with debugging tools (like purify)
-          that cannot deal with dumping, or when temacs builds
-          successfully, but xemacs does not.
-
-     If you are using Sun's `dbx' debugger, there is an equivalent file
-     `src/.dbxrc', which defines the same commands for dbx.
-
-   * If you're using a debugger to get a C stack backtrace and you're
-     seeing stack traces with some of the innermost frames mangled, it
-     may be due to dynamic linking. (This happens especially under
-     Linux.) Consider reconfiguring with `--dynamic=no'.  Also,
-     sometimes (again under Linux), stack backtraces of core dumps will
-     have the frame where the fatal signal occurred mangled; if you can
-     obtain a stack trace while running the XEmacs process under a
-     debugger, the stack trace should be clean.
-
-     Curtiss <1CMC3466@ibm.mtsac.edu> suggests upgrading to ld.so
-     version 1.8 if dynamic linking and debugging is a problem on Linux.
-
-   * If you're using a debugger to get a C stack backtrace and you're
-     getting a completely mangled and bogus stack trace, it's probably
-     due to one of the following:
-
-       a. Your executable has been stripped.  Bad news.  Tell your
-          sysadmin not to do this--it doesn't accomplish anything
-          except to save a bit of disk space, and makes debugging much
-          much harder.
-
-       b. Your stack is getting trashed.  Debugging this is hard; you
-          have to do a binary-search type of narrowing down where the
-          crash occurs, until you figure out exactly which line is
-          causing the problem.  Of course, this only works if the bug
-          is highly reproducible.  Also, in many cases if you run
-          XEmacs from the debugger, the debugger can protect the stack
-          somewhat.  However, if the stack is being smashed, it is
-          typically the case that there is a wild pointer somewhere in
-          the program, often quite far from where the crash occurs.
-
-       c. If your stack trace has exactly one frame in it, with address
-          0x0, this could simply mean that XEmacs attempted to execute
-          code at that address, e.g. through jumping to a null function
-          pointer.  Unfortunately, under those circumstances, GDB under
-          Linux doesn't know how to get a stack trace. (Yes, this is
-          the fourth Linux-related problem I've mentioned.  I have no
-          idea why GDB under Linux is so bogus.  Complain to the GDB
-          authors, or to comp.os.linux.development.system.) Again,
-          you'll have to use the narrowing-down process described above.
-
-       d. You will get a Lisp backtrace output when XEmacs crashes, so
-          you'll have something useful.
-
-
-   * If you compile with the newer gcc variants gcc-2.8 or egcs, you
-     will also need gdb 4.17 or above.  Earlier releases of gdb can't
-     handle the debug information generated by the newer compilers.
-
-   * In versions of XEmacs before 21.2.27, `src/.gdbinit' was named
-     `src/gdbinit'.  This had the disadvantage of not being sourced
-     automatically by gdb, so you had to set that up yourself.
-
-   * If you are running Microsoft Windows, the the file `nt/README' for
-     further information about debugging XEmacs.
-
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.16,  Next: Q2.1.17,  Prev: Q2.1.15,  Up: Installation
-
-Q2.1.16: XEmacs crashes in `strcat' on HP/UX 10
------------------------------------------------
-
-From the problems database (through the former address
-http://support.mayfield.hp.com/):
-
-     Problem Report: 5003302299
-     Status:         Open
-     
-     System/Model:   9000/700
-     Product Name:   HPUX S800 10.0X
-     Product Vers:   9245XB.10.00
-     
-     Description: strcat(3C) may read beyond
-     end of source string, can cause SIGSEGV
-     
-     
-     *** PROBLEM TEXT ***
-     strcat(3C) may read beyond the source string onto an unmapped page,
-     causing a segmentation violation.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.17,  Next: Q2.1.18,  Prev: Q2.1.16,  Up: Installation
-
-Q2.1.17: `Marker does not point anywhere'
------------------------------------------
-
-As with other errors, set `debug-on-error' to `t' to get the backtrace
-when the error occurs.  Specifically, two problems have been reported
-(and fixed).
-
-  1. A problem with line-number-mode in XEmacs 19.14 affected a large
-     number of other packages.  If you see this error message, turn off
-     line-number-mode.
-
-  2. A problem with some early versions of Gnus 5.4 caused this error.
-     Upgrade your Gnus.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.18,  Next: Q2.1.19,  Prev: Q2.1.17,  Up: Installation
-
-Q2.1.18: XEmacs is outputting lots of X errors.
------------------------------------------------
-
-If this is happening, we would very much like to know what's causing
-them.  To find this out, see *Note Q2.1.15::.  Try to get both a C and
-Lisp backtrace, and send them to <xemacs-beta@xemacs.org>.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.19,  Next: Q2.1.20,  Prev: Q2.1.18,  Up: Installation
-
-Q2.1.19: XEmacs does not follow the local timezone.
----------------------------------------------------
-
-When using one of the prebuilt binaries many users have observed that
-XEmacs uses the timezone under which it was built, but not the timezone
-under which it is running.  The solution is to add:
-
-     (set-time-zone-rule "MET")
-
-   to your `init.el'/`.emacs' or the `site-start.el' file if you can.
-Replace `MET' with your local timezone.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.20,  Next: Q2.1.21,  Prev: Q2.1.19,  Up: Installation
-
-Q2.1.20: `Symbol's function definition is void: hkey-help-show.'
-----------------------------------------------------------------
-
-This is a problem with a partially loaded hyperbole.  Try adding:
-
-     (require 'hmouse-drv)
-
-   where you load hyperbole and the problem should go away.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.21,  Next: Q2.1.22,  Prev: Q2.1.20,  Up: Installation
-
-Q2.1.21: [This question intentionally left blank]
--------------------------------------------------
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.22,  Next: Q2.1.23,  Prev: Q2.1.21,  Up: Installation
-
-Q2.1.22: XEmacs seems to take a really long time to do some things
-------------------------------------------------------------------
-
-David Moore <dmoore@ucsd.edu> writes:
-
-     Two things you can do:
-
-     1) C level:
-
-     When you see it going mad like this, you might want to use gdb
-     from an 'xterm' to attach to the running process and get a stack
-     trace.  To do this just run:
-
-          gdb /path/to/xemacs/xemacs ####
-
-     Where `####' is the process id of your xemacs, instead of
-     specifying the core.  When gdb attaches, the xemacs will stop [1]
-     and you can type `where' in gdb to get a stack trace as usual.  To
-     get things moving again, you can just type `quit' in gdb.  It'll
-     tell you the program is running and ask if you want to quit
-     anyways.  Say 'y' and it'll quit and have your emacs continue from
-     where it was at.
-
-     2) Lisp level:
-
-     Turn on debug-on-quit early on.  When you think things are going
-     slow hit C-g and it may pop you in the debugger so you can see
-     what routine is running.  Press `c' to get going again.
-
-     debug-on-quit doesn't work if something's turned on inhibit-quit
-     or in some other strange cases.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.23,  Next: Q2.1.24,  Prev: Q2.1.22,  Up: Installation
-
-Q2.1.23:  Movemail on Linux does not work for XEmacs 19.15 and later.
----------------------------------------------------------------------
-
-Movemail used to work fine in 19.14 but has stopped working in 19.15
-and 20.x.  I am using Linux.
-
-   SL Baur <steve@xemacs.org> writes:
-
-     Movemail on Linux used to default to using flock file locking.
-     With 19.15 and later versions it now defaults to using `.lock' file
-     locking.  If this is not appropriate for your system, edit
-     src/s/linux.h and uncomment the line that reads:
-
-          #define MAIL_USE_FLOCK
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.24,  Next: Q2.1.25,  Prev: Q2.1.23,  Up: Installation
-
-Q2.1.24:  XEmacs won't start without network.
----------------------------------------------
-
-If XEmacs starts when you're on the network, but fails when you're not
-on the network, you may be missing a "localhost" entry in your
-`/etc/hosts' file.  The file should contain an entry like:
-
-     127.0.0.1        localhost
-
-   Add that line, and XEmacs will be happy.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.25,  Prev: Q2.1.24,  Up: Installation
-
-Q2.1.25::  After upgrading, XEmacs won't do `foo' any more!
------------------------------------------------------------
-
-You have been used to doing `foo', but now when you invoke it (or click
-the toolbar button or select the menu item), nothing (or an error)
-happens.  The simplest explanation is that you are missing a package
-that is essential to you.  You can either track it down and install it
-(there is a list of packages and brief descriptions of their contents in
-`etc/PACKAGES'), or install the `Sumo Tarball' (*note Q2.0.14::).
-
-\1f
-File: xemacs-faq.info,  Node: Customization,  Next: Subsystems,  Prev: Installation,  Up: Top
-
-3 Customization and Options
-***************************
-
-This is part 3 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to Customization and screen settings.
-
-* Menu:
-
-Customization---Emacs Lisp and `init.el'/`.emacs':
-* Q3.0.1::      What version of Emacs am I running?
-* Q3.0.2::      How do I evaluate Elisp expressions?
-* Q3.0.3::      `(setq tab-width 6)' behaves oddly.
-* Q3.0.4::      How can I add directories to the `load-path'?
-* Q3.0.5::      How to check if a lisp function is defined?
-* Q3.0.6::      Can I force the output of `(face-list)' to a buffer?
-* Q3.0.7::      Font selections don't get saved after `Save Options'.
-* Q3.0.8::      How do I make a single minibuffer frame?
-* Q3.0.9::      What is `Customize'?
-
-X Window System & Resources:
-* Q3.1.1::      Where is a list of X resources?
-* Q3.1.2::      How can I detect a color display?
-* Q3.1.3::      [This question intentionally left blank]
-* Q3.1.4::      [This question intentionally left blank]
-* Q3.1.5::      How can I get the icon to just say `XEmacs'?
-* Q3.1.6::      How can I have the window title area display the full path?
-* Q3.1.7::      `xemacs -name junk' doesn't work?
-* Q3.1.8::      `-iconic' doesn't work.
-
-Textual Fonts & Colors:
-* Q3.2.1::      How can I set color options from `init.el'/`.emacs'?
-* Q3.2.2::      How do I set the text, menu and modeline fonts?
-* Q3.2.3::      How can I set the colors when highlighting a region?
-* Q3.2.4::      How can I limit color map usage?
-* Q3.2.5::      My tty supports color, but XEmacs doesn't use them.
-* Q3.2.6::      Can I have pixmap backgrounds in XEmacs?
-* Q3.2.7::      How do I display non-ASCII characters?
-
-The Modeline:
-* Q3.3.1::      How can I make the modeline go away?
-* Q3.3.2::      How do you have XEmacs display the line number in the modeline?
-* Q3.3.3::      How do I get XEmacs to put the time of day on the modeline?
-* Q3.3.4::      How do I turn off current chapter from AUC TeX modeline?
-* Q3.3.5::      How can one change the modeline color based on the mode used?
-
-3.4 Multiple Device Support:
-* Q3.4.1::      How do I open a frame on another screen of my multi-headed display?
-* Q3.4.2::      Can I really connect to a running XEmacs after calling up over a modem?  How?
-
-3.5 The Keyboard:
-* Q3.5.1::      How can I bind complex functions (or macros) to keys?
-* Q3.5.2::      How can I stop down-arrow from adding empty lines to the bottom of my buffers?
-* Q3.5.3::      How do I bind C-. and C-; to scroll one line up and down?
-* Q3.5.4::      Globally binding Delete?
-* Q3.5.5::      Scrolling one line at a time.
-* Q3.5.6::      How to map Help key alone on Sun type4 keyboard?
-* Q3.5.7::      How can you type in special characters in XEmacs?
-* Q3.5.8::      [This question intentionally left blank]
-* Q3.5.9::      How do I make the Delete key delete forward?
-* Q3.5.10::     Can I turn on "sticky" modifier keys?
-* Q3.5.11::     How do I map the arrow keys?
-
-The Cursor:
-* Q3.6.1::      Is there a way to make the bar cursor thicker?
-* Q3.6.2::      Is there a way to get back the old block cursor where the cursor covers the character in front of the point?
-* Q3.6.3::      Can I make the cursor blink?
-
-The Mouse and Highlighting:
-* Q3.7.1::      How can I turn off Mouse pasting?
-* Q3.7.2::      How do I set control/meta/etc modifiers on mouse buttons?
-* Q3.7.3::      Clicking the left button does not do anything in buffer list.
-* Q3.7.4::      How can I get a list of buffers when I hit mouse button 3?
-* Q3.7.5::      Why does cut-and-paste not work between XEmacs and a cmdtool?
-* Q3.7.6::      How I can set XEmacs up so that it pastes where the text cursor is?
-* Q3.7.7::      How do I select a rectangular region?
-* Q3.7.8::      Why does M-w take so long?
-
-The Menubar and Toolbar:
-* Q3.8.1::      How do I get rid of the menu (or menubar)?
-* Q3.8.2::      Can I customize the basic menubar?
-* Q3.8.3::      How do I control how many buffers are listed in the menu `Buffers' list?
-* Q3.8.4::      Resources like `Emacs*menubar*font' are not working?
-* Q3.8.5::      How can I bind a key to a function to toggle the toolbar?
-
-Scrollbars:
-* Q3.9.1::      How can I disable the scrollbar?
-* Q3.9.2::      How can one use resources to change scrollbar colors?
-* Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
-* Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
-
-Text Selections:
-* Q3.10.1::     How can I turn off or change highlighted selections?
-* Q3.10.2::     How do I get that typing on an active region removes it?
-* Q3.10.3::     Can I turn off the highlight during isearch?
-* Q3.10.4::     How do I turn off highlighting after C-x C-p (mark-page)?
-* Q3.10.5::     The region disappears when I hit the end of buffer while scrolling.
-* Q3.10.6::     Why is killing so slow?
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.1,  Next: Q3.0.2,  Prev: Customization,  Up: Customization
-
-3.0: Customization - Emacs Lisp and `init.el'/`.emacs'
-======================================================
-
-Q3.0.1: What version of Emacs am I running?
--------------------------------------------
-
-How can `init.el'/`.emacs' determine which of the family of Emacsen I
-am using?
-
-   To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
-XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
-example given in `etc/sample.init.el' (`etc/sample.emacs' in XEmacs
-versions prior to 21.4).  There are other nifty things in there as well!
-
-   For all new code, all you really need to do is:
-
-     (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.2,  Next: Q3.0.3,  Prev: Q3.0.1,  Up: Customization
-
-Q3.0.2: How can I evaluate Emacs-Lisp expressions?
---------------------------------------------------
-
-I know I can evaluate Elisp expressions from `*scratch*' buffer with
-`C-j' after the expression.  How do I do it from another buffer?
-
-   Press `M-:' (the default binding of `eval-expression'), and enter
-the expression to the minibuffer.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.3,  Next: Q3.0.4,  Prev: Q3.0.2,  Up: Customization
-
-Q3.0.3: `(setq tab-width 6)' behaves oddly.
--------------------------------------------
-
-If you put `(setq tab-width 6)' in your `init.el'/`.emacs' file it does
-not work!  Is there a reason for this?  If you do it at the EVAL prompt
-it works fine!! How strange.
-
-   Use `setq-default' instead, since `tab-width' is all-buffer-local.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.4,  Next: Q3.0.5,  Prev: Q3.0.3,  Up: Customization
-
-Q3.0.4: How can I add directories to the `load-path'?
------------------------------------------------------
-
-Here are two ways to do that, one that puts your directories at the
-front of the load-path, the other at the end:
-
-     ;;; Add things at the beginning of the load-path, do not add
-     ;;; duplicate directories:
-     (pushnew "bar" load-path :test 'equal)
-     
-     (pushnew "foo" load-path :test 'equal)
-     
-     ;;; Add things at the end, unconditionally
-     (setq load-path (nconc load-path '("foo" "bar")))
-
-   keith (k.p.) hanlan <keithh@nortel.ca> writes:
-
-     To add directories using Unix shell metacharacters use
-     `expand-file-name' like this:
-
-          (push (expand-file-name "~keithh/.emacsdir") load-path)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.5,  Next: Q3.0.6,  Prev: Q3.0.4,  Up: Customization
-
-Q3.0.5: How to check if a lisp function is defined?
----------------------------------------------------
-
-Use the following elisp:
-
-     (fboundp 'foo)
-
-   It's almost always a mistake to test `emacs-version' or any similar
-variables.
-
-   Instead, use feature-tests, such as `featurep', `boundp', `fboundp',
-or even simple behavioral tests, eg.:
-
-     (defvar foo-old-losing-code-p
-       (condition-case nil (progn (losing-code t) nil)
-         (wrong-number-of-arguments t)))
-
-   There is an incredible amount of broken code out there which could
-work much better more often in more places if it did the above instead
-of trying to divine its environment from the value of one variable.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.6,  Next: Q3.0.7,  Prev: Q3.0.5,  Up: Customization
-
-Q3.0.6: Can I force the output of `(face-list)' to a buffer?
-------------------------------------------------------------
-
-It would be good having it in a buffer, as the output of `(face-list)'
-is too wide to fit to a minibuffer.
-
-   Evaluate the expression in the `*scratch*' buffer with point after
-the rightmost paren and typing `C-j'.
-
-   If the minibuffer smallness is the only problem you encounter, you
-can simply press `C-h l' to get the former minibuffer contents in a
-buffer.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.7,  Next: Q3.0.8,  Prev: Q3.0.6,  Up: Customization
-
-Q3.0.7: Font selections in don't get saved after `Save Options'.
-----------------------------------------------------------------
-
-John Mann <mannj@ll.mit.edu> writes:
-
-     You have to go to Options->Frame Appearance and unselect
-     `Frame-Local Font Menu'.  If this option is selected, font changes
-     are only applied to the _current_ frame and do _not_ get saved
-     when you save options.
-
-   Also, set the following in your `init.el'/`.emacs':
-
-     (setq options-save-faces t)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.8,  Next: Q3.0.9,  Prev: Q3.0.7,  Up: Customization
-
-Q3.0.8: How do I get a single minibuffer frame?
------------------------------------------------
-
-Vin Shelton <acs@acm.org> writes:
-
-     (setq initial-frame-plist '(minibuffer nil))
-     (setq default-frame-plist '(minibuffer nil))
-     (setq default-minibuffer-frame
-           (make-frame
-            '(minibuffer only
-                         width 86
-                         height 1
-                         menubar-visible-p nil
-                         default-toolbar-visible-p nil
-                         name "minibuffer"
-                         top -2
-                         left -2
-                         has-modeline-p nil)))
-     (frame-notice-user-settings)
-
-   *Please note:* The single minibuffer frame may not be to everyone's
-taste, and there any number of other XEmacs options settings that may
-make it difficult or inconvenient to use.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.9,  Next: Q3.1.1,  Prev: Q3.0.8,  Up: Customization
-
-Q3.0.9: What is `Customize'?
-----------------------------
-
-Starting with XEmacs 20.2 there is new system 'Customize' for
-customizing XEmacs options.
-
-   You can access `Customize' from the `Options' menu or invoking one
-of customize commands by typing eg.  `M-x customize', `M-x
-customize-face', `M-x customize-variable' or `M-x customize-apropos'.
-
-   Starting with XEmacs 20.3 there is also new `browser' mode for
-Customize.  Try it out with `M-x customize-browse'
-
-\1f
-File: xemacs-faq.info,  Node: Q3.1.1,  Next: Q3.1.2,  Prev: Q3.0.9,  Up: Customization
-
-3.1: X Window System & Resources
-================================
-
-Q3.1.1: Where is a list of X resources?
----------------------------------------
-
-Search through the `NEWS' file for `X Resources'.  A fairly
-comprehensive list is given after it.
-
-   In addition, an `app-defaults' file `etc/Emacs.ad' is supplied,
-listing the defaults.  The file `etc/sample.Xresources' gives a
-different set of defaults that you might consider for installation in
-your `~/.Xresources' file.  It is nearly the same as `etc/Emacs.ad',
-but a few entries are altered.  Be careful about installing the
-contents of this file into your `.Xresources' (or legacy `.Xdefaults')
-file if you use GNU Emacs under X11 as well.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.1.2,  Next: Q3.1.3,  Prev: Q3.1.1,  Up: Customization
-
-Q3.1.2: How can I detect a color display?
------------------------------------------
-
-You can test the return value of the function `(device-class)', as in:
-
-     (when (eq (device-class) 'color)
-       (set-face-foreground  'font-lock-comment-face "Grey")
-       (set-face-foreground  'font-lock-string-face  "Red")
-       ....
-       )
-
-\1f
-File: xemacs-faq.info,  Node: Q3.1.3,  Next: Q3.1.4,  Prev: Q3.1.2,  Up: Customization
-
-Q3.1.3: [This question intentionally left blank]
-------------------------------------------------
-
-\1f
-File: xemacs-faq.info,  Node: Q3.1.4,  Next: Q3.1.5,  Prev: Q3.1.3,  Up: Customization
-
-Q3.1.4: [This question intentionally left blank]
-------------------------------------------------
-
-\1f
-File: xemacs-faq.info,  Node: Q3.1.5,  Next: Q3.1.6,  Prev: Q3.1.4,  Up: Customization
-
-Q3.1.5: How can I get the icon to just say `XEmacs'?
-----------------------------------------------------
-
-I'd like the icon to just say `XEmacs', and not include the name of the
-current file in it.
-
-   Add the following line to your `init.el'/`.emacs':
-
-     (setq frame-icon-title-format "XEmacs")
-
-\1f
-File: xemacs-faq.info,  Node: Q3.1.6,  Next: Q3.1.7,  Prev: Q3.1.5,  Up: Customization
-
-Q3.1.6: How can I have the window title area display the full path?
--------------------------------------------------------------------
-
-I'd like to have the window title area display the full directory/name
-of the current buffer file and not just the name.
-
-   Add the following line to your `init.el'/`.emacs':
-
-     (setq frame-title-format "%S: %f")
-
-   A more sophisticated title might be:
-
-     (setq frame-title-format
-           '("%S: " (buffer-file-name "%f"
-                                      (dired-directory dired-directory "%b"))))
-
-   That is, use the file name, or the dired-directory, or the buffer
-name.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.1.7,  Next: Q3.1.8,  Prev: Q3.1.6,  Up: Customization
-
-Q3.1.7: `xemacs -name junk' doesn't work?
------------------------------------------
-
-When I run `xterm -name junk', I get an xterm whose class name
-according to xprop, is `junk'.  This is the way it's supposed to work,
-I think.  When I run `xemacs -name junk' the class name is not set to
-`junk'.  It's still `emacs'.  What does `xemacs -name' really do?  The
-reason I ask is that my window manager (fvwm) will make a window sticky
-and I use XEmacs to read my mail.  I want that XEmacs window to be
-sticky, without having to use the window manager's function to set the
-window sticky.  What gives?
-
-   `xemacs -name' sets the application name for the program (that is,
-the thing which normally comes from `argv[0]').  Using `-name' is the
-same as making a copy of the executable with that new name.  The
-`WM_CLASS' property on each frame is set to the frame-name, and the
-application-class.  So, if you did `xemacs -name FOO' and then created
-a frame named BAR, you'd get an X window with WM_CLASS = `( "BAR",
-"Emacs")'.  However, the resource hierarchy for this widget would be:
-
-     Name:    FOO   .shell             .container   .BAR
-     Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
-
-   instead of the default
-
-     Name:    xemacs.shell             .container   .emacs
-     Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
-
-   It is arguable that the first element of WM_CLASS should be set to
-the application-name instead of the frame-name, but I think that's less
-flexible, since it does not give you the ability to have multiple frames
-with different WM_CLASS properties.  Another possibility would be for
-the default frame name to come from the application name instead of
-simply being `emacs'.  However, at this point, making that change would
-be troublesome: it would mean that many users would have to make yet
-another change to their resource files (since the default frame name
-would suddenly change from `emacs' to `xemacs', or whatever the
-executable happened to be named), so we'd rather avoid it.
-
-   To make a frame with a particular name use:
-
-     (make-frame '((name . "the-name")))
-
-\1f
-File: xemacs-faq.info,  Node: Q3.1.8,  Next: Q3.2.1,  Prev: Q3.1.7,  Up: Customization
-
-Q3.1.8: `-iconic' doesn't work.
--------------------------------
-
-When I start up XEmacs using `-iconic' it doesn't work right.  Using
-`-unmapped' on the command line, and setting the `initiallyUnmapped' X
-Resource don't seem to help much either...
-
-   Ben Wing <ben@xemacs.org> writes:
-
-     Ugh, this stuff is such an incredible mess that I've about given up
-     getting it to work.  The principal problem is numerous
-     window-manager bugs...
-
-\1f
-File: xemacs-faq.info,  Node: Q3.2.1,  Next: Q3.2.2,  Prev: Q3.1.8,  Up: Customization
-
-3.2: Textual Fonts & Colors
-===========================
-
-Q3.2.1: How can I set color options from `init.el'/`.emacs'?
-------------------------------------------------------------
-
-How can I set the most commonly used color options from my
-`init.el'/`.emacs' instead of from my `.Xresources'?
-
-   Like this:
-
-     (set-face-background 'default      "bisque") ; frame background
-     (set-face-foreground 'default      "black") ; normal text
-     (set-face-background 'zmacs-region "red") ; When selecting w/
-                                             ; mouse
-     (set-face-foreground 'zmacs-region "yellow")
-     (set-face-font       'default      "*courier-bold-r*120-100-100*")
-     (set-face-background 'highlight    "blue") ; Ie when selecting
-                                             ; buffers
-     (set-face-foreground 'highlight    "yellow")
-     (set-face-background 'modeline     "blue") ; Line at bottom
-                                             ; of buffer
-     (set-face-foreground 'modeline     "white")
-     (set-face-font       'modeline     "*bold-r-normal*140-100-100*")
-     (set-face-background 'isearch      "yellow") ; When highlighting
-                                             ; while searching
-     (set-face-foreground 'isearch      "red")
-     (setq x-pointer-foreground-color   "black") ; Adds to bg color,
-                                             ; so keep black
-     (setq x-pointer-background-color   "blue") ; This is color
-                                             ; you really
-                                             ; want ptr/crsr
-
-\1f
-File: xemacs-faq.info,  Node: Q3.2.2,  Next: Q3.2.3,  Prev: Q3.2.1,  Up: Customization
-
-Q3.2.2: How do I set the text, menu and modeline fonts?
--------------------------------------------------------
-
-Note that you should use `Emacs.' and not `Emacs*' when setting face
-values.
-
-   In `.Xresources':
-
-     Emacs.default.attributeFont:  -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
-     Emacs*menubar*font:           fixed
-     Emacs.modeline.attributeFont: fixed
-
-   This is confusing because `default' and `modeline' are face names,
-and can be found listed with all faces in the current mode by using
-`M-x set-face-font (enter) ?'.  They use the face-specific resource
-`attributeFont'.
-
-   On the other hand, `menubar' is a normal X thing that uses the
-resource `font'.  With Motif it _may be_ necessary to use `fontList'
-_instead of_ `font'.  In _non-Motif_ configurations with Mule it _is_
-necessary to use `fontSet' instead of `font'.  (Sorry, there just is no
-simple recipe here.)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.2.3,  Next: Q3.2.4,  Prev: Q3.2.2,  Up: Customization
-
-Q3.2.3: How can I set the colors when highlighting a region?
-------------------------------------------------------------
-
-How can I set the background/foreground colors when highlighting a
-region?
-
-   You can change the face `zmacs-region' either in your `.Xresources':
-
-     Emacs.zmacs-region.attributeForeground: firebrick
-     Emacs.zmacs-region.attributeBackground: lightseagreen
-
-   or in your `init.el'/`.emacs':
-
-     (set-face-background 'zmacs-region "red")
-     (set-face-foreground 'zmacs-region "yellow")
-
-\1f
-File: xemacs-faq.info,  Node: Q3.2.4,  Next: Q3.2.5,  Prev: Q3.2.3,  Up: Customization
-
-Q3.2.4: How can I limit color map usage?
-----------------------------------------
-
-I'm using Netscape (or another color grabber like XEmacs); is there any
-way to limit the number of available colors in the color map?
-
-   Answer: No, but you can start Netscape before XEmacs, and it will use
-the closest available color if the colormap is full.  You can also limit
-the number of colors Netscape uses, using the flags -mono, -ncols <#> or
--install (for mono, limiting to <#> colors, or for using a private color
-map).
-
-   If you have the money, another solution would be to use a truecolor
-or direct color video.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.2.5,  Next: Q3.2.6,  Prev: Q3.2.4,  Up: Customization
-
-Q3.2.5: My tty supports color, but XEmacs doesn't use them.
------------------------------------------------------------
-
-XEmacs tries to automatically determine whether your tty supports color,
-but sometimes guesses wrong.  In that case, you can make XEmacs Do The
-Right Thing using this Lisp code:
-
-     (if (eq 'tty (device-type))
-         (set-device-class nil 'color))
-
-\1f
-File: xemacs-faq.info,  Node: Q3.2.6,  Next: Q3.2.7,  Prev: Q3.2.5,  Up: Customization
-
-Q3.2.6: Can I have pixmap backgrounds in XEmacs?
-------------------------------------------------
-
-Juan Villacis <jvillaci@wahnsinnig.extreme.indiana.edu> writes:
-
-     There are several ways to do it.  For example, you could specify a
-     default pixmap image to use in your `~/.Xresources', e.g.,
-
-            Emacs*EmacsFrame.default.attributeBackgroundPixmap: /path/to/image.xpm
-
-     and then reload ~/.Xresources and restart XEmacs.  Alternatively,
-     since each face can have its own pixmap background, a better way
-     would be to set a face's pixmap within your XEmacs init file, e.g.,
-
-            (set-face-background-pixmap 'default "/path/to/image.xpm")
-            (set-face-background-pixmap 'bold    "/path/to/another_image.xpm")
-
-     and so on.  You can also do this interactively via `M-x
-     edit-faces'.
-
-
-\1f
-File: xemacs-faq.info,  Node: Q3.2.7,  Next: Q3.3.1,  Prev: Q3.2.6,  Up: Customization
-
-Q3.2.7: How do I display non-ASCII characters?
-----------------------------------------------
-
-If you're using a Mule-enabled XEmacs, then display is automatic.  If
-you're not seeing the characters you expect, either (1) you don't have
-appropriate fonts available or (2) XEmacs did not correctly detect the
-coding system (*note Recognize Coding: (xemacs)Recognize Coding.).  In
-case (1), install fonts as is customary for your platform.  In case
-(2), you need to tell XEmacs explicitly what coding systems you're
-using.  *Note Specify Coding: (xemacs)Specify Coding.
-
-   If your XEmacs is not Mule-enabled, and for some reason getting a
-Mule-enabled XEmacs seems like the wrong thing to do, all is not lost.
-You can arrange it by brute force.  In `event-Xt.c' (suppress the urge
-to look in this file--play Doom instead, because you'll survive
-longer), it is written:
-
-     In a non-Mule world, a user can still have a multi-lingual editor,
-     by doing `(set-face-font "-*-iso8859-2" (current-buffer))' for all
-     their Latin-2 buffers, etc.
-
-   For the related problem of _inputting_ non-ASCII characters in a
-non-Mule XEmacs, *Note Q3.5.7::.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.3.1,  Next: Q3.3.2,  Prev: Q3.2.7,  Up: Customization
-
-3.3: The Modeline
-=================
-
-Q3.3.1: How can I make the modeline go away?
---------------------------------------------
-
-     (set-specifier has-modeline-p nil)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.3.2,  Next: Q3.3.3,  Prev: Q3.3.1,  Up: Customization
-
-Q3.3.2: How do you have XEmacs display the line number in the modeline?
------------------------------------------------------------------------
-
-Add the following line to your `init.el'/`.emacs' file to display the
-line number:
-
-     (line-number-mode 1)
-
-   Use the following to display the column number:
-
-     (column-number-mode 1)
-
-   Or select from the `Options' menu `Advanced
-(Customize)->Emacs->Editing->Basics->Line Number Mode' and/or `Advanced
-(Customize)->Emacs->Editing->Basics->Column Number Mode'
-
-   Or type `M-x customize <RET> editing-basics <RET>'.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.3.3,  Next: Q3.3.4,  Prev: Q3.3.2,  Up: Customization
-
-Q3.3.3: How do I get XEmacs to put the time of day on the modeline?
--------------------------------------------------------------------
-
-Add the following line to your `init.el'/`.emacs' file to display the
-time:
-
-     (display-time)
-
-   See `Customize' from the `Options' menu for customization.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.3.4,  Next: Q3.3.5,  Prev: Q3.3.3,  Up: Customization
-
-Q3.3.4: How do I turn off current chapter from AUC TeX modeline?
-----------------------------------------------------------------
-
-With AUC TeX, fast typing is hard because the current chapter, section
-etc. are given in the modeline.  How can I turn this off?
-
-   It's not AUC TeX, it comes from `func-menu' in `func-menu.el'.
-
-   David Hughes <dhughes@origin-at.co.uk> writes:
-
-     Try this; you'll still get the function name displayed in the
-     modeline, but it won't attempt to keep track when you modify the
-     file. To refresh when it gets out of synch, you simply need click
-     on the `Rescan Buffer' option in the function-menu.
-
-          (setq-default fume-auto-rescan-buffer-p nil)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.3.5,  Next: Q3.4.1,  Prev: Q3.3.4,  Up: Customization
-
-Q3.3.5: How can one change the modeline color based on the mode used?
----------------------------------------------------------------------
-
-You can use something like the following:
-
-     (add-hook 'lisp-mode-hook
-               (lambda ()
-                 (set-face-background 'modeline "red" (current-buffer))))
-
-   Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
-colors change from the default set in your `init.el'/`.emacs'.  The
-change will only be made in the buffer you just entered (which contains
-the Lisp file you are editing) and will not affect the modeline colors
-anywhere else.
-
-   Notes:
-
-   * The hook is the mode name plus `-hook'.  eg. c-mode-hook,
-     c++-mode-hook, emacs-lisp-mode-hook (used for your
-     `init.el'/`.emacs' or a `xx.el' file), lisp-interaction-mode-hook
-     (the `*scratch*' buffer), text-mode-hook, etc.
-
-   * Be sure to use `add-hook', not `(setq c-mode-hook xxxx)',
-     otherwise you will erase anything that anybody has already put on
-     the hook.
-
-   * You can also do `(set-face-font 'modeline FONT)', eg.
-     `(set-face-font 'modeline "*bold-r-normal*140-100-100*"
-     (current-buffer))' if you wish the modeline font to vary based on
-     the current mode.
-
-   There are additional modeline faces, `modeline-buffer-id',
-`modeline-mousable', and `modeline-mousable-minor-mode', which you may
-want to customize.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.4.1,  Next: Q3.4.2,  Prev: Q3.3.5,  Up: Customization
-
-3.4: Multiple Device Support
-============================
-
-Q3.4.1: How do I open a frame on another screen of my multi-headed display?
----------------------------------------------------------------------------
-
-Use the command `M-x make-frame-on-display'.  This command is also on
-the File menu in the menubar.
-
-   The command `make-frame-on-tty' also exists, which will establish a
-connection to any tty-like device.  Opening the TTY devices should be
-left to `gnuclient', though.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.4.2,  Next: Q3.5.1,  Prev: Q3.4.1,  Up: Customization
-
-Q3.4.2: Can I really connect to a running XEmacs after calling up over a modem?  How?
--------------------------------------------------------------------------------------
-
-Yes.  Use `gnuclient -nw'. (Prior to 20.3, use the `gnuattach' program
-supplied with XEmacs instead.)
-
-   Also see *Note Q5.0.12::.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.1,  Next: Q3.5.2,  Prev: Q3.4.2,  Up: Customization
-
-3.5: The Keyboard
-=================
-
-Q3.5.1: How can I bind complex functions (or macros) to keys?
--------------------------------------------------------------
-
-As an example, say you want the `paste' key on a Sun keyboard to insert
-the current Primary X selection at point. You can accomplish this with:
-
-     (define-key global-map [f18] 'x-insert-selection)
-
-   However, this only works if there is a current X selection (the
-selection will be highlighted).  The functionality I like is for the
-`paste' key to insert the current X selection if there is one,
-otherwise insert the contents of the clipboard.  To do this you need to
-pass arguments to `x-insert-selection'.  This is done by wrapping the
-call in a 'lambda form:
-
-     (global-set-key [f18]
-       (lambda () (interactive) (x-insert-selection t nil)))
-
-   This binds the f18 key to a "generic" functional object.  The
-interactive spec is required because only interactive functions can be
-bound to keys.
-
-   For the FAQ example you could use:
-
-     (global-set-key [(control ?.)]
-       (lambda () (interactive) (scroll-up 1)))
-     (global-set-key [(control ?;)]
-       (lambda () (interactive) (scroll-up -1)))
-
-   This is fine if you only need a few functions within the lambda body.
-If you're doing more it's cleaner to define a separate function as in
-question 3.5.3 (*note Q3.5.3::).
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.2,  Next: Q3.5.3,  Prev: Q3.5.1,  Up: Customization
-
-Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers?
---------------------------------------------------------------------------------------
-
-Add the following line to your `init.el'/`.emacs' file:
-
-     (setq next-line-add-newlines nil)
-
-   This has been the default setting in XEmacs for some time.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.3,  Next: Q3.5.4,  Prev: Q3.5.2,  Up: Customization
-
-Q3.5.3: How do I bind C-. and C-; to scroll one line up and down?
------------------------------------------------------------------
-
-Add the following (Thanks to Richard Mlynarik <mly@adoc.xerox.com> and
-Wayne Newberry <wayne@zen.cac.stratus.com>) to `.emacs':
-
-     (defun scroll-up-one-line ()
-       (interactive)
-       (scroll-up 1))
-     
-     (defun scroll-down-one-line ()
-       (interactive)
-       (scroll-down 1))
-     
-     (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
-     (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
-
-   The key point is that you can only bind simple functions to keys; you
-can not bind a key to a function that you're also passing arguments to.
-(*note Q3.5.1:: for a better answer).
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.4,  Next: Q3.5.5,  Prev: Q3.5.3,  Up: Customization
-
-Q3.5.4: Globally binding `Delete'?
-----------------------------------
-
-I cannot manage to globally bind my `Delete' key to something other
-than the default.  How does one do this?
-
-   Answer: The problem is that many modes explicitly bind `Delete'.  To
-get around this, try the following:
-
-     (defun foo ()
-       (interactive)
-       (message "You hit DELETE"))
-     
-     (define-key key-translation-map 'delete 'redirected-delete)
-     (global-set-key 'redirected-delete 'foo)
-
-   Also see *Note Q3.5.10::.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.5,  Next: Q3.5.6,  Prev: Q3.5.4,  Up: Customization
-
-Q3.5.5: Scrolling one line at a time.
--------------------------------------
-
-Can the cursor keys scroll the screen a line at a time, rather than the
-default half page jump?  I tend it to find it disorienting.
-
-   Try this:
-
-     (defun scroll-one-line-up (&optional arg)
-       "Scroll the selected window up (forward in the text) one line (or N lines)."
-       (interactive "p")
-       (scroll-up (or arg 1)))
-     
-     (defun scroll-one-line-down (&optional arg)
-       "Scroll the selected window down (backward in the text) one line (or N)."
-       (interactive "p")
-       (scroll-down (or arg 1)))
-     
-     (global-set-key [up]   'scroll-one-line-up)
-     (global-set-key [down] 'scroll-one-line-down)
-
-   The following will also work but will affect more than just the
-cursor keys (i.e. `C-n' and `C-p'):
-
-     (setq scroll-step 1)
-
-   Starting with XEmacs-20.3 you can also change this with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Environment->Windows->Scroll Step...' or type `M-x
-customize <RET> windows <RET>'.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.6,  Next: Q3.5.7,  Prev: Q3.5.5,  Up: Customization
-
-Q3.5.6: How to map `Help' key alone on Sun type4 keyboard?
-----------------------------------------------------------
-
-The following works in GNU Emacs 19:
-
-     (global-set-key [help] 'help-command);; Help
-
-   The following works in XEmacs with the addition of shift:
-
-     (global-set-key [(shift help)] 'help-command);; Help
-
-   But it doesn't work alone.  This is in the file `PROBLEMS' which
-should have come with your XEmacs installation: _Emacs ignores the
-`help' key when running OLWM_.
-
-   OLWM grabs the `help' key, and retransmits it to the appropriate
-client using `XSendEvent'.  Allowing Emacs to react to synthetic events
-is a security hole, so this is turned off by default.  You can enable
-it by setting the variable `x-allow-sendevents' to t.  You can also
-cause fix this by telling OLWM to not grab the help key, with the null
-binding `OpenWindows.KeyboardCommand.Help:'.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.7,  Next: Q3.5.8,  Prev: Q3.5.6,  Up: Customization
-
-Q3.5.7: How can you type in special characters in XEmacs?
----------------------------------------------------------
-
-One way is to use the package `x-compose'.  Then you can use sequences
-like `Compose " a' to get ä, etc.
-
-   Another way is to use the `iso-insert' package. Then you can use
-sequences like `C-x 8 " a' to get ä, etc.
-
-   Glynn Clements <glynn@sensei.co.uk> writes:
-
-     It depends upon your X server.
-
-     Generally, the simplest way is to define a key as Multi_key with
-     xmodmap, e.g.
-                  xmodmap -e 'keycode 0xff20 = Multi_key'
-
-     You will need to pick an appropriate keycode. Use xev to find out
-     the keycodes for each key.
-
-     [NB: On a `Windows' keyboard, recent versions of XFree86
-     automatically define the right `Windows' key as Multi_key'.]
-
-     Once you have Multi_key defined, you can use e.g.
-                  Multi a '       => á
-                  Multi e "       => ë
-                  Multi c ,       => ç
-
-     etc.
-
-     Also, recent versions of XFree86 define various AltGr-<key>
-     combinations as dead keys, i.e.
-                  AltGr [         => dead_diaeresis
-                  AltGr ]         => dead_tilde
-                  AltGr ;         => dead_acute
-     etc.
-
-     Running `xmodmap -pk' will list all of the defined keysyms.
-
-   For the related problem of _displaying_ non-ASCII characters in a
-non-Mule XEmacs, *Note Q3.2.7::.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.8,  Next: Q3.5.9,  Prev: Q3.5.7,  Up: Customization
-
-Q3.5.8: [This question intentionally left blank]
-------------------------------------------------
-
-Obsolete question, left blank to avoid renumbering.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.9,  Next: Q3.5.10,  Prev: Q3.5.8,  Up: Customization
-
-Q3.5.9: How do I make the Delete key delete forward?
-----------------------------------------------------
-
-With XEmacs-20.2 use the `delbs' package:
-
-     (require 'delbs)
-
-   This will give you the functions `delbs-enable-delete-forward' to
-set things up, and `delbs-disable-delete-forward' to revert to "normal"
-behavior.  Note that `delbackspace' package is obsolete.
-
-   Starting with XEmacs-20.3 better solution is to set variable
-`delete-key-deletes-forward' to t.  You can also change this with
-Customize. Select from the `Options' menu `Advanced
-(Customize)->Emacs->Editing->Basics->Delete Key Deletes Forward' or
-type `M-x customize <RET> editing-basics <RET>'.
-
-   Also see *Note Q3.5.4::.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.10,  Next: Q3.5.11,  Prev: Q3.5.9,  Up: Customization
-
-Q3.5.10: Can I turn on "sticky" modifier keys?
-----------------------------------------------
-
-Yes, with `(setq modifier-keys-are-sticky t)'.  This will give the
-effect of being able to press and release Shift and have the next
-character typed come out in upper case.  This will affect all the other
-modifier keys like Control and Meta as well.
-
-   Ben Wing <ben@xemacs.org> writes:
-
-     One thing about the sticky modifiers is that if you move the mouse
-     out of the frame and back in, it cancels all currently "stuck"
-     modifiers.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.5.11,  Next: Q3.6.1,  Prev: Q3.5.10,  Up: Customization
-
-Q3.5.11: How do I map the arrow keys?
--------------------------------------
-
-Say you want to map `C-<right>' to forward-word:
-
-   Sam Steingold <sds@usa.net> writes:
-
-          ; both XEmacs and Emacs
-          (define-key global-map [(control right)] 'forward-word)
-     or
-          ; Emacs only
-          (define-key global-map [C-right] 'forward-word)
-     or
-          ; ver > 20, both
-          (define-key global-map (kbd "C-<right>") 'forward-word)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.6.1,  Next: Q3.6.2,  Prev: Q3.5.11,  Up: Customization
-
-3.6: The Cursor
-===============
-
-Q3.6.1: Is there a way to make the bar cursor thicker?
-------------------------------------------------------
-
-I'd like to have the bar cursor a little thicker, as I tend to "lose" it
-often.
-
-   For a 1 pixel bar cursor, use:
-
-     (setq bar-cursor t)
-
-   For a 2 pixel bar cursor, use:
-
-     (setq bar-cursor 'anything-else)
-
-   Starting with XEmacs-20.3 you can also change these with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Environment->Display->Bar Cursor...' or type `M-x
-customize <RET> display <RET>'.
-
-   You can use a color to make it stand out better:
-
-     Emacs*cursorColor:      Red
-
-\1f
-File: xemacs-faq.info,  Node: Q3.6.2,  Next: Q3.6.3,  Prev: Q3.6.1,  Up: Customization
-
-Q3.6.2: Is there a way to get back the block cursor?
-----------------------------------------------------
-
-     (setq bar-cursor nil)
-
-   Starting with XEmacs 20.3 you can also change this with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Environment->Display->Bar Cursor...' or type `M-x
-customize <RET> display <RET>'.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.6.3,  Next: Q3.7.1,  Prev: Q3.6.2,  Up: Customization
-
-Q3.6.3: Can I make the cursor blink?
-------------------------------------
-
-Yes, like this:
-
-     (blink-cursor-mode)
-
-   This function toggles between a steady cursor and a blinking cursor.
-You may also set this mode from the menu bar by selecting `Options =>
-Frame Appearance => Blinking Cursor'.  Remember to save options.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.7.1,  Next: Q3.7.2,  Prev: Q3.6.3,  Up: Customization
-
-3.7: The Mouse and Highlighting
-===============================
-
-Q3.7.1: How can I turn off Mouse pasting?
------------------------------------------
-
-I keep hitting the middle mouse button by accident and getting stuff
-pasted into my buffer so how can I turn this off?
-
-   Here is an alternative binding, whereby the middle mouse button
-selects (but does not cut) the expression under the mouse. Clicking
-middle on a left or right paren will select to the matching one.  Note
-that you can use `define-key' or `global-set-key'.
-
-     (defun mouse-set-point-and-select (event)
-       "Sets the point at the mouse location, then marks following form"
-       (interactive "@e")
-       (mouse-set-point event)
-       (mark-sexp 1))
-     (define-key global-map [button2] 'mouse-set-point-and-select)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.7.2,  Next: Q3.7.3,  Prev: Q3.7.1,  Up: Customization
-
-Q3.7.2: How do I set control/meta/etc modifiers on mouse buttons?
------------------------------------------------------------------
-
-Use, for instance, `[(meta button1)]'. For example, here is a common
-setting for Common Lisp programmers who use the bundled `ilisp'
-package, whereby meta-button1 on a function name will find the file
-where the function name was defined, and put you at that location in
-the source file.
-
-   [Inside a function that gets called by the lisp-mode-hook and
-ilisp-mode-hook]
-
-     (local-set-key [(meta button1)] 'edit-definitions-lisp)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.7.3,  Next: Q3.7.4,  Prev: Q3.7.2,  Up: Customization
-
-Q3.7.3: Clicking the left button does not do anything in buffer list.
----------------------------------------------------------------------
-
-I do `C-x C-b' to get a list of buffers and the entries get highlighted
-when I move the mouse over them but clicking the left mouse does not do
-anything.
-
-   Use the middle mouse button.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.7.4,  Next: Q3.7.5,  Prev: Q3.7.3,  Up: Customization
-
-Q3.7.4: How can I get a list of buffers when I hit mouse button 3?
-------------------------------------------------------------------
-
-The following code will replace the default popup on button3:
-
-     (global-set-key [button3] 'popup-buffer-menu)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.7.5,  Next: Q3.7.6,  Prev: Q3.7.4,  Up: Customization
-
-Q3.7.5: Why does cut-and-paste not work between XEmacs and a cmdtool?
----------------------------------------------------------------------
-
-We don't know.  It's a bug.  There does seem to be a work-around,
-however.  Try running xclipboard first.  It appears to fix the problem
-even if you exit it.  (This should be mostly fixed in 19.13, but we
-haven't yet verified that).
-
-\1f
-File: xemacs-faq.info,  Node: Q3.7.6,  Next: Q3.7.7,  Prev: Q3.7.5,  Up: Customization
-
-Q3.7.6: How I can set XEmacs up so that it pastes where the text cursor is?
----------------------------------------------------------------------------
-
-By default XEmacs pastes X selections where the mouse pointer is.  How
-do I disable this?
-
-   Examine the function `mouse-yank', by typing `C-h f mouse-yank
-<RET>'.
-
-   To get XEmacs to paste at the text cursor, add this your
-`init.el'/`.emacs':
-
-     (setq mouse-yank-at-point t)
-
-   Starting with XEmacs-20.2 you can also change this with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Editing->Mouse->Yank At Point...' or type `M-x
-customize <RET> mouse <RET>'.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.7.7,  Next: Q3.7.8,  Prev: Q3.7.6,  Up: Customization
-
-Q3.7.7: How do I select a rectangular region?
----------------------------------------------
-
-Just select the region normally, then use the rectangle commands (e.g.
-`kill-rectangle' on it.  The region does not highlight as a rectangle,
-but the commands work just fine.
-
-   To actually sweep out rectangular regions with the mouse you can use
-`mouse-track-do-rectangle' which is assigned to `M-button1'.  Then use
-rectangle commands.
-
-   You can also do the following to change default behavior to sweep out
-rectangular regions:
-
-     (setq mouse-track-rectangle-p t)
-
-   Starting with XEmacs-20.2 you can also change this with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Editing->Mouse->Track Rectangle...' or type `M-x
-customize <RET> mouse <RET>'.
-
-      mouse-track-do-rectangle: (event)
-        -- an interactive compiled Lisp function.
-      Like `mouse-track' but selects rectangles instead of regions.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.7.8,  Next: Q3.8.1,  Prev: Q3.7.7,  Up: Customization
-
-Q3.7.8: Why does `M-w' take so long?
-------------------------------------
-
-It actually doesn't.  It leaves the region visible for a second so that
-you can see what area is being yanked.  If you start working, though, it
-will immediately complete its operation.  In other words, it will only
-delay for a second if you let it.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.8.1,  Next: Q3.8.2,  Prev: Q3.7.8,  Up: Customization
-
-3.8: The Menubar and Toolbar
-============================
-
-Q3.8.1: How do I get rid of the menu (or menubar)?
---------------------------------------------------
-
-     (set-specifier menubar-visible-p nil)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.8.2,  Next: Q3.8.3,  Prev: Q3.8.1,  Up: Customization
-
-Q3.8.2: Can I customize the basic menubar?
-------------------------------------------
-
-For an extensive menubar, add this line to your `init.el'/`.emacs':
-
-     (load "big-menubar")
-
-   If you'd like to write your own, this file provides as good a set of
-examples as any to start from.  The file is located in edit-utils
-package.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.8.3,  Next: Q3.8.4,  Prev: Q3.8.2,  Up: Customization
-
-Q3.8.3: How do I control how many buffers are listed in the menu `Buffers List'?
---------------------------------------------------------------------------------
-
-Add the following to your `init.el'/`.emacs' (suit to fit):
-
-     (setq buffers-menu-max-size 20)
-
-   For no limit, use an argument of `nil'.
-
-   Starting with XEmacs-20.3 you can also change this with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...' or
-type `M-x customize <RET> buffers-menu <RET>'.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.8.4,  Next: Q3.8.5,  Prev: Q3.8.3,  Up: Customization
-
-Q3.8.4: Resources like `Emacs*menubar*font' are not working?
-------------------------------------------------------------
-
-I am trying to use a resource like `Emacs*menubar*font' to set the font
-of the menubar but it's not working.
-
-   In Motif, the use of `font' resources is obsoleted in order to
-support internationalization.  If you are using the real Motif menubar,
-this resource is not recognized at all; you have to say:
-
-     Emacs*menubar*fontList: FONT
-
-   If you are using the Lucid menubar, for backward compatibility with
-existing user configurations, the `font' resource is recognized.  Since
-this is not supported by Motif itself, the code is a kludge and the
-`font' resource will be recognized only if the `fontList' resource
-resource is unset.  This means that the resource
-
-     *fontList: FONT
-
-   will override
-
-     Emacs*menubar*font: FONT
-
-   even though the latter is more specific.
-
-   In non-Motif configurations using `--with-mule' and `--with-xfs' it
-_is_ necessary to use the `fontSet' resource _instead of_ the `font'
-resource.  The backward compatibility kludge was never implemented for
-non-Motif builds.  Example:
-
-     *fontSet: FONT
-
-\1f
-File: xemacs-faq.info,  Node: Q3.8.5,  Next: Q3.9.1,  Prev: Q3.8.4,  Up: Customization
-
-Q3.8.5: How can I bind a key to a function to toggle the toolbar?
------------------------------------------------------------------
-
-Try something like:
-
-     (defun my-toggle-toolbar ()
-       (interactive)
-       (set-specifier default-toolbar-visible-p
-                      (not (specifier-instance default-toolbar-visible-p))))
-     (global-set-key "\C-xT" 'my-toggle-toolbar)
-
-   There are redisplay bugs in 19.14 that may make the preceding result
-in a messed-up display, especially for frames with multiple windows.
-You may need to resize the frame before XEmacs completely realizes the
-toolbar is really gone.
-
-   Thanks to Martin Buchholz <martin@xemacs.org> for the correct code.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.9.1,  Next: Q3.9.2,  Prev: Q3.8.5,  Up: Customization
-
-3.9: Scrollbars
-===============
-
-Q3.9.1: How can I disable the scrollbar?
-----------------------------------------
-
-To disable them for all frames, add the following line to your
-`.Xresources':
-
-     Emacs.scrollBarWidth:  0
-
-   Or select from the `Options' menu `Frame Appearance->Scrollbars'.
-Remember to save options.
-
-   To turn the scrollbar off on a per-frame basis, use the following
-function:
-
-     (set-specifier scrollbar-width 0 (selected-frame))
-
-   You can actually turn the scrollbars on at any level you want by
-substituting for (selected-frame) in the above command.  For example, to
-turn the scrollbars off only in a single buffer:
-
-     (set-specifier scrollbar-width 0 (current-buffer))
-
-\1f
-File: xemacs-faq.info,  Node: Q3.9.2,  Next: Q3.9.3,  Prev: Q3.9.1,  Up: Customization
-
-Q3.9.2: How can one use resources to change scrollbar colors?
--------------------------------------------------------------
-
-Here's a recap of how to use resources to change your scrollbar colors:
-
-     ! Motif scrollbars
-     
-     Emacs*XmScrollBar.Background: skyblue
-     Emacs*XmScrollBar.troughColor: lightgray
-     
-     ! Athena scrollbars
-     
-     Emacs*Scrollbar.Foreground: skyblue
-     Emacs*Scrollbar.Background: lightgray
-
-   Note the capitalization of `Scrollbar' for the Athena widget.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.9.3,  Next: Q3.9.4,  Prev: Q3.9.2,  Up: Customization
-
-Q3.9.3: Moving the scrollbar can move the point; can I disable this?
---------------------------------------------------------------------
-
-When I move the scrollbar in an XEmacs window, it moves the point as
-well, which should not be the default behavior.  Is this a bug or a
-feature?  Can I disable it?
-
-   The current behavior is a feature, not a bug.  Point remains at the
-same buffer position as long as that position does not scroll off the
-screen.  In that event, point will end up in either the upper-left or
-lower-left hand corner.
-
-   This cannot be changed.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.9.4,  Next: Q3.10.1,  Prev: Q3.9.3,  Up: Customization
-
-Q3.9.4: How can I turn off automatic horizontal scrolling in specific modes?
-----------------------------------------------------------------------------
-
-Do `(setq truncate-lines t)' in the mode-hooks for any modes in which
-you want lines truncated.
-
-   More precisely: If `truncate-lines' is nil, horizontal scrollbars
-will never appear.  Otherwise, they will appear only if the value of
-`scrollbar-height' for that buffer/window/etc. is non-zero.  If you do
-
-     (set-specifier scrollbar-height 0)
-
-   then horizontal scrollbars will not appear in truncated buffers
-unless the package specifically asked for them.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.10.1,  Next: Q3.10.2,  Prev: Q3.9.4,  Up: Customization
-
-3.10: Text Selections
-=====================
-
-Q3.10.1: How can I turn off or change highlighted selections?
--------------------------------------------------------------
-
-The `zmacs' mode allows for what some might call gratuitous
-highlighting for selected regions (either by setting mark or by using
-the mouse).  This is the default behavior.  To turn off, add the
-following line to your `init.el'/`.emacs' file:
-
-     (setq zmacs-regions nil)
-
-   Starting with XEmacs-20.2 you can also change this with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Editing->Basics->Zmacs Regions' or type `M-x
-customize <RET> editing-basics <RET>'.
-
-   To change the face for selection, look at `Options->Customize' on
-the menubar.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.10.2,  Next: Q3.10.3,  Prev: Q3.10.1,  Up: Customization
-
-Q3.10.2: How do I get that typing on an active region removes it?
------------------------------------------------------------------
-
-I want to change things so that if I select some text and start typing,
-the typed text replaces the selected text, similar to Motif.
-
-   You want to use something called "pending delete".  Pending delete
-is what happens when you select a region (with the mouse or keyboard)
-and you press a key to replace the selected region by the key you typed.
-Usually backspace kills the selected region.
-
-   To get this behavior, add the following lines to your
-`init.el'/`.emacs':
-
-     (cond
-      ((fboundp 'turn-on-pending-delete)
-       (turn-on-pending-delete))
-      ((fboundp 'pending-delete-on)
-       (pending-delete-on t)))
-
-   Note that this will work with both Backspace and Delete.  This code
-is a tad more complicated than it has to be for XEmacs in order to make
-it more portable.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.10.3,  Next: Q3.10.4,  Prev: Q3.10.2,  Up: Customization
-
-Q3.10.3: Can I turn off the highlight during isearch?
------------------------------------------------------
-
-I do not like my text highlighted while I am doing isearch as I am not
-able to see what's underneath.  How do I turn it off?
-
-   Put the following in your `init.el'/`.emacs':
-
-     (setq isearch-highlight nil)
-
-   Starting with XEmacs-20.2 you can also change this with Customize.
-Type `M-x customize-variable <RET> isearch-highlight <RET>'.
-
-   Note also that isearch-highlight affects query-replace and ispell.
-Instead of disabling isearch-highlight you may find that a better
-solution consists of customizing the `isearch' face.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.10.4,  Next: Q3.10.5,  Prev: Q3.10.3,  Up: Customization
-
-Q3.10.4: How do I turn off highlighting after `C-x C-p' (mark-page)?
---------------------------------------------------------------------
-
-Put this in your `.emacs':
-
-     (setq zmacs-regions nil)
-
-   *Warning: This command turns off all region highlighting.*
-
-   Also see *Note Q3.10.1::.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.10.5,  Next: Q3.10.6,  Prev: Q3.10.4,  Up: Customization
-
-Q3.10.5: The region disappears when I hit the end of buffer while scrolling.
-----------------------------------------------------------------------------
-
-This has been fixed by default starting with XEmacs-20.3.
-
-   With older versions you can turn this feature (if it indeed is a
-feature) off like this:
-
-     (defadvice scroll-up (around scroll-up freeze)
-       (interactive "_P")
-       (let ((zmacs-region-stays t))
-         (if (interactive-p)
-             (condition-case nil
-                 ad-do-it
-               (end-of-buffer (goto-char (point-max))))
-           ad-do-it)))
-     
-     (defadvice scroll-down (around scroll-down freeze)
-       (interactive "_P")
-       (let ((zmacs-region-stays t))
-         (if (interactive-p)
-             (condition-case nil
-                 ad-do-it
-               (beginning-of-buffer (goto-char (point-min))))
-           ad-do-it)))
-
-   Thanks to T. V. Raman <raman@adobe.com> for assistance in deriving
-this answer.
-
-\1f
-File: xemacs-faq.info,  Node: Q3.10.6,  Prev: Q3.10.5,  Up: Customization
-
-Q3.10.6: Why is killing so slow?
---------------------------------
-
-This actually is an X Windows question, although you'll notice it with
-keyboard operations as well as while using the GUI.  Basically, there
-are four ways to communicate interprogram via the X server:
-
-*Primary selection*
-     a transient selection that gets replaced every time a new
-     selection is made
-
-*Secondary selection*
-     for "exchanging" with the primary selection
-
-*Cut buffers*
-     a clipboard internal to the X server (deprecated)
-
-*Clipboard selection*
-     a selection with a notification protocol that allows a separate
-     app to manage the clipboard
-
-   The cut buffers are deprecated because managing them is even more
-inefficient than the clipboard notification protocol.  The primary
-selection works fine for many users and applications, but is not very
-robust under intensive or sophisticated use.
-
-   In Motif and MS Windows, a clipboard has become the primary means for
-managing cut and paste.  These means that "modern" applications tend to
-be oriented toward a true clipboard, rather than the primary selection.
-(On Windows, there is nothing equivalent to the primary selection.)
-It's not that XEmacs doesn't support the simple primary selection
-method, it's that more and more other applications don't.
-
-   So the slowdown occurs because XEmacs now engages in the clipboard
-notification protocol on _every_ kill.  This is especially slow on
-Motif.
-
-   With most people running most clients and server on the same host,
-and many of the rest working over very fast communication, you may
-expect that the situation is not going to improve.
-
-   There are a number of workarounds.  The most effective is to use a
-special command to do selection ownership only when you intend to paste
-to another application.  Useful commands are `kill-primary-selection'
-and `copy-primary-selection'.  These work only on text selected with
-the mouse (probably; experiment), and are bound by default to the `Cut'
-and `Copy', respectively, buttons on the toolbar.
-`copy-primary-selection' is also bound to `C-Insert'.  You can yank the
-clipboard contents with `yank-primary-selection', bound to the `Paste'
-toolbar button and `Sh-Insert'.
-
-   If you are communicating by cut and paste with applications that use
-the primary selection, then you can customize
-`interprogram-cut-function' to `nil', restoring the XEmacs version 20
-behavior.  How can you tell if a program will support this?
-Motifly-correct programs require the clipboard; you lose.  For others,
-only by trying it.  You also need to customize the complementary
-`interprogram-paste-function' to `nil'.  (Otherwise XEmacs-to-XEmacs
-pastes will not work correctly.)
-
-   You may get some relief on Motif by setting
-`x-selection-strict-motif-ownership' to nil, but this means you will
-only intermittently be able to paste XEmacs kills to Motif applications.
-
-   Thanks to Jeff Mincy and Glynn Clements for corrections.
-
-\1f
-File: xemacs-faq.info,  Node: Subsystems,  Next: Miscellaneous,  Prev: Customization,  Up: Top
-
-4 Major Subsystems
-******************
-
-This is part 4 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to major XEmacs subsystems.
-
-* Menu:
-
-Reading Mail with VM:
-* Q4.0.1::      How do I set up VM to retrieve remote mail using POP?
-* Q4.0.2::      How do I get VM to filter mail for me?
-* Q4.0.3::      How can I get VM to automatically check for new mail?
-* Q4.0.4::      [This question intentionally left blank]
-* Q4.0.5::      How do I get my outgoing mail archived?
-* Q4.0.6::      I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
-* Q4.0.7::      Is there a mailing list or FAQ for VM?
-* Q4.0.8::      Remote mail reading with VM.
-* Q4.0.9::      rmail or VM gets an error incorporating new mail.
-* Q4.0.10::     How do I make VM stay in a single frame?
-* Q4.0.11::     How do I make VM or mh-e display graphical smilies?
-* Q4.0.12::     Customization of VM not covered in the manual or here.
-
-Web browsing with W3:
-* Q4.1.1::      What is W3?
-* Q4.1.2::      How do I run W3 from behind a firewall?
-* Q4.1.3::      Is it true that W3 supports style sheets and tables?
-
-Reading Netnews and Mail with Gnus:
-* Q4.2.1::      GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus,argh!
-* Q4.2.2::      [This question intentionally left blank]
-* Q4.2.3::      How do I make Gnus stay within a single frame?
-* Q4.2.4::      How do I customize the From: line?
-
-Other Mail & News:
-* Q4.3.1::      How can I read and/or compose MIME messages?
-* Q4.3.2::      What is TM and where do I get it?
-* Q4.3.3::      Why isn't this `movemail' program working?
-* Q4.3.4::      Movemail is also distributed by Netscape?  Can that cause problems?
-* Q4.3.5::      Where do I find pstogif (required by tm)?
-
-Sparcworks, EOS, and WorkShop:
-* Q4.4.1::      What is SPARCworks, EOS, and WorkShop
-* Q4.4.2::      How do I start the Sun Workshop support in XEmacs 21?
-
-Energize:
-* Q4.5.1::      What is/was Energize?
-
-Infodock:
-* Q4.6.1::      What is Infodock?
-
-Other Unbundled Packages:
-* Q4.7.1::      What is AUC TeX?  Where do you get it?
-* Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
-* Q4.7.3::      [This question intentionally left blank]
-* Q4.7.4::      Problems installing AUC TeX
-* Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
-* Q4.7.6::      Is there a MatLab mode?
-* Q4.7.7::      Can I edit files on other hosts?
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.1,  Next: Q4.0.2,  Prev: Subsystems,  Up: Subsystems
-
-4.0: Reading Mail with VM
-=========================
-
-Q4.0.1: How do I set up VM to retrieve mail from a remote site using POP?
--------------------------------------------------------------------------
-
-Use `vm-spool-files', like this for example:
-
-     (setq vm-spool-files '("/var/spool/mail/wing"
-                            "netcom23.netcom.com:110:pass:wing:MYPASS"))
-
-   Of course substitute your actual password for MYPASS.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.2,  Next: Q4.0.3,  Prev: Q4.0.1,  Up: Subsystems
-
-Q4.0.2: How do I get VM to filter mail for me?
-----------------------------------------------
-
-One possibility is to use procmail to split your mail before it gets to
-VM.  I prefer this personally, since there are many strange and
-wonderful things one can do with procmail.  Procmail may be found at
-`ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/'.
-
-   Also see the Mail Filtering FAQ at:
-`ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq'.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.3,  Next: Q4.0.4,  Prev: Q4.0.2,  Up: Subsystems
-
-Q4.0.3: How can I get VM to automatically check for new mail?
--------------------------------------------------------------
-
-John Turner <turner@lanl.gov> writes:
-
-     Use the following:
-
-          (setq vm-auto-get-new-mail 60)
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.4,  Next: Q4.0.5,  Prev: Q4.0.3,  Up: Subsystems
-
-Q4.0.4: [This question intentionally left blank]
-------------------------------------------------
-
-Obsolete question, left blank to avoid renumbering.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.5,  Next: Q4.0.6,  Prev: Q4.0.4,  Up: Subsystems
-
-Q4.0.5: How do I get my outgoing mail archived?
------------------------------------------------
-
-     (setq mail-archive-file-name "~/outbox")
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.6,  Next: Q4.0.7,  Prev: Q4.0.5,  Up: Subsystems
-
-Q4.0.6: I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
----------------------------------------------------------------------------------------------------------------------
-
-Set `vm-reply-ignored-addresses' to a list, like
-
-     (setq vm-reply-ignored-addresses
-           '("wing@nuspl@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
-             "wing@netcom.com" "wing@xemacs.org"))
-
-   Note that each string is a regular expression.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.7,  Next: Q4.0.8,  Prev: Q4.0.6,  Up: Subsystems
-
-Q4.0.7: Is there a mailing list or FAQ for VM?
-----------------------------------------------
-
-A FAQ for VM exists at `http://www.wonderworks.com/vm/FAQ.html'.
-
-   VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.8,  Next: Q4.0.9,  Prev: Q4.0.7,  Up: Subsystems
-
-Q4.0.8: Remote mail reading with VM.
-------------------------------------
-
-My mailbox lives at the office on a big honkin server.  My regular INBOX
-lives on my honkin desktop machine.  I now can PPP to the office from
-home which is far from honking...  I'd like to be able to read mail at
-home without storing it here and I'd like to use xemacs and VM at
-home...  Is there a recommended setup?
-
-   Joseph J. Nuspl Jr. <nuspl@nvwls.cc.purdue.edu> writes:
-
-     There are several ways to do this.
-
-       1. Set your display to your home machine and run dxpc or one of
-          the other X compressors.
-
-       2. NFS mount your desktop machine on your home machine and
-          modify your pop command on your home machine to rsh to your
-          desktop machine and actually do the pop get's.
-
-       3. Run a POP server on your desktop machine as well and do a
-          sort of two tiered POP get.
-
-   William Perry <wmperry@monolith.spry.com> adds:
-
-     Or you could run a pop script periodically on your desktop
-     machine, and just use ange-ftp or NFS to get to your mailbox.  I
-     used to do this all the time back at IU.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.9,  Next: Q4.0.10,  Prev: Q4.0.8,  Up: Subsystems
-
-Q4.0.9: rmail or VM gets an error incorporating new mail.
----------------------------------------------------------
-
-Quoting the XEmacs PROBLEMS file:
-
-     rmail and VM get new mail from `/usr/spool/mail/$USER' using a
-     program called `movemail'.  This program interlocks with
-     `/bin/mail' using the protocol defined by `/bin/mail'.
-
-     There are two different protocols in general use.  One of them
-     uses the `flock' system call.  The other involves creating a lock
-     file; `movemail' must be able to write in `/usr/spool/mail' in
-     order to do this.  You control which one is used by defining, or
-     not defining, the macro `MAIL_USE_FLOCK' in `config.h' or the m-
-     or s- file it includes.
-
-     *IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
-     SYSTEM, YOU CAN LOSE MAIL!*
-
-     If your system uses the lock file protocol, and fascist
-     restrictions prevent ordinary users from writing the lock files in
-     `/usr/spool/mail', you may need to make `movemail' setgid to a
-     suitable group such as `mail'.  You can use these commands (as
-     root):
-
-          chgrp mail movemail
-          chmod 2755 movemail
-
-     If your system uses the lock file protocol, and fascist
-     restrictions prevent ordinary users from writing the lock files in
-     `/usr/spool/mail', you may need to make `movemail' setgid to a
-     suitable group such as `mail'.  To do this, use the following
-     commands (as root) after doing the make install.
-
-          chgrp mail movemail
-          chmod 2755 movemail
-
-     Installation normally copies movemail from the build directory to
-     an installation directory which is usually under `/usr/local/lib'.
-     The installed copy of `movemail' is usually in the directory
-     `/usr/local/lib/emacs/VERSION/TARGET'.  You must change the group
-     and mode of the installed copy; changing the group and mode of the
-     build directory copy is ineffective.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.10,  Next: Q4.0.11,  Prev: Q4.0.9,  Up: Subsystems
-
-Q4.0.10: How do I make VM stay in a single frame?
--------------------------------------------------
-
-John.John S Cooper <Cooper@Eng.Sun.COM> writes:
-
-                                                  ; Don't use multiple frames
-          (setq vm-frame-per-composition nil)
-          (setq vm-frame-per-folder nil)
-          (setq vm-frame-per-edit nil)
-          (setq vm-frame-per-summary nil)
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.11,  Next: Q4.0.12,  Prev: Q4.0.10,  Up: Subsystems
-
-Q4.0.11: How do I make VM or mh-e display graphical smilies?
-------------------------------------------------------------
-
-For mh-e use the following:
-
-     (add-hook 'mh-show-mode-hook '(lambda ()
-                                     (smiley-region (point-min)
-                                                    (point-max))))
-
-   WJCarpenter <bill@carpenter.ORG> writes: For VM use the following:
-            (autoload 'smiley-region "smiley" nil t)
-            (add-hook 'vm-select-message-hook
-                      '(lambda ()
-                         (smiley-region (point-min)
-                                        (point-max))))
-
-   For tm use the following:
-     (autoload 'smiley-buffer "smiley" nil t)
-     (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.12,  Next: Q4.1.1,  Prev: Q4.0.11,  Up: Subsystems
-
-Q4.0.12: Customization of VM not covered in the manual, or here.
-----------------------------------------------------------------
-
-giacomo boffi <boffi@hp735.stru.polimi.it> writes:
-
-     The meta-answer is to look into the file `vm-vars.el', in the vm
-     directory of the lisp library.
-
-     `vm-vars.el' contains, initializes and carefully describes, with
-     examples of usage, the plethora of user options that _fully_
-     control VM's behavior.
-
-     Enter vm-vars, `forward-search' for toolbar, find the variables
-     that control the toolbar placement, appearance, existence, copy to
-     your `init.el'/`.emacs' or `.vm' and modify according to the
-     detailed instructions.
-
-     The above also applies to all the various features of VM: search
-     for some keywords, maybe the first you conjure isn't appropriate,
-     find the appropriate variables, copy and experiment.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.1.1,  Next: Q4.1.2,  Prev: Q4.0.12,  Up: Subsystems
-
-4.1: Web browsing with W3
-=========================
-
-Q4.1.1: What is W3?
--------------------
-
-W3 is an advanced graphical browser written in Emacs lisp that runs on
-XEmacs.  It has full support for cascaded style sheets, and more...
-
-   It has a home web page at
-`http://www.cs.indiana.edu/elisp/w3/docs.html'.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.1.2,  Next: Q4.1.3,  Prev: Q4.1.1,  Up: Subsystems
-
-Q4.1.2: How do I run W3 from behind a firewall?
------------------------------------------------
-
-There is a long, well-written, detailed section in the W3 manual that
-describes how to do this.  Look in the section entitled "Firewalls".
-
-\1f
-File: xemacs-faq.info,  Node: Q4.1.3,  Next: Q4.2.1,  Prev: Q4.1.2,  Up: Subsystems
-
-Q4.1.3: Is it true that W3 supports style sheets and tables?
-------------------------------------------------------------
-
-Yes, and much more.  W3, as distributed with the latest XEmacs is a
-full-featured web browser.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.2.1,  Next: Q4.2.2,  Prev: Q4.1.3,  Up: Subsystems
-
-4.2: Reading Netnews and Mail with Gnus
-=======================================
-
-Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
---------------------------------------------------------------------------------
-
-The Gnus numbering issues are not meant for mere mortals to know them.
-If you feel you _must_ enter the muddy waters of Gnus, visit the
-excellent FAQ, maintained by Justin Sheehy, at:
-
-     `http://www.ccs.neu.edu/software/contrib/gnus/'
-
-   See also Gnus home page
-     `http://www.gnus.org/'
-
-\1f
-File: xemacs-faq.info,  Node: Q4.2.2,  Next: Q4.2.3,  Prev: Q4.2.1,  Up: Subsystems
-
-Q4.2.2: This question intentionally left blank.
------------------------------------------------
-
-Obsolete question, left blank to avoid renumbering.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.2.3,  Next: Q4.2.4,  Prev: Q4.2.2,  Up: Subsystems
-
-Q4.2.3: How do I make Gnus stay within a single frame?
-------------------------------------------------------
-
-The toolbar code to start Gnus opens the new frame--and it's a feature
-rather than a bug.  If you don't like it, but would still like to click
-on the seemly icon, use the following code:
-
-     (defun toolbar-news ()
-       (gnus))
-
-   It will redefine the callback function of the icon to just call
-`gnus', without all the fancy frame stuff.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.2.4,  Next: Q4.3.1,  Prev: Q4.2.3,  Up: Subsystems
-
-Q4.2.4: How do I customize the From: line?
-------------------------------------------
-
-How do I change the `From:' line?  I have set gnus-user-from-line to
-     Gail Gurman <gail.gurman@sybase.com>
-    , but XEmacs Gnus doesn't use it. Instead it uses
-     Gail Mara Gurman <gailg@deall>
- and then complains that it's incorrect. Also, as you perhaps can see,
-my Message-ID is screwy. How can I change that?
-
-Lars Magne Ingebrigtsen <larsi@ifi.uio.no> writes:
-
-     Set `user-mail-address' to `gail.gurman@sybase.com' or
-     `mail-host-address' to `sybase.com'.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.3.1,  Next: Q4.3.2,  Prev: Q4.2.4,  Up: Subsystems
-
-4.3: Other Mail & News
-======================
-
-Q4.3.1: How can I read and/or compose MIME messages?
-----------------------------------------------------
-
-VM supports MIME natively.
-
-   You probably want to use the Tools for MIME (tm).  *Note Q4.3.2::,
-for details.
-
-   Trey Jackson <trey@cs.berkeley.edu> has an Emacs & MIME web page at
-`http://bmrc.berkeley.edu/~trey/emacs/mime.html'.
-
-   Another possibility is RMIME.  You may find RMIME at
-`http://www.cinti.net/~rmoody/rmime/index.html'.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.3.2,  Next: Q4.3.3,  Prev: Q4.3.1,  Up: Subsystems
-
-Q4.3.2: What is TM and where do I get it?
------------------------------------------
-
-TM stands for "Tools for MIME" and not Tiny MIME.  TM integrates with
-all major XEmacs packages like Gnus (all flavors), VM, MH-E, and
-mailcrypt.  It provides totally transparent and trouble-free MIME
-support.  When appropriate a message will be decoded in place in an
-XEmacs buffer.
-
-   TM now comes as a package with XEmacs 19.16 and XEmacs 20.2.
-
-   TM was written by MORIOKA Tomohiko <morioka@jaist.ac.jp> and
-KOBAYASHI Shuhei <shuhei-k@jaist.ac.jp>.
-
-   It is based on the work of UMEDA Masanobu
-<umerin@mse.kyutech.ac.jp>, the original writer of GNUS.
-
-   The following information is from the `README':
-
-   "tm" is a MIME package for GNU Emacs.  tm has following functions:
-
-   * MIME style multilingual header.
-
-   * MIME message viewer (mime/viewer-mode).
-
-   * MIME message composer (mime/editor-mode).
-
-   * MIME extenders for mh-e, GNUS, RMAIL and VM.
-
-   tm is available from following anonymous ftp sites:
-   * `ftp://ftp.unicamp.br/pub/mail/mime/tm/' (Brasil).
-
-   * `ftp://ftp.th-darmstadt.de/pub/editors/GNU-Emacs/lisp/mime/'
-     (Germany).
-
-   * `ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/'
-     (Germany).
-
-   Don't let the installation procedure & instructions stop you from
-trying this package out--it's much simpler than it looks, and once
-installed, trivial to use.
-
-   Steve Youngs <youngs@xemacs.org> writes:
-
-     All the major Emacs Lisp based MUAs (Gnus, MH-E, and VM) all do
-     their own thing when it comes to MIME so you won't need TM to get
-     MIME support in these packages.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.3.3,  Next: Q4.3.4,  Prev: Q4.3.2,  Up: Subsystems
-
-Q4.3.3: Why isn't this `movemail' program working?
---------------------------------------------------
-
-Ben Wing <ben@xemacs.org> writes:
-
-     It wasn't chown'ed/chmod'd correctly.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.3.4,  Next: Q4.3.5,  Prev: Q4.3.3,  Up: Subsystems
-
-Q4.3.4: Movemail is also distributed by Netscape?  Can that cause problems?
----------------------------------------------------------------------------
-
-Steve Baur <steve@xemacs.org> writes:
-
-     Yes.  Always use the movemail installed with your XEmacs.  Failure
-     to do so can result in lost mail.
-
-   Please refer to Jamie Zawinski's <jwz@jwz.org> notes at
-`http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/movemail.html'.
-In particular, this document will show you how to make Netscape use the
-version of movemail configured for your system by the person who built
-XEmacs.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.3.5,  Next: Q4.4.1,  Prev: Q4.3.4,  Up: Subsystems
-
-Q4.3.5: Where do I find pstogif (required by tm)?
--------------------------------------------------
-
-pstogif is part of the latex2html package.
-
-   Jan Vroonhof <vroonhof@math.ethz.ch> writes:
-
-   latex2html is best found at the CTAN hosts and their mirrors in
-`tex-archive/support/latex2html'.
-
-   CTAN hosts are:
-
-   * `ftp://ftp.tex.ac.uk/tex-archive/support/latex2html/'.
-
-   * `ftp://ftp.dante.de/tex-archive/support/latex2html/'.
-
-   There is a good mirror at ftp.cdrom.com;
-`ftp://ftp.cdrom.com/pub/tex/ctan/support/latex2html/'.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.4.1,  Next: Q4.4.2,  Prev: Q4.3.5,  Up: Subsystems
-
-4.4: Sparcworks, EOS, and WorkShop
-==================================
-
-Q4.4.1: What is SPARCworks, EOS, and WorkShop?
-----------------------------------------------
-
-John Turner <turner@lanl.gov> writes:
-
-     SPARCworks is SunSoft's development environment, comprising
-     compilers (C, C++, FORTRAN 77, Fortran 90, Ada, and Pascal), a
-     debugger, and other tools such as TeamWare (for configuration
-     management), MakeTool, etc.
-
-   See `http://www.sun.com/software/Developer-products/' for more info.
-
-   EOS stands for "Era on SPARCworks", but I don't know what Era stands
-for.
-
-   EOS is the integration of XEmacs with the SPARCworks debugger.  It
-allows one to use an XEmacs frame to view code (complete with
-fontification, etc.), set breakpoints, print variables, etc., while
-using the SPARCworks debugger.  It works very well and I use it all the
-time.
-
-   Chuck Thompson <cthomp@xemacs.org> writes:
-
-     Era stood for "Emacs Rewritten Again".  It was what we were
-     calling the modified version of Lucid Emacs for Sun when I was
-     dragged, er, allowed to work on this wonderful editor.
-
-   Martin Buchholz <martin@xemacs.org> writes:
-
-     EOS is being replaced with a new graphical development environment
-     called Sun WorkShop, which is currently (07/96) in Alpha Test.
-     For more details, check out
-     `http://www.sun.com/software/Products/Developer-products'.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.4.2,  Next: Q4.5.1,  Prev: Q4.4.1,  Up: Subsystems
-
-Q4.4.2: How do I start the Sun Workshop support in XEmacs 21?
--------------------------------------------------------------
-
-Add the switch --with-workshop to the configure command when building
-XEmacs and put the following in one of your startup files (e.g.
-site-start.el or .emacs):
-
-     (when (featurep 'tooltalk)
-       (load "tooltalk-macros")
-       (load "tooltalk-util")
-       (load "tooltalk-init"))
-     (when (featurep 'sparcworks)
-       (load "sunpro-init")
-       (load "ring")
-       (load "comint")
-       (load "annotations")
-       (sunpro-startup))
-
-   If you are not using the latest Workshop (5.0) you have to apply the
-following patch:
-
---- /opt/SUNWspro/lib/eserve.el.ORIG    Fri May 14 15:23:26 1999
-+++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999
-@@ -42,7 +42,7 @@
- (defvar running-xemacs nil "t if we're running XEmacs")
- (defvar running-emacs  nil "t if we're running GNU Emacs 19")
-
--(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
-+(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
-     (setq running-xemacs t)
-     (setq running-emacs  t))
-
-\1f
-File: xemacs-faq.info,  Node: Q4.5.1,  Next: Q4.6.1,  Prev: Q4.4.2,  Up: Subsystems
-
-4.5: Energize
-=============
-
-Q4.5.1: What is/was Energize?
------------------------------
-
-David N Gray <gray@meteor.harlequin.com> writes:
-
-     The files in `lisp/energize' are to enable Emacs to interface with
-     the "Energize Programming System", a C and C++ development
-     environment, which was a product of Lucid, Inc.  Tragically, Lucid
-     went out of business in 1994, so although Energize is still a
-     great system, if you don't already have it, there isn't any way to
-     get it now.  (Unless you happen to be in Japan; INS Engineering
-     may still be selling it there.  Tartan bought the rights to sell
-     it in the rest of the world, but never did so.)
-
-\1f
-File: xemacs-faq.info,  Node: Q4.6.1,  Next: Q4.7.1,  Prev: Q4.5.1,  Up: Subsystems
-
-4.6: Infodock
-=============
-
-Q4.6.1: What is Infodock?
--------------------------
-
-InfoDock (http://sourceforge.net/projects/infodock/) is an integrated
-productivity toolset, mainly aimed at technical people, hosted at
-SourceForge.
-
-   InfoDock is built atop the XEmacs variant of GNU Emacs and so has
-all of the power of Emacs, but with an easier to use and more
-comprehensive menu-based user interface.  The bottom portion of this
-text describes how it differs from XEmacs and GNU Emacs from the Free
-Software Foundation.
-
-   InfoDock is aimed at people who want a free, turn-key productivity
-environment.  Although InfoDock is customizable, it is not intended for
-people who like basic versions of Emacs which need to be customized
-extensively for local use; standard Emacs distributions are better for
-such uses.  InfoDock is for those people who want a complete,
-pre-customized environment in one package, which they need not touch
-more than once or twice a year to update to new revisions.
-
-   InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX,
-and Intel Linux systems.  It is intended for use on a color display,
-although most features will work on monochrome monitors.  Simply unpack
-InfoDock according to the instructions in the ID-INSTALL file and you
-are ready to run.
-
-   The InfoDock Manual is concise, yet sufficient as a user guide for
-users who have never used an Emacs-type editor before.  For users who
-are already familiar with Emacs, it supplements the information in the
-GNU Emacs Manual.
-
-   InfoDock menus are much more extensive and more mature than standard
-Emacs menus.  Each menu offers a `Manual' item which displays
-documentation associated with the menu's functions.
-
-Four types of menubars are provided:
-  1. An extensive menubar providing access to global InfoDock commands.
-
-  2. Mode-specific menubars tailored to the current major mode.
-
-  3. A simple menubar for basic editing to help novices get started
-     with InfoDock.
-
-  4. The standard XEmacs menubar.
-
-   Most modes also include mode-specific popup menus.  Additionally,
-region and rectangle popup menus are included.
-
-   `Hyperbole', the everyday information manager, is a core part of
-InfoDock.  This provides context-sensitive mouse keys, a rolodex-type
-contact manager, programmable hypertext buttons, and an autonumbered
-outliner with embedded hyperlink anchors.
-
-   The `OO-Browser', a multi-language object-oriented code browser, is a
-standard part of InfoDock.
-
-   InfoDock saves a more extensive set of user options than other Emacs
-versions.
-
-   InfoDock inserts a useful file header in many file types, showing the
-author, summary, and last modification time of each file.  A summary
-program can then be used to summarize all of the files in a directory,
-for easy MANIFEST file creation.
-
-   Your working set of buffers is automatically saved and restored (if
-you answer yes to a prompt) between InfoDock sessions.
-
-   Refined color choices for code highlighting are provided for both
-dark and light background display frames.
-
-   The `C-z' key prefix performs frame-based commands which parallel the
-`C-x' key prefix for window-based commands.
-
-   The Smart Menu system is included for producing command menus on dumb
-terminals.
-
-   Lisp libraries are better categorized according to function.
-
-   Extensions and improvements to many areas of Emacs are included,
-such as: paragraph filling, mail reading with Rmail, shell handling,
-outlining, code highlighting and browsing, and man page browsing.
-
-   InfoDock questions, answers and discussion should go to the mail list
-<infodock@infodock.com>.  Use <infodock-request@infodock.com> to be
-added or removed from the list.  Always include your InfoDock version
-number when sending help requests.
-
-   InfoDock is available across the Internet via anonymous FTP.  To get
-it, first move to a directory into which you want the InfoDock archive
-files placed.  We will call this <DIST-DIR>.
-
-        cd <DIST-DIR>
-
-   Ftp to ftp.xemacs.org  (Internet Host ID = 128.174.252.16):
-
-        prompt> ftp ftp.xemacs.org
-
-   Login as `anonymous' with your own <user-id>@<site-name> as a
-password.
-
-        Name (ftp.xemacs.org): anonymous
-        331 Guest login ok, send your complete e-mail address as password.
-        Password: -<your-user-id>@<your-domain>
-        230 Guest login ok, access restrictions apply.
-
-   Move to the location of the InfoDock archives:
-
-        ftp> cd pub/infodock
-
-   Set your transfer mode to binary:
-
-        ftp> bin
-        200 Type set to I.
-
-   Turn off prompting:
-
-        ftp> prompt
-        Interactive mode off.
-
-   Retrieve the InfoDock archives that you want, either by using a `get
-<file>' for each file you want or by using the following to get a
-complete distribution, including all binaries:
-
-        ftp> mget ID-INSTALL
-        ftp> mget id-*
-
-   Close the FTP connection:
-
-        ftp> quit
-        221 Goodbye.
-
-   Read the `ID-INSTALL' file which you just retrieved for step-by-step
-installation instructions.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.7.1,  Next: Q4.7.2,  Prev: Q4.6.1,  Up: Subsystems
-
-4.7: Other Unbundled Packages
-=============================
-
-Q4.7.1: What is AUC TeX?  Where do you get it?
-----------------------------------------------
-
-AUC TeX is a package written by Per Abrahamsen <abraham@dina.kvl.dk>.
-Starting with XEmacs 19.16, AUC TeX is bundled with XEmacs.  The
-following information is from the `README' and website.
-
-   AUC TeX is an extensible package that supports writing and formatting
-TeX files for most variants of GNU Emacs. Many different macro packages
-are supported, including AMS TeX, LaTeX, and TeXinfo.
-
-   The most recent version is always available by ftp at
-`ftp://sunsite.dk/packages/auctex/auctex.tar.gz'.
-
-   In case you don't have access to anonymous ftp, you can get it by an
-email request to <ftpmail@decwrl.dec.com>.
-
-   WWW users may want to check out the AUC TeX page at
-`http://sunsite.dk/auctex/'.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.7.2,  Next: Q4.7.3,  Prev: Q4.7.1,  Up: Subsystems
-
-Q4.7.2: Are there any Emacs Lisp Spreadsheets?
-----------------------------------------------
-
-Yes.  Check out "dismal" (which stands for Dis' Mode Ain't Lotus) at
-`ftp://cs.nyu.edu/pub/local/fox/dismal/'.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.7.3,  Next: Q4.7.4,  Prev: Q4.7.2,  Up: Subsystems
-
-Q4.7.3: [This question intentionally left blank]
-------------------------------------------------
-
-\1f
-File: xemacs-faq.info,  Node: Q4.7.4,  Next: Q4.7.5,  Prev: Q4.7.3,  Up: Subsystems
-
-Q4.7.4: Problems installing AUC TeX.
-------------------------------------
-
-Jan Vroonhof <vroonhof@math.ethz.ch> writes:
-
-     AUC TeX works fine on both stock Emacs and XEmacs has been doing
-     so for a very very long time. This is mostly due to the work of
-     Per Abrahamsen <abraham@dina.kvl.dk> (clap clap) in particular his
-     `easymenu' package.  Which leads to what is probably the problem...
-
-   Most problems with AUC TeX are one of two things:
-
-   * The TeX-lisp-directory in `tex-site.el' and the makefile don't
-     match.
-
-     Fix: make sure you configure AUC TeX properly *before* installing.
-
-   * You have an old version of easymenu.el in your path.
-
-     Fix: use `locate-library' and remove old versions to make sure it
-     *only* finds the one that came with XEmacs.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.7.5,  Next: Q4.7.6,  Prev: Q4.7.4,  Up: Subsystems
-
-Q4.7.5: Is there a reason for an Emacs package not to be included in XEmacs?
-----------------------------------------------------------------------------
-
-The reason for an Emacs package not to be included in XEmacs is usually
-one or more of the following:
-
-  1. The package has not been ported to XEmacs.  This will typically
-     happen when it uses GNU-Emacs-specific features, which make it
-     fail under XEmacs.
-
-     Porting a package to XEmacs can range from a trivial amount of
-     change to a partial or full rewrite.  Fortunately, the authors of
-     modern packages usually choose to support both Emacsen themselves.
-
-  2. The package has been decided not to be appropriate for XEmacs.  It
-     may have an equivalent or better replacement within XEmacs, in
-     which case the developers may choose not to burden themselves with
-     supporting an additional package.
-
-     Each package bundled with XEmacs means more work for the
-     maintainers, whether they want it or not.  If you are ready to
-     take over the maintenance responsibilities for the package you
-     port, be sure to say so--we will more likely include it.
-
-  3. The package simply hasn't been noted by the XEmacs development.  If
-     that's the case, the messages like yours are very useful for
-     attracting our attention.
-
-  4. The package was noted by the developers, but they simply haven't
-     yet gotten around to including/porting it.  Wait for the next
-     release or, even better, offer your help.  It will be gladly
-     accepted and appreciated.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.7.6,  Next: Q4.7.7,  Prev: Q4.7.5,  Up: Subsystems
-
-Q4.7.5: Is there a MatLab mode?
--------------------------------
-
-Yes, a matlab mode and other items are available at the MathWorks'
-emacs_add_ons ftp directory
-(ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons).
-
-\1f
-File: xemacs-faq.info,  Node: Q4.7.7,  Prev: Q4.7.6,  Up: Subsystems
-
-Q4.7.7: Can I edit files on other hosts?
-----------------------------------------
-
-Yes.  Of course XEmacs can use any network file system (such as NFS or
-Windows file sharing) you have available, and includes some
-optimizations and safety features appropriate to those environments.
-
-   It is also possible to transparently edit files via FTP, ssh, or
-rsh.  That is, XEmacs makes a local copy using the transport in the
-background, and automatically refreshes the remote original from that
-copy when you save it.  XEmacs also is capable of doing file system
-manipulations like creating and removing directories and files.  The
-FTP interface is provided by the standard `efs' package *Note EFS:
-(efs)Top.  The ssh/rsh interface is provided by the optional `tramp'
-package *Note TRAMP: (tramp)Top.
-
-\1f
-File: xemacs-faq.info,  Node: Miscellaneous,  Next: MS Windows,  Prev: Subsystems,  Up: Top
-
-5 The Miscellaneous Stuff
-*************************
-
-This is part 5 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to anything that doesn't fit neatly into the other
-sections.
-
-* Menu:
-
-Major & Minor Modes:
-* Q5.0.1::      How can I do source code highlighting using font-lock?
-* Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
-* Q5.0.3::      How do I get `More' Syntax Highlighting on by default?
-* Q5.0.4::      How can I enable auto-indent and/or Filladapt?
-* Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
-* Q5.0.6::      How do I start up a second shell buffer?
-* Q5.0.7::      Telnet from shell filters too much.
-* Q5.0.8::      Why does edt emulation not work?
-* Q5.0.9::      How can I emulate VI and use it as my default mode?
-* Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     [This question intentionally left blank]
-* Q5.0.12::     How do I disable gnuserv from opening a new frame?
-* Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
-* Q5.0.14::     Strange things are happening in Shell Mode.
-* Q5.0.15::     Where do I get the latest CC Mode?
-* Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
-* Q5.0.17::     How can I get two instances of info?
-* Q5.0.18::     [This question intentionally left blank]
-* Q5.0.19::     Is there something better than LaTeX mode?
-* Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
-
-Emacs Lisp Programming Techniques:
-* Q5.1.1::      The difference in key sequences between XEmacs and GNU Emacs?
-* Q5.1.2::      Can I generate "fake" keyboard events?
-* Q5.1.3::      Could you explain `read-kbd-macro' in more detail?
-* Q5.1.4::      What is the performance hit of `let'?
-* Q5.1.5::      What is the recommended use of `setq'?
-* Q5.1.6::      What is the typical misuse of `setq'?
-* Q5.1.7::      I like the `do' form of cl, does it slow things down?
-* Q5.1.8::      I like recursion, does it slow things down?
-* Q5.1.9::      How do I put a glyph as annotation in a buffer?
-* Q5.1.10::     `map-extents' won't traverse all of my extents!
-* Q5.1.11::     My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
-
-Sound:
-* Q5.2.1::      How do I turn off the sound?
-* Q5.2.2::      How do I get funky sounds instead of a boring beep?
-* Q5.2.3::      What's NAS, how do I get it?
-* Q5.2.4::      Sunsite sounds don't play.
-
-Miscellaneous:
-* Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
-* Q5.3.2::      [This question intentionally left blank]
-* Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
-* Q5.3.4::      Getting M-x lpr to work with postscript printer.
-* Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
-* Q5.3.6::      [This question intentionally left blank]
-* Q5.3.7::      Can I have the end of the buffer delimited in some way?
-* Q5.3.8::      How do I insert today's date into a buffer?
-* Q5.3.9::      Are only certain syntactic character classes available for abbrevs?
-* Q5.3.10::     How can I get those oh-so-neat X-Face lines?
-* Q5.3.11::     How do I add new Info directories?
-* Q5.3.12::     What do I need to change to make printing work?
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.1,  Next: Q5.0.2,  Prev: Miscellaneous,  Up: Miscellaneous
-
-5.0: Major & Minor Modes
-========================
-
-Q5.0.1: How can I do source code highlighting using font-lock?
---------------------------------------------------------------
-
-For most modes, font-lock is already set up and just needs to be turned
-on.  This can be done by adding the line:
-
-     (require 'font-lock)
-
-   to your `init.el'/`.emacs'. (You can turn it on for the current
-buffer and session only by `M-x font-lock-mode'.) See the file
-`etc/sample.init.el' (`etc/sample.emacs' in XEmacs versions prior to
-21.4) for more information.
-
-   See also `Syntax Highlighting' from the `Options' menu.  Remember to
-save options.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.2,  Next: Q5.0.3,  Prev: Q5.0.1,  Up: Miscellaneous
-
-Q5.0.2: I do not like cc-mode.  How do I use the old c-mode?
-------------------------------------------------------------
-
-Well, first off, consider if you really want to do this.  cc-mode is
-much more powerful than the old c-mode.  If you're having trouble
-getting your old offsets to work, try using `c-set-offset' instead.
-You might also consider using the package `cc-compat'.
-
-   But, if you still insist, add the following lines to your
-`init.el'/`.emacs':
-
-     (fmakunbound 'c-mode)
-     (makunbound 'c-mode-map)
-     (fmakunbound 'c++-mode)
-     (makunbound 'c++-mode-map)
-     (makunbound 'c-style-alist)
-     (load-library "old-c-mode")
-     (load-library "old-c++-mode")
-
-   This must be done before any other reference is made to either
-c-mode or c++-mode.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.3,  Next: Q5.0.4,  Prev: Q5.0.2,  Up: Miscellaneous
-
-Q5.0.3: How do I get `More' Syntax Highlighting on by default?
---------------------------------------------------------------
-
-Use the following code in your `init.el'/`.emacs':
-
-     (setq-default font-lock-maximum-decoration t)
-
-   See also `Syntax Highlighting' from the `Options' menu.  Remember to
-save options.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.4,  Next: Q5.0.5,  Prev: Q5.0.3,  Up: Miscellaneous
-
-Q5.0.4: How can I enable auto-indent and/or Filladapt?
-------------------------------------------------------
-
-Put the following line in your `init.el'/`.emacs':
-
-     (setq indent-line-function 'indent-relative-maybe)
-
-   If you want to get fancy, try the `filladapt' package available
-standard with XEmacs.  Put this into your `init.el'/`.emacs':
-
-     (require 'filladapt)
-     (setq-default filladapt-mode t)
-     (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
-
-   This will enable Filladapt for all modes except C mode, where it
-doesn't work well.  To turn Filladapt on only in particular major
-modes, remove the `(setq-default ...)' line and use
-`turn-on-filladapt-mode', like this:
-
-     (add-hook 'text-mode-hook 'turn-on-filladapt-mode)
-
-   You can customize filling and adaptive filling with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Editing->Fill->Fill...' or type `M-x customize
-<RET> fill <RET>'.
-
-   Note that well-behaving text-lookalike modes will run
-`text-mode-hook' by default (e.g. that's what Message does).  For the
-nasty ones, you'll have to provide the `add-hook's yourself.
-
-   Please note that the `fa-extras' package is no longer useful.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.5,  Next: Q5.0.6,  Prev: Q5.0.4,  Up: Miscellaneous
-
-Q5.0.5: How can I get XEmacs to come up in text/auto-fill mode by default?
---------------------------------------------------------------------------
-
-Try the following lisp in your `init.el'/`.emacs':
-
-     (setq default-major-mode 'text-mode)
-     (setq text-mode-hook 'turn-on-auto-fill)
-
-   *WARNING*: note that changing the value of `default-major-mode' from
-`fundamental-mode' can break a large amount of built-in code that
-expects newly created buffers to be in `fundamental-mode'.  (Changing
-from `fundamental-mode' to `text-mode' might not wreak too much havoc,
-but changing to something more exotic like a lisp-mode would break many
-Emacs packages).
-
-   Note that Emacs by default starts up in buffer `*scratch*' in
-`initial-major-mode', which defaults to `lisp-interaction-mode'. Thus
-adding the following form to your Emacs init file will cause the
-initial `*scratch*' buffer to be put into auto-fill'ed `text-mode':
-
-     (setq initial-major-mode
-           (lambda ()
-             (text-mode)
-             (turn-on-auto-fill)))
-
-   Note that after your init file is loaded, if
-`inhibit-startup-message' is `nil' (the default) and the startup buffer
-is `*scratch*' then the startup message will be inserted into
-`*scratch*'; it will be removed after a timeout by erasing the entire
-`*scratch*' buffer.  Keep in mind this default usage of `*scratch*' if
-you desire any prior manipulation of `*scratch*' from within your Emacs
-init file. In particular, anything you insert into `*scratch*' from
-your init file will be later erased. Also, if you change the mode of
-the `*scratch*' buffer, be sure that this will not interfere with
-possible later insertion of the startup message (e.g. if you put
-`*scratch*' into a nonstandard mode that has automatic font lock rules,
-then the startup message might get fontified in a strange foreign
-manner, e.g. as code in some programming language).
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.6,  Next: Q5.0.7,  Prev: Q5.0.5,  Up: Miscellaneous
-
-Q5.0.6: How do I start up a second shell buffer?
-------------------------------------------------
-
-In the `*shell*' buffer:
-
-     M-x rename-buffer <RET> *shell-1* <RET>
-     M-x shell RET
-
-   This will then start a second shell.  The key is that no buffer named
-`*shell*' can exist.  It might be preferable to use `M-x
-rename-uniquely' to rename the `*shell*' buffer instead of `M-x
-rename-buffer'.
-
-   Alternately, you can set the variable `shell-multiple-shells'.  If
-the value of this variable is non-nil, each time shell mode is invoked,
-a new shell is made
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.7,  Next: Q5.0.8,  Prev: Q5.0.6,  Up: Miscellaneous
-
-Q5.0.7: Telnet from shell filters too much
-------------------------------------------
-
-I'm using the Emacs `M-x shell' function, and I would like to invoke
-and use a telnet session within it.  Everything works fine except that
-now all `^M''s are filtered out by Emacs.  Fixes?
-
-   Use `M-x rsh' or `M-x telnet' to open remote sessions rather than
-doing rsh or telnet within the local shell buffer.  Starting with
-XEmacs-20.3 you can also use `M-x ssh' to open secure remote session if
-you have `ssh' installed.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.8,  Next: Q5.0.9,  Prev: Q5.0.7,  Up: Miscellaneous
-
-Q5.0.8: Why does edt emulation not work?
-----------------------------------------
-
-We don't know, but you can use tpu-edt emulation instead, which works
-fine and is a little fancier than the standard edt emulation.  To do
-this, add the following line to your `init.el'/`.emacs':
-
-     (tpu-edt)
-
-   If you don't want it to replace `C-h' with an edt-style help menu
-add this as well:
-
-     (global-set-key [(control h)] 'help-for-help)
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.9,  Next: Q5.0.10,  Prev: Q5.0.8,  Up: Miscellaneous
-
-Q5.0.9: How can I emulate VI and use it as my default mode?
------------------------------------------------------------
-
-Our recommended VI emulator is viper. To make viper-mode the default,
-add this to your `init.el'/`.emacs':
-
-     (viper-mode)
-
-   Michael Kifer <kifer@CS.SunySB.EDU> writes:
-
-     This should be added as close to the top of `init.el'/`.emacs' as
-     you can get it, otherwise some minor modes may not get viper-ized.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.10,  Next: Q5.0.11,  Prev: Q5.0.9,  Up: Miscellaneous
-
-Q5.0.10: [This question intentionally left blank]
--------------------------------------------------
-
-Obsolete question, left blank to avoid renumbering
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.11,  Next: Q5.0.12,  Prev: Q5.0.10,  Up: Miscellaneous
-
-Q5.0.11: [This question intentionally left blank]
--------------------------------------------------
-
-Obsolete question, left blank to avoid renumbering
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.12,  Next: Q5.0.13,  Prev: Q5.0.11,  Up: Miscellaneous
-
-Q5.0.12: How do I disable gnuserv from opening a new frame?
------------------------------------------------------------
-
-If you set the `gnuserv-frame' variable to the frame that should be
-used to display buffers that are pulled up, a new frame will not be
-created. For example, you could put
-
-     (setq gnuserv-frame (selected-frame))
-
-   early on in your `init.el'/`.emacs', to ensure that the first frame
-created is the one used for your gnuserv buffers.
-
-   There is an option to set the gnuserv target to the current frame.
-See `Options->Display->"Other Window" Location->Make Current Frame
-Gnuserv Target'
-
-   Starting with XEmacs-20.3 you can also change this with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...' or type
-`M-x customize <RET> gnuserv <RET>'.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.13,  Next: Q5.0.14,  Prev: Q5.0.12,  Up: Miscellaneous
-
-Q5.0.13: How do I start gnuserv so that each subsequent XEmacs is a client?
----------------------------------------------------------------------------
-
-Put the following in your `init.el'/`.emacs' file to start the server:
-
-     (gnuserv-start)
-
-   Start your first XEmacs as usual.  After that, you can do:
-
-     gnuclient randomfilename
-
-   from the command line to get your existing XEmacs process to open a
-new frame and visit randomfilename in that window. When you're done
-editing randomfilename, hit `C-x #' to kill the buffer and get rid of
-the frame.
-
-   See also man page of gnuclient.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.14,  Next: Q5.0.15,  Prev: Q5.0.13,  Up: Miscellaneous
-
-Q5.0.14: Strange things are happening in Shell Mode.
-----------------------------------------------------
-
-Sometimes (i.e. it's not repeatable, and I can't work out why it
-happens) when I'm typing into shell mode, I hit return and only a
-portion of the command is given to the shell, and a blank prompt is
-returned.  If I hit return again, the rest of the previous command is
-given to the shell.
-
-   Martin Buchholz <martin@xemacs.org> writes:
-
-     There is a known problem with interaction between `csh' and the
-     `filec' option and XEmacs.  You should add the following to your
-     `.cshrc':
-
-          if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.15,  Next: Q5.0.16,  Prev: Q5.0.14,  Up: Miscellaneous
-
-Q5.0.15: Where do I get the latest CC Mode?
--------------------------------------------
-
-Barry A. Warsaw <bwarsaw@cnri.reston.va.us> writes:
-
-     This can be had from `http://www.python.org/emacs/'.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.16,  Next: Q5.0.17,  Prev: Q5.0.15,  Up: Miscellaneous
-
-Q5.0.16: I find auto-show-mode disconcerting.  How do I turn it off?
---------------------------------------------------------------------
-
-`auto-show-mode' controls whether or not a horizontal scrollbar
-magically appears when a line is too long to be displayed.  This is
-enabled by default.  To turn it off, put the following in your
-`init.el'/`.emacs':
-
-     (setq auto-show-mode nil)
-     (setq-default auto-show-mode nil)
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.17,  Next: Q5.0.18,  Prev: Q5.0.16,  Up: Miscellaneous
-
-Q5.0.17: How can I get two instances of info?
----------------------------------------------
-
-Before 21.4, you can't.  The `info' package does not provide for
-multiple info buffers.  In 21.4, this should be fixed. #### how?
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.18,  Next: Q5.0.19,  Prev: Q5.0.17,  Up: Miscellaneous
-
-Q5.0.18: [This question intentionally left blank]
--------------------------------------------------
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.19,  Next: Q5.0.20,  Prev: Q5.0.18,  Up: Miscellaneous
-
-Q5.0.19: Is there something better than LaTeX mode?
----------------------------------------------------
-
-David Kastrup <dak@fsnif.neuroinformatik.ruhr-uni-bochum.de> writes:
-
-     The standard TeX modes leave much to be desired, and are somewhat
-     leniently maintained.  Serious TeX users use AUC TeX (*note
-     Q4.7.1::).
-
-\1f
-File: xemacs-faq.info,  Node: Q5.0.20,  Next: Q5.1.1,  Prev: Q5.0.19,  Up: Miscellaneous
-
-Q5.0.20: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
----------------------------------------------------------------------------------------------------------
-
-Jan Vroonhof <vroonhof@math.ethz.ch> writes:
-
-     Here is one of the solutions, we have this in a script called
-     `etc/editclient.sh'.
-           #!/bin/sh
-           if gnuclient -batch -eval t >/dev/null 2>&1
-           then
-             exec gnuclient ${1+"$@"}
-           else
-             xemacs -unmapped -f gnuserv-start &
-             until gnuclient -batch -eval t >/dev/null 2>&1
-             do
-                sleep 1
-             done
-             exec gnuclient ${1+"$@"}
-           fi
-
-     Note that there is a known problem when running XEmacs and
-     'gnuclient -nw' on the same TTY.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.1,  Next: Q5.1.2,  Prev: Q5.0.20,  Up: Miscellaneous
-
-5.1: Emacs Lisp Programming Techniques
-======================================
-
-Q5.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
------------------------------------------------------------------------------
-
-Erik Naggum <clerik@naggum.no> writes;
-
-     Emacs has a legacy of keyboards that produced characters with
-     modifier bits, and therefore map a variety of input systems into
-     this scheme even today.  XEmacs is instead optimized for X events.
-     This causes an incompatibility in the way key sequences are
-     specified, but both Emacs and XEmacs will accept a key sequence as
-     a vector of lists of modifiers that ends with a key, e.g., to bind
-     `M-C-a', you would say `[(meta control a)]' in both Emacsen.
-     XEmacs has an abbreviated form for a single key, just (meta
-     control a).  Emacs has an abbreviated form for the Control and the
-     Meta modifiers to string-characters (the ASCII characters), as in
-     `\M-\C-a'.  XEmacs users need to be aware that the abbreviated
-     form works only for one-character key sequences, while Emacs users
-     need to be aware that the string-character is rather limited.
-     Specifically, the string-character can accommodate only 256
-     different values, 128 of which have the Meta modifier and 128 of
-     which have not.  In each of these blocks, only 32 characters have
-     the Control modifier.  Whereas `[(meta control A)]' differs from
-     `[(meta control a)]' because the case differs, `\M-\C-a' and
-     `\M-\C-A' do not.  Programmers are advised to use the full common
-     form, both because it is more readable and less error-prone, and
-     because it is supported by both Emacsen.
-
-   Another (even safer) way to be sure of the key-sequences is to use
-the `read-kbd-macro' function, which takes a string like `C-c <up>',
-and converts it to the internal key representation of the Emacs you
-use.  The function is available both on XEmacs and GNU Emacs.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.2,  Next: Q5.1.3,  Prev: Q5.1.1,  Up: Miscellaneous
-
-Q5.1.2: Can I generate "fake" keyboard events?
-----------------------------------------------
-
-I wonder if there is an interactive function that can generate "fake"
-keyboard events.  This way, I could simply map them inside XEmacs.
-
-   This seems to work:
-
-     (defun cg--generate-char-event (ch)
-       "Generate an event, as if ch has been typed"
-       (dispatch-event (character-to-event ch)))
-     
-     ;;  Backspace and Delete stuff
-     (global-set-key [backspace]
-       (lambda () (interactive) (cg--generate-char-event 127)))
-     (global-set-key [unknown_keysym_0x4]
-       (lambda () (interactive) (cg--generate-char-event 4)))
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.3,  Next: Q5.1.4,  Prev: Q5.1.2,  Up: Miscellaneous
-
-Q5.1.3: Could you explain `read-kbd-macro' in more detail?
-----------------------------------------------------------
-
-The `read-kbd-macro' function returns the internal Emacs representation
-of a human-readable string (which is its argument).  Thus:
-
-     (read-kbd-macro "C-c C-a")
-     => [(control ?c) (control ?a)]
-     
-     (read-kbd-macro "C-c C-. <up>")
-     => [(control ?c) (control ?.) up]
-
-   In GNU Emacs the same forms will be evaluated to what GNU Emacs
-understands internally--the sequences `"\C-x\C-c"' and `[3 67108910
-up]', respectively.
-
-   The exact "human-readable" syntax is defined in the docstring of
-`edmacro-mode'.  I'll repeat it here, for completeness.
-
-     Format of keyboard macros during editing:
-
-     Text is divided into "words" separated by whitespace.  Except for
-     the words described below, the characters of each word go directly
-     as characters of the macro.  The whitespace that separates words is
-     ignored.  Whitespace in the macro must be written explicitly, as in
-     `foo <SPC> bar <RET>'.
-
-        * The special words `RET', `SPC', `TAB', `DEL', `LFD', `ESC',
-          and `NUL' represent special control characters.  The words
-          must be written in uppercase.
-
-        * A word in angle brackets, e.g., `<return>', `<down>', or
-          `<f1>', represents a function key.  (Note that in the standard
-          configuration, the function key `<return>' and the control key
-          <RET> are synonymous.)  You can use angle brackets on the
-          words <RET>, <SPC>, etc., but they are not required there.
-
-        * Keys can be written by their ASCII code, using a backslash
-          followed by up to six octal digits.  This is the only way to
-          represent keys with codes above \377.
-
-        * One or more prefixes `M-' (meta), `C-' (control), `S-'
-          (shift), `A-' (alt), `H-' (hyper), and `s-' (super) may
-          precede a character or key notation.  For function keys, the
-          prefixes may go inside or outside of the brackets: `C-<down>'
-          == `<C-down>'.  The prefixes may be written in any order:
-          `M-C-x' == `C-M-x'.
-
-          Prefixes are not allowed on multi-key words, e.g., `C-abc',
-          except that the Meta prefix is allowed on a sequence of
-          digits and optional minus sign: `M--123' == `M-- M-1 M-2 M-3'.
-
-        * The `^' notation for control characters also works: `^M' ==
-          `C-m'.
-
-        * Double angle brackets enclose command names: `<<next-line>>'
-          is shorthand for `M-x next-line <RET>'.
-
-        * Finally, `REM' or `;;' causes the rest of the line to be
-          ignored as a comment.
-
-     Any word may be prefixed by a multiplier in the form of a decimal
-     number and `*': `3*<right>' == `<right> <right> <right>', and
-     `10*foo' == `foofoofoofoofoofoofoofoofoofoo'.
-
-     Multiple text keys can normally be strung together to form a word,
-     but you may need to add whitespace if the word would look like one
-     of the above notations: `; ; ;' is a keyboard macro with three
-     semicolons, but `;;;' is a comment.  Likewise, `\ 1 2 3' is four
-     keys but `\123' is a single key written in octal, and `< right >'
-     is seven keys but `<right>' is a single function key.  When in
-     doubt, use whitespace.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.4,  Next: Q5.1.5,  Prev: Q5.1.3,  Up: Miscellaneous
-
-Q5.1.4: What is the performance hit of `let'?
----------------------------------------------
-
-In most cases, not noticeable.  Besides, there's no avoiding `let'--you
-have to bind your local variables, after all.  Some pose a question
-whether to nest `let's, or use one `let' per function.  I think because
-of clarity and maintenance (and possible future implementation),
-`let'-s should be used (nested) in a way to provide the clearest code.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.5,  Next: Q5.1.6,  Prev: Q5.1.4,  Up: Miscellaneous
-
-Q5.1.5: What is the recommended use of `setq'?
-----------------------------------------------
-
-   * Global variables
-
-     You will typically `defvar' your global variable to a default
-     value, and use `setq' to set it later.
-
-     It is never a good practice to `setq' user variables (like
-     `case-fold-search', etc.), as it ignores the user's choice
-     unconditionally.  Note that `defvar' doesn't change the value of a
-     variable if it was bound previously.  If you wish to change a
-     user-variable temporarily, use `let':
-
-          (let ((case-fold-search nil))
-            ...                                   ; code with searches that must be case-sensitive
-            ...)
-
-     You will notice the user-variables by their docstrings beginning
-     with an asterisk (a convention).
-
-   * Local variables
-
-     Bind them with `let', which will unbind them (or restore their
-     previous value, if they were bound) after exiting from the `let'
-     form.  Change the value of local variables with `setq' or whatever
-     you like (e.g. `incf', `setf' and such).  The `let' form can even
-     return one of its local variables.
-
-     Typical usage:
-
-          ;; iterate through the elements of the list returned by
-          ;; `hairy-function-that-returns-list'
-          (let ((l (hairy-function-that-returns-list)))
-            (while l
-              ... do something with (car l) ...
-              (setq l (cdr l))))
-
-     Another typical usage includes building a value simply to work
-     with it.
-
-          ;; Build the mode keymap out of the key-translation-alist
-          (let ((inbox (file-truename (expand-file-name box)))
-                (i 0))
-            ... code dealing with inbox ...
-            inbox)
-
-     This piece of code uses the local variable `inbox', which becomes
-     unbound (or regains old value) after exiting the form.  The form
-     also returns the value of `inbox', which can be reused, for
-     instance:
-
-          (setq foo-processed-inbox
-                (let .....))
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.6,  Next: Q5.1.7,  Prev: Q5.1.5,  Up: Miscellaneous
-
-Q5.1.6: What is the typical misuse of `setq' ?
-----------------------------------------------
-
-A typical misuse is probably `setq'ing a variable that was meant to be
-local.  Such a variable will remain bound forever, never to be
-garbage-collected.  For example, the code doing:
-
-     (defun my-function (whatever)
-       (setq a nil)
-       ... build a large list ...
-       ... and exit ...)
-
-   does a bad thing, as `a' will keep consuming memory, never to be
-unbound.  The correct thing is to do it like this:
-
-     (defun my-function (whatever)
-       (let (a)                              ; default initialization is to nil
-         ... build a large list ...
-         ... and exit, unbinding `a' in the process  ...)
-
-   Not only is this prettier syntactically, but it makes it possible for
-Emacs to garbage-collect the objects which `a' used to reference.
-
-   Note that even global variables should not be `setq'ed without
-`defvar'ing them first, because the byte-compiler issues warnings.  The
-reason for the warning is the following:
-
-     (defun flurgoze nil)                    ; ok, global internal variable
-     ...
-     
-     (setq flurghoze t)                      ; ops!  a typo, but semantically correct.
-                                             ; however, the byte-compiler warns.
-     
-     While compiling toplevel forms:
-     ** assignment to free variable flurghoze
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.7,  Next: Q5.1.8,  Prev: Q5.1.6,  Up: Miscellaneous
-
-Q5.1.7: I like the `do' form of cl, does it slow things down?
--------------------------------------------------------------
-
-It shouldn't.  Here is what Dave Gillespie has to say about cl.el
-performance:
-
-     Many of the advanced features of this package, such as `defun*',
-     `loop', and `setf', are implemented as Lisp macros.  In
-     byte-compiled code, these complex notations will be expanded into
-     equivalent Lisp code which is simple and efficient.  For example,
-     the forms
-
-          (incf i n)
-          (push x (car p))
-
-     are expanded at compile-time to the Lisp forms
-
-          (setq i (+ i n))
-          (setcar p (cons x (car p)))
-
-     which are the most efficient ways of doing these respective
-     operations in Lisp.  Thus, there is no performance penalty for
-     using the more readable `incf' and `push' forms in your compiled
-     code.
-
-     _Interpreted_ code, on the other hand, must expand these macros
-     every time they are executed.  For this reason it is strongly
-     recommended that code making heavy use of macros be compiled.  (The
-     features labelled "Special Form" instead of "Function" in this
-     manual are macros.)  A loop using `incf' a hundred times will
-     execute considerably faster if compiled, and will also
-     garbage-collect less because the macro expansion will not have to
-     be generated, used, and thrown away a hundred times.
-
-     You can find out how a macro expands by using the `cl-prettyexpand'
-     function.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.8,  Next: Q5.1.9,  Prev: Q5.1.7,  Up: Miscellaneous
-
-Q5.1.8: I like recursion, does it slow things down?
----------------------------------------------------
-
-Yes.  Emacs byte-compiler cannot do much to optimize recursion.  But
-think well whether this is a real concern in Emacs.  Much of the Emacs
-slowness comes from internal mechanisms such as redisplay, or from the
-fact that it is an interpreter.
-
-   Please try not to make your code much uglier to gain a very small
-speed gain.  It's not usually worth it.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.9,  Next: Q5.1.10,  Prev: Q5.1.8,  Up: Miscellaneous
-
-Q5.1.9: How do I put a glyph as annotation in a buffer?
--------------------------------------------------------
-
-Here is a solution that will insert the glyph annotation at the
-beginning of buffer:
-
-     (make-annotation (make-glyph '([FORMAT :file FILE]
-                                    [string :data "fallback-text"]))
-                      (point-min)
-                      'text
-                      (current-buffer))
-
-   Replace `FORMAT' with an unquoted symbol representing the format of
-the image (e.g. `xpm', `xbm', `gif', `jpeg', etc.)  Instead of `FILE',
-use the image file name (e.g.
-`/usr/local/lib/xemacs-21.4/etc/recycle.xpm').
-
-   You can turn this to a function (that optionally prompts you for a
-file name), and inserts the glyph at `(point)' instead of `(point-min)'.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.10,  Next: Q5.1.11,  Prev: Q5.1.9,  Up: Miscellaneous
-
-Q5.1.10: `map-extents' won't traverse all of my extents!
---------------------------------------------------------
-
-I tried to use `map-extents' to do an operation on all the extents in a
-region.  However, it seems to quit after processing a random number of
-extents.  Is it buggy?
-
-   No.  The documentation of `map-extents' states that it will iterate
-across the extents as long as FUNCTION returns `nil'.  Unexperienced
-programmers often forget to return `nil' explicitly, which results in
-buggy code.  For instance, the following code is supposed to delete all
-the extents in a buffer, and issue as many `fubar!' messages.
-
-     (map-extents (lambda (ext ignore)
-                    (delete-extent ext)
-                    (message "fubar!")))
-
-   Instead, it will delete only the first extent, and stop right there -
-because `message' will return a non-nil value.  The correct code is:
-
-     (map-extents (lambda (ext ignore)
-                    (delete-extent ext)
-                    (message "fubar!")
-                    nil))
-
-\1f
-File: xemacs-faq.info,  Node: Q5.1.11,  Next: Q5.2.1,  Prev: Q5.1.10,  Up: Miscellaneous
-
-Q5.1.11: My elisp program is horribly slow.  Is there
------------------------------------------------------
-
-an easy way to find out where it spends time?
-
-   Hrvoje Niksic <hniksic@xemacs.org> writes:
-
-     Under XEmacs 20.4 and later you can use `M-x profile-key-sequence',
-     press a key (say <RET> in the Gnus Group buffer), and get the
-     results using `M-x profile-results'.  It should give you an idea of
-     where the time is being spent.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.2.1,  Next: Q5.2.2,  Prev: Q5.1.11,  Up: Miscellaneous
-
-Q5.2.1: How do I turn off the sound?
-------------------------------------
-
-Add the following line to your `init.el'/`.emacs':
-
-     (setq bell-volume 0)
-     (setq sound-alist nil)
-
-   That will make your XEmacs totally silent--even the default ding
-sound (TTY beep on TTY-s) will be gone.
-
-   Starting with XEmacs 20.2 you can also change these with Customize.
-Select from the `Options' menu `Advanced
-(Customize)->Emacs->Environment->Sound->Sound...' or type `M-x
-customize <RET> sound <RET>'.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.2.2,  Next: Q5.2.3,  Prev: Q5.2.1,  Up: Miscellaneous
-
-Q5.2.2: How do I get funky sounds instead of a boring beep?
------------------------------------------------------------
-
-Make sure your XEmacs was compiled with sound support, and then put this
-in your `init.el'/`.emacs':
-
-     (load-default-sounds)
-
-\1f
-File: xemacs-faq.info,  Node: Q5.2.3,  Next: Q5.2.4,  Prev: Q5.2.2,  Up: Miscellaneous
-
-Q5.2.3: What's NAS, how do I get it?
-------------------------------------
-
-*Note Q2.0.3::, for an explanation of the "Network Audio System".
-
-\1f
-File: xemacs-faq.info,  Node: Q5.2.4,  Next: Q5.3.1,  Prev: Q5.2.3,  Up: Miscellaneous
-
-Q5.2.4: Sunsite sounds don't play.
-----------------------------------
-
-I'm having some trouble with sounds I've downloaded from sunsite.  They
-play when I run them through `showaudio' or cat them directly to
-`/dev/audio', but XEmacs refuses to play them.
-
-   Markus Gutschke <gutschk@uni-muenster.de> writes:
-
-     [Many of] These files have an (erroneous) 24byte header that tells
-     about the format that they have been recorded in. If you cat them
-     to `/dev/audio', the header will be ignored and the default
-     behavior for /dev/audio will be used. This happens to be 8kHz
-     uLaw. It is probably possible to fix the header by piping through
-     `sox' and passing explicit parameters for specifying the sampling
-     format; you then need to perform a 'null' conversion from SunAudio
-     to SunAudio.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.1,  Next: Q5.3.2,  Prev: Q5.2.4,  Up: Miscellaneous
-
-5.3: Miscellaneous
-==================
-
-Q5.3.1: How do you make XEmacs indent CL if-clauses correctly?
---------------------------------------------------------------
-
-I'd like XEmacs to indent all the clauses of a Common Lisp `if' the
-same amount instead of indenting the 3rd clause differently from the
-first two.
-
-   One way is to add, to `init.el'/`.emacs':
-
-     (put 'if 'lisp-indent-function nil)
-
-   However, note that the package `cl-indent' that comes with XEmacs
-sets up this kind of indentation by default.  `cl-indent' also knows
-about many other CL-specific forms.  To use `cl-indent', one can do
-this:
-
-     (load "cl-indent")
-     (setq lisp-indent-function (function common-lisp-indent-function))
-
-   One can also customize `cl-indent.el' so it mimics the default `if'
-indentation `then' indented more than the `else'.  Here's how:
-
-     (put 'if 'common-lisp-indent-function '(nil nil &body))
-
-   Also, a new version (1.2) of `cl-indent.el' was posted to
-comp.emacs.xemacs on 12/9/94.  This version includes more documentation
-than previous versions.  This may prove useful if you need to customize
-any indent-functions.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.2,  Next: Q5.3.3,  Prev: Q5.3.1,  Up: Miscellaneous
-
-Q5.3.2: [This question intentionally left blank]
-------------------------------------------------
-
-Obsolete question, left blank to avoid renumbering.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.3,  Next: Q5.3.4,  Prev: Q5.3.2,  Up: Miscellaneous
-
-Q5.3.3: How can I print WYSIWYG a font-locked buffer?
------------------------------------------------------
-
-Font-lock looks nice.  How can I print (WYSIWYG) the highlighted
-document?
-
-   The package `ps-print', which is now included with XEmacs, provides
-the ability to do this.  The source code contains complete instructions
-on its use, in
-`$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el', being
-the default location of an installed ps-print package.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.4,  Next: Q5.3.5,  Prev: Q5.3.3,  Up: Miscellaneous
-
-Q5.3.4: Getting `M-x lpr' to work with postscript printer.
-----------------------------------------------------------
-
-My printer is a Postscript printer and `lpr' only works for Postscript
-files, so how do I get `M-x lpr-region' and `M-x lpr-buffer' to work?
-
-   Put something like this in your `init.el'/`.emacs':
-
-     (setq lpr-command "a2ps")
-     (setq lpr-switches '("-p" "-1"))
-
-   If you don't use a2ps to convert ASCII to postscript (why not, it's
-free?), replace with the command you do use.  Note also that some
-versions of a2ps require a `-Pprinter' to ensure spooling.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.5,  Next: Q5.3.6,  Prev: Q5.3.4,  Up: Miscellaneous
-
-Q5.3.5: How do I specify the paths that XEmacs uses for finding files?
-----------------------------------------------------------------------
-
-You can specify what paths to use by using a number of different flags
-when running configure.  See the section MAKE VARIABLES in the top-level
-file INSTALL in the XEmacs distribution for a listing of those flags.
-
-   Most of the time, however, the simplest fix is: *do not* specify
-paths as you might for GNU Emacs.  XEmacs can generally determine the
-necessary paths dynamically at run time.  The only path that generally
-needs to be specified is the root directory to install into.  That can
-be specified by passing the `--prefix' flag to configure.  For a
-description of the XEmacs install tree, please consult the `NEWS' file.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.6,  Next: Q5.3.7,  Prev: Q5.3.5,  Up: Miscellaneous
-
-Q5.3.6: [This question intentionally left blank]
-------------------------------------------------
-
-Obsolete question, left blank to avoid renumbering.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.7,  Next: Q5.3.8,  Prev: Q5.3.6,  Up: Miscellaneous
-
-Q5.3.7: Can I have the end of the buffer delimited in some way?
----------------------------------------------------------------
-
-Say, with: `[END]'?
-
-   Try this:
-
-     (let ((ext (make-extent (point-min) (point-max))))
-       (set-extent-property ext 'start-closed t)
-       (set-extent-property ext 'end-closed t)
-       (set-extent-property ext 'detachable nil)
-       (set-extent-end-glyph ext (make-glyph [string :data "[END]"])))
-
-   Since this is XEmacs, you can specify an icon to be shown on
-window-system devices.  To do so, change the `make-glyph' call to
-something like this:
-
-     (make-glyph '([xpm :file "~/something.xpm"]
-                   [string :data "[END]"]))
-
-   You can inline the XPM definition yourself by specifying `:data'
-instead of `:file'.  Here is such a full-featured version that works on
-both X and TTY devices:
-
-     (let ((ext (make-extent (point-min) (point-max))))
-       (set-extent-property ext 'start-closed t)
-       (set-extent-property ext 'end-closed t)
-       (set-extent-property ext 'detachable nil)
-       (set-extent-end-glyph ext (make-glyph '([xpm :data "\
-     /* XPM */
-     static char* eye = {
-     \"20 11 7 2\",
-     \"__ c None\"
-     \"_` c #7f7f7f\",
-     \"_a c #fefefe\",
-     \"_b c #7f0000\",
-     \"_c c #fefe00\",
-     \"_d c #fe0000\",
-     \"_e c #bfbfbf\",
-     \"___________`_`_`___b_b_b_b_________`____\",
-     \"_________`_`_`___b_c_c_c_b_b____________\",
-     \"_____`_`_`_e___b_b_c_c_c___b___b_______`\",
-     \"___`_`_e_a___b_b_d___b___b___b___b______\",
-     \"_`_`_e_a_e___b_b_d_b___b___b___b___b____\",
-     \"_`_`_a_e_a___b_b_d___b___b___b___b___b__\",
-     \"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\",
-     \"___`_`_e_a___b_b_b_d_c___b___b___d_b____\",
-     \"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\",
-     \"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\",
-     \"___`_____`_`_`_`___b_b_b_b_b_b__________\",
-     } ;"]
-                                               [string :data "[END]"]))))
-
-   Note that you might want to make this a function, and put it to a
-hook.  We leave that as an exercise for the reader.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.8,  Next: Q5.3.9,  Prev: Q5.3.7,  Up: Miscellaneous
-
-Q5.3.8: How do I insert today's date into a buffer?
----------------------------------------------------
-
-Like this:
-
-     (insert (current-time-string))
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.9,  Next: Q5.3.10,  Prev: Q5.3.8,  Up: Miscellaneous
-
-Q5.3.9: Are only certain syntactic character classes available for abbrevs?
----------------------------------------------------------------------------
-
-Markus Gutschke <gutschk@uni-muenster.de> writes:
-
-     Yes, abbrevs only expands word-syntax strings. While XEmacs does
-     not prevent you from defining (e.g. with `C-x a g' or `C-x a l')
-     abbrevs that contain special characters, it will refuse to expand
-     them. So you need to ensure, that the abbreviation contains
-     letters and digits only. This means that `xd', `d5', and `5d' are
-     valid abbrevs, but `&d', and `x d' are not.
-
-     If this sounds confusing to you, (re-)read the online
-     documentation for abbrevs (`C-h i m XEmacs <RET> m Abbrevs
-     <RET>'), and then come back and read this question/answer again.
-
-   Starting with XEmacs 20.3 this restriction has been lifted.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.10,  Next: Q5.3.11,  Prev: Q5.3.9,  Up: Miscellaneous
-
-Q5.3.10: How can I get those oh-so-neat X-Face lines?
------------------------------------------------------
-
-Firstly there is an ftp site which describes X-faces and has the
-associated tools mentioned below, at
-`ftp://ftp.cs.indiana.edu:/pub/faces/'.
-
-   Then the steps are
-
-  1. Create 48x48x1 bitmap with your favorite tool
-
-  2. Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc.,
-     and then compile the face.
-
-  3.      cat file.xbm | xbm2ikon |compface > file.face
-
-  4. Then be sure to quote things that are necessary for emacs strings:
-
-          cat ./file.face | sed 's/\\/\\\\/g'
-          | sed 's/\"/\\\"/g' > ./file.face.quoted
-
-  5. Then set up emacs to include the file as a mail header - there
-     were a couple of suggestions here--either something like:
-
-          (setq  mail-default-headers
-                 "X-Face:  <Ugly looking text string here>")
-
-     Or, alternatively, as:
-
-          (defun mail-insert-x-face ()
-            (save-excursion
-              (goto-char (point-min))
-              (search-forward mail-header-separator)
-              (beginning-of-line)
-              (insert "X-Face:")
-              (insert-file-contents "~/.face")))
-          
-          (add-hook 'mail-setup-hook 'mail-insert-x-face)
-
-   However, 2 things might be wrong:
-
-   Some versions of pbmtoicon produces some header lines that is not
-expected by the version of compface that I grabbed. So I found I had to
-include a `tail +3' in the pipeline like this:
-
-     cat file.xbm | xbm2ikon | tail +3 |compface > file.face
-
-   Some people have also found that if one uses the `(insert-file)'
-method, one should NOT quote the face string using the sed script .
-
-   It might also be helpful to use Stig's <stig@hackvan.com> script
-(included in the compface distribution at XEmacs.org) to do the
-conversion.
-
-   Contributors for this item:
-
-   Paul Emsley, Ricardo Marek, Amir J. Katz, Glen McCort, Heinz Uphoff,
-Peter Arius, Paul Harrison, and Vegard Vesterheim
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.11,  Next: Q5.3.12,  Prev: Q5.3.10,  Up: Miscellaneous
-
-Q5.3.11: How do I add new Info directories?
--------------------------------------------
-
-You use something like:
-
-     (setq Info-directory-list (cons
-                                (expand-file-name "~/info")
-                                Info-default-directory-list))
-
-   David Masterson <davidm@prism.kla.com> writes:
-
-     Emacs Info and XEmacs Info do many things differently.  If you're
-     trying to support a number of versions of Emacs, here are some
-     notes to remember:
-
-       1. Emacs Info scans `Info-directory-list' from right-to-left
-          while XEmacs Info reads it from left-to-right, so append to
-          the _correct_ end of the list.
-
-       2. Use `Info-default-directory-list' to initialize
-          `Info-directory-list' _if_ it is available at startup, but not
-          all Emacsen define it.
-
-       3. Emacs Info looks for a standard `dir' file in each of the
-          directories scanned from #1 and magically concatenates them
-          together.
-
-       4. XEmacs Info looks for a `localdir' file (which consists of
-          just the menu entries from a `dir' file) in each of the
-          directories scanned from #1 (except the first), does a simple
-          concatenation of them, and magically attaches the resulting
-          list to the end of the menu in the `dir' file in the first
-          directory.
-
-     Another alternative is to convert the documentation to HTML with
-     texi2html and read it from a web browser like Lynx or W3.
-
-\1f
-File: xemacs-faq.info,  Node: Q5.3.12,  Prev: Q5.3.11,  Up: Miscellaneous
-
-Q5.3.12: What do I need to change to make printing work?
---------------------------------------------------------
-
-For regular printing there are two variables that can be customized.
-
-`lpr-command'
-     This should be set to a command that takes standard input and sends
-     it to a printer.  Something like:
-
-          (setq lpr-command "lp")
-
-`lpr-switches'
-     This should be set to a list that contains whatever the print
-     command requires to do its job.  Something like:
-
-          (setq lpr-switches '("-depson"))
-
-   For postscript printing there are three analogous variables to
-customize.
-
-`ps-lpr-command'
-     This should be set to a command that takes postscript on standard
-     input and directs it to a postscript printer.
-
-`ps-lpr-switches'
-     This should be set to a list of switches required for
-     `ps-lpr-command' to do its job.
-
-`ps-print-color-p'
-     This boolean variable should be set `t' if printing will be done in
-     color, otherwise it should be set to `nil'.
-
-   NOTE: It is an undocumented limitation in XEmacs that postscript
-printing (the `Pretty Print Buffer' menu item) *requires* a window
-system environment.  It cannot be used outside of X11.
-
-\1f
-File: xemacs-faq.info,  Node: MS Windows,  Next: Current Events,  Prev: Miscellaneous,  Up: Top
-
-6 XEmacs on MS Windows
-**********************
-
-This is part 6 of the XEmacs Frequently Asked Questions list, written by
-Hrvoje Niksic and others.  This section is devoted to the MS Windows
-port of XEmacs.
-
-* Menu:
-
-General Info
-* Q6.0.1::      What is the status of the XEmacs port to Windows?
-* Q6.0.2::      What flavors of MS Windows are supported?  The list name implies NT only.
-* Q6.0.3::      Are binaries available?
-* Q6.0.4::      Can I build XEmacs on MS Windows with X support?  Do I need to?
-* Q6.0.5::      I'd like to help out.  What do I do?
-* Q6.0.6::      What are Cygwin and MinGW, and do I need them to run XEmacs?
-* Q6.0.7::      What exactly are all the different ways to build XEmacs under Windows?
-
-Building XEmacs on MS Windows:
-* Q6.1.1::      What compiler/libraries do I need to compile XEmacs?
-* Q6.1.2::      How do I compile the native port?
-* Q6.1.3::      What do I need for Cygwin?
-* Q6.1.4::      How do I compile under Cygwin?
-* Q6.1.5::      How do I compile using MinGW (aka `the -mno-cygwin flag to gcc')?
-* Q6.1.6::      I decided to run with X.  Where do I get an X server?
-* Q6.1.7::      How do I compile with X support?
-
-Customization and User Interface:
-* Q6.2.1::      How does the port cope with differences in the Windows user interface?
-* Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
-* Q6.2.3::      Where do I put my `init.el'/`.emacs' file?
-* Q6.2.4::      How do I get Windows Explorer to associate a file type with XEmacs?
-* Q6.2.5::      Is it possible to print from XEmacs?
-
-Miscellaneous:
-* Q6.3.1::      Does XEmacs rename all the `win32-*' symbols to `w32-*'?
-* Q6.3.2::      What are the differences between the various MS Windows emacsen?
-* Q6.3.3::      XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
-* Q6.3.4::      What is the porting team doing at the moment?
-
-Troubleshooting:
-* Q6.4.1::      XEmacs won't start on Windows.
-* Q6.4.2::      Why do I get a blank toolbar on Windows 95?
-* Q6.4.3::      XEmacs complains "No such file or directory, diff"
-
-\1f
-File: xemacs-faq.info,  Node: Q6.0.1,  Next: Q6.0.2,  Prev: MS Windows,  Up: MS Windows
-
-6.0: General Info
-=================
-
-Q6.0.1: What is the status of the XEmacs port to Windows?
----------------------------------------------------------
-
-Is XEmacs really ported to MS Windows?  What is the status of the port?
-
-   Beginning with release 21.0, XEmacs has worked under MS Windows.  A
-group of dedicated developers actively maintains and improves the
-Windows-specific portions of the code.  The mailing list at
-<xemacs-nt@xemacs.org> is dedicated to that effort (please use the
--request address to subscribe). (Despite its name, XEmacs actually
-works on all versions of Windows.)
-
-   As of May 2001, XEmacs on MS Windows is stable and full-featured, and
-has been so for a year or more - in fact, some features, such as
-printing, actually work better on Windows than native Unix.  However,
-the internationalization (Mule) support does not work - although this
-is being actively worked on.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.0.2,  Next: Q6.0.3,  Prev: Q6.0.1,  Up: MS Windows
-
-Q6.0.2: What flavors of MS Windows are supported?  The list name implies NT only.
----------------------------------------------------------------------------------
-
-The list name is misleading, as XEmacs supports and has been compiled on
-Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
-XP, and all newer versions of Windows.  The MS Windows-specific code is
-based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
-MS-DOS.
-
-   XEmacs also supports the Cygwin and MinGW development and runtime
-environments, where it also uses native Windows code for graphical
-features.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.0.3,  Next: Q6.0.4,  Prev: Q6.0.2,  Up: MS Windows
-
-Q6.0.3: Are binaries available?
--------------------------------
-
-Binaries are available at `http://www.xemacs.org/Download/win32/' for
-the native and Cygwin MS Windows versions of 21.4, and the native
-version of 21.1.
-
-   The 21.4 binaries use a modified version of the Cygwin installer.
-Run the provided `setup.exe', and follow the instructions.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.0.4,  Next: Q6.0.5,  Prev: Q6.0.3,  Up: MS Windows
-
-Q6.0.4: Can I build XEmacs on MS Windows with X support?  Do I need to?
------------------------------------------------------------------------
-
-Yes, you can, but no you do not need to.  In fact, we recommend that you
-use a native-GUI version unless you have a specific need for an X
-version.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.0.5,  Next: Q6.0.6,  Prev: Q6.0.4,  Up: MS Windows
-
-Q6.0.5: I'd like to help out.  What do I do?
---------------------------------------------
-
-It depends on the knowledge and time you possess.  If you are a
-programmer, try to build XEmacs and see if you can improve it.
-Windows-specific improvements like integration with established Windows
-environments are especially sought after.
-
-   Otherwise, you can still help by downloading the binaries, using
-XEmacs as your everyday editor and reporting bugs you find to the
-mailing list.
-
-   Another area where we need help is the documentation: We need good
-documentation for building XEmacs and for using it.  This FAQ is a
-small step in that direction.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.0.6,  Next: Q6.0.7,  Prev: Q6.0.5,  Up: MS Windows
-
-Q6.0.6: What are Cygwin and MinGW, and do I need them to run XEmacs?
---------------------------------------------------------------------
-
-To answer the second part of the question: No, you, you don't need
-Cygwin or MinGW to build or to run XEmacs.  But if you have them and
-want to use them, XEmacs supports these environments.
-
-   (One important reason to support Cygwin is that it lets the MS
-Windows developers test out their code in a Unix environment without
-actually having to have a Unix machine around.  For this reason alone,
-Cygwin support is likely to remain supported for a long time in XEmacs.
-Same goes for the X support under Cygwin, for the same reasons.  MinGW
-support, on the other hand, depends on volunteers to keep it up to date;
-but this is generally not hard.)
-
-   Cygwin is a set of tools providing Unix-like API on top of Win32.
-It makes it easy to port large Unix programs without significant
-changes to their source code.  It is a development environment as well
-as a runtime environment.
-
-   When built with Cygwin, XEmacs supports all display types - TTY, X &
-Win32 GUI, and can be built with support for all three simultaneously.
-If you build with Win32 GUI support then the Cygwin version uses the
-majority of the Windows-specific code, which is mostly related to
-display.  If you want to build with X support you need X libraries (and
-an X server to display XEmacs on); see *Note Q6.1.4::.  TTY and Win32
-GUI require no additional libraries beyond what comes standard with
-Cygwin.
-
-   The advantages of the Cygwin version are that it integrates well with
-the Cygwin environment for existing Cygwin users; uses configure so
-building with different features is very easy; and actively supports X &
-TTY.  Furthermore, the entire Cygwin environment and compiler are free,
-whereas Visual C++ costs money.
-
-   The disadvantage is that it requires the whole Cygwin environment,
-whereas the native port requires only a suitable MS Windows compiler.
-Also, it follows the Unix filesystem and process model very closely
-(some will undoubtedly view this as an advantage).
-
-   See `http://sources.redhat.com/cygwin/' for more information on
-Cygwin.
-
-   MinGW is a collection of header files and import libraries that allow
-one to use GCC under the Cygwin environment to compile and produce
-exactly the same native Win32 programs that you can using Visual C++.
-Programs compiled with MinGW make use of the standard Microsoft runtime
-library `MSVCRT.DLL', present on all Windows systems, and look, feel,
-and act like a standard Visual-C-produced application. (The only
-difference is the compiler.) This means that, unlike a
-standardly-compiled Cygwin application, no extra runtime support (e.g.
-Cygwin's `cygwin1.dll') is required.  This, along with the fact that
-GCC is free (and works in a nice Unix-y way in a nice Unix-y
-environment, for those die-hard Unix hackers out there), is the main
-advantage of MinGW.  It is also potentially faster than Cygwin because
-it has less overhead when calling Windows, but you lose the POSIX
-emulation layer, which makes Unix programs harder to port. (But this is
-irrelevant for XEmacs since it's already ported to Win32.)
-
-   See `http://www.mingw.org/' for more information on MinGW.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.0.7,  Next: Q6.1.1,  Prev: Q6.0.6,  Up: MS Windows
-
-Q6.0.7: What exactly are all the different ways to build XEmacs under Windows?
-------------------------------------------------------------------------------
-
-XEmacs can be built in several ways in the MS Windows environment.
-
-   The standard way is what we call the "native" port.  It uses the
-Win32 API and has no connection with X whatsoever - it does not require
-X libraries to build, nor does it require an X server to run.  The
-native port is the most reliable version and provides the best graphical
-support.  Almost all development is geared towards this version, and
-there is little reason not to use it.
-
-   The second way to build is the Cygwin port.  It takes advantage of
-Cygnus emulation library under Win32.  *Note Q6.0.6::, for more
-information.
-
-   A third way is the MinGW port.  It uses the Cygwin environment to
-build but does not require it at runtime.  *Note Q6.0.6::, for more
-information.
-
-   Finally, you might also be able to build the non-Cygwin, non-MinGW
-"X" port.  This was actually the first version of XEmacs that ran under
-MS Windows, and although the code is still in XEmacs, it's essentially
-orphaned and it's unlikely it will compile without a lot of work.  If
-you want an MS Windows versin of XEmacs that supports X, use the Cygwin
-version. (The X support there is actively maintained, so that Windows
-developers can test the X support in XEmacs.)
-
-\1f
-File: xemacs-faq.info,  Node: Q6.1.1,  Next: Q6.1.2,  Prev: Q6.0.7,  Up: MS Windows
-
-6.1: Building XEmacs on MS Windows
-==================================
-
-Q6.1.1: What compiler/libraries do I need to compile XEmacs?
-------------------------------------------------------------
-
-You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
-some beta testers currently trying to compile with VC.NET, aka version
-7.0, but we can't yet report complete success.) For the Cygwin and MinGW
-versions, you need the Cygwin environment, which comes with GCC, the
-compiler used for those versions.  *Note Q6.0.6::, for more information
-on Cygwin and MinGW.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.1.2,  Next: Q6.1.3,  Prev: Q6.1.1,  Up: MS Windows
-
-Q6.1.2: How do I compile the native port?
------------------------------------------
-
-Please read the file `nt/README' in the XEmacs distribution, which
-contains the full description.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.1.3,  Next: Q6.1.4,  Prev: Q6.1.2,  Up: MS Windows
-
-Q6.1.3: What do I need for Cygwin?
-----------------------------------
-
-You can find the Cygwin tools and compiler at:
-
-   `http://sources.redhat.com/cygwin/'
-
-   Click on the `Install now!' link, which will download a file
-`setup.exe', which you can use to download everything else. (You will
-need to pick a mirror site; `mirrors.rcn.net' is probably the best.)
-You should go ahead and install everything - you'll get various
-ancillary libraries that XEmacs needs or likes, e.g. XPM, PNG, JPEG,
-TIFF, etc.
-
-   If you want to compile under X, you will also need the X libraries;
-see *Note Q6.1.6::.
-
-   If you want to compile without X, you will need the `xpm-nox'
-library, which must be specifically selected in the Cygwin netinstaller;
-it is not selected by default.  The package has had various names.
-Currently it is called `cygXpm-noX4.dll'.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.1.4,  Next: Q6.1.5,  Prev: Q6.1.3,  Up: MS Windows
-
-Q6.1.4: How do I compile under Cygwin?
---------------------------------------
-
-Similar as on Unix; use the usual `configure' and `make' process.  Some
-problems to watch out for:
-
-   * make sure HOME is set. This controls where you `init.el'/`.emacs'
-     file comes from;
-
-   * CYGWIN needs to be set to tty for process support to work, e.g.
-     CYGWIN=tty;
-
-   * picking up some other grep or other UNIX-like tools can kill
-     configure;
-
-   * static heap too small, adjust `src/sheap-adjust.h' to a more
-     positive number;
-
-   * (Unconfirmed) The Cygwin version doesn't understand
-     `//machine/path' type paths so you will need to manually mount a
-     directory of this form under a unix style directory for a build to
-     work on the directory;
-
-   * If you're building *WITHOUT* X11, don't forget to change symlinks
-     `/usr/lib/libXpm.a' and `/usr/lib/libXpm.dll.a' to point to the
-     non-X versions of these libraries.  By default they point to the X
-     versions.  So:
-
-          /usr/lib/libXpm.a     -> /usr/lib/libXpm-noX.a
-          /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
-
-     (This advice may now be obsolete because of the availability of the
-     cygXpm-noX4.dll package from Cygwin.  Send confirmation to
-     <faq@xemacs.org>.)
-
-   * Other problems are listed in the `PROBLEMS' file, in the top-level
-     directory of the XEmacs sources.
-
-
-\1f
-File: xemacs-faq.info,  Node: Q6.1.5,  Next: Q6.1.6,  Prev: Q6.1.4,  Up: MS Windows
-
-Q6.1.5: How do I compile using MinGW (aka `the -mno-cygwin flag to gcc')?
--------------------------------------------------------------------------
-
-Similar to the method for Unix.  Things to remember:
-
-   * Specify the target host on the command line for `./configure', e.g.
-     `./configure i586-pc-mingw32'.
-
-   * Be sure that your build directory is mounted such that it has the
-     same path either as a cygwin path (`/build/xemacs') or as a Windows
-     path (`c:\build\xemacs').
-
-   * Build `gcc -mno-cygwin' versions of the extra libs, i.e. `libpng',
-     `compface', etc.
-
-   * Specify the target location of the extra libs on the command line
-     to `configure', e.g.  `./configure --site-prefixes=/build/libs
-     i586-pc-mingw32'.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.1.6,  Next: Q6.1.7,  Prev: Q6.1.5,  Up: MS Windows
-
-Q6.1.6: I decided to run with X.  Where do I get an X server?
--------------------------------------------------------------
-
-As of May 2001, we are recommending that you use the port of XFree86 to
-Cygwin.  This has recently stabilized, and will undoubtedly soon make
-most other MS Windows X servers obsolete.  It is what the Windows
-developers use to test the MS Windows X support.
-
-   To install, go to `http://xfree86.cygwin.com/'.  There is a detailed
-description on that site of exactly how to install it.  This
-installation also provides the libraries, include files, and other stuff
-needed for development; a large collection of internationalized fonts;
-the standard X utilities (xterm, twm, etc.) - in a word, the works.
-
-   NOTE: As of late May 2001, there is a bug in the file
-`startxwin.bat', used to start X Windows.  It passes the option
-`-engine -4' to the X server, which is bogus - you need to edit the
-file and change it to `-engine 4'.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.1.7,  Next: Q6.2.1,  Prev: Q6.1.6,  Up: MS Windows
-
-Q6.1.7: How do I compile with X support?
-----------------------------------------
-
-To compile under Cygwin, all you need to do is install XFree86 (*note
-Q6.1.6::).  Once installed, `configure' should automatically find the X
-libraries and compile with X support.
-
-   As noted above, the non-Cygwin X support is basically orphaned, and
-probably won't work.  But if it want to try, it's described in
-`nt/README' in some detail.  Basically, you need to get X11 libraries
-from ftp.x.org, and compile them.  If the precompiled versions are
-available somewhere, we don't know of it.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.2.1,  Next: Q6.2.2,  Prev: Q6.1.7,  Up: MS Windows
-
-6.2: Customization and User Interface
-=====================================
-
-Q6.2.1: How does the port cope with differences in the Windows user interface?
-------------------------------------------------------------------------------
-
-The XEmacs (and Emacs in general) user interface is pretty different
-from what is expected of a typical MS Windows program.  How does the MS
-Windows port cope with it?
-
-   As a general rule, we follow native MS Windows conventions as much as
-possible.  21.4 is a fairly complete Windows application, supporting
-native printing, system file dialog boxes, tool tips, etc.  In cases
-where there's a clear UI conflict, we currently use normal Unix XEmacs
-behavior by default, but make sure the MS Windows "look and feel" (mark
-via shift-arrow, self-inserting deletes region, Alt selects menu items,
-etc.) is easily configurable (respectively: using the variable
-`shifted-motion-keys-select-region' in 21.4 and above [it's in fact the
-default in these versions], or the `pc-select' package; using the
-`pending-del' package; and setting the variable
-`menu-accelerator-enabled' to `menu-force' in 21.4 and above).  In
-fact, if you use the sample `init.el' file as your init file, you will
-get all these behaviors automatically turned on.
-
-   In future versions, some of these features might be turned on by
-default in the MS Windows environment.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.2.2,  Next: Q6.2.3,  Prev: Q6.2.1,  Up: MS Windows
-
-Q6.2.2: How do I change fonts in XEmacs on MS Windows?
-------------------------------------------------------
-
-In 21.4 and above, you can use the "Options" menu to change the font.
-You can also do it in your init file, e.g. like this:
-
-         (set-face-font 'default "Lucida Console:Regular:10")
-         (set-face-font 'modeline "MS Sans Serif:Regular:10")
-
-\1f
-File: xemacs-faq.info,  Node: Q6.2.3,  Next: Q6.2.4,  Prev: Q6.2.2,  Up: MS Windows
-
-Q6.2.3: Where do I put my `init.el'/`.emacs' file?
---------------------------------------------------
-
-`init.el' is the name of the init file starting with 21.4, and is
-located in the subdirectory `.xemacs/' of your home directory.  In
-prior versions, the init file is called `.emacs' and is located in your
-home directory.  Your home directory under Windows is determined by the
-`HOME' environment variable.  If this is not set, it defaults to `C:\'.
-
-   To set this variable, modify `AUTOEXEC.BAT' under Windows 95/98, or
-select `Control Panel->System->Advanced->Environment Variables...'
-under Windows NT/2000.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.2.4,  Next: Q6.2.5,  Prev: Q6.2.3,  Up: MS Windows
-
-Q6.2.4: How do I get Windows Explorer to associate a file type with XEmacs?
----------------------------------------------------------------------------
-
-Associating a new file type with XEmacs.
-........................................
-
-In Explorer select `View/Options/File Types', press `[New Type...]' and
-fill in the dialog box, e.g.:
-
-             Description of type:    Emacs Lisp source
-             Associated extension:   el
-             Content Type (MIME):    text/plain
-
-   then press `[New...]' and fill in the `Action' dialog box as follows:
-
-             Action:
-             Open
-     
-             Application used to perform action:
-             D:\Full\path\for\xemacs.exe "%1"
-     
-             [x] Use DDE
-     
-             DDE Message:
-             open("%1")
-     
-             Application:
-             <leave blank>
-     
-             DDE Application Not Running:
-             <leave blank>
-     
-             Topic:
-             <leave blank>
-
-Associating an existing file type with XEmacs.
-..............................................
-
-In Explorer select `View/Options/File Types'.  Click on the file type
-in the list and press `[Edit...]'.  If the file type already has an
-`Open' action, double click on it and fill in the `Action' dialog box
-as described above; otherwise create a new action.
-
-   If the file type has more than one action listed, you probably want
-to make the `Open' action that you just edited the default by clicking
-on it and pressing `Set Default'.
-
-   Note for Windows 2000 users: Under Windows 2000, get to `File Types'
-using `Control Panel->Folder Options->File Types'.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.2.5,  Next: Q6.3.1,  Prev: Q6.2.4,  Up: MS Windows
-
-Q6.2.5: Is it possible to print from XEmacs?
---------------------------------------------
-
-As of 21.4, printing works on Windows, using simply `File->Print', and
-can be configured with `File->Page Setup'.
-
-   Prior to 21.4, there is no built-in support, but there are some
-clever hacks out there.  If you know how, please let us know and we'll
-put it here.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.3.1,  Next: Q6.3.2,  Prev: Q6.2.5,  Up: MS Windows
-
-6.3: Miscellaneous
-==================
-
-Q6.3.1: Does XEmacs rename all the `win32-*' symbols to `w32-*'?
-----------------------------------------------------------------
-
-In his flavor of Emacs 20, Richard Stallman has renamed all the
-`win32-*' symbols to `w32-*'.  Does XEmacs do the same?
-
-   We consider such a move counter-productive, thus we do not use the
-`w32' prefix. (His rather questionable justification was that he did
-not consider Windows to be a "winning" platform.) However, the name
-`Win32' is not particularly descriptive outside the Windows world, and
-using just `windows-' would be too generic.  So we chose a compromise,
-the prefix `mswindows-' for Windows-related variables and functions.
-
-   Thus all the XEmacs variables and functions directly related to
-either the Windows GUI or OS are prefixed `mswindows-' (except for a
-couple of debugging variables, prefixed `debug-mswindows-').  From an
-architectural perspective, however, we believe that this is mostly a
-non-issue because there should be a very small number of
-window-systems-specific variables anyway.  Whenever possible, we try to
-provide generic interfaces that apply to all window systems.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.3.2,  Next: Q6.3.3,  Prev: Q6.3.1,  Up: MS Windows
-
-Q6.3.2: What are the differences between the various MS Windows emacsen?
-------------------------------------------------------------------------
-
-XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
-Could you briefly explain the differences between them?
-
-   Here is a recount of various Emacs versions running on MS Windows:
-
-   * XEmacs
-
-        - Beginning with XEmacs 19.12, XEmacs' architecture was
-          redesigned in such a way to allow clean support of multiple
-          window systems.  At this time the TTY support was added,
-          making X and TTY the first two "window systems" supported by
-          XEmacs.  The 19.12 design is the basis for the current native
-          MS Windows code.
-
-        - Some time during 1997, David Hobley (soon joined by Marc
-          Paquette) imported some of the NT-specific portions of GNU
-          Emacs, making XEmacs with X support compile under Windows NT,
-          and creating the "X" port.
-
-        - Several months later, Jonathan Harris sent out initial
-          patches to use the Win32 API, thus creating the native port.
-          Since then, various people have contributed, including Kirill
-          M. Katsnelson (contributed support for menubars, subprocesses
-          and network, as well as loads of other code), Andy Piper
-          (ported XEmacs to Cygwin environment, contributed Windows
-          unexec, Windows-specific glyphs and toolbars code, and more),
-          Ben Wing (loads of improvements; primary MS Windows developer
-          since 2000), Jeff Sparkes (contributed scrollbars support)
-          and many others.
-
-   * NT Emacs
-
-        - NT Emacs is a version of GNU Emacs modified to compile and
-          run under MS Windows 95 and NT using the native Win32 API.
-          As such, it is close in spirit to the XEmacs "native" port.
-
-        - NT Emacs has been written by Geoff Voelker, and more
-          information can be found at
-          `http://www.gnu.org/software/emacs/windows/ntemacs.html'.
-
-   * Win-Emacs
-
-        - Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
-          compatibility libraries.  Win-Emacs was written by Ben Wing.
-          The MS Windows code never made it back to Lucid Emacs, and
-          its creator (Pearl Software) has long since gone out of
-          business.
-
-   * GNU Emacs for DOS
-
-        - GNU Emacs features support for MS-DOS and DJGPP (D.J.
-          Delorie's DOS port of GCC).  Such an Emacs is heavily
-          underfeatured, because it does not support long file names,
-          lacks proper subprocesses support, and is far too big
-          compared with typical DOS editors.
-
-   * GNU Emacs compiled with Win32
-
-        - Starting with version 19.30, it has been possible to compile
-          GNU Emacs under MS Windows using the DJGPP compiler and X
-          libraries.  The result is very similar to GNU Emacs compiled
-          under MS DOS, only it works somewhat better because it runs
-          in 32-bit mode, makes use of all the system memory, supports
-          long file names, etc.
-
-
-\1f
-File: xemacs-faq.info,  Node: Q6.3.3,  Next: Q6.3.4,  Prev: Q6.3.2,  Up: MS Windows
-
-Q6.3.3: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
------------------------------------------------------------------------------------------------------------
-
-Yes.
-
-   The console was there because `temacs' (and in turn, `xemacs') was a
-console application, and Windows typically creates a new console for a
-console process unless the creating process requests that one isn't
-created.  This used to be fixed with `runemacs', a small Windows
-application that existed merely to start `xemacs', stating that it
-didn't want a console.
-
-   XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
-application.  The explanation of what that means is included for
-educational value.
-
-   When building an application to be run in a Win32 environment, you
-must state which sub-system it is to run in.  Valid subsystems include
-"console" and "gui".  The subsystem you use affects the run time
-libraries linked into your application, the start up function that is
-run before control is handed over to your application, the entry point
-to your program, and how Windows normally invokes your program. (Console
-programs automatically get a console created for them at startup if
-their stdin/stdout don't point anywhere useful, which is the case when
-run from the GUI.  This is a stupid design, of course - instead, the
-console should get created only when the first I/O actually occurs!
-GUI programs have an equally stupid design: When called from
-`CMD.EXE'/`COMMAND.COM', their stdin/stdout will be set to point
-nowhere useful, even though the command shell has its own stdin/stdout.
-It's as if someone who had learned a bit about stdio but had no actual
-knowledge of interprocess communication designed the scheme;
-unfortunately, the whole process-communication aspect of the Win32 API
-is equally badly designed.) For example, the entry point for a console
-app is "main" (which is what you'd expect for a C/C++ program), but the
-entry point for a "gui" app is "WinMain".  This confuses and annoys a
-lot of programmers who've grown up on Unix systems, where the kernel
-doesn't really care whether your application is a gui program or not.
-
-   For reasons not altogether clear, and are lost in the mists of time
-and tradition, XEmacs on Win32 started out as a console application, and
-therefore a console was automatically created for it. (It may have been
-made a console application partly because a console is needed in some
-circumstances, especially under Win95, to interrupt, terminate, or send
-signals to a child process, and because of the bogosity mentioned above
-with GUI programs and the standard command shell.  Currently, XEmacs
-just creates and immediately hides a console when necessary, and works
-around the "no useful stdio" problem by creating its own console window
-as necessary to display messages in.)
-
-\1f
-File: xemacs-faq.info,  Node: Q6.3.4,  Next: Q6.4.1,  Prev: Q6.3.3,  Up: MS Windows
-
-Q6.3.4: What is the porting team doing at the moment?
------------------------------------------------------
-
-(as of June 2001)
-
-   The porting team is continuing work on the MS Windows-specific code.
-Major projects are the development of Mule (internationalization)
-support for Windows and the improvement of the widget support (better
-support for dialog boxes, buttons, edit fields, and similar UI
-elements).
-
-\1f
-File: xemacs-faq.info,  Node: Q6.4.1,  Next: Q6.4.2,  Prev: Q6.3.4,  Up: MS Windows
-
-6.3: Troubleshooting
-====================
-
-Q6.4.1 XEmacs won't start on Windows.
--------------------------------------
-
-XEmacs relies on a process called "dumping" to generate a working
-executable. Under MS-Windows this process effectively fixes the memory
-addresses of information in the executable. When XEmacs starts up it
-tries to reserve these memory addresses so that the dumping process can
-be reversed - putting the information back at the correct addresses.
-Unfortunately some .DLLs (for instance the soundblaster driver) occupy
-memory addresses that can conflict with those needed by the dumped
-XEmacs executable. In this instance XEmacs will fail to start without
-any explanation. Note that this is extremely machine specific.
-
-   21.1.10 includes a fix for this that makes more intelligent guesses
-about which memory addresses will be free, and this should cure the
-problem for most people.  21.4 implements "portable dumping", which
-eliminates the problem altogether.  We recommend you use the 21.4
-binaries, but you can use the 21.1 binaries if you are very paranoid
-about stability.  *Note Q6.0.3::.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.4.2,  Next: Q6.4.3,  Prev: Q6.4.1,  Up: MS Windows
-
-Q6.4.2 Why do I get a blank toolbar on Windows 95?
---------------------------------------------------
-
-You need at least version 4.71 of the system file `comctl32.dll'.  The
-updated version is supplied with Internet Explorer 4 and later but if
-you are avoiding IE you can also download it from the Microsoft web
-site.  Go into support and search for `comctl32.dll'.  The download is
-a self-installing executable.
-
-\1f
-File: xemacs-faq.info,  Node: Q6.4.3,  Prev: Q6.4.2,  Up: MS Windows
-
-Q6.4.3 XEmacs complains "No such file or directory, diff"
----------------------------------------------------------
-
-or "ispell" or other commands that seem related to whatever you just
-tried to do (M-x ediff or M-$, for example).
-
-   There are a large number of common (in the sense that "everyone has
-these, they really do") Unix utilities that are not provided with
-XEmacs.  The GNU Project's implementations are available for Windows in
-the the Cygwin distribution (`http://www.cygwin.com/'), which also
-provides a complete Unix emulation environment (and thus makes ports of
-Unix utilities nearly trivial).  Another implementation is that from
-MinGW (`http://www.mingw.org/msys.shtml').  If you know of others,
-please let us know!
-
-\1f
-File: xemacs-faq.info,  Node: Current Events,  Next: Legacy Versions,  Prev: MS Windows,  Up: Top
-
-7 What the Future Holds
-***********************
-
-This is part 7 of the XEmacs Frequently Asked Questions list.  This
-section will change frequently, and (in theory) should contain any
-interesting items that have transpired recently. (But in practice it's
-not getting updated like this.)
-
-   This section also contains descriptions of the new features in all
-the recent releases of XEmacs.  For the most part, the information
-below is a synopsis of the more complete information that can be found
-in the file `NEWS' in the `etc' directory of the XEmacs distribution.
-You can view this file in XEmacs using `C-h n' or the `Help' menu.
-
-   Information on older versions of XEmacs can be find in `ONEWS' in
-the same directory, or `OONEWS' for really old versions.
-
-* Menu:
-
-* Q7.0.1::      What new features will be in XEmacs soon?
-* Q7.0.2::      What's new in XEmacs 21.4?
-* Q7.0.3::      What's new in XEmacs 21.1?
-* Q7.0.4::      What's new in XEmacs 20.4?
-* Q7.0.5::      What's new in XEmacs 20.3?
-* Q7.0.6::      What's new in XEmacs 20.2?
-
-\1f
-File: xemacs-faq.info,  Node: Q7.0.1,  Next: Q7.0.2,  Prev: Current Events,  Up: Current Events
-
-7.0: Changes
-============
-
-Q7.0.1: What new features will be in XEmacs soon?
--------------------------------------------------
-
-Not yet written.
-
-\1f
-File: xemacs-faq.info,  Node: Q7.0.2,  Next: Q7.0.3,  Prev: Q7.0.1,  Up: Current Events
-
-Q7.0.2: What's new in XEmacs 21.4?
-----------------------------------
-
-21.4 was the "stable" version of the 21.2 series, which was considered
-"experimental" throughout its life; thus there were no "official"
-releases at all.  In essence, XEmacs is now following the "alternating"
-scheme of Linux, where at any point there are at least two different
-development branches, one "stable" and one "experimental".  Periodic
-releases happen in both branches, but those in the experimental branch
-are not tested as well, and there's no guarantee they will work at all.
-The experiemental branch is open to any and all code that's acceptable
-to the developers; the stable branch, however, is in general limited
-only to bug fixes, and all contributions are carefully reviewed to make
-sure they will increase and not decrease stability.
-
-   21.3 never existed at all; it was decided to follow the Linux scheme
-exactly, where odd-numbered series are experimental and even-numbered
-ones stable.
-
-   The following lists summarizes the essential changes made in this
-version.  For a fuller list, see the `NEWS' in the `etc' directory of
-the XEmacs distribution, or use `C-h n' or the `Help' menu to view this
-file inside of XEmacs.
-
-User-visible changes in XEmacs 21.4
-...................................
-
-   * The delete key now deletes forward by default.
-
-   * Shifted motion keys now select text by default.
-
-   * You can now build XEmacs with support for GTK+ widget set.
-
-   * ~/.xemacs/init.el is now the preferred location for the init file.
-     (XEmacs now supports a `~/.xemacs/init.el' startup file. Custom
-     file will move to ~/.xemacs/custom.el.)
-
-   * Much-improved sample init.el, showing how to use many useful
-     features.
-
-   * XEmacs support for menu accelerators has been much improved.
-
-   * Default menubar improvements. (Default menubar has many new
-     commands and better organization.  The font-menu is now available
-     under MS Windows.)
-
-   * Dialog box improvements, including a real file dialog box. (XEmacs
-     now has a proper file dialog box under MS Windows (and GTK)!  The
-     old clunky file dialog box is improved.  Keyboard traversal now
-     works correctly in MS Windows dialog boxes.  There is a Search
-     dialog box available from Edit->Find...)
-
-   * New buffer tabs.
-
-   * There is a new MS Windows installer, netinstall, ported from
-     Cygwin.
-
-   * The subprocess quote-handling mechanism under Windows is much
-     improved.
-
-   * Printing support now available under MS Windows.
-
-   * Selection improvements. (Kill and yank now interact with the
-     clipboard under Windows.  MS Windows support for selection is now
-     much more robust.  Motif selection support is now more correct
-     (but slower).)
-
-   * Mail spool locking now works correctly.
-
-   * International support changes. (The default coding-priority-list
-     is now safer.  International keysyms are now supported under X.
-     MS Windows 1251 code page now supported.  Czech, Thai,
-     Cyrillic-KOI8, Vietnamese, Ethiopic now supported.  Proper support
-     for words in Latin 3 and Latin 4.)
-
-   * Help buffers contain hyperlinks, and other changes.
-
-   * The modeline's text is now scrollable.
-
-   * The mouse wheel under MS Windows now functions correctly.
-
-   * Interactive searching and matching case improvements. (Incremental
-     search will now highlight all visible matches.  Interactive
-     searches always respect uppercase characters.)
-
-   * Rectangle functions rewritten to avoid inserting extra spaces.
-
-   * New command `kill-entire-line' that always kills the entire line.
-
-   * Default values correctly stored in minibuffer histories.
-
-   * You can now create "indirect buffers", like in GNU Emacs.
-
-   * Pixel-based scrolling has been implemented.
-
-   * Operation progress can be displayed using graphical widgets.
-
-   * User names following a tilde can now be completed at file name
-     prompts.
-
-   * XEmacs can now play sound using Enlightenment Sound Daemon (ESD).
-
-   * X-Face support is now available under MS Windows.
-
-   * The PostgreSQL Relational Database Management System is now
-     supported.
-
-   * Indentation no longer indents comments that begin at column zero.
-
-   * Face and variable settings can have comments in Customize.
-
-   * New locations for early package hierarchies.
-
-   * The `auto-save' library has been greatly improved.
-
-   * New variable `mswindows-alt-by-itself-activates-menu'.
-
-   * Other init-file-related changes. (Init file in your home directory
-     may be called `.emacs.el'.  New command-line switches
-     -user-init-file and -user-init-directory.)
-
-   * Etags changes.  See `NEWS' for full details.
-
-Lisp and internal changes in XEmacs 21.4
-........................................
-
-Not yet written.
-
-\1f
-File: xemacs-faq.info,  Node: Q7.0.3,  Next: Q7.0.4,  Prev: Q7.0.2,  Up: Current Events
-
-Q7.0.3: What's new in XEmacs 21.1?
-----------------------------------
-
-21.1 was the "stable" version of "experimental" 21.0 series.  *Note
-Q7.0.2::.
-
-   The following lists summarizes the essential changes made in this
-version.  For a fuller list, see the `NEWS' in the `etc' directory of
-the XEmacs distribution, or use `C-h n' or the `Help' menu to view this
-file inside of XEmacs.
-
-User-visible changes in XEmacs 21.1
-...................................
-
-   * XEmacs is now supported under Microsoft Windows 95/98 and Windows
-     NT operating systems.  To discuss Windows-specific issues,
-     subscribe to the mailing list at <xemacs-nt-request@xemacs.org>.
-
-   * XEmacs has been unbundled into constituent installable packages.
-
-   * *Other notable changes*: The `Options' menu has been ported to
-     Custom; XEmacs now is able to choose X visuals and use private
-     colormaps; You can drag the vertical divider of "horizontally"
-     (side-by-side) split windows.
-
-   * *Building changes*: XEmacs can be built with support for 31-bit
-     Lisp integers and 32-bit pointers (previously, it was 28-bit
-     integers and pointers); XEmacs can be built with LDAP support;
-     `dir' files can be removed in the Info subsystem, and will be
-     regenerated on-the-fly.
-
-   * *New packages*: `imenu', `popper', `gdb-highlight'
-
-   * *Package changes*: Many changes to `cc-mode', `gnus', `gnuclient'.
-     See `NEWS' for full details.
-
-   * *New commands, variables and functions*: `center-to-window-line'
-     (like `recenter' but doesn't force a redisplay); variable
-     `user-full-name' (customize what your full name looks like in
-     mail); `M-x customize-changed-options' (customize options whose
-     default values changes because you upgraded your XEmacs); `M-x
-     add-log-convert' (converts an old-style ChangeLog buffer to
-     new-style); `M-x zap-up-to-char' (like `zap-to-char' but doesn't
-     delete the char searched for); commands to store, retrieve and
-     increment numbers in registers, useful for macros.
-
-   * *Changes to commands, variables, and functions*: `M-x
-     query-replace' and friends operate only on the region when it's
-     active; `echo-keystrokes' can now be a floating-point number; `M-.'
-     searches exact tag matches before inexact ones; function
-     `user-full-name' with no arguments returns the var
-     `user-full-name'; a prefix arg to `M-:' and `C-h c' inserts the
-     result in the current buffer.
-
-   * *Other changes*: Under X, new application class `XEmacs';
-     byte-compilation of user-specs now works.
-
-   * *XEmacs/Mule (internationalization) changes*: Mule support now
-     works on TTY's; Egg/SJ3 input method now officially supported
-     (Quail and Egg/Skk already available through LEIM since 20.3);
-     localized Japanese menubars if XEmacs is built with the right
-     support.
-
-
-Lisp and internal changes in XEmacs 21.1
-........................................
-
-   * *Specifier changes*: The window locale now has a higher precedence
-     than the buffer locale when instantiating; new macro
-     `let-specifier'; new specifiers `vertical-scrollbar-visible-p',
-     horizontal-scrollbar-visible-p', `scrollbar-on-left-p',
-     `scrollbar-on-top-p', `vertical-divider-always-visible-p',
-     `vertical-divider-shadow-thickness',
-     `vertical-divider-line-width', `vertical-divider-spacing';
-     specifiers and symbols whose value is a specifier allowed as
-     modeline specifications.
-
-   * *Frame focus changes*: `focus-follows-mouse' works like FSF,
-     prevents any attempt to permanently change the selected frame; new
-     function `focus-frame' sets the window system focus a frame; new
-     special forms `save-selected-frame' and `with-selected-frame'.
-
-   * *Window function changes*: `select-window' now has optional
-     argument NORECORD to inhibit recording a buffer change;
-     `vertical-motion' now correctly handles optional WINDOW argument
-     and has new optional argument PIXELS, to have the returned values
-     be in pixels; new function `vertical-motion-pixels'; new functions
-     `window-text-area-pixel-{width,height,edges}'; new functions
-     `shrink-window-pixels' and `enlarge-window-pixels'; new function
-     `window-displayed-text-pixel-height'.
-
-   * *Other function changes*: Arithmetic comparison functions `<',
-     `>', `=', `/=' now accept a variable number of arguments;
-     hashtables now have a consistent read/print syntax; keyword
-     symbols cannot be set to a value other than themselves; `concat' no
-     longer accepts integer arguments; new function `string', like
-     `list', `vector', etc.; new function `temp-directory'
-     (OS-independent way to get a temp directory); `load-average' has
-     optional argument USE-FLOATS; `make-event' implemented completely;
-     new function `function-interactive' (returns a function's
-     interactive spec); new functions `lmessage', `lwarn' (printf-like
-     versions of `display-wessage', `display-warning'); new keyword
-     `:version' to `defcustom'.
-
-   * *Performance*: when the new GNU Malloc aka Doug Lea Malloc is
-     available, it will be used (better performance on libc6 Linux
-     systems); tracking line-numbers in modeline is now efficient;
-     profiling records a call-count of all called functions,
-     retrievable through `profile-call-count-results'.
-
-   * *Startup and path searching*: code to assemble paths at startup
-     rewritten for new package system; new function `split-path' (splits
-     by `path-separator'); `Info-default-directory-list' obsolete, use
-     `Info-directory-list' instead; site-lisp is deprecated and no
-     longer on the load-path by default.
-
-
-\1f
-File: xemacs-faq.info,  Node: Q7.0.4,  Next: Q7.0.5,  Prev: Q7.0.3,  Up: Current Events
-
-Q7.0.4: What's new in XEmacs 20.4?
-----------------------------------
-
-XEmacs 20.4 is a bugfix release with no user-visible changes.
-
-\1f
-File: xemacs-faq.info,  Node: Q7.0.5,  Next: Q7.0.6,  Prev: Q7.0.4,  Up: Current Events
-
-Q7.0.5: What's new in XEmacs 20.3?
-----------------------------------
-
-XEmacs 20.3 was released in November 1997. It contains many bugfixes,
-and a number of new features, including Autoconf 2 based configuration,
-additional support for Mule (Multi-language extensions to Emacs), many
-more customizations, multiple frames on TTY-s, support for multiple info
-directories, an enhanced gnuclient, improvements to regexp matching,
-increased MIME support, and many, many synches with GNU Emacs 20.
-
-   The XEmacs/Mule support has been only seriously tested in a Japanese
-locale, and no doubt many problems still remain.  The support for
-ISO-Latin-1 and Japanese is fairly strong.  MULE support comes at a
-price--about a 30% slowdown from 19.16.  We're making progress on
-improving performance and XEmacs 20.3 compiled without Mule (which is
-the default) is definitely faster than XEmacs 19.16.
-
-   XEmacs 20.3 is the first non-beta v20 release, and will be the basis
-for all further development.
-
-\1f
-File: xemacs-faq.info,  Node: Q7.0.6,  Prev: Q7.0.5,  Up: Current Events
-
-Q7.0.6: What's new in XEmacs 20.2?
-----------------------------------
-
-The biggest changes in 20.2 include integration of EFS (the next
-generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a
-major mode for editing Tex and LaTeX, and a lot of other stuff).  Many
-bugs from 20.0 have been fixed for this release.  20.2 also contains a
-new system for customizing XEmacs options, invoked via `M-x customize'.
-
-   XEmacs 20.2 is the development release (20.0 was beta), and is no
-longer considered unstable.
-
-   For older news, see the file `ONEWS' in the `etc' directory of the
-XEmacs distribution.
-
-\1f
-File: xemacs-faq.info,  Node: Legacy Versions,  Prev: Current Events,  Up: Top
-
-8 New information about old XEmacsen
-************************************
-
-This is part 8 of the XEmacs Frequently Asked Questions list.  It will
-occasionally be updated to reflect new information about versions which
-are no longer being revised by the XEmacs Project.  The primary purpose
-is advice on compatibility of older XEmacsen with new packages and
-updated versions of packages, but bug fixes (which will not be applied
-to released XEmacsen, but users can apply themselves) are also accepted.
-
-* Menu:
-
-* Q8.0.1::      Gnus 5.10 won't display smileys in XEmacs 21.1.
-
-\1f
-File: xemacs-faq.info,  Node: Q8.0.1,  Up: Legacy Versions
-
-Q8.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1.
--------------------------------------------------------
-
-Eric Eide <eeide@cs.utah.edu> wrote:
-
-     Previously I wrote:
-
-     Eric> Summary: with Gnus 5.10.1 in XEmacs 21.1.14, I don't see
-     Eric> any smileys :-(.
-
-     After a bit of sleuthing, I discovered the essence of the problem.
-     For me, the form:
-
-               (with-temp-buffer
-                 (insert-file-contents "foo.xpm")
-                 (buffer-string))
-
-     returns the empty string.  This is because something somewhere
-     replaces the XPM data with a glyph -- I haven't figured out where
-     this occurs.
-
-   Kyle Jones <kyle_jones@wonderworks.com> replies:
-
-     Do this:
-
-              (setq format-alist nil)
-
-     The image-mode stuff is gone from format-alist in the 21.4 branch,
-     praise be.
-
-
+Indirect:
+xemacs-faq.info-1: 205
+xemacs-faq.info-2: 299980
 \1f
 Tag Table:
+(Indirect)
 Node: Top\7f205
-Node: Introduction\7f18020
-Node: Q1.0.1\7f21577
-Node: Q1.0.2\7f22578
-Node: Q1.0.3\7f23120
-Node: Q1.0.4\7f23379
-Node: Q1.0.5\7f24768
-Node: Q1.0.6\7f25454
-Node: Q1.0.7\7f26556
-Node: Q1.0.8\7f26801
-Node: Q1.0.9\7f27013
-Node: Q1.0.10\7f27295
-Node: Q1.0.11\7f27624
-Node: Q1.0.12\7f28345
-Node: Q1.0.13\7f28710
-Node: Q1.0.14\7f28956
-Node: Q1.1.1\7f29464
-Node: Q1.1.2\7f30503
-Node: Q1.1.3\7f30893
-Node: Q1.2.1\7f31841
-Node: Q1.2.2\7f32988
-Node: Q1.2.3\7f33419
-Node: Q1.3.1\7f34500
-Node: Q1.3.2\7f35308
-Node: Q1.3.3\7f35910
-Node: Q1.3.4\7f36488
-Node: Q1.3.5\7f37281
-Node: Q1.3.6\7f41962
-Node: Q1.3.7\7f44512
-Node: Q1.3.8\7f45433
-Node: Q1.3.9\7f46426
-Node: Q1.4.1\7f47561
-Node: Q1.4.2\7f49309
-Node: Q1.4.3\7f49677
-Node: Q1.4.4\7f50093
-Node: Q1.4.5\7f51630
-Node: Q1.4.6\7f51931
-Node: Installation\7f52921
-Node: Q2.0.1\7f55609
-Node: Q2.0.2\7f56406
-Node: Q2.0.3\7f57925
-Node: Q2.0.4\7f59220
-Node: Q2.0.5\7f59809
-Node: Q2.0.6\7f60154
-Node: Q2.0.7\7f60762
-Node: Q2.0.8\7f61140
-Node: Q2.0.9\7f62714
-Node: Q2.0.10\7f64325
-Node: Q2.0.11\7f65166
-Node: Q2.0.12\7f66104
-Node: Q2.0.13\7f67625
-Node: Q2.0.14\7f68099
-Node: Q2.0.15\7f69143
-Node: Q2.0.16\7f69816
-Node: Q2.1.1\7f70643
-Node: Q2.1.2\7f74829
-Node: Q2.1.3\7f76056
-Node: Q2.1.4\7f77350
-Node: Q2.1.5\7f78146
-Node: Q2.1.6\7f78507
-Node: Q2.1.7\7f78980
-Node: Q2.1.8\7f79330
-Node: Q2.1.9\7f80861
-Node: Q2.1.10\7f81299
-Node: Q2.1.11\7f82053
-Node: Q2.1.12\7f82916
-Node: Q2.1.13\7f83868
-Node: Q2.1.14\7f84896
-Node: Q2.1.15\7f86004
-Node: Q2.1.16\7f93822
-Node: Q2.1.17\7f94513
-Node: Q2.1.18\7f95107
-Node: Q2.1.19\7f95496
-Node: Q2.1.20\7f96032
-Node: Q2.1.21\7f96411
-Node: Q2.1.22\7f96604
-Node: Q2.1.23\7f97898
-Node: Q2.1.24\7f98563
-Node: Q2.1.25\7f99020
-Node: Customization\7f99636
-Node: Q3.0.1\7f104582
-Node: Q3.0.2\7f105375
-Node: Q3.0.3\7f105807
-Node: Q3.0.4\7f106231
-Node: Q3.0.5\7f107061
-Node: Q3.0.6\7f107839
-Node: Q3.0.7\7f108416
-Node: Q3.0.8\7f108996
-Node: Q3.0.9\7f109951
-Node: Q3.1.1\7f110509
-Node: Q3.1.2\7f111297
-Node: Q3.1.3\7f111725
-Node: Q3.1.4\7f111914
-Node: Q3.1.5\7f112103
-Node: Q3.1.6\7f112494
-Node: Q3.1.7\7f113210
-Node: Q3.1.8\7f115431
-Node: Q3.2.1\7f115970
-Node: Q3.2.2\7f117651
-Node: Q3.2.3\7f118631
-Node: Q3.2.4\7f119241
-Node: Q3.2.5\7f119943
-Node: Q3.2.6\7f120407
-Node: Q3.2.7\7f121329
-Node: Q3.3.1\7f122567
-Node: Q3.3.2\7f122826
-Node: Q3.3.3\7f123486
-Node: Q3.3.4\7f123874
-Node: Q3.3.5\7f124665
-Node: Q3.4.1\7f126143
-Node: Q3.4.2\7f126717
-Node: Q3.5.1\7f127113
-Node: Q3.5.2\7f128559
-Node: Q3.5.3\7f128984
-Node: Q3.5.4\7f129819
-Node: Q3.5.5\7f130422
-Node: Q3.5.6\7f131570
-Node: Q3.5.7\7f132551
-Node: Q3.5.8\7f134055
-Node: Q3.5.9\7f134297
-Node: Q3.5.10\7f135089
-Node: Q3.5.11\7f135722
-Node: Q3.6.1\7f136272
-Node: Q3.6.2\7f137025
-Node: Q3.6.3\7f137464
-Node: Q3.7.1\7f137880
-Node: Q3.7.2\7f138765
-Node: Q3.7.3\7f139421
-Node: Q3.7.4\7f139840
-Node: Q3.7.5\7f140180
-Node: Q3.7.6\7f140645
-Node: Q3.7.7\7f141379
-Node: Q3.7.8\7f142406
-Node: Q3.8.1\7f142822
-Node: Q3.8.2\7f143118
-Node: Q3.8.3\7f143539
-Node: Q3.8.4\7f144163
-Node: Q3.8.5\7f145422
-Node: Q3.9.1\7f146204
-Node: Q3.9.2\7f147001
-Node: Q3.9.3\7f147596
-Node: Q3.9.4\7f148255
-Node: Q3.10.1\7f148965
-Node: Q3.10.2\7f149801
-Node: Q3.10.3\7f150813
-Node: Q3.10.4\7f151548
-Node: Q3.10.5\7f151932
-Node: Q3.10.6\7f152997
-Node: Subsystems\7f156030
-Node: Q4.0.1\7f158563
-Node: Q4.0.2\7f159085
-Node: Q4.0.3\7f159640
-Node: Q4.0.4\7f159958
-Node: Q4.0.5\7f160197
-Node: Q4.0.6\7f160428
-Node: Q4.0.7\7f161013
-Node: Q4.0.8\7f161331
-Node: Q4.0.9\7f162555
-Node: Q4.0.10\7f164590
-Node: Q4.0.11\7f165076
-Node: Q4.0.12\7f165951
-Node: Q4.1.1\7f166931
-Node: Q4.1.2\7f167331
-Node: Q4.1.3\7f167655
-Node: Q4.2.1\7f167961
-Node: Q4.2.2\7f168587
-Node: Q4.2.3\7f168824
-Node: Q4.2.4\7f169365
-Node: Q4.3.1\7f170015
-Node: Q4.3.2\7f170596
-Node: Q4.3.3\7f172297
-Node: Q4.3.4\7f172566
-Node: Q4.3.5\7f173240
-Node: Q4.4.1\7f173865
-Node: Q4.4.2\7f175348
-Node: Q4.5.1\7f176549
-Node: Q4.6.1\7f177316
-Node: Q4.7.1\7f182430
-Node: Q4.7.2\7f183374
-Node: Q4.7.3\7f183668
-Node: Q4.7.4\7f183854
-Node: Q4.7.5\7f184735
-Node: Q4.7.6\7f186373
-Node: Q4.7.7\7f186674
-Node: Miscellaneous\7f187543
-Node: Q5.0.1\7f190959
-Node: Q5.0.2\7f191691
-Node: Q5.0.3\7f192552
-Node: Q5.0.4\7f192960
-Node: Q5.0.5\7f194248
-Node: Q5.0.6\7f196235
-Node: Q5.0.7\7f196889
-Node: Q5.0.8\7f197491
-Node: Q5.0.9\7f198017
-Node: Q5.0.10\7f198548
-Node: Q5.0.11\7f198793
-Node: Q5.0.12\7f199039
-Node: Q5.0.13\7f199963
-Node: Q5.0.14\7f200654
-Node: Q5.0.15\7f201416
-Node: Q5.0.16\7f201710
-Node: Q5.0.17\7f202229
-Node: Q5.0.18\7f202546
-Node: Q5.0.19\7f202740
-Node: Q5.0.20\7f203161
-Node: Q5.1.1\7f204074
-Node: Q5.1.2\7f206140
-Node: Q5.1.3\7f206873
-Node: Q5.1.4\7f210265
-Node: Q5.1.5\7f210797
-Node: Q5.1.6\7f212921
-Node: Q5.1.7\7f214404
-Node: Q5.1.8\7f215994
-Node: Q5.1.9\7f216543
-Node: Q5.1.10\7f217425
-Node: Q5.1.11\7f218553
-Node: Q5.2.1\7f219098
-Node: Q5.2.2\7f219686
-Node: Q5.2.3\7f220027
-Node: Q5.2.4\7f220259
-Node: Q5.3.1\7f221167
-Node: Q5.3.2\7f222395
-Node: Q5.3.3\7f222637
-Node: Q5.3.4\7f223196
-Node: Q5.3.5\7f223870
-Node: Q5.3.6\7f224736
-Node: Q5.3.7\7f224978
-Node: Q5.3.8\7f227165
-Node: Q5.3.9\7f227409
-Node: Q5.3.10\7f228359
-Node: Q5.3.11\7f230440
-Node: Q5.3.12\7f232028
-Node: MS Windows\7f233299
-Node: Q6.0.1\7f235483
-Node: Q6.0.2\7f236476
-Node: Q6.0.3\7f237171
-Node: Q6.0.4\7f237606
-Node: Q6.0.5\7f237987
-Node: Q6.0.6\7f238724
-Node: Q6.0.7\7f242055
-Node: Q6.1.1\7f243528
-Node: Q6.1.2\7f244186
-Node: Q6.1.3\7f244457
-Node: Q6.1.4\7f245391
-Node: Q6.1.5\7f246864
-Node: Q6.1.6\7f247698
-Node: Q6.1.7\7f248739
-Node: Q6.2.1\7f249404
-Node: Q6.2.2\7f250867
-Node: Q6.2.3\7f251315
-Node: Q6.2.4\7f252017
-Node: Q6.2.5\7f253732
-Node: Q6.3.1\7f254177
-Node: Q6.3.2\7f255440
-Node: Q6.3.3\7f258620
-Node: Q6.3.4\7f261583
-Node: Q6.4.1\7f262081
-Node: Q6.4.2\7f263284
-Node: Q6.4.3\7f263785
-Node: Current Events\7f264594
-Node: Q7.0.1\7f265739
-Node: Q7.0.2\7f265984
-Node: Q7.0.3\7f270859
-Node: Q7.0.4\7f276626
-Node: Q7.0.5\7f276851
-Node: Q7.0.6\7f277933
-Node: Legacy Versions\7f278623
-Node: Q8.0.1\7f279281
+Node: Introduction\7f18047
+Node: Q1.0.1\7f23078
+Node: Q1.0.2\7f24055
+Node: Q1.0.3\7f24774
+Node: Q1.0.4\7f24986
+Node: Q1.0.5\7f25267
+Node: Q1.0.6\7f31317
+Node: Q1.1.1\7f32501
+Node: Q1.1.2\7f33187
+Node: Q1.1.3\7f34033
+Node: Q1.1.4\7f34737
+Node: Q1.2.1\7f35334
+Node: Q1.2.2\7f35679
+Node: Q1.2.3\7f38247
+Node: Q1.2.4\7f39654
+Node: Q1.2.5\7f40037
+Node: Q1.2.6\7f43359
+Node: Q1.2.7\7f46457
+Node: Q1.2.8\7f47845
+Node: Q1.2.9\7f48581
+Node: Q1.2.10\7f49104
+Node: Q1.2.11\7f49363
+Node: Q1.2.12\7f49728
+Node: Q1.3.1\7f50100
+Node: Q1.3.2\7f51760
+Node: Q1.3.3\7f52446
+Node: Q1.3.4\7f52787
+Node: Q1.3.5\7f53215
+Node: Q1.3.6\7f54752
+Node: Q1.3.7\7f55053
+Node: Q1.3.8\7f56058
+Node: Q1.4.1\7f56594
+Node: Q1.4.2\7f57696
+Node: Q1.4.3\7f62221
+Node: Q1.4.4\7f62466
+Node: Q1.4.5\7f62777
+Node: Q1.5.1\7f64416
+Node: Q1.5.2\7f65429
+Node: Q1.5.3\7f65819
+Node: Q1.5.4\7f67307
+Node: Q1.5.5\7f73179
+Node: Q1.6.1\7f75050
+Node: Q1.6.2\7f75487
+Node: Q1.6.3\7f83356
+Node: Q1.6.4\7f84547
+Node: Q1.6.5\7f85852
+Node: Q1.6.6\7f87997
+Node: Q1.7.1\7f92831
+Node: Q1.7.2\7f93598
+Node: Q1.7.3\7f101712
+Node: Q1.7.4\7f102187
+Node: Q1.8.1\7f102867
+Node: Q1.8.2\7f103624
+Node: Q1.8.3\7f104256
+Node: Q1.8.4\7f104984
+Node: Q1.8.5\7f105777
+Node: Q1.8.6\7f110458
+Node: Q1.8.7\7f113008
+Node: Q1.8.8\7f113929
+Node: Q1.8.9\7f115117
+Node: Installation\7f116237
+Node: Q2.0.1\7f119241
+Node: Q2.0.2\7f119863
+Node: Q2.0.3\7f120510
+Node: Q2.0.4\7f121375
+Node: Q2.0.5\7f122133
+Node: Q2.1.1\7f123705
+Node: Q2.1.2\7f126885
+Node: Q2.1.3\7f128199
+Node: Q2.1.4\7f130455
+Node: Q2.1.5\7f131097
+Node: Q2.1.6\7f131866
+Node: Q2.1.7\7f134136
+Node: Q2.2.1\7f134935
+Node: Q2.2.2\7f135783
+Node: Q2.3.1\7f137402
+Node: Q2.3.2\7f138927
+Node: Q2.3.3\7f139541
+Node: Q2.3.4\7f139814
+Node: Q2.3.5\7f140723
+Node: Q2.3.6\7f142171
+Node: Q2.3.7\7f143115
+Node: Q2.3.8\7f143864
+Node: Q2.4.1\7f144762
+Node: Q2.4.2\7f146210
+Node: Q2.4.3\7f151918
+Node: Q2.4.4\7f152793
+Node: Q2.4.5\7f163084
+Node: Q2.4.6\7f164441
+Node: Q2.4.7\7f165759
+Node: Q2.4.8\7f167972
+Node: Q2.4.9\7f169144
+Node: Q2.4.10\7f170199
+Node: Q2.4.11\7f171245
+Node: Q2.4.12\7f171712
+Node: Q2.5.1\7f172446
+Node: Q2.5.2\7f172808
+Node: Q2.5.3\7f173827
+Node: Q2.5.4\7f174277
+Node: Q2.5.5\7f175073
+Node: Q2.5.6\7f175818
+Node: Editing\7f178768
+Node: Q3.0.1\7f181003
+Node: Q3.0.2\7f181189
+Node: Q3.0.3\7f182628
+Node: Q3.0.4\7f183501
+Node: Q3.0.5\7f184063
+Node: Q3.0.6\7f185038
+Node: Q3.0.7\7f186574
+Node: Q3.0.8\7f187197
+Node: Q3.0.9\7f187737
+Node: Q3.0.10\7f188083
+Node: Q3.0.11\7f188598
+Node: Q3.1.1\7f189139
+Node: Q3.1.2\7f189954
+Node: Q3.1.3\7f190604
+Node: Q3.1.4\7f191017
+Node: Q3.1.5\7f191351
+Node: Q3.2.1\7f192100
+Node: Q3.2.2\7f194281
+Node: Q3.2.3\7f194519
+Node: Q3.2.4\7f195468
+Node: Q3.2.5\7f196732
+Node: Q3.3.1\7f198752
+Node: Q3.3.2\7f199748
+Node: Q3.3.3\7f200506
+Node: Q3.3.4\7f201549
+Node: Q3.3.5\7f202238
+Node: Q3.3.6\7f205276
+Node: Q3.4.1\7f205737
+Node: Q3.4.2\7f206583
+Node: Display\7f207382
+Node: Q4.0.1\7f210335
+Node: Q4.0.2\7f210774
+Node: Q4.0.3\7f211768
+Node: Q4.0.4\7f213359
+Node: Q4.0.5\7f213954
+Node: Q4.0.6\7f214650
+Node: Q4.0.7\7f215108
+Node: Q4.0.8\7f216024
+Node: Q4.0.9\7f217305
+Node: Q4.1.1\7f217939
+Node: Q4.1.2\7f218598
+Node: Q4.2.1\7f219028
+Node: Q4.2.2\7f219244
+Node: Q4.2.3\7f219889
+Node: Q4.2.4\7f220262
+Node: Q4.3.1\7f221745
+Node: Q4.3.2\7f222433
+Node: Q4.3.3\7f222841
+Node: Q4.4.1\7f223273
+Node: Q4.4.2\7f223484
+Node: Q4.4.3\7f223886
+Node: Q4.4.4\7f224135
+Node: Q4.4.5\7f224719
+Node: Q4.5.1\7f226007
+Node: Q4.5.2\7f226190
+Node: Q4.5.3\7f226373
+Node: Q4.5.4\7f226912
+Node: Q4.6.1\7f227826
+Node: Q4.6.2\7f228561
+Node: Q4.6.3\7f228754
+Node: Q4.6.4\7f229324
+Node: Q4.6.5\7f229977
+Node: Q4.6.6\7f230511
+Node: Q4.6.7\7f231214
+Node: Q4.7.1\7f231810
+Node: Q4.7.2\7f231997
+Node: Q4.7.3\7f232186
+Node: Q4.7.4\7f232385
+Node: External Subsystems\7f232581
+Node: Q5.0.1\7f234951
+Node: Q5.0.2\7f235691
+Node: Q5.0.3\7f236125
+Node: Q5.0.4\7f236513
+Node: Q5.0.5\7f237226
+Node: Q5.0.6\7f239453
+Node: Q5.1.1\7f240045
+Node: Q5.1.2\7f241278
+Node: Q5.2.1\7f243005
+Node: Q5.2.2\7f244293
+Node: Q5.2.3\7f244858
+Node: Q5.2.4\7f245529
+Node: Q5.3.1\7f246009
+Node: Q5.3.2\7f246568
+Node: Q5.3.3\7f246906
+Node: Q5.3.4\7f247659
+Node: Q5.4.1\7f248682
+Node: Q5.4.2\7f248865
+Node: Q5.4.3\7f249525
+Node: Q5.4.4\7f250107
+Node: Q5.4.5\7f250870
+Node: Q5.4.6\7f251705
+Node: Q5.5.1\7f252945
+Node: Q5.5.2\7f253466
+Node: Q5.5.3\7f253842
+Node: Q5.5.4\7f254734
+Node: Q5.5.5\7f255417
+Node: Internet\7f256317
+Node: Q6.0.1\7f258198
+Node: Q6.0.2\7f258414
+Node: Q6.0.3\7f261008
+Node: Q6.0.4\7f261237
+Node: Q6.0.5\7f261692
+Node: Q6.0.6\7f262380
+Node: Q6.0.7\7f262895
+Node: Q6.0.8\7f264130
+Node: Q6.0.9\7f266423
+Node: Q6.0.10\7f266831
+Node: Q6.0.11\7f267695
+Node: Q6.1.1\7f269823
+Node: Q6.1.2\7f270287
+Node: Q6.1.3\7f270603
+Node: Q6.1.4\7f271186
+Node: Q6.1.5\7f271502
+Node: Q6.1.6\7f271982
+Node: Q6.2.1\7f273028
+Node: Q6.2.2\7f273549
+Node: Q6.3.1\7f274121
+Node: Q6.3.2\7f275003
+Node: Q6.4.1\7f275200
+Node: Q6.4.2\7f275544
+Node: Q6.4.3\7f275866
+Node: Advanced\7f276155
+Node: Q7.0.1\7f277909
+Node: Q7.0.2\7f278572
+Node: Q7.0.3\7f278999
+Node: Q7.0.4\7f279409
+Node: Q7.0.5\7f280224
+Node: Q7.0.6\7f280997
+Node: Q7.1.1\7f281648
+Node: Q7.1.2\7f283629
+Node: Q7.1.3\7f284352
+Node: Q7.1.4\7f287734
+Node: Q7.1.5\7f288261
+Node: Q7.1.6\7f290380
+Node: Q7.1.7\7f291846
+Node: Q7.1.8\7f293431
+Node: Q7.1.9\7f293979
+Node: Q7.1.10\7f294856
+Node: Q7.1.11\7f295979
+Node: Q7.2.1\7f296596
+Node: Q7.2.2\7f299980
+Node: Q7.2.3\7f300911
+Node: Q7.2.4\7f301324
+Node: Other Packages\7f302172
+Node: Q8.0.1\7f303172
+Node: Q8.0.2\7f303633
+Node: Q8.0.3\7f304690
+Node: Q8.0.4\7f305570
+Node: Q8.1.1\7f306419
+Node: Q8.1.2\7f308061
+Node: Q8.1.3\7f308362
+Node: Q8.2.1\7f308714
+Node: Q8.2.2\7f309783
+Node: Q8.2.3\7f310987
+Node: Q8.2.4\7f311745
+Node: Current Events\7f315563
+Node: Q9.0.1\7f316740
+Node: Q9.0.2\7f316956
+Node: Q9.0.3\7f321833
+Node: Q9.0.4\7f327637
+Node: Q9.0.5\7f327862
+Node: Q9.0.6\7f328944
+Node: Legacy Versions\7f329634
+Node: Q10.0.1\7f330408
+Node: Q10.0.2\7f331355
 \1f
 End Tag Table
index 1e6f304..8bed6c0 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.8 from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -12,10 +12,7 @@ File: xemacs-faq.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
 XEmacs FAQ
 **********
 
-Introduction
-************
-
-   This is the guide to the XEmacs Frequently Asked Questions list--a
+This is the guide to the XEmacs Frequently Asked Questions list--a
 compendium of questions and answers pertaining to one of the finest
 programs ever written.  XEmacs is much more than just a Text Editor.
 
@@ -24,340 +21,393 @@ hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
    If you have a Web browser, the official hypertext version is at
-`http://www.xemacs.org/faq/xemacs-faq.html'
+`http://www.xemacs.org/FAQ/xemacs-faq.html'
 
 * Menu:
 
-* Introduction::        Introduction, Policy, Credits.
-* Installation::        Installation and Trouble Shooting.
-* Customization::       Customization and Options.
-* Subsystems::          Major Subsystems.
-* Miscellaneous::       The Miscellaneous Stuff.
-* MS Windows::          XEmacs on Microsoft Windows.
-* Current Events::      What the Future Holds.
-
+* Introduction::          Introduction, Policy, Credits.
+* Installation::          Installation and Troubleshooting.
+* Editing::               Editing Functions.
+* Display::               Display Functions.
+* External Subsystems::   Interfacing with the OS and External Devices.
+* Internet::              Connecting to the Internet.
+* Advanced::              Advanced Customization Using XEmacs Lisp.
+* Other Packages::        Other External Packages.
+* Current Events::        What the Future Holds.
+* Legacy Versions::       New information about old XEmacsen.
 
  --- The Detailed Node Listing ---
 
-Introduction, Policy, Credits
-
-* Q1.0.1::      What is XEmacs?
-* Q1.0.2::      What is the current version of XEmacs?
-* Q1.0.3::      Where can I find it?
-* Q1.0.4::      Why Another Version of Emacs?
-* Q1.0.5::      Why Haven't XEmacs and GNU Emacs Merged?
-* Q1.0.6::      Where can I get help?
-* Q1.0.7::      Where are the mailing lists archived?
-* Q1.0.8::      How do you pronounce XEmacs?
-* Q1.0.9::      What does XEmacs look like?
-* Q1.0.10::     Is there a port of XEmacs to Microsoft ('95 or NT)?
-* Q1.0.11::     Is there a port of XEmacs to the Macintosh?
-* Q1.0.12::     Is there a port of XEmacs to NextStep?
-* Q1.0.13::     Is there a port of XEmacs to OS/2?
-* Q1.0.14::     Where can I get a printed copy of the XEmacs users manual?
-
-Policies:
-* Q1.1.1::      What is the FAQ editorial policy?
-* Q1.1.2::      How do I become a Beta Tester?
-* Q1.1.3::      How do I contribute to XEmacs itself?
-
-Credits:
-* Q1.2.1::      Who wrote XEmacs?
-* Q1.2.2::      Who contributed to this version of the FAQ?
-* Q1.2.3::      Who contributed to the FAQ in the past?
-
-Internationalization:
-* Q1.3.1::      What is the status of internationalization support aka MULE (including Asian language support?
-* Q1.3.2::      How can I help with internationalization?
-* Q1.3.3::      How do I type non-ASCII characters?
-* Q1.3.4::      Can XEmacs messages come out in a different language?
-* Q1.3.5::      Please explain the various input methods in MULE/XEmacs
-* Q1.3.6::      How do I portably code for MULE/XEmacs?
-* Q1.3.7::      How about Cyrillic Modes?
-
-Getting Started:
-* Q1.4.1::      What is an `init.el' or `.emacs' and is there a sample one?
-* Q1.4.2::      Can I use the same `init.el'/`.emacs' with the other Emacs?
-* Q1.4.3::      Any good XEmacs tutorials around?
-* Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
-* Q1.4.5::      And how do I bind it to a key?
-* Q1.4.6::      What's the difference between a macro and a function?
-
-Installation and Trouble Shooting
-
-* Q2.0.1::      Running XEmacs without installing.
-* Q2.0.2::      XEmacs is too big.
-* Q2.0.3::      Compiling XEmacs with Netaudio.
-* Q2.0.4::      Problems with Linux and ncurses.
-* Q2.0.5::      Do I need X11 to run XEmacs?
-* Q2.0.6::      I'm having strange crashes.  What do I do?
-* Q2.0.7::      Libraries in non-standard locations.
-* Q2.0.8::      can't resolve symbol _h_errno
-* Q2.0.9::      Where do I find external libraries?
-* Q2.0.10::     After I run configure I find a coredump, is something wrong?
-* Q2.0.11::     XEmacs can't resolve host names.
-* Q2.0.12::     Why can't I strip XEmacs?
-* Q2.0.13::     I don't need no steenkin' packages.  Do I? (NEW)
-* Q2.0.14::     How do I figure out which packages to install? (NEW)
-
-Trouble Shooting:
-* Q2.1.1::      XEmacs just crashed on me!
-* Q2.1.2::      Cryptic Minibuffer messages.
-* Q2.1.3::      Translation Table Syntax messages at Startup.
-* Q2.1.4::      Startup warnings about deducing proper fonts?
-* Q2.1.5::      XEmacs cannot connect to my X Terminal.
-* Q2.1.6::      XEmacs just locked up my Linux X server.
-* Q2.1.7::      HP Alt key as Meta.
-* Q2.1.8::      got (wrong-type-argument color-instance-p nil)!
-* Q2.1.9::      XEmacs causes my OpenWindows 3.0 server to crash.
-* Q2.1.10::     Warnings from incorrect key modifiers.
-* Q2.1.11::     Can't instantiate image error... in toolbar
-* Q2.1.12::     Regular Expression Problems on DEC OSF1.
-* Q2.1.13::     HP/UX 10.10 and `create_process' failure
-* Q2.1.14::     C-g doesn't work for me.  Is it broken?
-* Q2.1.15::     How to debug an XEmacs problem with a debugger.
-* Q2.1.16::     XEmacs crashes in `strcat' on HP/UX 10.
-* Q2.1.17::     `Marker does not point anywhere'.
-* Q2.1.18::     [This question intentionally left blank]
-* Q2.1.19::     XEmacs does not follow the local timezone.
-* Q2.1.20::     `Symbol's function definition is void: hkey-help-show.'
-* Q2.1.21::     [This question intentionally left blank]
-* Q2.1.22::     XEmacs seems to take a really long time to do some things.
-* Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
-* Q2.1.24::     XEmacs won't start without network. (NEW)
-* Q2.1.25::     After upgrading, XEmacs won't do `foo' any more! (NEW)
-
-Customization and Options
-
-* Q3.0.1::      What version of Emacs am I running?
-* Q3.0.2::      How do I evaluate Elisp expressions?
-* Q3.0.3::      `(setq tab-width 6)' behaves oddly.
-* Q3.0.4::      How can I add directories to the `load-path'?
-* Q3.0.5::      How to check if a lisp function is defined?
-* Q3.0.6::      Can I force the output of `(face-list)' to a buffer?
-* Q3.0.7::      Font selections don't get saved after `Save Options'.
-* Q3.0.8::      How do I make a single minibuffer frame?
-* Q3.0.9::      What is `Customize'?
-
-X Window System & Resources:
-* Q3.1.1::      Where is a list of X resources?
-* Q3.1.2::      How can I detect a color display?
-* Q3.1.3::      [This question intentionally left blank]
-* Q3.1.4::      [This question intentionally left blank]
-* Q3.1.5::      How can I get the icon to just say `XEmacs'?
-* Q3.1.6::      How can I have the window title area display the full path?
-* Q3.1.7::      `xemacs -name junk' doesn't work?
-* Q3.1.8::      `-iconic' doesn't work.
-
-Textual Fonts & Colors:
-* Q3.2.1::      How can I set color options from `init.el'/`.emacs'?
-* Q3.2.2::      How do I set the text, menu and modeline fonts?
-* Q3.2.3::      How can I set the colors when highlighting a region?
-* Q3.2.4::      How can I limit color map usage?
-* Q3.2.5::      My tty supports color, but XEmacs doesn't use them.
-* Q3.2.6::      Can I have pixmap backgrounds in XEmacs?
-
-The Modeline:
-* Q3.3.1::      How can I make the modeline go away?
-* Q3.3.2::      How do you have XEmacs display the line number in the modeline?
-* Q3.3.3::      How do I get XEmacs to put the time of day on the modeline?
-* Q3.3.4::      How do I turn off current chapter from AUC TeX modeline?
-* Q3.3.5::      How can one change the modeline color based on the mode used?
-
-Multiple Device Support:
-* Q3.4.1::      How do I open a frame on another screen of my multi-headed display?
-* Q3.4.2::      Can I really connect to a running XEmacs after calling up over a modem?  How?
-
-The Keyboard:
-* Q3.5.1::      How can I bind complex functions (or macros) to keys?
-* Q3.5.2::      How can I stop down-arrow from adding empty lines to the bottom of my buffers?
-* Q3.5.3::      How do I bind C-. and C-; to scroll one line up and down?
-* Q3.5.4::      Globally binding Delete?
-* Q3.5.5::      Scrolling one line at a time.
-* Q3.5.6::      How to map Help key alone on Sun type4 keyboard?
-* Q3.5.7::      How can you type in special characters in XEmacs?
-* Q3.5.8::      [This question intentionally left blank]
-* Q3.5.9::      How do I make the Delete key delete forward?
-* Q3.5.10::     Can I turn on "sticky" modifier keys?
-* Q3.5.11::     How do I map the arrow keys?
-
-The Cursor:
-* Q3.6.1::      Is there a way to make the bar cursor thicker?
-* Q3.6.2::      Is there a way to get back the old block cursor where the cursor covers the character in front of the point?
-* Q3.6.3::      Can I make the cursor blink?
-
-The Mouse and Highlighting:
-* Q3.7.1::      How can I turn off Mouse pasting?
-* Q3.7.2::      How do I set control/meta/etc modifiers on mouse buttons?
-* Q3.7.3::      Clicking the left button does not do anything in buffer list.
-* Q3.7.4::      How can I get a list of buffers when I hit mouse button 3?
-* Q3.7.5::      Why does cut-and-paste not work between XEmacs and a cmdtool?
-* Q3.7.6::      How I can set XEmacs up so that it pastes where the text cursor is?
-* Q3.7.7::      How do I select a rectangular region?
-* Q3.7.8::      Why does M-w take so long?
-
-The Menubar and Toolbar:
-* Q3.8.1::      How do I get rid of the menu (or menubar)?
-* Q3.8.2::      Can I customize the basic menubar?
-* Q3.8.3::      How do I control how many buffers are listed in the menu `Buffers' list?
-* Q3.8.4::      Resources like `Emacs*menubar*font' are not working?
-* Q3.8.5::      How can I bind a key to a function to toggle the toolbar?
-
-Scrollbars:
-* Q3.9.1::      How can I disable the scrollbar?
-* Q3.9.2::      How can one use resources to change scrollbar colors?
-* Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
-* Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
-
-Text Selections:
-* Q3.10.1::     How can I turn off or change highlighted selections?
-* Q3.10.2::     How do I get that typing on an active region removes it?
-* Q3.10.3::     Can I turn off the highlight during isearch?
-* Q3.10.4::     How do I turn off highlighting after C-x C-p (mark-page)?
-* Q3.10.5::     The region disappears when I hit the end of buffer while scrolling.
-
-Major Subsystems
-
-* Q4.0.1::      How do I set up VM to retrieve remote mail using POP?
-* Q4.0.2::      How do I get VM to filter mail for me?
-* Q4.0.3::      How can I get VM to automatically check for new mail?
-* Q4.0.4::      [This question intentionally left blank]
-* Q4.0.5::      How do I get my outgoing mail archived?
-* Q4.0.6::      I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
-* Q4.0.7::      Is there a mailing list or FAQ for VM?
-* Q4.0.8::      Remote mail reading with VM.
-* Q4.0.9::      rmail or VM gets an error incorporating new mail.
-* Q4.0.10::     How do I make VM stay in a single frame?
-* Q4.0.11::     How do I make VM or mh-e display graphical smilies?
-* Q4.0.12::     Customization of VM not covered in the manual or here.
-
-Web browsing with W3:
-* Q4.1.1::      What is W3?
-* Q4.1.2::      How do I run W3 from behind a firewall?
-* Q4.1.3::      Is it true that W3 supports style sheets and tables?
-
-Reading Netnews and Mail with Gnus:
-* Q4.2.1::      GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
-* Q4.2.2::      [This question intentionally left blank]
-* Q4.2.3::      How do I make Gnus stay within a single frame?
-* Q4.2.4::      How do I customize the From: line?
-
-Other Mail & News:
-* Q4.3.1::      How can I read and/or compose MIME messages?
-* Q4.3.2::      What is TM and where do I get it?
-* Q4.3.3::      Why isn't this `movemail' program working?
-* Q4.3.4::      Movemail is also distributed by Netscape?  Can that cause problems?
-* Q4.3.5::      Where do I find pstogif (required by tm)?
-
-Sparcworks, EOS, and WorkShop:
-* Q4.4.1::      What is SPARCworks, EOS, and WorkShop
-* Q4.4.2::      How do I start the Sun Workshop support in XEmacs 21?
-
-Energize:
-* Q4.5.1::      What is/was Energize?
-
-Infodock:
-* Q4.6.1::      What is Infodock?
-
-Other Unbundled Packages:
-* Q4.7.1::      What is AUC TeX?  Where do you get it?
-* Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
-* Q4.7.3::      [This question intentionally left blank]
-* Q4.7.4::      Problems installing AUC TeX
-* Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
-* Q4.7.6::      Is there a MatLab mode?
-
-The Miscellaneous Stuff
-
-* Q5.0.1::      How can I do source code highlighting using font-lock?
-* Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
-* Q5.0.3::      How do I get `More' Syntax Highlighting on by default?
-* Q5.0.4::      How can I enable auto-indent and/or Filladapt?
-* Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
-* Q5.0.6::      How do I start up a second shell buffer?
-* Q5.0.7::      Telnet from shell filters too much.
-* Q5.0.8::      Why does edt emulation not work?
-* Q5.0.9::      How can I emulate VI and use it as my default mode?
-* Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     [This question intentionally left blank]
-* Q5.0.12::     How do I disable gnuserv from opening a new frame?
-* Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
-* Q5.0.14::     Strange things are happening in Shell Mode.
-* Q5.0.15::     Where do I get the latest CC Mode?
-* Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
-* Q5.0.17::     How can I get two instances of info?
-* Q5.0.18::     [This question intentionally left blank]
-* Q5.0.19::     Is there something better than LaTeX mode?
-* Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
-
-Emacs Lisp Programming Techniques:
-* Q5.1.1::      The difference in key sequences between XEmacs and GNU Emacs?
-* Q5.1.2::      Can I generate "fake" keyboard events?
-* Q5.1.3::      Could you explain `read-kbd-macro' in more detail?
-* Q5.1.4::      What is the performance hit of `let'?
-* Q5.1.5::      What is the recommended use of `setq'?
-* Q5.1.6::      What is the typical misuse of `setq' ?
-* Q5.1.7::      I like the `do' form of cl, does it slow things down?
-* Q5.1.8::      I like recursion, does it slow things down?
-* Q5.1.9::      How do I put a glyph as annotation in a buffer?
-* Q5.1.10::     `map-extents' won't traverse all of my extents!
-* Q5.1.11::     My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
-
-Sound:
-* Q5.2.1::      How do I turn off the sound?
-* Q5.2.2::      How do I get funky sounds instead of a boring beep?
-* Q5.2.3::      What's NAS, how do I get it?
-* Q5.2.4::      Sunsite sounds don't play.
-
-Miscellaneous:
-* Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
-* Q5.3.2::      [This question intentionally left blank]
-* Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
-* Q5.3.4::      Getting M-x lpr to work with postscript printer.
-* Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
-* Q5.3.6::      [This question intentionally left blank]
-* Q5.3.7::      Can I have the end of the buffer delimited in some way?
-* Q5.3.8::      How do I insert today's date into a buffer?
-* Q5.3.9::      Are only certain syntactic character classes available for abbrevs?
-* Q5.3.10::     How can I get those oh-so-neat X-Face lines?
-* Q5.3.11::     How do I add new Info directories?
-* Q5.3.12::     What do I need to change to make printing work?
-
-XEmacs on MS Windows
-
-General Info:
-* Q6.0.1::      What is the status of the XEmacs port to Windows?
-* Q6.0.2::      What flavors of MS Windows are supported?
-* Q6.0.3::      Are binaries available?
-* Q6.0.4::      Can I build XEmacs on MS Windows with support for X or Cygwin?
-
-Building XEmacs on MS Windows:
-* Q6.1.1::      I decided to run with X.  Where do I get an X server?
-* Q6.1.2::      What compiler do I need to compile XEmacs?
-* Q6.1.3::      How do I compile for the native port?
-* Q6.1.4::      How do I compile for the X port?
-* Q6.1.5::      How do I compile for Cygnus' Cygwin?
-* Q6.1.6::      What do I need for Cygwin?
-
-Customization and User Interface:
-* Q6.2.1::      How will the port cope with differences in the Windows user interface?
-* Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
-* Q6.2.3::      Where do I put my `init.el'/`.emacs' file?
-
-Miscellaneous:
-* Q6.3.1::      Will XEmacs rename all the win32-* symbols to w32-*?
-* Q6.3.2::      What are the differences between the various MS Windows emacsen?
-* Q6.3.3::      What is the porting team doing at the moment?
-
-Troubleshooting:
-* Q6.4.1::      XEmacs won't start on Windows. (NEW)
-
-Current Events:
-
-* Q7.0.1::      What is new in 20.2?
-* Q7.0.2::      What is new in 20.3?
-* Q7.0.3::      What is new in 20.4?
-* Q7.0.4::      Procedural changes in XEmacs development.
+1 Introduction, Policy, Credits
+
+1.0: What is XEmacs?
+* Q1.0.1::    What is XEmacs?
+* Q1.0.2::    What is the current version of XEmacs?
+* Q1.0.3::    How do you pronounce XEmacs?
+* Q1.0.4::    What does XEmacs look like?
+* Q1.0.5::    Who wrote XEmacs?
+* Q1.0.6::    Who wrote the FAQ?
+
+1.1: Getting XEmacs
+* Q1.1.1::    Where can I find XEmacs?
+* Q1.1.2::    Are binaries available?
+* Q1.1.3::    How do I get the bleeding-edge sources?
+* Q1.1.4::    Where can I obtain a printed copy of the XEmacs User's Manual?
+
+1.2: Versions for Different Operating Systems
+* Q1.2.1::    Do I need X11 to run XEmacs?
+* Q1.2.2::    What versions of Unix does XEmacs run on?
+* Q1.2.3::    Is there a port of XEmacs to Microsoft Windows?
+* Q1.2.4::    Can I build XEmacs on MS Windows with X support?  Do I need to?
+* Q1.2.5::    What are Cygwin and MinGW, and do I need them to run XEmacs?
+* Q1.2.6::    What are the differences between the various MS Windows emacsen?
+* Q1.2.7::    How does the port cope with differences in the Windows user interface?
+* Q1.2.8::    Is there a port of XEmacs to the Macintosh?
+* Q1.2.9::    Is there a port of XEmacs to MS-DOS?
+* Q1.2.10::   Is there a port of XEmacs to OS/2?
+* Q1.2.11::   Is there a port of XEmacs to NextStep?
+* Q1.2.12::   Is there a port of XEmacs to VMS?
+
+1.3: Getting Started
+* Q1.3.1::    What is an `init.el' or `.emacs' and is there a sample one?
+* Q1.3.2::    Where do I put my `init.el' file?
+* Q1.3.3::    Can I use the same `init.el' with the other Emacs?
+* Q1.3.4::    Any good XEmacs tutorials around?
+* Q1.3.5::    May I see an example of a useful XEmacs Lisp function?
+* Q1.3.6::    And how do I bind it to a key?
+* Q1.3.7::    What's the difference between a macro and a function?
+* Q1.3.8::    What is `Custom'?
+
+1.4: Getting Help
+* Q1.4.1::    Where can I get help?
+* Q1.4.2::    Which mailing lists are there?
+* Q1.4.3::    Where are the mailing lists archived?
+* Q1.4.4::    How can I get two instances of info?
+* Q1.4.5::    How do I add new Info directories?
+
+1.5: Contributing to XEmacs
+* Q1.5.1::    How do I submit changes to the FAQ?
+* Q1.5.2::    How do I become a beta tester?
+* Q1.5.3::    How do I contribute to XEmacs itself?
+* Q1.5.4::    How do I get started developing XEmacs?
+* Q1.5.5::    What's the basic layout of the code?
+
+1.6: Politics (XEmacs vs. GNU Emacs)
+* Q1.6.1::    What is GNU Emacs?
+* Q1.6.2::    How does XEmacs differ from GNU Emacs?
+* Q1.6.3::    How much does XEmacs differ?
+* Q1.6.4::    Is XEmacs "GNU"?
+* Q1.6.5::    What is the correct way to refer to XEmacs and GNU Emacs?
+* Q1.6.6::    Why haven't XEmacs and GNU Emacs merged?
+
+1.7: External Packages
+* Q1.7.1::    What is the package system?
+* Q1.7.2::    Which external packages are there?
+* Q1.7.3::    Do I need to have the packages to run XEmacs?
+* Q1.7.4::    Is there a way to find which package has particular functionality?
+
+1.8: Internationalization
+* Q1.8.1::    What is the status of internationalization support aka MULE (including Asian language support)?
+* Q1.8.2::    How can I help with internationalization?
+* Q1.8.3::    How do I type non-ASCII characters?
+* Q1.8.4::    Can XEmacs messages come out in a different language?
+* Q1.8.5::    Please explain the various input methods in MULE/XEmacs
+* Q1.8.6::    How do I portably code for MULE/XEmacs?
+* Q1.8.7::    How about Cyrillic modes?
+* Q1.8.8::    Does XEmacs support Unicode?
+* Q1.8.9::    How does XEmacs display Unicode?
+
+2 Installation and Troubleshooting
+
+2.0: Installation (General)
+* Q2.0.1::    How do I build and install XEmacs?
+* Q2.0.2::    Where do I find external libraries?
+* Q2.0.3::    How do I specify the paths that XEmacs uses for finding files?
+* Q2.0.4::    Running XEmacs without installing
+* Q2.0.5::    XEmacs is too big
+
+2.1: Package Installation
+* Q2.1.1::    How do I install the packages?
+* Q2.1.2::    Can I install the packages individually?
+* Q2.1.3::    Can I install the packages automatically?
+* Q2.1.4::    Can I upgrade or remove packages?
+* Q2.1.5::    Which packages to install?
+* Q2.1.6::    Can you describe the package location process in more detail?
+* Q2.1.7::    EFS fails with "500 AUTH not understood"
+
+2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
+* Q2.2.1::    Libraries in non-standard locations
+* Q2.2.2::    Why can't I strip XEmacs?
+
+2.3: Windows Installation (Windows, Cygwin, MinGW)
+* Q2.3.1::    What exactly are all the different ways to build XEmacs under Windows?
+* Q2.3.2::    What compiler/libraries do I need to compile XEmacs?
+* Q2.3.3::    How do I compile the native port?
+* Q2.3.4::    What do I need for Cygwin?
+* Q2.3.5::    How do I compile under Cygwin?
+* Q2.3.6::    How do I compile using MinGW (aka `the -mno-cygwin flag to gcc')?
+* Q2.3.7::    How do I compile with X support?
+* Q2.3.8::    Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
+
+2.4: General Troubleshooting
+* Q2.4.1::    How do I deal with bugs or with problems building, installing, or running?
+* Q2.4.2::    Help!  XEmacs just crashed on me!
+* Q2.4.3::    XEmacs crashes and I compiled it myself.
+* Q2.4.4::    How to debug an XEmacs problem with a debugger
+* Q2.4.5::    I get a cryptic error message when trying to do something.
+* Q2.4.6::    XEmacs hangs when I try to do something.
+* Q2.4.7::    I get an error message when XEmacs is running in batch mode.
+* Q2.4.8::    The keyboard or mouse is not working properly, or I have some other event-related problem.
+* Q2.4.9::    C-g doesn't work for me.  Is it broken?
+* Q2.4.10::   How do I debug process-related problems?
+* Q2.4.11::   XEmacs is outputting lots of X errors.
+* Q2.4.12::   After upgrading, XEmacs won't do `foo' any more!
+
+2.5: Startup-Related Problems
+* Q2.5.1::    XEmacs cannot connect to my X Terminal!
+* Q2.5.2::    Startup problems related to paths or package locations.
+* Q2.5.3::    XEmacs won't start without network.
+* Q2.5.4::    Startup warnings about deducing proper fonts?
+* Q2.5.5::    Warnings from incorrect key modifiers.
+* Q2.5.6::    XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
+
+3 Editing Functions
+
+3.0: The Keyboard
+* Q3.0.1::    How can I customize the keyboard?
+* Q3.0.2::    How can I bind complex functions (or macros) to keys?
+* Q3.0.3::    How do I bind C-. and C-; to scroll one line up and down?
+* Q3.0.4::    Globally binding Delete?
+* Q3.0.5::    How to map Help key alone on Sun type4 keyboard?
+* Q3.0.6::    How can you type in special characters in XEmacs?
+* Q3.0.7::    Can I turn on "sticky" modifier keys?
+* Q3.0.8::    How do I map the arrow keys?
+* Q3.0.9::    HP Alt key as Meta.
+* Q3.0.10::   Why does edt emulation not work?
+* Q3.0.11::   How can I emulate VI and use it as my default mode?
+
+3.1: The Mouse
+* Q3.1.1::    How can I turn off Mouse pasting?
+* Q3.1.2::    How do I set control/meta/etc modifiers on mouse buttons?
+* Q3.1.3::    Clicking the left button does not do anything in buffer list.
+* Q3.1.4::    How can I get a list of buffers when I hit mouse button 3?
+* Q3.1.5::    How can I set XEmacs up so that it pastes where the text cursor is?
+
+3.2: Buffers, Text Editing
+* Q3.2.1::    Can I have the end of the buffer delimited in some way?
+* Q3.2.2::    How do I insert today's date into a buffer?
+* Q3.2.3::    How do I get a single minibuffer frame?
+* Q3.2.4::    How can I enable auto-indent and/or Filladapt?
+* Q3.2.5::    How can I get XEmacs to come up in text/auto-fill mode by default?
+
+3.3: Text Selections
+* Q3.3.1::    How do I select a rectangular region?
+* Q3.3.2::    How can I turn off or change highlighted selections?
+* Q3.3.3::    How do I cause typing on an active region to remove it?
+* Q3.3.4::    Can I turn off the highlight during isearch?
+* Q3.3.5::    Why is killing so slow?
+* Q3.3.6::    Why does M-w take so long?
+
+3.4: Editing Source Code
+* Q3.4.1::    I do not like cc-mode.  How do I use the old c-mode?
+* Q3.4.2::    How do you make XEmacs indent CL if-clauses correctly?
+
+4 Display Functions
+
+4.0: Textual Fonts and Colors
+* Q4.0.1::    How do I specify a font?
+* Q4.0.2::    How do I set the text, menu and modeline fonts?
+* Q4.0.3::    How can I set color options from `init.el'?
+* Q4.0.4::    How can I set the colors when highlighting a region?
+* Q4.0.5::    How can I limit color map usage?
+* Q4.0.6::    My tty supports color, but XEmacs doesn't use them.
+* Q4.0.7::    Can I have pixmap backgrounds in XEmacs?
+* Q4.0.8::    How do I display non-ASCII characters?
+* Q4.0.9::    Font selections in don't get saved after `Save Options'.
+
+4.1: Syntax Highlighting (Font Lock)
+* Q4.1.1::    How can I do source code highlighting using font-lock?
+* Q4.1.2::    How do I get `More' Syntax Highlighting on by default?
+
+4.2: The Modeline
+* Q4.2.1::    How can I make the modeline go away?
+* Q4.2.2::    How do you have XEmacs display the line number in the modeline?
+* Q4.2.3::    How do I get XEmacs to put the time of day on the modeline?
+* Q4.2.4::    How can I change the modeline color based on the mode used?
+
+4.3: The Cursor
+* Q4.3.1::    Is there a way to make the bar cursor thicker?
+* Q4.3.2::    Is there a way to get back the block cursor?
+* Q4.3.3::    Can I make the cursor blink?
+
+4.4: The Menubar
+* Q4.4.1::    How do I get rid of the menubar?
+* Q4.4.2::    How can I customize the menubar?
+* Q4.4.3::    How do I enable use of the keyboard (Alt) to access menu items?
+* Q4.4.4::    How do I control how many buffers are listed in the menu `Buffers List'?
+* Q4.4.5::    Resources like `Emacs*menubar*font' are not working?
+
+4.5: The Toolbar
+* Q4.5.1::    How do I get rid of the toolbar?
+* Q4.5.2::    How can I customize the toolbar?
+* Q4.5.3::    How can I bind a key to a function to toggle the toolbar?
+* Q4.5.4::    `Can't instantiate image error...' in toolbar
+
+4.6: Scrollbars and Scrolling
+* Q4.6.1::    How can I disable the scrollbar?
+* Q4.6.2::    How can I change the scrollbar width?
+* Q4.6.3::    How can I use resources to change scrollbar colors?
+* Q4.6.4::    Moving the scrollbar can move the point; can I disable this?
+* Q4.6.5::    Scrolling one line at a time.
+* Q4.6.6::    How can I turn off automatic horizontal scrolling in specific modes?
+* Q4.6.7::    I find auto-show-mode disconcerting.  How do I turn it off?
+
+4.7: The Gutter Tabs, The Progress Bar, Widgets
+* Q4.7.1::    How can I disable the gutter tabs?
+* Q4.7.2::    How can I disable the progress bar?
+* Q4.7.3::    There are bugs in the gutter or widgets.
+* Q4.7.4::    How can I customize the gutter or gutter tabs?
+
+5 Interfacing with the Operating System and External Devices
+
+5.0: X Window System and Resources
+* Q5.0.1::    Where is a list of X resources?
+* Q5.0.2::    How can I detect a color display?
+* Q5.0.3::    How can I get the icon to just say `XEmacs'?
+* Q5.0.4::    How can I have the window title area display the full path?
+* Q5.0.5::    `xemacs -name junk' doesn't work?
+* Q5.0.6::    `-iconic' doesn't work.
+
+5.1: Microsoft Windows
+* Q5.1.1::    Does XEmacs rename all the `win32-*' symbols to `w32-*'?
+* Q5.1.2::    How do I get Windows Explorer to associate a file type with XEmacs?
+
+5.2: Printing
+* Q5.2.1::    What do I need to change to make printing work?
+* Q5.2.2::    How can I print WYSIWYG a font-locked buffer?
+* Q5.2.3::    Getting M-x lpr to work with postscript printer.
+* Q5.2.4::    Can you print under MS Windows?
+
+5.3: Sound
+* Q5.3.1::    How do I turn off the sound?
+* Q5.3.2::    How do I get funky sounds instead of a boring beep?
+* Q5.3.3::    What are NAS and ESD (EsounD)?
+* Q5.3.4::    Sunsite sounds don't play.
+
+5.4: Running an Interior Shell, Invoking Subprocesses
+* Q5.4.1::    What is an interior shell?
+* Q5.4.2::    How do I start up a second shell buffer?
+* Q5.4.3::    Telnet from shell filters too much
+* Q5.4.4::    Strange things are happening in Shell Mode.
+* Q5.4.5::    XEmacs complains "No such file or directory, diff"
+* Q5.4.6::    Cygwin error "fork_copy: linked dll/bss pass 0 failed"
+
+5.5: Multiple Device Support
+* Q5.5.1::    How do I open a frame on another screen of my multi-headed display?
+* Q5.5.2::    Can I really connect to a running XEmacs after calling up over a modem?  How?
+* Q5.5.3::    How do I disable gnuserv from opening a new frame?
+* Q5.5.4::    How do I start gnuserv so that each subsequent XEmacs is a client?
+* Q5.5.5::    Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+
+6 Connecting to the Internet
+
+6.0: General Mail and News
+* Q6.0.1::    What are the various packages for reading mail?
+* Q6.0.2::    How can I send mail?
+* Q6.0.3::    How do I get my outgoing mail archived?
+* Q6.0.4::    How can I read and/or compose MIME messages?
+* Q6.0.5::    How do I customize the From line?
+* Q6.0.6::    How do I get my MUA to filter mail for me?
+* Q6.0.7::    Remote mail reading with an MUA.
+* Q6.0.8::    An MUA gets an error incorporating new mail.
+* Q6.0.9::    Why isn't `movemail' working?
+* Q6.0.10::   How do I make my MUA display graphical smilies?
+* Q6.0.11::   How can I get those oh-so-neat X-Face lines?
+
+6.1: Reading Mail with VM
+* Q6.1.1::    How do I set up VM to retrieve mail from a remote site using POP?
+* Q6.1.2::    How can I get VM to automatically check for new mail?
+* Q6.1.3::    I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
+* Q6.1.4::    Is there a mailing list or FAQ for VM?
+* Q6.1.5::    How do I make VM stay in a single frame?
+* Q6.1.6::    Customization of VM not covered in the manual, or here.
+
+6.2: Reading Netnews and Mail with Gnus
+* Q6.2.1::    GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+* Q6.2.2::    How do I make Gnus stay within a single frame?
+
+6.3: FTP Access
+* Q6.3.1::    Can I edit files on other hosts?
+* Q6.3.2::    What is EFS?
+
+6.4: Web Browsing with W3
+* Q6.4.1::    What is W3?
+* Q6.4.2::    How do I run W3 from behind a firewall?
+* Q6.4.3::    Is it true that W3 supports style sheets and tables?
+
+7 Advanced Customization Using XEmacs Lisp
+
+7.0: Emacs Lisp and `init.el'
+* Q7.0.1::    What version of Emacs am I running?
+* Q7.0.2::    How can I evaluate Emacs-Lisp expressions?
+* Q7.0.3::    `(setq tab-width 6)' behaves oddly.
+* Q7.0.4::    How can I add directories to the `load-path'?
+* Q7.0.5::    How to check if a lisp function is defined?
+* Q7.0.6::    Can I force the output of `(face-list)' to a buffer?
+
+7.1: Emacs Lisp Programming Techniques
+* Q7.1.1::    What is the difference in key sequences between XEmacs and GNU Emacs?
+* Q7.1.2::    Can I generate "fake" keyboard events?
+* Q7.1.3::    Could you explain `read-kbd-macro' in more detail?
+* Q7.1.4::    What is the performance hit of `let'?
+* Q7.1.5::    What is the recommended use of `setq'?
+* Q7.1.6::    What is the typical misuse of `setq'?
+* Q7.1.7::    I like the `do' form of cl, does it slow things down?
+* Q7.1.8::    I like recursion, does it slow things down?
+* Q7.1.9::    How do I put a glyph as annotation in a buffer?
+* Q7.1.10::   `map-extents' won't traverse all of my extents!
+* Q7.1.11::   My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
+
+7.2: Mathematics
+* Q7.2.1::    What are bignums, ratios, and bigfloats in Lisp?
+* Q7.2.2::    XEmacs segfaults when I use very big numbers!
+* Q7.2.3::    Bignums are really slow!
+* Q7.2.4::    Equal bignums don't compare as equal!  What gives?
+
+8 Other External Packages
+
+8.0: TeX
+* Q8.0.1::    Is there something better than LaTeX mode?
+* Q8.0.2::    What is AUCTeX?  Where do you get it?
+* Q8.0.3::    Problems installing AUCTeX.
+* Q8.0.4::    How do I turn off current chapter from AUCTeX modeline?
+
+8.1: Other Unbundled Packages
+* Q8.1.1::    Is there a reason for an Emacs package not to be included in XEmacs?
+* Q8.1.2::    Are there any Emacs Lisp Spreadsheets?
+* Q8.1.3::    Is there a MatLab mode?
+
+8.2: Environments Built Around XEmacs
+* Q8.2.1::    What are SPARCworks, EOS, and WorkShop?
+* Q8.2.2::    How do I start the Sun Workshop support in XEmacs 21?
+* Q8.2.3::    What is/was Energize?
+* Q8.2.4::    What is Infodock?
+
+9 What the Future Holds
+
+9.0: Changes
+* Q9.0.1::    What new features will be in XEmacs soon?
+* Q9.0.2::    What's new in XEmacs 21.4?
+* Q9.0.3::    What's new in XEmacs 21.1?
+* Q9.0.4::    What's new in XEmacs 20.4?
+* Q9.0.5::    What's new in XEmacs 20.3?
+* Q9.0.6::    What's new in XEmacs 20.2?
+
+10 New information about old XEmacsen
+
+10.0: XEmacs 21.1
+* Q10.0.1::   Gnus 5.10 won't display smileys in XEmacs 21.1.
+* Q10.0.2::   XEmacs won't start on Windows in XEmacs 21.1.
 
 \1f
 File: xemacs-faq.info,  Node: Introduction,  Next: Installation,  Prev: Top,  Up: Top
@@ -365,9 +415,9 @@ File: xemacs-faq.info,  Node: Introduction,  Next: Installation,  Prev: Top,  Up
 1 Introduction, Policy, Credits
 *******************************
 
-   Learning XEmacs is a lifelong activity.  Even people who have used
-Emacs for years keep discovering new features.  Therefore this document
-cannot be complete.  Instead it is aimed at the person who is either
+Learning XEmacs is a lifelong activity.  Even people who have used Emacs
+for years keep discovering new features.  Therefore this document cannot
+be complete.  Instead it is aimed at the person who is either
 considering XEmacs for their own use, or has just obtained it and is
 wondering what to do next.  It is also useful as a reference to
 available resources.
@@ -375,86 +425,125 @@ available resources.
    The previous maintainer of the FAQ was Anthony Rossini
 <rossini@biostat.washington.edu>, who started it, after getting tired
 of hearing JWZ complain about repeatedly having to answer questions.
-Ben Wing <ben@xemacs.org> and Chuck Thompson <cthomp@xemacs.org>, the
-principal authors of XEmacs, then took over and Ben did a massive
-update reorganizing the whole thing.  At which point Anthony took back
-over, but then had to give it up again.  Some of the other contributors
-to this FAQ are listed later in this document.
+Ben Wing <ben@xemacs.org> then took over and did a massive update
+reorganizing the whole thing.  At this point Anthony took back over,
+but then had to give it up again.  Some of the other contributors to
+this FAQ are listed later in this document.
 
    The previous version was converted to hypertext format, and edited by
 Steven L. Baur <steve@xemacs.org>.  It was converted back to texinfo by
 Hrvoje Niksic <hniksic@xemacs.org>.  The FAQ was then maintained by
-Andreas Kaempf <andreas@sccon.com>, who passed it on to ChristianNyb/o.
+Andreas Kaempf <andreas@sccon.com>, who passed it on to ChristianNyb/o,
+and then to Sandra Wambold <wambold@xemacs.org>.
+
+   The current version of the FAQ has been heavily redone by Ben Wing
+<ben@xemacs.org>.
 
    If you notice any errors or items which should be added or amended to
-this FAQ please send email to Sandra Wambold <faq@xemacs.org>.  Include
+this FAQ please send email to <xemacs-beta@xemacs.org>.  Include
 `XEmacs FAQ' on the Subject: line.
 
 * Menu:
 
-Introduction:
-* Q1.0.1::      What is XEmacs?
-* Q1.0.2::      What is the current version of XEmacs?
-* Q1.0.3::      Where can I find it?
-* Q1.0.4::      Why Another Version of Emacs?
-* Q1.0.5::      Why Haven't XEmacs and GNU Emacs Merged?
-* Q1.0.6::      Where can I get help?
-* Q1.0.7::      Where are the mailing lists archived?
-* Q1.0.8::      How do you pronounce XEmacs?
-* Q1.0.9::      What does XEmacs look like?
-* Q1.0.10::     Is there a port of XEmacs to Microsoft ('95 or NT)?
-* Q1.0.11::     Is there a port of XEmacs to the Macintosh?
-* Q1.0.12::     Is there a port of XEmacs to NextStep?
-* Q1.0.13::     Is there a port of XEmacs to OS/2?
-* Q1.0.14::     Where can I get a printed copy of the XEmacs users manual?
-
-Policies:
-* Q1.1.1::      What is the FAQ editorial policy?
-* Q1.1.2::      How do I become a Beta Tester?
-* Q1.1.3::      How do I contribute to XEmacs itself?
-
-Credits:
-* Q1.2.1::      Who wrote XEmacs?
-* Q1.2.2::      Who contributed to this version of the FAQ?
-* Q1.2.3::      Who contributed to the FAQ in the past?
-
-Internationalization:
-* Q1.3.1::      What is the status of internationalization support aka MULE (including Asian language support?
-* Q1.3.2::      How can I help with internationalization?
-* Q1.3.3::      How do I type non-ASCII characters?
-* Q1.3.4::      Can XEmacs messages come out in a different language?
-* Q1.3.5::      Please explain the various input methods in MULE/XEmacs
-* Q1.3.6::      How do I portably code for MULE/XEmacs?
-* Q1.3.7::      How about Cyrillic Modes?
-
-Getting Started:
-* Q1.4.1::      What is an `init.el' or `.emacs' and is there a sample one?
-* Q1.4.2::      Can I use the same `init.el'/`.emacs' with the other Emacs?
-* Q1.4.3::      Any good XEmacs tutorials around?
-* Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
-* Q1.4.5::      And how do I bind it to a key?
-* Q1.4.6::      What's the difference between a macro and a function?
+1.0: What is XEmacs?
+* Q1.0.1::    What is XEmacs?
+* Q1.0.2::    What is the current version of XEmacs?
+* Q1.0.3::    How do you pronounce XEmacs?
+* Q1.0.4::    What does XEmacs look like?
+* Q1.0.5::    Who wrote XEmacs?
+* Q1.0.6::    Who wrote the FAQ?
+
+1.1: Getting XEmacs
+* Q1.1.1::    Where can I find XEmacs?
+* Q1.1.2::    Are binaries available?
+* Q1.1.3::    How do I get the bleeding-edge sources?
+* Q1.1.4::    Where can I obtain a printed copy of the XEmacs User's Manual?
+
+1.2: Versions for Different Operating Systems
+* Q1.2.1::    Do I need X11 to run XEmacs?
+* Q1.2.2::    What versions of Unix does XEmacs run on?
+* Q1.2.3::    Is there a port of XEmacs to Microsoft Windows?
+* Q1.2.4::    Can I build XEmacs on MS Windows with X support?  Do I need to?
+* Q1.2.5::    What are Cygwin and MinGW, and do I need them to run XEmacs?
+* Q1.2.6::    What are the differences between the various MS Windows emacsen?
+* Q1.2.7::    How does the port cope with differences in the Windows user interface?
+* Q1.2.8::    Is there a port of XEmacs to the Macintosh?
+* Q1.2.9::    Is there a port of XEmacs to MS-DOS?
+* Q1.2.10::   Is there a port of XEmacs to OS/2?
+* Q1.2.11::   Is there a port of XEmacs to NextStep?
+* Q1.2.12::   Is there a port of XEmacs to VMS?
+
+1.3: Getting Started
+* Q1.3.1::    What is an `init.el' or `.emacs' and is there a sample one?
+* Q1.3.2::    Where do I put my `init.el' file?
+* Q1.3.3::    Can I use the same `init.el' with the other Emacs?
+* Q1.3.4::    Any good XEmacs tutorials around?
+* Q1.3.5::    May I see an example of a useful XEmacs Lisp function?
+* Q1.3.6::    And how do I bind it to a key?
+* Q1.3.7::    What's the difference between a macro and a function?
+* Q1.3.8::    What is `Custom'?
+
+1.4: Getting Help
+* Q1.4.1::    Where can I get help?
+* Q1.4.2::    Which mailing lists are there?
+* Q1.4.3::    Where are the mailing lists archived?
+* Q1.4.4::    How can I get two instances of info?
+* Q1.4.5::    How do I add new Info directories?
+
+1.5: Contributing to XEmacs
+* Q1.5.1::    How do I submit changes to the FAQ?
+* Q1.5.2::    How do I become a beta tester?
+* Q1.5.3::    How do I contribute to XEmacs itself?
+* Q1.5.4::    How do I get started developing XEmacs?
+* Q1.5.5::    What's the basic layout of the code?
+
+1.6: Politics (XEmacs vs. GNU Emacs)
+* Q1.6.1::    What is GNU Emacs?
+* Q1.6.2::    How does XEmacs differ from GNU Emacs?
+* Q1.6.3::    How much does XEmacs differ?
+* Q1.6.4::    Is XEmacs "GNU"?
+* Q1.6.5::    What is the correct way to refer to XEmacs and GNU Emacs?
+* Q1.6.6::    Why haven't XEmacs and GNU Emacs merged?
+
+1.7: External Packages
+* Q1.7.1::    What is the package system?
+* Q1.7.2::    Which external packages are there?
+* Q1.7.3::    Do I need to have the packages to run XEmacs?
+* Q1.7.4::    Is there a way to find which package has particular functionality?
+
+1.8: Internationalization
+* Q1.8.1::    What is the status of internationalization support aka MULE (including Asian language support)?
+* Q1.8.2::    How can I help with internationalization?
+* Q1.8.3::    How do I type non-ASCII characters?
+* Q1.8.4::    Can XEmacs messages come out in a different language?
+* Q1.8.5::    Please explain the various input methods in MULE/XEmacs
+* Q1.8.6::    How do I portably code for MULE/XEmacs?
+* Q1.8.7::    How about Cyrillic modes?
+* Q1.8.8::    Does XEmacs support Unicode?
+* Q1.8.9::    How does XEmacs display Unicode?
+
+1.0: What is XEmacs?
+====================
 
 \1f
 File: xemacs-faq.info,  Node: Q1.0.1,  Next: Q1.0.2,  Prev: Introduction,  Up: Introduction
 
-1.0: Introduction
-=================
-
 Q1.0.1: What is XEmacs?
 -----------------------
 
-   XEmacs is a highly customizable open source text editor and
-application development system.  It is protected under the GNU Public
-License and related to other versions of Emacs, in particular GNU
-Emacs.  Its emphasis is on modern graphical user interface support and
-an open software development model, similar to Linux.  XEmacs has an
-active development community numbering in the hundreds, and runs on
-Windows 95 and NT, Linux and nearly every other version of Unix in
-existence.  Support for XEmacs has been supplied by Sun Microsystems,
-University of Illinois, Lucid, ETL/Electrotechnical Laboratory, Amdahl
-Corporation, BeOpen, and others, as well as the unpaid time of a great
-number of individual developers.
+XEmacs is a powerful, highly customizable open source text editor and
+application development system, with full GUI support.  It is protected
+under the GNU Public License and related to other versions of Emacs, in
+particular GNU Emacs.  Its emphasis is on modern graphical user
+interface support and an open software development model, similar to
+Linux.  XEmacs has an active development community numbering in the
+hundreds (and thousands of active beta testers on top of this), and
+runs on all versions of MS Windows, on Mac OS X, on Linux, and on
+nearly every other version of Unix in existence.  Support for XEmacs
+has been supplied by Sun Microsystems, University of Illinois, Lucid,
+ETL/Electrotechnical Laboratory, Amdahl Corporation, BeOpen, and
+others, as well as the unpaid time of a great number of individual
+developers.
 
 \1f
 File: xemacs-faq.info,  Node: Q1.0.2,  Next: Q1.0.3,  Prev: Q1.0.1,  Up: Introduction
@@ -462,323 +551,246 @@ File: xemacs-faq.info,  Node: Q1.0.2,  Next: Q1.0.3,  Prev: Q1.0.1,  Up: Introdu
 Q1.0.2: What is the current version of XEmacs?
 ----------------------------------------------
 
-   XEmacs versions 21.1.* are releases made from the current stable
-sources.  XEmacs versions 21.2.* are releases made from the development
-sources.  Check at `http://www.xemacs.org' for the current minor
-version.
+XEmacs versions 21.4.* are releases made from the current stable
+sources.  XEmacs versions 21.5.* (which will be released as 22.0) are
+releases made from the development sources.  Check at
+`http://www.xemacs.org' for the current minor version.  XEmacs versions
+21.1.* were the previous stable releases, now retired.
 
-   XEmacs 19.16 was the last release of v19, released in November, 1997,
-which was also the last version without international language support.
+   XEmacs 20.4, released in February 1998, was the last release of v20.
+
+   XEmacs 19.16, released in November, 1997. was the last release of
+v19, and was also the last version without international language
+support.
 
 \1f
 File: xemacs-faq.info,  Node: Q1.0.3,  Next: Q1.0.4,  Prev: Q1.0.2,  Up: Introduction
 
-Q1.0.3: Where can I find it?
-----------------------------
-
-   The canonical source and binaries can be found via anonymous FTP at:
+Q1.0.3: How do you pronounce XEmacs?
+------------------------------------
 
-     `ftp://ftp.xemacs.org/pub/xemacs/'
+The most common pronounciation is `Eks eemax'.
 
 \1f
 File: xemacs-faq.info,  Node: Q1.0.4,  Next: Q1.0.5,  Prev: Q1.0.3,  Up: Introduction
 
-Q1.0.4: Why Another Version of Emacs?
--------------------------------------
-
-   For a detailed description of the differences between GNU Emacs and
-XEmacs and a detailed history of XEmacs, check out the
-     NEWS file (http://www.xemacs.org/About/XEmacsVsGNUemacs.html)
-
-   However, here is a list of some of the reasons why we think you might
-consider using it:
-
-   * It looks nicer.
-
-   * The XEmacs maintainers are generally more receptive to suggestions
-     than the GNU Emacs maintainers.
-
-   * Many more bundled packages than GNU Emacs.
-
-   * Binaries are available for many common operating systems.
-
-   * Face support on TTY's.
-
-   * A built-in toolbar.
-
-   * Better Motif compliance.
-
-   * Some internationalization support (including full MULE support, if
-     compiled with it).
-
-   * Variable-width fonts.
-
-   * Variable-height lines.
-
-   * Marginal annotations.
-
-   * ToolTalk support.
-
-   * XEmacs can be used as an Xt widget, and can be embedded within
-     another application.
-
-   * Horizontal and vertical scrollbars (using real toolkit scrollbars).
-
-   * Better APIs (and performance) for attaching fonts, colors, and
-     other properties to text.
-
-   * The ability to embed arbitrary graphics in a buffer.
-
-   * Completely compatible (at the C level) with the Xt-based toolkits.
+Q1.0.4: What does XEmacs look like?
+-----------------------------------
 
+Screen snapshots are available at
+`http://www.xemacs.org/About/Screenshots/index.html' as part of the
+XEmacs website.
 
 \1f
 File: xemacs-faq.info,  Node: Q1.0.5,  Next: Q1.0.6,  Prev: Q1.0.4,  Up: Introduction
 
-Q1.0.5: Why Haven't XEmacs and GNU Emacs Merged?
-------------------------------------------------
+Q1.0.5: Who wrote XEmacs?
+-------------------------
 
-   There are currently irreconcilable differences in the views about
-technical, programming, design and organizational matters between RMS
-and the XEmacs development team which provide little hope for a merge to
-take place in the short-term future.
+XEmacs is the result of the time and effort of many people, and the
+active developers have changed over time.  There are two major
+components of the XEmacs effort - writing the code itself and providing
+all the support work (testing the code, releasing beta and final
+versions, handling patches, reading bug reports, maintaining the web
+site, managing the mailing lists, etc. etc.).  Neither component would
+work without the other.
 
-   If you have a comment to add regarding the merge, it is a good idea
-to avoid posting to the newsgroups,  because of the very heated
-flamewars that often result.  Mail your questions to
-<xemacs-beta@xemacs.org> and <bug-gnu-emacs@prep.ai.mit.edu>.
+CODING
+------
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.6,  Next: Q1.0.7,  Prev: Q1.0.5,  Up: Introduction
+The primary code contributor over the years has been Ben Wing (active
+since late 1992).  Between 1991 and 1995, large amounts of coding was
+contributed by Jamie Zawinski and Chuck Thompson.  Many other people
+have authored major subsystems or otherwise contributed large amounts of
+code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris,
+Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard
+Mlynarik, Stig, William Perry and plenty of others.
 
-Q1.0.6: Where can I get help?
------------------------------
+   Primary XEmacs-specific subsystems and their authors:
 
-   Probably the easiest way, if everything is installed, is to use
-Info, by pressing `C-h i', or looking for an Info item on the Help
-Menu.  `M-x apropos' can be used to look for particular commands.
+Objects
+        - Conversion from 26-bit to 28-bit pointers and integers,
+          lrecords, lcrecords: Richard Mlynarik, 1994
 
-   For items not found in the manual, try reading this FAQ and reading
-the Usenet group comp.emacs.xemacs.
+        - Conversion to 32-bit pointers and 31-bit integers: Kyle
+          Jones, Martin Buchholz
 
-   If you choose to post to a newsgroup, *please use
-comp.emacs.xemacs*.  Please do not post XEmacs related questions to
-gnu.emacs.help.
+        - Portable dumper, object descriptions: Olivier Galibert
 
-   If you cannot post or read Usenet news, there is a corresponding
-mailing list which is available.  It can be subscribed to by sending a
-message to <xemacs-request@xemacs.org> with `subscribe' in the body of
-the message.  Send to the list at <xemacs@xemacs.org>.  list.  To
-cancel a subscription, you *must* use the xemacs-request address.  Send
-a message with a subject of `unsubscribe' to be removed.
+        - KKCC (new garbage collector), ephemerons, weak boxes: Michael
+          Sperber and students
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.7,  Next: Q1.0.8,  Prev: Q1.0.6,  Up: Introduction
+        - Random object work (object equal and hash methods, weak
+          lists, lcrecord lists, bit vectors, dynarr, blocktype,
+          opaque, string resizing): Ben Wing
 
-Q1.0.7: Where are the mailing lists archived?
----------------------------------------------
+        - Profiling: Ben Wing
 
-   The archives can be found at `http://list-archive.xemacs.org'
+        - Some byte-compilation and hash-table improvements: Martin
+          Buchholz
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.8,  Next: Q1.0.9,  Prev: Q1.0.7,  Up: Introduction
+        - Bignum: Jerry James
 
-Q1.0.8: How do you pronounce XEmacs?
-------------------------------------
+Internationalization/Mule
+        - mostly Ben Wing; many ideas for future work, Stephen Turnbull
 
-   The most common pronounciation is `Eks eemax'.
+I/O
+        - Basic event/event-stream implementation: Jamie Zawinski
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.9,  Next: Q1.0.10,  Prev: Q1.0.8,  Up: Introduction
+        - Most event work since 1994: Ben Wing
 
-Q1.0.9: What does XEmacs look like?
------------------------------------
+        - Asynchronous stuff (async timeouts, signals, quit-checking):
+          Ben Wing
 
-   Screen snapshots are available in the WWW version of the FAQ.
-     `http://www.xemacs.org/faq/xemacs-faq.html'
+        - Process method abstraction, Windows process work: Kirill
+          Katsnelson
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.10,  Next: Q1.0.11,  Prev: Q1.0.9,  Up: Introduction
+        - Misc-user events, async timeouts, most quit-checking and
+          signal code, most other work since 1994: Ben Wing
 
-Q1.0.10: Is there a port of XEmacs to Microsoft ('95 or NT)?
-------------------------------------------------------------
+        - Lstreams: Ben Wing
 
-   Yes, *Note MS Windows::.
+Display
+        - Redisplay mechanism: implementation, Chuck Thompson;
+          additional work, lots of people
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.11,  Next: Q1.0.12,  Prev: Q1.0.10,  Up: Introduction
+        - Glyphs: mostly Ben Wing
 
-Q1.0.11: Is there a port of XEmacs to the Macintosh?
-----------------------------------------------------
+        - Specifiers: Ben Wing
 
-   Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS
-8.5.1 by Pitts Jarvis <pjarvis@ispchannel.com>.  It's available at
-`http://homepage.mac.com/pjarvis/xemacs.html'.
+        - Extents: initial implementation, someone at Lucid; rewrite,
+          1994, Ben Wing
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.12,  Next: Q1.0.13,  Prev: Q1.0.11,  Up: Introduction
+        - Widgets: Andy Piper
 
-Q1.0.12: Is there a port of XEmacs to NextStep?
------------------------------------------------
+        - JPEG/PNG/TIFF image converters: Ben Wing, William Perry,
+          Jareth Hein, others (see comment in `glyphs-eimage.c')
 
-   Carl Edman, apparently no longer at <cedman@princeton.edu>, did the
-port of GNU Emacs to NeXTstep and expressed interest in doing the
-XEmacs port, but never went any farther.
+        - Menus: Jamie Zawinski, someone at Lucid (Lucid menus)
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.13,  Next: Q1.0.14,  Prev: Q1.0.12,  Up: Introduction
+        - Scrollbars: Chuck Thompson, ??? (Lucid scrollbar)
 
-Q1.0.13: Is there a port of XEmacs to OS/2?
--------------------------------------------
+        - Multi-device/device-independence work (console/device/etc
+          methods): Ben Wing, prototype by chuck thompson
 
-   No, but Alexander Nikolaev <avn_1251@mail.ru> is working on it.
+        - Faces: first implementation, Jamie Zawinski; second, chuck;
+          third, Ben Wing
 
-\1f
-File: xemacs-faq.info,  Node: Q1.0.14,  Next: Q1.1.1,  Prev: Q1.0.13,  Up: Introduction
+        - Fonts/colors: first implementation, Jamie Zawinski; further
+          work, Ben Wing
 
-Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual?
------------------------------------------------------------------------
+        - Toolbars: implementation, chuck, much interface work, Ben Wing
 
-   Pre-printed manuals are not available.  If you are familiar with
-TeX, you can generate your own manual from the XEmacs sources.
+        - Gutters, tabs: andy piper
 
-   HTML and Postscript versions of XEmacs manuals may be available from
-the XEmacs web site in the future.  Send requests to <faq@xemacs.org>.
+Device subsystems
+        - X Windows: Jamie Zawinksi, Ben Wing, others
 
-\1f
-File: xemacs-faq.info,  Node: Q1.1.1,  Next: Q1.1.2,  Prev: Q1.0.14,  Up: Introduction
+        - GTK: William Perry, Malcolm Purvis
 
-1.1: Policies
-=============
+        - MS Windows: initial implementation, Jonathan Harris; some
+          more work, Andy Piper, Ben Wing
 
-Q1.1.1: What is the FAQ editorial policy?
------------------------------------------
+        - TTY: Chuck Thompson, Ben Wing
 
-   The FAQ is actively maintained and modified regularly.  All links
-should be up to date.  Unfortunately, some of the information is out of
-date - a situation which the FAQ maintainer is working on.  All
-submissions are welcome, please e-mail submissions to XEmacs FAQ
-maintainers <faq@xemacs.org>.
+        - Cygwin: Andy Piper
 
-   Please make sure that `XEmacs FAQ' appears on the Subject: line.  If
-you think you have a better way of answering a question, or think a
-question should be included, we'd like to hear about it.  Questions and
-answers included into the FAQ will be edited for spelling and grammar
-and will be attributed.  Answers appearing without attribution are
-either from versions of the FAQ dated before May 1996 or are from
-previous FAQ maintainers.  Answers quoted from Usenet news articles will
-always be attributed, regardless of the author.
+Misc
+        - Configure: initial porting from fsf, Chuck Thompson;
+          conversion to autoconf 2, much rewriting, Martin Buchholz
 
-\1f
-File: xemacs-faq.info,  Node: Q1.1.2,  Next: Q1.1.3,  Prev: Q1.1.1,  Up: Introduction
+        - Most initialization-related code: Ben Wing
 
-Q1.1.2: How do I become a Beta Tester?
---------------------------------------
+        - Internals manual, much of Lisp manual: Ben Wing
 
-   Send an email message to <xemacs-beta-request@xemacs.org> with the
-line `subscribe' in the body of the message.
+        - FSF synching: initial sync with FSF 19, Richard Mlynarik,
+          further work, Ben Wing
 
-   Be prepared to get your hands dirty, as beta testers are expected to
-identify problems as best they can.
+SUPPORT
+-------
 
-\1f
-File: xemacs-faq.info,  Node: Q1.1.3,  Next: Q1.2.1,  Prev: Q1.1.2,  Up: Introduction
+Currently, support duties are handled by many different people.
 
-Q1.1.3: How do I contribute to XEmacs itself?
----------------------------------------------
+   Release managers have been
 
-   Ben Wing <ben@xemacs.org> writes:
+   - Stephen Turnbull (April 2001 - January 2003, March 2004 - present,
+     21.2.47 - 21.4.12, 21.5.2 - 21.5.7, 21.5.17 - present)
 
-     BTW if you have a wish list of things that you want added, you
-     have to speak up about it!  More specifically, you can do the
-     following if you want a feature added (in increasing order of
-     usefulness):
+   - Vin Shelton (Mar 1997 - Jan 2001, May 2003 - present, 19.16,
+     21.1.3 - 21.1.14, 21.4.13 - present)
 
-        * Make a posting about a feature you want added.
+   - Steve Youngs (July 2002 - September 2003, 21.5.8 - 21.5.16)
 
-        * Become a beta tester and make more postings about those same
-          features.
+   - Martin Buchholz (December 1998, November 1999 - May 2001, 21.2.7 -
+     21.2.8, 21.2.21 - 21.2.46, 21.5.0 - 21.5.1)
 
-        * Convince us that you're going to use the features in some
-          cool and useful way.
+   - Steve Baur (early 1997 - December 1998, February 1999 - November
+     1999, 19.15 - 21.2.5, 21.2.9 - 21.2.20)
 
-        * Come up with a clear and well-thought-out API concerning the
-          features.
+   - Andy Piper (December 1998, 21.2.6)
 
-        * Write the code to implement a feature and send us a patch.
+   - Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14)
 
-     (not that we're necessarily requiring you to write the code, but
-     we can always hope :)
+   - Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10)
 
-\1f
-File: xemacs-faq.info,  Node: Q1.2.1,  Next: Q1.2.2,  Prev: Q1.1.3,  Up: Introduction
+   The recent overlapping dates are intentional, since two or three
+trees are maintained simultaneously at any point.
 
-1.2: Credits
-============
+   Other major support work:
 
-Q1.2.1: Who wrote XEmacs?
--------------------------
+   - Adrian Aichner wrote and maintains the web site.
 
-   XEmacs is the result of the time and effort of many people.  The
-developers responsible for recent releases are:
+   - Stephen Turnbull has produced many of the beta and semi-stable
+     releases and has attempted to be the "face" of XEmacs on the
+     newsgroups and mailing lists.
 
-   * Martin Buchholz <martin@xemacs.org>
+   - Steve Youngs currently produces the beta releases (???).
 
-   * Steven Turnbull <turnbull@sk.tsukuba.ac.jp>
+   - Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns
+     maintaining the packages.
 
-   * Ben Wing <ben@xemacs.org>
+   - Vin Shelton maintains the stable releases.
 
-   * Hrvoje Niksic <hniksic@xemacs.org>
+   - Testing - #### Norbert, Adrian, ???
 
+   Portraits and email of some of the major developers:
 
-   The developers responsible for older releases were:
+   * Andy Piper <andy@xemacs.org>
 
-   * Steve Baur <steve@xemacs.org>
+   * Ben Wing <ben@xemacs.org>
 
    * Chuck Thompson <cthomp@xemacs.org>
 
-   * Jamie Zawinski <jwz@jwz.org>
+   * Hrvoje Niksic <hniksic@xemacs.org>
 
-   * Richard Mlynarik <mly@adoc.xerox.com>
+   * Jamie Zawinski <jwz@jwz.org>
 
-     Steve Baur was the primary maintainer for 19.15 through 21.0.
+   * Martin Buchholz <martin@xemacs.org>
 
-     Chuck Thompson and Ben Wing were the maintainers for 19.11 through
-     19.14 and heavy code contributors for 19.8 through 19.10.
+   * Richard Mlynarik <mly@adoc.xerox.com>
 
-     Jamie Zawinski was the maintainer for 19.0 through 19.10 (the
-     entire history of Lucid Emacs).  Richard Mlynarik was a heavy code
-     contributor to 19.6 through 19.8.
+   * Stephen Turnbull <stephen@xemacs.org>
 
+   * Steve Baur <steve@xemacs.org>
 
-   Along with many other contributors, partially enumerated in the
-`About XEmacs' option in the Help menu.
+   Many other people have contributed to XEmacs; this is partially
+enumerated in the `About XEmacs' option in the Help menu.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.2.2,  Next: Q1.2.3,  Prev: Q1.2.1,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.0.6,  Next: Q1.1.1,  Prev: Q1.0.5,  Up: Introduction
 
-Q1.2.2: Who contributed to this version of the FAQ?
----------------------------------------------------
+Q1.0.6: Who wrote the FAQ?
+--------------------------
 
-   The following people contributed valuable suggestions to building
-this version of the FAQ (listed in alphabetical order):
+The current version of this FAQ was created by Ben Wing
+<ben@xemacs.org>.
+
+   Previous contributors to the FAQ include
 
    * SL Baur <steve@xemacs.org>
 
    * Hrvoje Niksic <hniksic@xemacs.org>
 
-   * Aki Vehtari <Aki.Vehtari@hut.fi>
-
-
-\1f
-File: xemacs-faq.info,  Node: Q1.2.3,  Next: Q1.3.1,  Prev: Q1.2.2,  Up: Introduction
-
-Q1.2.3: Who contributed to the FAQ in the past?
------------------------------------------------
-
-   This is only a partial list, as many names were lost in a hard disk
-crash some time ago.
-
    * Curtis.N.Bingham <binge@aloft.att.com>
 
    * Georges Brun-Cottan <bruncott@dormeur.inria.fr>
@@ -817,190 +829,420 @@ crash some time ago.
 
    * Aki Vehtari <Aki.Vehtari@hut.fi>
 
+1.1: Getting XEmacs
+===================
+
 \1f
-File: xemacs-faq.info,  Node: Q1.3.1,  Next: Q1.3.2,  Prev: Q1.2.3,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.1.1,  Next: Q1.1.2,  Prev: Q1.0.6,  Up: Introduction
 
-1.3: Internationalization
-=========================
+Q1.1.1: Where can I find XEmacs?
+--------------------------------
 
-Q1.3.1: What is the status of internationalization support aka MULE (including Asian language support?
-------------------------------------------------------------------------------------------------------
+To download XEmacs, visit the XEmacs WWW page at
+`http://www.xemacs.org/Download/'.  The most up-to-date list of
+distribution sites can always be found there.  Try to pick a site that
+is networkologically close to you.  If you know of other mirrors of the
+XEmacs archives, please send e-mail to `mailto:webmaster@xemacs.org'
+and we will list them here as well.
 
-   Both the stable and development versions of XEmacs include
-internationalization support (aka MULE).  MULE currently works on UNIX
-and Linux systems; work for supporting MULE on Windows operating systems
-is in progress.  Binaries compiled without MULE support run faster than
-MULE capable XEmacsen.
+   The canonical distribution point is ftp.xemacs.org, available either
+through HTTP (`http://ftp.xemacs.org/') or anonymous FTP
+(`ftp://ftp.xemacs.org/pub/xemacs/').
 
 \1f
-File: xemacs-faq.info,  Node: Q1.3.2,  Next: Q1.3.3,  Prev: Q1.3.1,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.1.2,  Next: Q1.1.3,  Prev: Q1.1.1,  Up: Introduction
 
-Q1.3.2: How can I help with internationalization?
--------------------------------------------------
+Q1.1.2: Are binaries available?
+-------------------------------
 
-   If you would like to help, you may want to join the
-<xemacs-mule@xemacs.org> mailing list.  Especially needed are people
-who speak/write languages other than English, who are willing to use
-XEmacs/MULE regularly, and have some experience with Elisp.
+MS Windows binaries are available at
+`http://www.xemacs.org/Download/win32/' for the native versions of 21.4
+and 21.1.  Cygwin binaries are now available as part of the standard
+Cygwin installation process.  XEmacs also comes pre-built as part of
+many Linux distributions, such as Red Hat and SuSE.
 
-   *Note Q1.1.2::.
+   Otherwise, you will need to build XEmacs yourself or get your system
+administrator to do it.  Generally, this is not a difficult process
+under Unix and Mac OS X, as XEmacs has been tested under all of the
+common Unix versions and under Mac OS X and comes with an extensive
+configure script that is able to automatically detect most aspects of
+the configuration of your particular system.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.3.3,  Next: Q1.3.4,  Prev: Q1.3.2,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.1.3,  Next: Q1.1.4,  Prev: Q1.1.2,  Up: Introduction
 
-Q1.3.3: How do I type non-ASCII characters?
--------------------------------------------
+Q1.1.3: How do I get the bleeding-edge sources?
+-----------------------------------------------
 
-   See question 3.5.7 (*note Q3.5.7::) in part 3 of this FAQ.
+If you are interested in developing XEmacs, or getting the absolutely
+most recent, up-to-the-moment, bleeding-edge source code, you can
+directly access the master CVS source tree (read-only, of course, until
+you ask for and are granted permission to directly modify portions of
+the source tree) at cvs.xemacs.org.  Directions on how to access the
+source tree are located at
+`http://www.xemacs.org/Develop/cvsaccess.html'.
+
+   Nightly CVS snapshots are available at
+`http://www.dk.xemacs.org/Download/CVS-snapshots/'.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.3.4,  Next: Q1.3.5,  Prev: Q1.3.3,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.1.4,  Next: Q1.2.1,  Prev: Q1.1.3,  Up: Introduction
 
-Q1.3.4: Can XEmacs messages come out in a different language?
--------------------------------------------------------------
+Q1.1.4: Where can I obtain a printed copy of the XEmacs User's Manual?
+----------------------------------------------------------------------
 
-   The message-catalog support has mostly been written but doesn't
-currently work.  The first release of XEmacs 20 will _not_ support it.
-However, menubar localization _does_ work.  To enable it, add to your
-`Emacs' file entries like this:
+Pre-printed manuals are not available.  If you are familiar with TeX,
+you can generate your own manual from the XEmacs sources.
 
-     Emacs*XlwMenu.resourceLabels:                   True
-     Emacs*XlwMenu.file.labelString:                 Fichier
-     Emacs*XlwMenu.openInOtherWindow.labelString:      In anderem Fenster oeffnen
+   HTML and Postscript versions of XEmacs manuals are available from the
+XEmacs web site at `http://www.xemacs.org/Documentation/index.html'.
 
-   The name of the resource is derived from the non-localized entry by
-removing punctuation and capitalizing as above.
+1.2: Versions for Different Operating Systems
+=============================================
 
 \1f
-File: xemacs-faq.info,  Node: Q1.3.5,  Next: Q1.3.6,  Prev: Q1.3.4,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.2.1,  Next: Q1.2.2,  Prev: Q1.1.4,  Up: Introduction
 
-Q1.3.5: Please explain the various input methods in MULE/XEmacs
----------------------------------------------------------------
+Q1.2.1: Do I need X11 to run XEmacs?
+------------------------------------
 
-   MORIOKA Tomohiko <morioka@jaist.ac.jp> writes:
+No.  The name "XEmacs" is unfortunate in the sense that it is *not* an
+X Window System-only version of Emacs.  XEmacs has full color support
+on a color-capable character terminal.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.2.2,  Next: Q1.2.3,  Prev: Q1.2.1,  Up: Introduction
+
+Q1.2.2: What versions of Unix does XEmacs run on?
+-------------------------------------------------
+
+XEmacs is regularly tested on Linux, Solaris, SunOS, HP/UX, FreeBSD,
+OpenBSD, BSD/OS aka BSDI, Tru64 aka DEC/OSF, SCO5, and probably others.
+It should work on all versions of Unix created in the last 10 years or
+so, perhaps with a bit of work on more obscure platforms to correct
+bit-rot.  It uses a sophisticated configuration system to auto-detect
+zillions of features that are implemented differently in different
+versions of Unix, so it will probably work on your vendor's version,
+possibly with a bit of tweaking, even if we've never heard of it.
+
+   For problems with particular machines and versions of Unix, see the
+`PROBLEMS' file.
+
+   Much effort has gone into making XEmacs work on as many different
+machines, configurations, and compilers as possible.
+
+   Much effort has gone into making XEmacs 64-bit clean.
+
+   Much effort has gone into removing system-specific code, and
+replacing such code with autodetection at configure time.
+
+   The XEmacs core should build "out of the box" on most Unix-like
+systems.
+
+   XEmacs 21.2 was tested and `make check' succeeded on these Unix
+configurations as of 2001-02-10:
+
+     alphaev56-dec-osf4.0e (both Compaq C and gcc)
+     i386-unknown-freebsd4.2
+     i386-unknown-netbsdelf1.5
+     i586-sco-sysv5uw7.0.1 (both SCO's cc and gcc)
+     i686-pc-linux-gnu
+     hppa2.0-hp-hpux10.20 (both HP's ANSI cc and gcc)
+     mips-sgi-irix6.5 (both MIPSpro cc and gcc)
+     rs6000-ibm-aix4.3.0.0 (both IBM's xlc and gcc)
+     sparc-sun-solaris2.6 (both Sun's Forte C and gcc)
+     sparc-sun-solaris2.7 (both Sun's Forte C and gcc)
+     sparc-sun-sunos4.1.4 (gcc)
+
+   Some systems have a dual mode 32-bit/64-bit compiler.  On most of
+these, XEmacs requires the `--pdump' (in XEmacs 21.5, `--enable-pdump')
+configure option to build correctly with the 64-bit version of the
+compiler.
 
-     Original Mule supports the following input methods: Wnn4, Wnn6,
-     Canna, SJ3 and XIM. Interfaces for Wnn and SJ3 uses the `egg' user
-     interface. Interface for Canna does not use `egg'. I don't know
-     about XIM. It is to support ATOK, of course, it may work for
-     another servers.
-
-     Wnn supports Japanese, Chinese and Korean. It is made by OMRON and
-     Kyôto university. It is a powerful and complex system.  Wnn4 is
-     free and Wnn6 is not free.
-
-     Canna supports only Japanese. It is made by NEC. It is a simple and
-     powerful system. Canna uses only grammar (Wnn uses grammar and
-     probability between words), so I think Wnn is cleverer than Canna,
-     however Canna users made a good grammar and dictionary.  So for
-     standard modern Japanese, Canna seems cleverer than Wnn4. In
-     addition, the UNIX version of Canna is free (now there is a
-     Microsoft Windows version).
-
-     SJ3 supports only Japanese. It is made by Sony.  XIM supports was
-     made to use ATOK (a major input method in personal computer
-     world).  XIM is the standard for accessing input methods bundled
-     in Japanese versions of Solaris.  (XEmacs 20 will support XIM
-     input).
-
-     Egg consists of following parts:
-
-       1. Input character Translation System (ITS) layer.  It
-          translates ASCII inputs to Kana/PinYin/Hangul characters.
-
-       2. Kana/PinYin/Hangul to Kanji transfer layer.  It is interface
-          layer for network Kana-Kanji server (Wnn and Sj3).
-
-     These input methods are modal, namely there are mode, alphabet
-     mode and Kana-Kanji transfer mode.  However there are mode-less
-     input methods for Egg and Canna.  `Boiled-egg' is a mode-less
-     input method running on Egg.  For Canna, `canna.el' has a tiny
-     boiled-egg like command, `(canna-boil)', and there are some
-     boiled-egg like utilities.  In addition, it was planned to make an
-     abstraction for all transfer type input methods.  However authors
-     of input methods are busy, so maybe this plan is stopped.  Perhaps
-     after Mule merged GNU Emacs will be released, it will be continued.
+     mips-sgi-irix6.5, CC="gcc -mabi=64"
+     mips-sgi-irix6.5, CC="cc -64"
+     rs6000-ibm-aix4.3.0.0, CC="cc -q64"
+
+   On most of these systems, XEmacs also builds with a C++ compiler,
+but not "out of the box".  This feature is only for use by the
+maintainers.
+
+   XEmacs 21.2 is known _not_ to work on any machines with m680x0
+processors.  Sorry, all you sun3 and Unix PC nostalgia buffs out there.
+
+   VMS has never been supported by XEmacs.  In fact, all the old VMS
+code inherited from Emacs has been removed.  Sorry, all you VMS fans
+out there.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.3.6,  Next: Q1.3.7,  Prev: Q1.3.5,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.2.3,  Next: Q1.2.4,  Prev: Q1.2.2,  Up: Introduction
+
+Q1.2.3: Is there a port of XEmacs to Microsoft Windows?
+-------------------------------------------------------
+
+Yes.  Beginning with release 21.0, XEmacs has worked under MS Windows
+and is fully-featured and actively developed.  A group of dedicated
+developers actively maintains and improves the Windows-specific
+portions of the code.  Some of the core developers, in fact, use
+Windows as their only development environment, and some features, such
+as printing, actually work better on Windows than native Unix and Mac
+OS X.  The mailing list at <xemacs-winnt@xemacs.org> is dedicated to
+that effort (please use the -request address to subscribe). (Despite
+its name, XEmacs actually works on all versions of Windows.)
+
+   The list name is misleading, as XEmacs supports and has been
+compiled on Windows 95, Windows 98, Windows NT, Windows 2000, Windows
+ME, Windows XP, and all newer versions of Windows.  The MS
+Windows-specific code is based on Microsoft Win32 API, and will not
+work on MS Windows 3.x or on MS-DOS.
+
+   XEmacs also supports the Cygwin and MinGW development and runtime
+environments, where it also uses native Windows code for graphical
+features.  In addition, under Cygwin it is possible to compile XEmacs
+to use an X server (and XFree86 is available as part of the standard
+Cygwin installation).
 
-Q1.3.6: How do I portably code for MULE/XEmacs?
------------------------------------------------
+\1f
+File: xemacs-faq.info,  Node: Q1.2.4,  Next: Q1.2.5,  Prev: Q1.2.3,  Up: Introduction
 
-   MORIOKA Tomohiko <morioka@jaist.ac.jp> writes:
+Q1.2.4: Can I build XEmacs on MS Windows with X support?  Do I need to?
+-----------------------------------------------------------------------
 
-     MULE and XEmacs are quite different. So the application
-     implementor must write separate code for these mule variants.
+Yes, you can, but no you do not need to.  In fact, we recommend that you
+use a native-GUI version unless you have a specific need for an X
+version.
 
-     MULE and the next version of Emacs are similar but the symbols are
-     very different--requiring separate code as well.
+\1f
+File: xemacs-faq.info,  Node: Q1.2.5,  Next: Q1.2.6,  Prev: Q1.2.4,  Up: Introduction
+
+Q1.2.5: What are Cygwin and MinGW, and do I need them to run XEmacs?
+--------------------------------------------------------------------
+
+To answer the second part of the question: No, you, you don't need
+Cygwin or MinGW to build or to run XEmacs.  But if you have them and
+want to use them, XEmacs supports these environments.
+
+   (One important reason to support Cygwin is that it lets the MS
+Windows developers test out their code in a Unix environment without
+actually having to have a Unix machine around.  For this reason alone,
+Cygwin support is likely to remain supported for a long time in XEmacs.
+Same goes for the X support under Cygwin, for the same reasons.  MinGW
+support, on the other hand, depends on volunteers to keep it up to date;
+but this is generally not hard.)
+
+   Cygwin is a set of tools providing Unix-like API on top of Win32.
+It makes it easy to port large Unix programs without significant
+changes to their source code.  It is a development environment as well
+as a runtime environment.
+
+   When built with Cygwin, XEmacs supports all display types - TTY, X &
+Win32 GUI, and can be built with support for all three simultaneously.
+If you build with Win32 GUI support then the Cygwin version uses the
+majority of the Windows-specific code, which is mostly related to
+display.  If you want to build with X support you need X libraries (and
+an X server to display XEmacs on); see *Note Q2.3.7::.  TTY and Win32
+GUI require no additional libraries beyond what comes standard with
+Cygwin.
+
+   The advantages of the Cygwin version are that it integrates well with
+the Cygwin environment for existing Cygwin users; uses configure so
+building with different features is very easy; and actively supports X &
+TTY.  Furthermore, the entire Cygwin environment and compiler are free,
+whereas Visual C++ costs money.
+
+   The disadvantage is that it requires the whole Cygwin environment,
+whereas the native port requires only a suitable MS Windows compiler.
+Also, it follows the Unix filesystem and process model very closely
+(some will undoubtedly view this as an advantage).
+
+   See `http://www.cygwin.com/' for more information on Cygwin.
+
+   MinGW is a collection of header files and import libraries that allow
+one to use GCC under the Cygwin environment to compile and produce
+exactly the same native Win32 programs that you can using Visual C++.
+Programs compiled with MinGW make use of the standard Microsoft runtime
+library `MSVCRT.DLL', present on all Windows systems, and look, feel,
+and act like a standard Visual-C-produced application. (The only
+difference is the compiler.) This means that, unlike a
+standardly-compiled Cygwin application, no extra runtime support (e.g.
+Cygwin's `cygwin1.dll') is required.  This, along with the fact that
+GCC is free (and works in a nice Unix-y way in a nice Unix-y
+environment, for those die-hard Unix hackers out there), is the main
+advantage of MinGW.  It is also potentially faster than Cygwin because
+it has less overhead when calling Windows, but you lose the POSIX
+emulation layer, which makes Unix programs harder to port. (But this is
+irrelevant for XEmacs since it's already ported to Win32.)
+
+   See `http://www.mingw.org/' for more information on MinGW.
 
-     Namely we must support 3 kinds of mule variants and 4 or 5 or 6
-     kinds of emacs variants... (;_;) I'm shocked, so I wrote a wrapper
-     package called `emu' to provide a common interface.
+\1f
+File: xemacs-faq.info,  Node: Q1.2.6,  Next: Q1.2.7,  Prev: Q1.2.5,  Up: Introduction
 
-     I have the following suggestions about dealing with mule variants:
+Q1.2.6: What are the differences between the various MS Windows emacsen?
+------------------------------------------------------------------------
 
-        * `(featurep 'mule)' `t' on all mule variants
+XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
+Could you briefly explain the differences between them?
 
-        * `(boundp 'MULE)' is `t' on only MULE.  Maybe the next version
-          of Emacs will not have this symbol.
+   Here is a recount of various Emacs versions running on MS Windows:
 
-        * MULE has a variable `mule-version'.  Perhaps the next version
-          of Emacs will have this variable as well.
+   * XEmacs
 
-     Following is a sample to distinguish mule variants:
+        - Beginning with XEmacs 19.12, XEmacs' architecture was
+          redesigned in such a way to allow clean support of multiple
+          window systems.  At this time the TTY support was added,
+          making X and TTY the first two "window systems" supported by
+          XEmacs.  The 19.12 design is the basis for the current native
+          MS Windows code.
+
+        - Some time during 1997, David Hobley (soon joined by Marc
+          Paquette) imported some of the NT-specific portions of GNU
+          Emacs, making XEmacs with X support compile under Windows NT,
+          and creating the "X" port.
+
+        - Several months later, Jonathan Harris sent out initial
+          patches to use the Win32 API, thus creating the native port.
+          Since then, various people have contributed, including Kirill
+          M. Katsnelson (contributed support for menubars, subprocesses
+          and network, as well as loads of other code), Andy Piper
+          (ported XEmacs to Cygwin environment, contributed Windows
+          unexec, Windows-specific glyphs and toolbars code, and more),
+          Ben Wing (loads of improvements; primary MS Windows developer
+          since 2000), Jeff Sparkes (contributed scrollbars support)
+          and many others.
+
+   * NT Emacs
+
+        - NT Emacs was an early version of GNU Emacs 19 modified to
+          compile and run under MS Windows 95 and NT using the native
+          Win32 API.  It was written by Geoff Voelker, and has long
+          since been incorporated into the mainline GNU Emacs
+          distribution.
+
+   * Win-Emacs
+
+        - Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
+          compatibility libraries.  Win-Emacs was written by Ben Wing.
+          The MS Windows code never made it back to Lucid Emacs, and
+          its creator (Pearl Software) has long since gone out of
+          business.
+
+   * GNU Emacs for DOS
+
+        - GNU Emacs features support for MS-DOS and DJGPP (D.J.
+          Delorie's DOS port of GCC).  Such an Emacs is heavily
+          underfeatured, because it does not support long file names,
+          lacks proper subprocesses support, and is far too big
+          compared with typical DOS editors.
+
+   * GNU Emacs compiled with Win32
+
+        - Starting with GNU Emacs 19.30, it has been possible to
+          compile GNU Emacs under MS Windows using the DJGPP compiler
+          and X libraries.  The result is very similar to GNU Emacs
+          compiled under MS DOS, only it works somewhat better because
+          it runs in 32-bit mode, makes use of all the system memory,
+          supports long file names, etc.
 
-          (if (featurep 'mule)
-              (cond ((boundp 'MULE)
-                     ;; for original Mule
-                     )
-                    ((string-match "XEmacs" emacs-version)
-                     ;; for XEmacs with Mule
-                     )
-                    (t
-                     ;; for next version of Emacs
-                     ))
-            ;; for old emacs variants
-            )
 
 \1f
-File: xemacs-faq.info,  Node: Q1.3.7,  Next: Q1.4.1,  Prev: Q1.3.6,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.2.7,  Next: Q1.2.8,  Prev: Q1.2.6,  Up: Introduction
+
+Q1.2.7: How does the port cope with differences in the Windows user interface?
+------------------------------------------------------------------------------
+
+The XEmacs (and Emacs in general) user interface is pretty different
+from what is expected of a typical MS Windows program.  How does the MS
+Windows port cope with it?
+
+   As a general rule, we follow native MS Windows conventions as much as
+possible.  21.4 is a fairly complete Windows application, supporting
+native printing, system file dialog boxes, tool tips, etc.  In cases
+where there's a clear UI conflict, we currently use normal Unix XEmacs
+behavior by default, but make sure the MS Windows "look and feel" (mark
+via shift-arrow, self-inserting deletes region, Alt selects menu items,
+etc.) is easily configurable (respectively: using the variable
+`shifted-motion-keys-select-region' in 21.4 and above [it's in fact the
+default in these versions], or the `pc-select' package; using the
+`pending-del' package; and setting the variable
+`menu-accelerator-enabled' to `menu-force' in 21.4 and above).  In
+fact, if you use the sample `init.el' file as your init file, you will
+get all these behaviors automatically turned on.
+
+   In future versions, some of these features might be turned on by
+default in the MS Windows environment.
 
-Q1.3.7: How about Cyrillic Modes?
----------------------------------
+\1f
+File: xemacs-faq.info,  Node: Q1.2.8,  Next: Q1.2.9,  Prev: Q1.2.7,  Up: Introduction
 
-   Ilya Zakharevich <ilya@math.ohio-state.edu> writes:
+Q1.2.8: Is there a port of XEmacs to the Macintosh?
+---------------------------------------------------
 
-     There is a cyrillic mode in the file `mysetup.zip' in
-     `ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/'.  This is a
-     modification to Valery Alexeev's <ava@math.jhu.ed> `russian.el'
-     which can be obtained from
+Yes.
 
-   `http://ftpsearch.ntnu.no/?query=russian.el.Z'.
+   XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it
+certainly will not feel very much like a Mac application as it has no
+Mac-specific code in it.
 
-   Dima Barsky <d.barsky@ee.surrey.ac.uk> writes:
+   There is also a port of XEmacs 19.14 that works on all recent
+versions of MacOS, from 8.1 through MacOS X, by Pitts Jarvis
+<pjarvis@ispchannel.com> (recently deceased).  It runs in an equivalent
+of TTY mode only (one single Macintosh window, 25 colors), but has a
+large number of Mac-specific additions.  It's available at
+`http://homepage.mac.com/pjarvis/xemacs.html'.
 
-     There is another cyrillic mode for both GNU Emacs and XEmacs by
-     Dmitrii (Mitya) Manin <manin@camelot.mssm.edu> at
-     `http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el'.
+\1f
+File: xemacs-faq.info,  Node: Q1.2.9,  Next: Q1.2.10,  Prev: Q1.2.8,  Up: Introduction
 
-   Rebecca Ore <rebecca.ore@op.net> writes:
+Q1.2.9: Is there a port of XEmacs to MS-DOS?
+--------------------------------------------
 
-     The fullest resource I found on Russian language use (in and out of
-     XEmacs) is
-     `http://sunsite.oit.unc.edu/sergei/Software/Software.html'
+No.  We have never supported running on MS-DOS or Windows 3.1, and in
+fact have long since deleted all MS-DOS-related code.  We're not
+particularly interested in patches for these platforms, as they would
+introduce huge amounts of code clutter due to the woefully
+underfeatured nature of these systems. (See GNU Emacs for a port to
+MS-DOS.)
+
+\1f
+File: xemacs-faq.info,  Node: Q1.2.10,  Next: Q1.2.11,  Prev: Q1.2.9,  Up: Introduction
+
+Q1.2.10: Is there a port of XEmacs to OS/2?
+-------------------------------------------
+
+No, but Alexander Nikolaev <avn_1251@mail.ru> was at one point working
+on it.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.4.1,  Next: Q1.4.2,  Prev: Q1.3.7,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.2.11,  Next: Q1.2.12,  Prev: Q1.2.10,  Up: Introduction
 
-1.4: Getting Started, Backing up & Recovery
-===========================================
+Q1.2.11: Is there a port of XEmacs to NextStep?
+-----------------------------------------------
+
+Carl Edman, apparently no longer at <cedman@princeton.edu>, did the
+port of GNU Emacs to NeXTstep and expressed interest in doing the
+XEmacs port, but never went any farther.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.2.12,  Next: Q1.3.1,  Prev: Q1.2.11,  Up: Introduction
+
+Q1.2.12: Is there a port of XEmacs to VMS?
+------------------------------------------
+
+VMS has never been supported by XEmacs.  In fact, all the old VMS code
+inherited from GNU Emacs has been removed.  Sorry, all you VMS fans out
+there.
 
-Q1.4.1: What is an `init.el' or `.emacs' and is there a sample one?
+1.3: Getting Started
+====================
+
+\1f
+File: xemacs-faq.info,  Node: Q1.3.1,  Next: Q1.3.2,  Prev: Q1.2.12,  Up: Introduction
+
+Q1.3.1: What is an `init.el' or `.emacs' and is there a sample one?
 -------------------------------------------------------------------
 
-   The `init.el' or `.emacs' file is used to customize XEmacs to your
+The `init.el' or `.emacs' file is used to customize XEmacs to your
 tastes.  Starting in 21.4, the preferred location for the init file is
 `~/.xemacs/init.el'; in previous versions, it was `~/.emacs'.  21.4
 still accepts the old location, but the first time you run it, it will
@@ -1027,34 +1269,50 @@ the location of the `etc/' directory type the command `C-h v
 data-directory <RET>'.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.4.2,  Next: Q1.4.3,  Prev: Q1.4.1,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.3.2,  Next: Q1.3.3,  Prev: Q1.3.1,  Up: Introduction
 
-Q1.4.2: Can I use the same `init.el'/`.emacs' with the other Emacs?
--------------------------------------------------------------------
+Q1.3.2: Where do I put my `init.el' file?
+-----------------------------------------
+
+`init.el' is the name of the init file starting with 21.4, and is
+located in the subdirectory `.xemacs/' of your home directory.  In
+prior versions, the init file is called `.emacs' and is located in your
+home directory.
 
-   Yes.  The sample `init.el'/`.emacs' included in the XEmacs
-distribution will show you how to handle different versions and flavors
-of Emacs.
+   Your home directory under Windows is determined by the `HOME'
+environment variable.  If this is not set, it defaults to `C:\'.  To
+set this variable, modify `AUTOEXEC.BAT' under Windows 95/98, or select
+`Control Panel->System->Advanced->Environment Variables...' under
+Windows NT/2000.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.4.3,  Next: Q1.4.4,  Prev: Q1.4.2,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.3.3,  Next: Q1.3.4,  Prev: Q1.3.2,  Up: Introduction
 
-Q1.4.3: Any good tutorials around?
-----------------------------------
+Q1.3.3: Can I use the same `init.el' with the other Emacs?
+----------------------------------------------------------
+
+Yes.  The sample `init.el' included in the XEmacs distribution will
+show you how to handle different versions and flavors of Emacs.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.3.4,  Next: Q1.3.5,  Prev: Q1.3.3,  Up: Introduction
+
+Q1.3.4: Any good XEmacs tutorials around?
+-----------------------------------------
 
-   There's the XEmacs tutorial available from the Help Menu under
-`Basics->Tutorials', or by typing `C-h t'. To check whether it's
+There's the XEmacs tutorial available from the Help Menu under
+`Help->Tutorials', or by typing `C-h t'. To check whether it's
 available in a non-english language, type `C-u C-h t TAB', type the
 first letters of your preferred language, then type <RET>.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.4.4,  Next: Q1.4.5,  Prev: Q1.4.3,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.3.5,  Next: Q1.3.6,  Prev: Q1.3.4,  Up: Introduction
 
-Q1.4.4: May I see an example of a useful XEmacs Lisp function?
+Q1.3.5: May I see an example of a useful XEmacs Lisp function?
 --------------------------------------------------------------
 
-   The following function does a little bit of everything useful.  It
-does something with the prefix argument, it examines the text around the
+The following function does a little bit of everything useful.  It does
+something with the prefix argument, it examines the text around the
 cursor, and it's interactive so it may be bound to a key.  It inserts
 copies of the current word the cursor is sitting on at the cursor.  If
 you give it a prefix argument: `C-u 3 M-x double-word' then it will
@@ -1084,24 +1342,24 @@ prefix argument to a number, and `interactive' allows you to execute
 the command with `M-x'.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.4.5,  Next: Q1.4.6,  Prev: Q1.4.4,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.3.6,  Next: Q1.3.7,  Prev: Q1.3.5,  Up: Introduction
 
-Q1.4.5: And how do I bind it to a key?
+Q1.3.6: And how do I bind it to a key?
 --------------------------------------
 
-   To bind to a key do:
+To bind to a key do:
 
      (global-set-key "\C-cd" 'double-word)
 
    Or interactively, `M-x global-set-key' and follow the prompts.
 
 \1f
-File: xemacs-faq.info,  Node: Q1.4.6,  Prev: Q1.4.5,  Up: Introduction
+File: xemacs-faq.info,  Node: Q1.3.7,  Next: Q1.3.8,  Prev: Q1.3.6,  Up: Introduction
 
-Q1.4.6: What's the difference between a macro and a function?
+Q1.3.7: What's the difference between a macro and a function?
 -------------------------------------------------------------
 
-   Quoting from the Lisp Reference (a.k.a "Lispref") Manual:
+Quoting from the Lisp Reference (a.k.a "Lispref") Manual:
 
    "Macros" enable you to define new control constructs and other
 language features.  A macro is defined much like a function, but instead
@@ -1119,120 +1377,6297 @@ another matter, entirely.  A keyboard macro is a key bound to several
 other keys.  Refer to manual for details.
 
 \1f
-File: xemacs-faq.info,  Node: Installation,  Next: Customization,  Prev: Introduction,  Up: Top
+File: xemacs-faq.info,  Node: Q1.3.8,  Next: Q1.4.1,  Prev: Q1.3.7,  Up: Introduction
 
-2 Installation and Trouble Shooting
-***********************************
+Q1.3.8: What is `Custom'?
+-------------------------
 
-   This is part 2 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to Installation, Maintenance and Trouble Shooting.
+`Custom' is a system for customizing XEmacs options.
 
-* Menu:
+   You can access `Advanced (Customize)' from the `Options' menu or
+invoking one of customize commands by typing eg.  `M-x customize', `M-x
+customize-face', `M-x customize-variable' or `M-x customize-apropos'.
 
-Installation:
-* Q2.0.1::      Running XEmacs without installing.
-* Q2.0.2::      XEmacs is too big.
-* Q2.0.3::      Compiling XEmacs with Netaudio.
-* Q2.0.4::      Problems with Linux and ncurses.
-* Q2.0.5::      Do I need X11 to run XEmacs?
-* Q2.0.6::      I'm having strange crashes.  What do I do?
-* Q2.0.7::      Libraries in non-standard locations.
-* Q2.0.8::      can't resolve symbol _h_errno
-* Q2.0.9::      Where do I find external libraries?
-* Q2.0.10::     After I run configure I find a coredump, is something wrong?
-* Q2.0.11::     XEmacs can't resolve host names.
-* Q2.0.12::     Why can't I strip XEmacs?
-* Q2.0.13::     I don't need no steenkin' packages.  Do I? (NEW)
-* Q2.0.14::     I don't want to install a million .els one at a time! (NEW)
-
-Trouble Shooting:
-* Q2.1.1::      XEmacs just crashed on me!
-* Q2.1.2::      Cryptic Minibuffer messages.
-* Q2.1.3::      Translation Table Syntax messages at Startup.
-* Q2.1.4::      Startup warnings about deducing proper fonts?
-* Q2.1.5::      XEmacs cannot connect to my X Terminal.
-* Q2.1.6::      XEmacs just locked up my Linux X server.
-* Q2.1.7::      HP Alt key as Meta.
-* Q2.1.8::      got (wrong-type-argument color-instance-p nil)!
-* Q2.1.9::      XEmacs causes my OpenWindows 3.0 server to crash.
-* Q2.1.10::     Warnings from incorrect key modifiers.
-* Q2.1.11::     Can't instantiate image error... in toolbar
-* Q2.1.12::     Regular Expression Problems on DEC OSF1.
-* Q2.1.13::     HP/UX 10.10 and `create_process' failure
-* Q2.1.14::     C-g doesn't work for me.  Is it broken?
-* Q2.1.15::     How to debug an XEmacs problem with a debugger.
-* Q2.1.16::     XEmacs crashes in `strcat' on HP/UX 10.
-* Q2.1.17::     `Marker does not point anywhere'.
-* Q2.1.18::     [This question intentionally left blank]
-* Q2.1.19::     XEmacs does not follow the local timezone.
-* Q2.1.20::     `Symbol's function definition is void: hkey-help-show.'
-* Q2.1.21::     [This question intentionally left blank]
-* Q2.1.22::     XEmacs seems to take a really long time to do some things.
-* Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
-* Q2.1.24::     XEmacs won't start without network. (NEW)
-* Q2.1.25::     After upgrading, XEmacs won't do `foo' any more! (NEW)
+   There is also new `browser' mode for Customize.  Try it out with
+`M-x customize-browse'
+
+1.4: Getting Help
+=================
+
+\1f
+File: xemacs-faq.info,  Node: Q1.4.1,  Next: Q1.4.2,  Prev: Q1.3.8,  Up: Introduction
+
+Q1.4.1: Where can I get help?
+-----------------------------
+
+Probably the easiest way, if everything is installed, is to use Info, by
+pressing `C-h i', or looking for an Info item on the Help Menu.  `M-x
+apropos' can be used to look for particular commands.
+
+   For items not found in the manual, try reading this FAQ and reading
+the Usenet group comp.emacs.xemacs.
+
+   If you choose to post to a newsgroup, *please use
+comp.emacs.xemacs*.  Please do not post XEmacs related questions to
+gnu.emacs.help.
+
+   If you cannot post or read Usenet news, there is a corresponding
+mailing list <xemacs-news@xemacs.org> which is available.  It can be
+subscribed to via the Mailman Web interface or by sending mail to to
+<xemacs-news-request@xemacs.org> with `subscribe' in the body of the
+message.  See also `http://www.xemacs.org/Lists/#xemacs-news'.  To
+cancel a subscription, you may use the <xemacs-news-request@xemacs.org>
+address or the Web interface.  Send a message with a subject of
+`unsubscribe' to be removed.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.4.2,  Next: Q1.4.3,  Prev: Q1.4.1,  Up: Introduction
+
+Q1.4.2: Which mailing lists are there?
+--------------------------------------
+
+For complete, up-to-date info on the lists and how to subscribe, see
+`http://www.xemacs.org/Lists/'.
+
+`comp.emacs.xemacs'
+     is a Usenet newsgroup for XEmacs users to discuss problems and
+     issues that arise for them.  It's not generally an appropriate
+     place to ask about apparent bugs (use `xemacs-beta'), or future
+     plans (use `xemacs-design').
+
+`xemacs-announce'
+     is a read-only, low volume list for announcements concerning the
+     XEmacs project and new releases of the XEmacs software.
+
+`xemacs-beta'
+     is an open list for bug reports about beta versions of XEmacs.
+     This includes the bug reports themselves, by both users and
+     developers, as well as queries, follow-ups, and discussions
+     further determining their nature and status.  This is the primary
+     channel for this kind of discussion; related code changes will
+     usually not be applied until they have been discussed here.  When
+     such discussions touch on significant changes to the code (in
+     particular, structural changes), or on changes to API's or
+     external functionality, they should be moved to `xemacs-design'.
+     Requests and proposals for non-bug-related changes do not belong
+     on `xemacs-beta', and should be sent to `xemacs-design' instead.
+
+`xemacs-beta-ja'
+     is an open list for bug reports and design discussion related to
+     Mule features, including Japanese handling, in beta versions of
+     XEmacs.  Japanese is the preferred language of discussion.  For
+     most timely presentation to reviewers, please consider sending
+     appropriate discussion to `xemacs-mule' or `xemacs-design' in
+     English when convenient for the participants in discussion.  When
+     possible, bug reports not related to Mule (including Japanese)
+     should be reported on `xemacs-beta' in English.
+
+`xemacs-buildreports'
+     is an open list for submission of build-reports on beta versions
+     of XEmacs. For information on what the build-reports should
+     contain, please see the `etc/BETA' file which is included in each
+     beta distribution.
+
+`xemacs-cvs'
+     is a read-only list for notices and information on what has been
+     committed to the XEmacs CVS trees, by whom, and for what.
+
+`xemacs-design'
+     is an open list for discussing the design of XEmacs.  This
+     includes discussion about planned and ongoing changes to
+     functionality and API changes and additions as well as requests
+     for them.  This is the primary channel for this kind of
+     discussion; related code changes will usually not be applied until
+     they have been discussed here.  This does not include bug reports,
+     which go to `xemacs-beta'.
+
+`xemacs-mule'
+     is an open mailing list for discussion of International extensions
+     to XEmacs including Mule, XIM, I18n issues, etc, and is not
+     confined to developmental issues. This list is not restricted to
+     English, postings in all languages are welcome.
+
+`xemacs-news'
+     is an open list for discussion and bug reporting for XEmacs.  This
+     mailing list is bi-directionally gatewayed with the USENET
+     newsgroup comp.emacs.xemacs.
+
+`xemacs-nt'
+     is a developers-only mailing list and is intended for people who
+     wish to work actively on the porting of XEmacs to Microsoft
+     Windows NT and Microsoft Windows '95.
+
+`xemacs-patches'
+     is an open, moderated list for submission of patches to the XEmacs
+     distribution and its packages. Anyone may subscribe or submit to
+     xemacs-patches, but all submissions are reviewed by the list
+     moderator before they are distributed to the list. Discussion is
+     not appropriate on xemacs-patches.
+
+`xemacs-users-ja'
+     is an open list for discussion and bug reporting for XEmacs.
+     Japanese is the preferred language of discussion.  It is not gated
+     to comp.emacs.xemacs or the `xemacs' list.  For fastest response,
+     bugs not specifically related to Japanese or Mule features should
+     be reported on `xemacs-beta' (in English).
+
+`xemacs-users-ru'
+     is an open list for discussion and bug reporting for XEmacs.
+     Russian is the preferred language of discussion.  It is not gated
+     to comp.emacs.xemacs or the `xemacs' list.  For fastest response,
+     bugs not specifically related to Russian or Mule features should
+     be reported on `xemacs-beta' (in English).
+
+\1f
+File: xemacs-faq.info,  Node: Q1.4.3,  Next: Q1.4.4,  Prev: Q1.4.2,  Up: Introduction
+
+Q1.4.3: Where are the mailing lists archived?
+---------------------------------------------
+
+The archives can be found at `http://list-archive.xemacs.org'
+
+\1f
+File: xemacs-faq.info,  Node: Q1.4.4,  Next: Q1.4.5,  Prev: Q1.4.3,  Up: Introduction
+
+Q1.4.4: How can I get two instances of info?
+--------------------------------------------
+
+Before 21.4, you can't.  The `info' package does not provide for
+multiple info buffers.  In 21.4, this should be fixed. #### how?
+
+\1f
+File: xemacs-faq.info,  Node: Q1.4.5,  Next: Q1.5.1,  Prev: Q1.4.4,  Up: Introduction
+
+Q1.4.5: How do I add new Info directories?
+------------------------------------------
+
+You use something like:
+
+     (setq Info-directory-list (cons
+                                (expand-file-name "~/info")
+                                Info-default-directory-list))
+
+   David Masterson <davidm@prism.kla.com> writes:
+
+     Emacs Info and XEmacs Info do many things differently.  If you're
+     trying to support a number of versions of Emacs, here are some
+     notes to remember:
+
+       1. Emacs Info scans `Info-directory-list' from right-to-left
+          while XEmacs Info reads it from left-to-right, so append to
+          the _correct_ end of the list.
+
+       2. Use `Info-default-directory-list' to initialize
+          `Info-directory-list' _if_ it is available at startup, but not
+          all Emacsen define it.
+
+       3. Emacs Info looks for a standard `dir' file in each of the
+          directories scanned from #1 and magically concatenates them
+          together.
+
+       4. XEmacs Info looks for a `localdir' file (which consists of
+          just the menu entries from a `dir' file) in each of the
+          directories scanned from #1 (except the first), does a simple
+          concatenation of them, and magically attaches the resulting
+          list to the end of the menu in the `dir' file in the first
+          directory.
+
+     Another alternative is to convert the documentation to HTML with
+     texi2html and read it from a web browser like Lynx or W3.
+
+1.5: Contributing to XEmacs
+===========================
+
+\1f
+File: xemacs-faq.info,  Node: Q1.5.1,  Next: Q1.5.2,  Prev: Q1.4.5,  Up: Introduction
+
+Q1.5.1: How do I submit changes to the FAQ?
+-------------------------------------------
+
+The FAQ is actively maintained and modified regularly.  All links should
+be up to date.  Unfortunately, some of the information is out of date -
+a situation which the FAQ maintainer is working on.  All submissions are
+welcome, please e-mail submissions to XEmacs FAQ maintainers
+<faq@xemacs.org>.
+
+   Please make sure that `XEmacs FAQ' appears on the Subject: line.  If
+you think you have a better way of answering a question, or think a
+question should be included, we'd like to hear about it.  Questions and
+answers included into the FAQ will be edited for spelling and grammar
+and will be attributed.  Answers appearing without attribution are
+either from versions of the FAQ dated before May 1996 or are from
+previous FAQ maintainers.  Answers quoted from Usenet news articles will
+always be attributed, regardless of the author.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.5.2,  Next: Q1.5.3,  Prev: Q1.5.1,  Up: Introduction
+
+Q1.5.2: How do I become a beta tester?
+--------------------------------------
+
+Send an email message to <xemacs-beta-request@xemacs.org> with the line
+`subscribe' in the body of the message.
+
+   Be prepared to get your hands dirty, as beta testers are expected to
+identify problems as best they can.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.5.3,  Next: Q1.5.4,  Prev: Q1.5.2,  Up: Introduction
+
+Q1.5.3: How do I contribute to XEmacs itself?
+---------------------------------------------
+
+It depends on the knowledge and time you possess.  If you are able, by
+all means become a beta tester (*note Q1.5.2::).  If you are a
+programmer, try to build XEmacs and see if you can improve it.
+
+   Otherwise, you can still help by using XEmacs as your everyday editor
+(for pre-built binary versions, *note Q1.1.2::) and reporting bugs you
+find to the mailing list.
+
+   Another area where we need help is the documentation: We need good
+documentation for building XEmacs and for using it.  This FAQ is a
+small step in that direction.
+
+   Ben Wing <ben@xemacs.org> writes:
+
+     BTW if you have a wish list of things that you want added, you
+     have to speak up about it!  More specifically, you can do the
+     following if you want a feature added (in increasing order of
+     usefulness):
+
+        * Make a posting about a feature you want added.
+
+        * Become a beta tester and make more postings about those same
+          features.
+
+        * Convince us that you're going to use the features in some
+          cool and useful way.
+
+        * Come up with a clear and well-thought-out API concerning the
+          features.
+
+        * Write the code to implement a feature and send us a patch.
+
+     (not that we're necessarily requiring you to write the code, but
+     we can always hope :)
+
+\1f
+File: xemacs-faq.info,  Node: Q1.5.4,  Next: Q1.5.5,  Prev: Q1.5.3,  Up: Introduction
+
+Q1.5.4: How do I get started developing XEmacs?
+-----------------------------------------------
+
+First, get yourself set up under CVS so that you can access the CVS
+repositories containing the XEmacs sources and the XEmacs packages.
+
+   Next, set up your layout.  This is important, as a good layout will
+facilitate getting things done efficiently, while a bad layout will
+could lead to disaster, as you can't figure out which code is the most
+recent, which can be thrown away, etc.  We suggest the following
+layout: (feel free to make changes)
+
+   * Everything goes under `/src/xemacs' (use a different directory if
+     you want).  From now, instead of saying `/src/xemacs', we use
+     `<xsrc-top>', to make it easier in case someone picked a different
+     directory.
+
+   * Package source is in `<xsrc-top>/package-src'.
+
+   * Installed packages go under `<xsrc-top>/xemacs-packages', and
+     `<xsrc-top>/mule-packages'.
+
+   * A "workspace" is a complete copy of the sources, in which you do
+     work of a particular kind.  Workspaces can be differentiated by
+     which branch of the source tree they extend off of - usually
+     either the stable or experimental, unless other branches have been
+     created (for example, Ben created a branch for his Mule work
+     because (1) the project was long-term and involved an enormous
+     number of changes, (2) people wanted to be able to look at what
+     his work in progress, and (3) he wanted to be able to check things
+     in and in general use source-code control, since it was a
+     long-term project).  Workspaces are also differentiated in what
+     their purpose is - general working workspace, workspace for
+     particular projects, workspace keeping the latest copy of the code
+     in one of the branches without mods, etc.
+
+   * Various workspaces are subdirectories under `<xsrc-top>', e.g.:
+
+        * `<xsrc-top>/working' (the workspace you're actively working
+          on, periodically synched up with the latest trunk)
+
+        * `<xsrc-top>/stable' (for making changes to the stable version
+          of XEmacs, which sits on a branch)
+
+        * `<xsrc-top>/unsigned-removal' (a workspace for a specific,
+          difficult task that's going to affect lots of source and take
+          a long time, and so best done in its own workspace without
+          the interference of other work you're doing.  Also, you can
+          commit just this one large change, separate from all the
+          other changes).
+
+        * `<xsrc-top>/latest' (a copy of the latest sources on the
+          trunk, i.e. the experimental version of XEmacs, with no
+          patches in it; either update it periodically, by hand, or set
+          up a cron job to do it automatically).  Set it up so it can
+          be built, and build it so you have a working XEmacs.
+          (Building it might also go into the cron job.)
+
+          This workspace serves a number of purposes:
+            1. You always have a recent version of XEmacs you can
+               compare against when something you're working on breaks.
+               It's true that you can do this with cvs diff, but when
+               you need to do some serious investigation, this method
+               just fails.
+
+            2. You (almost) always have a working, up-to-date
+               executable that can be used when your executable is
+               crashing and you need to keep developing it, or when you
+               need an `xemacs' to build packages, etc.
+
+            3. When creating new workspaces, you can just copy the
+               `latest' workspace using GNU `cp -a'.  You have all the
+               .elc's built, everything else probably configured, any
+               spare files in place (e.g. some annoying xpm.dll under
+               Windows, etc.).
+
+        * `<xsrc-top>/latest-stable/' (equivalent to
+          `<xsrc-top>/latest/', but for the Stable branch of XEmacs,
+          rather than the Experimental branch of XEmacs).  This may or
+          may not be necessary depending on how much development you do
+          of the stable branch.
+
+   * `<xsrc-top>/xemacsweb' is a workspace for working on the XEmacs
+     web site.
+
+   * `<xsrc-top>/in-patches' for patches received from email and saved
+     to files.
+
+   * `<xsrc-top>/out-patches' for locally-generated patches to be sent
+     to <xemacs-patches@xemacs.org>.  Less useful now that the patcher
+     util has been developed.
+
+   * `<xsrc-top>/build', for build trees when compiling and testing
+     XEmacs with various configuration options turned off and on.  The
+     scripts in xemacs-builds/ben (see below) can be used to automate
+     building XEmacs workspaces with many different configuration
+     options and automatically filtering out the normal output so that
+     you see only the abnormal output.
+
+   * `<xsrc-top>/xemacs-builds', for the xemacs-builds module, which
+     you need to check out separately in CVS.  This contains scripts
+     used for building XEmacs, automating and simplifying using CVS,
+     etc.  Under various people's directories are their own build and
+     other scripts.  The currently most-maintained scripts are under
+     ben/, where there are easily configurable scripts that can be used
+     to easily build any workspace (esp. if you've more or less
+     followed the layout presented above) unattended, with one or more
+     configuration states (there's a pre-determined list of the most
+     useful, but it's easy to change).  The output is filtered and
+     split up in various ways so that you can identify which output
+     came from where, and you can see the output either full or with
+     all "normal" output except occasional status messages filtered so
+     that you only see the abnormal ones.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.5.5,  Next: Q1.6.1,  Prev: Q1.5.4,  Up: Introduction
+
+Q1.5.5: What's the basic layout of the code?
+--------------------------------------------
+
+The file `configure' is a shell script to acclimate XEmacs to the
+oddities of your processor and operating system.  It will create a file
+named `Makefile' (a script for the `make' program), which helps
+automate the process of building and installing emacs.  See INSTALL for
+more detailed information.
+
+   The file `configure.in' is the input used by the autoconf program to
+construct the `configure' script.  Since XEmacs has configuration
+requirements that autoconf can't meet, `configure.in' uses an unholy
+marriage of custom-baked configuration code and autoconf macros; it may
+be wise to avoid rebuilding `configure' from `configure.in' when
+possible.
+
+   The file `Makefile.in' is a template used by `configure' to create
+`Makefile'.
+
+   There are several subdirectories:
+
+  1. `src' holds the C code for XEmacs (the XEmacs Lisp interpreter and
+     its primitives, the redisplay code, and some basic editing
+     functions).
+
+  2. `lisp' holds the XEmacs Lisp code for XEmacs (most everything
+     else).
+
+  3. `lib-src' holds the source code for some utility programs for use
+     by or with XEmacs, like movemail and etags.
+
+  4. `etc' holds miscellaneous architecture-independent data files
+     XEmacs uses, like the tutorial text.  The contents of the `lisp',
+     `info' and `man' subdirectories are architecture-independent too.
+
+  5. `lwlib' holds the C code for the X toolkit objects used by XEmacs.
+
+  6. `info' holds the Info documentation tree for XEmacs.
+
+  7. `man' holds the source code for the XEmacs online documentation.
+
+  8. `nt' holds files used compiling XEmacs under Microsoft Windows.
+
+1.6: Politics (XEmacs vs. GNU Emacs)
+====================================
+
+\1f
+File: xemacs-faq.info,  Node: Q1.6.1,  Next: Q1.6.2,  Prev: Q1.5.5,  Up: Introduction
+
+Q1.6.1: What is GNU Emacs?
+--------------------------
+
+GNU Emacs and XEmacs are related open-source text editors.  Both derive
+from GNU Emacs version 18; the split between the two happened in 1991
+(for comparison, the oldest versions of GNU Emacs date from 1984).  For
+information on GNU Emacs, see
+`http://www.gnu.org/software/emacs/emacs.html'.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.6.2,  Next: Q1.6.3,  Prev: Q1.6.1,  Up: Introduction
+
+Q1.6.2: How does XEmacs differ from GNU Emacs?
+----------------------------------------------
+
+For a detailed description of the differences between GNU Emacs and
+XEmacs and a detailed history of XEmacs, check out the
+     NEWS file (http://www.xemacs.org/About/XEmacsVsGNUemacs.html)
+
+*User-Visible Editing Features*
+     XEmacs in general tries hard to conform to exist user-interface
+     standards, and to work "out-of-the-box" without the need for
+     obscure customization changes.  GNU Emacs, particularly version
+     21, has gotten better about this (in many cases by copying the
+     XEmacs behavior!), but still has some weirdnesses.  For example,
+     the standard method of selecting text using the Shift key works
+     out-of-the-box in XEmacs.
+
+     XEmacs has a built-in toolbar. Four toolbars can actually be
+     configured simultaneously: top, bottom, left, and right toolbars.
+
+     XEmacs has vertical and horizontal scrollbars. Unlike in GNU Emacs
+     19 (which provides a primitive form of vertical scrollbar), these
+     are true toolkit scrollbars. A look-alike Motif scrollbar is
+     provided for those who don't have Motif. (Even for those who do,
+     the look-alike may be preferable as it is faster.)
+
+     XEmacs has buffer tabs along the top of the frame (although the
+     position can be changed) that make it very easy to switch buffers.
+
+     The menubar under XEmacs is better-designed, with more thought put
+     into it.
+
+     XEmacs can ask questions using popup dialog boxes. Any command
+     executed from a menu will ask yes/no questions with dialog boxes,
+     while commands executed via the keyboard will use the minibuffer.
+
+     XEmacs under MS Windows provides uses the standard file-dialog box
+     for opening and saving files.  Standard menu-accelerator behavior
+     can easily be enabled using the Options menu, and integrates well
+     into the existing keymap.
+
+     XEmacs has (still experimental) support for widgets of various
+     sorts - buttons, text boxes, sliders, progress bars, etc.  A
+     progress bar is used in font lock to show the progress.
+
+     Experimental support for drag-and-drop protocols is provided from
+     XEmacs 21.
+
+*General Platform Support*
+     If you're running on a machine with audio hardware, you can specify
+     sound files for XEmacs to play instead of the default X beep. See
+     the documentation of the function load-sound-file and the variable
+     sound-alist. XEmacs also supports the network sound protocols NAS
+     and EsounD.
+
+     XEmacs 21 supports database protocols with LISP bindings, currently
+     including Berkeley DB, LDAP, and PostgreSQL (21.2 only).
+
+     XEmacs 20 and 21 support the Canna, Wnn, and SJ3 Japanese input
+     method servers directly, as well as through the X Input Method
+     (XIM) protocol. GNU Emacs 20 supports only the XIM protocol. Both
+     Emacsen support the Quail family of input methods (implemented in
+     LISP) for many languages.
+
+     XEmacs provides support for ToolTalk on systems that have it.
+
+*Packaged LISP Libraries*
+     Many more packages are provided standard with XEmacs than with GNU
+     Emacs 19 or 20.
+
+     XEmacs 21 supports an integrated package management system which
+     uses EFS to download, then automatically install prebuilt LISP
+     libraries. This allows XEmacs users much more straightforward
+     access to the "latest and greatest" version of any given library.
+
+     We are working on a standard method for enabling, disabling and
+     otherwise controlling packages, which should make them very easy
+     to use.
+
+*LISP Programming*
+     From XEmacs 20 on, characters are a separate type. Characters can
+     be converted to integers (and many integers can be converted to
+     characters), but characters are not integers. GNU Emacs 19, XEmacs
+     19, Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and
+     GNU Emacs 20 (incorporating Mule 3 and later Mule 4) represent
+     them as integers.
+
+     From XEmacs 20 on, the buffer is treated as an array of
+     characters, and the representation of buffer text is not exposed
+     to LISP. The GNU Emacs 20 functions like buffer-as-multibyte are
+     not supported.
+
+     In XEmacs, events are first-class objects. GNU Emacs 19 represents
+     them as integers, which obscures the differences between a key
+     gesture and the ancient ASCII code used to represent a particular
+     overlapping subset of them.
+
+     In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19
+     represents them as complicated combinations of association lists
+     and vectors. If you use the advertised functional interface to
+     manipulation of keymaps, the same code will work in XEmacs, GNU
+     Emacs 18, and GNU Emacs 19; if your code depends on the underlying
+     implementation of keymaps, it will not.
+
+     XEmacs uses "extents" to represent all non-textual aspects of
+     buffers; GNU Emacs 19 uses two distinct objects, "text properties"
+     and "overlays", which divide up the functionality between them.
+     Extents are a superset of the union of the functionality of the
+     two GNU Emacs data types. The full GNU Emacs 19 interface to text
+     properties and overlays is supported in XEmacs (with extents being
+     the underlying representation).
+
+     Extents can be made to be copied into strings, and then restored,
+     by kill and yank. Thus, one can specify this behavior on either
+     "extents" or "text properties", whereas in GNU Emacs 19 text
+     properties always have this behavior and overlays never do.
+
+*Window System Programming Interface*
+     XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which
+     makes it be a more well-behaved X citizen (and also improves
+     portability). A result of this is that it is possible to include
+     other Xt "Widgets" in the XEmacs window. Also, XEmacs understands
+     the standard Xt command-line arguments.
+
+     XEmacs supports Motif applications, generic Xt (e.g. Athena)
+     applications, and raw Xlib applications. An XEmacs variant which
+     supports GTK+ is available (integration as an option in the XEmacs
+     mainline is planned for XEmacs 22), although code to take
+     advantage of the support is as yet scarce.
+
+     An XEmacs frame can be placed within an "external client widget"
+     managed by another application. This allows an application to use
+     an XEmacs frame as its text pane rather than the standard Text
+     widget that is provided with Motif or Athena.
+
+*Community Participation*
+     Joining the XEmacs development team is simple. Mail to XEmacs
+     Developers <xemacs-beta@xemacs.org>, and you're in! (If you want
+     to be, of course. You're also welcome to just post
+     development-related questions and bug reports.) The GNU Emacs
+     development team and internal mailing lists are still by invitation
+     only.
+
+     The "bleeding edge" of mainline XEmacs development is available by
+     anonymous CVS as are some subsidiary branches (check out the
+     xemacs-gtk module for the latest in GUI features!)
+
+     Development and maintenance of Lisp libraries is separated from
+     the core editor development at a fairly low level. This provides
+     better modularization and a better division of responsibility
+     between external library maintainers and the XEmacs core
+     development team. Even for packages the size of Gnus, XEmacs users
+     normally have access to a pre-built version within a few weeks of
+     a major release, and minor updates often within days.
+
+     CVS commit authority is broadly dispersed. Recognized maintainers
+     of LISP libraries who are willing to maintain XEmacs packaged
+     versions automatically qualify for CVS accounts for their packages.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.6.3,  Next: Q1.6.4,  Prev: Q1.6.2,  Up: Introduction
+
+Q1.6.3: How much does XEmacs differ?
+------------------------------------
+
+RMS has asserted at times that XEmacs is merely a "patch" on top of GNU
+Emacs (*note Q1.6.4::).  In fact, probably not more than 5% of the
+code, if that, remains unchanged, and nearly 14 years of work has gone
+into XEmacs at this point. (GNU Emacs itself is only than 20 years old,
+and thus XEmacs has existed as a separate product for over 2/3 of the
+lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has
+perhaps 65,000 more lines of C code than GNU Emacs 21.2.
+
+   However, the XEmacs developers strive to keep their code compatible
+with GNU Emacs, especially on the Lisp level.  Much effort goes into
+"synching" the XEmacs Elisp code with recent GNU Emacs releases so as to
+benefit from GNU Emacs development work. (In contrast, almost no code
+from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs
+developers are instructed by RMS not to even look at XEmacs source code!
+This stems from self-imposed licensing restrictions on the part of GNU
+Emacs - and almost certainly out of hostility, as well.)
+
+\1f
+File: xemacs-faq.info,  Node: Q1.6.4,  Next: Q1.6.5,  Prev: Q1.6.3,  Up: Introduction
+
+Q1.6.4: Is XEmacs "GNU"?
+------------------------
+
+RMS insists on the term "GNU XEmacs" and maintains that
+
+     XEmacs is GNU software because it's a modified version of a GNU
+     program. And it is GNU software because the FSF is the copyright
+     holder for most of it, and therefore the legal responsibility for
+     protecting its free status falls on us whether we want it or not.
+     This is why the term "GNU XEmacs" is legitimate.
+
+   In fact, FSF is _not_ the copyright holder for most of the code, as
+very little unmodified FSF code remains (*note Q1.6.3::).
+
+   Furthermore, RMS's assertion that XEmacs is "GNU" seems rather
+bizarre to the XEmacs developers given RMS's hostility and general lack
+of interest in cooperation.  "GNU" software in general is part of the
+GNU Project, is distributed by it on their FTP site, and receives
+support (or at least cooperation), as well as implicit endorsement,
+from it.  The GNU Project, however, has never supported XEmacs and never
+distributed XEmacs, and RMS's hostility is the farthest thing possible
+from an endorsement.  In fact, the GNU Project distributes a number of
+non-GNU software projects on the FSF web site, but again XEmacs is not
+one of them.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.6.5,  Next: Q1.6.6,  Prev: Q1.6.4,  Up: Introduction
+
+Q1.6.5: What is the correct way to refer to XEmacs and GNU Emacs?
+-----------------------------------------------------------------
+
+Unfortunately even the naming of these two applications has become
+politicized.  Much of this stems from RMS, who has a history of
+politicizing similar issues. (Compare the controversy over "Lignux" and
+"GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU Emacs"
+be used, which are neutral and acceptable to most people.  RMS,
+however, is not willing to accept these terms.  He insists that, if his
+product is called "GNU Emacs", then ours must be called "GNU XEmacs".
+(For our opinion of this term, *Note Q1.6.4::.) On the other hand, if
+our product is to be called "XEmacs", as we prefer, then his product
+must simply be called "Emacs".  The intent of this seems clear: RMS
+wants to make sure the names reflect his view that his version is the
+"real" Emacs and ours is merely a derivative, second-class product
+(*note Q1.6.3::).
+
+   The XEmacs developers hope that you will use the neutral terms
+"XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on
+the other hand, is a generic term for a class of programmable text
+editors with a similar look-and-feel, and usually a Lisp-based
+extension language.  These trace themselves back to early editors such
+as EINE, ZWEI, ZMACS and Multics Emacs. *Note A History of Emacs:
+(internals)A History of Emacs.
+
+   We also call upon RMS, in the spirit of furthering cooperation, to
+stop politicizing this issue and use the neutral terms "XEmacs" and
+"GNU Emacs".  We have already acceded to RMS' wishes in this respect,
+and we expect him to do the same. (In the past, the XEmacs developers
+often used the terms "FSF Emacs" or "FSFmacs" or "RMSmacs" in reference
+to GNU Emacs; these terms were apparently modeled after RMS' own usage
+of "Gosmacs" and "Gosling Emacs" in reference to Unipress Emacs,
+produced by James Gosling.  RMS, however, considers such terms to be
+insulting, so we refrain from using them as much as possible in
+preference to GNU Emacs.)
+
+\1f
+File: xemacs-faq.info,  Node: Q1.6.6,  Next: Q1.7.1,  Prev: Q1.6.5,  Up: Introduction
+
+Q1.6.6: Why haven't XEmacs and GNU Emacs merged?
+------------------------------------------------
+
+There are currently irreconcilable differences in the views about
+technical, programming, design, organizational and legal matters
+between Richard Stallman (RMS), the author and leader of the GNU Emacs
+project, and the XEmacs development team which provide little hope for
+a merge to take place in the short-term future.  There have been
+repeated attempts at merging by all of the major XEmacs developers,
+starting from the early days of Lucid Emacs (in 1991), but they have
+all failed.  RMS has very strong views about how GNU Emacs should be
+structured and how his project should be run, and during the repeated
+merge efforts has never demonstrated any realistic interest in
+sufficiently compromising or ceding control to allow a middle ground to
+be found.  The basic problem seems to be the very different goals of
+RMS and the XEmacs project.  The primary goals of the XEmacs project
+are technical and organizational - we want to create the best editor
+possible, and to make it as easy as possible for people around the
+world to contribute.  The primary goals of RMS, on the other hand, are
+political, and GNU Emacs, and any potential merge efforts with XEmacs,
+are strictly subservient to these goals.  In fact, in many ways RMS
+sees GNU Emacs as the "poster child" of his aims, the one program in
+the GNU project that above all others must set an example to the world.
+(This has to do with the fact that GNU Emacs was the first program in
+the GNU project, and the only one that he is still personally involved
+with on a day-to-day basis.)  Given his goals, his position is
+completely reasonable - but unfortunately, makes any merge impossible.
+
+   From the XEmacs perspective, the most intractable issues appear to be
+legal and organizational, specifically:
+
+   * RMS requires "legal papers" to be signed for all contributions of
+     code to GNU Emacs over 10 lines or so, transferring the copyright
+     and all legal rights to the code to the Free Software Foundation.
+     XEmacs does not and has never required this, since it has the
+     practical effect of discouraging individual and in particular
+     corporate contributions - corporations will almost never sign away
+     their legal rights to code since it makes it impossible to reuse
+     the code in any product that whose license is not compatible with
+     the GNU General Public License.  Since RMS has shown no
+     inclination to compromise on this issue, a merge would require
+     that most of the existing XEmacs code would need to be thrown away
+     and rewritten - something the XEmacs developers are understandably
+     reluctant to do.
+
+   * A repeated stumbling block in the merge talks has been the issue of
+     organizational control over the resulting product.  RMS has made it
+     clear that he intends to have final say over design issues in a
+     merged Emacs.  Unfortunately, RMS and the XEmacs developers have
+     repeatedly clashed over design decisions, and RMS' insistence on
+     getting his way in such disagreements was the very reason for the
+     split in the first place.  This same issue has come up again and
+     again in merge talks and we have never been able to come to a
+     satisfactory resolution.  To the extent that RMS is willing to
+     compromise at all, it appears to be of a purely political rather
+     than technical nature - "If we support this feature of yours, we
+     also get to support this other feature of mine."  The XEmacs
+     developers cannot see how such a process would lead to anything
+     but a mess of incompatible things hodgepodged together.
+
+   * Because of the years of separate development, distinct and
+     incompatible interfaces have developed and merging would be
+     extremely difficult even with the above non-technical issues
+     resolved.  The problem has been exacerbated by the issue of legal
+     papers - because XEmacs code is not "kosher" from RMS'
+     perspective, he discourages developers from even looking at it out
+     of legal concerns.  Although it is still possible to read the
+     XEmacs documentation and run the program, the practical effect of
+     this prohibition has been to strongly discourage code-sharing and
+     cooperative development - although a great deal of GNU Emacs code
+     has been incorporated into XEmacs, practically none has gone the
+     other direction.
+
+   If you have a comment to add regarding the merge, it is a good idea
+to avoid posting to the newsgroups, because of the very heated flamewars
+that often result.  Mail your questions to <xemacs-beta@xemacs.org> and
+<emacs-devel@gnu.org>.
+
+1.7: External Packages
+======================
+
+\1f
+File: xemacs-faq.info,  Node: Q1.7.1,  Next: Q1.7.2,  Prev: Q1.6.6,  Up: Introduction
+
+Q1.7.1: What is the package system?
+-----------------------------------
+
+In order to reduce the size and increase the maintainability of XEmacs,
+the majority of the Elisp packages that came with previous releases
+have been unbundled.  They have been replaced by the package system.
+Each elisp add-on (or groups of them when they are small) now comes in
+its own tarball that contains a small search hierarchy.
+
+   You select just the ones you need.  Install them by untarring them
+into the right place.  On startup XEmacs will find them, set up the load
+path correctly, install autoloads, etc, etc.
+
+   *Note Q2.1.1::, for more info on how to download and install the
+packages.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.7.2,  Next: Q1.7.3,  Prev: Q1.7.1,  Up: Introduction
+
+Q1.7.2: Which external packages are there?
+------------------------------------------
+
+Normal Packages
+---------------
+
+A very broad collection of elisp packages.
+
+Sun
+     Support for Sparcworks.
+
+ada
+     Ada language support.
+
+apel
+     A Portable Emacs Library.  Used by XEmacs MIME support.
+
+auctex
+     Basic TeX/LaTeX support.
+
+bbdb
+     The Big Brother Data Base: a rolodex-like database program.
+
+build
+     Build XEmacs from within (UNIX, Windows).
+
+c-support
+     Basic single-file add-ons for editing C code.
+
+calc
+     Emacs calculator.
+
+calendar
+     Calendar and diary support.
+
+cc-mode
+     C, C++, Objective-C, Java, CORBA IDL, Pike and AWK language
+     support.
+
+clearcase
+     New Clearcase Version Control for XEmacs (UNIX, Windows).
+
+clearcase
+     Support for the Clearcase version control system.
+
+cookie
+     "Fortune cookie"-style messages. Includes Spook (suspicious
+     phrases) and Yow (Zippy quotes).
+
+crisp
+     Crisp/Brief emulation.
+
+debug
+     GUD, gdb, dbx debugging support.
+
+dictionary
+     Interface to RFC2229 dictionary servers.
+
+dired
+     The DIRectory EDitor is for manipulating, and running commands on
+     files in a directory.
+
+docbookide
+     DocBook editing support.
+
+ecb
+     Emacs source code browser.
+
+ecrypto
+     Crypto functionality in Emacs Lisp.
+
+edebug
+     An Emacs Lisp debugger.
+
+ediff
+     Interface over GNU patch.
+
+edit-utils
+     Miscellaneous editor extensions, you probably need this.
+
+edt
+     DEC EDIT/EDT emulation.
+
+efs
+     Treat files on remote systems the same as local files.
+
+eieio
+     Enhanced Implementation of Emacs Interpreted Objects.
+
+elib
+     Portable Emacs Lisp utilities library.
+
+emerge
+     Another interface over GNU patch.
+
+erc
+     ERC is an Emacs InternetRelayChat client.
+
+escreen
+     Multiple editing sessions withing a single frame (like screen).
+
+eshell
+     Command shell implemented entirely in Emacs Lisp.
+
+ess
+     ESS: Emacs Speaks Statistics.
+
+eterm
+     Terminal emulation.
+
+eudc
+     Emacs Unified Directory Client (LDAP, PH).
+
+footnote
+     Footnoting in mail message editing modes.
+
+forms
+     Forms editing support (obsolete, use Widget instead).
+
+fortran-modes
+     Fortran support.
+
+fortran-modes
+     Fortran language support.
+
+frame-icon
+     Set up mode-specific icons for each frame under XEmacs.
+
+fsf-compat
+     GNU Emacs compatibility files.
+
+games
+     Tetris, Sokoban, and Snake.
+
+general-docs
+     General documentation.  Presently, empty.
+
+gnats
+     XEmacs bug reports.
+
+gnus
+     The Gnus Newsreader and Mailreader.
+
+haskell-mode
+     Haskell editing support.
+
+hm-html-menus
+     HTML editing.
+
+hyperbole
+     Hyperbole: The Everyday Info Manager.
+
+ibuffer
+     Advanced replacement for buffer-menu.
+
+idlwave
+     Editing and Shell mode for the Interactive Data Language.
+
+igrep
+     Enhanced front-end for Grep.
+
+ilisp
+     Front-end for interacting with Inferior Lisp (external lisps).
+
+ispell
+     Spell-checking with GNU ispell.
+
+jde
+     Integrated Development Environment for Java.
+
+liece
+     IRC (Internet Relay Chat) client for Emacs.  Note, this package is
+     deprecated and will be removed, use riece instead.
+
+mail-lib
+     Fundamental lisp files for providing email support.
+
+mailcrypt
+     Support for messaging encryption with PGP.
+
+mew
+     Messaging in an Emacs World; a MIME-based email program.
+
+mh-e
+     The XEmacs Interface to the MH Mail System.
+
+mine
+     Elisp implementation of the game 'Minehunt'.
+
+misc-games
+     Other amusements and diversions.
+
+mmm-mode
+     Support for Multiple Major Modes within a single buffer.
+
+net-utils
+     Miscellaneous Networking Utilities.
+
+ocaml
+     Objective Caml editing support.
+
+oo-browser
+     OO-Browser: The Multi-Language Object-Oriented Code Browser.
+
+ocaml
+     Objective Caml editing support.
+
+os-utils
+     Miscellaneous single-file O/S utilities, for printing, archiving,
+     compression, remote shells, etc.
+
+pc
+     PC style interface emulation.
+
+pcl-cvs
+     CVS frontend.
+
+pcomplete
+     Provides programmatic completion.
+
+perl-modes
+     Perl support.
+
+pgg
+     Emacs interface to various PGP implementations.
+
+prog-modes
+     Support for various programming languages.
+
+ps-print
+     Printing functions and utilities.
+
+psgml
+     Validated HTML/SGML editing.
+
+psgml-dtds
+     A collection of DTDs for psgml.  Note that this package is
+     deprecated and will be removed in the future, most likely Q2/2003.
+     Instead of using this, you should install needed DTDs yourself.
+
+python-modes
+     Python language support.
+
+reftex
+     Emacs support for LaTeX cross-references, citations.
+
+riece
+     IRC (Internet Relay Chat) client for Emacs.
+
+rmail
+     An obsolete Emacs mailer.  If you do not already use it don't
+     start.
+
+ruby-modes
+     Ruby support.
+
+sasl
+     Simple Authentication and Security Layer (SASL) library.
+
+scheme
+     Front-end support for Inferior Scheme.
+
+semantic
+     Semantic bovinator (Yacc/Lex for XEmacs). Includes Senator.
+
+sgml
+     SGML/Linuxdoc-SGML editing.
+
+sh-script
+     Support for editing shell scripts.
+
+sieve
+     Manage Sieve email filtering scripts.
+
+slider
+     User interface tool.
+
+sml-mode
+     SML editing support.
+
+sounds-au
+     XEmacs Sun sound files.
+
+sounds-wav
+     XEmacs Microsoft sound files.
+
+speedbar
+     Provides a separate frame with convenient references.
+
+strokes
+     Mouse enhancement utility.
+
+supercite
+     An Emacs citation tool for News & Mail messages.
+
+texinfo
+     XEmacs TeXinfo support.
+
+text-modes
+     Miscellaneous support for editing text files.
+
+textools
+     Miscellaneous TeX support.
+
+time
+     Display time & date on the modeline.
+
+tm
+     Emacs MIME support. Not needed for gnus >= 5.8.0.
+
+tooltalk
+     Support for building with Tooltalk.
+
+tpu
+     DEC EDIT/TPU support.
+
+tramp
+     Remote shell-based file editing.  This is similar to EFS or
+     Ange-FTP, but works with rsh/ssh and rcp/scp.
+
+vc
+     Version Control for Free systems.
+
+vc-cc
+     Version Control for ClearCase (UnFree) systems.
+
+vhdl
+     Support for VHDL.
+
+view-process
+     A Unix process browsing tool.
+
+viper
+     VI emulation support.
+
+vm
+     An Emacs mailer.
+
+w3
+     A Web browser.
+
+x-symbol
+     Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts.
+
+xemacs-base
+     Fundamental XEmacs support, you almost certainly need this.
+
+xemacs-devel
+     XEmacs Lisp developer support.  This package contains utilities for
+     supporting Lisp development.  It is a single-file package so it
+     may be tailored.
+
+xlib
+     Emacs interface to X server.
+
+xslide
+     XSL editing support.
+
+xslt-process
+     A minor mode for (X)Emacs which allows running an XSLT processor
+     on a buffer.
+
+xwem
+     X Emacs Window Manager.
+
+zenirc
+     ZENIRC IRC Client.
+
+Mule Support (mule)
+-------------------
+
+MULti-lingual Enhancement.  Support for world scripts such as Latin,
+Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.  To use these
+packages your XEmacs must be compiled with Mule support.
+
+edict
+     MULE: Lisp Interface to EDICT, Kanji Dictionary.
+
+egg-its
+     MULE: Wnn (4.2 and 6) support.  SJ3 support.
+
+latin-unity
+     MULE: find single ISO 8859 character set to encode a buffer.
+
+latin-unity
+     Unify character sets in a buffer. When characters belong to
+     disjoint character sets, this attempts to translate the characters
+     so that they belong to one character set. If the buffer coding
+     system is not sufficient, this suggests different coding systems.
+
+leim
+     MULE: Quail.  All non-English and non-Japanese language support.
+
+locale
+     MULE: Localized menubars and localized splash screens.
+
+lookup
+     Dictionary support. (This isn't an English dictionary program)
+
+mule-base
+     MULE: Basic Mule support, required for building with Mule.
+
+mule-ucs
+     MULE: Extended coding systems (including Unicode) for XEmacs.
+
+mule-ucs
+     Extended coding systems (including Unicode) for XEmacs.
+
+skk
+     Another Japanese Language Input Method.  Can be used without a
+     separate process running as a dictionary server.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.7.3,  Next: Q1.7.4,  Prev: Q1.7.2,  Up: Introduction
+
+Q1.7.3: Do I need to have the packages to run XEmacs?
+-----------------------------------------------------
+
+Strictly speaking, no.  XEmacs will build and install just fine without
+any packages installed.  However, only the most basic editing functions
+will be available with no packages installed, so installing packages is
+an essential part of making your installed XEmacs _useful_.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.7.4,  Next: Q1.8.1,  Prev: Q1.7.3,  Up: Introduction
+
+Q1.7.4: Is there a way to find which package has particular functionality?
+--------------------------------------------------------------------------
+
+If you want to find out which package contains the functionality you
+are looking for, use `M-x package-get-package-provider', and give it a
+symbol that is likely to be in that package.
+
+   For example, if some code you want to use has a `(require
+'thingatpt)' in it:
+
+       M-x package-get-package-provider RET thingatpt RET
+
+   which will return something like: `(fsf-compat "1.08").'
+
+1.8: Internationalization
+=========================
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.1,  Next: Q1.8.2,  Prev: Q1.7.4,  Up: Introduction
+
+Q1.8.1: What is the status of internationalization support aka MULE (including Asian language support)?
+-------------------------------------------------------------------------------------------------------
+
+Both the stable and development versions of XEmacs include
+internationalization support (aka MULE).  MULE currently (21.4) works on
+UNIX and Linux systems.  It is possible to build with MULE on Windows
+systems, but if you really need MULE on Windows, it is recommended that
+you build and use the development (21.5) version, and deal with the
+instability of the development tree.  Binaries compiled without MULE
+support run faster than MULE capable XEmacsen.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.2,  Next: Q1.8.3,  Prev: Q1.8.1,  Up: Introduction
+
+Q1.8.2: How can I help with internationalization?
+-------------------------------------------------
+
+If you would like to help, you may want to join the
+<xemacs-mule@xemacs.org> mailing list.  Especially needed are people
+who speak/write languages other than English, who are willing to use
+XEmacs/MULE regularly, and have some experience with Elisp.
+
+   Translations of the TUTORIAL and man page are welcome, and XEmacs
+does support multilingual menus, but we have few current translations.
+
+   *Note How do I become a Beta Tester?: Q1.5.2.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.3,  Next: Q1.8.4,  Prev: Q1.8.2,  Up: Introduction
+
+Q1.8.3: How do I type non-ASCII characters?
+-------------------------------------------
+
+*Note How can you type in special characters in XEmacs?: Q3.0.6, in
+part 3 of this FAQ, for some simple methods that also work in non-MULE
+builds of XEmacs (but only for one-octet coded character sets, and
+mostly for ISO 8859/1).  Many of the methods available for Cyrillic
+(*note How about Cyrillic modes?: Q1.8.7.) work without MULE.  MULE has
+more general capabilities.  *Note Please explain the various input
+methods in MULE/XEmacs: Q1.8.5.
+
+   *Note How do I display non-ASCII characters?: Q4.0.8, which covers
+display of non-ASCII characters.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.4,  Next: Q1.8.5,  Prev: Q1.8.3,  Up: Introduction
+
+Q1.8.4: Can XEmacs messages come out in a different language?
+-------------------------------------------------------------
+
+The message-catalog support was written but is badly bit-rotted.  XEmacs
+20 and 21 did _not_ support it, and early releases of XEmacs 22 will
+not either.
+
+   However, menubar localization _does_ work.  To enable it, add to
+your `Emacs' file entries like this:
+
+     Emacs*XlwMenu.resourceLabels:                   True
+     Emacs*XlwMenu.file.labelString:                 Fichier
+     Emacs*XlwMenu.openInOtherWindow.labelString:      In anderem Fenster oeffnen
+
+   The name of the resource is derived from the non-localized entry by
+removing punctuation and capitalizing as above.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.5,  Next: Q1.8.6,  Prev: Q1.8.4,  Up: Introduction
+
+Q1.8.5: Please explain the various input methods in MULE/XEmacs
+---------------------------------------------------------------
+
+Mule supports a wide variety of input methods.  There are three basic
+classes: Lisp implementations, generic platform support, and library
+interfaces.
+
+   _Lisp implementations_ include Quail, which provides table-driven
+input methods for almost all the character sets that Mule supports
+(including all of the ISO 8859 family, the Indic languages, Thai, and
+so on), and SKK, for Japanese.  (SKK also supports an interface to an
+external "dictionary server" process.)  Quail supports both typical
+"dead-key" methods (eg, in the "latin-1-prefix" method, `" a' produces
+ä, LATIN SMALL LETTER A WITH DIAERESIS), and the complex
+dictionary-based phonetic methods used for Asian ideographic languages
+like Chinese.
+
+   Lisp implementations can be less powerful (but they are not
+perceptibly inefficient), and of course are not portable to non-Emacs
+applications.  The incompatibility can be very annoying.  On the other
+hand, they require no special platform support or external libraries,
+so if you can display the characters, Mule can input them for you and
+you can edit, anywhere.
+
+   _Generic platform support_ is currently limited to the X Input
+Method (XIM) framework, although support for MSIME (for MS Windows) is
+planned, and IIIMF (Sun's Internet-Intranet Input Method Framework)
+support is extremely desirable.  XIM is enabled at build time by use of
+the `--with-xim' flag to `configure'.  For use of XIM, see your
+platform documentation.  However, normally the input method you use is
+specified via the `LANG' and `XMODIFIERS' environment variables.
+
+   Of course, input skills are portable across most applications.
+However, especially in modern GUI systems the habit of using bucky bits
+has fallen into sad disuse, and many XIM systems are poorly configured
+for use with Emacs.  For example, the kinput2 input manager (a separate
+process providing an interface between Japanese dictionary servers such
+as Canna and Wnn, and the application) tends to gobble up keystrokes
+generating Meta characters.  This means that to edit while using an XIM
+input method, you must toggle the input method off every time you want
+to use `M-f'.  Your mileage may vary.
+
+   _Library interfaces_ are most common for Japanese, although Wnn
+supports Chinese (traditional and simplified) and Korean.  There are
+Chinese and Korean input servers available, but we do not know of any
+patches for XEmacs to use them directly.  You can use them via
+IM-enabled terminals, by manipulating the terminal coding systems.  We
+describe only the Japanese-oriented systems here.  The advantage of
+these systems is that they are very powerful, and on platforms where
+they are available there is typically a wide range of applications that
+support them.  Thus your input skills are portable across applications.
+
+   Mule provides built-in interfaces to the following input methods:
+Wnn4, Wnn6, Canna, and SJ3.  These can be configured at build time.
+There are patches available (no URL, sorry) to support the SKK server,
+as well.  Wnn and SJ3 use the `egg' user interface.  The interface for
+Canna is specialized to Canna.
+
+   Wnn supports Japanese, Chinese and Korean. It is made by OMRON and
+Kyôto University. It is a powerful and complex system.  Wnn4 is free
+and Wnn6 is not.  Wnn uses grammatical hints and probability of word
+association, so in principle Wnn can be cleverer than other methods.
+
+   Canna, made by NEC, supports only Japanese.  It is a simple and
+powerful system. Canna uses only grammar, but its grammar and
+dictionary are quite sophisticated.  So for standard modern Japanese,
+Canna seems cleverer than Wnn4. In addition, the UNIX version of Canna
+is free (now there is a Microsoft Windows version).
+
+   SJ3, by Sony, supports only Japanese.
+
+   Egg consists of following parts:
+
+  1. Input character Translation System (ITS) layer.  It translates
+     ASCII inputs to Kana/PinYin/Hangul characters.
+
+  2. Kana/PinYin/Hangul to Kanji transfer layer.  The interface layer
+     to network Kana-Kanji server (Wnn and Sj3).
+
+   These input methods are modal.  They have a raw (alphabet) mode, a
+phonetic input mode, and Kana-Kanji transfer mode.  However there are
+mode-less input methods for Egg and Canna.  `boiled-egg' is a mode-less
+input method running on Egg.  For Canna, `canna.el' has a tiny
+boiled-egg-like command, `(canna-boil)', and there are some
+boiled-egg-like utilities.
+
+   Much of this information was provided by MORIOKA Tomohiko
+<morioka@jaist.ac.jp>.
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.6,  Next: Q1.8.7,  Prev: Q1.8.5,  Up: Introduction
+
+Q1.8.6: How do I portably code for MULE/XEmacs?
+-----------------------------------------------
+
+MULE has evolved rapidly over the last few years, and the original third
+party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite
+different implementations.  The APIs also vary although recent versions
+of XEmacs have tended to converge to the GNU Emacs standard.
+
+   MULE implementations are going to continue to evolve.  Both GNU Emacs
+and XEmacs are working hard on Unicode support, which will involve new
+APIs and probably variations on old ones.  For XEmacs 22, the old ISO
+2022-based system for recognizing encodings will be replaced by a much
+more flexible system, which should improve accuracy of automatic coding
+detections, but will also involve new APIs.
+
+   MORIOKA Tomohiko <morioka@jaist.ac.jp> writes:
+
+     The application implementor must write separate code for these mule
+     variants.  [Please don't hesitate to report these variants to us;
+     they are not, strictly speaking, bugs, but they give third-party
+     developers the same kind of creepy-crawly feeling.  We'll do what
+     we can. - Ed.]
+
+     MULE and the next version of Emacs are similar but the symbols are
+     very different--requiring separate code as well.
+
+     Namely we must support 3 kinds of mule variants and 4 or 5 or 6
+     kinds of emacs variants... (;_;) I'm shocked, so I wrote a wrapper
+     package called `emu' to provide a common interface.  [There is an
+     XEmacs package of APEL which provides much more comprehensive
+     coverage.  Be careful, however; APEL has problems of its own. -
+     Ed.]
+
+     I have the following suggestions about dealing with mule variants:
+
+        * `(featurep 'mule)' `t' on all mule variants
+
+        * `(boundp 'MULE)' is `t' on only MULE.  Maybe the next version
+          of Emacs will not have this symbol.
+
+        * MULE has a variable `mule-version'.  Perhaps the next version
+          of Emacs will have this variable as well.
+
+     Following is a sample to distinguish mule variants:
+
+          (if (featurep 'mule)
+              (cond ((boundp 'MULE)
+                     ;; for original Mule
+                     )
+                    ((string-match "XEmacs" emacs-version)
+                     ;; for XEmacs with Mule
+                     )
+                    (t
+                     ;; for next version of Emacs
+                     ))
+            ;; for old emacs variants
+            )
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.7,  Next: Q1.8.8,  Prev: Q1.8.6,  Up: Introduction
+
+Q1.8.7: How about Cyrillic modes?
+---------------------------------
+
+Ilya Zakharevich <ilya@math.ohio-state.edu> writes:
+
+     There is a cyrillic mode in the file `mysetup.zip' in
+     `ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/'.  This is a
+     modification to Valery Alexeev's <ava@math.jhu.ed> `russian.el'
+     which can be obtained from
+
+   `http://www.math.uga.edu/~valery/russian.el'.
+
+   Dima Barsky <d.barsky@ee.surrey.ac.uk> writes:
+
+     There is another cyrillic mode for both GNU Emacs and XEmacs by
+     Dmitrii (Mitya) Manin <manin@camelot.mssm.edu> at
+     `http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el'.
+
+   Rebecca Ore <rebecca.ore@op.net> writes:
+
+     The fullest resource I found on Russian language use (in and out of
+     XEmacs) is `http://www.ibiblio.org/sergei/Software/Software.html'
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.8,  Next: Q1.8.9,  Prev: Q1.8.7,  Up: Introduction
+
+Q1.8.8: Does XEmacs support Unicode?
+------------------------------------
+
+To get Unicode support, you need a Mule-enabled XEmacs.
+
+   21.5 has internal support for Unicode and supports it fully,
+although we don't yet use it as the internal encoding.
+
+   21.4 supports Unicode partially - as an external encoding for files,
+processes, and terminals, but without font support.  *Note How does
+XEmacs display Unicode?: Q1.8.9.  To get Unicode support in 21.4,
+install Mule-UCS from packages in the usual way, and put
+
+     (require 'un-define)
+     (set-coding-priority-list '(utf-8))
+     (set-coding-category-system 'utf-8 'utf-8)
+
+   in your init file to enable the UTF-8 coding system.  You may wish to
+view the documentation of `set-coding-priority-list' if you find that
+files that are not UTF-8 are being mis-recognized as UTF-8.
+
+   Install standard national fonts (not Unicode fonts) for all character
+sets you use.  *Note How does XEmacs display Unicode??: Q1.8.9.
+
+   Mule-UCS also supports 16-bit forms of Unicode (UTF-16).  It does not
+support 31-bit forms of Unicode (UTF-32 or UCS-4).
+
+\1f
+File: xemacs-faq.info,  Node: Q1.8.9,  Prev: Q1.8.8,  Up: Introduction
+
+Q1.8.9: How does XEmacs display Unicode?
+----------------------------------------
+
+Mule doesn't have a Unicode charset internally, so there's nothing to
+bind a Unicode registry to.  It would not be straightforward to create,
+either, because Unicode is not ISO 2022-compatible.  You'd have to
+translate it to multiple 96x96 pages.
+
+   This means that Mule-UCS uses ordinary national fonts for display.
+This is not really a problem, except for those languages that use the
+Unified Han characters.  The problem here is that Mule-UCS maps from
+Unicode code points to national character sets in a deterministic way.
+By default, this means that Japanese fonts are tried first, then
+Chinese, then Korean.  To change the priority ordering, use the command
+`un-define-change-charset-order'.
+
+   It also means you can't use Unicode fonts directly, at least not
+without extreme hackery.  You can run -nw with
+(set-terminal-coding-system 'utf-8) if you really want a Unicode font
+for some reason.
+
+   Real Unicode support will be introduced in XEmacs 22.0.
+
+\1f
+File: xemacs-faq.info,  Node: Installation,  Next: Editing,  Prev: Introduction,  Up: Top
+
+2 Installation and Troubleshooting
+**********************************
+
+This is part 2 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to Installation, Maintenance and Troubleshooting.
+
+* Menu:
+
+2.0: Installation (General)
+* Q2.0.1::    How do I build and install XEmacs?
+* Q2.0.2::    Where do I find external libraries?
+* Q2.0.3::    How do I specify the paths that XEmacs uses for finding files?
+* Q2.0.4::    Running XEmacs without installing
+* Q2.0.5::    XEmacs is too big
+
+2.1: Package Installation
+* Q2.1.1::    How do I install the packages?
+* Q2.1.2::    Can I install the packages individually?
+* Q2.1.3::    Can I install the packages automatically?
+* Q2.1.4::    Can I upgrade or remove packages?
+* Q2.1.5::    Which packages to install?
+* Q2.1.6::    Can you describe the package location process in more detail?
+* Q2.1.7::    EFS fails with "500 AUTH not understood"
+
+2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
+* Q2.2.1::    Libraries in non-standard locations
+* Q2.2.2::    Why can't I strip XEmacs?
+
+2.3: Windows Installation (Windows, Cygwin, MinGW)
+* Q2.3.1::    What exactly are all the different ways to build XEmacs under Windows?
+* Q2.3.2::    What compiler/libraries do I need to compile XEmacs?
+* Q2.3.3::    How do I compile the native port?
+* Q2.3.4::    What do I need for Cygwin?
+* Q2.3.5::    How do I compile under Cygwin?
+* Q2.3.6::    How do I compile using MinGW (aka `the -mno-cygwin flag to gcc')?
+* Q2.3.7::    How do I compile with X support?
+* Q2.3.8::    Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
+
+2.4: General Troubleshooting
+* Q2.4.1::    How do I deal with bugs or with problems building, installing, or running?
+* Q2.4.2::    Help!  XEmacs just crashed on me!
+* Q2.4.3::    XEmacs crashes and I compiled it myself.
+* Q2.4.4::    How to debug an XEmacs problem with a debugger
+* Q2.4.5::    I get a cryptic error message when trying to do something.
+* Q2.4.6::    XEmacs hangs when I try to do something.
+* Q2.4.7::    I get an error message when XEmacs is running in batch mode.
+* Q2.4.8::    The keyboard or mouse is not working properly, or I have some other event-related problem.
+* Q2.4.9::    C-g doesn't work for me.  Is it broken?
+* Q2.4.10::   How do I debug process-related problems?
+* Q2.4.11::   XEmacs is outputting lots of X errors.
+* Q2.4.12::   After upgrading, XEmacs won't do `foo' any more!
+
+2.5: Startup-Related Problems
+* Q2.5.1::    XEmacs cannot connect to my X Terminal!
+* Q2.5.2::    Startup problems related to paths or package locations.
+* Q2.5.3::    XEmacs won't start without network.
+* Q2.5.4::    Startup warnings about deducing proper fonts?
+* Q2.5.5::    Warnings from incorrect key modifiers.
+* Q2.5.6::    XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
+
+2.0: Installation (General)
+===========================
 
 \1f
 File: xemacs-faq.info,  Node: Q2.0.1,  Next: Q2.0.2,  Prev: Installation,  Up: Installation
 
-2.0: Installation
-=================
+Q2.0.1: How do I build and install XEmacs?
+------------------------------------------
+
+See the file `etc/NEWS' for information on new features and other
+user-visible changes since the last version of XEmacs.
+
+   The file `INSTALL' in the top-level directory says how to bring up
+XEmacs on Unix and Cygwin, once you have loaded the entire subtree of
+this directory.
+
+   See the file `nt/README' for instructions on building XEmacs for
+Microsoft Windows.
+
+   *Note Q2.1.1::, for the installation of (essential) add on packages.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.0.2,  Next: Q2.0.3,  Prev: Q2.0.1,  Up: Installation
+
+Q2.0.2: Where do I find external libraries?
+-------------------------------------------
+
+All external libraries used by XEmacs can be found on the XEmacs web
+site `http://www.xemacs.org/Download/optLibs.html'.
+
+   The library versions available here are known to work with XEmacs.
+(Newer versions will probably work as well but we can't guarantee it.)
+We try to keep the libraries up-to-date but may not always succeed.
+Check the above page for the canonical locations of the external
+libraries, allowing you to download the latest, bleeding-edge versions.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.0.3,  Next: Q2.0.4,  Prev: Q2.0.2,  Up: Installation
+
+Q2.0.3: How do I specify the paths that XEmacs uses for finding files?
+----------------------------------------------------------------------
+
+You can specify what paths to use by using a number of different flags
+when running configure.  See the section MAKE VARIABLES in the top-level
+file INSTALL in the XEmacs distribution for a listing of those flags.
+
+   Most of the time, however, the simplest fix is: *do not* specify
+paths as you might for GNU Emacs.  XEmacs can generally determine the
+necessary paths dynamically at run time.  The only path that generally
+needs to be specified is the root directory to install into.  That can
+be specified by passing the `--prefix' flag to configure.  For a
+description of the XEmacs install tree, please consult the `NEWS' file.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.0.4,  Next: Q2.0.5,  Prev: Q2.0.3,  Up: Installation
+
+Q2.0.4: Running XEmacs without installing
+-----------------------------------------
+
+How can I just try XEmacs without installing it?
+
+   XEmacs will run in place without requiring installation and copying
+of the Lisp directories, and without having to specify a special
+build-time flag.  It's the copying of the Lisp directories that
+requires so much space.  XEmacs is largely written in Lisp.
+
+   A good method is to make a shell alias for xemacs:
+
+     alias xemacs=/src/xemacs-21.5/src/xemacs
+
+   (You will obviously use whatever directory you downloaded the source
+tree to instead of `/src/xemacs-21.5').
+
+   This will let you run XEmacs without massive copying.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.0.5,  Next: Q2.1.1,  Prev: Q2.0.4,  Up: Installation
+
+Q2.0.5: XEmacs is too big
+-------------------------
+
+The space required by the installation directories can be reduced
+dramatically if desired.  Gzip all the .el files.  Remove all the
+packages you'll never want to use.  Remove the TexInfo manuals.  Remove
+the Info (and use just hardcopy versions of the manual).  Remove most
+of the stuff in etc.  Remove or gzip all the source code.  Gzip or
+remove the C source code.  Configure it so that copies are not made of
+the support lisp.
+
+   These are all Emacs Lisp source code and bytecompiled object code.
+You may safely gzip everything named *.el here.  You may remove any
+package you don't use.  _Nothing bad will happen if you delete a package
+that you do not use_.  You must be sure you do not use it though, so be
+conservative at first.
+
+   Any package with the possible exceptions of xemacs-base, and EFS are
+candidates for removal.  Ask yourself, _Do I ever want to use this
+package?_  If the answer is no, then it is a candidate for removal.
+
+   First, gzip all the .el files.  Then go about package by package and
+start gzipping the .elc files.  Then run XEmacs and do whatever it is
+you normally do.  If nothing bad happens, then remove the package.  You
+can remove a package via the PUI interface (`M-x pui-list-packages',
+then press `d' to mark the packages you wish to delete, and then `x' to
+delete them.
+
+   Another method is to do `M-x package-get-delete-package'.
+
+2.1: Package Installation
+=========================
+
+\1f
+File: xemacs-faq.info,  Node: Q2.1.1,  Next: Q2.1.2,  Prev: Q2.0.5,  Up: Installation
+
+Q2.1.1: How do I install the packages?
+--------------------------------------
+
+There are three ways to install the packages.
+
+  1. Manually, all at once, using the 'Sumo Tarball'.
+
+  2. Manually, using individual package tarballs.
+
+  3. Automatically, using the package tools from XEmacs.
+
+   If you don't want to mess with the packages, it is easiest to just
+grab them manually, all at once. (For the other two ways, *Note
+Q2.1.2::, and *Note Q2.1.3::.) Download the file
+
+   `xemacs-sumo.tar.gz'
+
+   For an XEmacs compiled with Mule you also need
+
+   `xemacs-mule-sumo.tar.gz'
+
+   These are in the `packages' directory on your XEmacs mirror archive:
+`ftp://ftp.xemacs.org/pub/xemacs/packages' or its mirrors.  N.B. They
+are called 'Sumo Tarballs' for good reason. They are currently about
+19MB and 4.5MB (gzipped) respectively.
+
+   Install them on Unix and Mac OS X using the shell/Terminal command
+
+   `cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -'
+
+   Where `$prefix' is what you gave to the `--prefix' flag to
+`configure', and defaults to `/usr/local'.
+
+   If you have GNU tar you can use:
+
+   `cd $prefix/lib/xemacs ; tar zxvf <tarballname>'
+
+   If you have the packages somewhere nonstandard and don't want to
+bother with `$prefix' (for example, you're a developer and are compiling
+the packages yourself, and want your own private copy of everything),
+you can also directly specify this using `configure'.  To do this with
+21.5 and above use the `--with-package-prefix' parameter to specify the
+directory under which you untarred the above tarballs.  Under 21.4 and
+previous you need to use `--package-path'.  Using these options looks
+something like this:
+
+        configure --package-path="~/.xemacs::/src/xemacs/site-packages:/src/xemacs/xemacs-packages:/src/xemacs/mule-packages" ...
+
+   Under Windows, you need to place the above `tar.gz' files in the
+directory specified using the `PACKAGE_PREFIX' value in `nt/config.inc'
+and by default is `\Program Files\XEmacs'.  (To untar a `tar.gz' file
+you will need to use a utility such as WinZip, unless you have Cygwin
+or a similar environment installed, in which case the above Unix shell
+command should work fine.) If you want the packages somewhere else,
+just change `PACKAGE_PREFIX'.
+
+   Note that XEmacs finds the packages automatically anywhere underneath
+the directory tree where it expects to find the packages.  All you need
+to do is put stuff there; you don't need to run any program to tell
+XEmacs to find the packges, or do anything of that sort.
+
+   However, XEmacs will only notice newly installed packages when it
+starts up, so you will have to restart if you are already running
+XEmacs.
+
+   For more details, *Note Startup Paths: (xemacs)Startup Paths, and
+*Note Packages: (xemacs)Packages.
+
+   As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
+
+   _NOTE_: For detailed information about how the package hierarchies
+work, *Note Package Overview: (lispref)Package Overview.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.1.2,  Next: Q2.1.3,  Prev: Q2.1.1,  Up: Installation
+
+Q2.1.2: Can I install the packages individually?
+------------------------------------------------
+
+Yes, you can download individual packages from the FTP site (*note
+Q2.1.1::).  Since packages are automatically noticed at startup, you
+just have to put them in the right place.
+
+   Note: If you are upgrading packages already installed, it's best to
+remove the old package first (*note Q2.1.4::).
+
+   For example if we are installing the `xemacs-base' package (version
+1.48):
+
+        mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+        cd $prefix/lib/xemacs/xemacs-packages RET
+        gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+
+   Or if you have GNU tar, the last step can be:
+
+        tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
+
+   For MULE related packages, it is best to untar into the
+`mule-packages' hierarchy, i.e. for the `mule-base' package, version
+1.37:
+
+        mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+        cd $prefix/lib/xemacs/mule-packages RET
+        gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+
+   Or if you have GNU tar, the last step can be:
+
+        tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
+
+\1f
+File: xemacs-faq.info,  Node: Q2.1.3,  Next: Q2.1.4,  Prev: Q2.1.2,  Up: Installation
+
+Q2.1.3: Can I install the packages automatically?
+-------------------------------------------------
+
+XEmacs comes with some tools to make the periodic updating and
+installing easier. It will notice if new packages or versions are
+available and will fetch them from the FTP site.
+
+   Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
+This requirement will hopefully go away in the future. The packages you
+need are:
+
+        efs          - To fetch the files from the FTP site or mirrors.
+        xemacs-base  - Needed by efs.
+
+   and optionally:
+
+        mailcrypt    - For PGP verification of the package-index file.
+
+   After installing these by hand, fire up XEmacs and follow these
+steps.
+
+  1. Choose a download site.
+        * via menu: Tools -> Packages -> Set Download Site
+
+        * via keyb: M-x customize-variable RET package-get-remote RET
+          (put in the details of remote host and directory)
+
+     If the package tarballs _AND_ the package-index file are in a
+     local directory, you can: M-x pui-set-local-package-get-directory
+     RET
+
+  2. Obtain a list of packages and display the list in a buffer named
+     "*Packages*".
+        * menu: Tools -> Packages -> List & Install
+
+        * keyb: M-x pui-list-packages RET
+
+     XEmacs will now connect to the remote site and download the latest
+     package-index file.
+
+     The resulting buffer, "*Packages*" has brief instructions at the
+     end of the buffer.
+
+  3. Choose the packages you wish to install.
+        * mouse: Click button 2 on the package name.
+
+        * keyb: RET on the package name
+
+  4. Make sure you have everything you need.
+        * menu: Packages -> Add Required
+
+        * keyb: r
+
+     XEmacs will now search for packages that are required by the ones
+     that you have chosen to install and offer to select those packages
+     also.
+
+     For novices and gurus alike, this step can save your bacon.  It's
+     easy to forget to install a critical package.
+
+  5. Download and install the packages.
+        * menu: Packages -> Install/Remove Selected
+
+        * keyb: x
+
+\1f
+File: xemacs-faq.info,  Node: Q2.1.4,  Next: Q2.1.5,  Prev: Q2.1.3,  Up: Installation
+
+Q2.1.4: Can I upgrade or remove packages?
+-----------------------------------------
+
+As the exact files and their locations contained in a package may
+change it is recommended to remove a package first before installing a
+new version. In order to facilitate removal each package contains an
+pgkinfo/MANIFEST.pkgname file which list all the files belong to the
+package. M-x package-admin-delete-binary-package RET can be used to
+remove a package using this file.
+
+   Note that the interactive package tools included with XEmacs already
+do this for you.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.1.5,  Next: Q2.1.6,  Prev: Q2.1.4,  Up: Installation
+
+Q2.1.5: Which packages to install?
+----------------------------------
+
+Unless you are an advanced user, just install everything.
+
+   If you really want to install only what's absolutely needed, a good
+minimal set of packages for XEmacs-latin1 would be
+
+     xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+     edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+     text-modes, time, mailcrypt
+
+   If you are using the XEmacs package tools, don't forget to do:
+
+       Packages -> Add Required
+
+   To make sure you have everything that the packages you have chosen to
+install need.
+
+   *Note Q1.7.2::, for a description of the various packages.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.1.6,  Next: Q2.1.7,  Prev: Q2.1.5,  Up: Installation
+
+Q2.1.6: Can you describe the package location process in more detail?
+---------------------------------------------------------------------
+
+On startup XEmacs looks for packages in so-called package hierarchies.
+Normally, there are three system wide hierarchies, like this:
+
+     $prefix/lib/xemacs/xemacs-packages/
+          Normal packages go here.
+
+     $prefix/lib/xemacs/mule-packages/
+          Mule packages go here and are only searched by MULE-enabled XEmacsen.
+
+     $prefix/lib/xemacs/site-packages/
+          Local and 3rd party packages go here.
+
+   This is what you get when you untar the SUMO tarballs under
+`$prefix/lib/xemacs'.
+
+   `$prefix' is specified using the `--prefix' parameter to
+`configure', and defaults to `usr/local'.
+
+   If the package path is not explicitly specified, XEmacs looks for the
+package directory `xemacs-packages' (and `mule-packages' and
+`site-packages') first under `~/.xemacs', then for a sister directory
+`lib/xemacs-VERSION' of the directory in which the XEmacs executable is
+located, then for a sister directory `lib/xemacs'.  The XEmacs
+executable (under Unix at least) is installed by default in
+`/usr/local/bin'; this explains why XEmacs in its default installation
+will find packages that you put under `/usr/local/lib/xemacs'.
+
+   You can specify where exactly XEmacs looks for packages by using the
+`--with-package-prefix' or `--with-package-path' parameters to
+`configure' (or the equivalent settings in `config.inc', under
+Windows), or setting the `EMACSPACKAGEPATH' environment variable (which
+has the same format as `--with-package-path').  *Note Q2.1.1::.
+
+   See `configure.usage' for more info about the format of these
+`configure' parameters.
+
+   In addition to the system wide packages, each user can have his own
+packages installed under `~/.xemacs/'. If you want to install packages
+there using the interactive tools, you need to set
+`package-get-install-to-user-init-directory' to `t'.
+
+   The site-packages hierarchy replaces the old `site-lisp' directory.
+XEmacs no longer looks into a `site-lisp' directly by default.  A good
+place to put `site-start.el' would be in
+`$prefix/lib/xemacs/site-packages/lisp/'.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.1.7,  Next: Q2.2.1,  Prev: Q2.1.6,  Up: Installation
+
+Q2.1.7: EFS fails with "500 AUTH not understood" (NEW)
+------------------------------------------------------
+
+A typical error: FTP Error: USER request failed; 500 AUTH not
+understood.
+
+   Thanks to giacomo boffi <giacomo.boffi@polimi.it> who recommends on
+comp.emacs.xemacs:
+
+   tell your ftp client to not attempt AUTH authentication (or do not
+use FTP servers that don't understand AUTH)
+
+   and notes that you need to add an element (often "-u") to
+`efs-ftp-program-args'.  Use M-x customize-variable, and verify the
+needed flag with `man ftp' or other local documentation.
+
+2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
+================================================================
+
+\1f
+File: xemacs-faq.info,  Node: Q2.2.1,  Next: Q2.2.2,  Prev: Q2.1.7,  Up: Installation
+
+Q2.2.1: Libraries in non-standard locations
+-------------------------------------------
+
+If your libraries are in a non-standard location, you can specify the
+location using the following flags to `configure'.  Under 21.4 or
+earlier:
+
+     --site-libraries=WHATEVER
+     --site-includes=WHATEVER
+
+   Under 21.5 or later:
+
+     --with-site-libraries=WHATEVER
+     --with-site-includes=WHATEVER
+
+   If you have multiple paths to specify, use the following syntax:
+
+     --site-libraries='/path/one /path/two /path/etc'
+
+   If the libraries and headers reside in the directories `lib' and
+`include' of a common root (say `/sw') then both can be specified with
+a single option:
+
+     --site-prefixes=WHATEVER
+
+   or for 21.5:
+
+     --with-site-prefixes=WHATEVER
+
+\1f
+File: xemacs-faq.info,  Node: Q2.2.2,  Next: Q2.3.1,  Prev: Q2.2.1,  Up: Installation
+
+Q2.2.2: Why can't I strip XEmacs?
+---------------------------------
+
+Richard Cognot <cognot@fronsac.ensg.u-nancy.fr> writes:
+
+     Because of the way XEmacs (and every other Emacsen, AFAIK) is
+     built. The link gives you a bare-boned emacs (called temacs).
+     temacs is then run, preloading some of the lisp files. The result
+     is then dumped into a new executable, named xemacs, which will
+     contain all of the preloaded lisp functions and data.
+
+     Now, during the dump itself, the executable (code+data+symbols) is
+     written on disk using a special unexec() function. This function is
+     obviously heavily system dependent. And on some systems, it leads
+     to an executable which, although valid, cannot be stripped without
+     damage. If memory serves, this is especially the case for AIX
+     binaries. On other architectures it might work OK.
+
+     The Right Way to strip the emacs binary is to strip temacs prior to
+     dumping xemacs. This will always work, although you can do that
+     only if you install from sources (as temacs is `not' part of the
+     binary kits).
+
+   Nat Makarevitch <nat@nataa.fr.eu.org> writes:
+
+     Here is the trick:
+
+       1. [ ./configure; make ]
+
+       2. rm src/xemacs
+
+       3. strip src/temacs
+
+       4. make
+
+       5. cp src/xemacs /usr/local/bin/xemacs
+
+       6. cp lib-src/DOC-19.16-XEmacs
+          /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
+
+2.3: Windows Installation (Windows, Cygwin, MinGW)
+==================================================
+
+\1f
+File: xemacs-faq.info,  Node: Q2.3.1,  Next: Q2.3.2,  Prev: Q2.2.2,  Up: Installation
+
+Q2.3.1: What exactly are all the different ways to build XEmacs under Windows?
+------------------------------------------------------------------------------
+
+XEmacs can be built in several ways in the MS Windows environment.
+
+   The standard way is what we call the "native" port.  It uses the
+Win32 API and has no connection with X whatsoever - it does not require
+X libraries to build, nor does it require an X server to run.  The
+native port is the most reliable version and provides the best graphical
+support.  Almost all development is geared towards this version, and
+there is little reason not to use it.
+
+   The second way to build is the Cygwin port.  It takes advantage of
+Cygnus emulation library under Win32.  *Note What are Cygwin and MinGW:
+Q1.2.5, for more information.
+
+   A third way is the MinGW port.  It uses the Cygwin environment to
+build but does not require it at runtime.  *Note What are Cygwin and
+MinGW: Q1.2.5, for more information.
+
+   Finally, you might also be able to build the non-Cygwin, non-MinGW
+"X" port.  This was actually the first version of XEmacs that ran under
+MS Windows, and although the code is still in XEmacs, it's essentially
+orphaned and it's unlikely it will compile without a lot of work.  If
+you want an MS Windows versin of XEmacs that supports X, use the Cygwin
+version. (The X support there is actively maintained, so that Windows
+developers can test the X support in XEmacs.)
+
+\1f
+File: xemacs-faq.info,  Node: Q2.3.2,  Next: Q2.3.3,  Prev: Q2.3.1,  Up: Installation
+
+Q2.3.2: What compiler/libraries do I need to compile XEmacs?
+------------------------------------------------------------
+
+You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
+some beta testers currently trying to compile with VC.NET, aka version
+7.0, but we can't yet report complete success.) For the Cygwin and
+MinGW versions, you need the Cygwin environment, which comes with GCC,
+the compiler used for those versions.  *Note What are Cygwin and MinGW:
+Q1.2.5, for more information on Cygwin and MinGW.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.3.3,  Next: Q2.3.4,  Prev: Q2.3.2,  Up: Installation
+
+Q2.3.3: How do I compile the native port?
+-----------------------------------------
+
+Please read the file `nt/README' in the XEmacs distribution, which
+contains the full description.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.3.4,  Next: Q2.3.5,  Prev: Q2.3.3,  Up: Installation
+
+Q2.3.4: What do I need for Cygwin?
+----------------------------------
+
+You can find the Cygwin tools and compiler at:
+
+   `http://www.cygwin.com/'
+
+   Click on the `Install or update now!' link, which will download a
+file `setup.exe', which you can use to download everything else. (You
+will need to pick a mirror site; `mirrors.rcn.net' is probably the
+best.) You should go ahead and install everything - you'll get various
+ancillary libraries that XEmacs needs or likes, e.g. XPM, PNG, JPEG,
+TIFF, etc.  You can also get X Windows here, if you want to compile
+under X.
+
+   If you want to compile without X, you will need the `xpm-nox'
+library, which must be specifically selected in the Cygwin netinstaller;
+it is not selected by default.  The package has had various names.
+Currently it is called `cygXpm-noX4.dll'.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.3.5,  Next: Q2.3.6,  Prev: Q2.3.4,  Up: Installation
+
+Q2.3.5: How do I compile under Cygwin?
+--------------------------------------
+
+Similar as on Unix; use the usual `configure' and `make' process.  Some
+problems to watch out for:
+
+   * make sure HOME is set. This controls where you `init.el' file
+     comes from;
+
+   * `CYGWIN' needs to be set to `tty' for process support to work;
+
+   * picking up some other grep or other UNIX-like tools can kill
+     configure;
+
+   * static heap too small, adjust `src/sheap-adjust.h' to a more
+     positive number;
+
+   * (Unconfirmed) The Cygwin version doesn't understand
+     `//machine/path' type paths so you will need to manually mount a
+     directory of this form under a unix style directory for a build to
+     work on the directory;
+
+   * If you're building *WITHOUT* X11, don't forget to change symlinks
+     `/usr/lib/libXpm.a' and `/usr/lib/libXpm.dll.a' to point to the
+     non-X versions of these libraries.  By default they point to the X
+     versions.  So:
+
+          /usr/lib/libXpm.a     -> /usr/lib/libXpm-noX.a
+          /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
+
+     (This advice may now be obsolete because of the availability of the
+     cygXpm-noX4.dll package from Cygwin.  Send confirmation to
+     <faq@xemacs.org>.)
+
+   * Other problems are listed in the `PROBLEMS' file, in the top-level
+     directory of the XEmacs sources.
+
+
+\1f
+File: xemacs-faq.info,  Node: Q2.3.6,  Next: Q2.3.7,  Prev: Q2.3.5,  Up: Installation
+
+Q2.3.6: How do I compile using MinGW (aka `the -mno-cygwin flag to gcc')?
+-------------------------------------------------------------------------
+
+Similar to the method for Unix.  Things to remember:
+
+   * Specify the target host on the command line for `./configure', e.g.
+     `./configure i586-pc-mingw32'.
+
+   * Be sure that your build directory is mounted such that it has the
+     same path either as a cygwin path (`/build/xemacs') or as a Windows
+     path (`c:\build\xemacs').
+
+   * Build `gcc -mno-cygwin' versions of the extra libs, i.e. `libpng',
+     `compface', etc.
+
+   * Specify the target location of the extra libs on the command line
+     to `configure', e.g.for 21.4 or earlier `./configure
+     --site-prefixes=/build/libs i586-pc-mingw32' and for 21.5 or later
+     `./configure --with-site-prefixes=/build/libs i586-pc-mingw32'.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.3.7,  Next: Q2.3.8,  Prev: Q2.3.6,  Up: Installation
+
+Q2.3.7: How do I compile with X support?
+----------------------------------------
+
+To compile under Cygwin, all you need to do is install XFree86, which
+is available as part of the standard Cygwin installation.
+`http://www.cygwin.com/'.  Once installed, `configure' should
+automatically find the X libraries and compile with X support.
+
+   As noted above, the non-Cygwin X support is basically orphaned, and
+probably won't work.  But if it want to try, it's described in
+`nt/README' in some detail.  Basically, you need to get X11 libraries
+from `http://ftp.x.org', and compile them.  If the precompiled versions
+are available somewhere, we don't know of it.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.3.8,  Next: Q2.4.1,  Prev: Q2.3.7,  Up: Installation
+
+Q2.3.8: Cygwin XEmacs won't start - cygXpm-noX4.dll was not found (NEW)
+-----------------------------------------------------------------------
+
+The Cygwin binary distributed with the netinstaller uses an external DLL
+to handle XPM images (such as toolbar buttons).  You may get an error
+like
+
+     This application has failed to start because cygXpm-noX4.dll was not found.
+     Re-installing the application may fix this problem.
+
+   Andy Piper <andy@xemacs.org> sez:
+
+     cygXpm-noX4 is part of the cygwin distribution under libraries or
+     graphics, but is not installed by default. You need to run the
+     cygwin setup again and select this package.
+
+   Ie, reinstalling XEmacs won't help because it is not part of the
+XEmacs distribution.
+
+2.4: General Troubleshooting
+============================
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.1,  Next: Q2.4.2,  Prev: Q2.3.8,  Up: Installation
+
+Q2.4.1: How do I deal with bugs or with problems building, installing, or running?
+----------------------------------------------------------------------------------
+
+The file `PROBLEMS' contains information on many common problems that
+occur in building, installing and running XEmacs.
+
+   Reports of bugs in XEmacs should be sent to
+<xemacs-beta@xemacs.org>.  You can also post to the newsgroup
+comp.emacs.xemacs (or equivalentlt, send to the mailing list
+<xemacs@xemacs.org>), but it is less likely that the developers will
+see it in a timely fashion.  *Note Bugs: (xemacs)Bugs, for more
+information on how to report bugs.  *Note Q1.4.2::, for more
+information on mailing lists relating to XEmacs.
+
+   There are three ways to read the Bugs section.
+
+  1. In a printed copy of the XEmacs manual.
+
+  2. With Info.  First, start XEmacs.  From the menu, select
+     `Help->Info (Online Docs)->Info Contents' to enter Info, then
+     click on `XEmacs', then on `Bugs'.  Or, use the keyboard: do `C-h
+     i' to enter Info, then `m XEmacs RET' to get to the Emacs manual,
+     then `m Bugs RET' to get to the section on bugs.  Or use
+     standalone Info in a like manner.  (Standalone Info is part of the
+     Texinfo distribution, not part of the XEmacs distribution.)
+
+  3. By hand.  Do
+          cat info/xemacs* | more "+/^File: xemacs.info,  Node: Bugs,"
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.2,  Next: Q2.4.3,  Prev: Q2.4.1,  Up: Installation
+
+Q2.4.2: Help!  XEmacs just crashed on me!
+-----------------------------------------
+
+First of all, don't panic.  Whenever XEmacs crashes, it tries extremely
+hard to auto-save all of your files before dying.  (The main time that
+this will not happen is if the machine physically lost power or if you
+killed the XEmacs process using `kill -9').  The next time you try to
+edit those files, you will be informed that a more recent auto-save
+file exists.  You can use `M-x recover-file' to retrieve the auto-saved
+version of the file.
+
+   You can use the command `M-x recover-session' after a crash to pick
+up where you left off.
+
+   Now, XEmacs is not perfect, and there may occasionally be times, or
+particular sequences of actions, that cause it to crash.  If you can
+come up with a reproducible way of doing this (or even if you have a
+pretty good memory of exactly what you were doing at the time), the
+maintainers would be very interested in knowing about it.  The best way
+to report a bug is using `M-x report-emacs-bug' (or by selecting `Send
+Bug Report...' from the Help menu).  If that won't work (e.g. you can't
+get XEmacs working at all), send ordinary mail to
+<xemacs-beta@xemacs.org>. _MAKE SURE_ to include the output from the
+crash, especially including the Lisp backtrace, as well as the XEmacs
+configuration from `M-x describe-installation' (or equivalently, the
+file `Installation' in the top of the build tree).  Note that the
+developers do _not_ usually follow `comp.emacs.xemacs' on a regular
+basis; thus, this is better for general questions about XEmacs than bug
+reports.
+
+   If at all possible, include a C stack backtrace of the core dump that
+was produced.  This shows where exactly things went wrong, and makes it
+much easier to diagnose problems.  To do this under Unix and Mac OS X,
+you need to locate the core file (it's called `core', and is usually
+sitting in the directory that you started XEmacs from, or your home
+directory if that other directory was not writable).  Then, go to that
+directory and execute a command like:
+
+     gdb `which xemacs` core
+
+   and then issue the command `where' to get the stack backtrace.  You
+might have to use `dbx' or some similar debugger in place of `gdb'.  If
+you don't have any such debugger available, complain to your system
+administrator.
+
+   It's possible that a core file didn't get produced or the stack trace
+from gdb is garbage, in which case you're out of luck unless you can
+reproduce the bug.  A nonexistent core file can happen in some
+circumstances on some operating systems, depending on what exactly
+triggered the crash.  It's also possible, however, that your limits are
+set to turn them off.  You may be able to reenable them using a command
+like `unlimit coredumpsize' or `ulimit -c'. (To find out how your
+limits are set, use the command `limit'.) However, if you didn't
+explicitly set your limits this way, go complain to your system
+administrator and tell him not to disable core files by default.
+
+   A garbaged stack trace can happen for various reasons.  Some versions
+of gdb are broken on certain operating systems and aren't able to read
+the core file.  It's also possible that the stack got overwritten
+during the crash.  A very simple reason, however, is that your version
+of XEmacs was compiled without debugging information or had the
+debugging information stripped.  A compilation with optimization can
+also result in partly or completely garbaged stack trace.  In such
+cases, you will need to recompile XEmacs with debugging information and
+without optimization; *Note How to debug an XEmacs problem with a
+debugger: Q2.4.4.  Note also that core files currently don't work at
+all under Cygwin, and the only way to get a backtrace is to run XEmacs
+from gdb.
+
+   If you cannot get a backtrace from the core dump, but can reproduce
+the problem, try running XEmacs under gdb.  The goal is to get clean C
+and Lisp backtraces and submit a bug report including full
+configuration information as described above, as this will greatly
+assist in the process of tracking down the bug.  However, even partial
+information is better than none.  The process of getting backtraces
+from gdb is described in detail in *Note How to debug an XEmacs problem
+with a debugger: Q2.4.4.
+
+   If you're under Microsoft Windows, you're out of luck unless you
+happen to have a debugging aid installed on your system, for example
+Visual C++.  In this case, the crash will result in a message giving
+you the option to enter a debugger (for example, by pressing `Cancel').
+Do this and locate the stack-trace window. (If your XEmacs was built
+without debugging information, the stack trace may not be very useful.)
+
+   When making a problem report make sure that:
+
+  1. Report *all* of the information output by XEmacs during the crash.
+
+  2. You mention what O/S and Hardware you are running XEmacs on.
+
+  3. What version of XEmacs you are running.
+
+  4. What build options you are using.
+
+  5. If the problem is related to graphics and you are running Unix or
+     Mac OS X, we will also need to know what version of the X Window
+     System you are running, and what window manager you are using.
+
+  6. If the problem happened on a TTY, please include the terminal type.
+
+  7. Try very hard to get both C and Lisp backtraces, as described
+     above.
+
+   Much of the information above is automatically generated by `M-x
+report-emacs-bug'.  Even more, and often useful, information can be
+generated by redirecting the output of `make' and `make check' to a
+file (`beta.err' is the default used by `build-report'), and executing
+`M-x build-report'.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.3,  Next: Q2.4.4,  Prev: Q2.4.2,  Up: Installation
+
+Q2.4.3: XEmacs crashes and I compiled it myself.
+------------------------------------------------
+
+There have been a variety of reports of crashes due to compilers with
+buggy optimizers.  If you are compiling with optimization, consider
+turning it off (*note How to debug an XEmacs problem with a debugger:
+Q2.4.4.) and recompiling.
+
+   Please see the `PROBLEMS' file that comes with XEmacs (it's in the
+top-level source directory) to read what it says about your platform.
+
+   If you compiled XEmacs 21.4 or ealier using `--use-union-type', or
+21.5 or later using `--enable-union-type' (or in either case used the
+option `USE_UNION_TYPE' in `config.inc' under Windows), try recompiling
+again without it.  The union type has been known to trigger compiler
+errors in a number of cases.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.4,  Next: Q2.4.5,  Prev: Q2.4.3,  Up: Installation
+
+Q2.4.4: How to debug an XEmacs problem with a debugger
+------------------------------------------------------
+
+If XEmacs does crash on you, one of the most productive things you can
+do to help get the bug fixed is to poke around a bit with the debugger.
+Here are some hints:
+
+   * First of all, if the crash is at all reproducible, consider very
+     strongly recompiling your XEmacs with debugging symbols and with no
+     optimization (e.g. with GCC use the compiler flags `-g -O0' -
+     that's an "oh" followed by a zero), and with the configure options
+     `--debug=yes' and `--error-checking=all' (`--enable-debug=yes' and
+     `--enable-error-checking=all' on XEmacs 21.5 or later).  This will
+     make your XEmacs run somewhat slower, but you are a lot more
+     likely to catch the problem earlier (closer to its source).  It
+     makes it a lot easier to determine what's going on with a
+     debugger.  The way to control the compiler flags is with the
+     configuration option `--cflags' (`--with-cflags' in 21.5).  If you
+     have a recent version of 21.5, you should use
+     `--without-optimization' in preference to directly setting
+     `--cflags'.
+
+   * If it's not a true crash (_i.e._, XEmacs is hung, or a zombie
+     process), or it's inconvenient to run XEmacs again because XEmacs
+     is already running or is running in batch mode as part of a bunch
+     of scripts, you may be able to attach to the existing process with
+     your debugger.  Under Unix and Mac OS X, the typical way to do
+     this is to first use some variant of the `ps' command to figure
+     out the process ID of XEmacs, for example `ps -auxww | grep
+     xemacs' under a BSD variant, `ps -elf | grep xemacs' under Linux
+     or System V, or `ps -aW | grep xemacs' under Cygwin.  Then run
+
+          gdb /path/to/xemacs/xemacs ####
+
+     Where `####' is the process id of your XEmacs. (If you're not
+     sure, try using `which xemacs'.) When gdb attaches, the xemacs
+     will stop and you can type `where' in gdb to get a stack trace as
+     usual.  To get things moving again, you can just type `quit' in
+     gdb.  It'll tell you the program is running and ask if you want to
+     quit anyways.  Say `y' and it'll quit and have your emacs continue
+     from where it was at.
+
+     If you're running another debugger, a similar method may work, or
+     you may have to run the debugger first and then use the `attach'
+     command or something similar.
+
+     Under Microsoft Windows, use the menu item `Build->Start
+     Debug->Attach to Process...' and select the XEmacs process from
+     the list given.
+
+   * If you're able to run XEmacs under a debugger and reproduce the
+     crash, here are some things you can do:
+
+   * If XEmacs is hitting an assertion failure, put a breakpoint on
+     `assert_failed()'.
+
+   * If XEmacs is hitting some weird Lisp error that's causing it to
+     crash (e.g. during startup), put a breakpoint on
+     `signal_1()'--this is declared static in `eval.c'.
+
+   * If XEmacs is outputting lots of X errors, put a breakpoint on
+     `x_error_handler()'; that will tell you which call is causing
+     them.  Note that the result may not be very useful by default
+     because X Windows normally operates asynchronously: A bunch of
+     commands are buffered up and then sent to the server all at once.
+     This greatly improves performance over a network but means that an
+     error may not be reported until the server receives the commands,
+     which can be long after XEmacs made the erroneous calls.  For best
+     results, you need to make the X server synchronous before getting
+     the backtrace.  This can be done by starting XEmacs with the
+     `-sync' option or executing the Lisp code `(x-debug-mode t)'.
+
+   * Internally, you will probably see lots of variables that hold
+     objects of type `Lisp_Object'.  These are references to Lisp
+     objects.  Printing them out with the debugger probably won't be too
+     useful--you'll likely just see a number.  To decode them, do this:
+
+          call debug_print (OBJECT)
+
+     where OBJECT is whatever you want to decode (it can be a variable,
+     a function call, etc.).  This uses the Lisp printing routines to
+     out a readable representation on the TTY from which the xemacs
+     process was invoked.
+
+     Under 21.5 and later, `dp' is defined as an easier-to-type
+     equivalent of `debug_print'.  You can also try `dpa' if you can't
+     see the output from `debug_print' (this will return a string
+     containing the output), or use `debug_p3' if `debug_print' itself
+     triggers a crash (this is a less comprehensive but super-safe way
+     to print out a Lisp object).
+
+   * If you want to get a Lisp backtrace showing the Lisp call stack,
+     do this:
+
+          call debug_backtrace ()
+
+     Under 21.5 and later, `db' is defined as an easier-to-type
+     equivalent of `debug_backtrace'.
+
+   * Using `debug_print' and `debug_backtrace' has two disadvantages -
+     they can only be used with a running (including hung or zombie)
+     xemacs process, and they do not display the internal C structure
+     of a Lisp Object.  Even if all you've got is a core dump, all is
+     not lost.
+
+     If you're using GDB, there are some macros in the file
+     `src/.gdbinit' in the XEmacs source distribution that should make
+     it easier for you to decode Lisp objects.  This file is
+     automatically read by gdb if gdb is run in the directory where
+     xemacs was built, and contains these useful macros to inspect the
+     state of xemacs:
+
+    `pobj'
+          Usage: pobj lisp_object
+          Print the internal C representation of a lisp object.
+
+    `xtype'
+          Usage: xtype lisp_object
+          Print the Lisp type of a lisp object.
+
+    `lbt'
+          Usage: lbt
+          Print the current Lisp stack trace.  Requires a running
+          xemacs process.  (It works by calling the db routine
+          described above.)
+
+    `ldp'
+          Usage: ldp lisp_object
+          Print a Lisp Object value using the Lisp printer.  Requires a
+          running xemacs process.  (It works by calling the dp routine
+          described above.)
+
+    `run-temacs'
+          Usage: run-temacs
+          Run temacs interactively, like xemacs.  Use this with
+          debugging tools (like purify) that cannot deal with dumping,
+          or when temacs builds successfully, but xemacs does not.
+
+    `dump-temacs'
+          Usage: dump-temacs
+          Run the dumping part of the build procedure.  Use when
+          debugging temacs, not xemacs!  Use this when temacs builds
+          successfully, but xemacs does not.
+
+    `check-xemacs'
+          Usage: check-xemacs
+          Run the test suite.  Equivalent to 'make check'.
+
+    `check-temacs'
+          Usage: check-temacs
+          Run the test suite on temacs.  Equivalent to 'make
+          check-temacs'.  Use this with debugging tools (like purify)
+          that cannot deal with dumping, or when temacs builds
+          successfully, but xemacs does not.
+
+     If you are using Sun's `dbx' debugger, there is an equivalent file
+     `src/.dbxrc', which defines the same commands for dbx.
+
+   * If you're using a debugger to get a C stack backtrace and you're
+     seeing stack traces with some of the innermost frames mangled, it
+     may be due to dynamic linking. (This happens especially under
+     Linux.) Consider reconfiguring with `--dynamic=no'
+     (`--with-dynamic=no' in 21.5 or later).  Also, sometimes (again
+     under Linux), stack backtraces of core dumps will have the frame
+     where the fatal signal occurred mangled; if you can obtain a stack
+     trace while running the XEmacs process under a debugger, the stack
+     trace should be clean.
+
+     Curtiss <1CMC3466@ibm.mtsac.edu> suggests upgrading to ld.so
+     version 1.8 if dynamic linking and debugging is a problem on Linux.
+
+   * If you're using a debugger to get a C stack backtrace and you're
+     getting a completely mangled and bogus stack trace, it's probably
+     due to one of the following:
+
+       a. Your executable has been stripped.  Bad news.  Tell your
+          sysadmin not to do this--it doesn't accomplish anything
+          except to save a bit of disk space, and makes debugging much
+          much harder.
+
+       b. Your stack is getting trashed.  Debugging this is hard; you
+          have to do a binary-search type of narrowing down where the
+          crash occurs, until you figure out exactly which line is
+          causing the problem.  Of course, this only works if the bug
+          is highly reproducible.  Also, in many cases if you run
+          XEmacs from the debugger, the debugger can protect the stack
+          somewhat.  However, if the stack is being smashed, it is
+          typically the case that there is a wild pointer somewhere in
+          the program, often quite far from where the crash occurs.
+
+       c. If your stack trace has exactly one frame in it, with address
+          0x0, this could simply mean that XEmacs attempted to execute
+          code at that address, e.g. through jumping to a null function
+          pointer.  Unfortunately, under those circumstances, GDB under
+          Linux doesn't know how to get a stack trace. (Yes, this is
+          the fourth Linux-related problem I've mentioned.  I have no
+          idea why GDB under Linux is so bogus.  Complain to the GDB
+          authors, or to comp.os.linux.development.system.) Again,
+          you'll have to use the narrowing-down process described above.
+
+       d. You will get a Lisp backtrace output when XEmacs crashes, so
+          you'll have something useful.
+
+
+   * If you compile with the newer gcc variants gcc-2.8 or egcs, you
+     will also need gdb 4.17 or above.  Earlier releases of gdb can't
+     handle the debug information generated by the newer compilers.
+
+   * In versions of XEmacs before 21.2.27, `src/.gdbinit' was named
+     `src/gdbinit'.  This had the disadvantage of not being sourced
+     automatically by gdb, so you had to set that up yourself.
+
+   * If you are running Microsoft Windows, the the file `nt/README' for
+     further information about debugging XEmacs.
+
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.5,  Next: Q2.4.6,  Prev: Q2.4.4,  Up: Installation
+
+Q2.4.5: I get a cryptic error message when trying to do something.
+------------------------------------------------------------------
+
+When I try to use some particular option of some particular package, I
+get a cryptic error message in the minibuffer.
+
+   If the message went by too quickly, use `Help->Recent Messages' from
+the menubar (or type `C-h l') to see recent messages.
+
+   If you can't figure out what's going on, select
+`Options->Troubleshooting->Debug on Error' from the menubar (or type
+`M-:' then `(setq debug-on-error t)') then try and make the error
+happen again.  This will put in the debugger (you can get out of this
+and continue what you were doing before by typing `c') and give you a
+backtrace that may be enlightening.  If not, try reading through this
+FAQ; if that fails, you could try posting to `comp.emacs.xemacs'
+(making sure to include the backtrace) and someone may be able to help.
+If you can identify which XEmacs Lisp source file the error is coming
+from you can get a more detailed stack backtrace by doing the following:
+
+  1. Visit the .el file in an XEmacs buffer.
+
+  2. Issue the command `M-x eval-current-buffer'.
+
+  3. Reproduce the error.
+
+   For more information on debugging Lisp code, *Note Debugging:
+(lispref)Debugging.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.6,  Next: Q2.4.7,  Prev: Q2.4.5,  Up: Installation
+
+Q2.4.6: XEmacs hangs when I try to do something.
+------------------------------------------------
+
+XEmacs might just be slow; some operations take a long time.  XEmacs
+may also be waiting on a response from the network, for example when
+you are trying to send mail.
+
+   You can usually interrupt XEmacs by typing `C-g'.  If not (for
+example, Lisp code explicitly disabled this by setting `inhibit-quit'),
+you can use the "critical quit" mechanism by typing `Control-Shift-G'.
+This should also pop you into the debugger and give you a backtrace,
+which can tell you where the problem is (*note How to debug an XEmacs
+problem with a debugger: Q2.4.4.). (Note that setting `debug-on-quit'
+or selecting `Options->Troubleshooting->Debug on Quit' will also cause
+regular `C-g' to enter the debugger and give you a backtrace.)
+
+   If you can't interrupt XEmacs this way, or for some reason XEmacs is
+not talking to the keyboard, you can try sending the `SIGINT' signal
+using the `kill' command.
+
+   If the Lisp backtrace isn't enlightening, or if XEmacs is so hung
+that you can't interrupt it at all, you could try attaching to the
+process and getting a C stack backtrace.  *Note How to debug an XEmacs
+problem with a debugger: Q2.4.4.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.7,  Next: Q2.4.8,  Prev: Q2.4.6,  Up: Installation
+
+Q2.4.7: I get an error message when XEmacs is running in batch mode.
+--------------------------------------------------------------------
+
+Typically this happens when you are trying to compile some Elisp code.
+If you are doing this as part of XEmacs or the XEmacs packages, you
+should automatically get a backtrace, which can help you determine the
+source of the problem.  In other cases, you can get equivalent results
+by setting the environment variable `XEMACSDEBUG' to `(setq
+stack-trace-on-error t load-always-display-messages t
+load-ignore-out-of-date-elc-files t load-show-full-path-in-messages t)'
+(this needs to be all on one line; to set an environment variable, use
+`export XEMACSDEBUG='FOO'' under `bash', `zsh', etc. or `setenv
+XEMACSDEBUG 'FOO'' under `csh' and `tcsh').  `XEMACSDEBUG' specifies
+Lisp code that will be executed at startup time.
+
+   If the backtrace is not sufficiently useful in helping you diagnose
+the problem, you should consider using a debugger such as GDB.  *Note
+How to debug an XEmacs problem with a debugger: Q2.4.4.  You probably
+want to set a breakpoint on `signal_1'.  Since such errors often occur
+during compiling, which is often triggered by a complex command run
+from a make suite, it may be easier to attach to the process once it's
+running.
+
+   Under Microsoft Windows (and perhaps other operating systems), there
+is another useful trick you can do if you have configured with debugging
+support (configure option `--debug' (`--with-debug' in 21.5) or setting
+`DEBUG_XEMACS' in `nt/config.inc').  Set the environment variable
+`XEMACSDEBUG' (as described above) to `(setq debug-on-error t)'.  Then,
+when an error occurs noninteractively, instead of trying to invoke the
+Lisp debugger (which obviously won't work), XEmacs will break out to a
+C debugger using `(force-debugging-signal t)'.  _NOTE_: This runs
+`abort()'!!! (As well as and after executing INT 3 under MS Windows,
+which should invoke a debugger if it's active.) This is guaranteed to
+kill XEmacs! (But in this situation, XEmacs is about to die anyway, and
+if no debugger is present, this will usefully dump core.)
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.8,  Next: Q2.4.9,  Prev: Q2.4.7,  Up: Installation
+
+Q2.4.8: The keyboard or mouse is not working properly, or I have some other event-related problem.
+--------------------------------------------------------------------------------------------------
+
+XEmacs has various facilities for debugging event handling.
+
+   First, try setting the variable `debug-emacs-events' to non-zero.
+This will output various information showing which events are being
+received and how they are being translated.  This may show you, for
+example, that a key command is getting intercepted using
+`key-translation-map'; this problem can otherwise be very tricky to
+debug.
+
+   Under X, you can see exactly which events are being received from the
+window system by setting `x-debug-events' to non-zero. (The value `1'
+gives you regular output, and `2' gives you verbose output, including
+all parameters.)
+
+   A similar facility exists under MS Windows: Set
+`debug-mswindows-events' to non-zero. (The value `1' gives you regular
+output.  The value `2' gives you verbose output, including all
+parameters.  The value `3' gives you super-gorily-detailed output.)
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.9,  Next: Q2.4.10,  Prev: Q2.4.8,  Up: Installation
+
+Q2.4.9: `C-g' doesn't work for me.  Is it broken?
+-------------------------------------------------
+
+`C-g' does work for most people in most circumstances.  If it doesn't,
+there are two possible explanations:
+
+  1. XEmacs is hung in a way that prevents `C-g' from working.  This
+     can happen when code is wrapped with a binding of `inhibit-quit'
+     to `t'; you should still be able interrupt XEmacs using "critical
+     quit".  On the other hand, XEmacs may be seriously wedged. (If
+     you're lucky, sending `SIGINT' to the XEmacs process will
+     interrupt it.)  *Note XEmacs hangs when I try to do something.:
+     Q2.4.6.
+
+  2. `C-g' is indeed broken on your system.  To test, try executing
+     `(while t)' from the `*scratch*' buffer.  If `C-g' doesn't
+     interrupt, then it's broken.  This used to happen with systems
+     where `SIGIO' was broken, but `BROKEN_SIGIO' wasn't defined.
+     However, there may not be very many such systems nowadays.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.10,  Next: Q2.4.11,  Prev: Q2.4.9,  Up: Installation
+
+Q2.4.10: How do I debug process-related problems?
+-------------------------------------------------
+
+Under MS Windows, you can set the variable
+`debug-mswindows-process-command-lines' to non-`nil' to get information
+on exactly what is getting passed to a process.  This can be useful in
+determining problems with quoting. (Under Unix, a process receives each
+argument separately, but under MS Windows a single command line is
+received, and arguments with spaces or other special characters in them
+must be quoted.  Unfortunately this means that each process,
+potentially at least, has its own quoting conventions, and the code to
+process quoting conventions in `cmd.exe', the Visual C++ startup code
+and the like is baroque and poorly documented.  XEmacs uses the variable
+`mswindows-construct-process-command-line-alist' to construct a command
+line from a list of arguments based on the command to be run, but it is
+(and cannot be) a perfect solution.)
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.11,  Next: Q2.4.12,  Prev: Q2.4.10,  Up: Installation
+
+Q2.4.11: XEmacs is outputting lots of X errors.
+-----------------------------------------------
+
+If this is happening, we would very much like to know what's causing
+them.  To find this out, see *Note How to debug an XEmacs problem with
+a debugger: Q2.4.4.  Try to get both a C and Lisp backtrace, and send
+them along with the full error output to <xemacs-beta@xemacs.org>.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.4.12,  Next: Q2.5.1,  Prev: Q2.4.11,  Up: Installation
+
+Q2.4.12: After upgrading, XEmacs won't do `foo' any more!
+---------------------------------------------------------
+
+You have been used to doing `foo', but now when you invoke it (or click
+the toolbar button or select the menu item), nothing (or an error)
+happens.  The simplest explanation is that you are missing a package
+that is essential to you.  You can either track it down and install it
+(there is a list of packages and brief descriptions of their contents
+in `etc/PACKAGES'), or install the `Sumo Tarball' (*note How do I
+figure out which packages to install?: Q2.1.2.).
+
+2.5: Startup-Related Problems
+=============================
+
+\1f
+File: xemacs-faq.info,  Node: Q2.5.1,  Next: Q2.5.2,  Prev: Q2.4.12,  Up: Installation
+
+Q2.5.1: XEmacs cannot connect to my X Terminal!
+-----------------------------------------------
+
+Help!  I can not get XEmacs to display on my Envizex X-terminal!
+
+   Try setting the `DISPLAY' variable using the numeric IP address of
+the host you are running XEmacs from.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.5.2,  Next: Q2.5.3,  Prev: Q2.5.1,  Up: Installation
+
+Q2.5.2 Startup problems related to paths or package locations.
+--------------------------------------------------------------
+
+First of all, if XEmacs can't find the packages, check to make sure
+that you put the packages in the right place, or that you told XEmacs
+where to look for the packages when you compiled it.  *Note Q2.1.1::.
+
+   If something is still going wrong, or you get a startup warning about
+not being able to deduce some paths, you can get detailed information
+on the path-searching process at startup by setting the environment
+variable `EMACSDEBUGPATHS' to a non-null value.  One thing to look for
+if you're having package problems is the value of
+`configure-package-path'.  This corresponds to what was compiled into
+XEmacs using the `--package-prefix' or `--package-path' parameter
+(*note Q2.1.1::).  If this has the value of `nil', this means that no
+value was compiled into XEmacs using these parameters.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.5.3,  Next: Q2.5.4,  Prev: Q2.5.2,  Up: Installation
+
+Q2.5.3: XEmacs won't start without network.
+-------------------------------------------
+
+If XEmacs starts when you're on the network, but fails when you're not
+on the network, you may be missing a "localhost" entry in your
+`/etc/hosts' file.  The file should contain an entry like:
+
+     127.0.0.1        localhost
+
+   Add that line, and XEmacs will be happy.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.5.4,  Next: Q2.5.5,  Prev: Q2.5.3,  Up: Installation
+
+Q2.5.4: Startup warnings about deducing proper fonts?
+-----------------------------------------------------
+
+How can I avoid the startup warnings about deducing proper fonts?
+
+   This is highly dependent on your installation, but try with the
+following font as your base font for XEmacs and see what it does:
+
+-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
+
+   More precisely, do the following in your resource file:
+
+Emacs.default.attributeFont: \
+-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
+
+   If you just don't want to see the `*Warnings*' buffer at startup
+time, you can set this:
+
+     (setq display-warning-minimum-level 'error)
+
+   The buffer still exists; it just isn't in your face.
+
+\1f
+File: xemacs-faq.info,  Node: Q2.5.5,  Next: Q2.5.6,  Prev: Q2.5.4,  Up: Installation
+
+Q2.5.5: Warnings from incorrect key modifiers.
+----------------------------------------------
+
+The following information comes from the `PROBLEMS' file that comes
+with XEmacs.
+
+   If you're having troubles with HP/UX it is because HP/UX defines the
+modifiers wrong in X.  Here is a shell script to fix the problem; be
+sure that it is run after VUE configures the X server.
+
+     #! /bin/sh
+     xmodmap 2> /dev/null - << EOF
+     keysym Alt_L = Meta_L
+     keysym Alt_R = Meta_R
+     EOF
+
+     xmodmap - << EOF
+     clear mod1
+     keysym Mode_switch = NoSymbol
+     add mod1 = Meta_L
+     keysym Meta_R = Mode_switch
+     add mod2 = Mode_switch
+     EOF
+
+\1f
+File: xemacs-faq.info,  Node: Q2.5.6,  Prev: Q2.5.5,  Up: Installation
+
+Q2.5.6: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
+-----------------------------------------------------------------------------------------------------------
+
+Yes.
+
+   The console was there because `temacs' (and in turn, `xemacs') was a
+console application, and Windows typically creates a new console for a
+console process unless the creating process requests that one isn't
+created.  This used to be fixed with `runemacs', a small Windows
+application that existed merely to start `xemacs', stating that it
+didn't want a console.
+
+   XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
+application.  The explanation of what that means is included for
+educational value.
+
+   When building an application to be run in a Win32 environment, you
+must state which sub-system it is to run in.  Valid subsystems include
+"console" and "gui".  The subsystem you use affects the run time
+libraries linked into your application, the start up function that is
+run before control is handed over to your application, the entry point
+to your program, and how Windows normally invokes your program. (Console
+programs automatically get a console created for them at startup if
+their stdin/stdout don't point anywhere useful, which is the case when
+run from the GUI.  This is a stupid design, of course - instead, the
+console should get created only when the first I/O actually occurs!
+GUI programs have an equally stupid design: When called from
+`CMD.EXE'/`COMMAND.COM', their stdin/stdout will be set to point
+nowhere useful, even though the command shell has its own stdin/stdout.
+It's as if someone who had learned a bit about stdio but had no actual
+knowledge of interprocess communication designed the scheme;
+unfortunately, the whole process-communication aspect of the Win32 API
+is equally badly designed.) For example, the entry point for a console
+app is "main" (which is what you'd expect for a C/C++ program), but the
+entry point for a "gui" app is "WinMain".  This confuses and annoys a
+lot of programmers who've grown up on Unix systems, where the kernel
+doesn't really care whether your application is a gui program or not.
+
+   For reasons not altogether clear, and are lost in the mists of time
+and tradition, XEmacs on Win32 started out as a console application, and
+therefore a console was automatically created for it. (It may have been
+made a console application partly because a console is needed in some
+circumstances, especially under Win95, to interrupt, terminate, or send
+signals to a child process, and because of the bogosity mentioned above
+with GUI programs and the standard command shell.  Currently, XEmacs
+just creates and immediately hides a console when necessary, and works
+around the "no useful stdio" problem by creating its own console window
+as necessary to display messages in.)
+
+\1f
+File: xemacs-faq.info,  Node: Editing,  Next: Display,  Prev: Installation,  Up: Top
+
+3 Editing Functions
+*******************
+
+This is part 3 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to the editing-related capabilities of XEmacs (the
+keyboard, mouse, buffers, text selections, etc.) and how to customize
+them.
+
+* Menu:
+
+3.0: The Keyboard
+* Q3.0.1::    How can I customize the keyboard?
+* Q3.0.2::    How can I bind complex functions (or macros) to keys?
+* Q3.0.3::    How do I bind C-. and C-; to scroll one line up and down?
+* Q3.0.4::    Globally binding Delete?
+* Q3.0.5::    How to map Help key alone on Sun type4 keyboard?
+* Q3.0.6::    How can you type in special characters in XEmacs?
+* Q3.0.7::    Can I turn on "sticky" modifier keys?
+* Q3.0.8::    How do I map the arrow keys?
+* Q3.0.9::    HP Alt key as Meta.
+* Q3.0.10::   Why does edt emulation not work?
+* Q3.0.11::   How can I emulate VI and use it as my default mode?
+
+3.1: The Mouse
+* Q3.1.1::    How can I turn off Mouse pasting?
+* Q3.1.2::    How do I set control/meta/etc modifiers on mouse buttons?
+* Q3.1.3::    Clicking the left button does not do anything in buffer list.
+* Q3.1.4::    How can I get a list of buffers when I hit mouse button 3?
+* Q3.1.5::    How can I set XEmacs up so that it pastes where the text cursor is?
+
+3.2: Buffers, Text Editing
+* Q3.2.1::    Can I have the end of the buffer delimited in some way?
+* Q3.2.2::    How do I insert today's date into a buffer?
+* Q3.2.3::    How do I get a single minibuffer frame?
+* Q3.2.4::    How can I enable auto-indent and/or Filladapt?
+* Q3.2.5::    How can I get XEmacs to come up in text/auto-fill mode by default?
+
+3.3: Text Selections
+* Q3.3.1::    How do I select a rectangular region?
+* Q3.3.2::    How can I turn off or change highlighted selections?
+* Q3.3.3::    How do I cause typing on an active region to remove it?
+* Q3.3.4::    Can I turn off the highlight during isearch?
+* Q3.3.5::    Why is killing so slow?
+* Q3.3.6::    Why does M-w take so long?
+
+3.4: Editing Source Code
+* Q3.4.1::    I do not like cc-mode.  How do I use the old c-mode?
+* Q3.4.2::    How do you make XEmacs indent CL if-clauses correctly?
+
+3.0: The Keyboard
+=================
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.1,  Next: Q3.0.2,  Prev: Editing,  Up: Editing
+
+Q3.0.1: How can I customize the keyboard?
+-----------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.2,  Next: Q3.0.3,  Prev: Q3.0.1,  Up: Editing
+
+Q3.0.2: How can I bind complex functions (or macros) to keys?
+-------------------------------------------------------------
+
+As an example, say you want the `paste' key on a Sun keyboard to insert
+the current Primary X selection at point. You can accomplish this with:
+
+     (define-key global-map [f18] 'x-insert-selection)
+
+   However, this only works if there is a current X selection (the
+selection will be highlighted).  The functionality I like is for the
+`paste' key to insert the current X selection if there is one,
+otherwise insert the contents of the clipboard.  To do this you need to
+pass arguments to `x-insert-selection'.  This is done by wrapping the
+call in a 'lambda form:
+
+     (global-set-key [f18]
+       (lambda () (interactive) (x-insert-selection t nil)))
+
+   This binds the f18 key to a "generic" functional object.  The
+interactive spec is required because only interactive functions can be
+bound to keys.
+
+   For the FAQ example you could use:
+
+     (global-set-key [(control ?.)]
+       (lambda () (interactive) (scroll-up 1)))
+     (global-set-key [(control ?;)]
+       (lambda () (interactive) (scroll-up -1)))
+
+   This is fine if you only need a few functions within the lambda body.
+If you're doing more it's cleaner to define a separate function.  *Note
+How do I bind C-. and C-; to scroll one line up and down?: Q3.0.3.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.3,  Next: Q3.0.4,  Prev: Q3.0.2,  Up: Editing
+
+Q3.0.3: How do I bind C-. and C-; to scroll one line up and down?
+-----------------------------------------------------------------
+
+Add the following (Thanks to Richard Mlynarik <mly@adoc.xerox.com> and
+Wayne Newberry <wayne@zen.cac.stratus.com>) to `.emacs':
+
+     (defun scroll-up-one-line ()
+       (interactive)
+       (scroll-up 1))
+
+     (defun scroll-down-one-line ()
+       (interactive)
+       (scroll-down 1))
+
+     (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
+     (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
+
+   The key point is that you can only bind simple functions to keys; you
+can not bind a key to a function that you're also passing arguments to.
+(*note How can I bind complex functions (or macros) to keys?: Q3.0.2.
+for a better answer).
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.4,  Next: Q3.0.5,  Prev: Q3.0.3,  Up: Editing
+
+Q3.0.4: Globally binding `Delete'?
+----------------------------------
+
+I cannot manage to globally bind my `Delete' key to something other
+than the default.  How does one do this?
+
+   Answer: The problem is that many modes explicitly bind `Delete'.  To
+get around this, try the following:
+
+     (defun foo ()
+       (interactive)
+       (message "You hit DELETE"))
+
+     (define-key key-translation-map 'delete 'redirected-delete)
+     (global-set-key 'redirected-delete 'foo)
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.5,  Next: Q3.0.6,  Prev: Q3.0.4,  Up: Editing
+
+Q3.0.5: How to map `Help' key alone on Sun type4 keyboard?
+----------------------------------------------------------
+
+The following works in GNU Emacs 19:
+
+     (global-set-key [help] 'help-command);; Help
+
+   The following works in XEmacs with the addition of shift:
+
+     (global-set-key [(shift help)] 'help-command);; Help
+
+   But it doesn't work alone.  This is in the file `PROBLEMS' which
+should have come with your XEmacs installation: _Emacs ignores the
+`help' key when running OLWM_.
+
+   OLWM grabs the `help' key, and retransmits it to the appropriate
+client using `XSendEvent'.  Allowing Emacs to react to synthetic events
+is a security hole, so this is turned off by default.  You can enable
+it by setting the variable `x-allow-sendevents' to t.  You can also
+cause fix this by telling OLWM to not grab the help key, with the null
+binding `OpenWindows.KeyboardCommand.Help:'.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.6,  Next: Q3.0.7,  Prev: Q3.0.5,  Up: Editing
+
+Q3.0.6: How can you type in special characters in XEmacs?
+---------------------------------------------------------
+
+One way is to use the package `x-compose'.  Then you can use sequences
+like `Compose " a' to get ä, etc.
+
+   Another way is to use the `iso-insert' package. Then you can use
+sequences like `C-x 8 " a' to get ä, etc.
+
+   Glynn Clements <glynn@sensei.co.uk> writes:
+
+     It depends upon your X server.
+
+     Generally, the simplest way is to define a key as Multi_key with
+     xmodmap, e.g.
+                  xmodmap -e 'keycode 0xff20 = Multi_key'
+
+     You will need to pick an appropriate keycode. Use xev to find out
+     the keycodes for each key.
+
+     [NB: On a `Windows' keyboard, recent versions of XFree86
+     automatically define the right `Windows' key as Multi_key'.]
+
+     Once you have Multi_key defined, you can use e.g.
+                  Multi a '       => á
+                  Multi e "       => ë
+                  Multi c ,       => ç
+
+     etc.
+
+     Also, recent versions of XFree86 define various AltGr-<key>
+     combinations as dead keys, i.e.
+                  AltGr [         => dead_diaeresis
+                  AltGr ]         => dead_tilde
+                  AltGr ;         => dead_acute
+     etc.
+
+     Running `xmodmap -pk' will list all of the defined keysyms.
+
+   For the related problem of _displaying_ non-ASCII characters in a
+non-Mule XEmacs, *Note How do I display non-ASCII characters?: Q4.0.8.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.7,  Next: Q3.0.8,  Prev: Q3.0.6,  Up: Editing
+
+Q3.0.7: Can I turn on "sticky" modifier keys?
+---------------------------------------------
+
+Yes, with `(setq modifier-keys-are-sticky t)'.  This will give the
+effect of being able to press and release Shift and have the next
+character typed come out in upper case.  This will affect all the other
+modifier keys like Control and Meta as well.
+
+   Ben Wing <ben@xemacs.org> writes:
+
+     One thing about the sticky modifiers is that if you move the mouse
+     out of the frame and back in, it cancels all currently "stuck"
+     modifiers.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.8,  Next: Q3.0.9,  Prev: Q3.0.7,  Up: Editing
+
+Q3.0.8: How do I map the arrow keys?
+------------------------------------
+
+Say you want to map `C-<right>' to forward-word:
+
+   Sam Steingold <sds@usa.net> writes:
+
+          ; both XEmacs and Emacs
+          (define-key global-map [(control right)] 'forward-word)
+     or
+          ; Emacs only
+          (define-key global-map [C-right] 'forward-word)
+     or
+          ; ver > 20, both
+          (define-key global-map (kbd "C-<right>") 'forward-word)
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.9,  Next: Q3.0.10,  Prev: Q3.0.8,  Up: Editing
+
+Q3.0.9: HP Alt key as Meta.
+---------------------------
+
+How can I make XEmacs recognize the Alt key of my HP workstation as a
+Meta key?
+
+   Put the following line into a file and load it with xmodmap(1) before
+starting XEmacs:
+
+     remove Mod1 = Mode_switch
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.10,  Next: Q3.0.11,  Prev: Q3.0.9,  Up: Editing
+
+Q3.0.10: Why does edt emulation not work?
+-----------------------------------------
+
+We don't know, but you can use tpu-edt emulation instead, which works
+fine and is a little fancier than the standard edt emulation.  To do
+this, add the following line to your `init.el':
+
+     (tpu-edt)
+
+   If you don't want it to replace `C-h' with an edt-style help menu
+add this as well:
+
+     (global-set-key [(control h)] 'help-for-help)
+
+\1f
+File: xemacs-faq.info,  Node: Q3.0.11,  Next: Q3.1.1,  Prev: Q3.0.10,  Up: Editing
+
+Q3.0.11: How can I emulate VI and use it as my default mode?
+------------------------------------------------------------
+
+Our recommended VI emulator is viper. To make viper-mode the default,
+add this to your `init.el':
+
+     (viper-mode)
+
+   Michael Kifer <kifer@CS.SunySB.EDU> writes:
+
+     This should be added as close to the top of `init.el' as you can
+     get it, otherwise some minor modes may not get viper-ized.
+
+3.1: The Mouse
+==============
+
+\1f
+File: xemacs-faq.info,  Node: Q3.1.1,  Next: Q3.1.2,  Prev: Q3.0.11,  Up: Editing
+
+Q3.1.1: How can I turn off Mouse pasting?
+-----------------------------------------
+
+I keep hitting the middle mouse button by accident and getting stuff
+pasted into my buffer so how can I turn this off?
+
+   Here is an alternative binding, whereby the middle mouse button
+selects (but does not cut) the expression under the mouse. Clicking
+middle on a left or right paren will select to the matching one.  Note
+that you can use `define-key' or `global-set-key'.
+
+     (defun mouse-set-point-and-select (event)
+       "Sets the point at the mouse location, then marks following form"
+       (interactive "@e")
+       (mouse-set-point event)
+       (mark-sexp 1))
+     (define-key global-map [button2] 'mouse-set-point-and-select)
+
+\1f
+File: xemacs-faq.info,  Node: Q3.1.2,  Next: Q3.1.3,  Prev: Q3.1.1,  Up: Editing
+
+Q3.1.2: How do I set control/meta/etc modifiers on mouse buttons?
+-----------------------------------------------------------------
+
+Use, for instance, `[(meta button1)]'. For example, here is a common
+setting for Common Lisp programmers who use the bundled `ilisp'
+package, whereby meta-button1 on a function name will find the file
+where the function name was defined, and put you at that location in
+the source file.
+
+   [Inside a function that gets called by the lisp-mode-hook and
+ilisp-mode-hook]
+
+     (local-set-key [(meta button1)] 'edit-definitions-lisp)
+
+\1f
+File: xemacs-faq.info,  Node: Q3.1.3,  Next: Q3.1.4,  Prev: Q3.1.2,  Up: Editing
+
+Q3.1.3: Clicking the left button does not do anything in buffer list.
+---------------------------------------------------------------------
+
+I do `C-x C-b' to get a list of buffers and the entries get highlighted
+when I move the mouse over them but clicking the left mouse does not do
+anything.
+
+   Use the middle mouse button.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.1.4,  Next: Q3.1.5,  Prev: Q3.1.3,  Up: Editing
+
+Q3.1.4: How can I get a list of buffers when I hit mouse button 3?
+------------------------------------------------------------------
+
+The following code will replace the default popup on button3:
+
+     (global-set-key [button3] 'popup-buffer-menu)
+
+\1f
+File: xemacs-faq.info,  Node: Q3.1.5,  Next: Q3.2.1,  Prev: Q3.1.4,  Up: Editing
+
+Q3.1.5: How can I set XEmacs up so that it pastes where the text cursor is?
+---------------------------------------------------------------------------
+
+By default XEmacs pastes X selections where the mouse pointer is.  How
+do I disable this?
+
+   Examine the function `mouse-yank', by typing `C-h f mouse-yank
+<RET>'.
+
+   To get XEmacs to paste at the text cursor, add this your `init.el':
+
+     (setq mouse-yank-at-point t)
+
+   You can also change this with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...' or
+type `M-x customize <RET> mouse <RET>'.
+
+3.2: Buffers, Text Editing
+==========================
+
+\1f
+File: xemacs-faq.info,  Node: Q3.2.1,  Next: Q3.2.2,  Prev: Q3.1.5,  Up: Editing
+
+Q3.2.1: Can I have the end of the buffer delimited in some way?
+---------------------------------------------------------------
+
+Say, with: `[END]'?
+
+   Try this:
+
+     (let ((ext (make-extent (point-min) (point-max))))
+       (set-extent-property ext 'start-closed t)
+       (set-extent-property ext 'end-closed t)
+       (set-extent-property ext 'detachable nil)
+       (set-extent-end-glyph ext (make-glyph [string :data "[END]"])))
+
+   Since this is XEmacs, you can specify an icon to be shown on
+window-system devices.  To do so, change the `make-glyph' call to
+something like this:
+
+     (make-glyph '([xpm :file "~/something.xpm"]
+                   [string :data "[END]"]))
+
+   You can inline the XPM definition yourself by specifying `:data'
+instead of `:file'.  Here is such a full-featured version that works on
+both X and TTY devices:
+
+     (let ((ext (make-extent (point-min) (point-max))))
+       (set-extent-property ext 'start-closed t)
+       (set-extent-property ext 'end-closed t)
+       (set-extent-property ext 'detachable nil)
+       (set-extent-end-glyph ext (make-glyph '([xpm :data "\
+     /* XPM */
+     static char* eye = {
+     \"20 11 7 2\",
+     \"__ c None\"
+     \"_` c #7f7f7f\",
+     \"_a c #fefefe\",
+     \"_b c #7f0000\",
+     \"_c c #fefe00\",
+     \"_d c #fe0000\",
+     \"_e c #bfbfbf\",
+     \"___________`_`_`___b_b_b_b_________`____\",
+     \"_________`_`_`___b_c_c_c_b_b____________\",
+     \"_____`_`_`_e___b_b_c_c_c___b___b_______`\",
+     \"___`_`_e_a___b_b_d___b___b___b___b______\",
+     \"_`_`_e_a_e___b_b_d_b___b___b___b___b____\",
+     \"_`_`_a_e_a___b_b_d___b___b___b___b___b__\",
+     \"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\",
+     \"___`_`_e_a___b_b_b_d_c___b___b___d_b____\",
+     \"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\",
+     \"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\",
+     \"___`_____`_`_`_`___b_b_b_b_b_b__________\",
+     } ;"]
+                                               [string :data "[END]"]))))
+
+   Note that you might want to make this a function, and put it to a
+hook.  We leave that as an exercise for the reader.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.2.2,  Next: Q3.2.3,  Prev: Q3.2.1,  Up: Editing
+
+Q3.2.2: How do I insert today's date into a buffer?
+---------------------------------------------------
+
+Like this:
+
+     (insert (current-time-string))
+
+\1f
+File: xemacs-faq.info,  Node: Q3.2.3,  Next: Q3.2.4,  Prev: Q3.2.2,  Up: Editing
+
+Q3.2.3: How do I get a single minibuffer frame?
+-----------------------------------------------
+
+Vin Shelton <acs@acm.org> writes:
+
+     (setq initial-frame-plist '(minibuffer nil))
+     (setq default-frame-plist '(minibuffer nil))
+     (setq default-minibuffer-frame
+           (make-frame
+            '(minibuffer only
+                         width 86
+                         height 1
+                         menubar-visible-p nil
+                         default-toolbar-visible-p nil
+                         name "minibuffer"
+                         top -2
+                         left -2
+                         has-modeline-p nil)))
+     (frame-notice-user-settings)
+
+   *Please note:* The single minibuffer frame may not be to everyone's
+taste, and there any number of other XEmacs options settings that may
+make it difficult or inconvenient to use.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.2.4,  Next: Q3.2.5,  Prev: Q3.2.3,  Up: Editing
+
+Q3.2.4: How can I enable auto-indent and/or Filladapt?
+------------------------------------------------------
+
+Put the following line in your `init.el':
+
+     (setq indent-line-function 'indent-relative-maybe)
+
+   If you want to get fancy, try the `filladapt' package available
+standard with XEmacs.  Put this into your `init.el':
+
+     (require 'filladapt)
+     (setq-default filladapt-mode t)
+     (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
+
+   This will enable Filladapt for all modes except C mode, where it
+doesn't work well.  To turn Filladapt on only in particular major
+modes, remove the `(setq-default ...)' line and use
+`turn-on-filladapt-mode', like this:
+
+     (add-hook 'text-mode-hook 'turn-on-filladapt-mode)
+
+   You can customize filling and adaptive filling with Customize.
+Select from the `Options' menu `Advanced
+(Customize)->Emacs->Editing->Fill->Fill...' or type `M-x customize
+<RET> fill <RET>'.
+
+   Note that well-behaving text-lookalike modes will run
+`text-mode-hook' by default (e.g. that's what Message does).  For the
+nasty ones, you'll have to provide the `add-hook's yourself.
+
+   Please note that the `fa-extras' package is no longer useful.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.2.5,  Next: Q3.3.1,  Prev: Q3.2.4,  Up: Editing
+
+Q3.2.5: How can I get XEmacs to come up in text/auto-fill mode by default?
+--------------------------------------------------------------------------
+
+Try the following lisp in your `init.el':
+
+     (setq default-major-mode 'text-mode)
+     (add-hook 'text-mode-hook 'turn-on-auto-fill)
+
+   *WARNING*: note that changing the value of `default-major-mode' from
+`fundamental-mode' can break a large amount of built-in code that
+expects newly created buffers to be in `fundamental-mode'.  (Changing
+from `fundamental-mode' to `text-mode' might not wreak too much havoc,
+but changing to something more exotic like a lisp-mode would break many
+Emacs packages).
+
+   Note that Emacs by default starts up in buffer `*scratch*' in
+`initial-major-mode', which defaults to `lisp-interaction-mode'. Thus
+adding the following form to your Emacs init file will cause the
+initial `*scratch*' buffer to be put into auto-fill'ed `text-mode':
+
+     (setq initial-major-mode
+           (lambda ()
+             (text-mode)
+             (turn-on-auto-fill)))
+
+   Note that after your init file is loaded, if
+`inhibit-startup-message' is `nil' (the default) and the startup buffer
+is `*scratch*' then the startup message will be inserted into
+`*scratch*'; it will be removed after a timeout by erasing the entire
+`*scratch*' buffer.  Keep in mind this default usage of `*scratch*' if
+you desire any prior manipulation of `*scratch*' from within your Emacs
+init file. In particular, anything you insert into `*scratch*' from
+your init file will be later erased. Also, if you change the mode of
+the `*scratch*' buffer, be sure that this will not interfere with
+possible later insertion of the startup message (e.g. if you put
+`*scratch*' into a nonstandard mode that has automatic font lock rules,
+then the startup message might get fontified in a strange foreign
+manner, e.g. as code in some programming language).
+
+3.3: Text Selections
+====================
+
+\1f
+File: xemacs-faq.info,  Node: Q3.3.1,  Next: Q3.3.2,  Prev: Q3.2.5,  Up: Editing
+
+Q3.3.1: How do I select a rectangular region?
+---------------------------------------------
+
+Just select the region normally, then use the rectangle commands (e.g.
+`kill-rectangle' on it.  The region does not highlight as a rectangle,
+but the commands work just fine.
+
+   To actually sweep out rectangular regions with the mouse you can use
+`mouse-track-do-rectangle' which is assigned to `M-button1'.  Then use
+rectangle commands.
+
+   You can also do the following to change default behavior to sweep out
+rectangular regions:
+
+     (setq mouse-track-rectangle-p t)
+
+   You can also change this with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...'
+or type `M-x customize <RET> mouse <RET>'.
+
+      mouse-track-do-rectangle: (event)
+        -- an interactive compiled Lisp function.
+      Like `mouse-track' but selects rectangles instead of regions.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.3.2,  Next: Q3.3.3,  Prev: Q3.3.1,  Up: Editing
+
+Q3.3.2: How can I turn off or change highlighted selections?
+------------------------------------------------------------
+
+The `zmacs' mode allows for what some might call gratuitous
+highlighting for selected regions (either by setting mark or by using
+the mouse).  This is the default behavior.  To turn off, add the
+following line to your `init.el' file:
+
+     (setq zmacs-regions nil)
+
+   You can also change this with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Editing->Basics->Zmacs Regions' or
+type `M-x customize <RET> editing-basics <RET>'.
+
+   To change the face for selection, look at `Options->Advanced
+(Customize)' on the menubar.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.3.3,  Next: Q3.3.4,  Prev: Q3.3.2,  Up: Editing
+
+Q3.3.3: How do I cause typing on an active region to remove it?
+---------------------------------------------------------------
+
+I want to change things so that if I select some text and start typing,
+the typed text replaces the selected text, similar to Motif.
+
+   You want to use something called "pending delete".  Pending delete
+is what happens when you select a region (with the mouse or keyboard)
+and you press a key to replace the selected region by the key you typed.
+Usually backspace kills the selected region.
+
+   To get this behavior, ensure that you have the `pc' package
+installed, and add the following lines to your `init.el':
+
+     (cond
+      ((fboundp 'turn-on-pending-delete)
+       (turn-on-pending-delete))
+      ((fboundp 'pending-delete-on)
+       (pending-delete-on t)))
+
+   Note that this will work with both Backspace and Delete.  This code
+is a tad more complicated than it has to be for XEmacs in order to make
+it more portable.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.3.4,  Next: Q3.3.5,  Prev: Q3.3.3,  Up: Editing
+
+Q3.3.4: Can I turn off the highlight during isearch?
+----------------------------------------------------
+
+I do not like my text highlighted while I am doing isearch as I am not
+able to see what's underneath.  How do I turn it off?
+
+   Put the following in your `init.el':
+
+     (setq isearch-highlight nil)
+
+   You can also change this with Customize. Type `M-x
+customize-variable <RET> isearch-highlight <RET>'.
+
+   Note also that isearch-highlight affects query-replace and ispell.
+Instead of disabling isearch-highlight you may find that a better
+solution consists of customizing the `isearch' face.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.3.5,  Next: Q3.3.6,  Prev: Q3.3.4,  Up: Editing
+
+Q3.3.5: Why is killing so slow?
+-------------------------------
+
+This actually is an X Windows question, although you'll notice it with
+keyboard operations as well as while using the GUI.  Basically, there
+are four ways to communicate interprogram via the X server:
+
+*Primary selection*
+     a transient selection that gets replaced every time a new
+     selection is made
+
+*Secondary selection*
+     for "exchanging" with the primary selection
+
+*Cut buffers*
+     a clipboard internal to the X server (deprecated)
+
+*Clipboard selection*
+     a selection with a notification protocol that allows a separate
+     app to manage the clipboard
+
+   The cut buffers are deprecated because managing them is even more
+inefficient than the clipboard notification protocol.  The primary
+selection works fine for many users and applications, but is not very
+robust under intensive or sophisticated use.
+
+   In Motif and MS Windows, a clipboard has become the primary means for
+managing cut and paste.  These means that "modern" applications tend to
+be oriented toward a true clipboard, rather than the primary selection.
+(On Windows, there is nothing equivalent to the primary selection.)
+It's not that XEmacs doesn't support the simple primary selection
+method, it's that more and more other applications don't.
+
+   So the slowdown occurs because XEmacs now engages in the clipboard
+notification protocol on _every_ kill.  This is especially slow on
+Motif.
+
+   With most people running most clients and server on the same host,
+and many of the rest working over very fast communication, you may
+expect that the situation is not going to improve.
+
+   There are a number of workarounds.  The most effective is to use a
+special command to do selection ownership only when you intend to paste
+to another application.  Useful commands are `kill-primary-selection'
+and `copy-primary-selection'.  These work only on text selected with
+the mouse (probably; experiment), and are bound by default to the `Cut'
+and `Copy', respectively, buttons on the toolbar.
+`copy-primary-selection' is also bound to `C-Insert'.  You can yank the
+clipboard contents with `yank-primary-selection', bound to the `Paste'
+toolbar button and `Sh-Insert'.
+
+   If you are communicating by cut and paste with applications that use
+the primary selection, then you can customize
+`interprogram-cut-function' to `nil', restoring the XEmacs version 20
+behavior.  How can you tell if a program will support this?
+Motifly-correct programs require the clipboard; you lose.  For others,
+only by trying it.  You also need to customize the complementary
+`interprogram-paste-function' to `nil'.  (Otherwise XEmacs-to-XEmacs
+pastes will not work correctly.)
+
+   You may get some relief on Motif by setting
+`x-selection-strict-motif-ownership' to nil, but this means you will
+only intermittently be able to paste XEmacs kills to Motif applications.
+
+   Thanks to Jeff Mincy and Glynn Clements for corrections.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.3.6,  Next: Q3.4.1,  Prev: Q3.3.5,  Up: Editing
+
+Q3.3.6: Why does `M-w' take so long?
+------------------------------------
+
+It actually doesn't.  It leaves the region visible for a second so that
+you can see what area is being yanked.  If you start working, though, it
+will immediately complete its operation.  In other words, it will only
+delay for a second if you let it.
+
+3.4: Editing Source Code
+========================
+
+\1f
+File: xemacs-faq.info,  Node: Q3.4.1,  Next: Q3.4.2,  Prev: Q3.3.6,  Up: Editing
+
+Q3.4.1: I do not like cc-mode.  How do I use the old c-mode?
+------------------------------------------------------------
+
+Well, first off, consider if you really want to do this.  cc-mode is
+much more powerful than the old c-mode.  If you're having trouble
+getting your old offsets to work, try using `c-set-offset' instead.
+You might also consider using the package `cc-compat'.
+
+   But, if you still insist, add the following lines to your `init.el':
+
+     (fmakunbound 'c-mode)
+     (makunbound 'c-mode-map)
+     (fmakunbound 'c++-mode)
+     (makunbound 'c++-mode-map)
+     (makunbound 'c-style-alist)
+     (load-library "old-c-mode")
+     (load-library "old-c++-mode")
+
+   This must be done before any other reference is made to either
+c-mode or c++-mode.
+
+\1f
+File: xemacs-faq.info,  Node: Q3.4.2,  Prev: Q3.4.1,  Up: Editing
+
+Q3.4.2: How do you make XEmacs indent CL if-clauses correctly?
+--------------------------------------------------------------
+
+I'd like XEmacs to indent all the clauses of a Common Lisp `if' the
+same amount instead of indenting the 3rd clause differently from the
+first two.
+
+   The package `cl-indent' that comes with XEmacs sets up this kind of
+indentation by default.  `cl-indent' also knows about many other
+CL-specific forms.  To use `cl-indent', one can do this:
+
+     (setq lisp-indent-function 'common-lisp-indent-function)
+
+   One can also customize `cl-indent.el' so it mimics the default `if'
+indentation `then' indented more than the `else'.  Here's how:
+
+     (put 'if 'common-lisp-indent-function '(nil nil &body))
+
+\1f
+File: xemacs-faq.info,  Node: Display,  Next: External Subsystems,  Prev: Editing,  Up: Top
+
+4 Display Functions
+*******************
+
+This is part 4 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to the display-related capabilities of XEmacs
+(fonts, colors, modeline, menubar, toolbar, scrollbar, etc.) and how to
+customize them.
+
+* Menu:
+
+4.0: Textual Fonts and Colors
+* Q4.0.1::    How do I specify a font?
+* Q4.0.2::    How do I set the text, menu and modeline fonts?
+* Q4.0.3::    How can I set color options from `init.el'?
+* Q4.0.4::    How can I set the colors when highlighting a region?
+* Q4.0.5::    How can I limit color map usage?
+* Q4.0.6::    My tty supports color, but XEmacs doesn't use them.
+* Q4.0.7::    Can I have pixmap backgrounds in XEmacs?
+* Q4.0.8::    How do I display non-ASCII characters?
+* Q4.0.9::    Font selections in don't get saved after `Save Options'.
+
+4.1: Syntax Highlighting (Font Lock)
+* Q4.1.1::    How can I do source code highlighting using font-lock?
+* Q4.1.2::    How do I get `More' Syntax Highlighting on by default?
+
+4.2: The Modeline
+* Q4.2.1::    How can I make the modeline go away?
+* Q4.2.2::    How do you have XEmacs display the line number in the modeline?
+* Q4.2.3::    How do I get XEmacs to put the time of day on the modeline?
+* Q4.2.4::    How can I change the modeline color based on the mode used?
+
+4.3: The Cursor
+* Q4.3.1::    Is there a way to make the bar cursor thicker?
+* Q4.3.2::    Is there a way to get back the block cursor?
+* Q4.3.3::    Can I make the cursor blink?
+
+4.4: The Menubar
+* Q4.4.1::    How do I get rid of the menubar?
+* Q4.4.2::    How can I customize the menubar?
+* Q4.4.3::    How do I enable use of the keyboard (Alt) to access menu items?
+* Q4.4.4::    How do I control how many buffers are listed in the menu `Buffers List'?
+* Q4.4.5::    Resources like `Emacs*menubar*font' are not working?
+
+4.5: The Toolbar
+* Q4.5.1::    How do I get rid of the toolbar?
+* Q4.5.2::    How can I customize the toolbar?
+* Q4.5.3::    How can I bind a key to a function to toggle the toolbar?
+* Q4.5.4::    `Can't instantiate image error...' in toolbar
+
+4.6: Scrollbars and Scrolling
+* Q4.6.1::    How can I disable the scrollbar?
+* Q4.6.2::    How can I change the scrollbar width?
+* Q4.6.3::    How can I use resources to change scrollbar colors?
+* Q4.6.4::    Moving the scrollbar can move the point; can I disable this?
+* Q4.6.5::    Scrolling one line at a time.
+* Q4.6.6::    How can I turn off automatic horizontal scrolling in specific modes?
+* Q4.6.7::    I find auto-show-mode disconcerting.  How do I turn it off?
+
+4.7: The Gutter Tabs, The Progress Bar, Widgets
+* Q4.7.1::    How can I disable the gutter tabs?
+* Q4.7.2::    How can I disable the progress bar?
+* Q4.7.3::    There are bugs in the gutter or widgets.
+* Q4.7.4::    How can I customize the gutter or gutter tabs?
+
+4.0: Textual Fonts and Colors
+=============================
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.1,  Next: Q4.0.2,  Prev: Display,  Up: Display
+
+Q4.0.1: How do I specify a font?
+--------------------------------
+
+#### Update me.
+
+   In 21.4 and above, you can use the `Options' menu to change the font.
+You can also do it in your init file, e.g. like this (for MS Windows):
+
+         (set-face-font 'default "Lucida Console:Regular:10")
+         (set-face-font 'modeline "MS Sans Serif:Regular:10")
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.2,  Next: Q4.0.3,  Prev: Q4.0.1,  Up: Display
+
+Q4.0.2: How do I set the text, menu and modeline fonts?
+-------------------------------------------------------
+
+#### Update me.
+
+   Note that you should use `Emacs.' and not `Emacs*' when setting face
+values.
+
+   In `.Xresources':
+
+     Emacs.default.attributeFont:  -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
+     Emacs*menubar*font:           fixed
+     Emacs.modeline.attributeFont: fixed
+
+   This is confusing because `default' and `modeline' are face names,
+and can be found listed with all faces in the current mode by using
+`M-x set-face-font (enter) ?'.  They use the face-specific resource
+`attributeFont'.
+
+   On the other hand, `menubar' is a normal X thing that uses the
+resource `font'.  With Motif it _may be_ necessary to use `fontList'
+_instead of_ `font'.  In _non-Motif_ configurations with Mule it _is_
+necessary to use `fontSet' instead of `font'.  (Sorry, there just is no
+simple recipe here.)
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.3,  Next: Q4.0.4,  Prev: Q4.0.2,  Up: Display
+
+Q4.0.3: How can I set color options from `init.el'?
+---------------------------------------------------
+
+How can I set the most commonly used color options from my `init.el'
+instead of from my `.Xresources'?
+
+   Like this:
+
+     (set-face-background 'default      "bisque") ; frame background
+     (set-face-foreground 'default      "black") ; normal text
+     (set-face-background 'zmacs-region "red") ; When selecting w/
+                                             ; mouse
+     (set-face-foreground 'zmacs-region "yellow")
+     (set-face-font       'default      "*courier-bold-r*120-100-100*")
+     (set-face-background 'highlight    "blue") ; Ie when selecting
+                                             ; buffers
+     (set-face-foreground 'highlight    "yellow")
+     (set-face-background 'modeline     "blue") ; Line at bottom
+                                             ; of buffer
+     (set-face-foreground 'modeline     "white")
+     (set-face-font       'modeline     "*bold-r-normal*140-100-100*")
+     (set-face-background 'isearch      "yellow") ; When highlighting
+                                             ; while searching
+     (set-face-foreground 'isearch      "red")
+     (setq x-pointer-foreground-color   "black") ; Adds to bg color,
+                                             ; so keep black
+     (setq x-pointer-background-color   "blue") ; This is color
+                                             ; you really
+                                             ; want ptr/crsr
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.4,  Next: Q4.0.5,  Prev: Q4.0.3,  Up: Display
+
+Q4.0.4: How can I set the colors when highlighting a region?
+------------------------------------------------------------
+
+How can I set the background/foreground colors when highlighting a
+region?
+
+   You can change the face `zmacs-region' either in your `.Xresources':
+
+     Emacs.zmacs-region.attributeForeground: firebrick
+     Emacs.zmacs-region.attributeBackground: lightseagreen
+
+   or in your `init.el':
+
+     (set-face-background 'zmacs-region "red")
+     (set-face-foreground 'zmacs-region "yellow")
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.5,  Next: Q4.0.6,  Prev: Q4.0.4,  Up: Display
+
+Q4.0.5: How can I limit color map usage?
+----------------------------------------
+
+I'm using Netscape (or another color grabber like XEmacs); is there any
+way to limit the number of available colors in the color map?
+
+   Answer: No, but you can start Netscape before XEmacs, and it will use
+the closest available color if the colormap is full.  You can also limit
+the number of colors Netscape uses, using the flags -mono, -ncols <#> or
+-install (for mono, limiting to <#> colors, or for using a private color
+map).
+
+   If you have the money, another solution would be to use a truecolor
+or direct color video.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.6,  Next: Q4.0.7,  Prev: Q4.0.5,  Up: Display
+
+Q4.0.6: My tty supports color, but XEmacs doesn't use them.
+-----------------------------------------------------------
+
+XEmacs tries to automatically determine whether your tty supports color,
+but sometimes guesses wrong.  In that case, you can make XEmacs Do The
+Right Thing using this Lisp code:
+
+     (if (eq 'tty (device-type))
+         (set-device-class nil 'color))
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.7,  Next: Q4.0.8,  Prev: Q4.0.6,  Up: Display
+
+Q4.0.7: Can I have pixmap backgrounds in XEmacs?
+------------------------------------------------
+
+Juan Villacis <jvillaci@wahnsinnig.extreme.indiana.edu> writes:
+
+     There are several ways to do it.  For example, you could specify a
+     default pixmap image to use in your `~/.Xresources', e.g.,
+
+            Emacs*EmacsFrame.default.attributeBackgroundPixmap: /path/to/image.xpm
+
+     and then reload ~/.Xresources and restart XEmacs.  Alternatively,
+     since each face can have its own pixmap background, a better way
+     would be to set a face's pixmap within your XEmacs init file, e.g.,
+
+            (set-face-background-pixmap 'default "/path/to/image.xpm")
+            (set-face-background-pixmap 'bold    "/path/to/another_image.xpm")
+
+     and so on.  You can also do this interactively via `M-x
+     edit-faces'.
+
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.8,  Next: Q4.0.9,  Prev: Q4.0.7,  Up: Display
+
+Q4.0.8: How do I display non-ASCII characters?
+----------------------------------------------
+
+If you're using a Mule-enabled XEmacs, then display is automatic.  If
+you're not seeing the characters you expect, either (1) you don't have
+appropriate fonts available or (2) XEmacs did not correctly detect the
+coding system (*note Recognize Coding: (xemacs)Recognize Coding.).  In
+case (1), install fonts as is customary for your platform.  In case
+(2), you need to tell XEmacs explicitly what coding systems you're
+using.  *Note Specify Coding: (xemacs)Specify Coding.
+
+   If your XEmacs is not Mule-enabled, and for some reason getting a
+Mule-enabled XEmacs seems like the wrong thing to do, all is not lost.
+You can arrange it by brute force.  In `event-Xt.c' (suppress the urge
+to look in this file--play Doom instead, because you'll survive
+longer), it is written:
+
+     In a non-Mule world, a user can still have a multi-lingual editor,
+     by doing `(set-face-font "-*-iso8859-2" (current-buffer))' for all
+     their Latin-2 buffers, etc.
+
+   For the related problem of _inputting_ non-ASCII characters in a
+non-Mule XEmacs, *Note How can you type in special characters in
+XEmacs?: Q3.0.6.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.0.9,  Next: Q4.1.1,  Prev: Q4.0.8,  Up: Display
+
+Q4.0.9: Font selections in don't get saved after `Save Options'.
+----------------------------------------------------------------
+
+John Mann <mannj@ll.mit.edu> writes:
+
+     You have to go to `Options->Menubars' and unselect `Frame-Local
+     Font Menu'.  If this option is selected, font changes are only
+     applied to the _current_ frame and do _not_ get saved when you
+     save options.
+
+   Also, set the following in your `init.el':
+
+     (setq options-save-faces t)
+
+4.1: Syntax Highlighting (Font Lock)
+====================================
+
+\1f
+File: xemacs-faq.info,  Node: Q4.1.1,  Next: Q4.1.2,  Prev: Q4.0.9,  Up: Display
+
+Q4.1.1: How can I do source code highlighting using font-lock?
+--------------------------------------------------------------
+
+For most modes, font-lock is already set up and just needs to be turned
+on.  This can be done by adding the line:
+
+     (require 'font-lock)
+
+   to your `init.el'. (You can turn it on for the current buffer and
+session only by `M-x font-lock-mode'.) See the file
+`etc/sample.init.el' (`etc/sample.emacs' in XEmacs versions prior to
+21.4) for more information.
+
+   See also `Syntax Highlighting' from the `Options' menu.  Remember to
+save options.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.1.2,  Next: Q4.2.1,  Prev: Q4.1.1,  Up: Display
+
+Q4.1.2: How do I get `More' Syntax Highlighting on by default?
+--------------------------------------------------------------
+
+Use the following code in your `init.el':
+
+     (setq-default font-lock-maximum-decoration t)
+
+   See also `Syntax Highlighting' from the `Options' menu.  Remember to
+save options.
+
+4.2: The Modeline
+=================
+
+\1f
+File: xemacs-faq.info,  Node: Q4.2.1,  Next: Q4.2.2,  Prev: Q4.1.2,  Up: Display
+
+Q4.2.1: How can I make the modeline go away?
+--------------------------------------------
+
+     (set-specifier has-modeline-p nil)
+
+\1f
+File: xemacs-faq.info,  Node: Q4.2.2,  Next: Q4.2.3,  Prev: Q4.2.1,  Up: Display
+
+Q4.2.2: How do you have XEmacs display the line number in the modeline?
+-----------------------------------------------------------------------
+
+Add the following line to your `init.el' file to display the line
+number:
+
+     (line-number-mode 1)
+
+   Use the following to display the column number:
+
+     (column-number-mode 1)
+
+   Or select from the `Options' menu `Advanced
+(Customize)->Emacs->Editing->Basics->Line Number Mode' and/or `Advanced
+(Customize)->Emacs->Editing->Basics->Column Number Mode'
+
+   Or type `M-x customize <RET> editing-basics <RET>'.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.2.3,  Next: Q4.2.4,  Prev: Q4.2.2,  Up: Display
+
+Q4.2.3: How do I get XEmacs to put the time of day on the modeline?
+-------------------------------------------------------------------
+
+Add the following line to your `init.el' file to display the time:
+
+     (display-time)
+
+   See `Customize' from the `Options' menu for customization.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.2.4,  Next: Q4.3.1,  Prev: Q4.2.3,  Up: Display
+
+Q4.2.4: How can I change the modeline color based on the mode used?
+-------------------------------------------------------------------
+
+You can use something like the following:
+
+     (add-hook 'lisp-mode-hook
+               (lambda ()
+                 (set-face-background 'modeline "red" (current-buffer))))
+
+   Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
+colors change from the default set in your `init.el'.  The change will
+only be made in the buffer you just entered (which contains the Lisp
+file you are editing) and will not affect the modeline colors anywhere
+else.
+
+   Notes:
+
+   * The hook is the mode name plus `-hook'.  eg. c-mode-hook,
+     c++-mode-hook, emacs-lisp-mode-hook (used for your `init.el' or a
+     `xx.el' file), lisp-interaction-mode-hook (the `*scratch*' buffer),
+     text-mode-hook, etc.
+
+   * Be sure to use `add-hook', not `(setq c-mode-hook xxxx)',
+     otherwise you will erase anything that anybody has already put on
+     the hook.
+
+   * You can also do `(set-face-font 'modeline FONT)', eg.
+     `(set-face-font 'modeline "*bold-r-normal*140-100-100*"
+     (current-buffer))' if you wish the modeline font to vary based on
+     the current mode.
+
+   There are additional modeline faces, `modeline-buffer-id',
+`modeline-mousable', and `modeline-mousable-minor-mode', which you may
+want to customize.
+
+4.3: The Cursor
+===============
+
+\1f
+File: xemacs-faq.info,  Node: Q4.3.1,  Next: Q4.3.2,  Prev: Q4.2.4,  Up: Display
+
+Q4.3.1: Is there a way to make the bar cursor thicker?
+------------------------------------------------------
+
+I'd like to have the bar cursor a little thicker, as I tend to "lose" it
+often.
+
+   For a 1 pixel bar cursor, use:
+
+     (setq bar-cursor t)
+
+   For a 2 pixel bar cursor, use:
+
+     (setq bar-cursor 'anything-else)
+
+   You can also change these with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...'
+or type `M-x customize <RET> display <RET>'.
+
+   You can use a color to make it stand out better:
+
+     Emacs*cursorColor:      Red
+
+\1f
+File: xemacs-faq.info,  Node: Q4.3.2,  Next: Q4.3.3,  Prev: Q4.3.1,  Up: Display
+
+Q4.3.2: Is there a way to get back the block cursor?
+----------------------------------------------------
+
+     (setq bar-cursor nil)
+
+   You can also change this with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...'
+or type `M-x customize <RET> display <RET>'.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.3.3,  Next: Q4.4.1,  Prev: Q4.3.2,  Up: Display
+
+Q4.3.3: Can I make the cursor blink?
+------------------------------------
+
+Yes, like this:
+
+     (blink-cursor-mode)
+
+   This function toggles between a steady cursor and a blinking cursor.
+You may also set this mode from the menu bar by selecting
+`Options->Display->Blinking Cursor'.  Remember to save options.
+
+4.4: The Menubar
+================
+
+\1f
+File: xemacs-faq.info,  Node: Q4.4.1,  Next: Q4.4.2,  Prev: Q4.3.3,  Up: Display
+
+Q4.4.1: How do I get rid of the menubar?
+----------------------------------------
+
+     (set-specifier menubar-visible-p nil)
+
+\1f
+File: xemacs-faq.info,  Node: Q4.4.2,  Next: Q4.4.3,  Prev: Q4.4.1,  Up: Display
+
+Q4.4.2: How can I customize the menubar?
+----------------------------------------
+
+For an extensive menubar, add this line to your `init.el':
+
+     (load "big-menubar")
+
+   If you'd like to write your own, this file provides as good a set of
+examples as any to start from.  The file is located in edit-utils
+package.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.4.3,  Next: Q4.4.4,  Prev: Q4.4.2,  Up: Display
+
+Q4.4.3: How do I enable use of the keyboard (`Alt') to access menu items?
+-------------------------------------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.4.4,  Next: Q4.4.5,  Prev: Q4.4.3,  Up: Display
+
+Q4.4.4: How do I control how many buffers are listed in the menu `Buffers List'?
+--------------------------------------------------------------------------------
+
+Add the following to your `init.el' (suit to fit):
+
+     (setq buffers-menu-max-size 20)
+
+   For no limit, use an argument of `nil'.
+
+   You can also change this with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max
+Size...' or type `M-x customize <RET> buffers-menu <RET>'.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.4.5,  Next: Q4.5.1,  Prev: Q4.4.4,  Up: Display
+
+Q4.4.5: Resources like `Emacs*menubar*font' are not working?
+------------------------------------------------------------
+
+I am trying to use a resource like `Emacs*menubar*font' to set the font
+of the menubar but it's not working.
+
+   In Motif, the use of `font' resources is obsoleted in order to
+support internationalization.  If you are using the real Motif menubar,
+this resource is not recognized at all; you have to say:
+
+     Emacs*menubar*fontList: FONT
+
+   If you are using the Lucid menubar, for backward compatibility with
+existing user configurations, the `font' resource is recognized.  Since
+this is not supported by Motif itself, the code is a kludge and the
+`font' resource will be recognized only if the `fontList' resource
+resource is unset.  This means that the resource
+
+     *fontList: FONT
+
+   will override
+
+     Emacs*menubar*font: FONT
+
+   even though the latter is more specific.
+
+   In non-Motif configurations using `--with-mule' and `--with-xfs' it
+_is_ necessary to use the `fontSet' resource _instead of_ the `font'
+resource.  The backward compatibility kludge was never implemented for
+non-Motif builds.  Example:
+
+     *fontSet: FONT
+
+4.5: The Toolbar
+================
+
+\1f
+File: xemacs-faq.info,  Node: Q4.5.1,  Next: Q4.5.2,  Prev: Q4.4.5,  Up: Display
+
+Q4.5.1: How do I get rid of the toolbar?
+----------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.5.2,  Next: Q4.5.3,  Prev: Q4.5.1,  Up: Display
+
+Q4.5.2: How can I customize the toolbar?
+----------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.5.3,  Next: Q4.5.4,  Prev: Q4.5.2,  Up: Display
+
+Q4.5.3: How can I bind a key to a function to toggle the toolbar?
+-----------------------------------------------------------------
+
+Try something like:
+
+     (defun my-toggle-toolbar ()
+       (interactive)
+       (set-specifier default-toolbar-visible-p
+                      (not (specifier-instance default-toolbar-visible-p))))
+     (global-set-key "\C-xT" 'my-toggle-toolbar)
+
+   Thanks to Martin Buchholz <martin@xemacs.org> for the correct code.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.5.4,  Next: Q4.6.1,  Prev: Q4.5.3,  Up: Display
+
+Q4.5.4: `Can't instantiate image error...' in toolbar
+-----------------------------------------------------
+
+Dr. Ram Samudrala <expt@alanine.ram.org> writes:
+
+   I just installed the XEmacs (20.4-2) RPMS that I downloaded from
+`http://www.xemacs.org/'.  Everything works fine, except that when I
+place my mouse over the toolbar, it beeps and gives me this message:
+
+      Can't instantiate image (probably cached):
+      [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
+      (16 16 <strange control characters> ...
+
+   Kyle Jones <kyle_jones@wonderworks.com> writes:
+
+     This is problem specific to some Chips and Technologies video
+     chips, when running XFree86.  Putting
+
+     `Option "sw_cursor"'
+
+     in `XF86Config' gets rid of the problem.
+
+4.6: Scrollbars and Scrolling
+=============================
+
+\1f
+File: xemacs-faq.info,  Node: Q4.6.1,  Next: Q4.6.2,  Prev: Q4.5.4,  Up: Display
+
+Q4.6.1: How can I disable the scrollbar?
+----------------------------------------
+
+To disable them for all frames, add the following line to your
+`.Xresources':
+
+     Emacs.scrollBarWidth:  0
+
+   Or select `Options->Display->Scrollbars'.  Remember to save options.
+
+   To turn the scrollbar off on a per-frame basis, use the following
+function:
+
+     (set-specifier scrollbar-width 0 (selected-frame))
+
+   You can actually turn the scrollbars on at any level you want by
+substituting for (selected-frame) in the above command.  For example, to
+turn the scrollbars off only in a single buffer:
+
+     (set-specifier scrollbar-width 0 (current-buffer))
+
+\1f
+File: xemacs-faq.info,  Node: Q4.6.2,  Next: Q4.6.3,  Prev: Q4.6.1,  Up: Display
+
+Q4.6.2: How can I change the scrollbar width?
+---------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.6.3,  Next: Q4.6.4,  Prev: Q4.6.2,  Up: Display
+
+Q4.6.3: How can I use resources to change scrollbar colors?
+-----------------------------------------------------------
+
+Here's a recap of how to use resources to change your scrollbar colors:
+
+     ! Motif scrollbars
+
+     Emacs*XmScrollBar.Background: skyblue
+     Emacs*XmScrollBar.troughColor: lightgray
+
+     ! Athena scrollbars
+
+     Emacs*Scrollbar.Foreground: skyblue
+     Emacs*Scrollbar.Background: lightgray
+
+   Note the capitalization of `Scrollbar' for the Athena widget.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.6.4,  Next: Q4.6.5,  Prev: Q4.6.3,  Up: Display
+
+Q4.6.4: Moving the scrollbar can move the point; can I disable this?
+--------------------------------------------------------------------
+
+When I move the scrollbar in an XEmacs window, it moves the point as
+well, which should not be the default behavior.  Is this a bug or a
+feature?  Can I disable it?
+
+   The current behavior is a feature, not a bug.  Point remains at the
+same buffer position as long as that position does not scroll off the
+screen.  In that event, point will end up in either the upper-left or
+lower-left hand corner.
+
+   This cannot be changed.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.6.5,  Next: Q4.6.6,  Prev: Q4.6.4,  Up: Display
+
+Q4.6.5: Scrolling one line at a time.
+-------------------------------------
+
+Can the cursor keys scroll the screen a line at a time, rather than the
+default half page jump?  I tend it to find it disorienting.
+
+   Use the following:
+
+     (setq scroll-step 1)
+
+   You can also change this with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...'
+or type `M-x customize <RET> windows <RET>'.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.6.6,  Next: Q4.6.7,  Prev: Q4.6.5,  Up: Display
+
+Q4.6.6: How can I turn off automatic horizontal scrolling in specific modes?
+----------------------------------------------------------------------------
+
+Do `(setq truncate-lines t)' in the mode-hooks for any modes in which
+you want lines truncated.
+
+   More precisely: If `truncate-lines' is nil, horizontal scrollbars
+will never appear.  Otherwise, they will appear only if the value of
+`scrollbar-height' for that buffer/window/etc. is non-zero.  If you do
+
+     (set-specifier scrollbar-height 0)
+
+   then horizontal scrollbars will not appear in truncated buffers
+unless the package specifically asked for them.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.6.7,  Next: Q4.7.1,  Prev: Q4.6.6,  Up: Display
+
+Q4.6.7: I find auto-show-mode disconcerting.  How do I turn it off?
+-------------------------------------------------------------------
+
+`auto-show-mode' controls whether or not a horizontal scrollbar
+magically appears when a line is too long to be displayed.  This is
+enabled by default.  To turn it off, put the following in your
+`init.el':
+
+     (setq auto-show-mode nil)
+     (setq-default auto-show-mode nil)
+
+4.7: The Gutter Tabs, The Progress Bar, Widgets
+===============================================
+
+\1f
+File: xemacs-faq.info,  Node: Q4.7.1,  Next: Q4.7.2,  Prev: Q4.6.7,  Up: Display
+
+Q4.7.1: How can I disable the gutter tabs?
+------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.7.2,  Next: Q4.7.3,  Prev: Q4.7.1,  Up: Display
+
+Q4.7.2: How can I disable the progress bar?
+-------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.7.3,  Next: Q4.7.4,  Prev: Q4.7.2,  Up: Display
+
+Q4.7.3: There are bugs in the gutter or widgets.
+------------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q4.7.4,  Prev: Q4.7.3,  Up: Display
+
+Q4.7.4: How can I customize the gutter or gutter tabs?
+------------------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: External Subsystems,  Next: Internet,  Prev: Display,  Up: Top
+
+5 Interfacing with the Operating System and External Devices
+************************************************************
+
+This is part 5 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to the various ways that XEmacs interfaces with the
+operating system, with other processes and with external devices such
+as speakers and the printer.
+
+* Menu:
+
+5.0: X Window System and Resources
+* Q5.0.1::    Where is a list of X resources?
+* Q5.0.2::    How can I detect a color display?
+* Q5.0.3::    How can I get the icon to just say `XEmacs'?
+* Q5.0.4::    How can I have the window title area display the full path?
+* Q5.0.5::    `xemacs -name junk' doesn't work?
+* Q5.0.6::    `-iconic' doesn't work.
+
+5.1: Microsoft Windows
+* Q5.1.1::    Does XEmacs rename all the `win32-*' symbols to `w32-*'?
+* Q5.1.2::    How do I get Windows Explorer to associate a file type with XEmacs?
+
+5.2: Printing
+* Q5.2.1::    What do I need to change to make printing work?
+* Q5.2.2::    How can I print WYSIWYG a font-locked buffer?
+* Q5.2.3::    Getting M-x lpr to work with postscript printer.
+* Q5.2.4::    Can you print under MS Windows?
+
+5.3: Sound
+* Q5.3.1::    How do I turn off the sound?
+* Q5.3.2::    How do I get funky sounds instead of a boring beep?
+* Q5.3.3::    What are NAS and ESD (EsounD)?
+* Q5.3.4::    Sunsite sounds don't play.
+
+5.4: Running an Interior Shell, Invoking Subprocesses
+* Q5.4.1::    What is an interior shell?
+* Q5.4.2::    How do I start up a second shell buffer?
+* Q5.4.3::    Telnet from shell filters too much
+* Q5.4.4::    Strange things are happening in Shell Mode.
+* Q5.4.5::    XEmacs complains "No such file or directory, diff"
+* Q5.4.6::    Cygwin error "fork_copy: linked dll/bss pass 0 failed"
+
+5.5: Multiple Device Support
+* Q5.5.1::    How do I open a frame on another screen of my multi-headed display?
+* Q5.5.2::    Can I really connect to a running XEmacs after calling up over a modem?  How?
+* Q5.5.3::    How do I disable gnuserv from opening a new frame?
+* Q5.5.4::    How do I start gnuserv so that each subsequent XEmacs is a client?
+* Q5.5.5::    Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+
+5.0: X Window System and Resources
+==================================
+
+\1f
+File: xemacs-faq.info,  Node: Q5.0.1,  Next: Q5.0.2,  Prev: External Subsystems,  Up: External Subsystems
+
+Q5.0.1: Where is a list of X resources?
+---------------------------------------
+
+Search through the `NEWS' file for `X Resources'.  A fairly
+comprehensive list is given after it.
+
+   In addition, an `app-defaults' file `etc/Emacs.ad' is supplied,
+listing the defaults.  The file `etc/sample.Xresources' gives a
+different set of defaults that you might consider for installation in
+your `~/.Xresources' file.  It is nearly the same as `etc/Emacs.ad',
+but a few entries are altered.  Be careful about installing the
+contents of this file into your `.Xresources' (or legacy `.Xdefaults')
+file if you use GNU Emacs under X11 as well.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.0.2,  Next: Q5.0.3,  Prev: Q5.0.1,  Up: External Subsystems
+
+Q5.0.2: How can I detect a color display?
+-----------------------------------------
+
+You can test the return value of the function `(device-class)', as in:
+
+     (when (eq (device-class) 'color)
+       (set-face-foreground  'font-lock-comment-face "Grey")
+       (set-face-foreground  'font-lock-string-face  "Red")
+       ....
+       )
+
+\1f
+File: xemacs-faq.info,  Node: Q5.0.3,  Next: Q5.0.4,  Prev: Q5.0.2,  Up: External Subsystems
+
+Q5.0.3: How can I get the icon to just say `XEmacs'?
+----------------------------------------------------
+
+I'd like the icon to just say `XEmacs', and not include the name of the
+current file in it.
+
+   Add the following line to your `init.el':
+
+     (setq frame-icon-title-format "XEmacs")
+
+\1f
+File: xemacs-faq.info,  Node: Q5.0.4,  Next: Q5.0.5,  Prev: Q5.0.3,  Up: External Subsystems
+
+Q5.0.4: How can I have the window title area display the full path?
+-------------------------------------------------------------------
+
+I'd like to have the window title area display the full directory/name
+of the current buffer file and not just the name.
+
+   Add the following line to your `init.el':
+
+     (setq frame-title-format "%S: %f")
+
+   A more sophisticated title might be:
+
+     (setq frame-title-format
+           '("%S: " (buffer-file-name "%f"
+                                      (dired-directory dired-directory "%b"))))
+
+   That is, use the file name, or the dired-directory, or the buffer
+name.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.0.5,  Next: Q5.0.6,  Prev: Q5.0.4,  Up: External Subsystems
+
+Q5.0.5: `xemacs -name junk' doesn't work?
+-----------------------------------------
+
+When I run `xterm -name junk', I get an xterm whose class name
+according to xprop, is `junk'.  This is the way it's supposed to work,
+I think.  When I run `xemacs -name junk' the class name is not set to
+`junk'.  It's still `emacs'.  What does `xemacs -name' really do?  The
+reason I ask is that my window manager (fvwm) will make a window sticky
+and I use XEmacs to read my mail.  I want that XEmacs window to be
+sticky, without having to use the window manager's function to set the
+window sticky.  What gives?
+
+   `xemacs -name' sets the application name for the program (that is,
+the thing which normally comes from `argv[0]').  Using `-name' is the
+same as making a copy of the executable with that new name.  The
+`WM_CLASS' property on each frame is set to the frame-name, and the
+application-class.  So, if you did `xemacs -name FOO' and then created
+a frame named BAR, you'd get an X window with WM_CLASS = `( "BAR",
+"Emacs")'.  However, the resource hierarchy for this widget would be:
+
+     Name:    FOO   .shell             .container   .BAR
+     Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
+
+   instead of the default
+
+     Name:    xemacs.shell             .container   .emacs
+     Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
+
+   It is arguable that the first element of WM_CLASS should be set to
+the application-name instead of the frame-name, but I think that's less
+flexible, since it does not give you the ability to have multiple frames
+with different WM_CLASS properties.  Another possibility would be for
+the default frame name to come from the application name instead of
+simply being `emacs'.  However, at this point, making that change would
+be troublesome: it would mean that many users would have to make yet
+another change to their resource files (since the default frame name
+would suddenly change from `emacs' to `xemacs', or whatever the
+executable happened to be named), so we'd rather avoid it.
+
+   To make a frame with a particular name use:
+
+     (make-frame '((name . "the-name")))
+
+\1f
+File: xemacs-faq.info,  Node: Q5.0.6,  Next: Q5.1.1,  Prev: Q5.0.5,  Up: External Subsystems
+
+Q5.0.6: `-iconic' doesn't work.
+-------------------------------
+
+When I start up XEmacs using `-iconic' it doesn't work right.  Using
+`-unmapped' on the command line, and setting the `initiallyUnmapped' X
+Resource don't seem to help much either...
+
+   Ben Wing <ben@xemacs.org> writes:
+
+     Ugh, this stuff is such an incredible mess that I've about given up
+     getting it to work.  The principal problem is numerous
+     window-manager bugs...
+
+5.1: Microsoft Windows
+======================
+
+\1f
+File: xemacs-faq.info,  Node: Q5.1.1,  Next: Q5.1.2,  Prev: Q5.0.6,  Up: External Subsystems
+
+Q5.1.1: Does XEmacs rename all the `win32-*' symbols to `w32-*'?
+----------------------------------------------------------------
+
+In his flavor of Emacs 20, Richard Stallman has renamed all the
+`win32-*' symbols to `w32-*'.  Does XEmacs do the same?
+
+   We consider such a move counter-productive, thus we do not use the
+`w32' prefix. (His rather questionable justification was that he did
+not consider Windows to be a "winning" platform.) However, the name
+`Win32' is not particularly descriptive outside the Windows world, and
+using just `windows-' would be too generic.  So we chose a compromise,
+the prefix `mswindows-' for Windows-related variables and functions.
+
+   Thus all the XEmacs variables and functions directly related to
+either the Windows GUI or OS are prefixed `mswindows-' (except for a
+couple of debugging variables, prefixed `debug-mswindows-').  From an
+architectural perspective, however, we believe that this is mostly a
+non-issue because there should be a very small number of
+window-systems-specific variables anyway.  Whenever possible, we try to
+provide generic interfaces that apply to all window systems.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.1.2,  Next: Q5.2.1,  Prev: Q5.1.1,  Up: External Subsystems
+
+Q5.1.2: How do I get Windows Explorer to associate a file type with XEmacs?
+---------------------------------------------------------------------------
+
+Associating a new file type with XEmacs.
+........................................
+
+In Explorer select `View->Options->File Types', press `[New Type...]'
+and fill in the dialog box, e.g.:
+
+             Description of type:    Emacs Lisp source
+             Associated extension:   el
+             Content Type (MIME):    text/plain
+
+   then press `[New...]' and fill in the `Action' dialog box as follows:
+
+             Action:
+             Open
+
+             Application used to perform action:
+             D:\Full\path\for\xemacs.exe "%1"
+
+             [x] Use DDE
+
+             DDE Message:
+             open("%1")
+
+             Application:
+             <leave blank>
+
+             DDE Application Not Running:
+             <leave blank>
+
+             Topic:
+             <leave blank>
+
+Associating an existing file type with XEmacs.
+..............................................
+
+In Explorer select `View->Options->File Types'.  Click on the file type
+in the list and press `[Edit...]'.  If the file type already has an
+`Open' action, double click on it and fill in the `Action' dialog box
+as described above; otherwise create a new action.
+
+   If the file type has more than one action listed, you probably want
+to make the `Open' action that you just edited the default by clicking
+on it and pressing `Set Default'.
+
+   Note for Windows 2000 users: Under Windows 2000, get to `File Types'
+using `Control Panel->Folder Options->File Types'.
+
+5.2: Printing
+=============
+
+\1f
+File: xemacs-faq.info,  Node: Q5.2.1,  Next: Q5.2.2,  Prev: Q5.1.2,  Up: External Subsystems
+
+Q5.2.1: What do I need to change to make printing work?
+-------------------------------------------------------
+
+For regular printing there are two variables that can be customized.
+
+`lpr-command'
+     This should be set to a command that takes standard input and sends
+     it to a printer.  Something like:
+
+          (setq lpr-command "lp")
+
+`lpr-switches'
+     This should be set to a list that contains whatever the print
+     command requires to do its job.  Something like:
+
+          (setq lpr-switches '("-depson"))
+
+   For postscript printing there are three analogous variables to
+customize.
+
+`ps-lpr-command'
+     This should be set to a command that takes postscript on standard
+     input and directs it to a postscript printer.
+
+`ps-lpr-switches'
+     This should be set to a list of switches required for
+     `ps-lpr-command' to do its job.
+
+`ps-print-color-p'
+     This boolean variable should be set `t' if printing will be done in
+     color, otherwise it should be set to `nil'.
+
+   NOTE: It is an undocumented limitation in XEmacs that postscript
+printing (the `Pretty Print Buffer' menu item) *requires* a window
+system environment.  It cannot be used outside of X11.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.2.2,  Next: Q5.2.3,  Prev: Q5.2.1,  Up: External Subsystems
+
+Q5.2.2: How can I print WYSIWYG a font-locked buffer?
+-----------------------------------------------------
+
+Font-lock looks nice.  How can I print (WYSIWYG) the highlighted
+document?
+
+   The package `ps-print', which is now included with XEmacs, provides
+the ability to do this.  The source code contains complete instructions
+on its use, in
+`$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el', being
+the default location of an installed ps-print package.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.2.3,  Next: Q5.2.4,  Prev: Q5.2.2,  Up: External Subsystems
+
+Q5.2.3: Getting `M-x lpr' to work with postscript printer.
+----------------------------------------------------------
+
+My printer is a Postscript printer and `lpr' only works for Postscript
+files, so how do I get `M-x lpr-region' and `M-x lpr-buffer' to work?
+
+   Put something like this in your `init.el':
+
+     (setq lpr-command "a2ps")
+     (setq lpr-switches '("-p" "-1"))
+
+   If you don't use a2ps to convert ASCII to postscript (why not, it's
+free?), replace with the command you do use.  Note also that some
+versions of a2ps require a `-Pprinter' to ensure spooling.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.2.4,  Next: Q5.3.1,  Prev: Q5.2.3,  Up: External Subsystems
+
+Q5.2.4: Can you print under MS Windows?
+---------------------------------------
+
+As of 21.4, printing works on Windows, using simply `File->Print
+BUFFER...', and can be configured with `File->Page Setup...'.
+
+   Prior to 21.4, there is no built-in support, but there are some
+clever hacks out there.  If you know how, please let us know and we'll
+put it here.
+
+5.3: Sound
+==========
+
+\1f
+File: xemacs-faq.info,  Node: Q5.3.1,  Next: Q5.3.2,  Prev: Q5.2.4,  Up: External Subsystems
+
+Q5.3.1: How do I turn off the sound?
+------------------------------------
+
+Add the following line to your `init.el':
+
+     (setq bell-volume 0)
+     (setq sound-alist nil)
+
+   That will make your XEmacs totally silent--even the default ding
+sound (TTY beep on TTY-s) will be gone.
+
+   You can also change these with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Sound->Sound...' or
+type `M-x customize <RET> sound <RET>'.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.3.2,  Next: Q5.3.3,  Prev: Q5.3.1,  Up: External Subsystems
+
+Q5.3.2: How do I get funky sounds instead of a boring beep?
+-----------------------------------------------------------
+
+Make sure your XEmacs was compiled with sound support, and then put this
+in your `init.el':
+
+     (load-default-sounds)
+
+\1f
+File: xemacs-faq.info,  Node: Q5.3.3,  Next: Q5.3.4,  Prev: Q5.3.2,  Up: External Subsystems
+
+Q5.3.3: What are NAS and ESD (EsounD)?
+--------------------------------------
+
+"Network Audio System" (NAS) is a client-server sound library for X.
+
+   `http://radscan.com/nas.html'.
+
+   To build XEmacs with it, use the `configure' flag `--with-sound=nas'
+(`--enable-sound=nas' in 21.5 or later).
+
+   "Enlightened Sound Daemon" (ESD or EsounD) is yet another sound
+system.
+
+   `http://www.tux.org/~ricdude/EsounD.html'.
+
+   To build XEmacs with it, use the `configure' flag `--with-sound=esd'
+(`--enable-sound=esd' in 21.5 or later).
+
+   You can specify support for both with a flag like
+`--with-sound=nas,esd' (`--enable-sound=nas,esd' in 21.5 or later).
+
+\1f
+File: xemacs-faq.info,  Node: Q5.3.4,  Next: Q5.4.1,  Prev: Q5.3.3,  Up: External Subsystems
+
+Q5.3.4: Sunsite sounds don't play.
+----------------------------------
+
+I'm having some trouble with sounds I've downloaded from sunsite.  They
+play when I run them through `showaudio' or cat them directly to
+`/dev/audio', but XEmacs refuses to play them.
+
+   Markus Gutschke <gutschk@uni-muenster.de> writes:
+
+     [Many of] These files have an (erroneous) 24byte header that tells
+     about the format that they have been recorded in. If you cat them
+     to `/dev/audio', the header will be ignored and the default
+     behavior for /dev/audio will be used. This happens to be 8kHz
+     uLaw. It is probably possible to fix the header by piping through
+     `sox' and passing explicit parameters for specifying the sampling
+     format; you then need to perform a 'null' conversion from SunAudio
+     to SunAudio.
+
+5.4: Running an Interior Shell, Invoking Subprocesses
+=====================================================
+
+\1f
+File: xemacs-faq.info,  Node: Q5.4.1,  Next: Q5.4.2,  Prev: Q5.3.4,  Up: External Subsystems
+
+Q5.4.1: What is an interior shell?
+----------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.4.2,  Next: Q5.4.3,  Prev: Q5.4.1,  Up: External Subsystems
+
+Q5.4.2: How do I start up a second shell buffer?
+------------------------------------------------
+
+In the `*shell*' buffer:
+
+     M-x rename-buffer <RET> *shell-1* <RET>
+     M-x shell RET
+
+   This will then start a second shell.  The key is that no buffer named
+`*shell*' can exist.  It might be preferable to use `M-x
+rename-uniquely' to rename the `*shell*' buffer instead of `M-x
+rename-buffer'.
+
+   Alternately, you can set the variable `shell-multiple-shells'.  If
+the value of this variable is non-nil, each time shell mode is invoked,
+a new shell is made
+
+\1f
+File: xemacs-faq.info,  Node: Q5.4.3,  Next: Q5.4.4,  Prev: Q5.4.2,  Up: External Subsystems
+
+Q5.4.3: Telnet from shell filters too much
+------------------------------------------
+
+I'm using the Emacs `M-x shell' function, and I would like to invoke
+and use a telnet session within it.  Everything works fine except that
+now all `^M''s are filtered out by Emacs.  Fixes?
+
+   Use `M-x rsh' or `M-x telnet' to open remote sessions rather than
+doing rsh or telnet within the local shell buffer.  You can also use
+`M-x ssh' to open secure remote session if you have `ssh' installed.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.4.4,  Next: Q5.4.5,  Prev: Q5.4.3,  Up: External Subsystems
+
+Q5.4.4: Strange things are happening in Shell Mode.
+---------------------------------------------------
+
+Sometimes (i.e. it's not repeatable, and I can't work out why it
+happens) when I'm typing into shell mode, I hit return and only a
+portion of the command is given to the shell, and a blank prompt is
+returned.  If I hit return again, the rest of the previous command is
+given to the shell.
+
+   Martin Buchholz <martin@xemacs.org> writes:
+
+     There is a known problem with interaction between `csh' and the
+     `filec' option and XEmacs.  You should add the following to your
+     `.cshrc':
+
+          if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
+
+\1f
+File: xemacs-faq.info,  Node: Q5.4.5,  Next: Q5.4.6,  Prev: Q5.4.4,  Up: External Subsystems
+
+Q5.4.5: XEmacs complains "No such file or directory, diff"
+----------------------------------------------------------
+
+or "ispell" or other commands that seem related to whatever you just
+tried to do (M-x ediff or M-$, for example).
+
+   There are a large number of common (in the sense that "everyone has
+these, they really do") Unix utilities that are not provided with
+XEmacs.  The GNU Project's implementations are available for Windows in
+the the Cygwin distribution (`http://www.cygwin.com/'), which also
+provides a complete Unix emulation environment (and thus makes ports of
+Unix utilities nearly trivial).  Another implementation is that from
+MinGW (`http://www.mingw.org/msys.shtml').  If you know of others,
+please let us know!
+
+\1f
+File: xemacs-faq.info,  Node: Q5.4.6,  Next: Q5.5.1,  Prev: Q5.4.5,  Up: External Subsystems
+
+Q5.4.6: Cygwin error "fork_copy: linked dll/bss pass 0 failed"
+--------------------------------------------------------------
+
+If you are getting an error like
+
+     17797832 [main] bash 3468 fork_copy: linked dll/bss pass 0 failed,
+     0x675000..0x6756A0, done 0, windows pid 2708, Win 32 error 487
+     bash: fork: resource temporarily unavailable
+
+   when trying to run bash using `M-x shell', then you need to rebase
+your Cygwin DLL's.  This is a known problem with Cygwin.  To fix:
+
+  1. Download the `rebase' utility from Cygwin setup (it's under
+     `System').
+
+  2. Kill *all* of your Cygwin processes, including all of your shells
+     and all background processes.  Use `ps -a' to list all the
+     processes you need to kill.
+
+  3. From a DOS prompt, run `ash' (*not* `bash', `tcsh' or `zsh').  Do
+     not try to be clever and `exec /bin/ash' from your last shell; it
+     won't work.
+
+  4. Type `/bin/rebaseall -v'.
+
+   The problem should now be fixed - at least, until you install another
+Cygwin package with DLL's, in which case you may have to repeat the
+procedure.
+
+5.5: Multiple Device Support
+============================
+
+\1f
+File: xemacs-faq.info,  Node: Q5.5.1,  Next: Q5.5.2,  Prev: Q5.4.6,  Up: External Subsystems
+
+Q5.5.1: How do I open a frame on another screen of my multi-headed display?
+---------------------------------------------------------------------------
+
+Use the command `M-x make-frame-on-display'.  This command is also on
+the File menu in the menubar.
+
+   The command `make-frame-on-tty' also exists, which will establish a
+connection to any tty-like device.  Opening the TTY devices should be
+left to `gnuclient', though.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.5.2,  Next: Q5.5.3,  Prev: Q5.5.1,  Up: External Subsystems
+
+Q5.5.2: Can I really connect to a running XEmacs after calling up over a modem?  How?
+-------------------------------------------------------------------------------------
+
+Yes.  Use `gnuclient -nw'.
+
+   Also see *Note How do I disable gnuserv from opening a new frame?:
+Q5.5.3.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.5.3,  Next: Q5.5.4,  Prev: Q5.5.2,  Up: External Subsystems
+
+Q5.5.3: How do I disable gnuserv from opening a new frame?
+----------------------------------------------------------
+
+If you set the `gnuserv-frame' variable to the frame that should be
+used to display buffers that are pulled up, a new frame will not be
+created. For example, you could put
+
+     (setq gnuserv-frame (selected-frame))
+
+   early on in your `init.el', to ensure that the first frame created
+is the one used for your gnuserv buffers.
+
+   There is an option to set the gnuserv target to the current frame.
+See `Options->Display->"Other Window" Location->Make Current Frame
+Gnuserv Target'
+
+   You can also change this with Customize.  Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Gnuserv->Gnuserv
+Frame...'  or type `M-x customize <RET> gnuserv <RET>'.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.5.4,  Next: Q5.5.5,  Prev: Q5.5.3,  Up: External Subsystems
+
+Q5.5.4: How do I start gnuserv so that each subsequent XEmacs is a client?
+--------------------------------------------------------------------------
+
+Put the following in your `init.el' file to start the server:
+
+     (gnuserv-start)
+
+   Start your first XEmacs as usual.  After that, you can do:
+
+     gnuclient randomfilename
+
+   from the command line to get your existing XEmacs process to open a
+new frame and visit randomfilename in that window. When you're done
+editing randomfilename, hit `C-x #' to kill the buffer and get rid of
+the frame.
+
+   See also man page of gnuclient.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.5.5,  Prev: Q5.5.4,  Up: External Subsystems
+
+Q5.5.5: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+--------------------------------------------------------------------------------------------------------
+
+Jan Vroonhof <vroonhof@math.ethz.ch> writes:
+
+     Here is one of the solutions, we have this in a script called
+     `etc/editclient.sh'.
+           #!/bin/sh
+           if gnuclient -batch -eval t >/dev/null 2>&1
+           then
+             exec gnuclient ${1+"$@"}
+           else
+             xemacs -unmapped -f gnuserv-start &
+             until gnuclient -batch -eval t >/dev/null 2>&1
+             do
+                sleep 1
+             done
+             exec gnuclient ${1+"$@"}
+           fi
+
+     Note that there is a known problem when running XEmacs and
+     'gnuclient -nw' on the same TTY.
+
+\1f
+File: xemacs-faq.info,  Node: Internet,  Next: Advanced,  Prev: External Subsystems,  Up: Top
+
+6 Connecting to the Internet
+****************************
+
+This is part 6 of the XEmacs Frequently Asked Questions list.  This
+section is devoted connecting to the Internet.
+
+* Menu:
+
+6.0: General Mail and News
+* Q6.0.1::    What are the various packages for reading mail?
+* Q6.0.2::    How can I send mail?
+* Q6.0.3::    How do I get my outgoing mail archived?
+* Q6.0.4::    How can I read and/or compose MIME messages?
+* Q6.0.5::    How do I customize the From line?
+* Q6.0.6::    How do I get my MUA to filter mail for me?
+* Q6.0.7::    Remote mail reading with an MUA.
+* Q6.0.8::    An MUA gets an error incorporating new mail.
+* Q6.0.9::    Why isn't `movemail' working?
+* Q6.0.10::   How do I make my MUA display graphical smilies?
+* Q6.0.11::   How can I get those oh-so-neat X-Face lines?
+
+6.1: Reading Mail with VM
+* Q6.1.1::    How do I set up VM to retrieve mail from a remote site using POP?
+* Q6.1.2::    How can I get VM to automatically check for new mail?
+* Q6.1.3::    I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
+* Q6.1.4::    Is there a mailing list or FAQ for VM?
+* Q6.1.5::    How do I make VM stay in a single frame?
+* Q6.1.6::    Customization of VM not covered in the manual, or here.
+
+6.2: Reading Netnews and Mail with Gnus
+* Q6.2.1::    GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+* Q6.2.2::    How do I make Gnus stay within a single frame?
+
+6.3: FTP Access
+* Q6.3.1::    Can I edit files on other hosts?
+* Q6.3.2::    What is EFS?
+
+6.4: Web Browsing with W3
+* Q6.4.1::    What is W3?
+* Q6.4.2::    How do I run W3 from behind a firewall?
+* Q6.4.3::    Is it true that W3 supports style sheets and tables?
+
+6.0: General Mail and News
+==========================
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.1,  Next: Q6.0.2,  Prev: Internet,  Up: Internet
+
+Q6.0.1: What are the various packages for reading mail?
+-------------------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.2,  Next: Q6.0.3,  Prev: Q6.0.1,  Up: Internet
+
+Q6.0.2: How can I send mail?
+----------------------------
+
+Under Unix and Mac OS X, the `sendmail' package is normally used for
+this.  #### Write me.
+
+   Under Windows, you need to use `smtpmail', which communicates
+directly with the mail server, as there is no `sendmail' program
+running.  To get it working, use code like the following in your
+`init.el' file:
+
+       ;; Get mail working under Windows.
+       (setq message-send-mail-function 'smtpmail-send-it) ; for message/Gnus
+       (setq send-mail-function 'smtpmail-send-it) ; for C-x m, etc.
+       ;; the following ensures that mail problems can be debugged: it logs a trace
+       ;; of the SMTP conversation to *trace of SMTP session to <somewhere>*.
+       (setq smtpmail-debug-info t)
+       ;; Substitute your info here.
+       ;(setq user-mail-address "ben@xemacs.org")
+       ;(setq user-full-name "Ben Wing")
+       ;(setq smtpmail-default-smtp-server "smtp.myserver.myisp.com")
+       ;; The following two aren't completely necessary but may help.
+       ;(setq smtpmail-local-domain "666.com")
+       ;(setq smtpmail-sendto-domain "666.com")
+       ;; If your SMTP server requires a username/password to authenticate, as
+       ;; many do nowadays, set them like this:
+       ;(setq smtpmail-auth-credentials  ; or use ~/.authinfo
+       ;       '(("smtp.myserver.myisp.com" 25 "USER@SOMEWHERE" "PASSWORD")))
+
+       ;; Other possibilities for getting smtpmail to work:
+       ;;
+       ;;  If for some reason you need to authenticate using the STARTTLS protocol
+       ;;   (don't look into this unless you know what it is), use
+       ;;  (setq smtpmail-starttls-credentials
+       ;;      '(("YOUR SMTP HOST" 25 "~/.my_smtp_tls.key" "~/.my_smtp_tls.cert")))
+       ;;  Requires external program
+       ;;    ftp://ftp.opaopa.org/pub/elisp/starttls-*.tar.gz.
+       ;;  See http://www.ietf.org/rfc/rfc2246.txt,
+       ;;      http://www.ietf.org/rfc/rfc2487.txt
+
+   The lines you need to care about are those that set
+`user-mail-address', `user-full-name', `smtpmail-default-smtp-server',
+and `smtpmail-auth-credentials'.  You need to set these with,
+respectively, your email address, your full name, the SMTP server you
+use for outgoing mail, and the username and password you need to log in
+to your SMTP server. (If for some reason your SMTP server doesn't
+require logging in to send mail, don't uncomment this last line.)
+
+   The other settings may be useful in specific cases, but you should
+know what you're doing before enabling them.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.3,  Next: Q6.0.4,  Prev: Q6.0.2,  Up: Internet
+
+Q6.0.3: How do I get my outgoing mail archived?
+-----------------------------------------------
+
+     (setq mail-archive-file-name "~/outbox")
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.4,  Next: Q6.0.5,  Prev: Q6.0.3,  Up: Internet
+
+Q6.0.4: How can I read and/or compose MIME messages?
+----------------------------------------------------
+
+VM, MH-E and GNUS support MIME natively.  Other MUAs may or may not
+have MIME support; refer to their documentation and other resources,
+such as web pages and mailing lists.  Packages like SEMI/WEMI may be
+useful in connection with MUAs like mew and Wanderlust.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.5,  Next: Q6.0.6,  Prev: Q6.0.4,  Up: Internet
+
+Q6.0.5: How do I customize the From line?
+-----------------------------------------
+
+How do I change the `From:' line?  I have set gnus-user-from-line to
+     Gail Gurman <gail.gurman@sybase.com>
+   , but XEmacs Gnus doesn't use it. [This should apply to all MUA's.
+-ed] Instead it uses
+     Gail Mara Gurman <gailg@deall>
+   and then complains that it's incorrect. Also, as you perhaps can
+see, my Message-ID is screwy. How can I change that?
+
+   Lars Magne Ingebrigtsen <larsi@ifi.uio.no> writes:
+
+     Set `user-mail-address' to `gail.gurman@sybase.com' or
+     `mail-host-address' to `sybase.com'.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.6,  Next: Q6.0.7,  Prev: Q6.0.5,  Up: Internet
+
+Q6.0.6: How do I get my MUA to filter mail for me?
+--------------------------------------------------
+
+One possibility is to use procmail to split your mail before it gets to
+the MUA.  I prefer this personally, since there are many strange and
+wonderful things one can do with procmail.  Procmail may be found at
+`http://www.procmail.org/'.
+
+   Also see the Mail Filtering FAQ at:
+`http://www.faqs.org/faqs/mail/filtering-faq/'.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.7,  Next: Q6.0.8,  Prev: Q6.0.6,  Up: Internet
+
+Q6.0.7: Remote mail reading with an MUA.
+----------------------------------------
+
+My mailbox lives at the office on a big honkin server.  My regular INBOX
+lives on my honkin desktop machine.  I now can PPP to the office from
+home which is far from honking...  I'd like to be able to read mail at
+home without storing it here and I'd like to use xemacs and the MUA at
+home...  Is there a recommended setup?
+
+   Joseph J. Nuspl Jr. <nuspl@nvwls.cc.purdue.edu> writes:
+
+     There are several ways to do this.
+
+       1. Set your display to your home machine and run dxpc or one of
+          the other X compressors.
+
+       2. NFS mount your desktop machine on your home machine and
+          modify your pop command on your home machine to rsh to your
+          desktop machine and actually do the pop get's.
+
+       3. Run a POP server on your desktop machine as well and do a
+          sort of two tiered POP get.
+
+   William Perry <wmperry@monolith.spry.com> adds:
+
+     Or you could run a pop script periodically on your desktop
+     machine, and just use ange-ftp or NFS to get to your mailbox.  I
+     used to do this all the time back at IU.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.8,  Next: Q6.0.9,  Prev: Q6.0.7,  Up: Internet
+
+Q6.0.8: An MUA gets an error incorporating new mail.
+----------------------------------------------------
+
+rmail and VM, and probably other MUA's as well, get new mail from your
+mailbox (called `/var/mail/$USER' or `/var/spool/mail/$USER' or
+something similar) using a program called `movemail'.  This program
+interlocks with `/bin/mail' using the protocol defined by `/bin/mail'.
+
+   There are various different protocols in general use, which you need
+to specify using the `--mail-locking' option (`--with-mail-locking' in
+21.5 or later) to `configure':
+
+`lockf'
+     POSIX file locking with `lockf()'
+
+`flock'
+     BSD file locking with `flock()'
+
+`dot'
+     To manipulate mail file `foo', first create file `foo.lock'
+
+`locking'
+     Use `locking()', Microsoft's renamed `flock()'
+
+`mmdf'
+     Use `lk_open()' and `lk_close()' as defined by the Multi-channel
+     Memo Distribution Facility
+
+`pop'
+     Retrieve mail using POP (the Post Office Protocol).  This is the
+     default for Cygwin/MinGW.
+
+   *IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
+SYSTEM, YOU CAN LOSE MAIL!*
+
+   Usually the value is correctly determined automatically: `configure'
+tries to detect the method in use, and defaults exist on systems for
+which this doesn't work.
+
+   However, if you run into problems incorporating new mail, it may be
+because an incorrect method is being used.
+
+   If your system uses the lock file protocol, and permissions are set
+so that ordinary users cannot write lock files in the mail spool
+directory, you may need to make `movemail' setgid to a suitable group
+such as `mail'.  You can use these commands (as root):
+
+     chgrp mail movemail
+     chmod 2755 movemail
+
+   If you are using the `pop' locking method, `movemail' must be setuid
+root.
+
+   Installation normally copies movemail from the build directory to an
+installation directory which is usually under `/usr/local/lib'.  The
+installed copy of `movemail' is usually in the directory
+`/usr/local/lib/xemacs-VERSION/TARGET' (for example,
+`/usr/local/lib/xemacs-21.4.15/i686-pc-cygwin').  You must change the
+group and mode of the installed copy; changing the group and mode of
+the build directory copy is ineffective.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.9,  Next: Q6.0.10,  Prev: Q6.0.8,  Up: Internet
+
+Q6.0.9: Why isn't `movemail' working?
+-------------------------------------
+
+*Note Q6.0.8::.
+
+   Note also that older versions of Mozilla came with a `movemail'
+program that is *not* compatible with XEmacs.  Do not use it.  Always
+use the `movemail' installed with your XEmacs.  Failure to do so can
+result in lost mail.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.10,  Next: Q6.0.11,  Prev: Q6.0.9,  Up: Internet
+
+Q6.0.10: How do I make my MUA display graphical smilies?
+--------------------------------------------------------
+
+For mh-e use the following:
+
+     (add-hook 'mh-show-mode-hook '(lambda ()
+                                     (smiley-region (point-min)
+                                                    (point-max))))
+
+   WJCarpenter <bill@carpenter.ORG> writes: For VM use the following:
+            (autoload 'smiley-region "smiley" nil t)
+            (add-hook 'vm-select-message-hook
+                      '(lambda ()
+                         (smiley-region (point-min)
+                                        (point-max))))
+
+   For tm use the following:
+     (autoload 'smiley-buffer "smiley" nil t)
+     (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
+
+\1f
+File: xemacs-faq.info,  Node: Q6.0.11,  Next: Q6.1.1,  Prev: Q6.0.10,  Up: Internet
+
+Q6.0.11: How can I get those oh-so-neat X-Face lines?
+-----------------------------------------------------
+
+Firstly there is an ftp site which describes X-faces and has the
+associated tools mentioned below, at
+`http://ftp.cs.indiana.edu/pub/faces/'.
+
+   Then the steps are
+
+  1. Create 48x48x1 bitmap with your favorite tool
+
+  2. Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc.,
+     and then compile the face.
+
+  3.      cat file.xbm | xbm2ikon |compface > file.face
+
+  4. Then be sure to quote things that are necessary for emacs strings:
+
+          cat ./file.face | sed 's/\\/\\\\/g'
+          | sed 's/\"/\\\"/g' > ./file.face.quoted
+
+  5. Then set up emacs to include the file as a mail header - there
+     were a couple of suggestions here--either something like:
+
+          (setq  mail-default-headers
+                 "X-Face:  <Ugly looking text string here>")
+
+     Or, alternatively, as:
+
+          (defun mail-insert-x-face ()
+            (save-excursion
+              (goto-char (point-min))
+              (search-forward mail-header-separator)
+              (beginning-of-line)
+              (insert "X-Face:")
+              (insert-file-contents "~/.face")))
+
+          (add-hook 'mail-setup-hook 'mail-insert-x-face)
+
+   However, 2 things might be wrong:
 
-Q2.0.1: Running XEmacs without installing
------------------------------------------
+   Some versions of pbmtoicon produces some header lines that is not
+expected by the version of compface that I grabbed. So I found I had to
+include a `tail +3' in the pipeline like this:
 
-   How can I just try XEmacs without installing it?
+     cat file.xbm | xbm2ikon | tail +3 |compface > file.face
 
-   XEmacs will run in place without requiring installation and copying
-of the Lisp directories, and without having to specify a special
-build-time flag.  It's the copying of the Lisp directories that
-requires so much space.  XEmacs is largely written in Lisp.
+   Some people have also found that if one uses the `(insert-file)'
+method, one should NOT quote the face string using the sed script .
 
-   A good method is to make a shell alias for xemacs:
+   It might also be helpful to use Stig's <stig@hackvan.com> script
+xbm2face (included in the compface distribution at XEmacs.org) to do the
+conversion.
 
-     alias xemacs=/i/xemacs-20.2/src/xemacs
+   Contributors for this item:
 
-   (You will obviously use whatever directory you downloaded the source
-tree to instead of `/i/xemacs-20.2').
+   Paul Emsley, Ricardo Marek, Amir J. Katz, Glen McCort, Heinz Uphoff,
+Peter Arius, Paul Harrison, and Vegard Vesterheim
 
-   This will let you run XEmacs without massive copying.
+6.1: Reading Mail with VM
+=========================
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.2,  Next: Q2.0.3,  Prev: Q2.0.1,  Up: Installation
+File: xemacs-faq.info,  Node: Q6.1.1,  Next: Q6.1.2,  Prev: Q6.0.11,  Up: Internet
 
-Q2.0.2: XEmacs is too big
--------------------------
+Q6.1.1: How do I set up VM to retrieve mail from a remote site using POP?
+-------------------------------------------------------------------------
 
-   The space required by the installation directories can be reduced
-dramatically if desired.  Gzip all the .el files.  Remove all the
-packages you'll never want to use.  Remove the TexInfo manuals.  Remove
-the Info (and use just hardcopy versions of the manual).  Remove most
-of the stuff in etc.  Remove or gzip all the source code.  Gzip or
-remove the C source code.  Configure it so that copies are not made of
-the support lisp.
+Use `vm-spool-files', like this for example:
 
-   These are all Emacs Lisp source code and bytecompiled object code.
-You may safely gzip everything named *.el here.  You may remove any
-package you don't use.  _Nothing bad will happen if you delete a package
-that you do not use_.  You must be sure you do not use it though, so be
-conservative at first.
+     (setq vm-spool-files '("/var/spool/mail/wing"
+                            "netcom23.netcom.com:110:pass:wing:MYPASS"))
 
-   Possible candidates for deletion include w3, games, hyperbole, mh-e,
-hm-html-menus, vm, viper, oobr, gnus, etc.  Ask yourself, _Do I ever
-want to use this package?_  If the answer is no, then it is a candidate
-for removal.
+   Of course substitute your actual password for MYPASS.
 
-   First, gzip all the .el files.  Then go about package by package and
-start gzipping the .elc files.  Then run XEmacs and do whatever it is
-you normally do.  If nothing bad happens, then delete the directory.  Be
-conservative about deleting directories, and it would be handy to have a
-backup around in case you get too zealous.
+\1f
+File: xemacs-faq.info,  Node: Q6.1.2,  Next: Q6.1.3,  Prev: Q6.1.1,  Up: Internet
+
+Q6.1.2: How can I get VM to automatically check for new mail?
+-------------------------------------------------------------
+
+John Turner <turner@lanl.gov> writes:
+
+     Use the following:
+
+          (setq vm-auto-get-new-mail 60)
+
+\1f
+File: xemacs-faq.info,  Node: Q6.1.3,  Next: Q6.1.4,  Prev: Q6.1.2,  Up: Internet
+
+Q6.1.3: I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
+---------------------------------------------------------------------------------------------------------------------
+
+Set `vm-reply-ignored-addresses' to a list, like
+
+     (setq vm-reply-ignored-addresses
+           '("wing@nuspl@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
+             "wing@netcom.com" "wing@xemacs.org"))
+
+   Note that each string is a regular expression.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.1.4,  Next: Q6.1.5,  Prev: Q6.1.3,  Up: Internet
+
+Q6.1.4: Is there a mailing list or FAQ for VM?
+----------------------------------------------
+
+A FAQ for VM exists at `http://www.wonderworks.com/vm/FAQ.html'.
+
+   VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.1.5,  Next: Q6.1.6,  Prev: Q6.1.4,  Up: Internet
+
+Q6.1.5: How do I make VM stay in a single frame?
+------------------------------------------------
+
+John.John S Cooper <Cooper@Eng.Sun.COM> writes:
+
+                                                  ; Don't use multiple frames
+          (setq vm-frame-per-composition nil)
+          (setq vm-frame-per-folder nil)
+          (setq vm-frame-per-edit nil)
+          (setq vm-frame-per-summary nil)
+
+\1f
+File: xemacs-faq.info,  Node: Q6.1.6,  Next: Q6.2.1,  Prev: Q6.1.5,  Up: Internet
+
+Q6.1.6: Customization of VM not covered in the manual, or here.
+---------------------------------------------------------------
+
+giacomo boffi <boffi@hp735.stru.polimi.it> writes:
+
+     The meta-answer is to look into the file `vm-vars.el', in the vm
+     directory of the lisp library.
+
+     `vm-vars.el' contains, initializes and carefully describes, with
+     examples of usage, the plethora of user options that _fully_
+     control VM's behavior.
+
+     Enter vm-vars, `forward-search' for toolbar, find the variables
+     that control the toolbar placement, appearance, existence, copy to
+     your `init.el' or `.vm' and modify according to the detailed
+     instructions.
+
+     The above also applies to all the various features of VM: search
+     for some keywords, maybe the first you conjure isn't appropriate,
+     find the appropriate variables, copy and experiment.
+
+6.2: Reading Netnews and Mail with Gnus
+=======================================
+
+\1f
+File: xemacs-faq.info,  Node: Q6.2.1,  Next: Q6.2.2,  Prev: Q6.1.6,  Up: Internet
+
+Q6.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+--------------------------------------------------------------------------------
+
+The Gnus numbering issues are not meant for mere mortals to know them.
+If you feel you _must_ enter the muddy waters of Gnus, visit the
+excellent FAQ, maintained by Justin Sheehy, at:
+
+     `http://my.gnus.org/FAQ/'
+
+   See also Gnus home page
+     `http://www.gnus.org/'
+
+\1f
+File: xemacs-faq.info,  Node: Q6.2.2,  Next: Q6.3.1,  Prev: Q6.2.1,  Up: Internet
+
+Q6.2.2: How do I make Gnus stay within a single frame?
+------------------------------------------------------
+
+The toolbar code to start Gnus opens the new frame--and it's a feature
+rather than a bug.  If you don't like it, but would still like to click
+on the seemly icon, use the following code:
+
+     (defun toolbar-news ()
+       (gnus))
+
+   It will redefine the callback function of the icon to just call
+`gnus', without all the fancy frame stuff.
+
+6.3: FTP Access
+===============
+
+\1f
+File: xemacs-faq.info,  Node: Q6.3.1,  Next: Q6.3.2,  Prev: Q6.2.2,  Up: Internet
+
+Q6.3.1: Can I edit files on other hosts?
+----------------------------------------
+
+Yes.  Of course XEmacs can use any network file system (such as NFS or
+Windows file sharing) you have available, and includes some
+optimizations and safety features appropriate to those environments.
+
+   It is also possible to transparently edit files via FTP, ssh, or
+rsh.  That is, XEmacs makes a local copy using the transport in the
+background, and automatically refreshes the remote original from that
+copy when you save it.  XEmacs also is capable of doing file system
+manipulations like creating and removing directories and files.  The
+FTP interface is provided by the standard `efs' package *Note EFS:
+(efs)Top.  The ssh/rsh interface is provided by the optional `tramp'
+package *Note TRAMP: (tramp)Top.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.3.2,  Next: Q6.4.1,  Prev: Q6.3.1,  Up: Internet
+
+Q6.3.2: What is EFS?
+--------------------
+
+#### Write me.
+
+6.4: Web Browsing with W3
+=========================
+
+\1f
+File: xemacs-faq.info,  Node: Q6.4.1,  Next: Q6.4.2,  Prev: Q6.3.2,  Up: Internet
+
+Q6.4.1: What is W3?
+-------------------
+
+W3 is an advanced graphical browser written in Emacs lisp that runs on
+XEmacs.  It has full support for cascaded style sheets, and more...
+
+   It has a home web page at
+`http://www.cs.indiana.edu/elisp/w3/docs.html'.
+
+\1f
+File: xemacs-faq.info,  Node: Q6.4.2,  Next: Q6.4.3,  Prev: Q6.4.1,  Up: Internet
+
+Q6.4.2: How do I run W3 from behind a firewall?
+-----------------------------------------------
+
+There is a long, well-written, detailed section in the W3 manual that
+describes how to do this.  Look in the section entitled "Firewalls".
+
+\1f
+File: xemacs-faq.info,  Node: Q6.4.3,  Prev: Q6.4.2,  Up: Internet
+
+Q6.4.3: Is it true that W3 supports style sheets and tables?
+------------------------------------------------------------
+
+Yes, and much more.  W3, as distributed with the latest XEmacs is a
+full-featured web browser.
+
+\1f
+File: xemacs-faq.info,  Node: Advanced,  Next: Other Packages,  Prev: Internet,  Up: Top
+
+7 Advanced Customization Using XEmacs Lisp
+******************************************
+
+This is part 7 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to advanced customization using XEmacs Lisp.
+
+* Menu:
+
+7.0: Emacs Lisp and `init.el'
+* Q7.0.1::    What version of Emacs am I running?
+* Q7.0.2::    How can I evaluate Emacs-Lisp expressions?
+* Q7.0.3::    `(setq tab-width 6)' behaves oddly.
+* Q7.0.4::    How can I add directories to the `load-path'?
+* Q7.0.5::    How to check if a lisp function is defined?
+* Q7.0.6::    Can I force the output of `(face-list)' to a buffer?
+
+7.1: Emacs Lisp Programming Techniques
+* Q7.1.1::    What is the difference in key sequences between XEmacs and GNU Emacs?
+* Q7.1.2::    Can I generate "fake" keyboard events?
+* Q7.1.3::    Could you explain `read-kbd-macro' in more detail?
+* Q7.1.4::    What is the performance hit of `let'?
+* Q7.1.5::    What is the recommended use of `setq'?
+* Q7.1.6::    What is the typical misuse of `setq'?
+* Q7.1.7::    I like the `do' form of cl, does it slow things down?
+* Q7.1.8::    I like recursion, does it slow things down?
+* Q7.1.9::    How do I put a glyph as annotation in a buffer?
+* Q7.1.10::   `map-extents' won't traverse all of my extents!
+* Q7.1.11::   My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
+
+7.2: Mathematics
+* Q7.2.1::    What are bignums, ratios, and bigfloats in Lisp?
+* Q7.2.2::    XEmacs segfaults when I use very big numbers!
+* Q7.2.3::    Bignums are really slow!
+* Q7.2.4::    Equal bignums don't compare as equal!  What gives?
+
+7.0: Emacs Lisp and `init.el'
+=============================
+
+\1f
+File: xemacs-faq.info,  Node: Q7.0.1,  Next: Q7.0.2,  Prev: Advanced,  Up: Advanced
+
+Q7.0.1: What version of Emacs am I running?
+-------------------------------------------
+
+How can `init.el' determine which of the family of Emacsen I am using?
+
+   To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
+XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
+example given in `etc/sample.init.el' (`etc/sample.emacs' in XEmacs
+versions prior to 21.4).  There are other nifty things in there as well!
+
+   For all new code, all you really need to do is:
+
+     (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
+
+\1f
+File: xemacs-faq.info,  Node: Q7.0.2,  Next: Q7.0.3,  Prev: Q7.0.1,  Up: Advanced
+
+Q7.0.2: How can I evaluate Emacs-Lisp expressions?
+--------------------------------------------------
+
+I know I can evaluate Elisp expressions from `*scratch*' buffer with
+`C-j' after the expression.  How do I do it from another buffer?
+
+   Press `M-:' (the default binding of `eval-expression'), and enter
+the expression to the minibuffer.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.0.3,  Next: Q7.0.4,  Prev: Q7.0.2,  Up: Advanced
+
+Q7.0.3: `(setq tab-width 6)' behaves oddly.
+-------------------------------------------
+
+If you put `(setq tab-width 6)' in your `init.el' file it does not
+work!  Is there a reason for this?  If you do it at the EVAL prompt it
+works fine!! How strange.
+
+   Use `setq-default' instead, since `tab-width' is all-buffer-local.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.0.4,  Next: Q7.0.5,  Prev: Q7.0.3,  Up: Advanced
+
+Q7.0.4: How can I add directories to the `load-path'?
+-----------------------------------------------------
+
+Here are two ways to do that, one that puts your directories at the
+front of the load-path, the other at the end:
 
-   `prim', `modes', `packages', and `utils' are four directories you
-definitely do *not* want to delete, although certain packages can be
-removed from them if you do not use them.
+     ;;; Add things at the beginning of the load-path, do not add
+     ;;; duplicate directories:
+     (pushnew "bar" load-path :test 'equal)
 
-   Online texinfo sources in the `info' can either be compressed them
-or remove them.  In either case, `C-h i' (info mode) will no longer
-work.
+     (pushnew "foo" load-path :test 'equal)
+
+     ;;; Add things at the end, unconditionally
+     (setq load-path (nconc load-path '("foo" "bar")))
+
+   keith (k.p.) hanlan <keithh@nortel.ca> writes:
+
+     To add directories using Unix shell metacharacters use
+     `expand-file-name' like this:
+
+          (push (expand-file-name "~keithh/.emacsdir") load-path)
+
+\1f
+File: xemacs-faq.info,  Node: Q7.0.5,  Next: Q7.0.6,  Prev: Q7.0.4,  Up: Advanced
+
+Q7.0.5: How to check if a lisp function is defined?
+---------------------------------------------------
+
+Use the following elisp:
+
+     (fboundp 'foo)
+
+   It's almost always a mistake to test `emacs-version' or any similar
+variables.
+
+   Instead, use feature-tests, such as `featurep', `boundp', `fboundp',
+or even simple behavioral tests, eg.:
+
+     (defvar foo-old-losing-code-p
+       (condition-case nil (progn (losing-code t) nil)
+         (wrong-number-of-arguments t)))
+
+   There is an incredible amount of broken code out there which could
+work much better more often in more places if it did the above instead
+of trying to divine its environment from the value of one variable.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.0.6,  Next: Q7.1.1,  Prev: Q7.0.5,  Up: Advanced
+
+Q7.0.6: Can I force the output of `(face-list)' to a buffer?
+------------------------------------------------------------
+
+It would be good having it in a buffer, as the output of `(face-list)'
+is too wide to fit to a minibuffer.
+
+   Evaluate the expression in the `*scratch*' buffer with point after
+the rightmost paren and typing `C-j'.
+
+   If the minibuffer smallness is the only problem you encounter, you
+can simply press `C-h l' to get the former minibuffer contents in a
+buffer.
+
+7.1: Emacs Lisp Programming Techniques
+======================================
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.1,  Next: Q7.1.2,  Prev: Q7.0.6,  Up: Advanced
+
+Q7.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
+-----------------------------------------------------------------------------
+
+Erik Naggum <clerik@naggum.no> writes;
+
+     Emacs has a legacy of keyboards that produced characters with
+     modifier bits, and therefore map a variety of input systems into
+     this scheme even today.  XEmacs is instead optimized for X events.
+     This causes an incompatibility in the way key sequences are
+     specified, but both Emacs and XEmacs will accept a key sequence as
+     a vector of lists of modifiers that ends with a key, e.g., to bind
+     `M-C-a', you would say `[(meta control a)]' in both Emacsen.
+     XEmacs has an abbreviated form for a single key, just (meta
+     control a).  Emacs has an abbreviated form for the Control and the
+     Meta modifiers to string-characters (the ASCII characters), as in
+     `\M-\C-a'.  XEmacs users need to be aware that the abbreviated
+     form works only for one-character key sequences, while Emacs users
+     need to be aware that the string-character is rather limited.
+     Specifically, the string-character can accommodate only 256
+     different values, 128 of which have the Meta modifier and 128 of
+     which have not.  In each of these blocks, only 32 characters have
+     the Control modifier.  Whereas `[(meta control A)]' differs from
+     `[(meta control a)]' because the case differs, `\M-\C-a' and
+     `\M-\C-A' do not.  Programmers are advised to use the full common
+     form, both because it is more readable and less error-prone, and
+     because it is supported by both Emacsen.
+
+   Another (even safer) way to be sure of the key-sequences is to use
+the `read-kbd-macro' function, which takes a string like `C-c <up>',
+and converts it to the internal key representation of the Emacs you
+use.  The function is available both on XEmacs and GNU Emacs.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.2,  Next: Q7.1.3,  Prev: Q7.1.1,  Up: Advanced
+
+Q7.1.2: Can I generate "fake" keyboard events?
+----------------------------------------------
+
+I wonder if there is an interactive function that can generate "fake"
+keyboard events.  This way, I could simply map them inside XEmacs.
+
+   This seems to work:
+
+     (defun cg--generate-char-event (ch)
+       "Generate an event, as if ch has been typed"
+       (dispatch-event (character-to-event ch)))
+
+     ;;  Backspace and Delete stuff
+     (global-set-key [backspace]
+       (lambda () (interactive) (cg--generate-char-event 127)))
+     (global-set-key [unknown_keysym_0x4]
+       (lambda () (interactive) (cg--generate-char-event 4)))
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.3,  Next: Q7.1.4,  Prev: Q7.1.2,  Up: Advanced
+
+Q7.1.3: Could you explain `read-kbd-macro' in more detail?
+----------------------------------------------------------
+
+The `read-kbd-macro' function returns the internal Emacs representation
+of a human-readable string (which is its argument).  Thus:
+
+     (read-kbd-macro "C-c C-a")
+     => [(control ?c) (control ?a)]
+
+     (read-kbd-macro "C-c C-. <up>")
+     => [(control ?c) (control ?.) up]
+
+   In GNU Emacs the same forms will be evaluated to what GNU Emacs
+understands internally--the sequences `"\C-x\C-c"' and `[3 67108910
+up]', respectively.
+
+   The exact "human-readable" syntax is defined in the docstring of
+`edmacro-mode'.  I'll repeat it here, for completeness.
+
+     Format of keyboard macros during editing:
+
+     Text is divided into "words" separated by whitespace.  Except for
+     the words described below, the characters of each word go directly
+     as characters of the macro.  The whitespace that separates words is
+     ignored.  Whitespace in the macro must be written explicitly, as in
+     `foo <SPC> bar <RET>'.
+
+        * The special words `RET', `SPC', `TAB', `DEL', `LFD', `ESC',
+          and `NUL' represent special control characters.  The words
+          must be written in uppercase.
+
+        * A word in angle brackets, e.g., `<return>', `<down>', or
+          `<f1>', represents a function key.  (Note that in the standard
+          configuration, the function key `<return>' and the control key
+          <RET> are synonymous.)  You can use angle brackets on the
+          words <RET>, <SPC>, etc., but they are not required there.
+
+        * Keys can be written by their ASCII code, using a backslash
+          followed by up to six octal digits.  This is the only way to
+          represent keys with codes above \377.
+
+        * One or more prefixes `M-' (meta), `C-' (control), `S-'
+          (shift), `A-' (alt), `H-' (hyper), and `s-' (super) may
+          precede a character or key notation.  For function keys, the
+          prefixes may go inside or outside of the brackets: `C-<down>'
+          == `<C-down>'.  The prefixes may be written in any order:
+          `M-C-x' == `C-M-x'.
+
+          Prefixes are not allowed on multi-key words, e.g., `C-abc',
+          except that the Meta prefix is allowed on a sequence of
+          digits and optional minus sign: `M--123' == `M-- M-1 M-2 M-3'.
+
+        * The `^' notation for control characters also works: `^M' ==
+          `C-m'.
+
+        * Double angle brackets enclose command names: `<<next-line>>'
+          is shorthand for `M-x next-line <RET>'.
+
+        * Finally, `REM' or `;;' causes the rest of the line to be
+          ignored as a comment.
+
+     Any word may be prefixed by a multiplier in the form of a decimal
+     number and `*': `3*<right>' == `<right> <right> <right>', and
+     `10*foo' == `foofoofoofoofoofoofoofoofoofoo'.
+
+     Multiple text keys can normally be strung together to form a word,
+     but you may need to add whitespace if the word would look like one
+     of the above notations: `; ; ;' is a keyboard macro with three
+     semicolons, but `;;;' is a comment.  Likewise, `\ 1 2 3' is four
+     keys but `\123' is a single key written in octal, and `< right >'
+     is seven keys but `<right>' is a single function key.  When in
+     doubt, use whitespace.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.4,  Next: Q7.1.5,  Prev: Q7.1.3,  Up: Advanced
+
+Q7.1.4: What is the performance hit of `let'?
+---------------------------------------------
+
+In most cases, not noticeable.  Besides, there's no avoiding `let'--you
+have to bind your local variables, after all.  Some pose a question
+whether to nest `let's, or use one `let' per function.  I think because
+of clarity and maintenance (and possible future implementation),
+`let'-s should be used (nested) in a way to provide the clearest code.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.5,  Next: Q7.1.6,  Prev: Q7.1.4,  Up: Advanced
+
+Q7.1.5: What is the recommended use of `setq'?
+----------------------------------------------
+
+   * Global variables
+
+     You will typically `defvar' your global variable to a default
+     value, and use `setq' to set it later.
+
+     It is never a good practice to `setq' user variables (like
+     `case-fold-search', etc.), as it ignores the user's choice
+     unconditionally.  Note that `defvar' doesn't change the value of a
+     variable if it was bound previously.  If you wish to change a
+     user-variable temporarily, use `let':
+
+          (let ((case-fold-search nil))
+            ...                                   ; code with searches that must be case-sensitive
+            ...)
+
+     You will notice the user-variables by their docstrings beginning
+     with an asterisk (a convention).
+
+   * Local variables
+
+     Bind them with `let', which will unbind them (or restore their
+     previous value, if they were bound) after exiting from the `let'
+     form.  Change the value of local variables with `setq' or whatever
+     you like (e.g. `incf', `setf' and such).  The `let' form can even
+     return one of its local variables.
+
+     Typical usage:
+
+          ;; iterate through the elements of the list returned by
+          ;; `hairy-function-that-returns-list'
+          (let ((l (hairy-function-that-returns-list)))
+            (while l
+              ... do something with (car l) ...
+              (setq l (cdr l))))
+
+     Another typical usage includes building a value simply to work
+     with it.
+
+          ;; Build the mode keymap out of the key-translation-alist
+          (let ((inbox (file-truename (expand-file-name box)))
+                (i 0))
+            ... code dealing with inbox ...
+            inbox)
+
+     This piece of code uses the local variable `inbox', which becomes
+     unbound (or regains old value) after exiting the form.  The form
+     also returns the value of `inbox', which can be reused, for
+     instance:
+
+          (setq foo-processed-inbox
+                (let .....))
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.6,  Next: Q7.1.7,  Prev: Q7.1.5,  Up: Advanced
+
+Q7.1.6: What is the typical misuse of `setq'?
+---------------------------------------------
+
+A typical misuse is probably `setq'ing a variable that was meant to be
+local.  Such a variable will remain bound forever, never to be
+garbage-collected.  For example, the code doing:
+
+     (defun my-function (whatever)
+       (setq a nil)
+       ... build a large list ...
+       ... and exit ...)
+
+   does a bad thing, as `a' will keep consuming memory, never to be
+unbound.  The correct thing is to do it like this:
+
+     (defun my-function (whatever)
+       (let (a)                              ; default initialization is to nil
+         ... build a large list ...
+         ... and exit, unbinding `a' in the process  ...)
+
+   Not only is this prettier syntactically, but it makes it possible for
+Emacs to garbage-collect the objects which `a' used to reference.
+
+   Note that even global variables should not be `setq'ed without
+`defvar'ing them first, because the byte-compiler issues warnings.  The
+reason for the warning is the following:
+
+     (defun flurgoze nil)                    ; ok, global internal variable
+     ...
+
+     (setq flurghoze t)                      ; ops!  a typo, but semantically correct.
+                                             ; however, the byte-compiler warns.
+
+     While compiling toplevel forms:
+     ** assignment to free variable flurghoze
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.7,  Next: Q7.1.8,  Prev: Q7.1.6,  Up: Advanced
+
+Q7.1.7: I like the `do' form of cl, does it slow things down?
+-------------------------------------------------------------
+
+It shouldn't.  Here is what Dave Gillespie has to say about cl.el
+performance:
+
+     Many of the advanced features of this package, such as `defun*',
+     `loop', and `setf', are implemented as Lisp macros.  In
+     byte-compiled code, these complex notations will be expanded into
+     equivalent Lisp code which is simple and efficient.  For example,
+     the forms
+
+          (incf i n)
+          (push x (car p))
+
+     are expanded at compile-time to the Lisp forms
+
+          (setq i (+ i n))
+          (setcar p (cons x (car p)))
+
+     which are the most efficient ways of doing these respective
+     operations in Lisp.  Thus, there is no performance penalty for
+     using the more readable `incf' and `push' forms in your compiled
+     code.
+
+     _Interpreted_ code, on the other hand, must expand these macros
+     every time they are executed.  For this reason it is strongly
+     recommended that code making heavy use of macros be compiled.  (The
+     features labelled "Special Form" instead of "Function" in this
+     manual are macros.)  A loop using `incf' a hundred times will
+     execute considerably faster if compiled, and will also
+     garbage-collect less because the macro expansion will not have to
+     be generated, used, and thrown away a hundred times.
+
+     You can find out how a macro expands by using the `cl-prettyexpand'
+     function.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.8,  Next: Q7.1.9,  Prev: Q7.1.7,  Up: Advanced
+
+Q7.1.8: I like recursion, does it slow things down?
+---------------------------------------------------
+
+Yes.  The Emacs byte-compiler cannot do much to optimize recursion.  But
+think well whether this is a real concern in Emacs.  Much of the Emacs
+slowness comes from internal mechanisms such as redisplay, or from the
+fact that it is an interpreter.
+
+   Please try not to make your code much uglier to gain a very small
+speed gain.  It's not usually worth it.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.9,  Next: Q7.1.10,  Prev: Q7.1.8,  Up: Advanced
+
+Q7.1.9: How do I put a glyph as annotation in a buffer?
+-------------------------------------------------------
+
+Here is a solution that will insert the glyph annotation at the
+beginning of buffer:
+
+     (make-annotation (make-glyph '([FORMAT :file FILE]
+                                    [string :data "fallback-text"]))
+                      (point-min)
+                      'text
+                      (current-buffer))
+
+   Replace `FORMAT' with an unquoted symbol representing the format of
+the image (e.g. `xpm', `xbm', `gif', `jpeg', etc.)  Instead of `FILE',
+use the image file name (e.g.
+`/usr/local/lib/xemacs-21.4/etc/recycle.xpm').
+
+   You can turn this to a function (that optionally prompts you for a
+file name), and inserts the glyph at `(point)' instead of `(point-min)'.
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.10,  Next: Q7.1.11,  Prev: Q7.1.9,  Up: Advanced
+
+Q7.1.10: `map-extents' won't traverse all of my extents!
+--------------------------------------------------------
+
+I tried to use `map-extents' to do an operation on all the extents in a
+region.  However, it seems to quit after processing a random number of
+extents.  Is it buggy?
+
+   No.  The documentation of `map-extents' states that it will iterate
+across the extents as long as FUNCTION returns `nil'.  Unexperienced
+programmers often forget to return `nil' explicitly, which results in
+buggy code.  For instance, the following code is supposed to delete all
+the extents in a buffer, and issue as many `fubar!' messages.
+
+     (map-extents (lambda (ext ignore)
+                    (delete-extent ext)
+                    (message "fubar!")))
+
+   Instead, it will delete only the first extent, and stop right there -
+because `message' will return a non-nil value.  The correct code is:
+
+     (map-extents (lambda (ext ignore)
+                    (delete-extent ext)
+                    (message "fubar!")
+                    nil))
+
+\1f
+File: xemacs-faq.info,  Node: Q7.1.11,  Next: Q7.2.1,  Prev: Q7.1.10,  Up: Advanced
+
+Q7.1.11: My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
+---------------------------------------------------------------------------------------------------
+
+Hrvoje Niksic <hniksic@xemacs.org> writes:
+
+     Under XEmacs 20.4 and later you can use `M-x profile-key-sequence',
+     press a key (say <RET> in the Gnus Group buffer), and get the
+     results using `M-x profile-results'.  It should give you an idea of
+     where the time is being spent.
+
+7.2: Mathematics
+================
+
+\1f
+File: xemacs-faq.info,  Node: Q7.2.1,  Next: Q7.2.2,  Prev: Q7.1.11,  Up: Advanced
+
+Q7.2.1: What are bignums, ratios, and bigfloats in Lisp?
+--------------------------------------------------------
+
+Thanks to Jerry James <james@xemacs.org>, XEmacs 21.5.18 and later can
+use the capabilities of multiple-precision libraries that may be
+available for your platform.  The GNU Multiple Precision (GMP) and BSD
+Multiple Precision (MP) libraries are partially supported.  GMP gives
+you "bignums" (arbitrary precision integers), "ratios" (arbitrary
+precision fractions), and "bigfloats" (arbitrary precision floating
+point numbers).  GNU MP is better-supported by XEmacs at the time of
+writing (2004-04-06).  BSD MP support does not include ratios or
+bigfloats, and it throws errors that aren't understood.
+
+   In most cases, bignum support should be transparent to users and Lisp
+programmers.  A bignum-enabled XEmacs will automatically convert from
+fixnums to bignums and back in pure integer arithmetic, and for GNU MP,
+from floats to bigfloats.  (Bigfloats must be explicitly coerced to
+other types, even if they are exactly representable by less precise
+types.)  The Lisp reader and printer have been enhanced to handle
+bignums, as have the mathematical functions.  Rationals (fixnums,
+bignums, and ratios) are printed using the `%d', `%o', `%x', and `%u'
+format conversions.  The read syntax for ratios is `3/5'.
+
+   User-visible changes in behavior include (in probable order of
+annoyance)
+
+   * Arithmetic can cause a segfault, depending on your MP library
+     *Note XEmacs segfaults when I use very big numbers!: Q7.2.2.
+
+   * Terminology is not Common-Lisp-conforming.  For example, "integer"
+     for Emacs Lisp means what Common Lisp calls "fixnum".  This issue
+     is being investigated, but the use of "integer" for fixnum is
+     pervasive and may cause backward-compatibility and
+     GNU-Emacs-compatibility problems.
+
+   * Many operations that used to cause a range error now succeed, with
+     intermediate results and return values coerced to bignums as
+     needed.
+
+   * An atom with ratio read syntax now returns a number, not a symbol.
+
+   * The `%u' format conversion will now give an error if its argument
+     is negative.  (Without MP, it prints a number which Lisp can't
+     read.)
+
+   _Surgeon General's Warning_: The automatic conversions cannot be
+disabled at runtime.  New functions have been added which produce
+ratios, so there should be few surprises with type conflicts, but they
+can't be ruled out.  "Arbitrary" precision means precisely what it
+says.  If you work with extremely large numbers, your machine may
+arbitrarily decide to hand you an unpleasant surprise rather than a
+bignum *Note XEmacs segfaults when I use very big numbers!: Q7.2.2.
+
+   To configure with GNU MP, add `--use-number-lib=gmp'
+(`--enable-bignum=gmp' in 21.5 or later) to your invocation of
+`configure'.  For BSD MP, use `--use-number-lib=mp'
+(`--enable-bignum=mp' for 21.5).
+
+   If you would like to help with bignum support, especially on BSD MP,
+please subscribe to the XEmacs Beta mailing list
+(http://www.xemacs.org/Lists/#xemacs-beta), and book up on
+`number-gmp.h' and `number-mp.h'.  Jerry has promised to write
+internals documentation eventually, but if your skills run more to
+analysis and documentation than to writing new code, feel free to fill
+in the gap!
 
index 256d1ad..78554cb 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.8 from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -7,1302 +7,808 @@ START-INFO-DIR-ENTRY
 END-INFO-DIR-ENTRY
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.3,  Next: Q2.0.4,  Prev: Q2.0.2,  Up: Installation
+File: xemacs-faq.info,  Node: Q7.2.2,  Next: Q7.2.3,  Prev: Q7.2.1,  Up: Advanced
 
-Q2.0.3: Compiling XEmacs with Netaudio.
----------------------------------------
-
-   What is the best way to compile XEmacs with the netaudio system,
-since I have got the netaudio system compiled but installed at a weird
-place, I am not root.  Also in the READMEs it does not say anything
-about compiling with the audioserver?
-
-   You should only need to add some stuff to the configure command line.
-To tell it to compile in netaudio support: `--with-sound=both', or
-`--with-sound=nas' if you don't want native sound support for some
-reason.) To tell it where to find the netaudio includes and libraries:
-
-     --site-libraries=WHATEVER
-     --site-includes=WHATEVER
-
-   Then (fingers crossed) it should compile and it will use netaudio if
-you have a server running corresponding to the X server. The netaudio
-server has to be there when XEmacs starts. If the netaudio server goes
-away and another is run, XEmacs should cope (fingers crossed, error
-handling in netaudio isn't perfect).
-
-   BTW, netaudio has been renamed as it has a name clash with something
-else, so if you see references to NAS or Network Audio System, it's the
-same thing.  It also might be found at
-`ftp://ftp.x.org/contrib/audio/nas/'.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.4,  Next: Q2.0.5,  Prev: Q2.0.3,  Up: Installation
-
-Q2.0.4: Problems with Linux and ncurses.
-----------------------------------------
-
-   On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with
-libc 5.2.18, XEmacs 20.0b20 is unable to open a tty device:
-
-     src/xemacs -nw -q
-     Initialization error:
-     Terminal type `xterm' undefined (or can't access database?)
-
-   Ben Wing <ben@xemacs.org> writes:
-
-     Your ncurses configuration is messed up.  Your /usr/lib/terminfo
-     is a bad pointer, perhaps to a CD-ROM that is not inserted.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.5,  Next: Q2.0.6,  Prev: Q2.0.4,  Up: Installation
+Q7.2.2: XEmacs segfaults when I use very big numbers!
+-----------------------------------------------------
 
-Q2.0.5: Do I need X11 to run XEmacs?
-------------------------------------
+GMP by default allocates temporaries on the stack.  If you run out of
+stack space, you're dead; there is no way that we know of to reliably
+detect this condition, because `alloca' is typically implemented to be
+_fast_ rather than robust.  If you just need a little more oomph, use a
+bigger stack (_e.g._, the `ulimit -s' command in bash(1)).  If you want
+robustness at the cost of speed, configure GMP with `--disable-alloca'
+and rebuild the GMP library.
 
-   No.  The name "XEmacs" is unfortunate in the sense that it is *not*
-an X Window System-only version of Emacs.  XEmacs has full color
-support on a color-capable character terminal.
+   We do not know whether BSD MP uses `alloca' or not.  Please send any
+information you have as a bug report (`M-x report-xemacs-bug <RET>'),
+which will give us platform information.  (We do know that BSD MP
+implementations vary across vendors, but how much, we do not know yet.)
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.6,  Next: Q2.0.7,  Prev: Q2.0.5,  Up: Installation
+File: xemacs-faq.info,  Node: Q7.2.3,  Next: Q7.2.4,  Prev: Q7.2.2,  Up: Advanced
 
-Q2.0.6: I'm having strange crashes.  What do I do?
---------------------------------------------------
+Q7.2.3: Bignums are really slow!
+--------------------------------
 
-   There have been a variety of reports of crashes due to compilers with
-buggy optimizers.  Please see the `PROBLEMS' file that comes with
-XEmacs to read what it says about your platform.
+Many Linux distributions compile all their packages for the i386, and
+this is costly.  An optimized version can give you two or three orders
+of magnitude better performance for a Pentium III or IV.  (Yes, really.
+See `http://www.swox.com/gmp/gmp-speed.html'.)
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.7,  Next: Q2.0.8,  Prev: Q2.0.6,  Up: Installation
+File: xemacs-faq.info,  Node: Q7.2.4,  Prev: Q7.2.3,  Up: Advanced
 
-Q2.0.7: Libraries in non-standard locations
--------------------------------------------
+Q7.2.4: Equal bignums don't compare as equal!  What gives?
+----------------------------------------------------------
 
-   I have x-faces, jpeg, xpm etc. all in different places.  I've tried
-space-separated, comma-separated, several -site-libraries, all to no
-avail.
+Ah, Grasshopper, I see you are using `(eq x y)'.  The Bodhisattva CLTL2
+warned of the illusion that equal numbers would be `eq'!  Meditate on
+the deeper truths of `eql', in which numbers of the same type which
+have equal values compare equal, and `=', which does any necessary type
+coercions before comparing for equality.
 
-     --site-libraries='/path/one /path/two /path/etc'
+   Yeah, yeah, it has always worked for integer types, because fixnums
+and characters have an immediate representation.  Sorry about that;
+arbitrary precision obviously requires consing new objects because the
+objects are "large" and of variable size, and the definition of `eq'
+does not permit different objects to compare as equal.
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.8,  Next: Q2.0.9,  Prev: Q2.0.7,  Up: Installation
-
-Q2.0.8: can't resolve symbol _h_errno
--------------------------------------
-
-   You are using the Linux/ELF distribution of XEmacs 19.14, and your
-ELF libraries are out of date.  You have the following options:
-
-  1. Upgrade your libc to at least 5.2.16 (better is 5.2.18, 5.3.12, or
-     5.4.10).
-
-  2. Patch the XEmacs binary by replacing all occurrences of
-     `_h_errno^@' with `h_errno^@^@'.  Any version of Emacs will
-     suffice.  If you don't understand how to do this, don't do it.
-
-  3. Rebuild XEmacs yourself--any working ELF version of libc should be
-     O.K.
-
-   Hrvoje Niksic <hniksic@xemacs.org> writes:
-
-     Why not use a Perl one-liner for No. 2?
+File: xemacs-faq.info,  Node: Other Packages,  Next: Current Events,  Prev: Advanced,  Up: Top
 
-          perl -pi -e 's/_h_errno\0/h_errno\0\0/g' \
-          /usr/local/bin/xemacs-19.14
+8 Other External Packages
+*************************
 
-     NB: You _must_ patch `/usr/local/bin/xemacs-19.14', and not
-     `xemacs' because `xemacs' is a link to `xemacs-19.14'; the Perl
-     `-i' option will cause unwanted side-effects if applied to a
-     symbolic link.
+This is part 8 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to miscellaneous external packages not covered
+elsewhere in XEmacs.
 
-   SL Baur <steve@xemacs.org> writes:
-
-     If you build against a recent libc-5.4 (late enough to have caused
-     problems earlier in the beta cycle) and then run with an earlier
-     version of libc, you get a
-
-          $ xemacs
-          xemacs: can't resolve symbol '__malloc_hook'
-          zsh: 7942 segmentation fault (core dumped)  xemacs
-
-     (Example binary compiled against libc-5.4.23 and run with
-     libc-5.4.16).
-
-     The solution is to upgrade to at least libc-5.4.23.  Sigh.  Drat.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.9,  Next: Q2.0.10,  Prev: Q2.0.8,  Up: Installation
-
-Q2.0.9: Where do I find external libraries?
--------------------------------------------
-
-   All external libraries used by XEmacs can be found at the XEmacs FTP
-site `ftp://ftp.xemacs.org/pub/xemacs/aux/'.
-
-   The canonical locations (at the time of this writing) are as follows:
-
-JPEG
-     `ftp://ftp.uu.net/graphics/jpeg/'.  Version 6a is current.
-
-XPM
-     `ftp://ftp.x.org/contrib/libraries/'.  Version 3.4j is current.
-     Older versions of this package are known to cause XEmacs crashes.
-
-TIFF
-     `ftp://ftp.sgi.com/graphics/tiff/'.  v3.4 is current.  The latest
-     beta is v3.4b035.  There is a HOWTO here.
+* Menu:
 
-PNG
-     `ftp://ftp.uu.net/graphics/png/'.  0.89c is current.  XEmacs
-     requires a fairly recent version to avoid using temporary files.
+8.0: TeX
+* Q8.0.1::    Is there something better than LaTeX mode?
+* Q8.0.2::    What is AUCTeX?  Where do you get it?
+* Q8.0.3::    Problems installing AUCTeX.
+* Q8.0.4::    How do I turn off current chapter from AUCTeX modeline?
 
-     `ftp://swrinde.nde.swri.edu/pub/png/src/'
+8.1: Other Unbundled Packages
+* Q8.1.1::    Is there a reason for an Emacs package not to be included in XEmacs?
+* Q8.1.2::    Are there any Emacs Lisp Spreadsheets?
+* Q8.1.3::    Is there a MatLab mode?
 
-Compface
-     `ftp://ftp.cs.indiana.edu/pub/faces/compface/'.  This library has
-     been frozen for about 6 years, and is distributed without version
-     numbers.  _It should be compiled with the same options that X11 was
-     compiled with on your system_.  The version of this library at
-     XEmacs.org includes the `xbm2xface.pl' script, written by
-     <stig@hackvan.com>, which may be useful when generating your own
-     xface.
+8.2: Environments Built Around XEmacs
+* Q8.2.1::    What are SPARCworks, EOS, and WorkShop?
+* Q8.2.2::    How do I start the Sun Workshop support in XEmacs 21?
+* Q8.2.3::    What is/was Energize?
+* Q8.2.4::    What is Infodock?
 
-NAS
-     `ftp://ftp.x.org/contrib/audio/nas/'.  Version 1.2p5 is current.
-     There is a FAQ here.
+8.0: TeX
+========
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.10,  Next: Q2.0.11,  Prev: Q2.0.9,  Up: Installation
-
-Q2.0.10: After I run configure I find a core dump, is something wrong?
-----------------------------------------------------------------------
+File: xemacs-faq.info,  Node: Q8.0.1,  Next: Q8.0.2,  Prev: Other Packages,  Up: Other Packages
 
-   Not necessarily.  If you have GNU sed 3.0 you should downgrade it to
-2.05.  From the `README' at prep.ai.mit.edu:
-
-     sed 3.0 has been withdrawn from distribution.  It has major
-     revisions, which mostly seem to be improvements; but it turns out
-     to have bugs too which cause trouble in some common cases.
+Q8.0.1: Is there something better than LaTeX mode?
+--------------------------------------------------
 
-     Tom Lord won't be able to work fixing the bugs until May.  So in
-     the mean time, we've decided to withdraw sed 3.0 from distribution
-     and make version 2.05 once again the recommended version.
+David Kastrup <dak@fsnif.neuroinformatik.ruhr-uni-bochum.de> writes:
 
-   It has also been observed that the vfork test on Solaris will leave a
-core dump.
+     The standard TeX modes leave much to be desired, and are somewhat
+     leniently maintained.  Serious TeX users use AUCTeX (*note What is
+     AUCTeX? Where do you get it?: Q8.0.2.).
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.11,  Next: Q2.0.12,  Prev: Q2.0.10,  Up: Installation
-
-Q2.0.11: XEmacs doesn't resolve hostnames.
-------------------------------------------
+File: xemacs-faq.info,  Node: Q8.0.2,  Next: Q8.0.3,  Prev: Q8.0.1,  Up: Other Packages
 
-   This is the result of a long-standing problem with SunOS and the fact
-that stock SunOS systems do not ship with DNS resolver code in libc.
+Q8.0.2: What is AUCTeX?  Where do you get it?
+---------------------------------------------
 
-   Christopher Davis <ckd@loiosh.kei.com> writes:
+AUCTeX is a complex and sophisticated editing package dedicated to TeX
+and related text formatting languages, including LaTeX and Texinfo.  It
+provides support for running TeX on a file or part of a file, include
+files, and of course shortcuts for entering common TeX macros, LaTeX
+environments, etc, and for fontlock.
 
-     That's correct [The SunOS 4.1.3 precompiled binaries don't do name
-     lookup].  Since Sun figured that everyone used NIS to do name
-     lookups (that DNS thing was apparently only a passing fad,
-     right?), the stock SunOS 4.x systems don't have DNS-based name
-     lookups in libc.
+   AUCTeX is a standard package provided by XEmacs.  You can get it as
+usual through the `M-x list-packages' interface.  It is also included
+in the (non-Mule) SUMO package.  The AUCTeX XEmacs package is
+maintained by Uwe Brauer <GET MAIL ADDRESS>.
 
-     This is also why Netscape ships two binaries for SunOS 4.1.x.
-
-     The best solution is to compile it yourself; the configure script
-     will check to see if you've put DNS in the shared libc and will
-     then proceed to link against the DNS resolver library code.
+   AUCTeX is extremely complicated, and its developers primarily use
+GNU Emacs.  Not all features of the bleeding edge version of AUCTeX are
+immediately ported to XEmacs; if you need these, you may be better off
+getting the most recent versions from the GNU AUCTeX project on
+`http://savannah.gnu.org'.
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.12,  Next: Q2.0.13,  Prev: Q2.0.11,  Up: Installation
-
-Q2.0.12: Why can't I strip XEmacs?
-----------------------------------
-
-   Richard Cognot <cognot@fronsac.ensg.u-nancy.fr> writes:
-
-     Because of the way XEmacs (and every other Emacsen, AFAIK) is
-     built. The link gives you a bare-boned emacs (called temacs).
-     temacs is then run, preloading some of the lisp files. The result
-     is then dumped into a new executable, named xemacs, which will
-     contain all of the preloaded lisp functions and data.
+File: xemacs-faq.info,  Node: Q8.0.3,  Next: Q8.0.4,  Prev: Q8.0.2,  Up: Other Packages
 
-     Now, during the dump itself, the executable (code+data+symbols) is
-     written on disk using a special unexec() function. This function is
-     obviously heavily system dependent. And on some systems, it leads
-     to an executable which, although valid, cannot be stripped without
-     damage. If memory serves, this is especially the case for AIX
-     binaries. On other architectures it might work OK.
+Q8.0.3: Problems installing AUCTeX.
+-----------------------------------
 
-     The Right Way to strip the emacs binary is to strip temacs prior to
-     dumping xemacs. This will always work, although you can do that
-     only if you install from sources (as temacs is `not' part of the
-     binary kits).
+Jan Vroonhof <vroonhof@math.ethz.ch> writes:
 
-   Nat Makarevitch <nat@nataa.fr.eu.org> writes:
+     AUCTeX works fine on both stock Emacs and XEmacs has been doing so
+     for a very very long time. This is mostly due to the work of Per
+     Abrahamsen <abraham@dina.kvl.dk> (clap clap) in particular his
+     `easymenu' package.  Which leads to what is probably the problem...
 
-     Here is the trick:
+   Most problems with AUCTeX are one of two things:
 
-       1. [ ./configure; make ]
+   * The TeX-lisp-directory in `tex-site.el' and the makefile don't
+     match.
 
-       2. rm src/xemacs
+     Fix: make sure you configure AUCTeX properly *before* installing.
 
-       3. strip src/temacs
+   * You have an old version of easymenu.el in your path.
 
-       4. make
-
-       5. cp src/xemacs /usr/local/bin/xemacs
-
-       6. cp lib-src/DOC-19.16-XEmacs
-          /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
-
-\1f
-File: xemacs-faq.info,  Node: Q2.0.13,  Next: Q2.0.14,  Prev: Q2.0.12,  Up: Installation
-
-Q2.0.13: I don't need no steenkin' packages.  Do I? (NEW)
----------------------------------------------------------
-
-   Strictly speaking, no.  XEmacs will build and install just fine
-without any packages installed.  However, only the most basic editing
-functions will be available with no packages installed, so installing
-packages is an essential part of making your installed XEmacs _useful_.
+     Fix: use `locate-library' and remove old versions to make sure it
+     *only* finds the one that came with XEmacs.
 
 \1f
-File: xemacs-faq.info,  Node: Q2.0.14,  Next: Q2.1.1,  Prev: Q2.0.13,  Up: Installation
+File: xemacs-faq.info,  Node: Q8.0.4,  Next: Q8.1.1,  Prev: Q8.0.3,  Up: Other Packages
 
-Q2.0.12: How do I figure out which packages to install? (NEW)
--------------------------------------------------------------
-
-   Many people really liked the old way that packages were bundled and
-do not want to mess with packages at all.  You can grab all the
-packages at once like you used to with old XEmacs versions.  Download
-the file
-
-   `xemacs-sumo.tar.gz'
+Q8.0.4: How do I turn off current chapter from AUCTeX modeline?
+---------------------------------------------------------------
 
-   For an XEmacs compiled with Mule you also need
+With AUCTeX, fast typing is hard because the current chapter, section
+etc. are given in the modeline.  How can I turn this off?
 
-   `xemacs-mule-sumo.tar.gz'
+   It's not AUCTeX, it comes from `func-menu' in `func-menu.el'.
 
-   from the `packages' directory on your XEmacs mirror archive.  N.B.
-They are called 'Sumo Tarballs' for good reason. They are currently
-about 15MB and 2.3MB (gzipped) respectively.
+   David Hughes <dhughes@origin-at.co.uk> writes:
 
-   Install them by
+     Try this; you'll still get the function name displayed in the
+     modeline, but it won't attempt to keep track when you modify the
+     file. To refresh when it gets out of synch, you simply need click
+     on the `Rescan Buffer' option in the function-menu.
 
-   `cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -'
+          (setq-default fume-auto-rescan-buffer-p nil)
 
-   See README.packages for more detailed installation instructions.
-
-   As the Sumo tarballs are not regenerated as often as the individual
-packages, it is recommended that you use the automatic package tools
-afterwards to pick up any recent updates.
+8.1: Other Unbundled Packages
+=============================
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.1,  Next: Q2.1.2,  Prev: Q2.0.14,  Up: Installation
-
-2.1: Trouble Shooting
-=====================
-
-Q2.1.1: Help!  XEmacs just crashed on me!
------------------------------------------
+File: xemacs-faq.info,  Node: Q8.1.1,  Next: Q8.1.2,  Prev: Q8.0.4,  Up: Other Packages
 
-   First of all, don't panic.  Whenever XEmacs crashes, it tries
-extremely hard to auto-save all of your files before dying.  (The main
-time that this will not happen is if the machine physically lost power
-or if you killed the XEmacs process using `kill -9').  The next time
-you try to edit those files, you will be informed that a more recent
-auto-save file exists.  You can use `M-x recover-file' to retrieve the
-auto-saved version of the file.
+Q8.1.1: Is there a reason for an Emacs package not to be included in XEmacs?
+----------------------------------------------------------------------------
 
-   You can use the command `M-x recover-session' after a crash to pick
-up where you left off.
+The reason for an Emacs package not to be included in XEmacs is usually
+one or more of the following:
 
-   Now, XEmacs is not perfect, and there may occasionally be times, or
-particular sequences of actions, that cause it to crash.  If you can
-come up with a reproducible way of doing this (or even if you have a
-pretty good memory of exactly what you were doing at the time), the
-maintainers would be very interested in knowing about it.  Post a
-message to comp.emacs.xemacs or send mail to <crashes@xemacs.org>.
-Please note that the `crashes' address is exclusively for crash reports.
+  1. The package has not been ported to XEmacs.  This will typically
+     happen when it uses GNU-Emacs-specific features, which make it
+     fail under XEmacs.
 
-   If at all possible, include a stack backtrace of the core dump that
-was produced.  This shows where exactly things went wrong, and makes it
-much easier to diagnose problems.  To do this, you need to locate the
-core file (it's called `core', and is usually sitting in the directory
-that you started XEmacs from, or your home directory if that other
-directory was not writable).  Then, go to that directory and execute a
-command like:
+     Porting a package to XEmacs can range from a trivial amount of
+     change to a partial or full rewrite.  Fortunately, the authors of
+     modern packages usually choose to support both Emacsen themselves.
 
-     gdb `which xemacs` core
+  2. The package has been decided not to be appropriate for XEmacs.  It
+     may have an equivalent or better replacement within XEmacs, in
+     which case the developers may choose not to burden themselves with
+     supporting an additional package.
 
-   and then issue the command `where' to get the stack backtrace.  You
-might have to use `dbx' or some similar debugger in place of `gdb'.  If
-you don't have any such debugger available, complain to your system
-administrator.
+     Each package bundled with XEmacs means more work for the
+     maintainers, whether they want it or not.  If you are ready to
+     take over the maintenance responsibilities for the package you
+     port, be sure to say so--we will more likely include it.
 
-   It's possible that a core file didn't get produced, in which case
-you're out of luck.  Go complain to your system administrator and tell
-him not to disable core files by default.  Also *Note Q2.1.15::, for
-tips and techniques for dealing with a debugger.
+  3. The package simply hasn't been noted by the XEmacs development.  If
+     that's the case, the messages like yours are very useful for
+     attracting our attention.
 
-   When making a problem report make sure that:
-
-  1. Report *all* of the information output by XEmacs during the crash.
-
-  2. You mention what O/S & Hardware you are running XEmacs on.
-
-  3. What version of XEmacs you are running.
-
-  4. What build options you are using.
-
-  5. If the problem is related to graphics, we will also need to know
-     what version of the X Window System you are running, and what
-     window manager you are using.
-
-  6. If the problem happened on a tty, please include the terminal type.
+  4. The package was noted by the developers, but they simply haven't
+     yet gotten around to including/porting it.  Wait for the next
+     release or, even better, offer your help.  It will be gladly
+     accepted and appreciated.
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.2,  Next: Q2.1.3,  Prev: Q2.1.1,  Up: Installation
-
-Q2.1.2: Cryptic Minibuffer messages.
-------------------------------------
-
-   When I try to use some particular option of some particular package,
-I get a cryptic error in the minibuffer.
-
-   If you can't figure out what's going on, select Options/General
-Options/Debug on Error from the Menubar and then try and make the error
-happen again.  This will give you a backtrace that may be enlightening.
-If not, try reading through this FAQ; if that fails, you could try
-posting to comp.emacs.xemacs (making sure to include the backtrace) and
-someone may be able to help.  If you can identify which Emacs lisp
-source file the error is coming from you can get a more detailed stack
-backtrace by doing the following:
-
-  1. Visit the .el file in an XEmacs buffer.
-
-  2. Issue the command `M-x eval-current-buffer'.
+File: xemacs-faq.info,  Node: Q8.1.2,  Next: Q8.1.3,  Prev: Q8.1.1,  Up: Other Packages
 
-  3. Reproduce the error.
+Q8.1.2: Are there any Emacs Lisp Spreadsheets?
+----------------------------------------------
 
-   Depending on the version of XEmacs, you may either select View->Show
-Message Log (recent versions), Edit->Show Messages (some earlier
-versions) or Help->Recent Keystrokes/Messages (other earlier versions)
-from the menubar to see the most recent messages.  This command is bound
-to `C-h l' by default.
+Yes.  Check out "dismal" (which stands for Dis' Mode Ain't Lotus) at
+`http://acs.ist.psu.edu/dismal/dismal.html'.
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.3,  Next: Q2.1.4,  Prev: Q2.1.2,  Up: Installation
+File: xemacs-faq.info,  Node: Q8.1.3,  Next: Q8.2.1,  Prev: Q8.1.2,  Up: Other Packages
 
-Q2.1.3: Translation Table Syntax messages at Startup
-----------------------------------------------------
+Q8.1.3: Is there a MatLab mode?
+-------------------------------
 
-   I get tons of translation table syntax error messages during startup.
-How do I get rid of them?
+Yes, a matlab mode and other items are available at the
+`http://www.mathworks.com/matlabcentral/files/104/matlab.el'.
 
-   There are two causes of this problem.  The first usually only strikes
-people using the prebuilt binaries.  The culprit in both cases is the
-file `XKeysymDB'.
-
-   * The binary cannot find the `XKeysymDB' file.  The location is
-     hardcoded at compile time so if the system the binary was built on
-     puts it a different place than your system does, you have
-     problems.  To fix, set the environment variable XKEYSYMDB to the
-     location of the `XKeysymDB' file on your system or to the location
-     of the one included with XEmacs which should be at
-     `<xemacs_root_directory>/lib/xemacs-19.16/etc/XKeysymDB'.
-
-   * The binary is finding the XKeysymDB but it is out-of-date on your
-     system and does not contain the necessary lines.  Either ask your
-     system administrator to replace it with the one which comes with
-     XEmacs (which is the stock R6 version and is backwards compatible)
-     or set your XKEYSYMDB variable to the location of XEmacs's
-     described above.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.4,  Next: Q2.1.5,  Prev: Q2.1.3,  Up: Installation
-
-Q2.1.4: Startup warnings about deducing proper fonts?
------------------------------------------------------
-
-   How can I avoid the startup warnings about deducing proper fonts?
-
-   This is highly dependent on your installation, but try with the
-following font as your base font for XEmacs and see what it does:
-
--adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
-
-   More precisely, do the following in your resource file:
-
-Emacs.default.attributeFont: \
--adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
-
-   If you just don't want to see the `*Warnings*' buffer at startup
-time, you can set this:
-
-     (setq display-warning-minimum-level 'error)
-
-   The buffer still exists; it just isn't in your face.
+8.2: Environments Built Around XEmacs
+=====================================
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.5,  Next: Q2.1.6,  Prev: Q2.1.4,  Up: Installation
+File: xemacs-faq.info,  Node: Q8.2.1,  Next: Q8.2.2,  Prev: Q8.1.3,  Up: Other Packages
 
-Q2.1.5: XEmacs cannot connect to my X Terminal!
+Q8.2.1: What are SPARCworks, EOS, and WorkShop?
 -----------------------------------------------
 
-   Help!  I can not get XEmacs to display on my Envizex X-terminal!
-
-   Try setting the DISPLAY variable using the numeric IP address of the
-host you are running XEmacs from.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.6,  Next: Q2.1.7,  Prev: Q2.1.5,  Up: Installation
+SPARCworks was a development environment from Sun (circa 1993-1996) and
+consisted of compilers (C, C++, FORTRAN 77, Fortran 90, Ada, and
+Pascal), a debugger, and other tools such as TeamWare (for
+configuration management), MakeTool, etc.
 
-Q2.1.6: XEmacs just locked up my Linux X server!
-------------------------------------------------
+   EOS is the integration of XEmacs with the SPARCworks debugger.  It
+allows one to use an XEmacs frame to view code (complete with
+fontification, etc.), set breakpoints, print variables, etc., while
+using the SPARCworks debugger.
 
-   There have been several reports of the X server locking up under
-Linux.  In all reported cases removing speedo and scaled fonts from the
-font path corrected the problem.  This can be done with the command
-`xset'.
+   EOS stands for "Era on SPARCworks"; Era stood for "Emacs Rewritten
+Again" and was the name used by Sun for its modified version of Lucid
+Emacs (later XEmacs) in the early-mid 90's.  This is documented in more
+detail in the history section of the XEmacs About page.
 
-   It is possible that using a font server may also solve the problem.
+   EOS was replaced around 1996 with a newer graphical development
+environment called Sun WorkShop.  The current status of this is unknown.
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.7,  Next: Q2.1.8,  Prev: Q2.1.6,  Up: Installation
+File: xemacs-faq.info,  Node: Q8.2.2,  Next: Q8.2.3,  Prev: Q8.2.1,  Up: Other Packages
 
-Q2.1.7: HP Alt key as Meta.
----------------------------
-
-   How can I make XEmacs recognize the Alt key of my HP workstation as a
-Meta key?
-
-   Put the following line into a file and load it with xmodmap(1) before
-starting XEmacs:
-
-     remove Mod1 = Mode_switch
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.8,  Next: Q2.1.9,  Prev: Q2.1.7,  Up: Installation
-
-Q2.1.8: got (wrong-type-argument color-instance-p nil)
-------------------------------------------------------
-
-   Natalie Kershaw <nataliek@rd.scitec.com.au> writes:
-
-     I am trying to run xemacs 19.13 under X11R4. Whenever I move the
-     mouse I get the following error. Has anyone seen anything like
-     this? This doesn't occur on X11R5.
-
-          Signalling:
-          (error "got (wrong-type-argument color-instance-p nil)
-          and I don't know why!")
-
-   dinos <map01kd@gold.ac.uk> writes:
-
-     I think this is due to undefined resources; You need to define
-     color backgrounds and foregrounds into your
-     `.../app-defaults/Emacs' like:
-
-          *Foreground:    Black   ;everything will be of black on grey95,
-          *Background:    Grey95  ;unless otherwise specified.
-          *cursorColor:   Red3    ;red3 cursor with grey95 border.
-          *pointerColor:  Red3    ;red3 pointer with grey95 border.
-
-   Natalie Kershaw adds:
-
-     What fixed the problem was adding some more colors to the X color
-     database (copying the X11R5 colors over), and also defining the
-     following resources:
-
-          xemacs*cursorColor:    black
-          xemacs*pointerColor:   black
-
-     With the new colors installed the problem still occurs if the above
-     resources are not defined.
-
-     If the new colors are not present then an additional error occurs
-     on XEmacs startup, which says `Color Red3' not defined.
+Q8.2.2: How do I start the Sun Workshop support in XEmacs 21?
+-------------------------------------------------------------
 
-\1f
-File: xemacs-faq.info,  Node: Q2.1.9,  Next: Q2.1.10,  Prev: Q2.1.8,  Up: Installation
+Add the switch --with-workshop to the configure command when building
+XEmacs and put the following in one of your startup files (e.g.
+site-start.el or .emacs):
+
+     (when (featurep 'tooltalk)
+       (load "tooltalk-macros")
+       (load "tooltalk-util")
+       (load "tooltalk-init"))
+     (when (featurep 'sparcworks)
+       (load "sunpro-init")
+       (load "ring")
+       (load "comint")
+       (load "annotations")
+       (sunpro-startup))
+
+   If you are not using the latest Workshop (5.0) you have to apply the
+following patch:
 
-Q2.1.9: XEmacs causes my OpenWindows 3.0 server to crash.
----------------------------------------------------------
+-- /opt/SUNWspro/lib/eserve.el.ORIG    Fri May 14 15:23:26 1999
++++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999
+@@ -42,7 +42,7 @@
+ (defvar running-xemacs nil "t if we're running XEmacs")
+ (defvar running-emacs  nil "t if we're running GNU Emacs 19")
 
-   The OpenWindows 3.0 server is incredibly buggy.  Your best bet is to
-replace it with one from the generic MIT X11 release.  You might also
-try disabling parts of your `init.el'/`.emacs', like those that enable
-background pixmaps.
+-(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
++(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
+     (setq running-xemacs t)
+     (setq running-emacs  t))
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.10,  Next: Q2.1.11,  Prev: Q2.1.9,  Up: Installation
+File: xemacs-faq.info,  Node: Q8.2.3,  Next: Q8.2.4,  Prev: Q8.2.2,  Up: Other Packages
 
-Q2.1.10: Warnings from incorrect key modifiers.
------------------------------------------------
+Q8.2.3: What is/was Energize?
+-----------------------------
 
-   The following information comes from the `PROBLEMS' file that comes
-with XEmacs.
-
-   If you're having troubles with HP/UX it is because HP/UX defines the
-modifiers wrong in X.  Here is a shell script to fix the problem; be
-sure that it is run after VUE configures the X server.
-
-     #! /bin/sh
-     xmodmap 2> /dev/null - << EOF
-     keysym Alt_L = Meta_L
-     keysym Alt_R = Meta_R
-     EOF
-     
-     xmodmap - << EOF
-     clear mod1
-     keysym Mode_switch = NoSymbol
-     add mod1 = Meta_L
-     keysym Meta_R = Mode_switch
-     add mod2 = Mode_switch
-     EOF
+The "Energize Programming System" was a C and C++ development
+environment sold by Lucid, Inc.  It was the reason why Lucid Emacs, now
+XEmacs, was created in the first place.  Unfortunately, Lucid went out
+of business in 1994.  The rights to sell it in Japan were purchased by
+INS Engineering (which briefly employed Stig Hackvan aka Jonathan
+Stigelman to work on Japanese support for XEmacs, in late 1994 and
+early 1995) and Tartan bought the rights to sell it in the rest of the
+world.  However, INS is not selling Energize at this point and may or
+may not have ever done so; Tartan certainly never did.
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.11,  Next: Q2.1.12,  Prev: Q2.1.10,  Up: Installation
+File: xemacs-faq.info,  Node: Q8.2.4,  Prev: Q8.2.3,  Up: Other Packages
 
-Q2.1.11: `Can't instantiate image error...' in toolbar
-------------------------------------------------------
+Q8.2.4: What is Infodock?
+-------------------------
 
-   Dr. Ram Samudrala <expt@alanine.ram.org> writes:
+InfoDock (http://sourceforge.net/projects/infodock/) is an integrated
+productivity toolset, mainly aimed at technical people, hosted at
+SourceForge.
 
-   I just installed the XEmacs (20.4-2) RPMS that I downloaded from
-`http://www.xemacs.org/'.  Everything works fine, except that when I
-place my mouse over the toolbar, it beeps and gives me this message:
+   InfoDock is built atop the XEmacs variant of GNU Emacs and so has
+all of the power of Emacs, but with an easier to use and more
+comprehensive menu-based user interface.  The bottom portion of this
+text describes how it differs from XEmacs and GNU Emacs from the Free
+Software Foundation.
 
-      Can't instantiate image (probably cached):
-      [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
-      (16 16 <strange control characters> ...
+   InfoDock is aimed at people who want a free, turn-key productivity
+environment.  Although InfoDock is customizable, it is not intended for
+people who like basic versions of Emacs which need to be customized
+extensively for local use; standard Emacs distributions are better for
+such uses.  InfoDock is for those people who want a complete,
+pre-customized environment in one package, which they need not touch
+more than once or twice a year to update to new revisions.
 
-   Kyle Jones <kyle_jones@wonderworks.com> writes:
-     This is problem specific to some Chips and Technologies video
-     chips, when running XFree86.  Putting
+   InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX,
+and Intel Linux systems.  It is intended for use on a color display,
+although most features will work on monochrome monitors.  Simply unpack
+InfoDock according to the instructions in the ID-INSTALL file and you
+are ready to run.
 
-     `Option "sw_cursor"'
+   The InfoDock Manual is concise, yet sufficient as a user guide for
+users who have never used an Emacs-type editor before.  For users who
+are already familiar with Emacs, it supplements the information in the
+GNU Emacs Manual.
 
-     in `XF86Config' gets rid of the problem.
+   InfoDock menus are much more extensive and more mature than standard
+Emacs menus.  Each menu offers a `Manual' item which displays
+documentation associated with the menu's functions.
 
-\1f
-File: xemacs-faq.info,  Node: Q2.1.12,  Next: Q2.1.13,  Prev: Q2.1.11,  Up: Installation
+Four types of menubars are provided:
+  1. An extensive menubar providing access to global InfoDock commands.
 
-Q2.1.12: Problems with Regular Expressions on DEC OSF1.
--------------------------------------------------------
+  2. Mode-specific menubars tailored to the current major mode.
 
-   I have xemacs 19.13 running on an alpha running OSF1 V3.2 148 and
-ispell would not run because it claimed the version number was incorrect
-although it was indeed OK. I traced the problem to the regular
-expression handler.
+  3. A simple menubar for basic editing to help novices get started
+     with InfoDock.
 
-   Douglas Kosovic <douglask@dstc.edu.au> writes:
+  4. The standard XEmacs menubar.
 
-     Actually it's a DEC cc optimization bug that screws up the regexp
-     handling in XEmacs.
+   Most modes also include mode-specific popup menus.  Additionally,
+region and rectangle popup menus are included.
 
-     Rebuilding using the `-migrate' switch for DEC cc (which uses a
-     different sort of optimization) works fine.
+   `Hyperbole', the everyday information manager, is a core part of
+InfoDock.  This provides context-sensitive mouse keys, a rolodex-type
+contact manager, programmable hypertext buttons, and an autonumbered
+outliner with embedded hyperlink anchors.
 
-   See `xemacs-19_13-dunix-3_2c.patch' at the following URL on how to
-build with the `-migrate' flag:
+   The `OO-Browser', a multi-language object-oriented code browser, is a
+standard part of InfoDock.
 
-     `http://www-digital.cern.ch/carney/emacs/emacs.html'
+   InfoDock saves a more extensive set of user options than other Emacs
+versions.
 
-   NOTE: There have been a variety of other problems reported that are
-fixed in this fashion.
+   InfoDock inserts a useful file header in many file types, showing the
+author, summary, and last modification time of each file.  A summary
+program can then be used to summarize all of the files in a directory,
+for easy MANIFEST file creation.
 
-\1f
-File: xemacs-faq.info,  Node: Q2.1.13,  Next: Q2.1.14,  Prev: Q2.1.12,  Up: Installation
-
-Q2.1.13: HP/UX 10.10 and `create_process' failure.
---------------------------------------------------
+   Your working set of buffers is automatically saved and restored (if
+you answer yes to a prompt) between InfoDock sessions.
 
-   Dave Carrigan <Dave.Carrigan@ipl.ca> writes:
+   Refined color choices for code highlighting are provided for both
+dark and light background display frames.
 
-     With XEmacs 19.13 and HP/UX 10.10, anything that relies on the
-     `create_process' function fails. This breaks a lot of things
-     (shell-mode, compile, ange-ftp, to name a few).
+   The `C-z' key prefix performs frame-based commands which parallel the
+`C-x' key prefix for window-based commands.
 
-   Phil Johnson <johnson@dtc.hp.com> writes:
+   The Smart Menu system is included for producing command menus on dumb
+terminals.
 
-     This is a problem specific to HP-UX 10.10.  It only occurs when
-     XEmacs is compiled for shared libraries (the default), so you can
-     work around it by compiling a statically-linked binary (run
-     configure with `--dynamic=no').
+   Lisp libraries are better categorized according to function.
 
-     I'm not sure whether the problem is with a particular shared
-     library or if it's a kernel problem which crept into 10.10.
+   Extensions and improvements to many areas of Emacs are included,
+such as: paragraph filling, mail reading with Rmail, shell handling,
+outlining, code highlighting and browsing, and man page browsing.
 
-   Richard Cognot <cognot@ensg.u-nancy.fr> writes:
-
-     I had a few problems with 10.10. Apparently, some of them were
-     solved by forcing a static link of libc (manually).
+   InfoDock questions, answers and discussion should go to the mail list
+<infodock@infodock.com>.  Use <infodock-request@infodock.com> to be
+added or removed from the list.  Always include your InfoDock version
+number when sending help requests.
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.14,  Next: Q2.1.15,  Prev: Q2.1.13,  Up: Installation
+File: xemacs-faq.info,  Node: Current Events,  Next: Legacy Versions,  Prev: Other Packages,  Up: Top
 
-Q2.1.14: `C-g' doesn't work for me.  Is it broken?
---------------------------------------------------
+9 What the Future Holds
+***********************
 
-   Ben Wing <ben@xemacs.org> writes:
+This is part 9 of the XEmacs Frequently Asked Questions list.  This
+section will change frequently, and (in theory) should contain any
+interesting items that have transpired recently. (But in practice it's
+not getting updated like this.)
 
-     `C-g' does work for most people in most circumstances.  If it
-     doesn't, there are only two explanations:
+   This section also contains descriptions of the new features in all
+the recent releases of XEmacs.  For the most part, the information
+below is a synopsis of the more complete information that can be found
+in the file `NEWS' in the `etc' directory of the XEmacs distribution.
+You can view this file in XEmacs using `C-h n' or the `Help' menu.
 
-       1. The code is wrapped with a binding of `inhibit-quit' to `t'.
-          `Ctrl-Shift-G' should still work, I think.
+   Information on older versions of XEmacs can be find in `ONEWS' in
+the same directory, or `OONEWS' for really old versions.
 
-       2. SIGIO is broken on your system, but BROKEN_SIGIO isn't
-          defined.
-
-     To test #2, try executing `(while t)' from the `*scratch*' buffer.
-     If `C-g' doesn't interrupt, then you're seeing #2.
-
-   Morten Welinder <terra@diku.dk> writes:
-
-     On some (but _not_ all) machines a hung XEmacs can be revived by
-     `kill -FPE <pid>'.  This is a hack, of course, not a solution.
-     This technique works on a Sun4 running 4.1.3_U1.  To see if it
-     works for you, start another XEmacs and test with that first.  If
-     you get a core dump the method doesn't work and if you get
-     `Arithmetic error' then it does.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.15,  Next: Q2.1.16,  Prev: Q2.1.14,  Up: Installation
-
-Q2.1.15: How to Debug an XEmacs problem with a debugger
--------------------------------------------------------
-
-   If XEmacs does crash on you, one of the most productive things you
-can do to help get the bug fixed is to poke around a bit with the
-debugger.  Here are some hints:
-
-   * First of all, if the crash is at all reproducible, consider very
-     strongly recompiling your XEmacs with debugging symbols, with no
-     optimization, and with the configure options `--debug=yes' and
-     `--error-checking=all'.  This will make your XEmacs run somewhat
-     slower but make it a lot more likely to catch the problem earlier
-     (closer to its source), and a lot easier to determine what's going
-     on with a debugger.
-
-   * If you're able to run XEmacs under a debugger and reproduce the
-     crash (if it's inconvenient to do this because XEmacs is already
-     running or is running in batch mode as part of a bunch of scripts,
-     consider attaching to the existing process with your debugger;
-     most debuggers let you do this by substituting the process ID for
-     the core file when you invoke the debugger from the command line,
-     or by using the `attach' command or something similar), here are
-     some things you can do:
-
-   * If XEmacs is hitting an assertion failure, put a breakpoint on
-     `assert_failed()'.
-
-   * If XEmacs is hitting some weird Lisp error that's causing it to
-     crash (e.g. during startup), put a breakpoint on
-     `signal_1()'--this is declared static in eval.c.
-
-   * Internally, you will probably see lots of variables that hold
-     objects of type `Lisp_Object'.  These are exactly what they appear
-     to be, i.e. references to Lisp objects.  Printing them out with
-     the debugger probably won't be too useful--you'll likely just see
-     a number.  To decode them, do this:
-
-          call debug_print (OBJECT)
-
-     where OBJECT is whatever you want to decode (it can be a variable,
-     a function call, etc.).  This will print out a readable
-     representation on the TTY from which the xemacs process was
-     invoked.
-
-   * If you want to get a Lisp backtrace showing the Lisp call stack,
-     do this:
-
-          call debug_backtrace ()
-
-   * Using `debug_print' and `debug_backtrace' has two disadvantages -
-     it can only be used with a running xemacs process, and it cannot
-     display the internal C structure of a Lisp Object.  Even if all
-     you've got is a core dump, all is not lost.
-
-     If you're using GDB, there are some macros in the file
-     `src/.gdbinit' in the XEmacs source distribution that should make
-     it easier for you to decode Lisp objects.  This file is
-     automatically read by gdb if gdb is run in the directory where
-     xemacs was built, and contains these useful macros to inspect the
-     state of xemacs:
-
-    `pobj'
-          Usage: pobj lisp_object
-          Print the internal C representation of a lisp object.
-
-    `xtype'
-          Usage: xtype lisp_object
-          Print the Lisp type of a lisp object.
-
-    `lbt'
-          Usage: lbt
-          Print the current Lisp stack trace.  Requires a running
-          xemacs process.
-
-    `ldp'
-          Usage: ldp lisp_object
-          Print a Lisp Object value using the Lisp printer.  Requires a
-          running xemacs process.
-
-    `run-temacs'
-          Usage: run-temacs
-          Run temacs interactively, like xemacs.  Use this with
-          debugging tools (like purify) that cannot deal with dumping,
-          or when temacs builds successfully, but xemacs does not.
-
-    `dump-temacs'
-          Usage: dump-temacs
-          Run the dumping part of the build procedure.  Use when
-          debugging temacs, not xemacs!  Use this when temacs builds
-          successfully, but xemacs does not.
-
-    `check-xemacs'
-          Usage: check-xemacs
-          Run the test suite.  Equivalent to 'make check'.
-
-    `check-temacs'
-          Usage: check-temacs
-          Run the test suite on temacs.  Equivalent to 'make
-          check-temacs'.  Use this with debugging tools (like purify)
-          that cannot deal with dumping, or when temacs builds
-          successfully, but xemacs does not.
-
-     If you are using Sun's `dbx' debugger, there is an equivalent file
-     `src/.dbxrc', which defines the same commands for dbx.
-
-   * If you're using a debugger to get a C stack backtrace and you're
-     seeing stack traces with some of the innermost frames mangled, it
-     may be due to dynamic linking. (This happens especially under
-     Linux.) Consider reconfiguring with `--dynamic=no'.  Also,
-     sometimes (again under Linux), stack backtraces of core dumps will
-     have the frame where the fatal signal occurred mangled; if you can
-     obtain a stack trace while running the XEmacs process under a
-     debugger, the stack trace should be clean.
-
-     Curtiss <1CMC3466@ibm.mtsac.edu> suggests upgrading to ld.so
-     version 1.8 if dynamic linking and debugging is a problem on Linux.
-
-   * If you're using a debugger to get a C stack backtrace and you're
-     getting a completely mangled and bogus stack trace, it's probably
-     due to one of the following:
-
-       a. Your executable has been stripped.  Bad news.  Tell your
-          sysadmin not to do this--it doesn't accomplish anything
-          except to save a bit of disk space, and makes debugging much
-          much harder.
-
-       b. Your stack is getting trashed.  Debugging this is hard; you
-          have to do a binary-search type of narrowing down where the
-          crash occurs, until you figure out exactly which line is
-          causing the problem.  Of course, this only works if the bug
-          is highly reproducible.
-
-       c. If your stack trace has exactly one frame in it, with address
-          0x0, this could simply mean that XEmacs attempted to execute
-          code at that address, e.g. through jumping to a null function
-          pointer.  Unfortunately, under those circumstances, GDB under
-          Linux doesn't know how to get a stack trace. (Yes, this is
-          the third Linux-related problem I've mentioned.  I have no
-          idea why GDB under Linux is so bogus.  Complain to the GDB
-          authors, or to comp.os.linux.development.system).  Again,
-          you'll have to use the narrowing-down process described above.
-
-       d. You will get a Lisp backtrace output when XEmacs crashes, so
-          you'll have something useful.
-
-
-   * If you compile with the newer gcc variants gcc-2.8 or egcs, you
-     will also need gdb 4.17 or above.  Earlier releases of gdb can't
-     handle the debug information generated by the newer compilers.
-
-   * In versions of XEmacs before 21.2.27, `src/.gdbinit' was named
-     `src/gdbinit'.  This had the disadvantage of not being sourced
-     automatically by gdb, so you had to set that up yourself.
-
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.16,  Next: Q2.1.17,  Prev: Q2.1.15,  Up: Installation
-
-Q2.1.16: XEmacs crashes in `strcat' on HP/UX 10
------------------------------------------------
-
-   From the problems database (through the former address
-http://support.mayfield.hp.com/):
-
-     Problem Report: 5003302299
-     Status:         Open
-     
-     System/Model:   9000/700
-     Product Name:   HPUX S800 10.0X
-     Product Vers:   9245XB.10.00
-     
-     Description: strcat(3C) may read beyond
-     end of source string, can cause SIGSEGV
-     
-     
-     *** PROBLEM TEXT ***
-     strcat(3C) may read beyond the source string onto an unmapped page,
-     causing a segmentation violation.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.17,  Next: Q2.1.18,  Prev: Q2.1.16,  Up: Installation
-
-Q2.1.17: `Marker does not point anywhere'
------------------------------------------
-
-   As with other errors, set `debug-on-error' to `t' to get the
-backtrace when the error occurs.  Specifically, two problems have been
-reported (and fixed).
-
-  1. A problem with line-number-mode in XEmacs 19.14 affected a large
-     number of other packages.  If you see this error message, turn off
-     line-number-mode.
-
-  2. A problem with some early versions of Gnus 5.4 caused this error.
-     Upgrade your Gnus.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.18,  Next: Q2.1.19,  Prev: Q2.1.17,  Up: Installation
-
-Q2.1.18: removed
-----------------
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.19,  Next: Q2.1.20,  Prev: Q2.1.18,  Up: Installation
-
-Q2.1.19: XEmacs does not follow the local timezone.
----------------------------------------------------
-
-   When using one of the prebuilt binaries many users have observed that
-XEmacs uses the timezone under which it was built, but not the timezone
-under which it is running.  The solution is to add:
-
-     (set-time-zone-rule "MET")
-
-   to your `init.el'/`.emacs' or the `site-start.el' file if you can.
-Replace `MET' with your local timezone.
-
-\1f
-File: xemacs-faq.info,  Node: Q2.1.20,  Next: Q2.1.21,  Prev: Q2.1.19,  Up: Installation
-
-Q2.1.20: `Symbol's function definition is void: hkey-help-show.'
-----------------------------------------------------------------
-
-   This is a problem with a partially loaded hyperbole.  Try adding:
+* Menu:
 
-     (require 'hmouse-drv)
+9.0: Changes
+* Q9.0.1::    What new features will be in XEmacs soon?
+* Q9.0.2::    What's new in XEmacs 21.4?
+* Q9.0.3::    What's new in XEmacs 21.1?
+* Q9.0.4::    What's new in XEmacs 20.4?
+* Q9.0.5::    What's new in XEmacs 20.3?
+* Q9.0.6::    What's new in XEmacs 20.2?
 
-   where you load hyperbole and the problem should go away.
+9.0: Changes
+============
 
 \1f
-File: xemacs-faq.info,  Node: Q2.1.21,  Next: Q2.1.22,  Prev: Q2.1.20,  Up: Installation
+File: xemacs-faq.info,  Node: Q9.0.1,  Next: Q9.0.2,  Prev: Current Events,  Up: Current Events
 
-Q2.1.21: [This question intentionally left blank]
+Q9.0.1: What new features will be in XEmacs soon?
 -------------------------------------------------
 
-\1f
-File: xemacs-faq.info,  Node: Q2.1.22,  Next: Q2.1.23,  Prev: Q2.1.21,  Up: Installation
+#### Write me.
 
-Q2.1.22: XEmacs seems to take a really long time to do some things
-------------------------------------------------------------------
+\1f
+File: xemacs-faq.info,  Node: Q9.0.2,  Next: Q9.0.3,  Prev: Q9.0.1,  Up: Current Events
 
-   David Moore <dmoore@ucsd.edu> writes:
+Q9.0.2: What's new in XEmacs 21.4?
+----------------------------------
 
-     Two things you can do:
+21.4 was the "stable" version of the 21.2 series, which was considered
+"experimental" throughout its life; thus there were no "official"
+releases at all.  In essence, XEmacs is now following the "alternating"
+scheme of Linux, where at any point there are at least two different
+development branches, one "stable" and one "experimental".  Periodic
+releases happen in both branches, but those in the experimental branch
+are not tested as well, and there's no guarantee they will work at all.
+The experiemental branch is open to any and all code that's acceptable
+to the developers; the stable branch, however, is in general limited
+only to bug fixes, and all contributions are carefully reviewed to make
+sure they will increase and not decrease stability.
 
-     1) C level:
+   21.3 never existed at all; it was decided to follow the Linux scheme
+exactly, where odd-numbered series are experimental and even-numbered
+ones stable.
 
-     When you see it going mad like this, you might want to use gdb
-     from an 'xterm' to attach to the running process and get a stack
-     trace.  To do this just run:
+   The following lists summarizes the essential changes made in this
+version.  For a fuller list, see the `NEWS' in the `etc' directory of
+the XEmacs distribution, or use `C-h n' or the `Help' menu to view this
+file inside of XEmacs.
 
-          gdb /path/to/xemacs/xemacs ####
+User-visible changes in XEmacs 21.4
+...................................
 
-     Where `####' is the process id of your xemacs, instead of
-     specifying the core.  When gdb attaches, the xemacs will stop [1]
-     and you can type `where' in gdb to get a stack trace as usual.  To
-     get things moving again, you can just type `quit' in gdb.  It'll
-     tell you the program is running and ask if you want to quit
-     anyways.  Say 'y' and it'll quit and have your emacs continue from
-     where it was at.
+   * The delete key now deletes forward by default.
 
-     2) Lisp level:
+   * Shifted motion keys now select text by default.
 
-     Turn on debug-on-quit early on.  When you think things are going
-     slow hit C-g and it may pop you in the debugger so you can see
-     what routine is running.  Press `c' to get going again.
+   * You can now build XEmacs with support for GTK+ widget set.
 
-     debug-on-quit doesn't work if something's turned on inhibit-quit
-     or in some other strange cases.
+   * ~/.xemacs/init.el is now the preferred location for the init file.
+     (XEmacs now supports a `~/.xemacs/init.el' startup file. Custom
+     file will move to ~/.xemacs/custom.el.)
 
-\1f
-File: xemacs-faq.info,  Node: Q2.1.23,  Next: Q2.1.24,  Prev: Q2.1.22,  Up: Installation
+   * Much-improved sample init.el, showing how to use many useful
+     features.
 
-Q2.1.23:  Movemail on Linux does not work for XEmacs 19.15 and later.
----------------------------------------------------------------------
+   * XEmacs support for menu accelerators has been much improved.
 
-   Movemail used to work fine in 19.14 but has stopped working in 19.15
-and 20.x.  I am using Linux.
+   * Default menubar improvements. (Default menubar has many new
+     commands and better organization.  The font-menu is now available
+     under MS Windows.)
 
-   SL Baur <steve@xemacs.org> writes:
+   * Dialog box improvements, including a real file dialog box. (XEmacs
+     now has a proper file dialog box under MS Windows (and GTK)!  The
+     old clunky file dialog box is improved.  Keyboard traversal now
+     works correctly in MS Windows dialog boxes.  There is a Search
+     dialog box available from `Edit->Find...')
 
-     Movemail on Linux used to default to using flock file locking.
-     With 19.15 and later versions it now defaults to using `.lock' file
-     locking.  If this is not appropriate for your system, edit
-     src/s/linux.h and uncomment the line that reads:
+   * New buffer tabs.
 
-          #define MAIL_USE_FLOCK
+   * There is a new MS Windows installer, netinstall, ported from
+     Cygwin.
 
-\1f
-File: xemacs-faq.info,  Node: Q2.1.24,  Next: Q2.1.25,  Prev: Q2.1.23,  Up: Installation
+   * The subprocess quote-handling mechanism under Windows is much
+     improved.
 
-Q2.1.24:  XEmacs won't start without network. (NEW)
----------------------------------------------------
+   * Printing support now available under MS Windows.
 
-   If XEmacs starts when you're on the network, but fails when you're
-not on the network, you may be missing a "localhost" entry in your
-`/etc/hosts' file.  The file should contain an entry like:
+   * Selection improvements. (Kill and yank now interact with the
+     clipboard under Windows.  MS Windows support for selection is now
+     much more robust.  Motif selection support is now more correct
+     (but slower).)
 
-     127.0.0.1        localhost
+   * Mail spool locking now works correctly.
 
-   Add that line, and XEmacs will be happy.
+   * International support changes. (The default coding-priority-list
+     is now safer.  International keysyms are now supported under X.
+     MS Windows 1251 code page now supported.  Czech, Thai,
+     Cyrillic-KOI8, Vietnamese, Ethiopic now supported.  Proper support
+     for words in Latin 3 and Latin 4.)
 
-\1f
-File: xemacs-faq.info,  Node: Q2.1.25,  Prev: Q2.1.24,  Up: Installation
+   * Help buffers contain hyperlinks, and other changes.
 
-Q2.1.25::  After upgrading, XEmacs won't do `foo' any more! (NEW)
------------------------------------------------------------------
+   * The modeline's text is now scrollable.
 
-   You have been used to doing `foo', but now when you invoke it (or
-click the toolbar button or select the menu item), nothing (or an error)
-happens.  The simplest explanation is that you are missing a package
-that is essential to you.  You can either track it down and install it
-(there is a list of packages and brief descriptions of their contents in
-`etc/PACKAGES'), or install the `Sumo Tarball' (see *note Q2.0.14::).
+   * The mouse wheel under MS Windows now functions correctly.
 
-\1f
-File: xemacs-faq.info,  Node: Customization,  Next: Subsystems,  Prev: Installation,  Up: Top
+   * Interactive searching and matching case improvements. (Incremental
+     search will now highlight all visible matches.  Interactive
+     searches always respect uppercase characters.)
 
-3 Customization and Options
-***************************
+   * Rectangle functions rewritten to avoid inserting extra spaces.
 
-   This is part 3 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to Customization and screen settings.
+   * New command `kill-entire-line' that always kills the entire line.
 
-* Menu:
+   * Default values correctly stored in minibuffer histories.
 
-Customization---Emacs Lisp and `init.el'/`.emacs':
-* Q3.0.1::      What version of Emacs am I running?
-* Q3.0.2::      How do I evaluate Elisp expressions?
-* Q3.0.3::      `(setq tab-width 6)' behaves oddly.
-* Q3.0.4::      How can I add directories to the `load-path'?
-* Q3.0.5::      How to check if a lisp function is defined?
-* Q3.0.6::      Can I force the output of `(face-list)' to a buffer?
-* Q3.0.7::      Font selections don't get saved after `Save Options'.
-* Q3.0.8::      How do I make a single minibuffer frame?
-* Q3.0.9::      What is `Customize'?
-
-X Window System & Resources:
-* Q3.1.1::      Where is a list of X resources?
-* Q3.1.2::      How can I detect a color display?
-* Q3.1.3::      [This question intentionally left blank]
-* Q3.1.4::      [This question intentionally left blank]
-* Q3.1.5::      How can I get the icon to just say `XEmacs'?
-* Q3.1.6::      How can I have the window title area display the full path?
-* Q3.1.7::      `xemacs -name junk' doesn't work?
-* Q3.1.8::      `-iconic' doesn't work.
-
-Textual Fonts & Colors:
-* Q3.2.1::      How can I set color options from `init.el'/`.emacs'?
-* Q3.2.2::      How do I set the text, menu and modeline fonts?
-* Q3.2.3::      How can I set the colors when highlighting a region?
-* Q3.2.4::      How can I limit color map usage?
-* Q3.2.5::      My tty supports color, but XEmacs doesn't use them.
-* Q3.2.6::      Can I have pixmap backgrounds in XEmacs?
-
-The Modeline:
-* Q3.3.1::      How can I make the modeline go away?
-* Q3.3.2::      How do you have XEmacs display the line number in the modeline?
-* Q3.3.3::      How do I get XEmacs to put the time of day on the modeline?
-* Q3.3.4::      How do I turn off current chapter from AUC TeX modeline?
-* Q3.3.5::      How can one change the modeline color based on the mode used?
-
-3.4 Multiple Device Support:
-* Q3.4.1::      How do I open a frame on another screen of my multi-headed display?
-* Q3.4.2::      Can I really connect to a running XEmacs after calling up over a modem?  How?
-
-3.5 The Keyboard:
-* Q3.5.1::      How can I bind complex functions (or macros) to keys?
-* Q3.5.2::      How can I stop down-arrow from adding empty lines to the bottom of my buffers?
-* Q3.5.3::      How do I bind C-. and C-; to scroll one line up and down?
-* Q3.5.4::      Globally binding Delete?
-* Q3.5.5::      Scrolling one line at a time.
-* Q3.5.6::      How to map Help key alone on Sun type4 keyboard?
-* Q3.5.7::      How can you type in special characters in XEmacs?
-* Q3.5.8::      [This question intentionally left blank]
-* Q3.5.9::      How do I make the Delete key delete forward?
-* Q3.5.10::     Can I turn on "sticky" modifier keys?
-* Q3.5.11::     How do I map the arrow keys?
-
-The Cursor:
-* Q3.6.1::      Is there a way to make the bar cursor thicker?
-* Q3.6.2::      Is there a way to get back the old block cursor where the cursor covers the character in front of the point?
-* Q3.6.3::      Can I make the cursor blink?
-
-The Mouse and Highlighting:
-* Q3.7.1::      How can I turn off Mouse pasting?
-* Q3.7.2::      How do I set control/meta/etc modifiers on mouse buttons?
-* Q3.7.3::      Clicking the left button does not do anything in buffer list.
-* Q3.7.4::      How can I get a list of buffers when I hit mouse button 3?
-* Q3.7.5::      Why does cut-and-paste not work between XEmacs and a cmdtool?
-* Q3.7.6::      How I can set XEmacs up so that it pastes where the text cursor is?
-* Q3.7.7::      How do I select a rectangular region?
-* Q3.7.8::      Why does M-w take so long?
-
-The Menubar and Toolbar:
-* Q3.8.1::      How do I get rid of the menu (or menubar)?
-* Q3.8.2::      Can I customize the basic menubar?
-* Q3.8.3::      How do I control how many buffers are listed in the menu `Buffers' list?
-* Q3.8.4::      Resources like `Emacs*menubar*font' are not working?
-* Q3.8.5::      How can I bind a key to a function to toggle the toolbar?
-
-Scrollbars:
-* Q3.9.1::      How can I disable the scrollbar?
-* Q3.9.2::      How can one use resources to change scrollbar colors?
-* Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
-* Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
-
-Text Selections:
-* Q3.10.1::     How can I turn off or change highlighted selections?
-* Q3.10.2::     How do I get that typing on an active region removes it?
-* Q3.10.3::     Can I turn off the highlight during isearch?
-* Q3.10.4::     How do I turn off highlighting after C-x C-p (mark-page)?
-* Q3.10.5::     The region disappears when I hit the end of buffer while scrolling.
+   * You can now create "indirect buffers", like in GNU Emacs.
 
-\1f
-File: xemacs-faq.info,  Node: Q3.0.1,  Next: Q3.0.2,  Prev: Customization,  Up: Customization
+   * Pixel-based scrolling has been implemented.
 
-3.0: Customization - Emacs Lisp and `init.el'/`.emacs'
-======================================================
+   * Operation progress can be displayed using graphical widgets.
 
-Q3.0.1: What version of Emacs am I running?
--------------------------------------------
+   * User names following a tilde can now be completed at file name
+     prompts.
 
-   How can `init.el'/`.emacs' determine which of the family of Emacsen
-I am using?
+   * XEmacs can now play sound using Enlightenment Sound Daemon (ESD).
 
-   To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
-XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
-example given in `etc/sample.init.el' (`etc/sample.emacs' in XEmacs
-versions prior to 21.4).  There are other nifty things in there as well!
+   * X-Face support is now available under MS Windows.
 
-   For all new code, all you really need to do is:
+   * The PostgreSQL Relational Database Management System is now
+     supported.
 
-     (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
+   * Indentation no longer indents comments that begin at column zero.
 
-\1f
-File: xemacs-faq.info,  Node: Q3.0.2,  Next: Q3.0.3,  Prev: Q3.0.1,  Up: Customization
+   * Face and variable settings can have comments in Customize.
 
-Q3.0.2: How can I evaluate Emacs-Lisp expressions?
---------------------------------------------------
+   * New locations for early package hierarchies.
 
-   I know I can evaluate Elisp expressions from `*scratch*' buffer with
-`C-j' after the expression.  How do I do it from another buffer?
+   * The `auto-save' library has been greatly improved.
 
-   Press `M-:' (the default binding of `eval-expression'), and enter
-the expression to the minibuffer.
+   * New variable `mswindows-alt-by-itself-activates-menu'.
 
-\1f
-File: xemacs-faq.info,  Node: Q3.0.3,  Next: Q3.0.4,  Prev: Q3.0.2,  Up: Customization
+   * Other init-file-related changes. (Init file in your home directory
+     may be called `.emacs.el'.  New command-line switches
+     -user-init-file and -user-init-directory.)
 
-Q3.0.3: `(setq tab-width 6)' behaves oddly.
--------------------------------------------
+   * Etags changes.  See `NEWS' for full details.
 
-   If you put `(setq tab-width 6)' in your `init.el'/`.emacs' file it
-does not work!  Is there a reason for this?  If you do it at the EVAL
-prompt it works fine!! How strange.
+Lisp and internal changes in XEmacs 21.4
+........................................
 
-   Use `setq-default' instead, since `tab-width' is all-buffer-local.
+Not yet written.
 
 \1f
-File: xemacs-faq.info,  Node: Q3.0.4,  Next: Q3.0.5,  Prev: Q3.0.3,  Up: Customization
-
-Q3.0.4: How can I add directories to the `load-path'?
------------------------------------------------------
-
-   Here are two ways to do that, one that puts your directories at the
-front of the load-path, the other at the end:
-
-     ;;; Add things at the beginning of the load-path, do not add
-     ;;; duplicate directories:
-     (pushnew "bar" load-path :test 'equal)
-     
-     (pushnew "foo" load-path :test 'equal)
-     
-     ;;; Add things at the end, unconditionally
-     (setq load-path (nconc load-path '("foo" "bar")))
+File: xemacs-faq.info,  Node: Q9.0.3,  Next: Q9.0.4,  Prev: Q9.0.2,  Up: Current Events
 
-   keith (k.p.) hanlan <keithh@nortel.ca> writes:
+Q9.0.3: What's new in XEmacs 21.1?
+----------------------------------
 
-     To add directories using Unix shell metacharacters use
-     `expand-file-name' like this:
+21.1 was the "stable" version of "experimental" 21.0 series.  *Note
+What's new in XEmacs 21.4?: Q9.0.2.
+
+   The following lists summarizes the essential changes made in this
+version.  For a fuller list, see the `NEWS' in the `etc' directory of
+the XEmacs distribution, or use `C-h n' or the `Help' menu to view this
+file inside of XEmacs.
+
+User-visible changes in XEmacs 21.1
+...................................
+
+   * XEmacs is now supported under Microsoft Windows 95/98 and Windows
+     NT/2000/XP operating systems.  To discuss Windows-specific issues,
+     subscribe to the mailing list at <xemacs-winnt-request@xemacs.org>.
+
+   * XEmacs has been unbundled into constituent installable packages.
+
+   * *Other notable changes*: The `Options' menu has been ported to
+     Custom; XEmacs now is able to choose X visuals and use private
+     colormaps; You can drag the vertical divider of "horizontally"
+     (side-by-side) split windows.
+
+   * *Building changes*: XEmacs can be built with support for 31-bit
+     Lisp integers and 32-bit pointers (previously, it was 28-bit
+     integers and pointers); XEmacs can be built with LDAP support;
+     `dir' files can be removed in the Info subsystem, and will be
+     regenerated on-the-fly.
+
+   * *New packages*: `imenu', `popper', `gdb-highlight'
+
+   * *Package changes*: Many changes to `cc-mode', `gnus', `gnuclient'.
+     See `NEWS' for full details.
+
+   * *New commands, variables and functions*: `center-to-window-line'
+     (like `recenter' but doesn't force a redisplay); variable
+     `user-full-name' (customize what your full name looks like in
+     mail); `M-x customize-changed-options' (customize options whose
+     default values changes because you upgraded your XEmacs); `M-x
+     add-log-convert' (converts an old-style ChangeLog buffer to
+     new-style); `M-x zap-up-to-char' (like `zap-to-char' but doesn't
+     delete the char searched for); commands to store, retrieve and
+     increment numbers in registers, useful for macros.
+
+   * *Changes to commands, variables, and functions*: `M-x
+     query-replace' and friends operate only on the region when it's
+     active; `echo-keystrokes' can now be a floating-point number; `M-.'
+     searches exact tag matches before inexact ones; function
+     `user-full-name' with no arguments returns the var
+     `user-full-name'; a prefix arg to `M-:' and `C-h c' inserts the
+     result in the current buffer.
+
+   * *Other changes*: Under X, new application class `XEmacs';
+     byte-compilation of user-specs now works.
+
+   * *XEmacs/Mule (internationalization) changes*: Mule support now
+     works on TTY's; Egg/SJ3 input method now officially supported
+     (Quail and Egg/Skk already available through LEIM since 20.3);
+     localized Japanese menubars if XEmacs is built with the right
+     support.
+
+
+Lisp and internal changes in XEmacs 21.1
+........................................
+
+   * *Specifier changes*: The window locale now has a higher precedence
+     than the buffer locale when instantiating; new macro
+     `let-specifier'; new specifiers `vertical-scrollbar-visible-p',
+     horizontal-scrollbar-visible-p', `scrollbar-on-left-p',
+     `scrollbar-on-top-p', `vertical-divider-always-visible-p',
+     `vertical-divider-shadow-thickness',
+     `vertical-divider-line-width', `vertical-divider-spacing';
+     specifiers and symbols whose value is a specifier allowed as
+     modeline specifications.
+
+   * *Frame focus changes*: `focus-follows-mouse' works like FSF,
+     prevents any attempt to permanently change the selected frame; new
+     function `focus-frame' sets the window system focus a frame; new
+     special forms `save-selected-frame' and `with-selected-frame'.
+
+   * *Window function changes*: `select-window' now has optional
+     argument NORECORD to inhibit recording a buffer change;
+     `vertical-motion' now correctly handles optional WINDOW argument
+     and has new optional argument PIXELS, to have the returned values
+     be in pixels; new function `vertical-motion-pixels'; new functions
+     `window-text-area-pixel-{width,height,edges}'; new functions
+     `shrink-window-pixels' and `enlarge-window-pixels'; new function
+     `window-displayed-text-pixel-height'.
+
+   * *Other function changes*: Arithmetic comparison functions `<',
+     `>', `=', `/=' now accept a variable number of arguments;
+     hashtables now have a consistent read/print syntax; keyword
+     symbols cannot be set to a value other than themselves; `concat' no
+     longer accepts integer arguments; new function `string', like
+     `list', `vector', etc.; new function `temp-directory'
+     (OS-independent way to get a temp directory); `load-average' has
+     optional argument USE-FLOATS; `make-event' implemented completely;
+     new function `function-interactive' (returns a function's
+     interactive spec); new functions `lmessage', `lwarn' (printf-like
+     versions of `display-wessage', `display-warning'); new keyword
+     `:version' to `defcustom'.
+
+   * *Performance*: when the new GNU Malloc aka Doug Lea Malloc is
+     available, it will be used (better performance on libc6 Linux
+     systems); tracking line-numbers in modeline is now efficient;
+     profiling records a call-count of all called functions,
+     retrievable through `profile-call-count-results'.
+
+   * *Startup and path searching*: code to assemble paths at startup
+     rewritten for new package system; new function `split-path' (splits
+     by `path-separator'); `Info-default-directory-list' obsolete, use
+     `Info-directory-list' instead; site-lisp is deprecated and no
+     longer on the load-path by default.
+
+
+\1f
+File: xemacs-faq.info,  Node: Q9.0.4,  Next: Q9.0.5,  Prev: Q9.0.3,  Up: Current Events
+
+Q9.0.4: What's new in XEmacs 20.4?
+----------------------------------
 
-          (push (expand-file-name "~keithh/.emacsdir") load-path)
+XEmacs 20.4 is a bugfix release with no user-visible changes.
 
 \1f
-File: xemacs-faq.info,  Node: Q3.0.5,  Next: Q3.0.6,  Prev: Q3.0.4,  Up: Customization
-
-Q3.0.5: How to check if a lisp function is defined?
----------------------------------------------------
+File: xemacs-faq.info,  Node: Q9.0.5,  Next: Q9.0.6,  Prev: Q9.0.4,  Up: Current Events
 
-   Use the following elisp:
-
-     (fboundp 'foo)
-
-   It's almost always a mistake to test `emacs-version' or any similar
-variables.
+Q9.0.5: What's new in XEmacs 20.3?
+----------------------------------
 
-   Instead, use feature-tests, such as `featurep', `boundp', `fboundp',
-or even simple behavioral tests, eg.:
+XEmacs 20.3 was released in November 1997. It contains many bugfixes,
+and a number of new features, including Autoconf 2 based configuration,
+additional support for Mule (Multi-language extensions to Emacs), many
+more customizations, multiple frames on TTY-s, support for multiple info
+directories, an enhanced gnuclient, improvements to regexp matching,
+increased MIME support, and many, many synches with GNU Emacs 20.
 
-     (defvar foo-old-losing-code-p
-       (condition-case nil (progn (losing-code t) nil)
-         (wrong-number-of-arguments t)))
+   The XEmacs/Mule support has been only seriously tested in a Japanese
+locale, and no doubt many problems still remain.  The support for
+ISO-Latin-1 and Japanese is fairly strong.  MULE support comes at a
+price--about a 30% slowdown from 19.16.  We're making progress on
+improving performance and XEmacs 20.3 compiled without Mule (which is
+the default) is definitely faster than XEmacs 19.16.
 
-   There is an incredible amount of broken code out there which could
-work much better more often in more places if it did the above instead
-of trying to divine its environment from the value of one variable.
+   XEmacs 20.3 is the first non-beta v20 release, and will be the basis
+for all further development.
 
 \1f
-File: xemacs-faq.info,  Node: Q3.0.6,  Next: Q3.0.7,  Prev: Q3.0.5,  Up: Customization
+File: xemacs-faq.info,  Node: Q9.0.6,  Prev: Q9.0.5,  Up: Current Events
 
-Q3.0.6: Can I force the output of `(face-list)' to a buffer?
-------------------------------------------------------------
+Q9.0.6: What's new in XEmacs 20.2?
+----------------------------------
 
-   It would be good having it in a buffer, as the output of
-`(face-list)' is too wide to fit to a minibuffer.
+The biggest changes in 20.2 include integration of EFS (the next
+generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a
+major mode for editing Tex and LaTeX, and a lot of other stuff).  Many
+bugs from 20.0 have been fixed for this release.  20.2 also contains a
+new system for customizing XEmacs options, invoked via `M-x customize'.
 
-   Evaluate the expression in the `*scratch*' buffer with point after
-the rightmost paren and typing `C-j'.
+   XEmacs 20.2 is the development release (20.0 was beta), and is no
+longer considered unstable.
 
-   If the minibuffer smallness is the only problem you encounter, you
-can simply press `C-h l' to get the former minibuffer contents in a
-buffer.
+   For older news, see the file `ONEWS' in the `etc' directory of the
+XEmacs distribution.
 
 \1f
-File: xemacs-faq.info,  Node: Q3.0.7,  Next: Q3.0.8,  Prev: Q3.0.6,  Up: Customization
-
-Q3.0.7: Font selections in don't get saved after `Save Options'.
-----------------------------------------------------------------
+File: xemacs-faq.info,  Node: Legacy Versions,  Prev: Current Events,  Up: Top
 
-   John Mann <mannj@ll.mit.edu> writes:
+10 New information about old XEmacsen
+*************************************
 
-     You have to go to Options->Frame Appearance and unselect
-     `Frame-Local Font Menu'.  If this option is selected, font changes
-     are only applied to the _current_ frame and do _not_ get saved
-     when you save options.
+This is part 10 of the XEmacs Frequently Asked Questions list.  It will
+occasionally be updated to reflect new information about versions which
+are no longer being revised by the XEmacs Project.  The primary purpose
+is advice on compatibility of older XEmacsen with new packages and
+updated versions of packages, but bug fixes (which will not be applied
+to released XEmacsen, but users can apply themselves) are also accepted.
 
-   Also, set the following in your `init.el'/`.emacs':
-
-     (setq options-save-faces t)
-
-\1f
-File: xemacs-faq.info,  Node: Q3.0.8,  Next: Q3.0.9,  Prev: Q3.0.7,  Up: Customization
+* Menu:
 
-Q3.0.8: How do I get a single minibuffer frame?
------------------------------------------------
+10.0: XEmacs 21.1
+* Q10.0.1::   Gnus 5.10 won't display smileys in XEmacs 21.1.
+* Q10.0.2::   XEmacs won't start on Windows in XEmacs 21.1.
 
-   Vin Shelton <acs@acm.org> writes:
-
-     (setq initial-frame-plist '(minibuffer nil))
-     (setq default-frame-plist '(minibuffer nil))
-     (setq default-minibuffer-frame
-           (make-frame
-            '(minibuffer only
-                         width 86
-                         height 1
-                         menubar-visible-p nil
-                         default-toolbar-visible-p nil
-                         name "minibuffer"
-                         top -2
-                         left -2
-                         has-modeline-p nil)))
-     (frame-notice-user-settings)
-
-   *Please note:* The single minibuffer frame may not be to everyone's
-taste, and there any number of other XEmacs options settings that may
-make it difficult or inconvenient to use.
+10.0: XEmacs 21.1
+=================
 
 \1f
-File: xemacs-faq.info,  Node: Q3.0.9,  Next: Q3.1.1,  Prev: Q3.0.8,  Up: Customization
+File: xemacs-faq.info,  Node: Q10.0.1,  Next: Q10.0.2,  Prev: Legacy Versions,  Up: Legacy Versions
 
-Q3.0.9: What is `Customize'?
-----------------------------
+Q10.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1.
+--------------------------------------------------------
 
-   Starting with XEmacs 20.2 there is new system 'Customize' for
-customizing XEmacs options.
+Eric Eide <eeide@cs.utah.edu> wrote:
 
-   You can access `Customize' from the `Options' menu or invoking one
-of customize commands by typing eg.  `M-x customize', `M-x
-customize-face', `M-x customize-variable' or `M-x customize-apropos'.
+     Previously I wrote:
 
-   Starting with XEmacs 20.3 there is also new `browser' mode for
-Customize.  Try it out with `M-x customize-browse'
+     Eric> Summary: with Gnus 5.10.1 in XEmacs 21.1.14, I don't see
+     Eric> any smileys :-(.
 
-\1f
-File: xemacs-faq.info,  Node: Q3.1.1,  Next: Q3.1.2,  Prev: Q3.0.9,  Up: Customization
+     After a bit of sleuthing, I discovered the essence of the problem.
+     For me, the form:
 
-3.1: X Window System & Resources
-================================
+               (with-temp-buffer
+                 (insert-file-contents "foo.xpm")
+                 (buffer-string))
 
-Q3.1.1: Where is a list of X resources?
----------------------------------------
+     returns the empty string.  This is because something somewhere
+     replaces the XPM data with a glyph -- I haven't figured out where
+     this occurs.
 
-   Search through the `NEWS' file for `X Resources'.  A fairly
-comprehensive list is given after it.
+   Kyle Jones <kyle_jones@wonderworks.com> replies:
 
-   In addition, an `app-defaults' file is supplied, `etc/Emacs.ad'
-listing the defaults.  The file `etc/sample.Xdefaults' gives a set of
-defaults that you might consider.  It is essentially the same as
-`etc/Emacs.ad' but some entries are slightly altered.  Be careful about
-installing the contents of this file into your `.Xdefaults' or
-`.Xresources' file if you use GNU Emacs under X11 as well.
+     Do this:
 
-\1f
-File: xemacs-faq.info,  Node: Q3.1.2,  Next: Q3.1.3,  Prev: Q3.1.1,  Up: Customization
-
-Q3.1.2: How can I detect a color display?
------------------------------------------
-
-   You can test the return value of the function `(device-class)', as
-in:
+              (setq format-alist nil)
 
-     (when (eq (device-class) 'color)
-       (set-face-foreground  'font-lock-comment-face "Grey")
-       (set-face-foreground  'font-lock-string-face  "Red")
-       ....
-       )
+     The image-mode stuff is gone from format-alist in the 21.4 branch,
+     praise be.
 
 \1f
-File: xemacs-faq.info,  Node: Q3.1.3,  Next: Q3.1.4,  Prev: Q3.1.2,  Up: Customization
+File: xemacs-faq.info,  Node: Q10.0.2,  Prev: Q10.0.1,  Up: Legacy Versions
 
-Q3.1.3: [This question intentionally left blank]
-------------------------------------------------
+Q10.0.2: XEmacs won't start on Windows in XEmacs 21.1.
+------------------------------------------------------
 
-\1f
-File: xemacs-faq.info,  Node: Q3.1.4,  Next: Q3.1.5,  Prev: Q3.1.3,  Up: Customization
+XEmacs relies on a process called "dumping" to generate a working
+executable. Under MS-Windows this process effectively fixes the memory
+addresses of information in the executable. When XEmacs starts up it
+tries to reserve these memory addresses so that the dumping process can
+be reversed - putting the information back at the correct addresses.
+Unfortunately some .DLLs (for instance the soundblaster driver) occupy
+memory addresses that can conflict with those needed by the dumped
+XEmacs executable. In this instance XEmacs will fail to start without
+any explanation. Note that this is extremely machine specific.
+
+   21.1.10 includes a fix for this that makes more intelligent guesses
+about which memory addresses will be free, and this should cure the
+problem for most people.  21.4 implements "portable dumping", which
+eliminates the problem altogether.  We recommend you use the 21.4
+binaries, but you can use the 21.1 binaries if you are very paranoid
+about stability.  *Note Are binaries available?: Q1.1.2.
 
-Q3.1.4: [This question intentionally left blank]
-------------------------------------------------
 
index 50b49e1..d65b592 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.6 from
+This is ../info/xemacs.info, produced by makeinfo version 4.8 from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -32,389 +32,392 @@ translation approved by the author instead of in the original English.
 \1f
 Indirect:
 xemacs.info-1: 1350
-xemacs.info-2: 301112
-xemacs.info-3: 599878
-xemacs.info-4: 892425
+xemacs.info-2: 300252
+xemacs.info-3: 597167
+xemacs.info-4: 890494
 \1f
 Tag Table:
 (Indirect)
 Node: Top\7f1350
-Node: License\7f22903
-Node: Distrib\7f36178
-Node: Intro\7f37836
-Node: Frame\7f40704
-Node: Point\7f44750
-Node: Echo Area\7f46715
-Node: Mode Line\7f49089
-Node: GUI Components\7f53517
-Node: Menubar Basics\7f54795
-Node: Scrollbar Basics\7f56708
-Node: Mode Line Basics\7f57599
-Node: Toolbar Basics\7f58428
-Node: Gutter Basics\7f59092
-Node: Inhibiting\7f61491
-Node: Customizing\7f63859
-Node: XEmacs under X\7f64105
-Node: XEmacs under MS Windows\7f67391
-Node: Keystrokes\7f67803
-Node: Intro to Keystrokes\7f68647
-Node: Representing Keystrokes\7f70747
-Node: Key Sequences\7f72105
-Node: String Key Sequences\7f75443
-Node: Meta Key\7f75823
-Node: Super and Hyper Keys\7f77294
-Node: Character Representation\7f83536
-Node: Commands\7f84553
-Node: Pull-down Menus\7f87398
-Node: File Menu\7f90744
-Node: Edit Menu\7f94563
-Node: Apps Menu\7f96943
-Node: Options Menu\7f97430
-Node: Buffers Menu\7f101445
-Node: Tools Menu\7f101749
-Node: Help Menu\7f102237
-Node: Menu Customization\7f102635
-Node: Entering Emacs\7f106863
-Node: Exiting\7f109756
-Node: Command Switches\7f114226
-Node: Startup Paths\7f124238
-Node: Basic\7f131556
-Node: Inserting Text\7f132957
-Node: Moving Point\7f135950
-Node: Erasing\7f139553
-Node: Basic Files\7f140858
-Node: Basic Help\7f142777
-Node: Blank Lines\7f143369
-Node: Continuation Lines\7f144942
-Node: Position Info\7f146606
-Node: Arguments\7f150019
-Node: Undo\7f154115
-Node: Minibuffer\7f157059
-Node: Minibuffer File\7f159666
-Node: Minibuffer Edit\7f161468
-Node: Completion\7f164406
-Node: Completion Example\7f166334
-Node: Completion Commands\7f167426
-Node: Strict Completion\7f170399
-Node: Completion Options\7f172177
-Node: Minibuffer History\7f173682
-Node: Repetition\7f176863
-Node: M-x\7f179705
-Node: Help\7f184797
-Node: Help Summary\7f186204
-Node: Key Help\7f188990
-Node: Name Help\7f189946
-Node: Apropos\7f192587
-Node: Library Keywords\7f195706
-Node: Help Mode\7f198024
-Node: Misc Help\7f198518
-Node: Mark\7f201663
-Node: Setting Mark\7f203511
-Node: Using Region\7f206630
-Node: Marking Objects\7f207364
-Node: Mark Ring\7f209199
-Node: Mouse Selection\7f210912
-Node: Additional Mouse Operations\7f212916
-Node: Killing\7f217117
-Node: Yanking\7f222750
-Node: Kill Ring\7f223550
-Node: Appending Kills\7f225149
-Node: Earlier Kills\7f227183
-Node: Using X Selections\7f229793
-Node: X Clipboard Selection\7f231040
-Node: X Selection Commands\7f233214
-Node: X Cut Buffers\7f234300
-Node: Active Regions\7f235656
-Node: Accumulating Text\7f240233
-Node: Rectangles\7f243303
-Node: Registers\7f246818
-Node: RegPos\7f248270
-Node: RegText\7f249423
-Node: RegRect\7f250526
-Node: RegConfig\7f251402
-Node: RegNumbers\7f252339
-Node: RegFiles\7f253054
-Node: Bookmarks\7f253709
-Node: Display\7f257078
-Node: Scrolling\7f258570
-Node: Horizontal Scrolling\7f262710
-Node: Selective Display\7f263902
-Node: Display Vars\7f265118
-Node: Search\7f267793
-Node: Incremental Search\7f268983
-Node: Non-Incremental Search\7f277906
-Node: Word Search\7f279345
-Node: Regexp Search\7f280960
-Node: Regexps\7f283327
-Node: Search Case\7f297322
-Node: Replace\7f298100
-Node: Unconditional Replace\7f299045
-Node: Regexp Replace\7f300180
-Node: Replacement and Case\7f301112
-Node: Query Replace\7f302089
-Node: Other Repeating Search\7f305339
-Node: Fixit\7f306590
-Node: Kill Errors\7f307167
-Node: Transpose\7f308500
-Node: Fixing Case\7f310904
-Node: Spelling\7f311550
-Node: Files\7f313011
-Node: File Names\7f314969
-Node: Visiting\7f319961
-Node: Saving\7f326793
-Node: Backup\7f331713
-Node: Backup Names\7f333105
-Node: Backup Deletion\7f334585
-Node: Backup Copying\7f335732
-Node: Interlocking\7f337435
-Node: Reverting\7f341560
-Node: Auto Save\7f343579
-Node: Auto Save Files\7f344542
-Node: Auto Save Control\7f346380
-Node: Recover\7f348215
-Node: Version Control\7f349367
-Node: Concepts of VC\7f351402
-Node: Editing with VC\7f353009
-Node: Variables for Check-in/out\7f358262
-Node: Log Entries\7f360158
-Node: Change Logs and VC\7f361335
-Node: Old Versions\7f364599
-Node: VC Status\7f366602
-Node: Renaming and VC\7f368313
-Node: Snapshots\7f368988
-Node: Making Snapshots\7f369486
-Node: Snapshot Caveats\7f370776
-Node: Version Headers\7f372582
-Node: ListDir\7f375278
-Node: Comparing Files\7f377324
-Node: Dired\7f378854
-Node: Dired Enter\7f379522
-Node: Dired Edit\7f380344
-Node: Dired Deletion\7f382089
-Node: Dired Immed\7f385309
-Node: Misc File Ops\7f386582
-Node: Buffers\7f389068
-Node: Select Buffer\7f391222
-Node: List Buffers\7f393017
-Node: Misc Buffer\7f394775
-Node: Kill Buffer\7f396418
-Node: Several Buffers\7f397545
-Node: Windows\7f401409
-Node: Basic Window\7f402117
-Node: Split Window\7f403833
-Node: Other Window\7f405966
-Node: Pop Up Window\7f408397
-Node: Change Window\7f409899
-Node: Mule\7f412807
-Node: Mule Intro\7f414126
-Node: Language Environments\7f417956
-Node: Input Methods\7f420217
-Node: Select Input Method\7f423934
-Node: Mule and Fonts\7f426089
-Node: Coding Systems\7f428626
-Node: Recognize Coding\7f432930
-Node: Specify Coding\7f436253
-Node: Major Modes\7f441315
-Node: Choosing Modes\7f443530
-Node: Indentation\7f445917
-Node: Indentation Commands\7f448012
-Node: Tab Stops\7f450738
-Node: Just Spaces\7f452584
-Node: Text\7f453396
-Node: Text Mode\7f455376
-Node: Nroff Mode\7f457453
-Node: TeX Mode\7f459093
-Node: TeX Editing\7f461342
-Node: TeX Print\7f464773
-Node: Outline Mode\7f467989
-Node: Outline Format\7f469467
-Node: Outline Motion\7f472264
-Node: Outline Visibility\7f473814
-Node: Words\7f476732
-Node: Sentences\7f479676
-Node: Paragraphs\7f481869
-Node: Pages\7f484154
-Node: Filling\7f486751
-Node: Auto Fill\7f487319
-Node: Fill Commands\7f489463
-Node: Fill Prefix\7f491628
-Node: Case\7f493813
-Node: Programs\7f495838
-Node: Program Modes\7f498385
-Node: Lists\7f500614
-Node: Defuns\7f506451
-Node: Grinding\7f509101
-Node: Basic Indent\7f509726
-Node: Multi-line Indent\7f511747
-Node: Lisp Indent\7f513360
-Node: C Indent\7f516807
-Node: Matching\7f522044
-Node: Comments\7f523563
-Node: Balanced Editing\7f530006
-Node: Lisp Completion\7f531020
-Node: Documentation\7f532032
-Node: Change Log\7f533268
-Node: Tags\7f535843
-Node: Tag Syntax\7f537602
-Node: Create Tags Table\7f542299
-Node: Etags Regexps\7f546357
-Node: Select Tags Table\7f551013
-Node: Find Tag\7f554783
-Node: Tags Search\7f557744
-Node: List Tags\7f561197
-Node: Fortran\7f562226
-Node: Fortran Motion\7f563299
-Node: Fortran Indent\7f564116
-Node: ForIndent Commands\7f564797
-Node: ForIndent Num\7f565942
-Node: ForIndent Conv\7f567212
-Node: ForIndent Vars\7f567985
-Node: Fortran Comments\7f569150
-Node: Fortran Columns\7f572745
-Node: Fortran Abbrev\7f574168
-Node: Asm Mode\7f575074
-Node: Running\7f575623
-Node: Compilation\7f576589
-Node: Lisp Modes\7f581436
-Node: Lisp Libraries\7f582706
-Node: Loading\7f583257
-Node: Compiling Libraries\7f587717
-Node: Mocklisp\7f590605
-Node: Lisp Eval\7f591279
-Node: Lisp Debug\7f594513
-Node: Lisp Interaction\7f599878
-Node: External Lisp\7f601230
-Node: Packages\7f603302
-Node: Package Terminology\7f604172
-Node: Installing Packages\7f605770
-Node: Automatically\7f608470
-Node: Manually\7f613151
-Node: Sumo\7f614518
-Node: Which Packages\7f615419
-Node: Removing Packages\7f616227
-Node: Building Packages\7f616911
-Node: Local.rules File\7f618019
-Node: Available Packages\7f618515
-Node: Abbrevs\7f626515
-Node: Defining Abbrevs\7f628711
-Node: Expanding Abbrevs\7f631158
-Node: Editing Abbrevs\7f633858
-Node: Saving Abbrevs\7f635731
-Node: Dynamic Abbrevs\7f637683
-Node: Picture\7f638982
-Node: Basic Picture\7f641412
-Node: Insert in Picture\7f643694
-Node: Tabs in Picture\7f645113
-Node: Rectangles in Picture\7f646631
-Node: Sending Mail\7f648536
-Node: Mail Format\7f650244
-Node: Mail Headers\7f651591
-Node: Mail Mode\7f657996
-Node: Reading Mail\7f661606
-Node: Calendar/Diary\7f663308
-Node: Calendar Motion\7f664979
-Node: Calendar Unit Motion\7f665859
-Node: Move to Beginning or End\7f668179
-Node: Specified Dates\7f669309
-Node: Scroll Calendar\7f670194
-Node: Mark and Region\7f671983
-Node: General Calendar\7f673886
-Node: LaTeX Calendar\7f675494
-Node: Holidays\7f677505
-Node: Sunrise/Sunset\7f680604
-Node: Lunar Phases\7f683640
-Node: Other Calendars\7f685022
-Node: Calendar Systems\7f686506
-Node: To Other Calendar\7f689614
-Node: From Other Calendar\7f691602
-Node: Mayan Calendar\7f693903
-Node: Diary\7f697095
-Node: Diary Commands\7f698841
-Node: Format of Diary File\7f702161
-Node: Date Formats\7f705028
-Node: Adding to Diary\7f707599
-Node: Special Diary Entries\7f709227
-Node: Calendar Customization\7f714563
-Node: Calendar Customizing\7f715422
-Node: Holiday Customizing\7f718654
-Node: Date Display Format\7f725137
-Node: Time Display Format\7f726093
-Node: Daylight Savings\7f727228
-Node: Diary Customizing\7f730413
-Node: Hebrew/Islamic Entries\7f735031
-Node: Fancy Diary Display\7f738368
-Node: Included Diary Files\7f740281
-Node: Sexp Diary Entries\7f741259
-Node: Appt Customizing\7f746346
-Node: Sorting\7f747389
-Node: Shell\7f752192
-Node: Single Shell\7f753482
-Node: Interactive Shell\7f755094
-Node: Shell Mode\7f758856
-Node: Terminal emulator\7f761344
-Node: Term Mode\7f763650
-Node: Paging in Term\7f764561
-Node: Narrowing\7f765356
-Node: Hardcopy\7f767302
-Node: Recursive Edit\7f768271
-Node: Dissociated Press\7f771255
-Node: CONX\7f773815
-Node: Amusements\7f774836
-Node: Emulation\7f775313
-Node: Customization\7f777169
-Node: Minor Modes\7f778982
-Node: Variables\7f780611
-Node: Examining\7f782564
-Node: Easy Customization\7f784025
-Node: Customization Groups\7f785073
-Node: Changing an Option\7f788012
-Node: Face Customization\7f794279
-Node: Specific Customization\7f796170
-Node: Edit Options\7f798774
-Node: Locals\7f800358
-Node: File Variables\7f803537
-Node: Keyboard Macros\7f808085
-Node: Basic Kbd Macro\7f810253
-Node: Save Kbd Macro\7f812181
-Node: Kbd Macro Query\7f813836
-Node: Key Bindings\7f815775
-Node: Keymaps\7f816646
-Node: Rebinding\7f820499
-Node: Interactive Rebinding\7f821196
-Node: Programmatic Rebinding\7f823385
-Node: Key Bindings Using Strings\7f826189
-Node: Disabling\7f827813
-Node: Syntax\7f829589
-Node: Syntax Entry\7f830467
-Node: Syntax Change\7f834635
-Node: Init File\7f836801
-Node: Init Syntax\7f838262
-Node: Init Examples\7f840610
-Node: Terminal Init\7f844797
-Node: Audible Bell\7f846531
-Node: Faces\7f849959
-Node: Frame Components\7f855959
-Node: X Resources\7f856401
-Node: Geometry Resources\7f858059
-Node: Iconic Resources\7f860504
-Node: Resource List\7f860973
-Node: Face Resources\7f867477
-Node: Widgets\7f871151
-Node: Menubar Resources\7f872087
-Node: Quitting\7f873598
-Node: Lossage\7f876576
-Node: Stuck Recursive\7f877217
-Node: Screen Garbled\7f877920
-Node: Text Garbled\7f879051
-Node: Unasked-for Search\7f879687
-Node: Emergency Escape\7f880469
-Node: Total Frustration\7f882245
-Node: Bugs\7f882873
-Node: Glossary\7f892425
-Node: Manifesto\7f924079
-Node: Key Index\7f947534
-Node: Command Index\7f973461
-Node: Variable Index\7f1016047
-Node: Concept Index\7f1032238
+Node: License\7f22916
+Node: Distrib\7f36163
+Node: Intro\7f37821
+Node: Frame\7f40689
+Node: Point\7f44739
+Node: Echo Area\7f46712
+Node: Mode Line\7f49094
+Node: GUI Components\7f53530
+Node: Menubar Basics\7f54816
+Node: Scrollbar Basics\7f56737
+Node: Mode Line Basics\7f57636
+Node: Toolbar Basics\7f58473
+Node: Gutter Basics\7f59145
+Node: Inhibiting\7f61552
+Node: Customizing\7f63930
+Node: XEmacs under X\7f64186
+Node: XEmacs under MS Windows\7f67482
+Node: Keystrokes\7f67904
+Node: Intro to Keystrokes\7f68752
+Node: Representing Keystrokes\7f70860
+Node: Key Sequences\7f72230
+Node: String Key Sequences\7f75580
+Node: Meta Key\7f75972
+Node: Super and Hyper Keys\7f77455
+Node: Character Representation\7f83709
+Node: Commands\7f84734
+Node: Pull-down Menus\7f87587
+Node: File Menu\7f90958
+Node: Edit Menu\7f94789
+Node: Apps Menu\7f97181
+Node: Options Menu\7f97680
+Node: Buffers Menu\7f101707
+Node: Tools Menu\7f102023
+Node: Help Menu\7f102523
+Node: Menu Customization\7f102933
+Node: Entering Emacs\7f107173
+Node: Exiting\7f110070
+Node: Command Switches\7f114548
+Node: Startup Paths\7f124604
+Node: Basic\7f131972
+Node: Inserting Text\7f133377
+Node: Moving Point\7f136378
+Node: Erasing\7f139989
+Node: Basic Files\7f141302
+Node: Basic Help\7f143229
+Node: Blank Lines\7f143829
+Node: Continuation Lines\7f145410
+Node: Position Info\7f147082
+Node: Arguments\7f150503
+Node: Undo\7f154609
+Node: Minibuffer\7f157557
+Node: Minibuffer File\7f160168
+Node: Minibuffer Edit\7f161978
+Node: Completion\7f164924
+Node: Completion Example\7f166860
+Node: Completion Commands\7f167964
+Node: Strict Completion\7f170949
+Node: Completion Options\7f172739
+Node: Minibuffer History\7f174256
+Node: Repetition\7f177445
+Node: M-x\7f180295
+Node: Help\7f185391
+Node: Help Summary\7f186802
+Node: Key Help\7f189596
+Node: Name Help\7f190560
+Node: Apropos\7f193209
+Node: Library Keywords\7f196336
+Node: Help Mode\7f198662
+Node: Misc Help\7f199164
+Node: Mark\7f202422
+Node: Setting Mark\7f204282
+Node: Using Region\7f207413
+Node: Marking Objects\7f208159
+Node: Mark Ring\7f210006
+Node: Mouse Selection\7f211731
+Node: Additional Mouse Operations\7f213743
+Node: Killing\7f217952
+Node: Yanking\7f223629
+Node: Kill Ring\7f224437
+Node: Appending Kills\7f226048
+Node: Earlier Kills\7f228094
+Node: Using X Selections\7f230716
+Node: X Clipboard Selection\7f231971
+Node: X Selection Commands\7f234157
+Node: X Cut Buffers\7f235255
+Node: Active Regions\7f236623
+Node: Accumulating Text\7f241212
+Node: Rectangles\7f244290
+Node: Registers\7f247813
+Node: RegPos\7f249271
+Node: RegText\7f250434
+Node: RegRect\7f251547
+Node: RegConfig\7f252433
+Node: RegNumbers\7f253380
+Node: RegFiles\7f254105
+Node: Bookmarks\7f254770
+Node: Display\7f258149
+Node: Scrolling\7f259647
+Node: Horizontal Scrolling\7f263797
+Node: Selective Display\7f264999
+Node: Display Vars\7f266225
+Node: Search\7f268910
+Node: Incremental Search\7f270106
+Node: Non-Incremental Search\7f279053
+Node: Word Search\7f280502
+Node: Regexp Search\7f282127
+Node: Regexps\7f284504
+Node: Search Case\7f298509
+Node: Replace\7f299297
+Node: Unconditional Replace\7f300252
+Node: Regexp Replace\7f301401
+Node: Replacement and Case\7f302347
+Node: Query Replace\7f303338
+Node: Other Repeating Search\7f306602
+Node: Fixit\7f307863
+Node: Kill Errors\7f308446
+Node: Transpose\7f309789
+Node: Fixing Case\7f312203
+Node: Spelling\7f312859
+Node: Files\7f314330
+Node: File Names\7f316294
+Node: Visiting\7f321296
+Node: Saving\7f328138
+Node: Backup\7f333068
+Node: Backup Names\7f334474
+Node: Backup Deletion\7f335972
+Node: Backup Copying\7f337137
+Node: Interlocking\7f338858
+Node: Reverting\7f342997
+Node: Auto Save\7f345026
+Node: Auto Save Files\7f345999
+Node: Auto Save Control\7f347851
+Node: Recover\7f349700
+Node: Version Control\7f350866
+Node: Concepts of VC\7f352911
+Node: Editing with VC\7f354532
+Node: Variables for Check-in/out\7f359799
+Node: Log Entries\7f361709
+Node: Change Logs and VC\7f362900
+Node: Old Versions\7f366153
+Node: VC Status\7f368170
+Node: Renaming and VC\7f369895
+Node: Snapshots\7f370584
+Node: Making Snapshots\7f371096
+Node: Snapshot Caveats\7f372404
+Node: Version Headers\7f374228
+Node: ListDir\7f376940
+Node: Comparing Files\7f378996
+Node: Dired\7f380536
+Node: Dired Enter\7f381214
+Node: Dired Edit\7f382050
+Node: Dired Deletion\7f383809
+Node: Dired Immed\7f387043
+Node: Misc File Ops\7f388330
+Node: Buffers\7f390828
+Node: Select Buffer\7f392988
+Node: List Buffers\7f394793
+Node: Misc Buffer\7f396561
+Node: Kill Buffer\7f398214
+Node: Several Buffers\7f399351
+Node: Windows\7f403225
+Node: Basic Window\7f403939
+Node: Split Window\7f405665
+Node: Other Window\7f407808
+Node: Pop Up Window\7f410249
+Node: Change Window\7f411761
+Node: Mule\7f414679
+Node: Mule Intro\7f416004
+Node: Language Environments\7f419844
+Node: Input Methods\7f422115
+Node: Select Input Method\7f425842
+Node: Mule and Fonts\7f428007
+Node: Coding Systems\7f430554
+Node: Recognize Coding\7f434868
+Node: Specify Coding\7f438201
+Node: Major Modes\7f443273
+Node: Choosing Modes\7f445588
+Node: Mode Hooks\7f448004
+Node: Indentation\7f449606
+Node: Indentation Commands\7f451707
+Node: Tab Stops\7f454443
+Node: Just Spaces\7f456299
+Node: Text\7f457121
+Node: Text Mode\7f459107
+Node: Nroff Mode\7f461194
+Node: TeX Mode\7f462848
+Node: TeX Editing\7f465111
+Node: TeX Print\7f468560
+Node: Outline Mode\7f471794
+Node: Outline Format\7f473286
+Node: Outline Motion\7f476061
+Node: Outline Visibility\7f477629
+Node: Words\7f480565
+Node: Sentences\7f483519
+Node: Paragraphs\7f485722
+Node: Pages\7f488017
+Node: Filling\7f490624
+Node: Auto Fill\7f491202
+Node: Fill Commands\7f493360
+Node: Fill Prefix\7f495539
+Node: Case\7f497738
+Node: Programs\7f499773
+Node: Program Modes\7f502472
+Node: Lists\7f505715
+Node: Defuns\7f511189
+Node: Grinding\7f513849
+Node: Basic Indent\7f514428
+Node: Multi-line Indent\7f516463
+Node: Lisp Indent\7f518090
+Node: Matching\7f521533
+Node: Comments\7f523062
+Node: Balanced Editing\7f529543
+Node: Lisp Completion\7f530567
+Node: Documentation\7f531589
+Node: Change Log\7f532835
+Node: Tags\7f535402
+Node: Tag Syntax\7f537173
+Node: Create Tags Table\7f541886
+Node: Etags Regexps\7f545960
+Node: Select Tags Table\7f550632
+Node: Find Tag\7f554418
+Node: Tags Search\7f557395
+Node: List Tags\7f560864
+Node: CC Mode\7f561909
+Node: Older Modes\7f563589
+Node: Customizing CC Mode\7f564907
+Node: Fortran\7f567847
+Node: Fortran Motion\7f568935
+Node: Fortran Indent\7f569768
+Node: ForIndent Commands\7f570465
+Node: ForIndent Num\7f571630
+Node: ForIndent Conv\7f572920
+Node: ForIndent Vars\7f573713
+Node: Fortran Comments\7f574898
+Node: Fortran Columns\7f578509
+Node: Fortran Abbrev\7f579948
+Node: Asm Mode\7f580870
+Node: Running\7f581431
+Node: Compilation\7f582403
+Node: Lisp Modes\7f587260
+Node: Lisp Libraries\7f588540
+Node: Loading\7f589101
+Node: Compiling Libraries\7f593575
+Node: Mocklisp\7f596479
+Node: Lisp Eval\7f597167
+Node: Lisp Debug\7f600411
+Node: Lisp Interaction\7f605786
+Node: External Lisp\7f607148
+Node: Packages\7f609230
+Node: Package Terminology\7f610110
+Node: Installing Packages\7f611764
+Node: Automatically\7f614506
+Node: Manually\7f619177
+Node: Sumo\7f620524
+Node: Which Packages\7f621425
+Node: Removing Packages\7f622233
+Node: Building Packages\7f622917
+Node: Local.rules File\7f624053
+Node: Available Packages\7f624549
+Node: Abbrevs\7f632581
+Node: Defining Abbrevs\7f634783
+Node: Expanding Abbrevs\7f637240
+Node: Editing Abbrevs\7f639950
+Node: Saving Abbrevs\7f641833
+Node: Dynamic Abbrevs\7f643795
+Node: Picture\7f645104
+Node: Basic Picture\7f647540
+Node: Insert in Picture\7f649832
+Node: Tabs in Picture\7f651261
+Node: Rectangles in Picture\7f652789
+Node: Sending Mail\7f654704
+Node: Mail Format\7f656418
+Node: Mail Headers\7f657775
+Node: Mail Mode\7f664190
+Node: Reading Mail\7f667810
+Node: Calendar/Diary\7f669518
+Node: Calendar Motion\7f671199
+Node: Calendar Unit Motion\7f672093
+Node: Move to Beginning or End\7f674431
+Node: Specified Dates\7f675589
+Node: Scroll Calendar\7f676492
+Node: Mark and Region\7f678295
+Node: General Calendar\7f680212
+Node: LaTeX Calendar\7f681834
+Node: Holidays\7f683855
+Node: Sunrise/Sunset\7f686968
+Node: Lunar Phases\7f690018
+Node: Other Calendars\7f691414
+Node: Calendar Systems\7f692912
+Node: To Other Calendar\7f696030
+Node: From Other Calendar\7f698050
+Node: Mayan Calendar\7f700361
+Node: Diary\7f703567
+Node: Diary Commands\7f705327
+Node: Format of Diary File\7f708661
+Node: Date Formats\7f711542
+Node: Adding to Diary\7f714127
+Node: Special Diary Entries\7f715769
+Node: Calendar Customization\7f721119
+Node: Calendar Customizing\7f721992
+Node: Holiday Customizing\7f725242
+Node: Date Display Format\7f731743
+Node: Time Display Format\7f732716
+Node: Daylight Savings\7f733869
+Node: Diary Customizing\7f737072
+Node: Hebrew/Islamic Entries\7f741708
+Node: Fancy Diary Display\7f745063
+Node: Included Diary Files\7f746994
+Node: Sexp Diary Entries\7f747990
+Node: Appt Customizing\7f753097
+Node: Sorting\7f754160
+Node: Shell\7f758973
+Node: Single Shell\7f760273
+Node: Interactive Shell\7f761899
+Node: Shell Mode\7f765675
+Node: Terminal emulator\7f768177
+Node: Term Mode\7f770497
+Node: Paging in Term\7f771422
+Node: Narrowing\7f772231
+Node: Hardcopy\7f774187
+Node: Recursive Edit\7f775166
+Node: Dissociated Press\7f778162
+Node: CONX\7f780734
+Node: Amusements\7f781767
+Node: Emulation\7f782256
+Node: Customization\7f784124
+Node: Minor Modes\7f785943
+Node: Variables\7f787582
+Node: Examining\7f789545
+Node: Easy Customization\7f791017
+Node: Customization Groups\7f792079
+Node: Changing an Option\7f795016
+Node: Face Customization\7f801301
+Node: Specific Customization\7f803210
+Node: Edit Options\7f805832
+Node: Locals\7f807430
+Node: File Variables\7f810623
+Node: Keyboard Macros\7f815185
+Node: Basic Kbd Macro\7f817363
+Node: Save Kbd Macro\7f819305
+Node: Kbd Macro Query\7f820974
+Node: Key Bindings\7f822927
+Node: Keymaps\7f823810
+Node: Rebinding\7f827677
+Node: Interactive Rebinding\7f828388
+Node: Programmatic Rebinding\7f830595
+Node: Key Bindings Using Strings\7f833397
+Node: Disabling\7f835039
+Node: Syntax\7f836829
+Node: Syntax Entry\7f837717
+Node: Syntax Change\7f841899
+Node: Init File\7f844079
+Node: Init Syntax\7f845550
+Node: Init Examples\7f847912
+Node: Terminal Init\7f852113
+Node: Audible Bell\7f853861
+Node: Faces\7f857301
+Node: Frame Components\7f863325
+Node: X Resources\7f863777
+Node: Geometry Resources\7f865451
+Node: Iconic Resources\7f867919
+Node: Resource List\7f868404
+Node: Face Resources\7f874924
+Node: Widgets\7f878620
+Node: Menubar Resources\7f879572
+Node: Quitting\7f881099
+Node: Lossage\7f884089
+Node: Stuck Recursive\7f884742
+Node: Screen Garbled\7f885461
+Node: Text Garbled\7f886608
+Node: Unasked-for Search\7f887260
+Node: Emergency Escape\7f888058
+Node: Total Frustration\7f889850
+Node: Bugs\7f890494
+Node: Glossary\7f900090
+Node: Manifesto\7f931744
+Node: Key Index\7f955199
+Node: Command Index\7f991671
+Node: Variable Index\7f1053867
+Node: Concept Index\7f1076231
 \1f
 End Tag Table
index 16c530e..c1c7f7c 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.6 from
+This is ../info/xemacs.info, produced by makeinfo version 4.8 from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -401,6 +401,7 @@ Editing Programs
 * Change Log::          Maintaining a change history for your program.
 * Tags::                Go directly to any function in your program in one
                          command.  Tags remembers which file it is in.
+* CC Mode::             Modes for C, C++, Java and similar languages
 * Fortran::            Fortran mode and its special features.
 * Asm Mode::            Asm mode and its special features.
 
@@ -409,7 +410,6 @@ Indentation for Programs
 * Basic Indent::
 * Multi-line Indent::   Commands to reindent many lines at once.
 * Lisp Indent::                Specifying how each Lisp function should be indented.
-* C Indent::           Choosing an indentation style for C code.
 
 Tags Tables
 
@@ -551,10 +551,9 @@ GNU GENERAL PUBLIC LICENSE
 **************************
 
                        Version 1, February 1989
-
      Copyright (C) 1989 Free Software Foundation, Inc.
      675 Mass Ave, Cambridge, MA 02139, USA
-     
+
      Everyone is permitted to copy and distribute verbatim copies
      of this license document, but changing it is not allowed.
 
@@ -723,7 +722,6 @@ modification follow.
      and reuse of software generally.
 
                                 NO WARRANTY
-
  10. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
      WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
      LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
@@ -747,7 +745,6 @@ modification follow.
      ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 
                       END OF TERMS AND CONDITIONS
-
 Appendix: How to Apply These Terms to Your New Programs
 =======================================================
 
@@ -763,17 +760,17 @@ convey the exclusion of warranty; and each file should have at least the
 
      ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
      Copyright (C) 19YY  NAME OF AUTHOR
-     
+
      This program is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published by
      the Free Software Foundation; either version 1, or (at your option)
      any later version.
-     
+
      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.
-     
+
      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
@@ -802,7 +799,7 @@ if necessary.  Here a sample; alter the names:
      Yoyodyne, Inc., hereby disclaims all copyright interest in the
      program `Gnomovision' (a program to direct compilers to make passes
      at assemblers) written by James Hacker.
-     
+
      SIGNATURE OF TY COON, 1 April 1989
      Ty Coon, President of Vice
 
@@ -905,8 +902,8 @@ anybody can use it afterward.
 \1f
 File: xemacs.info,  Node: Frame,  Next: Keystrokes,  Prev: Concept Index,  Up: Top
 
-The XEmacs Frame
-****************
+1 The XEmacs Frame
+******************
 
 Frame
      In many environments, such as a tty terminal, an XEmacs frame
@@ -990,8 +987,8 @@ visible in all XEmacs windows containing that buffer.
 \1f
 File: xemacs.info,  Node: Point,  Next: Echo Area,  Prev: Frame,  Up: Frame
 
-Point
-=====
+1.1 Point
+=========
 
 When XEmacs is running, the cursor shows the location at which editing
 commands will take effect.  This location is called "point".  You can
@@ -1032,8 +1029,8 @@ accessing the value now called `point'.
 \1f
 File: xemacs.info,  Node: Echo Area,  Next: Mode Line,  Prev: Point,  Up: Frame
 
-The Echo Area
-=============
+1.2 The Echo Area
+=================
 
 The line at the bottom of the frame (below the mode line) is the "echo
 area".  XEmacs uses this area to communicate with the user:
@@ -1077,8 +1074,8 @@ area".  XEmacs uses this area to communicate with the user:
 \1f
 File: xemacs.info,  Node: Mode Line,  Next: GUI Components,  Prev: Echo Area,  Up: Frame
 
-The Mode Line
-=============
+1.3 The Mode Line
+=================
 
 Each text window's last line is a "mode line" which describes what is
 going on in that window.  When there is only one text window, the mode
@@ -1169,8 +1166,8 @@ appropriately.
 \1f
 File: xemacs.info,  Node: GUI Components,  Next: XEmacs under X,  Prev: Mode Line,  Up: Frame
 
-GUI Components
-==============
+1.4 GUI Components
+==================
 
 When executed in a graphical windowing environment such as the X Window
 System or Microsoft Windows, XEmacs displays several graphical user
@@ -1197,8 +1194,8 @@ function, and on a tab in the gutter to switch buffers.
 \1f
 File: xemacs.info,  Node: Menubar Basics,  Next: Scrollbar Basics,  Up: GUI Components
 
-The XEmacs Menubar
-==================
+1.5 The XEmacs Menubar
+======================
 
 The XEmacs menubar is intended to be conformant to the usual conventions
 for menubars, although conformance is not yet perfect.  The menu at the
@@ -1233,8 +1230,8 @@ XEmacsen, the `Mule' menu will be moved under `Options'.)
 \1f
 File: xemacs.info,  Node: Scrollbar Basics,  Next: Mode Line Basics,  Prev: Menubar Basics,  Up: GUI Components
 
-XEmacs Scrollbars
-=================
+1.6 XEmacs Scrollbars
+=====================
 
 XEmacs scrollbars provide the usual interface.  Arrow buttons at either
 end allow for line by line scrolling, including autorepeat.  Clicking in
@@ -1254,8 +1251,8 @@ horizontal scrollbar.
 \1f
 File: xemacs.info,  Node: Mode Line Basics,  Next: Toolbar Basics,  Prev: Scrollbar Basics,  Up: GUI Components
 
-XEmacs Mode Lines
-=================
+1.7 XEmacs Mode Lines
+=====================
 
 When used in a windowing system, the XEmacs modelines can be dragged
 vertically. The effect is to resize the windows above and below the
@@ -1274,8 +1271,8 @@ the `Options' menu.
 \1f
 File: xemacs.info,  Node: Toolbar Basics,  Next: Gutter Basics,  Prev: Mode Line Basics,  Up: GUI Components
 
-XEmacs Toolbars
-===============
+1.8 XEmacs Toolbars
+===================
 
 XEmacs has a default toolbar which provides shortcuts for some of the
 commonly used operations (such as opening files) and applications (such
@@ -1290,8 +1287,8 @@ mail-specific operations like sending, saving, and deleting messages.
 \1f
 File: xemacs.info,  Node: Gutter Basics,  Next: Inhibiting,  Prev: Toolbar Basics,  Up: GUI Components
 
-XEmacs Gutters
-==============
+1.9 XEmacs Gutters
+==================
 
 Gutters are the most flexible of the GUI components described in this
 section.  In theory, the other GUI components could be implemented by
@@ -1336,8 +1333,8 @@ libraries.  These, and some more rarely customized options, are in the
 \1f
 File: xemacs.info,  Node: Inhibiting,  Next: Customizing,  Prev: Gutter Basics,  Up: GUI Components
 
-Inhibiting Display of GUI Components
-====================================
+1.10 Inhibiting Display of GUI Components
+=========================================
 
 Use of GUI facilities is a personal thing.  Almost everyone agrees that
 drawing via keyboard-based "turtle graphics" is acceptable to hardly
@@ -1380,16 +1377,16 @@ customize `left-toolbar-visible-p'.
 \1f
 File: xemacs.info,  Node: Customizing,  Prev: Inhibiting,  Up: GUI Components
 
-Changing the Position, Orientation, and Appearance of GUI Components
-====================================================================
+1.11 Changing the Position, Orientation, and Appearance of GUI Components
+=========================================================================
 
 #### Not documented yet.
 
 \1f
 File: xemacs.info,  Node: XEmacs under X,  Next: XEmacs under MS Windows,  Prev: GUI Components,  Up: Frame
 
-Using XEmacs Under the X Window System
-======================================
+1.12 Using XEmacs Under the X Window System
+===========================================
 
 XEmacs can be used with the X Window System and a window manager like
 MWM or TWM.  In that case, the X window manager opens, closes, and
@@ -1460,8 +1457,8 @@ applies:
 \1f
 File: xemacs.info,  Node: XEmacs under MS Windows,  Prev: XEmacs under X,  Up: Frame
 
-Using XEmacs Under Microsoft Windows
-====================================
+1.13 Using XEmacs Under Microsoft Windows
+=========================================
 
 Use of XEmacs under MS Windows is not separately documented here, but
 most operations available under the X Window System are also available
@@ -1473,8 +1470,8 @@ used in XEmacs.
 \1f
 File: xemacs.info,  Node: Keystrokes,  Next: Pull-down Menus,  Prev: Frame,  Up: Top
 
-Keystrokes, Key Sequences, and Key Bindings
-*******************************************
+2 Keystrokes, Key Sequences, and Key Bindings
+*********************************************
 
 * Menu:
 
@@ -1492,8 +1489,8 @@ Keystrokes, Key Sequences, and Key Bindings
 \1f
 File: xemacs.info,  Node: Intro to Keystrokes,  Next: Representing Keystrokes,  Prev: Keystrokes,  Up: Keystrokes
 
-Keystrokes as Building Blocks of Key Sequences
-==============================================
+2.1 Keystrokes as Building Blocks of Key Sequences
+==================================================
 
 Earlier versions of Emacs used only the ASCII character set, which
 defines 128 different character codes.  Some of these codes are
@@ -1554,8 +1551,8 @@ instead.
 \1f
 File: xemacs.info,  Node: Representing Keystrokes,  Next: Key Sequences,  Prev: Intro to Keystrokes,  Up: Keystrokes
 
-Representing Keystrokes
------------------------
+2.1.1 Representing Keystrokes
+-----------------------------
 
 XEmacs represents keystrokes as lists. Each list consists of an
 arbitrary combination of modifiers followed by a single keysym at the
@@ -1591,8 +1588,8 @@ The correct forms are `A' and `+'.
 \1f
 File: xemacs.info,  Node: Key Sequences,  Next: String Key Sequences,  Prev: Representing Keystrokes,  Up: Keystrokes
 
-Representing Key Sequences
---------------------------
+2.1.2 Representing Key Sequences
+--------------------------------
 
 A "complete key sequence" is a sequence of keystrokes that Emacs
 understands as a unit.  Key sequences are significant because you can
@@ -1663,8 +1660,8 @@ far less clear.
 \1f
 File: xemacs.info,  Node: String Key Sequences,  Next: Meta Key,  Prev: Key Sequences,  Up: Keystrokes
 
-String Key Sequences
---------------------
+2.1.3 String Key Sequences
+--------------------------
 
 For backward compatibility, you may also represent a key sequence using
 strings.  For example, we have the following equivalent representations:
@@ -1678,8 +1675,8 @@ strings.  For example, we have the following equivalent representations:
 \1f
 File: xemacs.info,  Node: Meta Key,  Next: Super and Hyper Keys,  Prev: String Key Sequences,  Up: Keystrokes
 
-Assignment of the <META> Key
-----------------------------
+2.1.4 Assignment of the <META> Key
+----------------------------------
 
 Not all terminals have the complete set of modifiers.  Terminals that
 have a <Meta> key allow you to type Meta characters by just holding
@@ -1710,8 +1707,8 @@ the `meta-flag' variable is irrelevant.
 \1f
 File: xemacs.info,  Node: Super and Hyper Keys,  Next: Character Representation,  Prev: Meta Key,  Up: Keystrokes
 
-Assignment of the <SUPER> and <HYPER> Keys
-------------------------------------------
+2.1.5 Assignment of the <SUPER> and <HYPER> Keys
+------------------------------------------------
 
 Most keyboards do not, by default, have <SUPER> or <HYPER> modifier
 keys.  Under X, you can simulate the <SUPER> or <HYPER> key if you want
@@ -1842,8 +1839,8 @@ previously-unassigned modifier bit.
 \1f
 File: xemacs.info,  Node: Character Representation,  Next: Commands,  Prev: Super and Hyper Keys,  Up: Keystrokes
 
-Representation of Characters
-============================
+2.2 Representation of Characters
+================================
 
 This section briefly discusses how characters are represented in Emacs
 buffers.  *Note Key Sequences::, for information on representing key
@@ -1865,8 +1862,8 @@ Display Vars::.
 \1f
 File: xemacs.info,  Node: Commands,  Prev: Character Representation,  Up: Keystrokes
 
-Keys and Commands
-=================
+2.3 Keys and Commands
+=====================
 
 This manual is full of passages that tell you what particular keys do.
 But Emacs does not assign meanings to keys directly.  Instead, Emacs
@@ -1920,8 +1917,8 @@ Variables::.
 \1f
 File: xemacs.info,  Node: Pull-down Menus,  Next: Entering Emacs,  Prev: Keystrokes,  Up: Top
 
-XEmacs Pull-down Menus
-======================
+2.4 XEmacs Pull-down Menus
+==========================
 
 If you are running XEmacs under X, a menu bar on top of the Emacs frame
 provides access to pull-down menus of file, edit, and help-related
@@ -1933,35 +1930,35 @@ keyboard as in previous versions of Emacs.
 File
      Perform file and buffer-related operations, such as opening and
      closing files, saving and printing buffers, as well as exiting
-     Emacs.
+     Emacs.  
 
 Edit
      Perform standard editing operations, such as cutting, copying,
-     pasting, and killing selected text.
+     pasting, and killing selected text.  
 
 Apps
      Access to sub-applications implemented within XEmacs, such as the
      mail reader, the World Wide Web browser, the spell-checker, and
-     the calendar program.
+     the calendar program.  
 
 Options
      Control various options regarding the way XEmacs works, such as
      controlling which elements of the frame are visible, selecting the
      fonts to be used for text, specifying whether searches are
-     case-sensitive, etc.
+     case-sensitive, etc.  
 
 Buffers
      Present a menu of buffers for selection as well as the option to
-     display a buffer list.
+     display a buffer list.  
 
 Tools
      Perform various actions designed to automate software development
      and similar technical work, such as searching through many files,
-     compiling a program, and comparing or merging two or three files.
+     compiling a program, and comparing or merging two or three files.  
 
 Help
-     Access to Emacs Info.
-
+     Access to Emacs Info.  
+   
    There are two ways of selecting an item from a pull-down menu:
 
    * Select an item in the menu bar by moving the cursor over it and
@@ -2006,8 +2003,8 @@ separate window, usually together with some documentation.
 \1f
 File: xemacs.info,  Node: File Menu,  Next: Edit Menu,  Up: Pull-down Menus
 
-The File Menu
--------------
+2.4.1 The File Menu
+-------------------
 
 The File menu bar item contains the items New Frame, Open File..., Save
 Buffer, Save Buffer As..., Revert Buffer, Print Buffer, Delete Frame,
@@ -2097,8 +2094,8 @@ Exit Emacs
 \1f
 File: xemacs.info,  Node: Edit Menu,  Next: Apps Menu,  Prev: File Menu,  Up: Pull-down Menus
 
-The Edit Menu
--------------
+2.4.2 The Edit Menu
+-------------------
 
 The Edit pull-down menu contains the Undo, Cut, Copy, Paste, and Clear
 menu items.  When you select a menu item, Emacs executes the equivalent
@@ -2154,8 +2151,8 @@ Execute Last Macro
 \1f
 File: xemacs.info,  Node: Apps Menu,  Next: Options Menu,  Prev: Edit Menu,  Up: Pull-down Menus
 
-The Apps Menu
--------------
+2.4.3 The Apps Menu
+-------------------
 
 The Apps pull-down menu contains the Read Mail (VM)..., Read Mail
 (MH)..., Send Mail..., Usenet News, Browse the Web, Gopher, Spell-Check
@@ -2167,8 +2164,8 @@ select.
 \1f
 File: xemacs.info,  Node: Options Menu,  Next: Buffers Menu,  Prev: Apps Menu,  Up: Pull-down Menus
 
-The Options Menu
-----------------
+2.4.4 The Options Menu
+----------------------
 
 The Options pull-down menu contains the Read Only, Case Sensitive
 Search, Overstrike, Auto Delete Selection, Teach Extended Commands,
@@ -2258,8 +2255,8 @@ Save Options
 \1f
 File: xemacs.info,  Node: Buffers Menu,  Next: Tools Menu,  Prev: Options Menu,  Up: Pull-down Menus
 
-The Buffers Menu
-----------------
+2.4.5 The Buffers Menu
+----------------------
 
 The Buffers menu provides a selection of up to ten buffers and the item
 List All Buffers, which provides a Buffer List. *Note List Buffers::,
@@ -2268,8 +2265,8 @@ for more information.
 \1f
 File: xemacs.info,  Node: Tools Menu,  Next: Help Menu,  Prev: Buffers Menu,  Up: Pull-down Menus
 
-The Tools Menu
---------------
+2.4.6 The Tools Menu
+--------------------
 
 The Tools pull-down menu contains the Grep..., Compile..., Shell
 Command..., Shell Command on Region..., Debug(GDB)...  and
@@ -2281,8 +2278,8 @@ will need to select.
 \1f
 File: xemacs.info,  Node: Help Menu,  Next: Menu Customization,  Prev: Tools Menu,  Up: Pull-down Menus
 
-The Help Menu
--------------
+2.4.7 The Help Menu
+-------------------
 
 The Help Menu gives you access to Emacs Info and provides a menu
 equivalent for each of the choices you have when using `C-h'.  *Note
@@ -2294,8 +2291,8 @@ UNIX Manual Page option.
 \1f
 File: xemacs.info,  Node: Menu Customization,  Prev: Help Menu,  Up: Pull-down Menus
 
-Customizing XEmacs Menus
-------------------------
+2.4.8 Customizing XEmacs Menus
+------------------------------
 
 You can customize any of the pull-down menus by adding or removing menu
 items and disabling or enabling existing menu items.
@@ -2402,8 +2399,8 @@ selectable again, use `enable-menu-item'.  `disable-menu-item' and
 \1f
 File: xemacs.info,  Node: Entering Emacs,  Next: Exiting,  Prev: Pull-down Menus,  Up: Top
 
-Entering and Exiting Emacs
-**************************
+3 Entering and Exiting Emacs
+****************************
 
 The usual way to invoke XEmacs is to type `xemacs <RET>' at the shell.
 XEmacs clears the screen and then displays an initial advisory message
@@ -2460,8 +2457,8 @@ file.
 \1f
 File: xemacs.info,  Node: Exiting,  Next: Command Switches,  Prev: Entering Emacs,  Up: Top
 
-Exiting Emacs
-=============
+3.1 Exiting Emacs
+=================
 
 There are two commands for exiting Emacs because there are two kinds of
 exiting: "suspending" Emacs and "killing" Emacs.
@@ -2551,8 +2548,8 @@ commands of your choice (*note Keymaps::).
 \1f
 File: xemacs.info,  Node: Command Switches,  Next: Startup Paths,  Prev: Exiting,  Up: Top
 
-Command Line Switches and Arguments
-===================================
+3.2 Command Line Switches and Arguments
+=======================================
 
 XEmacs supports command line arguments you can use to request various
 actions when invoking Emacs.  The commands are for compatibility with
@@ -2596,8 +2593,8 @@ not true.)
    * Command line arguments that are only relevant if you are running
      XEmacs under X
 
-Command Line Arguments for Any Position
----------------------------------------
+3.2.1 Command Line Arguments for Any Position
+---------------------------------------------
 
 Command line arguments are processed in the order they appear on the
 command line; however, certain arguments (the ones in the second table)
@@ -2643,8 +2640,8 @@ must be at the front of the list if they are used.
 `-help'
      Prints a summary of command-line options and then exits.
 
-Command Line Arguments (Beginning of Line Only)
------------------------------------------------
+3.2.2 Command Line Arguments (Beginning of Line Only)
+-----------------------------------------------------
 
 The following arguments are recognized only at the beginning of the
 command line.  If more than one of them appears, they must appear in the
@@ -2763,8 +2760,8 @@ guarantees there will be no problem redirecting output to `log',
 because Emacs will not assume that it has a display terminal to work
 with.
 
-Command Line Arguments (for XEmacs Under X)
--------------------------------------------
+3.2.3 Command Line Arguments (for XEmacs Under X)
+-------------------------------------------------
 
 If you are running XEmacs under X, a number of options are available to
 control color, border, and window title and icon name:
@@ -2844,8 +2841,8 @@ command line arguments.
 \1f
 File: xemacs.info,  Node: Startup Paths,  Next: Packages,  Prev: Command Switches,  Up: Top
 
-How XEmacs finds Directories and Files
-======================================
+3.3 How XEmacs finds Directories and Files
+==========================================
 
 XEmacs deals with a multitude of files during operation.  These files
 are spread over many directories, and XEmacs determines the location of
@@ -2854,8 +2851,8 @@ paths.  (A "path", for the purposes of this section, is simply a list
 of directories which XEmacs searches successively in order to locate a
 file.)
 
-XEmacs Directory Hierarchies
-----------------------------
+3.3.1 XEmacs Directory Hierarchies
+----------------------------------
 
 Many of the files XEmacs looks for are located within the XEmacs
 installation itself.  However, there are several views of what actually
@@ -2879,10 +2876,10 @@ hierarchy is called a "root".  Whenever this section refers to a
 directory using the shorthand `<root>', it means that XEmacs searches
 for it under all hierarchies XEmacs was able to scrounge up.  In a
 running XEmacs, the hierarchy roots are stored in the variable
-`emacs-roots'.
+`emacs-roots'.  
 
-Package Hierarchies
--------------------
+3.3.2 Package Hierarchies
+-------------------------
 
 Many relevant directories and files XEmacs uses are actually not part of
 the core installation.  They are part of any of the many packages
@@ -2890,11 +2887,10 @@ usually installed on top of an XEmacs installation.  (*Note Packages::.)
 Hence, they play a prominent role in the various paths XEmacs sets up.
 
    XEmacs locates packages in any of a number of package hierarchies.
-Package hierarchies fall into three groups: "early", "late", and "last",
-according to the relative location at which they show up in the various
-XEmacs paths.  Early package hierarchies are at the very front, late
-ones somewhere in the middle, and last hierarchies are (you guessed it)
-last.
+Package hierarchies fall into three groups: "early", "late", and "last", according
+to the relative location at which they show up in the various XEmacs
+paths.  Early package hierarchies are at the very front, late ones
+somewhere in the middle, and last hierarchies are (you guessed it) last.
 
    By default, XEmacs expects an early package hierarchy in the
 subdirectory `.xemacs/xemacs-packages' of the user's home directory.
@@ -2930,8 +2926,8 @@ various system-wide paths.
 
    There may be any number of package hierarchy directories.
 
-Directories and Paths
----------------------
+3.3.3 Directories and Paths
+---------------------------
 
 Here is a list of the various directories and paths XEmacs tries to
 locate during startup.  XEmacs distinguishes between directories and
@@ -2969,7 +2965,7 @@ aiding in debugging any problems which come up.
      `load-library'.  It contains the package lisp directories (see
      further down) and the version-specific core Lisp directories.  If
      the environment variable `EMACSLOADPATH' is set at startup, its
-     directories are prepended to `load-path'.
+     directories are prepended to `load-path'.  
 
 `Info-directory-list'
      Contains the location of info files.  (See *Note (info)::.)  It
@@ -2987,7 +2983,7 @@ aiding in debugging any problems which come up.
      Is the path for executables which XEmacs may want to start.  It
      contains the package executable paths as well as `exec-directory',
      and the directories of the environment variables `PATH' and
-     `EMACSPATH'.
+     `EMACSPATH'.  
 
 `doc-directory'
      Is the directory containing the architecture-specific `DOC' file
@@ -2995,8 +2991,8 @@ aiding in debugging any problems which come up.
 
 `data-directory'
      Is the version-specific directory that contains core data files
-     XEmacs uses.  It may be initialized from the `EMACSDATA'
-     environment variable.
+     XEmacs uses.  It may be initialized from the `EMACSDATA' environment
+     variable.
 
 `data-directory-list'
      Is the path where XEmacs looks for data files.  It contains
@@ -3006,8 +3002,8 @@ aiding in debugging any problems which come up.
 \1f
 File: xemacs.info,  Node: Basic,  Next: Undo,  Prev: Packages,  Up: Top
 
-Basic Editing Commands
-**********************
+4 Basic Editing Commands
+************************
 
 We now give the basics of how to enter text, make corrections, and save
 the text in a file.  If this material is new to you, you might learn it
@@ -3040,8 +3036,8 @@ C-h t'.
 \1f
 File: xemacs.info,  Node: Inserting Text,  Next: Moving Point,  Up: Basic
 
-Inserting Text
-==============
+4.1 Inserting Text
+==================
 
 To insert printing characters into the text you are editing, just type
 them.  This inserts the characters you type into the buffer at the
@@ -3101,8 +3097,8 @@ modes rebind <DEL> to other commands.
 \1f
 File: xemacs.info,  Node: Moving Point,  Next: Erasing,  Prev: Inserting Text,  Up: Basic
 
-Changing the Location of Point
-==============================
+4.2 Changing the Location of Point
+==================================
 
 To do more than insert characters, you have to know how to move point
 (*note Point::).  The simplest way to do this is with arrow keys, or by
@@ -3215,8 +3211,8 @@ an error instead (like `C-p' on the first line).
 \1f
 File: xemacs.info,  Node: Erasing,  Next: Basic Files,  Prev: Moving Point,  Up: Basic
 
-Erasing Text
-============
+4.3 Erasing Text
+================
 
 `<DEL>'
      Delete the character before or after point
@@ -3253,8 +3249,8 @@ line, it kills all the text up to the end of the line.  If you type
 \1f
 File: xemacs.info,  Node: Basic Files,  Next: Basic Help,  Prev: Erasing,  Up: Basic
 
-Files
-=====
+4.4 Files
+=========
 
 The commands described above are sufficient for creating and altering
 text in an Emacs buffer; the more advanced Emacs commands just make
@@ -3298,8 +3294,8 @@ is created.
 \1f
 File: xemacs.info,  Node: Basic Help,  Next: Blank Lines,  Prev: Basic Files,  Up: Basic
 
-Help
-====
+4.5 Help
+========
 
 If you forget what a key does, you can find out with the Help
 character, which is `C-h' (or <F1>, which is an alias for `C-h').  Type
@@ -3312,8 +3308,8 @@ twice to get a description of all the help facilities.  *Note Help::.
 \1f
 File: xemacs.info,  Node: Blank Lines,  Next: Continuation Lines,  Prev: Basic Help,  Up: Basic
 
-Blank Lines
-===========
+4.6 Blank Lines
+===============
 
 Here are special commands and techniques for putting in and taking out
 blank lines.
@@ -3349,8 +3345,8 @@ deletes any blank lines following that nonblank line.
 \1f
 File: xemacs.info,  Node: Continuation Lines,  Next: Position Info,  Prev: Blank Lines,  Up: Basic
 
-Continuation Lines
-==================
+4.7 Continuation Lines
+======================
 
 If you add too many characters to one line without breaking it with
 <RET>, the line will grow to occupy two (or more) lines on the screen,
@@ -3384,8 +3380,8 @@ is displayed.
 \1f
 File: xemacs.info,  Node: Position Info,  Next: Arguments,  Prev: Continuation Lines,  Up: Basic
 
-Cursor Position Information
-===========================
+4.8 Cursor Position Information
+===============================
 
 If you are accustomed to other display editors, you may be surprised
 that Emacs does not always display the page number or line number of
@@ -3469,8 +3465,8 @@ output looks like
 \1f
 File: xemacs.info,  Node: Arguments,  Prev: Position Info,  Up: Basic
 
-Numeric Arguments
-=================
+4.9 Numeric Arguments
+=====================
 
 In mathematics and computer usage, the word "argument" means "data
 provided to a function or operation."  Any Emacs command can be given a
@@ -3487,9 +3483,8 @@ Sun-type keyboards and labelled `Alt' on some other keyboards), the
 easiest way to specify a numeric argument is to type digits and/or a
 minus sign while holding down the <META> key.  For example,
      M-5 C-n
-
-would move down five lines.  The characters `Meta-1', `Meta-2', and so
-on, as well as `Meta--', do this because they are keys bound to
+   would move down five lines.  The characters `Meta-1', `Meta-2', and
+so on, as well as `Meta--', do this because they are keys bound to
 commands (`digit-argument' and `negative-argument') that are defined to
 contribute to an argument for the next command.  Digits and `-'
 modified with Control, or Control and Meta, also specify numeric
@@ -3548,8 +3543,8 @@ the command.
 \1f
 File: xemacs.info,  Node: Undo,  Next: Minibuffer,  Prev: Basic,  Up: Top
 
-Undoing Changes
-***************
+5 Undoing Changes
+*****************
 
 Emacs allows you to undo all changes you make to the text of a buffer,
 up to a certain amount of change (8000 characters).  Each buffer records
@@ -3611,8 +3606,8 @@ is an alternative you can type in the same fashion on any terminal.
 \1f
 File: xemacs.info,  Node: Minibuffer,  Next: M-x,  Prev: Undo,  Up: Top
 
-The Minibuffer
-**************
+6 The Minibuffer
+****************
 
 The "minibuffer" is the facility used by XEmacs commands to read
 arguments more complicated than a single number.  Minibuffer arguments
@@ -3668,8 +3663,8 @@ how XEmacs handles such conflicts:
 \1f
 File: xemacs.info,  Node: Minibuffer File,  Next: Minibuffer Edit,  Prev: Minibuffer,  Up: Minibuffer
 
-Minibuffers for File Names
-==========================
+6.1 Minibuffers for File Names
+==============================
 
 Sometimes the minibuffer starts out with text in it.  For example, when
 you are supposed to give a file name, the minibuffer starts out
@@ -3708,8 +3703,8 @@ interpreted with respect to the same default directory.
 \1f
 File: xemacs.info,  Node: Minibuffer Edit,  Next: Completion,  Prev: Minibuffer File,  Up: Minibuffer
 
-Editing in the Minibuffer
-=========================
+6.2 Editing in the Minibuffer
+=============================
 
 The minibuffer is an XEmacs buffer (albeit a peculiar one), and the
 usual XEmacs commands are available for editing the text of an argument
@@ -3767,8 +3762,8 @@ non-`nil', recursive use of the minibuffer is always allowed.
 \1f
 File: xemacs.info,  Node: Completion,  Next: Minibuffer History,  Prev: Minibuffer Edit,  Up: Minibuffer
 
-Completion
-==========
+6.3 Completion
+==============
 
 For certain kinds of arguments, you can use "completion" to enter the
 argument value.  Completion means that you type part of the argument,
@@ -3812,8 +3807,8 @@ in and hit <RET>.
 \1f
 File: xemacs.info,  Node: Completion Example,  Next: Completion Commands,  Prev: Completion,  Up: Completion
 
-Completion Example
-------------------
+6.3.1 Completion Example
+------------------------
 
 A concrete example may help here.  If you type `M-x au <TAB>', the
 <TAB> looks for alternatives (in this case, command names) that start
@@ -3836,8 +3831,8 @@ because in the minibuffer it is bound to the command
 \1f
 File: xemacs.info,  Node: Completion Commands,  Next: Strict Completion,  Prev: Completion Example,  Up: Completion
 
-Completion Commands
--------------------
+6.3.2 Completion Commands
+-------------------------
 
 Here is a list of the completion commands defined in the minibuffer
 when completion is available.
@@ -3915,8 +3910,8 @@ window that displays a list of completions:
 \1f
 File: xemacs.info,  Node: Strict Completion,  Next: Completion Options,  Prev: Completion Commands,  Up: Completion
 
-Strict Completion
------------------
+6.3.3 Strict Completion
+-----------------------
 
 There are three different ways that <RET> can work in completing
 minibuffers, depending on how the argument will be used.
@@ -3953,8 +3948,8 @@ Other Window::).
 \1f
 File: xemacs.info,  Node: Completion Options,  Prev: Strict Completion,  Up: Completion
 
-Completion Options
-------------------
+6.3.4 Completion Options
+------------------------
 
 When completion is done on file names, certain file names are usually
 ignored.  The variable `completion-ignored-extensions' contains a list
@@ -3984,8 +3979,8 @@ command to enable or disable this minor mode is `M-x icomplete-mode'.
 \1f
 File: xemacs.info,  Node: Minibuffer History,  Next: Repetition,  Prev: Completion,  Up: Minibuffer
 
-Minibuffer History
-==================
+6.4 Minibuffer History
+======================
 
 Every argument that you enter with the minibuffer is saved on a
 "minibuffer history list" so that you can use it again later in another
@@ -4054,8 +4049,8 @@ most minibuffer arguments use.
 \1f
 File: xemacs.info,  Node: Repetition,  Prev: Minibuffer History,  Up: Minibuffer
 
-Repeating Minibuffer Commands
-=============================
+6.5 Repeating Minibuffer Commands
+=================================
 
 Every command that uses the minibuffer at least once is recorded on a
 special history list, together with the values of its arguments, so that
@@ -4117,8 +4112,8 @@ Lisp programs can reexecute a command by feeding the corresponding
 \1f
 File: xemacs.info,  Node: M-x,  Next: Help,  Prev: Minibuffer,  Up: Top
 
-Running Commands by Name
-************************
+7 Running Commands by Name
+**************************
 
 The Emacs commands that are used often or that must be quick to type are
 bound to keys--short sequences of characters--for convenient use.  Other
@@ -4273,8 +4268,8 @@ invoking it.
 \1f
 File: xemacs.info,  Node: Help,  Next: Mark,  Prev: M-x,  Up: Top
 
-Help
-****
+8 Help
+******
 
 XEmacs provides extensive help features accessible through a single
 character, `C-h'.  `C-h' is a prefix key that is used only for
@@ -4310,8 +4305,8 @@ scroll conveniently with <SPC> and <DEL> or <BS>.
 \1f
 File: xemacs.info,  Node: Help Summary,  Next: Key Help,  Prev: Help,  Up: Help
 
-Help Summary
-============
+8.1 Help Summary
+================
 
    Here is a summary of the defined help commands.
 
@@ -4405,8 +4400,8 @@ Help Summary
 \1f
 File: xemacs.info,  Node: Key Help,  Next: Name Help,  Prev: Help Summary,  Up: Help
 
-Documentation for a Key
-=======================
+8.2 Documentation for a Key
+===========================
 
 The most basic `C-h' options are `C-h c' (`describe-key-briefly') and
 `C-h k' (`describe-key').  `C-h c KEY' prints in the echo area the name
@@ -4427,8 +4422,8 @@ function keys and mouse events.
 \1f
 File: xemacs.info,  Node: Name Help,  Next: Apropos,  Prev: Key Help,  Up: Help
 
-Help by Command or Variable Name
-================================
+8.3 Help by Command or Variable Name
+====================================
 
 `C-h f' (`describe-function') reads the name of a Lisp function using
 the minibuffer, then displays that function's documentation string in a
@@ -4481,8 +4476,8 @@ around or before point, if that is the name of a known Lisp variable.
 \1f
 File: xemacs.info,  Node: Apropos,  Next: Library Keywords,  Prev: Name Help,  Up: Help
 
-Apropos
-=======
+8.4 Apropos
+===========
 
 `C-h A'
      Show only symbols that are names of commands (`command-apropos').
@@ -4547,8 +4542,8 @@ symbol property listed in the Apropos buffer, you can click on it with
 \1f
 File: xemacs.info,  Node: Library Keywords,  Next: Help Mode,  Prev: Apropos,  Up: Help
 
-Keyword Search for Lisp Libraries
-=================================
+8.5 Keyword Search for Lisp Libraries
+=====================================
 
 The `C-h p' command lets you search the standard Emacs Lisp libraries
 by topic keywords.  Here is a partial list of keywords you can use:
@@ -4593,8 +4588,8 @@ by topic keywords.  Here is a partial list of keywords you can use:
 \1f
 File: xemacs.info,  Node: Help Mode,  Next: Misc Help,  Prev: Library Keywords,  Up: Help
 
-Help Mode Commands
-==================
+8.6 Help Mode Commands
+======================
 
 Help buffers provide the commands of View mode (*note Misc File Ops::),
 plus a few special commands of their own.
@@ -4613,8 +4608,8 @@ normally appears inside paired single-quotes.
 \1f
 File: xemacs.info,  Node: Misc Help,  Prev: Help Mode,  Up: Help
 
-Other Help Commands
-===================
+8.7 Other Help Commands
+=======================
 
 `C-h i' (`info') runs the Info program, which is used for browsing
 through structured documentation files.  The entire XEmacs manual is
@@ -4633,7 +4628,9 @@ documentation through Info.  `C-h C-f FUNCTION <RET>' enters Info and
 goes straight to the documentation of the XEmacs function FUNCTION.
 `C-h C-k KEY' enters Info and goes straight to the documentation of the
 key KEY.  These two keys run the commands `Info-elisp-ref' and
-`Info-goto-emacs-key-command-node'.
+`Info-goto-emacs-key-command-node'.  (GNU Emacs binds `C-h C-f' to
+`Info-goto-emacs-command-node', but this is less helpful to
+programmers.)
 
    If something surprising happens, and you are not sure what commands
 you typed, use `C-h l' (`view-lossage').  `C-h l' prints the last 100
@@ -4676,8 +4673,8 @@ latest version of XEmacs.
 \1f
 File: xemacs.info,  Node: Mark,  Next: Mouse Selection,  Prev: Help,  Up: Top
 
-Selecting Text
-**************
+9 Selecting Text
+****************
 
 Many Emacs commands operate on an arbitrary contiguous part of the
 current buffer. You can select text in two ways:
@@ -4688,8 +4685,8 @@ current buffer. You can select text in two ways:
    * If you are running XEmacs under X, you can also select text with
      the mouse.
 
-The Mark and the Region
-=======================
+9.1 The Mark and the Region
+===========================
 
 To specify the text for a command to operate on, set "the mark" at one
 end of it, and move point to the other end.  The text between point and
@@ -4722,8 +4719,8 @@ Emacs remembers 16 previous locations of the mark in the `mark ring'.
 \1f
 File: xemacs.info,  Node: Setting Mark,  Next: Using Region,  Prev: Mark,  Up: Mark
 
-Setting the Mark
-----------------
+9.1.1 Setting the Mark
+----------------------
 
 Here are some commands for setting the mark:
 
@@ -4792,8 +4789,8 @@ the mark at the new location with point back at its original location.
 \1f
 File: xemacs.info,  Node: Using Region,  Next: Marking Objects,  Prev: Setting Mark,  Up: Mark
 
-Operating on the Region
------------------------
+9.1.2 Operating on the Region
+-----------------------------
 
 Once you have created an active region, you can do many things to the
 text in it:
@@ -4818,8 +4815,8 @@ text in it:
 \1f
 File: xemacs.info,  Node: Marking Objects,  Next: Mark Ring,  Prev: Using Region,  Up: Mark
 
-Commands to Mark Textual Objects
---------------------------------
+9.1.3 Commands to Mark Textual Objects
+--------------------------------------
 
 There are commands for placing point and the mark around a textual
 object such as a word, list, paragraph or page.
@@ -4865,8 +4862,8 @@ and the mark at the end.
 \1f
 File: xemacs.info,  Node: Mark Ring,  Prev: Marking Objects,  Up: Mark
 
-The Mark Ring
--------------
+9.1.4 The Mark Ring
+-------------------
 
 Aside from delimiting the region, the mark is also useful for marking a
 spot that you may want to go back to.  To make this feature more
@@ -4901,8 +4898,8 @@ in every buffer.
 \1f
 File: xemacs.info,  Node: Mouse Selection,  Next: Additional Mouse Operations,  Prev: Mark,  Up: Top
 
-Selecting Text with the Mouse
-=============================
+9.2 Selecting Text with the Mouse
+=================================
 
 If you are using XEmacs under X, you can use the mouse pointer to
 select text. (The normal mouse pointer is an I-beam, the same pointer
@@ -4949,8 +4946,8 @@ use Emacs region commands on it.
 \1f
 File: xemacs.info,  Node: Additional Mouse Operations,  Next: Killing,  Prev: Mouse Selection,  Up: Top
 
-Additional Mouse Operations
-===========================
+9.3 Additional Mouse Operations
+===============================
 
 XEmacs also provides the following mouse functions.  Most of these are
 not bound to mouse gestures by default, but they are provided for your
@@ -5060,8 +5057,8 @@ selection is immediately disowned afterwards.
 \1f
 File: xemacs.info,  Node: Killing,  Next: Yanking,  Prev: Additional Mouse Operations,  Up: Top
 
-Deletion and Killing
-====================
+9.4 Deletion and Killing
+========================
 
 Most commands that erase text from the buffer save it. You can get the
 text back if you change your mind, or you can move or copy it to other
@@ -5078,8 +5075,8 @@ Undo::). The delete commands include `C-d' (`delete-char') and <DEL>
 and those commands that delete only spaces or newlines.  Commands that
 can destroy significant amounts of nontrivial data usually kill.
 
-Deletion
---------
+9.4.1 Deletion
+--------------
 
 `C-d'
      Delete next character (`delete-char').
@@ -5124,8 +5121,8 @@ the previous line, or, if given an argument, joins the current line and
 the next line by deleting a newline and all surrounding spaces, possibly
 leaving a single space.  *Note M-^: Indentation.
 
-Killing by Lines
-----------------
+9.4.2 Killing by Lines
+----------------------
 
 `C-k'
      Kill rest of line or one or more lines (`kill-line').
@@ -5154,8 +5151,8 @@ of a line kills the two previous lines.
    `C-k' with an argument of zero kills all the text before point on the
 current line.
 
-Other Kill Commands
--------------------
+9.4.3 Other Kill Commands
+-------------------------
 
 `C-w'
      Kill region (from point to the mark) (`kill-region').  *Note
@@ -5200,8 +5197,8 @@ with `C-x <DEL>' and `M-k' (*note Sentences::).
 \1f
 File: xemacs.info,  Node: Yanking,  Next: Using X Selections,  Prev: Killing,  Up: Top
 
-Yanking
-=======
+9.5 Yanking
+===========
 
 "Yanking" means getting back text which was killed. Some systems call
 this "pasting".  The usual way to move or copy text is to kill it and
@@ -5230,8 +5227,8 @@ then yank it one or more times.
 \1f
 File: xemacs.info,  Node: Kill Ring,  Next: Appending Kills,  Prev: Yanking,  Up: Yanking
 
-The Kill Ring
--------------
+9.5.1 The Kill Ring
+-------------------
 
 All killed text is recorded in the "kill ring", a list of blocks of
 text that have been killed.  There is only one kill ring, used in all
@@ -5266,8 +5263,8 @@ actually cut anything.
 \1f
 File: xemacs.info,  Node: Appending Kills,  Next: Earlier Kills,  Prev: Kill Ring,  Up: Yanking
 
-Appending Kills
----------------
+9.5.2 Appending Kills
+---------------------
 
 Normally, each kill command pushes a new block onto the kill ring.
 However, two or more kill commands in a row combine their text into a
@@ -5308,8 +5305,8 @@ place.
 \1f
 File: xemacs.info,  Node: Earlier Kills,  Prev: Appending Kills,  Up: Yanking
 
-Yanking Earlier Kills
----------------------
+9.5.3 Yanking Earlier Kills
+---------------------------
 
 To recover killed text that is no longer the most recent kill, you need
 the `Meta-y' (`yank-pop') command.  You can use `M-y' only after a
@@ -5359,8 +5356,8 @@ no more than that many blocks of killed text are saved.
 \1f
 File: xemacs.info,  Node: Using X Selections,  Next: Accumulating Text,  Prev: Yanking,  Up: Top
 
-Using X Selections
-==================
+9.6 Using X Selections
+======================
 
 In the X window system, mouse selections provide a simple mechanism for
 text transfer between different applications.  In a typical X
@@ -5389,8 +5386,8 @@ also the Emacs selected region.
 \1f
 File: xemacs.info,  Node: X Clipboard Selection,  Next: X Selection Commands,  Prev: Using X Selections,  Up: Using X Selections
 
-The Clipboard Selection
------------------------
+9.6.1 The Clipboard Selection
+-----------------------------
 
 There are other kinds of X selections besides the Primary selection; one
 common one is the Clipboard selection.  Some applications prefer to
@@ -5438,8 +5435,8 @@ tools) you must use this method instead:
 \1f
 File: xemacs.info,  Node: X Selection Commands,  Next: X Cut Buffers,  Prev: X Clipboard Selection,  Up: Using X Selections
 
-Miscellaneous X Selection Commands
-----------------------------------
+9.6.2 Miscellaneous X Selection Commands
+----------------------------------------
 
 `M-x x-copy-primary-selection'
      Copy the primary selection to both the kill ring and the Clipboard.
@@ -5472,8 +5469,8 @@ Miscellaneous X Selection Commands
 \1f
 File: xemacs.info,  Node: X Cut Buffers,  Next: Active Regions,  Prev: X Selection Commands,  Up: Using X Selections
 
-X Cut Buffers
--------------
+9.6.3 X Cut Buffers
+-------------------
 
 X cut buffers are a different, older way of transferring text between
 applications.  XEmacs supports cut buffers for compatibility with older
@@ -5502,8 +5499,8 @@ the X cut buffers.
 \1f
 File: xemacs.info,  Node: Active Regions,  Prev: X Cut Buffers,  Up: Using X Selections
 
-Active Regions
---------------
+9.6.4 Active Regions
+--------------------
 
 By default, both the text you select in an Emacs buffer using the
 click-and-drag mechanism and text you select by setting point and the
@@ -5600,8 +5597,8 @@ when appropriate.
 \1f
 File: xemacs.info,  Node: Accumulating Text,  Next: Rectangles,  Prev: Using X Selections,  Up: Top
 
-Accumulating Text
-=================
+9.7 Accumulating Text
+=====================
 
 Usually you copy or move text by killing it and yanking it, but there
 are other ways that are useful for copying one block of text in many
@@ -5667,8 +5664,8 @@ file itself changes.
 \1f
 File: xemacs.info,  Node: Rectangles,  Next: Registers,  Prev: Accumulating Text,  Up: Top
 
-Rectangles
-==========
+9.8 Rectangles
+==============
 
 The rectangle commands affect rectangular areas of text: all characters
 between a certain pair of columns, in a certain range of lines.
@@ -5743,8 +5740,8 @@ Rectangle Registers: RegRect.
 \1f
 File: xemacs.info,  Node: Registers,  Next: Display,  Prev: Rectangles,  Up: Top
 
-Registers
-*********
+10 Registers
+************
 
 XEmacs "registers" are places in which you can save text or positions
 for later use.  Once you save text or a rectangle in a register, you
@@ -5777,8 +5774,8 @@ displays the contents of the specified register.
 \1f
 File: xemacs.info,  Node: RegPos,  Next: RegText,  Prev: Registers,  Up: Registers
 
-Saving Positions in Registers
-=============================
+10.1 Saving Positions in Registers
+==================================
 
 Saving a position records a place in a buffer so that you can move back
 there later.  Moving to a saved position switches to that buffer and
@@ -5807,8 +5804,8 @@ that were visiting files.
 \1f
 File: xemacs.info,  Node: RegText,  Next: RegRect,  Prev: RegPos,  Up: Registers
 
-Saving Text in Registers
-========================
+10.2 Saving Text in Registers
+=============================
 
 When you want to insert a copy of the same piece of text many times, it
 can be impractical to use the kill ring, since each subsequent kill
@@ -5837,8 +5834,8 @@ mark before it.
 \1f
 File: xemacs.info,  Node: RegRect,  Next: RegConfig,  Prev: RegText,  Up: Registers
 
-Saving Rectangles in Registers
-==============================
+10.3 Saving Rectangles in Registers
+===================================
 
 A register can contain a rectangle instead of lines of text.  The
 rectangle is represented as a list of strings.  *Note Rectangles::, for
@@ -5864,8 +5861,8 @@ sorting a rectangle.  *Note Sorting::.
 \1f
 File: xemacs.info,  Node: RegConfig,  Next: RegNumbers,  Prev: RegRect,  Up: Registers
 
-Saving Window Configurations in Registers
-=========================================
+10.4 Saving Window Configurations in Registers
+==============================================
 
 You can save the window configuration of the selected frame in a
 register, or even the configuration of all windows in all frames, and
@@ -5888,8 +5885,8 @@ instead, use `C-u C-x r j R'.
 \1f
 File: xemacs.info,  Node: RegNumbers,  Next: RegFiles,  Prev: RegConfig,  Up: Registers
 
-Keeping Numbers in Registers
-============================
+10.5 Keeping Numbers in Registers
+=================================
 
 There are commands to store a number in a register, to insert the
 number in the buffer in decimal, and to increment it.  These commands
@@ -5911,8 +5908,8 @@ register contents into the buffer.
 \1f
 File: xemacs.info,  Node: RegFiles,  Next: Bookmarks,  Prev: RegNumbers,  Up: Registers
 
-Keeping File Names in Registers
-===============================
+10.6 Keeping File Names in Registers
+====================================
 
 If you visit certain file names frequently, you can visit them more
 conveniently if you put their names in registers.  Here's the Lisp code
@@ -5933,8 +5930,8 @@ configuration.)
 \1f
 File: xemacs.info,  Node: Bookmarks,  Prev: RegFiles,  Up: Registers
 
-Bookmarks
-=========
+10.7 Bookmarks
+==============
 
 "Bookmarks" are somewhat like registers in that they record positions
 you can jump to.  Unlike registers, they have long names, and they
@@ -6017,8 +6014,8 @@ position.
 \1f
 File: xemacs.info,  Node: Display,  Next: Search,  Prev: Registers,  Up: Top
 
-Controlling the Display
-***********************
+11 Controlling the Display
+**************************
 
 Since only part of a large buffer fits in the window, XEmacs tries to
 show the part that is likely to be interesting.  The display control
@@ -6069,8 +6066,8 @@ commands allow you to specify which part of the text you want to see.
 \1f
 File: xemacs.info,  Node: Scrolling,  Next: Horizontal Scrolling,  Prev: Display,  Up: Display
 
-Scrolling
-=========
+11.1 Scrolling
+==============
 
 If a buffer contains text that is too large to fit entirely within the
 window that is displaying the buffer, XEmacs shows a contiguous section
@@ -6160,8 +6157,8 @@ overriding the redisplay preemption.
 \1f
 File: xemacs.info,  Node: Horizontal Scrolling,  Prev: Scrolling,  Up: Display
 
-Horizontal Scrolling
-====================
+11.2 Horizontal Scrolling
+=========================
 
 `C-x <'
      Scroll text in current window to the left (`scroll-left').
@@ -6188,8 +6185,8 @@ attempting to do so has no effect.
 \1f
 File: xemacs.info,  Node: Selective Display,  Next: Display Vars,  Prev: Display,  Up: Display
 
-Selective Display
-=================
+11.3 Selective Display
+======================
 
 XEmacs can hide lines indented more than a certain number of columns
 (you specify how many columns).  This allows you  to get an overview of
@@ -6217,8 +6214,8 @@ they were not there.
 \1f
 File: xemacs.info,  Node: Display Vars,  Prev: Selective Display,  Up: Display
 
-Variables Controlling Display
-=============================
+11.4 Variables Controlling Display
+==================================
 
 This section contains information for customization only.  Beginning
 users should skip it.
@@ -6272,8 +6269,8 @@ variable becomes local automatically when set.
 \1f
 File: xemacs.info,  Node: Search,  Next: Fixit,  Prev: Display,  Up: Top
 
-Searching and Replacement
-*************************
+12 Searching and Replacement
+****************************
 
 Like other editors, Emacs has commands for searching for occurrences of
 a string.  The principal search command is unusual in that it is
@@ -6300,8 +6297,8 @@ interactively which occurrences to replace.
 \1f
 File: xemacs.info,  Node: Incremental Search,  Next: Non-Incremental Search,  Prev: Search,  Up: Search
 
-Incremental Search
-==================
+12.1 Incremental Search
+=======================
 
 An incremental search begins searching as soon as you type the first
 character of the search string.  As you type in the search string, Emacs
@@ -6472,8 +6469,8 @@ via the normal keybinding mechanism: simply add a binding to the
    Any other character which is normally inserted into a buffer when
 typed is automatically added to the search string in isearch-mode.
 
-Slow Terminal Incremental Search
---------------------------------
+12.1.1 Slow Terminal Incremental Search
+---------------------------------------
 
 Incremental search on a slow terminal uses a modified style of display
 that is designed to take less time.  Instead of redisplaying the buffer
@@ -6501,8 +6498,8 @@ value is 1.
 \1f
 File: xemacs.info,  Node: Non-Incremental Search,  Next: Word Search,  Prev: Incremental Search,  Up: Search
 
-Non-Incremental Search
-======================
+12.2 Non-Incremental Search
+===========================
 
 Emacs also has conventional non-incremental search commands, which
 require you type the entire search string before searching begins.
@@ -6536,8 +6533,8 @@ characters used in Emacs to invoke non-incremental search.
 \1f
 File: xemacs.info,  Node: Word Search,  Next: Regexp Search,  Prev: Non-Incremental Search,  Up: Search
 
-Word Search
-===========
+12.3 Word Search
+================
 
 Word search looks for a sequence of words without regard to how the
 words are separated.  More precisely, you type a string of many words,
@@ -6575,8 +6572,8 @@ sequence of keys for word search.
 \1f
 File: xemacs.info,  Node: Regexp Search,  Next: Regexps,  Prev: Word Search,  Up: Search
 
-Regular Expression Search
-=========================
+12.4 Regular Expression Search
+==============================
 
 A "regular expression" ("regexp", for short) is a pattern that denotes
 a (possibly infinite) set of strings.  Searching for matches for a
@@ -6623,8 +6620,8 @@ way of incremental regexp search with `M-C-s <RET>'; similarly for
 \1f
 File: xemacs.info,  Node: Regexps,  Next: Search Case,  Prev: Regexp Search,  Up: Search
 
-Syntax of Regular Expressions
-=============================
+12.5 Syntax of Regular Expressions
+==================================
 
 Regular expressions have a syntax in which a few characters are special
 constructs and the rest are "ordinary".  An ordinary character is a
@@ -6945,8 +6942,8 @@ matching whitespace characters, repeated any number of times.
 \1f
 File: xemacs.info,  Node: Search Case,  Next: Replace,  Prev: Regexps,  Up: Search
 
-Searching and Case
-==================
+12.6 Searching and Case
+=======================
 
 All searches in Emacs normally ignore the case of the text they are
 searching through; if you specify searching for `FOO', `Foo' and `foo'
@@ -6963,8 +6960,8 @@ Sensitive Search from the Options menu on your screen.
 \1f
 File: xemacs.info,  Node: Replace,  Next: Other Repeating Search,  Prev: Search Case,  Up: Search
 
-Replacement Commands
-====================
+12.7 Replacement Commands
+=========================
 
 Global search-and-replace operations are not needed as often in Emacs as
 they are in other editors, but they are available.  In addition to the
@@ -6984,56 +6981,3 @@ Abbrevs::.
 * Replacement and Case::   How replacements preserve case of letters.
 * Query Replace::          How to use querying.
 
-\1f
-File: xemacs.info,  Node: Unconditional Replace,  Next: Regexp Replace,  Prev: Replace,  Up: Replace
-
-Unconditional Replacement
--------------------------
-
-`M-x replace-string <RET> STRING <RET> NEWSTRING <RET>'
-     Replace every occurrence of STRING with NEWSTRING.
-
-`M-x replace-regexp <RET> REGEXP <RET> NEWSTRING <RET>'
-     Replace every match for REGEXP with NEWSTRING.
-
-   To replace every instance of `foo' after point with `bar', use the
-command `M-x replace-string' with the two arguments `foo' and `bar'.
-Replacement occurs only after point: if you want to cover the whole
-buffer you must go to the beginning first.  By default, all occurrences
-up to the end of the buffer are replaced.  To limit replacement to part
-of the buffer, narrow to that part of the buffer before doing the
-replacement (*note Narrowing::).
-
-   When `replace-string' exits, point is left at the last occurrence
-replaced.  The value of point when the `replace-string' command was
-issued is remembered on the mark ring; `C-u C-<SPC>' moves back there.
-
-   A numeric argument restricts replacement to matches that are
-surrounded by word boundaries.
-
-\1f
-File: xemacs.info,  Node: Regexp Replace,  Next: Replacement and Case,  Prev: Unconditional Replace,  Up: Replace
-
-Regexp Replacement
-------------------
-
-`replace-string' replaces exact matches for a single string.  The
-similar command `replace-regexp' replaces any match for a specified
-pattern.
-
-   In `replace-regexp', the NEWSTRING need not be constant.  It can
-refer to all or part of what is matched by the REGEXP.  `\&' in
-NEWSTRING stands for the entire text being replaced.  `\D' in
-NEWSTRING, where D is a digit, stands for whatever matched the D'th
-parenthesized grouping in REGEXP.  For example,
-
-     M-x replace-regexp <RET> c[ad]+r <RET> \&-safe <RET>
-
-would replace (for example) `cadr' with `cadr-safe' and `cddr' with
-`cddr-safe'.
-
-     M-x replace-regexp <RET> \(c[ad]+r\)-safe <RET> \1 <RET>
-
-would perform exactly the opposite replacements.  To include a `\' in
-the text to replace with, you must give `\\'.
-
index 42f4f80..838b6e5 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.6 from
+This is ../info/xemacs.info, produced by makeinfo version 4.8 from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,11 +30,64 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
-File: xemacs.info,  Node: Replacement and Case,  Next: Query Replace,  Prev: Regexp Replace,  Up: Replace
+File: xemacs.info,  Node: Unconditional Replace,  Next: Regexp Replace,  Prev: Replace,  Up: Replace
+
+12.7.1 Unconditional Replacement
+--------------------------------
+
+`M-x replace-string <RET> STRING <RET> NEWSTRING <RET>'
+     Replace every occurrence of STRING with NEWSTRING.
+
+`M-x replace-regexp <RET> REGEXP <RET> NEWSTRING <RET>'
+     Replace every match for REGEXP with NEWSTRING.
+
+   To replace every instance of `foo' after point with `bar', use the
+command `M-x replace-string' with the two arguments `foo' and `bar'.
+Replacement occurs only after point: if you want to cover the whole
+buffer you must go to the beginning first.  By default, all occurrences
+up to the end of the buffer are replaced.  To limit replacement to part
+of the buffer, narrow to that part of the buffer before doing the
+replacement (*note Narrowing::).
 
-Replace Commands and Case
+   When `replace-string' exits, point is left at the last occurrence
+replaced.  The value of point when the `replace-string' command was
+issued is remembered on the mark ring; `C-u C-<SPC>' moves back there.
+
+   A numeric argument restricts replacement to matches that are
+surrounded by word boundaries.
+
+\1f
+File: xemacs.info,  Node: Regexp Replace,  Next: Replacement and Case,  Prev: Unconditional Replace,  Up: Replace
+
+12.7.2 Regexp Replacement
 -------------------------
 
+`replace-string' replaces exact matches for a single string.  The
+similar command `replace-regexp' replaces any match for a specified
+pattern.
+
+   In `replace-regexp', the NEWSTRING need not be constant.  It can
+refer to all or part of what is matched by the REGEXP.  `\&' in
+NEWSTRING stands for the entire text being replaced.  `\D' in
+NEWSTRING, where D is a digit, stands for whatever matched the D'th
+parenthesized grouping in REGEXP.  For example,
+
+     M-x replace-regexp <RET> c[ad]+r <RET> \&-safe <RET>
+
+would replace (for example) `cadr' with `cadr-safe' and `cddr' with
+`cddr-safe'.
+
+     M-x replace-regexp <RET> \(c[ad]+r\)-safe <RET> \1 <RET>
+
+would perform exactly the opposite replacements.  To include a `\' in
+the text to replace with, you must give `\\'.
+
+\1f
+File: xemacs.info,  Node: Replacement and Case,  Next: Query Replace,  Prev: Regexp Replace,  Up: Replace
+
+12.7.3 Replace Commands and Case
+--------------------------------
+
 If the arguments to a replace command are in lower case, the command
 preserves case when it makes a replacement.  Thus, the following
 command:
@@ -54,8 +107,8 @@ replace; also, case conversion of the replacement string is not done.
 \1f
 File: xemacs.info,  Node: Query Replace,  Prev: Replacement and Case,  Up: Replace
 
-Query Replace
--------------
+12.7.4 Query Replace
+--------------------
 
 `M-% STRING <RET> NEWSTRING <RET>'
 `M-x query-replace <RET> STRING <RET> NEWSTRING <RET>'
@@ -141,8 +194,8 @@ Repetition.
 \1f
 File: xemacs.info,  Node: Other Repeating Search,  Prev: Replace,  Up: Search
 
-Other Search-and-Loop Commands
-==============================
+12.8 Other Search-and-Loop Commands
+===================================
 
 Here are some other commands that find matches for a regular expression.
 They all operate from point to the end of the buffer.
@@ -177,8 +230,8 @@ They all operate from point to the end of the buffer.
 \1f
 File: xemacs.info,  Node: Fixit,  Next: Files,  Prev: Search,  Up: Top
 
-Commands for Fixing Typos
-*************************
+13 Commands for Fixing Typos
+****************************
 
 This chapter describes commands that are especially useful when you
 catch a mistake in your text just after you have made it, or when you
@@ -194,8 +247,8 @@ change your mind while composing text on line.
 \1f
 File: xemacs.info,  Node: Kill Errors,  Next: Transpose,  Prev: Fixit,  Up: Fixit
 
-Killing Your Mistakes
-=====================
+13.1 Killing Your Mistakes
+==========================
 
 `<DEL>'
      Delete last character (`delete-backward-char').
@@ -227,8 +280,8 @@ less thought to kill the whole word and start over.
 \1f
 File: xemacs.info,  Node: Transpose,  Next: Fixing Case,  Prev: Kill Errors,  Up: Fixit
 
-Transposing Text
-================
+13.2 Transposing Text
+=====================
 
 `C-t'
      Transpose two characters (`transpose-chars').
@@ -281,8 +334,8 @@ command with a repeat count of zero would do nothing).
 \1f
 File: xemacs.info,  Node: Fixing Case,  Next: Spelling,  Prev: Transpose,  Up: Fixit
 
-Case Conversion
-===============
+13.3 Case Conversion
+====================
 
 `M-- M-l'
      Convert last word to lower case.  Note that `Meta--' is
@@ -303,8 +356,8 @@ continue typing.  *Note Case::.
 \1f
 File: xemacs.info,  Node: Spelling,  Prev: Fixing Case,  Up: Fixit
 
-Checking and Correcting Spelling
-================================
+13.4 Checking and Correcting Spelling
+=====================================
 
 `M-$'
      Check and correct spelling of word (`spell-word').
@@ -344,8 +397,8 @@ the answer in the echo area.
 \1f
 File: xemacs.info,  Node: Files,  Next: Buffers,  Prev: Fixit,  Up: Top
 
-File Handling
-*************
+14 File Handling
+****************
 
 The basic unit of stored data in Unix is the "file".  To edit a file,
 you must tell Emacs to examine the file and prepare a buffer containing
@@ -385,8 +438,8 @@ rename, and append to files, and operate on file directories.
 \1f
 File: xemacs.info,  Node: File Names,  Next: Visiting,  Prev: Files,  Up: Files
 
-File Names
-==========
+14.1 File Names
+===============
 
 Most Emacs commands that operate on a file require you to specify the
 file name.  (Saving and reverting are exceptions; the buffer knows which
@@ -481,8 +534,8 @@ performed only on filenames read as such using the minibuffer.
 \1f
 File: xemacs.info,  Node: Visiting,  Next: Saving,  Prev: File Names,  Up: Files
 
-Visiting Files
-==============
+14.2 Visiting Files
+===================
 
 `C-x C-f'
      Visit a file (`find-file').
@@ -618,8 +671,8 @@ receive no arguments.  Visiting a nonexistent file runs the
 \1f
 File: xemacs.info,  Node: Saving,  Next: Reverting,  Prev: Visiting,  Up: Files
 
-Saving Files
-============
+14.3 Saving Files
+=================
 
 "Saving" a buffer in Emacs means writing its contents back into the file
 that was visited in the buffer.
@@ -726,8 +779,8 @@ functions to be called after writing out a buffer to a file.
 \1f
 File: xemacs.info,  Node: Backup,  Next: Interlocking,  Prev: Saving,  Up: Saving
 
-Backup Files
-------------
+14.3.1 Backup Files
+-------------------
 
 Because Unix does not provide version numbers in file names, rewriting a
 file in Unix automatically destroys all record of what the file used to
@@ -757,8 +810,8 @@ then visit the file again, a new backup file is made by the next save.
 \1f
 File: xemacs.info,  Node: Backup Names,  Next: Backup Deletion,  Prev: Backup,  Up: Backup
 
-Single or Numbered Backups
-..........................
+14.3.1.1 Single or Numbered Backups
+...................................
 
 If you choose to have a single backup file (the default), the backup
 file's name is constructed by appending `~' to the file name being
@@ -796,8 +849,8 @@ only one backup for an Rmail file.  *Note Locals::.
 \1f
 File: xemacs.info,  Node: Backup Deletion,  Next: Backup Copying,  Prev: Backup Names,  Up: Backup
 
-Automatic Deletion of Backups
-.............................
+14.3.1.2 Automatic Deletion of Backups
+......................................
 
 To prevent unlimited consumption of disk space, Emacs can delete
 numbered backup versions automatically.  Generally Emacs keeps the
@@ -820,8 +873,8 @@ asked whether the excess middle versions should really be deleted.
 \1f
 File: xemacs.info,  Node: Backup Copying,  Prev: Backup Deletion,  Up: Backup
 
-Copying vs. Renaming
-....................
+14.3.1.3 Copying vs. Renaming
+.............................
 
 You can make backup files by copying the old file or by renaming it.
 This makes a difference when the old file has multiple names.  If you
@@ -854,8 +907,8 @@ renaming would cause the file's owner or group to change.
 \1f
 File: xemacs.info,  Node: Interlocking,  Prev: Backup,  Up: Saving
 
-Protection Against Simultaneous Editing
----------------------------------------
+14.3.2 Protection Against Simultaneous Editing
+----------------------------------------------
 
 Simultaneous editing occurs when two users visit the same file, both
 make changes, and both save their changes.  If no one was informed that
@@ -937,8 +990,8 @@ files.
 \1f
 File: xemacs.info,  Node: Reverting,  Next: Auto Save,  Prev: Saving,  Up: Files
 
-Reverting a Buffer
-==================
+14.4 Reverting a Buffer
+=======================
 
 If you have made extensive changes to a file and then change your mind
 about them, you can get rid of all changes by reading in the previous
@@ -977,8 +1030,8 @@ Buffers created randomly with `C-x b' cannot be reverted;
 \1f
 File: xemacs.info,  Node: Auto Save,  Next: Version Control,  Prev: Reverting,  Up: Files
 
-Auto-Saving: Protection Against Disasters
-=========================================
+14.5 Auto-Saving: Protection Against Disasters
+==============================================
 
 Emacs saves all the visited files from time to time (based on counting
 your keystrokes) without being asked.  This is called "auto-saving".
@@ -1002,8 +1055,8 @@ have been typing.
 \1f
 File: xemacs.info,  Node: Auto Save Files,  Next: Auto Save Control,  Prev: Auto Save,  Up: Auto Save
 
-Auto-Save Files
----------------
+14.5.1 Auto-Save Files
+----------------------
 
 Auto-saving does not normally write to the files you visited, because
 it can be undesirable to save a program that is in an inconsistent
@@ -1038,8 +1091,8 @@ correspond to the new visited name.
 \1f
 File: xemacs.info,  Node: Auto Save Control,  Next: Recover,  Prev: Auto Save Files,  Up: Auto Save
 
-Controlling Auto-Saving
------------------------
+14.5.2 Controlling Auto-Saving
+------------------------------
 
 Each time you visit a file, auto-saving is turned on for that file's
 buffer if the variable `auto-save-default' is non-`nil' (but not in
@@ -1076,8 +1129,8 @@ buffer.
 \1f
 File: xemacs.info,  Node: Recover,  Prev: Auto Save Control,  Up: Auto Save
 
-Recovering Data from Auto-Saves
--------------------------------
+14.5.3 Recovering Data from Auto-Saves
+--------------------------------------
 
 If you want to use the contents of an auto-save file to recover from a
 loss of data, use the command `M-x recover-file <RET> FILE <RET>'.
@@ -1102,8 +1155,8 @@ to make new changes, turn auto-saving back on with `M-x auto-save-mode'.
 \1f
 File: xemacs.info,  Node: Version Control,  Next: ListDir,  Prev: Auto Save,  Up: Files
 
-Version Control
-===============
+14.6 Version Control
+====================
 
 "Version control systems" are packages that can record multiple
 versions of a source file, usually storing the unchanged parts of the
@@ -1142,8 +1195,8 @@ RCS or SCCS, so you hardly have to know which one of them you are using.
 \1f
 File: xemacs.info,  Node: Concepts of VC,  Next: Editing with VC,  Prev: Version Control,  Up: Version Control
 
-Concepts of Version Control
----------------------------
+14.6.1 Concepts of Version Control
+----------------------------------
 
 When a file is under version control, we also say that it is
 "registered" in the version control system.  Each registered file has a
@@ -1177,8 +1230,8 @@ files that make up a program.  *Note Snapshots::.
 \1f
 File: xemacs.info,  Node: Editing with VC,  Next: Variables for Check-in/out,  Prev: Concepts of VC,  Up: Version Control
 
-Editing with Version Control
-----------------------------
+14.6.2 Editing with Version Control
+-----------------------------------
 
 When you visit a file that is maintained using version control, the
 mode line displays `RCS' or `SCCS' to inform you that version control
@@ -1290,8 +1343,8 @@ it reads the version number with the minibuffer.
 \1f
 File: xemacs.info,  Node: Variables for Check-in/out,  Next: Log Entries,  Prev: Editing with VC,  Up: Version Control
 
-Variables Affecting Check-in and Check-out
-------------------------------------------
+14.6.3 Variables Affecting Check-in and Check-out
+-------------------------------------------------
 
 If `vc-suppress-confirm' is non-`nil', then `C-x C-q' and `C-x v i' can
 save the current buffer without asking, and `C-x v u' also operates
@@ -1329,8 +1382,8 @@ happens automatically.
 \1f
 File: xemacs.info,  Node: Log Entries,  Next: Change Logs and VC,  Prev: Variables for Check-in/out,  Up: Version Control
 
-Log Entries
------------
+14.6.4 Log Entries
+------------------
 
 When you're editing an initial comment or log entry for inclusion in a
 master file, finish your entry by typing `C-c C-c'.
@@ -1359,8 +1412,8 @@ Log mode, which involves running two hooks: `text-mode-hook' and
 \1f
 File: xemacs.info,  Node: Change Logs and VC,  Next: Old Versions,  Prev: Log Entries,  Up: Version Control
 
-Change Logs and VC
-------------------
+14.6.5 Change Logs and VC
+-------------------------
 
 If you use RCS for a program and also maintain a change log file for it
 (*note Change Log::), you can generate change log entries automatically
@@ -1380,7 +1433,7 @@ start with `#'.'.  Then `C-x v a' visits `ChangeLog' and inserts text
 like this:
 
      Fri May  8 21:45:00 1992  Nathaniel Bowditch  (nat@apn.org)
-     
+
              * rcs2log: Ignore log messages that start with `#'.
 
 You can then edit the new change log entry further as you wish.
@@ -1392,7 +1445,7 @@ for `vc.el' is `(vc-do-command): Check call-process status.', then the
 text in `ChangeLog' looks like this:
 
      Wed May  6 10:53:00 1992  Nathaniel Bowditch  (nat@apn.org)
-     
+
              * vc.el (vc-do-command): Check call-process status.
 
    When `C-x v a' adds several change log entries at once, it groups
@@ -1412,9 +1465,9 @@ For `vc-hooks.el':
    They appear like this in `ChangeLog':
 
      Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  (nat@apn.org)
-     
+
              * vc.texinfo: Fix expansion typos.
-     
+
              * vc.el, vc-hooks.el: Don't call expand-file-name.
 
    Normally, `C-x v a' separates log entries by a blank line, but you
@@ -1433,7 +1486,7 @@ For `vc-hooks.el':
 Then the text in `ChangeLog' looks like this:
 
      Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  (nat@apn.org)
-     
+
              * vc.texinfo: Fix expansion typos.
              * vc.el, vc-hooks.el: Don't call expand-file-name.
 
@@ -1445,8 +1498,8 @@ trivia into `ChangeLog'.
 \1f
 File: xemacs.info,  Node: Old Versions,  Next: VC Status,  Prev: Change Logs and VC,  Up: Version Control
 
-Examining And Comparing Old Versions
-------------------------------------
+14.6.6 Examining And Comparing Old Versions
+-------------------------------------------
 
 `C-x v ~ VERSION <RET>'
      Examine version VERSION of the visited file, in a buffer of its
@@ -1492,8 +1545,8 @@ Files::, for more information about `M-x diff'.
 \1f
 File: xemacs.info,  Node: VC Status,  Next: Renaming and VC,  Prev: Old Versions,  Up: Version Control
 
-VC Status Commands
-------------------
+14.6.7 VC Status Commands
+-------------------------
 
 To view the detailed version control status and history of a file, type
 `C-x v l' (`vc-print-log').  It displays the history of changes to the
@@ -1527,8 +1580,8 @@ change.
 \1f
 File: xemacs.info,  Node: Renaming and VC,  Next: Snapshots,  Prev: VC Status,  Up: Version Control
 
-Renaming VC Work Files and Master Files
----------------------------------------
+14.6.8 Renaming VC Work Files and Master Files
+----------------------------------------------
 
 When you rename a registered file, you must also rename its master file
 correspondingly to get proper results.  Use `vc-rename-file' to rename
@@ -1543,8 +1596,8 @@ else.
 \1f
 File: xemacs.info,  Node: Snapshots,  Next: Version Headers,  Prev: Renaming and VC,  Up: Version Control
 
-Snapshots
----------
+14.6.9 Snapshots
+----------------
 
 A "snapshot" is a named set of file versions (one for each registered
 file) that you can treat as a unit.  One important kind of snapshot is
@@ -1559,8 +1612,8 @@ ready for distribution to users.
 \1f
 File: xemacs.info,  Node: Making Snapshots,  Next: Snapshot Caveats,  Prev: Snapshots,  Up: Snapshots
 
-Making and Using Snapshots
-..........................
+14.6.9.1 Making and Using Snapshots
+...................................
 
 There are two basic commands for snapshots; one makes a snapshot with a
 given name, the other retrieves a named snapshot.
@@ -1592,8 +1645,8 @@ snapshot against a named version.
 \1f
 File: xemacs.info,  Node: Snapshot Caveats,  Prev: Making Snapshots,  Up: Snapshots
 
-Snapshot Caveats
-................
+14.6.9.2 Snapshot Caveats
+.........................
 
 VC's snapshot facilities are modeled on RCS's named-configuration
 support.  They use RCS's native facilities for this, so under VC
@@ -1630,8 +1683,8 @@ won't really work as retrieved.
 \1f
 File: xemacs.info,  Node: Version Headers,  Prev: Snapshots,  Up: Version Control
 
-Inserting Version Control Headers
----------------------------------
+14.6.10 Inserting Version Control Headers
+-----------------------------------------
 
 Sometimes it is convenient to put version identification strings
 directly into working files.  Certain special strings called "version
@@ -1692,8 +1745,8 @@ which specifies insertion of a string of this form:
 \1f
 File: xemacs.info,  Node: ListDir,  Next: Comparing Files,  Prev: Version Control,  Up: Files
 
-Listing a File Directory
-========================
+14.7 Listing a File Directory
+=============================
 
 Files are organized by Unix into "directories".  A "directory listing"
 is a list of all the files in a directory.  Emacs provides directory
@@ -1743,8 +1796,8 @@ to via absolute symbolic links.  Make `TO' the name of the link, and
 \1f
 File: xemacs.info,  Node: Comparing Files,  Next: Dired,  Prev: ListDir,  Up: Files
 
-Comparing Files
-===============
+14.8 Comparing Files
+====================
 
 The command `M-x diff' compares two files, displaying the differences
 in an Emacs buffer named `*Diff*'.  It works by running the `diff'
@@ -1776,8 +1829,8 @@ ignores differences in case as well.
 \1f
 File: xemacs.info,  Node: Dired,  Next: Misc File Ops,  Prev: Comparing Files,  Up: Files
 
-Dired, the Directory Editor
-===========================
+14.9 Dired, the Directory Editor
+================================
 
 Dired makes it easy to delete or visit many of the files in a single
 directory at once.  It creates an Emacs buffer containing a listing of
@@ -1794,8 +1847,8 @@ this buffer and special Dired commands to operate on the files.
 \1f
 File: xemacs.info,  Node: Dired Enter,  Next: Dired Edit,  Prev: Dired,  Up: Dired
 
-Entering Dired
---------------
+14.9.1 Entering Dired
+---------------------
 
 To invoke dired, type `C-x d' or `M-x dired'.  The command reads a
 directory name or wildcard file name pattern as a minibuffer argument
@@ -1814,8 +1867,8 @@ d'.
 \1f
 File: xemacs.info,  Node: Dired Edit,  Next: Dired Deletion,  Prev: Dired Enter,  Up: Dired
 
-Editing in Dired
-----------------
+14.9.2 Editing in Dired
+-----------------------
 
 Once the Dired buffer exists, you can switch freely between it and other
 Emacs buffers.  Whenever the Dired buffer is selected, certain special
@@ -1851,8 +1904,8 @@ buffer are lost when this is done.
 \1f
 File: xemacs.info,  Node: Dired Deletion,  Next: Dired Immed,  Prev: Dired Edit,  Up: Dired
 
-Deleting Files With Dired
--------------------------
+14.9.3 Deleting Files With Dired
+--------------------------------
 
 The primary use of Dired is to flag files for deletion and then delete
 them.
@@ -1927,8 +1980,8 @@ to keep.
 \1f
 File: xemacs.info,  Node: Dired Immed,  Prev: Dired Deletion,  Up: Dired
 
-Immediate File Operations in Dired
-----------------------------------
+14.9.4 Immediate File Operations in Dired
+-----------------------------------------
 
 Some file operations in Dired take place immediately when they are
 requested.
@@ -1962,8 +2015,8 @@ requested.
 \1f
 File: xemacs.info,  Node: Misc File Ops,  Prev: Dired,  Up: Files
 
-Miscellaneous File Operations
-=============================
+14.10 Miscellaneous File Operations
+===================================
 
 Emacs has commands for performing many other operations on files.  All
 operate on one file; they do not accept wildcard file names.
@@ -2015,8 +2068,8 @@ cursor motion commands.  To exit from viewing, type `C-c'.
 \1f
 File: xemacs.info,  Node: Buffers,  Next: Windows,  Prev: Files,  Up: Top
 
-Using Multiple Buffers
-**********************
+15 Using Multiple Buffers
+*************************
 
 Text you are editing in Emacs resides in an object called a "buffer".
 Each time you visit a file, Emacs creates a buffer to hold the file's
@@ -2061,8 +2114,8 @@ from the value in other buffers.  *Note Locals::.
 \1f
 File: xemacs.info,  Node: Select Buffer,  Next: List Buffers,  Prev: Buffers,  Up: Buffers
 
-Creating and Selecting Buffers
-==============================
+15.1 Creating and Selecting Buffers
+===================================
 
 `C-x b BUFFER <RET>'
      Select or create a buffer named BUFFER (`switch-to-buffer').
@@ -2104,8 +2157,8 @@ visiting a file to switch buffers.  *Note Visiting::.
 \1f
 File: xemacs.info,  Node: List Buffers,  Next: Misc Buffer,  Prev: Select Buffer,  Up: Buffers
 
-Listing Existing Buffers
-========================
+15.2 Listing Existing Buffers
+=============================
 
 `C-x C-b'
      List the existing buffers (`list-buffers').
@@ -2143,8 +2196,8 @@ which are bound to keys in the `*Buffer List*' buffer.
 \1f
 File: xemacs.info,  Node: Misc Buffer,  Next: Kill Buffer,  Prev: List Buffers,  Up: Buffers
 
-Miscellaneous Buffer Operations
-===============================
+15.3 Miscellaneous Buffer Operations
+====================================
 
 `C-x C-q'
      Toggle read-only status of buffer (`toggle-read-only').
@@ -2182,8 +2235,8 @@ append-to-buffer' and `M-x insert-buffer'.  *Note Accumulating Text::.
 \1f
 File: xemacs.info,  Node: Kill Buffer,  Next: Several Buffers,  Prev: Misc Buffer,  Up: Buffers
 
-Killing Buffers
-===============
+15.4 Killing Buffers
+====================
 
 After using Emacs for a while, you may accumulate a large number of
 buffers and may want to eliminate the ones you no longer need.  There
@@ -2211,8 +2264,8 @@ asks for confirmation just like `kill-buffer'.
 \1f
 File: xemacs.info,  Node: Several Buffers,  Prev: Kill Buffer,  Up: Buffers
 
-Operating on Several Buffers
-============================
+15.5 Operating on Several Buffers
+=================================
 
 The "buffer-menu" facility is like a "Dired for buffers"; it allows you
 to request operations on various Emacs buffers by editing a buffer
@@ -2313,8 +2366,8 @@ here.
 \1f
 File: xemacs.info,  Node: Windows,  Next: Mule,  Prev: Buffers,  Up: Top
 
-Multiple Windows
-****************
+16 Multiple Windows
+*******************
 
 Emacs can split the frame into two or many windows, which can display
 parts of different buffers or different parts of one buffer.  If you are
@@ -2332,8 +2385,8 @@ contains the Emacs frame have multiple subwindows.
 \1f
 File: xemacs.info,  Node: Basic Window,  Next: Split Window,  Prev: Windows,  Up: Windows
 
-Concepts of Emacs Windows
-=========================
+16.1 Concepts of Emacs Windows
+==============================
 
 When Emacs displays multiple windows, each window has one Emacs buffer
 designated for display.  The same buffer may appear in more than one
@@ -2366,8 +2419,8 @@ line.
 \1f
 File: xemacs.info,  Node: Split Window,  Next: Other Window,  Prev: Basic Window,  Up: Windows
 
-Splitting Windows
-=================
+16.2 Splitting Windows
+======================
 
 `C-x 2'
      Split the selected window into two windows, one above the other
@@ -2417,8 +2470,8 @@ supplying a REGISTER argument to `window-configuration-to-register'
 \1f
 File: xemacs.info,  Node: Other Window,  Next: Pop Up Window,  Prev: Split Window,  Up: Windows
 
-Using Other Windows
-===================
+16.3 Using Other Windows
+========================
 
 `C-x o'
      Select another window (`other-window').  That is the letter `o',
@@ -2475,8 +2528,8 @@ ignored.
 \1f
 File: xemacs.info,  Node: Pop Up Window,  Next: Change Window,  Prev: Other Window,  Up: Windows
 
-Displaying in Another Window
-============================
+16.4 Displaying in Another Window
+=================================
 
 `C-x 4' is a prefix key for commands that select another window
 (splitting the window if there is only one) and select a buffer in that
@@ -2515,8 +2568,8 @@ this function.
 \1f
 File: xemacs.info,  Node: Change Window,  Prev: Pop Up Window,  Up: Windows
 
-Deleting and Rearranging Windows
-================================
+16.5 Deleting and Rearranging Windows
+=====================================
 
 `C-x 0'
      Get rid of the selected window (`delete-window').  That is a zero.
@@ -2588,8 +2641,8 @@ Balance Windows
 \1f
 File: xemacs.info,  Node: Mule,  Next: Major Modes,  Prev: Windows,  Up: Top
 
-World Scripts Support
-*********************
+17 World Scripts Support
+************************
 
 If you compile XEmacs with Mule option, it supports a wide variety of
 world scripts, including Latin script, as well as Arabic script,
@@ -2616,8 +2669,8 @@ Enhancement to GNU Emacs").
 \1f
 File: xemacs.info,  Node: Mule Intro,  Next: Language Environments,  Prev: Mule,  Up: Mule
 
-What is Mule?
-=============
+17.1 What is Mule?
+==================
 
 Mule is the MUltiLingual Extension to XEmacs.  It provides facilities
 not only for handling text written in many different languages, but in
@@ -2687,8 +2740,8 @@ world scripts, coding systems, and input methods.
 \1f
 File: xemacs.info,  Node: Language Environments,  Next: Input Methods,  Prev: Mule Intro,  Up: Mule
 
-Language Environments
-=====================
+17.2 Language Environments
+==========================
 
 All supported character sets are supported in XEmacs buffers if it is
 compiled with Mule; there is no need to select a particular language in
@@ -2731,8 +2784,8 @@ By default, this command describes the chosen language environment.
 \1f
 File: xemacs.info,  Node: Input Methods,  Next: Select Input Method,  Prev: Language Environments,  Up: Mule
 
-Input Methods
-=============
+17.3 Input Methods
+==================
 
 An "input method" is a kind of character conversion designed
 specifically for interactive input.  In XEmacs, typically each language
@@ -2805,8 +2858,8 @@ in the echo area (but not when you are in the minibuffer).
 \1f
 File: xemacs.info,  Node: Select Input Method,  Next: Mule and Fonts,  Prev: Input Methods,  Up: Mule
 
-Selecting an Input Method
-=========================
+17.4 Selecting an Input Method
+==============================
 
 `C-\'
      Enable or disable use of the selected input method.
@@ -2856,8 +2909,8 @@ method, including the string that stands for it in the mode line.
 \1f
 File: xemacs.info,  Node: Mule and Fonts,  Next: Coding Systems,  Prev: Select Input Method,  Up: Mule
 
-Mule and Fonts
-==============
+17.5 Mule and Fonts
+===================
 
 (This section is X11-specific.)
 
@@ -2913,8 +2966,8 @@ but those uses are not described here.
 \1f
 File: xemacs.info,  Node: Coding Systems,  Next: Recognize Coding,  Prev: Mule and Fonts,  Up: Mule
 
-Coding Systems
-==============
+17.6 Coding Systems
+===================
 
 Users of various languages have established many more-or-less standard
 coding systems for representing them.  XEmacs does not use these coding
@@ -3009,8 +3062,8 @@ the usual three variants to specify the kind of end-of-line conversion.
 \1f
 File: xemacs.info,  Node: Recognize Coding,  Next: Specify Coding,  Prev: Coding Systems,  Up: Mule
 
-Recognizing Coding Systems
-==========================
+17.7 Recognizing Coding Systems
+===============================
 
 Most of the time, XEmacs can recognize which coding system to use for
 any given file-once you have specified your preferences.
@@ -3074,8 +3127,8 @@ system, you can specify a different coding system for the buffer using
 \1f
 File: xemacs.info,  Node: Specify Coding,  Prev: Recognize Coding,  Up: Mule
 
-Specifying a Coding System
-==========================
+17.8 Specifying a Coding System
+===============================
 
 In cases where XEmacs does not automatically choose the right coding
 system, you can use these commands to specify one:
@@ -3183,8 +3236,8 @@ cannot use non-Latin-1 characters in file names.
 \1f
 File: xemacs.info,  Node: Major Modes,  Next: Indentation,  Prev: Mule,  Up: Top
 
-Major Modes
-***********
+18 Major Modes
+**************
 
 Emacs has many different "major modes", each of which customizes Emacs
 for editing text of a particular sort.  The major modes are mutually
@@ -3206,15 +3259,16 @@ comments use the mode to determine how to delimit comments.  Many major
 modes redefine the syntactical properties of characters appearing in
 the buffer.  *Note Syntax::.
 
-   The major modes fall into three major groups.  Lisp mode (which has
-several variants), C mode, and Muddle mode are for specific programming
-languages.  Text mode, Nroff mode, TeX mode, and Outline mode are for
-editing English text.  The remaining major modes are not intended for
-use on users' files; they are used in buffers created by Emacs for
-specific purposes and include Dired mode for buffers made by Dired
-(*note Dired::), Mail mode for buffers made by `C-x m' (*note Sending
-Mail::), and Shell mode for buffers used for communicating with an
-inferior shell process (*note Interactive Shell::).
+   The major modes fall into three major groups.  Programming modes
+(*note Programs::) are for specific programming languages.  Text modes
+(like Nroff mode, TeX mode, Outline mode, XML mode, etc.) are for
+editing human readable text.  The remaining major modes are not intended
+for direct use in editing user files; they are used in buffers created
+by Emacs for specific purposes. Examples of such modes include Dired
+mode which is used for buffers made by Dired (*note Dired::), Mail mode
+for buffers made by `C-x m' (*note Sending Mail::), and Shell mode for
+buffers used for communicating with an inferior shell process (*note
+Interactive Shell::).
 
    Most programming language major modes specify that only blank lines
 separate paragraphs.  This is so that the paragraph commands remain
@@ -3226,12 +3280,13 @@ Indentation::.
 * Menu:
 
 * Choosing Modes::     How major modes are specified or chosen.
+* Mode Hooks::         Customizing a major mode
 
 \1f
-File: xemacs.info,  Node: Choosing Modes,  Prev: Major Modes,  Up: Major Modes
+File: xemacs.info,  Node: Choosing Modes,  Next: Mode Hooks,  Prev: Major Modes,  Up: Major Modes
 
-Choosing Major Modes
-====================
+18.1 Choosing Major Modes
+=========================
 
 You can select a major mode explicitly for the current buffer, but most
 of the time Emacs determines which mode to use based on the file name
@@ -3286,10 +3341,44 @@ the symbol `fundamental-mode', which specifies Fundamental mode.  If
 previously selected buffer.
 
 \1f
+File: xemacs.info,  Node: Mode Hooks,  Prev: Choosing Modes,  Up: Major Modes
+
+18.2 Mode Hook Variables
+========================
+
+The last step taken by a major mode, by convention, is to invoke a list
+of user supplied functions that are stored in a "hook" variable.  This
+allows a user to further customize the major mode, and is particularly
+convenient for setting up buffer local variables (*note Locals::).
+
+   The name of the hook variable is created by appending the string
+`-hook' to the name of the major mode.  For example, the hook variable
+used by `text-mode' would be named `text-mode-hook'.  By convention the
+mode hook function receives no arguments. If a hook variable does not
+exist, or it has the value `nil', the major mode simply ignores it.
+
+   The recommended way to add functions to a hook variable is with the
+`add-hook' function.  For example, to automatically turn on the Auto
+Fill mode when Text mode is invoked the following code can be used in
+the initialization file (*note Init File::)
+
+     (add-hook 'text-mode-hook 'turn-on-auto-fill)
+
+   The `add-hook' function will check that the function is not already
+listed in the hook variable before adding it. It will also create a hook
+variable with the value `nil' if one does not exist before adding the
+function. `add-hook' adds functions to the front of the hook variable
+list. This means that the last hook added is run first by the major
+mode. It is considered very poor style to write hook functions that
+depend on the order that hooks are executed.
+
+   Hooks can be removed from hook variables with `remove-hook'.
+
+\1f
 File: xemacs.info,  Node: Indentation,  Next: Text,  Prev: Major Modes,  Up: Top
 
-Indentation
-***********
+19 Indentation
+**************
 
 `<TAB>'
      Indent current line "appropriately" in a mode-dependent fashion.
@@ -3351,8 +3440,8 @@ indents to the next tab stop column.  You can set the tab stops with
 \1f
 File: xemacs.info,  Node: Indentation Commands,  Next: Tab Stops,  Prev: Indentation,  Up: Indentation
 
-Indentation Commands and Techniques
-===================================
+19.1 Indentation Commands and Techniques
+========================================
 
 If you just want to insert a tab character in the buffer, you can type
 `C-q <TAB>'.
@@ -3407,8 +3496,8 @@ indentation point is applicable even then, `tab-to-tab-stop' is run
 \1f
 File: xemacs.info,  Node: Tab Stops,  Next: Just Spaces,  Prev: Indentation Commands,  Up: Indentation
 
-Tab Stops
-=========
+19.2 Tab Stops
+==============
 
 For typing in tables, you can use Text mode's definition of <TAB>,
 `tab-to-tab-stop'.  This command inserts indentation before point,
@@ -3449,8 +3538,8 @@ Vars::, for more information on that.
 \1f
 File: xemacs.info,  Node: Just Spaces,  Prev: Tab Stops,  Up: Indentation
 
-Tabs vs. Spaces
-===============
+19.3 Tabs vs. Spaces
+====================
 
 Emacs normally uses both tabs and spaces to indent lines.  If you
 prefer, all indentation can be made from spaces only.  To request this,
@@ -3468,8 +3557,8 @@ corresponding numbers of spaces.
 \1f
 File: xemacs.info,  Node: Text,  Next: Programs,  Prev: Indentation,  Up: Top
 
-Commands for Human Languages
-****************************
+20 Commands for Human Languages
+*******************************
 
 The term "text" has two widespread meanings in our area of the computer
 field.  One is data that is a sequence of characters.  In this sense of
@@ -3510,8 +3599,8 @@ you can use TeX mode; for input to nroff, Nroff mode.
 \1f
 File: xemacs.info,  Node: Text Mode,  Next: Words,  Prev: Text,  Up: Text
 
-Text Mode
-=========
+20.1 Text Mode
+==============
 
 You should use Text mode--rather than Fundamental or Lisp mode--to edit
 files of text in a human language.  Invoke `M-x text-mode' to enter
@@ -3558,8 +3647,8 @@ level structure more visible.
 \1f
 File: xemacs.info,  Node: Nroff Mode,  Next: TeX Mode,  Prev: Text Mode,  Up: Text Mode
 
-Nroff Mode
-----------
+20.1.1 Nroff Mode
+-----------------
 
 Nroff mode is a mode like Text mode but modified to handle nroff
 commands present in the text.  Invoke `M-x nroff-mode' to enter this
@@ -3596,8 +3685,8 @@ the same with the variable `nroff-mode-hook'.
 \1f
 File: xemacs.info,  Node: TeX Mode,  Next: Outline Mode,  Prev: Nroff Mode,  Up: Text Mode
 
-TeX Mode
---------
+20.1.2 TeX Mode
+---------------
 
 TeX is a powerful text formatter written by Donald Knuth; like GNU
 Emacs, it is free.  LaTeX is a simplified input format for TeX,
@@ -3650,8 +3739,8 @@ in cpio format, blocked 5120 bytes, ASCII headers.
 \1f
 File: xemacs.info,  Node: TeX Editing,  Next: TeX Print,  Prev: TeX Mode,  Up: TeX Mode
 
-TeX Editing Commands
-....................
+20.1.2.1 TeX Editing Commands
+.............................
 
 Here are the special commands provided in TeX mode for editing the text
 of the file.
@@ -3728,8 +3817,8 @@ there.
 \1f
 File: xemacs.info,  Node: TeX Print,  Prev: TeX Editing,  Up: TeX Mode
 
-TeX Printing Commands
-.....................
+20.1.2.2 TeX Printing Commands
+..............................
 
 You can invoke TeX as an inferior of Emacs on either the entire
 contents of the buffer or just a region at a time.  Running TeX in this
@@ -3803,8 +3892,8 @@ conditions.
 \1f
 File: xemacs.info,  Node: Outline Mode,  Prev: TeX Mode,  Up: Text Mode
 
-Outline Mode
-------------
+20.1.3 Outline Mode
+-------------------
 
 Outline mode is a major mode similar to Text mode but intended for
 editing outlines.  It allows you to make parts of the text temporarily
@@ -3838,8 +3927,8 @@ invisible.
 \1f
 File: xemacs.info,  Node: Outline Format,  Next: Outline Motion,  Prev: Outline Mode,  Up: Outline Mode
 
-Format of Outlines
-..................
+20.1.3.1 Format of Outlines
+...........................
 
 Outline mode assumes that the lines in the buffer are of two types:
 "heading lines" and "body lines".  A heading line represents a topic in
@@ -3852,24 +3941,24 @@ line.  Body lines belong to the preceding heading line.  Here is an
 example:
 
      * Food
-     
+
      This is the body,
      which says something about the topic of food.
-     
+
      ** Delicious Food
-     
+
      This is the body of the second-level header.
-     
+
      ** Distasteful Food
-     
+
      This could have
      a body too, with
      several lines.
-     
+
      *** Dormitory Food
-     
+
      * Shelter
-     
+
      A second first-level topic with its header line.
 
    A heading line together with all following body lines is called
@@ -3904,8 +3993,8 @@ line inside Emacs.
 \1f
 File: xemacs.info,  Node: Outline Motion,  Next: Outline Visibility,  Prev: Outline Format,  Up: Outline Mode
 
-Outline Motion Commands
-.......................
+20.1.3.2 Outline Motion Commands
+................................
 
 Some special commands in Outline mode move backward and forward to
 heading lines.
@@ -3947,8 +4036,8 @@ deeply nested.
 \1f
 File: xemacs.info,  Node: Outline Visibility,  Prev: Outline Motion,  Up: Outline Mode
 
-Outline Visibility Commands
-...........................
+20.1.3.3 Outline Visibility Commands
+....................................
 
 The other special commands of outline mode are used to make lines
 visible or invisible.  Their names all start with `hide' or `show'.
@@ -4023,8 +4112,8 @@ visible indication of the presence of invisible lines.
 \1f
 File: xemacs.info,  Node: Words,  Next: Sentences,  Prev: Text Mode,  Up: Text
 
-Words
-=====
+20.2 Words
+==========
 
 Emacs has commands for moving over or operating on words.  By
 convention, the keys for them are all `Meta-' characters.
@@ -4094,8 +4183,8 @@ a word delimiter.  *Note Syntax::.
 \1f
 File: xemacs.info,  Node: Sentences,  Next: Paragraphs,  Prev: Words,  Up: Text
 
-Sentences
-=========
+20.3 Sentences
+==============
 
 The Emacs commands for manipulating sentences and paragraphs are mostly
 on `Meta-' keys, and therefore are like the word-handling commands.
@@ -4150,8 +4239,8 @@ This example is explained in the section on regexps.  *Note Regexps::.
 \1f
 File: xemacs.info,  Node: Paragraphs,  Next: Pages,  Prev: Sentences,  Up: Text
 
-Paragraphs
-==========
+20.4 Paragraphs
+===============
 
 The Emacs commands for manipulating paragraphs are also `Meta-' keys.
 
@@ -4204,8 +4293,8 @@ pages.
 \1f
 File: xemacs.info,  Node: Pages,  Next: Filling,  Prev: Paragraphs,  Up: Text
 
-Pages
-=====
+20.5 Pages
+==========
 
 Files are often thought of as divided into "pages" by the "formfeed"
 character (ASCII Control-L, octal code 014).  For example, if a file is
@@ -4265,8 +4354,8 @@ matches a formfeed character at the beginning of a line.
 \1f
 File: xemacs.info,  Node: Filling,  Next: Case,  Prev: Pages,  Up: Text
 
-Filling Text
-============
+20.6 Filling Text
+=================
 
 If you use Auto Fill mode, Emacs "fills" text (breaks it up into lines
 that fit in a specified width) as you insert it.  When you alter
@@ -4282,8 +4371,8 @@ you can use explicit commands for filling.
 \1f
 File: xemacs.info,  Node: Auto Fill,  Next: Fill Commands,  Prev: Filling,  Up: Filling
 
-Auto Fill Mode
---------------
+20.6.1 Auto Fill Mode
+---------------------
 
 "Auto Fill" mode is a minor mode in which lines are broken
 automatically when they become too wide.  Breaking happens only when
@@ -4332,8 +4421,8 @@ for yourself.  *Note Init File::.
 \1f
 File: xemacs.info,  Node: Fill Commands,  Next: Fill Prefix,  Prev: Auto Fill,  Up: Filling
 
-Explicit Fill Commands
-----------------------
+20.6.2 Explicit Fill Commands
+-----------------------------
 
 `M-q'
      Fill current paragraph (`fill-paragraph').
@@ -4390,8 +4479,8 @@ that number as the new fill column.
 \1f
 File: xemacs.info,  Node: Fill Prefix,  Prev: Fill Commands,  Up: Filling
 
-The Fill Prefix
----------------
+20.6.3 The Fill Prefix
+----------------------
 
 To fill a paragraph in which each line starts with a special marker
 (which might be a few spaces, giving an indented paragraph), use the
@@ -4441,8 +4530,8 @@ as a fill prefix.
 \1f
 File: xemacs.info,  Node: Case,  Prev: Filling,  Up: Text
 
-Case Conversion Commands
-========================
+20.7 Case Conversion Commands
+=============================
 
 Emacs has commands for converting either a single word or any arbitrary
 range of text to upper case or to lower case.
@@ -4491,11 +4580,14 @@ point and mark to the specified case.  Point and mark do not move.
 \1f
 File: xemacs.info,  Node: Programs,  Next: Running,  Prev: Text,  Up: Top
 
-Editing Programs
-****************
+21 Editing Programs
+*******************
+
+XEmacs provides specialized support for editing source files for many
+different programming languages. For example it is possible to
 
-Emacs has many commands designed to understand the syntax of programming
-languages such as Lisp and C.  These commands can:
+   * Follow the usual indentation conventions of the language (*note
+     Grinding::).
 
    * Move over or kill balanced expressions or "sexps" (*note Lists::).
 
@@ -4506,8 +4598,7 @@ languages such as Lisp and C.  These commands can:
 
    * Insert, kill, or align comments (*note Comments::).
 
-   * Follow the usual indentation conventions of the language (*note
-     Grinding::).
+   * Find functions and symbols in program by name (*note Tags::).
 
    The commands available for words, sentences, and paragraphs are
 useful in editing code even though their canonical application is for
@@ -4540,31 +4631,59 @@ appear on the screen.
 * Change Log::          Maintaining a change history for your program.
 * Tags::                Go direct to any function in your program in one
                          command.  Tags remembers which file it is in.
+* CC Mode::             Modes for C, C++, Java and similar languages
 * Fortran::            Fortran mode and its special features.
 * Asm Mode::            Asm mode and its special features.
 
 \1f
 File: xemacs.info,  Node: Program Modes,  Next: Lists,  Prev: Programs,  Up: Programs
 
-Major Modes for Programming Languages
-=====================================
-
-Emacs has several major modes for the programming languages Lisp,
-Scheme (a variant of Lisp), C, Fortran, and Muddle.  Ideally, a major
-mode should be implemented for each programming language you might want
-to edit with Emacs; but often the mode for one language can serve for
-other syntactically similar languages.  The language modes that exist
-are those that someone decided to take the trouble to write.
-
-   There are several variants of Lisp mode, which differ in the way they
-interface to Lisp execution.  *Note Lisp Modes::.
+21.1 Major Modes for Programming Languages
+==========================================
+
+Emacs has several major modes (*note Major Modes::) to support
+programming languages. These major modes will typically understand
+language syntax, provide automatic indentation features, syntax based
+highlighting of text, and will often provide interfaces to the
+programming environment to assist in compiling, executing and debugging
+programs.
+
+   A language mode exist when someone decides to take the trouble to
+write it. At this time many widely used programming languages are
+supported by XEmacs. Examples include Ada, Awk, C, C++, CORBA (IDL),
+Fortran, Java, Lisp, Modula 2, Objective-C, Perl, Pike, Prolog, Python,
+Ruby, Scheme, Simula, SQL, Tcl, Unix Shell scripts, and VHDL. Some of
+these language have seperate manuals, and some times more than one mode
+may be available for a language.  For example, there are several
+variants of Lisp mode, which differ in the way they interface to Lisp
+execution.  *Note Lisp Modes::.
+
+   Major modes for programming language support are distributed in
+optional XEmacs packages (*note Packages::) that must be installed
+before use. A notable exception to this rule is that a Lisp Mode is
+integral to XEmacs. The Programming Mode Package (`prog-modes')
+contains many such modes. Some languages are supported by packages of
+their own; prominent examples of such packages include `cc-mode' for C,
+C++, Java, Objective C etc., `python-modes' for Python, and `scheme'
+for Scheme.
+
+   For a language named LANG the major mode for the language will
+typically be named `LANG-mode'.  For example, the mode for C is called
+`c-mode', that for Bourne shell scripts is called `sh-mode' and so on.
+These modes will invoke the functions listed in the corresponding hook
+variables as a last step. *Note Mode Hooks::.
+
+   A mode can be invoked by typing `M-x LANG-mode <RET>'. However this
+step is not normally required. If the package for a language mode is
+installed XEmacs usually knows when to automatically invoke the mode.
+This is normally done based on examining the file name to determine the
+language. *Note Choosing Modes::.
 
    Each of the programming language modes defines the <TAB> key to run
 an indentation function that knows the indentation conventions of that
-language and updates the current line's indentation accordingly.  For
-example, in C mode <TAB> is bound to `c-indent-line'.  <LFD> is
-normally defined to do <RET> followed by <TAB>; thus it, too, indents
-in a mode-specific fashion.
+language and updates the current line's indentation accordingly.  <LFD>
+is normally defined to do <RET> followed by <TAB>; thus it, too,
+indents in a mode-specific fashion.
 
    In most programming languages, indentation is likely to vary from
 line to line.  So the major modes for those languages rebind <DEL> to
@@ -4579,20 +4698,11 @@ blank lines, so that the paragraph commands remain useful.  Auto Fill
 mode, if enabled in a programming language major mode, indents the new
 lines which it creates.
 
-   Turning on a major mode calls a user-supplied function called the
-"mode hook", which is the value of a Lisp variable.  For example,
-turning on C mode calls the value of the variable `c-mode-hook' if that
-value exists and is non-`nil'.  Mode hook variables for other
-programming language modes include `lisp-mode-hook',
-`emacs-lisp-mode-hook', `lisp-interaction-mode-hook',
-`scheme-mode-hook', and `muddle-mode-hook'.  The mode hook function
-receives no arguments.
-
 \1f
 File: xemacs.info,  Node: Lists,  Next: Defuns,  Prev: Program Modes,  Up: Programs
 
-Lists and Sexps
-===============
+21.2 Lists and Sexps
+====================
 
 By convention, Emacs keys for dealing with balanced expressions are
 usually `Control-Meta-' characters.  They tend to be analogous in
@@ -4675,13 +4785,6 @@ over them as well.
 specified number of times; with a negative argument, it moves in the
 opposite direction.
 
-   In languages such as C where the comment-terminator can be
-recognized, the sexp commands move across comments as if they were
-whitespace.  In Lisp and other languages where comments run until the
-end of a line, it is very difficult to ignore comments when parsing
-backwards; therefore, in such languages the sexp commands treat the
-text of comments as if it were code.
-
    Killing an sexp at a time can be done with `C-M-k' (`kill-sexp').
 `C-M-k' kills the characters that `C-M-f' would move over.
 
@@ -4723,8 +4826,8 @@ declared to be an opening delimiter and act like an open parenthesis.
 \1f
 File: xemacs.info,  Node: Defuns,  Next: Grinding,  Prev: Lists,  Up: Programs
 
-Defuns
-======
+21.3 Defuns
+===========
 
 In Emacs, a parenthetical grouping at the top level in the buffer is
 called a "defun".  The name derives from the fact that most top-level
@@ -4780,8 +4883,8 @@ right; however, it mandates the convention described above.
 \1f
 File: xemacs.info,  Node: Grinding,  Next: Matching,  Prev: Defuns,  Up: Programs
 
-Indentation for Programs
-========================
+21.4 Indentation for Programs
+=============================
 
 The best way to keep a program properly indented ("ground") is to use
 Emacs to re-indent it as you change the program.  Emacs has commands to
@@ -4793,13 +4896,12 @@ all of the lines inside a single parenthetical grouping.
 * Basic Indent::
 * Multi-line Indent::   Commands to reindent many lines at once.
 * Lisp Indent::                Specifying how each Lisp function should be indented.
-* C Indent::           Choosing an indentation style for C code.
 
 \1f
 File: xemacs.info,  Node: Basic Indent,  Next: Multi-line Indent,  Prev: Grinding,  Up: Grinding
 
-Basic Program Indentation Commands
-----------------------------------
+21.4.1 Basic Program Indentation Commands
+-----------------------------------------
 
 `<TAB>'
      Adjust indentation of current line.
@@ -4843,8 +4945,8 @@ information on this behavior.
 \1f
 File: xemacs.info,  Node: Multi-line Indent,  Next: Lisp Indent,  Prev: Basic Indent,  Up: Grinding
 
-Indenting Several Lines
------------------------
+21.4.2 Indenting Several Lines
+------------------------------
 
 Several commands are available to re-indent several lines of code which
 have been altered or moved to a different level in a list structure.
@@ -4880,10 +4982,10 @@ mark.  The command `C-M-\' (`indent-region') applies <TAB> to every
 line whose first character is between point and mark.
 
 \1f
-File: xemacs.info,  Node: Lisp Indent,  Next: C Indent,  Prev: Multi-line Indent,  Up: Grinding
+File: xemacs.info,  Node: Lisp Indent,  Prev: Multi-line Indent,  Up: Grinding
 
-Customizing Lisp Indentation
-----------------------------
+21.4.3 Customizing Lisp Indentation
+-----------------------------------
 
 The indentation pattern for a Lisp expression can depend on the function
 called by the expression.  For each Lisp function, you can choose among
@@ -4942,7 +5044,6 @@ a symbol, SYMBOL
 
     POS
           The position at which the line being indented begins.
-
      It should return either a number, which is the number of columns of
      indentation for that line, or a list whose first element is such a
      number.  The difference between returning a number and returning a
@@ -4954,160 +5055,10 @@ a symbol, SYMBOL
      for the following lines until the end of the list.
 
 \1f
-File: xemacs.info,  Node: C Indent,  Prev: Lisp Indent,  Up: Grinding
-
-Customizing C Indentation
--------------------------
-
-Two variables control which commands perform C indentation and when.
-
-   If `c-auto-newline' is non-`nil', newlines are inserted both before
-and after braces that you insert and after colons and semicolons.
-Correct C indentation is done on all the lines that are made this way.
-
-   If `c-tab-always-indent' is non-`nil', the <TAB> command in C mode
-does indentation only if point is at the left margin or within the
-line's indentation.  If there is non-whitespace to the left of point,
-<TAB> just inserts a tab character in the buffer.  Normally, this
-variable is `nil', and <TAB> always reindents the current line.
-
-   C does not have anything analogous to particular function names for
-which special forms of indentation are desirable.  However, it has a
-different need for customization facilities: many different styles of C
-indentation are in common use.
-
-   There are six variables you can set to control the style that Emacs C
-mode will use.
-
-`c-indent-level'
-     Indentation of C statements within surrounding block.  The
-     surrounding block's indentation is the indentation of the line on
-     which the open-brace appears.
-
-`c-continued-statement-offset'
-     Extra indentation given to a substatement, such as the then-clause
-     of an `if' or body of a `while'.
-
-`c-brace-offset'
-     Extra indentation for lines that start with an open brace.
-
-`c-brace-imaginary-offset'
-     An open brace following other text is treated as if it were this
-     far to the right of the start of its line.
-
-`c-argdecl-indent'
-     Indentation level of declarations of C function arguments.
-
-`c-label-offset'
-     Extra indentation for a line that is a label, case, or default.
-
-   The variable `c-indent-level' controls the indentation for C
-statements with respect to the surrounding block.  In the example:
-
-         {
-           foo ();
-
-the difference in indentation between the lines is `c-indent-level'.
-Its standard value is 2.
-
-   If the open-brace beginning the compound statement is not at the
-beginning of its line, the `c-indent-level' is added to the indentation
-of the line, not the column of the open-brace.  For example,
-
-     if (losing) {
-       do_this ();
-
-One popular indentation style is that which results from setting
-`c-indent-level' to 8 and putting open-braces at the end of a line in
-this way.  Another popular style prefers to put the open-brace on a
-separate line.
-
-   In fact, the value of the variable `c-brace-imaginary-offset' is
-also added to the indentation of such a statement.  Normally this
-variable is zero.  Think of this variable as the imaginary position of
-the open brace, relative to the first non-blank character on the line.
-By setting the variable to 4 and `c-indent-level' to 0, you can get
-this style:
-
-     if (x == y) {
-         do_it ();
-         }
-
-   When `c-indent-level' is zero, the statements inside most braces
-line up exactly under the open brace.  An exception are braces in column
-zero, like those surrounding a function's body.  The statements inside
-those braces are not placed at column zero.  Instead, `c-brace-offset'
-and `c-continued-statement-offset' (see below) are added to produce a
-typical offset between brace levels, and the statements are indented
-that far.
-
-   `c-continued-statement-offset' controls the extra indentation for a
-line that starts within a statement (but not within parentheses or
-brackets).  These lines are usually statements inside other statements,
-like the then-clauses of `if' statements and the bodies of `while'
-statements.  The `c-continued-statement-offset' parameter determines
-the difference in indentation between the two lines in:
-
-     if (x == y)
-       do_it ();
-
-The default value for `c-continued-statement-offset' is 2.  Some
-popular indentation styles correspond to a value of zero for
-`c-continued-statement-offset'.
-
-   `c-brace-offset' is the extra indentation given to a line that
-starts with an open-brace.  Its standard value is zero; compare:
-
-     if (x == y)
-       {
-
-with:
-
-     if (x == y)
-       do_it ();
-
-If you set `c-brace-offset' to 4, the first example becomes:
-
-     if (x == y)
-           {
-
-   `c-argdecl-indent' controls the indentation of declarations of the
-arguments of a C function.  It is absolute: argument declarations
-receive exactly `c-argdecl-indent' spaces.  The standard value is 5 and
-results in code like this:
-
-     char *
-     index (string, char)
-          char *string;
-          int char;
-
-   `c-label-offset' is the extra indentation given to a line that
-contains a label, a case statement, or a `default:' statement.  Its
-standard value is -2 and results in code like this:
-
-     switch (c)
-       {
-       case 'x':
-
-If `c-label-offset' were zero, the same code would be indented as:
-
-     switch (c)
-       {
-         case 'x':
-
-This example assumes that the other variables above also have their
-default values.
-
-   Using the indentation style produced by the default settings of the
-variables just discussed and putting open braces on separate lines
-produces clear and readable files.  For an example, look at any of the C
-source files of XEmacs.
-
-\1f
 File: xemacs.info,  Node: Matching,  Next: Comments,  Prev: Grinding,  Up: Programs
 
-Automatic Display of Matching Parentheses
-=========================================
+21.5 Automatic Display of Matching Parentheses
+==============================================
 
 The Emacs parenthesis-matching feature shows you automatically how
 parentheses match in the text.  Whenever a self-inserting character that
@@ -5138,8 +5089,8 @@ match.  The default is 4000.
 \1f
 File: xemacs.info,  Node: Comments,  Next: Balanced Editing,  Prev: Matching,  Up: Programs
 
-Manipulating Comments
-=====================
+21.6 Manipulating Comments
+==========================
 
 The comment commands insert, kill and align comments.
 
@@ -5204,8 +5155,8 @@ programmed to call `kill-comment' when called with a negative argument.
 However, `kill-comment' is a valid command which you could bind
 directly to a key if you wanted to.
 
-Multiple Lines of Comments
---------------------------
+21.6.1 Multiple Lines of Comments
+---------------------------------
 
 If you are typing a comment and want to continue it on another line,
 use the command `Meta-<LFD>' (`indent-new-comment-line'), which
@@ -5216,8 +5167,8 @@ comment is continued in just this fashion.  If point is not at the end
 of the line when you type `M-<LFD>', the text on the rest of the line
 becomes part of the new comment line.
 
-Options Controlling Comments
-----------------------------
+21.6.2 Options Controlling Comments
+-----------------------------------
 
 The comment column is stored in the variable `comment-column'.  You can
 explicitly set it to a number.  Alternatively, the command `C-x ;'
@@ -5272,8 +5223,8 @@ that begin an existing comment and on the code in the preceding lines.
 \1f
 File: xemacs.info,  Node: Balanced Editing,  Next: Lisp Completion,  Prev: Comments,  Up: Programs
 
-Editing Without Unbalanced Parentheses
-======================================
+21.7 Editing Without Unbalanced Parentheses
+===========================================
 
 `M-('
      Put parentheses around next sexp(s) (`insert-parentheses').
@@ -5296,8 +5247,8 @@ there is none), and indents with <LFD> after it.
 \1f
 File: xemacs.info,  Node: Lisp Completion,  Next: Documentation,  Prev: Balanced Editing,  Up: Programs
 
-Completion for Lisp Symbols
-===========================
+21.8 Completion for Lisp Symbols
+================================
 
 Completion usually happens in the minibuffer.  An exception is
 completion for Lisp symbol names, which is available in all buffers.
@@ -5320,8 +5271,8 @@ all possible completions is displayed in another window.
 \1f
 File: xemacs.info,  Node: Documentation,  Next: Change Log,  Prev: Lisp Completion,  Up: Programs
 
-Documentation Commands
-======================
+21.9 Documentation Commands
+===========================
 
 As you edit Lisp code to be run in Emacs, you can use the commands `C-h
 f' (`describe-function') and `C-h v' (`describe-variable') to print
@@ -5345,8 +5296,8 @@ followed by the description of the termcap data base from section 5.
 \1f
 File: xemacs.info,  Node: Change Log,  Next: Tags,  Prev: Documentation,  Up: Programs
 
-Change Logs
-===========
+21.10 Change Logs
+=================
 
 The Emacs command `M-x add-change-log-entry' helps you keep a record of
 when and why you have changed a program.  It assumes that you have a
@@ -5377,7 +5328,7 @@ must be indented.  *Note Text Mode::.
 log for Emacs:
 
      Wed Jun 26 19:29:32 1985  Richard M. Stallman  (rms at mit-prep)
-     
+
              * xdisp.c (try_window_id):
              If C-k is done at end of next-to-last line,
              this fn updates window_end_vpos and cannot leave
@@ -5385,12 +5336,12 @@ log for Emacs:
              If display is preempted before lines are output,
              this is inconsistent.  Fix by setting
              blank_end_of_window to nonzero.
-     
+
      Tue Jun 25 05:25:33 1985  Richard M. Stallman  (rms at mit-prep)
-     
+
              * cmds.c (Fnewline):
              Call the auto fill hook if appropriate.
-     
+
              * xdisp.c (try_window_id):
              If point is found by compute_motion after xp, record that
              permanently.  If display_text_line sets point position wrong
@@ -5398,10 +5349,10 @@ log for Emacs:
              not displayed), set it again in final compute_motion.
 
 \1f
-File: xemacs.info,  Node: Tags,  Next: Fortran,  Prev: Change Log,  Up: Programs
+File: xemacs.info,  Node: Tags,  Next: CC Mode,  Prev: Change Log,  Up: Programs
 
-Tags Tables
-===========
+21.11 Tags Tables
+=================
 
 A "tags table" is a description of how a multi-file program is broken
 up into files.  It lists the names of the component files and the names
@@ -5440,8 +5391,8 @@ class browser.  *Note Top: (ebrowse)Top.
 \1f
 File: xemacs.info,  Node: Tag Syntax,  Next: Create Tags Table,  Up: Tags
 
-Source File Tag Syntax
-----------------------
+21.11.1 Source File Tag Syntax
+------------------------------
 
 Here is how tag syntax is defined for the most popular languages:
 
@@ -5567,8 +5518,8 @@ Regexps::) to handle other formats and languages.
 \1f
 File: xemacs.info,  Node: Create Tags Table,  Next: Etags Regexps,  Prev: Tag Syntax,  Up: Tags
 
-Creating Tags Tables
---------------------
+21.11.2 Creating Tags Tables
+----------------------------
 
 The `etags' program is used to create a tags table file.  It knows the
 syntax of several languages, as described in *Note Tag Syntax::.  Here
@@ -5650,8 +5601,8 @@ all the available `etags' options, together with a short explanation.
 \1f
 File: xemacs.info,  Node: Etags Regexps,  Next: Select Tags Table,  Prev: Create Tags Table,  Up: Tags
 
-Etags Regexps
--------------
+21.11.3 Etags Regexps
+---------------------
 
 The `--regex' option provides a general way of recognizing tags based
 on regexp matching.  You can freely intermix it with file names.  Each
@@ -5759,8 +5710,8 @@ from shell interpretation.
 \1f
 File: xemacs.info,  Node: Select Tags Table,  Next: Find Tag,  Prev: Etags Regexps,  Up: Tags
 
-Selecting a Tags Table
-----------------------
+21.11.4 Selecting a Tags Table
+------------------------------
 
 At any time Emacs has one "selected" tags table, and all the commands
 for working with tags tables use the selected one.  To select a tags
@@ -5841,8 +5792,8 @@ supplanted by the variable `tag-table-alist'.
 \1f
 File: xemacs.info,  Node: Find Tag,  Next: Tags Search,  Prev: Select Tags Table,  Up: Tags
 
-Finding a Tag
--------------
+21.11.5 Finding a Tag
+---------------------
 
 The most important thing that a tags table enables you to do is to find
 the definition of a specific tag.
@@ -5919,8 +5870,8 @@ function.
 \1f
 File: xemacs.info,  Node: Tags Search,  Next: List Tags,  Prev: Find Tag,  Up: Tags
 
-Searching and Replacing with Tags Tables
-----------------------------------------
+21.11.6 Searching and Replacing with Tags Tables
+------------------------------------------------
 
 The commands in this section visit and search all the files listed in
 the selected tags table, one by one.  For these commands, the tags
@@ -5996,8 +5947,8 @@ desired result, you can use `M-x next-file'.
 \1f
 File: xemacs.info,  Node: List Tags,  Prev: Tags Search,  Up: Tags
 
-Tags Table Inquiries
---------------------
+21.11.7 Tags Table Inquiries
+----------------------------
 
 `M-x list-tags'
      Display a list of the tags defined in a specific program file.
@@ -6019,10 +5970,143 @@ then finds all the tags in the selected tags table whose entries match
 that regexp, and displays the tag names found.
 
 \1f
-File: xemacs.info,  Node: Fortran,  Next: Asm Mode,  Prev: Tags,  Up: Programs
+File: xemacs.info,  Node: CC Mode,  Next: Fortran,  Prev: Tags,  Up: Programs
+
+21.12 Modes for C, C++, Java and similar languages
+==================================================
+
+The recommended means for supporting the "C-like" programming languages
+in XEmacs is the `cc-mode' package.  CC Mode is not included in the
+basic XEmacs distribution but is available as an optional package. If
+loading a file whose names ends in the `.cc' extension does not
+automatically invoke a C++ Mode then the `cc-mode' package is probably
+not yet installed. *Note Packages::.
+
+   CC Mode provides modes for editing source files in Awk (`awk-mode'),
+C (`c-mode'), C++ (`c++-mode'), CORBA IDL (`idl-mode'), Java
+(`java-mode'), Objective C (`objc-mode'), and Pike (`pike-mode'). All
+these languages are supported with an sophisticated "indentation
+engine" that is feature rich, customizable and quite efficient.
+
+   Each language major mode runs hooks in the conventionally named hook
+variables (*note Mode Hooks::). In addition to this conventional
+behavior all the CC Mode major modes will also run hooks in
+`c-mode-common-hook' _before_ invoking the major mode specific hook.
+
+   CC Mode runs any hooks in `c-initialization-hook' exactly once when
+it is first loaded.
+
+   CC Mode is a very comprehensive and flexible system and full
+description of its capabilities is beyond the scope of this manual.  It
+is strongly recommended that the reader consult the CC Mode
+documentation for details once the package has been installed. *Note CC
+Mode: (cc-mode)Top.
+
+* Menu:
+
+* Older Modes::             Older Modes for C and AWK
+* Customizing CC Mode::     An Introduction to Customizing CC Mode.
+
+\1f
+File: xemacs.info,  Node: Older Modes,  Next: Customizing CC Mode,  Prev: CC Mode,  Up: CC Mode
+
+21.12.1 Older Modes for C and AWK
+---------------------------------
+
+XEmacs provides older versions of a C Mode and an AWK Mode in the
+`prog-modes' package. These older modes do not share the indentation
+engine in CC Mode have have their own specific means of customizing
+indentation. To use these modes the `prog-modes' package must be
+installed.
+
+   This older C mode is known simply as the "Old C Mode". It supports
+only the C language and it lacks many of the features of CC Mode.
+However the old C mode offers modest space requirements and very fast
+operation.  Old C Mode might be useful in space constrained
+environments, on slow machines, or for editing very large files. This
+old C mode is available in the `old-c-mode' library. *Note Old C Mode:
+(prog-modes)old-c-mode.
 
-Fortran Mode
-============
+   The old AWK mode exists for similar reasons. It is available in the
+`awk-mode' library.  *Note Old AWK Mode: (prog-modes)awk-mode.
+
+   Note that the prog-modes package will never automatically invoke
+these older modes for a user. However installing the `cc-mode' package
+_will_ make CC Mode's versions available automatically.  As a result a
+user who wants to use these older modes must explicitly load the old
+libraries to use them.
+
+\1f
+File: xemacs.info,  Node: Customizing CC Mode,  Prev: Older Modes,  Up: CC Mode
+
+21.12.2 Customizing Indentation in CC Mode
+------------------------------------------
+
+A very brief introduction is included here on customizing CC Mode. CC
+Mode has many features, including useful minor modes, that are
+completely documented in its own manual.
+
+   CC Mode implements several different "styles" for C code (and the
+other languages supported by CC Mode). If you need to change the
+indentation style for CC Mode it is recommended that you first see if an
+existing style meets your requirements. The style chosen will affect the
+placement of language elements like braces, function declarations and
+comments. You can choose a style interactively by typing `C-c .' and
+pressing the space bar at the prompt to get a list of supported styles.
+`C-c .' runs the function `c-set-style' which applies to all CC Mode
+language modes though its name might suggest otherwise. A few of the
+the supported styles are listed below.
+
+   * "gnu" -- The recommeded style from the Free Software Foundation for
+     GNU software.
+
+   * "k&r" -- The classic style from Kernighan and Ritchie.
+
+   * "linux" -- The style recommended for code in the Linux kernel.
+
+   * "bsd" -- The style recommended for software developed in BSD.
+
+   * "java -- The "traditional" Java style.
+
+   The default style in XEmacs is "gnu" except for Java mode where it
+is the "java" style (this is governed by the variable
+`c-default-style').
+
+   The styles included in CC Mode all use a buffer local variable called
+`c-basic-offset' as the basic indentation level (this buffer local
+variable is used in all CC Mode language modes though its name might
+suggest otherwise). All indentation is, by default, expressed in
+multiples of `c-basic-offset'.
+
+   Each style defines a default value for `c-basic-offset', for the
+"gnu" style sets it to 2. A very common customization scenario is where
+a user wants to use an existing style but with a different basic offset
+value. An easy way to do this is to set `c-basic-offset' in the
+language mode hook after selecting the chosen style.
+
+   For example, a user might want to follow a local coding convention of
+using the "k&r" style for C code with indentation in two columns
+multiples (instead of the five column default provided by the CC Mode
+"k&r" style). This can be achieved with the following code in the
+initialization file (*note Init File::)
+
+     (defun my-c-mode-hook ()
+       (c-set-style "k&r")
+       (setq c-basic-offset 2))
+     (add-hook 'c-mode-hook 'my-c-mode-hook)
+
+   Most customizations for indentation in various CC modes can be
+accomplished by choosing a style and then choosing value for
+`c-basic-offset' that meets the local coding convention. CC Mode has a
+very customizable indentation engine and a furthur discussion is really
+beyond the scope of this manual. *Note Indentation Engine:
+(cc-mode)Indentation Engine.
+
+\1f
+File: xemacs.info,  Node: Fortran,  Next: Asm Mode,  Prev: CC Mode,  Up: Programs
+
+21.13 Fortran Mode
+==================
 
 Fortran mode provides special motion commands for Fortran statements and
 subprograms, and indentation commands that understand Fortran
@@ -6051,8 +6135,8 @@ variable has a non-`nil' value.
 \1f
 File: xemacs.info,  Node: Fortran Motion,  Next: Fortran Indent,  Prev: Fortran,  Up: Fortran
 
-Motion Commands
----------------
+21.13.1 Motion Commands
+-----------------------
 
 Fortran mode provides special commands to move by subprograms (functions
 and subroutines) and by statements.  There is also a command to put the
@@ -6081,8 +6165,8 @@ moving it.
 \1f
 File: xemacs.info,  Node: Fortran Indent,  Next: Fortran Comments,  Prev: Fortran Motion,  Up: Fortran
 
-Fortran Indentation
--------------------
+21.13.2 Fortran Indentation
+---------------------------
 
 Special commands and features are available for indenting Fortran code.
 They make sure various syntactic entities (line numbers, comment line
@@ -6099,8 +6183,8 @@ required for standard Fortran.
 \1f
 File: xemacs.info,  Node: ForIndent Commands,  Next: ForIndent Num,  Prev: Fortran Indent,  Up: Fortran Indent
 
-Fortran Indentation Commands
-............................
+21.13.2.1 Fortran Indentation Commands
+......................................
 
 `<TAB>'
      Indent the current line (`fortran-indent-line').
@@ -6130,8 +6214,8 @@ lines.
 \1f
 File: xemacs.info,  Node: ForIndent Num,  Next: ForIndent Conv,  Prev: ForIndent Commands,  Up: Fortran Indent
 
-Line Numbers and Continuation
-.............................
+21.13.2.2 Line Numbers and Continuation
+.......................................
 
 If a number is the first non-whitespace in the line, it is assumed to be
 a line number and is moved to columns 0 through 4.  (Columns are always
@@ -6157,8 +6241,8 @@ is like inserting anything else.
 \1f
 File: xemacs.info,  Node: ForIndent Conv,  Next: ForIndent Vars,  Prev: ForIndent Num,  Up: Fortran Indent
 
-Syntactic Conventions
-.....................
+21.13.2.3 Syntactic Conventions
+...............................
 
 Fortran mode assumes that you follow certain conventions that simplify
 the task of understanding a Fortran program well enough to indent it
@@ -6178,8 +6262,8 @@ followed.
 \1f
 File: xemacs.info,  Node: ForIndent Vars,  Prev: ForIndent Conv,  Up: Fortran Indent
 
-Variables for Fortran Indentation
-.................................
+21.13.2.4 Variables for Fortran Indentation
+...........................................
 
 Several additional variables control how Fortran indentation works.
 
@@ -6211,8 +6295,8 @@ Several additional variables control how Fortran indentation works.
 \1f
 File: xemacs.info,  Node: Fortran Comments,  Next: Fortran Columns,  Prev: Fortran Indent,  Up: Fortran
 
-Comments
---------
+21.13.3 Comments
+----------------
 
 The usual Emacs comment commands assume that a comment can follow a line
 of code.  In Fortran, the standard comment syntax requires an entire
@@ -6292,8 +6376,8 @@ context which one is referred to.
 \1f
 File: xemacs.info,  Node: Fortran Columns,  Next: Fortran Abbrev,  Prev: Fortran Comments,  Up: Fortran
 
-Columns
--------
+21.13.4 Columns
+---------------
 
 `C-c C-r'
      Displays a "column ruler" momentarily above the current line
@@ -6327,8 +6411,8 @@ immediately see when a line gets too wide to be correct Fortran.
 \1f
 File: xemacs.info,  Node: Fortran Abbrev,  Prev: Fortran Columns,  Up: Fortran
 
-Fortran Keyword Abbrevs
------------------------
+21.13.5 Fortran Keyword Abbrevs
+-------------------------------
 
 Fortran mode provides many built-in abbrevs for common keywords and
 declarations.  These are the same sort of abbrevs that you can define
@@ -6350,8 +6434,8 @@ abbrevs and what they stand for.
 \1f
 File: xemacs.info,  Node: Asm Mode,  Prev: Fortran,  Up: Programs
 
-Asm Mode
-========
+21.14 Asm Mode
+==============
 
 Asm mode is a major mode for editing files of assembler code.  It
 defines these commands:
@@ -6375,8 +6459,8 @@ comments in assembler syntax.
 \1f
 File: xemacs.info,  Node: Running,  Next: Abbrevs,  Prev: Programs,  Up: Top
 
-Compiling and Testing Programs
-******************************
+22 Compiling and Testing Programs
+*********************************
 
 The previous chapter discusses the Emacs commands that are useful for
 making changes in programs.  This chapter deals with commands that
@@ -6397,8 +6481,8 @@ assist in the larger process of developing and maintaining programs.
 \1f
 File: xemacs.info,  Node: Compilation,  Next: Lisp Modes,  Prev: Running,  Up: Running
 
-Running "make", or Compilers Generally
-======================================
+22.1 Running "make", or Compilers Generally
+===========================================
 
 Emacs can run compilers for non-interactive languages like C and
 Fortran as inferior processes, feeding the error log into an Emacs
@@ -6497,8 +6581,8 @@ prompt.  Here's how to do it in `csh':
 \1f
 File: xemacs.info,  Node: Lisp Modes,  Next: Lisp Libraries,  Prev: Compilation,  Up: Running
 
-Major Modes for Lisp
-====================
+22.2 Major Modes for Lisp
+=========================
 
 Emacs has four different major modes for Lisp.  They are the same in
 terms of editing commands, but differ in the commands for executing Lisp
@@ -6535,8 +6619,8 @@ Inferior Scheme mode
 \1f
 File: xemacs.info,  Node: Lisp Libraries,  Next: Lisp Eval,  Prev: Lisp Modes,  Up: Running
 
-Libraries of Lisp Code for Emacs
-================================
+22.3 Libraries of Lisp Code for Emacs
+=====================================
 
 Lisp code for Emacs editing commands is stored in files whose names
 conventionally end in `.el'.  This ending tells Emacs to edit them in
@@ -6551,8 +6635,8 @@ Emacs-Lisp mode (*note Lisp Modes::).
 \1f
 File: xemacs.info,  Node: Loading,  Next: Compiling Libraries,  Prev: Lisp Libraries,  Up: Lisp Libraries
 
-Loading Libraries
------------------
+22.3.1 Loading Libraries
+------------------------
 
 `M-x load-file FILE'
      Load the file FILE of Lisp code.
@@ -6641,8 +6725,8 @@ does prevent execution of the rest of the `forms'.
 \1f
 File: xemacs.info,  Node: Compiling Libraries,  Next: Mocklisp,  Prev: Loading,  Up: Lisp Libraries
 
-Compiling Libraries
--------------------
+22.3.2 Compiling Libraries
+--------------------------
 
 Emacs Lisp code can be compiled into byte-code which loads faster,
 takes up less space when loaded, and executes faster.
@@ -6666,7 +6750,7 @@ takes up less space when loaded, and executes faster.
      Recompile every `.el' file in DIRECTORY that needs recompilation.
 
 `M-x disassemble'
-     Print disassembled code for OBJECT on (optional) STREAM.
+     Print disassembled code for OBJECT on (optional) STREAM.  
 
 `M-x make-obsolete FUNCTION NEW'
      Make the byte-compiler warn that FUNCTION is obsolete and NEW
@@ -6710,8 +6794,8 @@ instruction refers to a variable or constant, that is shown, too.
 \1f
 File: xemacs.info,  Node: Mocklisp,  Prev: Compiling Libraries,  Up: Lisp Libraries
 
-Converting Mocklisp to Lisp
----------------------------
+22.3.3 Converting Mocklisp to Lisp
+----------------------------------
 
 XEmacs can run Mocklisp files by converting them to Emacs Lisp first.
 To convert a Mocklisp file, visit it and then type `M-x
@@ -6724,182 +6808,3 @@ reason is that converted Mocklisp code uses some special Lisp features
 to deal with Mocklisp's incompatible ideas of how arguments are
 evaluated and which values signify "true" or "false".
 
-\1f
-File: xemacs.info,  Node: Lisp Eval,  Next: Lisp Debug,  Prev: Lisp Libraries,  Up: Running
-
-Evaluating Emacs-Lisp Expressions
-=================================
-
-Lisp programs intended to be run in Emacs should be edited in
-Emacs-Lisp mode; this will happen automatically for file names ending in
-`.el'.  By contrast, Lisp mode itself should be used for editing Lisp
-programs intended for other Lisp systems.  Emacs-Lisp mode can be
-selected with the command `M-x emacs-lisp-mode'.
-
-   For testing of Lisp programs to run in Emacs, it is useful to be able
-to evaluate part of the program as it is found in the Emacs buffer.  For
-example, if you change the text of a Lisp function definition and then
-evaluate the definition, Emacs installs the change for future calls to
-the function.  Evaluation of Lisp expressions is also useful in any
-kind of editing task for invoking non-interactive functions (functions
-that are not commands).
-
-`M-:'
-     Read a Lisp expression in the minibuffer, evaluate it, and print
-     the value in the minibuffer (`eval-expression').
-
-`C-x C-e'
-     Evaluate the Lisp expression before point, and print the value in
-     the minibuffer (`eval-last-sexp').
-
-`C-M-x'
-     Evaluate the defun containing point or after point, and print the
-     value in the minibuffer (`eval-defun').
-
-`M-x eval-region'
-     Evaluate all the Lisp expressions in the region.
-
-`M-x eval-current-buffer'
-     Evaluate all the Lisp expressions in the buffer.
-
-   `M-:' (`eval-expression') is the most basic command for evaluating a
-Lisp expression interactively.  It reads the expression using the
-minibuffer, so you can execute any expression on a buffer regardless of
-what the buffer contains.  When evaluation is complete, the current
-buffer is once again the buffer that was current when `M-:' was typed.
-
-   In Emacs-Lisp mode, the key `C-M-x' is bound to the function
-`eval-defun', which parses the defun containing point or following point
-as a Lisp expression and evaluates it.  The value is printed in the echo
-area.  This command is convenient for installing in the Lisp environment
-changes that you have just made in the text of a function definition.
-
-   The command `C-x C-e' (`eval-last-sexp') performs a similar job but
-is available in all major modes, not just Emacs-Lisp mode.  It finds
-the sexp before point, reads it as a Lisp expression, evaluates it, and
-prints the value in the echo area.  It is sometimes useful to type in an
-expression and then, with point still after it, type `C-x C-e'.
-
-   If `C-M-x' or `C-x C-e' are given a numeric argument, they print the
-value by inserting it into the current buffer at point, rather than in
-the echo area.  The argument value does not matter.
-
-   The most general command for evaluating Lisp expressions from a
-buffer is `eval-region'.  `M-x eval-region' parses the text of the
-region as one or more Lisp expressions, evaluating them one by one.
-`M-x eval-current-buffer' is similar, but it evaluates the entire
-buffer.  This is a reasonable way to install the contents of a file of
-Lisp code that you are just ready to test.  After finding and fixing a
-bug, use `C-M-x' on each function that you change, to keep the Lisp
-world in step with the source file.
-
-\1f
-File: xemacs.info,  Node: Lisp Debug,  Next: Lisp Interaction,  Prev: Lisp Eval,  Up: Running
-
-The Emacs-Lisp Debugger
-=======================
-
-XEmacs contains a debugger for Lisp programs executing inside it.  This
-debugger is normally not used; many commands frequently get Lisp errors
-when invoked in inappropriate contexts (such as `C-f' at the end of the
-buffer) and it would be unpleasant to enter a special debugging mode in
-this case.  When you want to make Lisp errors invoke the debugger, you
-must set the variable `debug-on-error' to non-`nil'.  Quitting with
-`C-g' is not considered an error, and `debug-on-error' has no effect on
-the handling of `C-g'.  However, if you set `debug-on-quit' to be
-non-`nil', `C-g' will invoke the debugger.  This can be useful for
-debugging an infinite loop; type `C-g' once the loop has had time to
-reach its steady state.  `debug-on-quit' has no effect on errors.
-
-   You can make Emacs enter the debugger when a specified function is
-called or at a particular place in Lisp code.  Use `M-x debug-on-entry'
-with argument FUN-NAME to have Emacs enter the debugger as soon as
-FUN-NAME is called. Use `M-x cancel-debug-on-entry' to make the
-function stop entering the debugger when called.  (Redefining the
-function also does this.)  To enter the debugger from some other place
-in Lisp code, you must insert the expression `(debug)' there and
-install the changed code with `C-M-x'.  *Note Lisp Eval::.
-
-   When the debugger is entered, it displays the previously selected
-buffer in one window and a buffer named `*Backtrace*' in another
-window.  The backtrace buffer contains one line for each level of Lisp
-function execution currently going on.  At the beginning of the buffer
-is a message describing the reason that the debugger was invoked, for
-example, an error message if it was invoked due to an error.
-
-   The backtrace buffer is read-only and is in Backtrace mode, a special
-major mode in which letters are defined as debugger commands.  The
-usual Emacs editing commands are available; you can switch windows to
-examine the buffer that was being edited at the time of the error, and
-you can switch buffers, visit files, and perform any other editing
-operations.  However, the debugger is a recursive editing level (*note
-Recursive Edit::); it is a good idea to return to the backtrace buffer
-and explicitly exit the debugger when you don't want to use it any
-more.  Exiting the debugger kills the backtrace buffer.
-
-   The contents of the backtrace buffer show you the functions that are
-executing and the arguments that were given to them.  It also allows you
-to specify a stack frame by moving point to the line describing that
-frame.  The frame whose line point is on is considered the "current
-frame".  Some of the debugger commands operate on the current frame.
-Debugger commands are mainly used for stepping through code one
-expression at a time.  Here is a list of them:
-
-`c'
-     Exit the debugger and continue execution.  In most cases,
-     execution of the program continues as if the debugger had never
-     been entered (aside from the effect of any variables or data
-     structures you may have changed while inside the debugger).  This
-     includes entry to the debugger due to function entry or exit,
-     explicit invocation, and quitting or certain errors.  Most errors
-     cannot be continued; trying to continue an error usually causes
-     the same error to occur again.
-
-`d'
-     Continue execution, but enter the debugger the next time a Lisp
-     function is called.  This allows you to step through the
-     subexpressions of an expression, and see what the subexpressions
-     do and what values they compute.
-
-     When you enter the debugger this way, Emacs flags the stack frame
-     for the function call from which you entered.  The same function
-     is then called when you exit the frame.  To cancel this flag, use
-     `u'.
-
-`b'
-     Set up to enter the debugger when the current frame is exited.
-     Frames that invoke the debugger on exit are flagged with stars.
-
-`u'
-     Don't enter the debugger when the current frame is exited.  This
-     cancels a `b' command on a frame.
-
-`e'
-     Read a Lisp expression in the minibuffer, evaluate it, and print
-     the value in the echo area.  This is equivalent to the command
-     `M-:'.
-
-`q'
-     Terminate the program being debugged; return to top-level Emacs
-     command execution.
-
-     If the debugger was entered due to a `C-g' but you really want to
-     quit, not to debug, use the `q' command.
-
-`r'
-     Return a value from the debugger.  The value is computed by
-     reading an expression with the minibuffer and evaluating it.
-
-     The value returned by the debugger makes a difference when the
-     debugger was invoked due to exit from a Lisp call frame (as
-     requested with `b'); then the value specified in the `r' command
-     is used as the value of that frame.
-
-     The debugger's return value also matters with many errors.  For
-     example, `wrong-type-argument' errors will use the debugger's
-     return value instead of the invalid argument; `no-catch' errors
-     will use the debugger value as a throw tag instead of the tag that
-     was not found.  If an error was signaled by calling the Lisp
-     function `signal', the debugger's return value is returned as the
-     value of `signal'.
-
index a55d70b..6bac026 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.6 from
+This is ../info/xemacs.info, produced by makeinfo version 4.8 from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,10 +30,189 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Lisp Eval,  Next: Lisp Debug,  Prev: Lisp Libraries,  Up: Running
+
+22.4 Evaluating Emacs-Lisp Expressions
+======================================
+
+Lisp programs intended to be run in Emacs should be edited in
+Emacs-Lisp mode; this will happen automatically for file names ending in
+`.el'.  By contrast, Lisp mode itself should be used for editing Lisp
+programs intended for other Lisp systems.  Emacs-Lisp mode can be
+selected with the command `M-x emacs-lisp-mode'.
+
+   For testing of Lisp programs to run in Emacs, it is useful to be able
+to evaluate part of the program as it is found in the Emacs buffer.  For
+example, if you change the text of a Lisp function definition and then
+evaluate the definition, Emacs installs the change for future calls to
+the function.  Evaluation of Lisp expressions is also useful in any
+kind of editing task for invoking non-interactive functions (functions
+that are not commands).
+
+`M-:'
+     Read a Lisp expression in the minibuffer, evaluate it, and print
+     the value in the minibuffer (`eval-expression').
+
+`C-x C-e'
+     Evaluate the Lisp expression before point, and print the value in
+     the minibuffer (`eval-last-sexp').
+
+`C-M-x'
+     Evaluate the defun containing point or after point, and print the
+     value in the minibuffer (`eval-defun').
+
+`M-x eval-region'
+     Evaluate all the Lisp expressions in the region.
+
+`M-x eval-current-buffer'
+     Evaluate all the Lisp expressions in the buffer.
+
+   `M-:' (`eval-expression') is the most basic command for evaluating a
+Lisp expression interactively.  It reads the expression using the
+minibuffer, so you can execute any expression on a buffer regardless of
+what the buffer contains.  When evaluation is complete, the current
+buffer is once again the buffer that was current when `M-:' was typed.
+
+   In Emacs-Lisp mode, the key `C-M-x' is bound to the function
+`eval-defun', which parses the defun containing point or following point
+as a Lisp expression and evaluates it.  The value is printed in the echo
+area.  This command is convenient for installing in the Lisp environment
+changes that you have just made in the text of a function definition.
+
+   The command `C-x C-e' (`eval-last-sexp') performs a similar job but
+is available in all major modes, not just Emacs-Lisp mode.  It finds
+the sexp before point, reads it as a Lisp expression, evaluates it, and
+prints the value in the echo area.  It is sometimes useful to type in an
+expression and then, with point still after it, type `C-x C-e'.
+
+   If `C-M-x' or `C-x C-e' are given a numeric argument, they print the
+value by inserting it into the current buffer at point, rather than in
+the echo area.  The argument value does not matter.
+
+   The most general command for evaluating Lisp expressions from a
+buffer is `eval-region'.  `M-x eval-region' parses the text of the
+region as one or more Lisp expressions, evaluating them one by one.
+`M-x eval-current-buffer' is similar, but it evaluates the entire
+buffer.  This is a reasonable way to install the contents of a file of
+Lisp code that you are just ready to test.  After finding and fixing a
+bug, use `C-M-x' on each function that you change, to keep the Lisp
+world in step with the source file.
+
+\1f
+File: xemacs.info,  Node: Lisp Debug,  Next: Lisp Interaction,  Prev: Lisp Eval,  Up: Running
+
+22.5 The Emacs-Lisp Debugger
+============================
+
+XEmacs contains a debugger for Lisp programs executing inside it.  This
+debugger is normally not used; many commands frequently get Lisp errors
+when invoked in inappropriate contexts (such as `C-f' at the end of the
+buffer) and it would be unpleasant to enter a special debugging mode in
+this case.  When you want to make Lisp errors invoke the debugger, you
+must set the variable `debug-on-error' to non-`nil'.  Quitting with
+`C-g' is not considered an error, and `debug-on-error' has no effect on
+the handling of `C-g'.  However, if you set `debug-on-quit' to be
+non-`nil', `C-g' will invoke the debugger.  This can be useful for
+debugging an infinite loop; type `C-g' once the loop has had time to
+reach its steady state.  `debug-on-quit' has no effect on errors.
+
+   You can make Emacs enter the debugger when a specified function is
+called or at a particular place in Lisp code.  Use `M-x debug-on-entry'
+with argument FUN-NAME to have Emacs enter the debugger as soon as
+FUN-NAME is called. Use `M-x cancel-debug-on-entry' to make the
+function stop entering the debugger when called.  (Redefining the
+function also does this.)  To enter the debugger from some other place
+in Lisp code, you must insert the expression `(debug)' there and
+install the changed code with `C-M-x'.  *Note Lisp Eval::.
+
+   When the debugger is entered, it displays the previously selected
+buffer in one window and a buffer named `*Backtrace*' in another
+window.  The backtrace buffer contains one line for each level of Lisp
+function execution currently going on.  At the beginning of the buffer
+is a message describing the reason that the debugger was invoked, for
+example, an error message if it was invoked due to an error.
+
+   The backtrace buffer is read-only and is in Backtrace mode, a special
+major mode in which letters are defined as debugger commands.  The
+usual Emacs editing commands are available; you can switch windows to
+examine the buffer that was being edited at the time of the error, and
+you can switch buffers, visit files, and perform any other editing
+operations.  However, the debugger is a recursive editing level (*note
+Recursive Edit::); it is a good idea to return to the backtrace buffer
+and explicitly exit the debugger when you don't want to use it any
+more.  Exiting the debugger kills the backtrace buffer.
+
+   The contents of the backtrace buffer show you the functions that are
+executing and the arguments that were given to them.  It also allows you
+to specify a stack frame by moving point to the line describing that
+frame.  The frame whose line point is on is considered the "current
+frame".  Some of the debugger commands operate on the current frame.
+Debugger commands are mainly used for stepping through code one
+expression at a time.  Here is a list of them:
+
+`c'
+     Exit the debugger and continue execution.  In most cases,
+     execution of the program continues as if the debugger had never
+     been entered (aside from the effect of any variables or data
+     structures you may have changed while inside the debugger).  This
+     includes entry to the debugger due to function entry or exit,
+     explicit invocation, and quitting or certain errors.  Most errors
+     cannot be continued; trying to continue an error usually causes
+     the same error to occur again.
+
+`d'
+     Continue execution, but enter the debugger the next time a Lisp
+     function is called.  This allows you to step through the
+     subexpressions of an expression, and see what the subexpressions
+     do and what values they compute.
+
+     When you enter the debugger this way, Emacs flags the stack frame
+     for the function call from which you entered.  The same function
+     is then called when you exit the frame.  To cancel this flag, use
+     `u'.
+
+`b'
+     Set up to enter the debugger when the current frame is exited.
+     Frames that invoke the debugger on exit are flagged with stars.
+
+`u'
+     Don't enter the debugger when the current frame is exited.  This
+     cancels a `b' command on a frame.
+
+`e'
+     Read a Lisp expression in the minibuffer, evaluate it, and print
+     the value in the echo area.  This is equivalent to the command
+     `M-:'.
+
+`q'
+     Terminate the program being debugged; return to top-level Emacs
+     command execution.
+
+     If the debugger was entered due to a `C-g' but you really want to
+     quit, not to debug, use the `q' command.
+
+`r'
+     Return a value from the debugger.  The value is computed by
+     reading an expression with the minibuffer and evaluating it.
+
+     The value returned by the debugger makes a difference when the
+     debugger was invoked due to exit from a Lisp call frame (as
+     requested with `b'); then the value specified in the `r' command
+     is used as the value of that frame.
+
+     The debugger's return value also matters with many errors.  For
+     example, `wrong-type-argument' errors will use the debugger's
+     return value instead of the invalid argument; `no-catch' errors
+     will use the debugger value as a throw tag instead of the tag that
+     was not found.  If an error was signaled by calling the Lisp
+     function `signal', the debugger's return value is returned as the
+     value of `signal'.
+
+\1f
 File: xemacs.info,  Node: Lisp Interaction,  Next: External Lisp,  Prev: Lisp Debug,  Up: Running
 
-Lisp Interaction Buffers
-========================
+22.6 Lisp Interaction Buffers
+=============================
 
 The buffer `*scratch*', which is selected when Emacs starts up, is
 provided for evaluating Lisp expressions interactively inside Emacs.
@@ -61,8 +240,8 @@ Interaction mode.
 \1f
 File: xemacs.info,  Node: External Lisp,  Prev: Lisp Interaction,  Up: Running
 
-Running an External Lisp
-========================
+22.7 Running an External Lisp
+=============================
 
 Emacs has facilities for running programs in other Lisp systems.  You
 can run a Lisp process as an inferior of Emacs, and pass expressions to
@@ -102,8 +281,8 @@ is found.  *Note Lisp Modes::.
 \1f
 File: xemacs.info,  Node: Packages,  Next: Basic,  Prev: Startup Paths,  Up: Top
 
-Packages
-========
+22.8 Packages
+=============
 
 The XEmacs 21 distribution comes only with a very basic set of built-in
 modes and packages.  Most of the packages that were part of the
@@ -127,8 +306,8 @@ File: xemacs.info,  Node: Package Terminology,  Next: Installing Packages,  Up:
 Package Terminology:
 ====================
 
-Package Flavors
----------------
+22.8.1 Package Flavors
+----------------------
 
 There are two main flavors of packages.
 
@@ -142,8 +321,8 @@ There are two main flavors of packages.
      functionality.  However, we would recommend that you follow this
      rule of thumb: "When in doubt, don't delete".
 
-Package Distributions
----------------------
+22.8.2 Package Distributions
+----------------------------
 
 XEmacs Lisp packages are distributed in two ways, depending on the
 intended use.  Binary Packages are for installers and end-users that can
@@ -151,14 +330,14 @@ be installed directly into an XEmacs package directory.  Source Packages
 are for developers and include all files necessary for rebuilding
 bytecompiled lisp and creating tarballs for distribution.
 
-Binary Packages
----------------
+22.8.3 Binary Packages
+----------------------
 
 Binary packages may be installed directly into an XEmacs package
 hierarchy.
 
-Source Packages
----------------
+22.8.4 Source Packages
+----------------------
 
 Source packages contain all of the Package author's (where appropriate
 in regular packages) source code plus all of the files necessary to
@@ -166,7 +345,7 @@ build distribution tarballs (Unix Tar format files, gzipped for space
 savings).
 
    Currently, source packages are only available via CVS.  See
-<http://cvs.xemacs.org/> for details.
+`http://cvs.xemacs.org/' for details.
 
 \1f
 File: xemacs.info,  Node: Installing Packages,  Next: Building Packages,  Prev: Package Terminology,  Up: Packages
@@ -174,8 +353,8 @@ File: xemacs.info,  Node: Installing Packages,  Next: Building Packages,  Prev:
 Installing Packages:
 ====================
 
-Getting Started
----------------
+22.8.5 Getting Started
+----------------------
 
 When you first download XEmacs 21, you will usually first grab the
 "core distribution", a file called `xemacs-21.x.x.tar.gz'. (Replace the
@@ -185,8 +364,8 @@ in the subdirectory named `lisp'.  This subdirectory used to contain
 all Emacs Lisp files distributed with XEmacs.  Now, to conserve disk
 space, most non-essential packages were made optional.
 
-Choosing the Packages You Need
-------------------------------
+22.8.6 Choosing the Packages You Need
+-------------------------------------
 
 The *Note Available Packages:: can currently be found in the same ftp
 directory where you grabbed the core distribution from, and are located
@@ -223,8 +402,8 @@ that you need `thingatpt', type:
    which will return something like `(fsf-compat "1.08")'. You can the
 use one of the methods above for installing the package you want.
 
-XEmacs and Installing Packages
-------------------------------
+22.8.7 XEmacs and Installing Packages
+-------------------------------------
 
 There are three main ways to install packages:
 
@@ -257,9 +436,9 @@ need are:
 
         efs          - To fetch the files from the FTP site or mirrors.
         xemacs-base  - Needed by efs.
-     
+
      and optionally:
-     
+
         mailcrypt    - To do PGP verification of the `package-index'
                        file.
 
@@ -395,9 +574,9 @@ remove the old package first *Note Removing Packages::.
         mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
         cd $prefix/lib/xemacs/xemacs-packages RET
         gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
-     
+
      Or if you have GNU tar, the last step can be:
-     
+
         tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
 
    For MULE related packages, it is best to untar into the mule-packages
@@ -406,9 +585,9 @@ hierarchy, i.e. for the `mule-base' package, version 1.37:
         mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
         cd $prefix/lib/xemacs/mule-packages RET
         gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
-     
+
      Or if you have GNU tar, the last step can be:
-     
+
         tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
 
 \1f
@@ -489,11 +668,11 @@ Building Packages:
 ==================
 
 Currently, source packages are only available via anonymous CVS.  See
-<http://cvs.xemacs.org/> for details of checking out the
+`http://cvs.xemacs.org/' for details of checking out the
 `xemacs-packages' module.
 
-Prerequisites for Building Source Packages
-------------------------------------------
+22.8.8 Prerequisites for Building Source Packages
+-------------------------------------------------
 
 `GNU cp'
 
@@ -516,8 +695,8 @@ Prerequisites for Building Source Packages
      *Note Local.rules File::.
 And of course, XEmacs 21.0 or higher.
 
-What You Can Do With Source Packages
-------------------------------------
+22.8.9 What You Can Do With Source Packages
+-------------------------------------------
 
 The packages CVS sources are most useful for creating XEmacs package
 tarballs for installation into your own XEmacs installations or for
@@ -553,8 +732,8 @@ looking for isn't here, please send a message to the XEmacs Beta list
 
    This data is up to date as of June 27, 2003.
 
-Normal Packages
----------------
+22.8.10 Normal Packages
+-----------------------
 
 A very broad selection of elisp packages.
 
@@ -889,8 +1068,8 @@ A very broad selection of elisp packages.
 `zenirc'
      ZENIRC IRC Client.
 
-Mule Support (mule)
--------------------
+22.8.11 Mule Support (mule)
+---------------------------
 
 MULti-lingual Enhancement.  Support for world scripts such as Latin,
 Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.  To use these
@@ -932,8 +1111,8 @@ packages your XEmacs must be compiled with Mule support.
 \1f
 File: xemacs.info,  Node: Abbrevs,  Next: Picture,  Prev: Running,  Up: Top
 
-Abbrevs
-*******
+23 Abbrevs
+**********
 
 An "abbrev" is a word which "expands" into some different text.
 Abbrevs are defined by the user to expand in specific ways.  For
@@ -978,8 +1157,8 @@ current contents of the buffer.  *Note Dynamic Abbrevs::.
 \1f
 File: xemacs.info,  Node: Defining Abbrevs,  Next: Expanding Abbrevs,  Prev: Abbrevs,  Up: Abbrevs
 
-Defining Abbrevs
-================
+23.1 Defining Abbrevs
+=====================
 
 `C-x a g'
      Define an abbrev to expand into some text before point
@@ -1038,8 +1217,8 @@ since those two definitions are independent for one abbrev.
 \1f
 File: xemacs.info,  Node: Expanding Abbrevs,  Next: Editing Abbrevs,  Prev: Defining Abbrevs,  Up: Abbrevs
 
-Controlling Abbrev Expansion
-============================
+23.2 Controlling Abbrev Expansion
+=================================
 
 An abbrev expands whenever it is in a buffer just before point and you
 type a self-inserting punctuation character (<SPC>, comma, etc.).  Most
@@ -1100,8 +1279,8 @@ not enabled.
 \1f
 File: xemacs.info,  Node: Editing Abbrevs,  Next: Saving Abbrevs,  Prev: Expanding Abbrevs,  Up: Abbrevs
 
-Examining and Editing Abbrevs
-=============================
+23.3 Examining and Editing Abbrevs
+==================================
 
 `M-x list-abbrevs'
      Print a list of all abbrev definitions.
@@ -1146,8 +1325,8 @@ displays it in another window.
 \1f
 File: xemacs.info,  Node: Saving Abbrevs,  Next: Dynamic Abbrevs,  Prev: Editing Abbrevs,  Up: Abbrevs
 
-Saving Abbrevs
-==============
+23.4 Saving Abbrevs
+===================
 
 These commands allow you to keep abbrev definitions between editing
 sessions.
@@ -1194,8 +1373,8 @@ the entire current buffer and defines abbrevs accordingly.
 \1f
 File: xemacs.info,  Node: Dynamic Abbrevs,  Prev: Saving Abbrevs,  Up: Abbrevs
 
-Dynamic Abbrev Expansion
-========================
+23.5 Dynamic Abbrev Expansion
+=============================
 
 The abbrev facility described above operates automatically as you insert
 text, but all abbrevs must be defined explicitly.  By contrast,
@@ -1223,8 +1402,8 @@ it has a definition as an ordinary abbrev.
 \1f
 File: xemacs.info,  Node: Picture,  Next: Sending Mail,  Prev: Abbrevs,  Up: Top
 
-Editing Pictures
-****************
+24 Editing Pictures
+*******************
 
 If you want to create a picture made out of text characters (for
 example, a picture of the division of a register into fields, as a
@@ -1276,8 +1455,8 @@ exists and is non-`nil'.
 \1f
 File: xemacs.info,  Node: Basic Picture,  Next: Insert in Picture,  Prev: Picture,  Up: Picture
 
-Basic Editing in Picture Mode
-=============================
+24.1 Basic Editing in Picture Mode
+==================================
 
 Most keys do the same thing in Picture mode that they usually do, but do
 it in a quarter-plane style.  For example, `C-f' is rebound to run
@@ -1322,8 +1501,8 @@ Picture::).
 \1f
 File: xemacs.info,  Node: Insert in Picture,  Next: Tabs in Picture,  Prev: Basic Picture,  Up: Picture
 
-Controlling Motion After Insert
-===============================
+24.2 Controlling Motion After Insert
+====================================
 
 Since "self-inserting" characters just overwrite and move point in
 Picture mode, there is no essential restriction on how point should be
@@ -1367,8 +1546,8 @@ direction as motion after "insertion" currently does, while `C-c C-b'
 \1f
 File: xemacs.info,  Node: Tabs in Picture,  Next: Rectangles in Picture,  Prev: Insert in Picture,  Up: Picture
 
-Picture Mode Tabs
-=================
+24.3 Picture Mode Tabs
+======================
 
 Two kinds of tab-like action are provided in Picture mode.
 Context-based tabbing is done with `M-<TAB>' (`picture-tab-search').
@@ -1397,8 +1576,8 @@ is more convenient in the cases where it is sufficient.
 \1f
 File: xemacs.info,  Node: Rectangles in Picture,  Prev: Tabs in Picture,  Up: Picture
 
-Picture Mode Rectangle Commands
-===============================
+24.4 Picture Mode Rectangle Commands
+====================================
 
 Picture mode defines commands for working on rectangular pieces of the
 text in ways that fit with the quarter-plane model.  The standard
@@ -1445,8 +1624,8 @@ highlighted as a rectangle.
 \1f
 File: xemacs.info,  Node: Sending Mail,  Next: Reading Mail,  Prev: Picture,  Up: Top
 
-Sending Mail
-************
+25 Sending Mail
+***************
 
 To send a message in Emacs, start by typing the command (`C-x m') to
 select and initialize the `*mail*' buffer.  You can then edit the text
@@ -1490,8 +1669,8 @@ it.
 \1f
 File: xemacs.info,  Node: Mail Format,  Next: Mail Headers,  Prev: Sending Mail,  Up: Sending Mail
 
-The Format of the Mail Buffer
-=============================
+25.1 The Format of the Mail Buffer
+==================================
 
 In addition to the "text" or contents, a message has "header fields",
 which say who sent it, when, to whom, why, and so on.  Some header
@@ -1526,8 +1705,8 @@ buffer might look like.
 \1f
 File: xemacs.info,  Node: Mail Headers,  Next: Mail Mode,  Prev: Mail Format,  Up: Sending Mail
 
-Mail Header Fields
-==================
+25.2 Mail Header Fields
+=======================
 
 There are several header fields you can use in the `*mail*' buffer.
 Each header field starts with a field name at the beginning of a line,
@@ -1671,8 +1850,8 @@ field, every message is written into that file when it is sent.
 \1f
 File: xemacs.info,  Node: Mail Mode,  Prev: Mail Headers,  Up: Sending Mail
 
-Mail Mode
-=========
+25.3 Mail Mode
+==============
 
 The major mode used in the `*mail*' buffer is Mail mode.  Mail mode is
 similar to Text mode, but several commands are provided on the `C-c'
@@ -1761,8 +1940,8 @@ the value of `mail-mode-hook' if that is not void or `nil'.
 \1f
 File: xemacs.info,  Node: Reading Mail,  Next: Calendar/Diary,  Prev: Sending Mail,  Up: Top
 
-Reading Mail
-************
+26 Reading Mail
+***************
 
 XEmacs provides several mail-reading packages.  Each one comes with its
 own manual, which is included in each package.
@@ -1799,8 +1978,8 @@ using Gnus, VM, or MH-E instead.
 \1f
 File: xemacs.info,  Node: Calendar/Diary,  Next: Sorting,  Prev: Reading Mail,  Up: Top
 
-Calendar Mode and the Diary
-===========================
+26.1 Calendar Mode and the Diary
+================================
 
 Emacs provides the functions of a desk calendar, with a diary of
 planned or past events.  To enter the calendar, type `M-x calendar';
@@ -1834,8 +2013,8 @@ diary.
 \1f
 File: xemacs.info,  Node: Calendar Motion,  Next: Scroll Calendar,  Prev: Calendar/Diary,  Up: Calendar/Diary
 
-Movement in the Calendar
-------------------------
+26.1.1 Movement in the Calendar
+-------------------------------
 
 Calendar mode lets you move through the calendar in logical units of
 time such as days, weeks, months, and years.  If you move outside the
@@ -1855,8 +2034,8 @@ scroll the calendar.
 \1f
 File: xemacs.info,  Node: Calendar Unit Motion,  Next: Move to Beginning or End,  Prev: Calendar Motion,  Up: Calendar Motion
 
-Motion by Integral Days, Weeks, Months, Years
-.............................................
+26.1.1.1 Motion by Integral Days, Weeks, Months, Years
+......................................................
 
 The commands for movement in the calendar buffer parallel the commands
 for movement in text.  You can move forward and backward by days,
@@ -1915,8 +2094,8 @@ arguments in Calendar mode even without the Meta modifier.  For example,
 \1f
 File: xemacs.info,  Node: Move to Beginning or End,  Next: Specified Dates,  Prev: Calendar Unit Motion,  Up: Calendar Motion
 
-Beginning or End of Week, Month or Year
-.......................................
+26.1.1.2 Beginning or End of Week, Month or Year
+................................................
 
 A week (or month, or year) is not just a quantity of days; we think of
 weeks (months, years) as starting on particular dates.  So Calendar mode
@@ -1924,19 +2103,19 @@ provides commands to move to the beginning or end of a week, month or
 year:
 
 `C-a'
-     Move point to start of week (`calendar-beginning-of-week').
+     Move point to start of week (`calendar-beginning-of-week').  
 
 `C-e'
-     Move point to end of week (`calendar-end-of-week').
+     Move point to end of week (`calendar-end-of-week').  
 
 `M-a'
-     Move point to start of month (`calendar-beginning-of-month').
+     Move point to start of month (`calendar-beginning-of-month').  
 
 `M-e'
-     Move point to end of month (`calendar-end-of-month').
+     Move point to end of month (`calendar-end-of-month').  
 
 `M-<'
-     Move point to start of year (`calendar-beginning-of-year').
+     Move point to start of year (`calendar-beginning-of-year').  
 
 `M->'
      Move point to end of year (`calendar-end-of-year').
@@ -1951,8 +2130,8 @@ instead, set the variable `calendar-week-start-day' to 1.
 \1f
 File: xemacs.info,  Node: Specified Dates,  Prev: Move to Beginning or End,  Up: Calendar Motion
 
-Particular Dates
-................
+26.1.1.3 Particular Dates
+.........................
 
 Calendar mode provides commands for moving to a particular date
 specified in various ways.
@@ -1979,8 +2158,8 @@ centers the three-month calendar around that month.
 \1f
 File: xemacs.info,  Node: Scroll Calendar,  Next: Mark and Region,  Prev: Calendar Motion,  Up: Calendar/Diary
 
-Scrolling the Calendar through Time
------------------------------------
+26.1.2 Scrolling the Calendar through Time
+------------------------------------------
 
 The calendar display scrolls automatically through time when you move
 out of the visible portion.  You can also scroll it manually.  Imagine
@@ -2025,8 +2204,8 @@ M-v' scrolls the calendar backward by a year.
 \1f
 File: xemacs.info,  Node: Mark and Region,  Next: General Calendar,  Prev: Scroll Calendar,  Up: Calendar/Diary
 
-The Mark and the Region
------------------------
+26.1.3 The Mark and the Region
+------------------------------
 
 The concept of the mark applies to the calendar just as to any other
 buffer, but it marks a _date_, not a _position_ in the buffer.  The
@@ -2071,8 +2250,8 @@ one by one.
 \1f
 File: xemacs.info,  Node: General Calendar,  Next: LaTeX Calendar,  Prev: Mark and Region,  Up: Calendar/Diary
 
-Miscellaneous Calendar Commands
--------------------------------
+26.1.4 Miscellaneous Calendar Commands
+--------------------------------------
 
 `p d'
      Display day-in-year (`calendar-print-day-of-year').
@@ -2117,8 +2296,8 @@ iconifies that frame.)
 \1f
 File: xemacs.info,  Node: LaTeX Calendar,  Next: Holidays,  Prev: General Calendar,  Up: Calendar/Diary
 
-LaTeX Calendar
-==============
+26.2 LaTeX Calendar
+===================
 
 The Calendar LaTeX commands produce a buffer of LaTeX code that prints
 as a calendar.  Depending on the command you use, the printed calendar
@@ -2181,8 +2360,8 @@ entries are included also (in weekly and monthly calendars only).
 \1f
 File: xemacs.info,  Node: Holidays,  Next: Sunrise/Sunset,  Prev: LaTeX Calendar,  Up: Calendar/Diary
 
-Holidays
---------
+26.2.1 Holidays
+---------------
 
 The Emacs calendar knows about all major and many minor holidays, and
 can display them.
@@ -2258,8 +2437,8 @@ definition, even though it is wrong for some prior years.
 \1f
 File: xemacs.info,  Node: Sunrise/Sunset,  Next: Lunar Phases,  Prev: Holidays,  Up: Calendar/Diary
 
-Times of Sunrise and Sunset
----------------------------
+26.2.2 Times of Sunrise and Sunset
+----------------------------------
 
 Special calendar commands can tell you, to within a minute or two, the
 times of sunrise and sunset for any date.
@@ -2329,8 +2508,8 @@ machine.  *Note Init File::.
 \1f
 File: xemacs.info,  Node: Lunar Phases,  Next: Other Calendars,  Prev: Sunrise/Sunset,  Up: Calendar/Diary
 
-Phases of the Moon
-------------------
+26.2.3 Phases of the Moon
+-------------------------
 
 These calendar commands display the dates and times of the phases of
 the moon (new moon, first quarter, full moon, last quarter).  This
@@ -2363,8 +2542,8 @@ the variable `calendar-time-zone' is void, Coordinated Universal Time
 \1f
 File: xemacs.info,  Node: Other Calendars,  Next: Calendar Systems,  Prev: Lunar Phases,  Up: Calendar/Diary
 
-Conversion To and From Other Calendars
---------------------------------------
+26.2.4 Conversion To and From Other Calendars
+---------------------------------------------
 
 The Emacs calendar displayed is _always_ the Gregorian calendar,
 sometimes called the "new style" calendar, which is used in most of the
@@ -2395,8 +2574,8 @@ Emacs "prints' the equivalent date in the echo area.
 \1f
 File: xemacs.info,  Node: Calendar Systems,  Next: To Other Calendar,  Prev: Other Calendars,  Up: Other Calendars
 
-Supported Calendar Systems
-==========================
+26.3 Supported Calendar Systems
+===============================
 
 The ISO commercial calendar is used largely in Europe.
 
@@ -2456,55 +2635,55 @@ repeated in a cycle of sixty.
 \1f
 File: xemacs.info,  Node: To Other Calendar,  Next: From Other Calendar,  Prev: Calendar Systems,  Up: Other Calendars
 
-Converting To Other Calendars
-=============================
+26.4 Converting To Other Calendars
+==================================
 
 The following commands describe the selected date (the date at point)
 in various other calendar systems:
 
 `Button2  Other Calendars'
      Display the date that you click on, expressed in various other
-     calendars.
+     calendars.  
 
 `p c'
      Display ISO commercial calendar equivalent for selected day
-     (`calendar-print-iso-date').
+     (`calendar-print-iso-date').  
 
 `p j'
      Display Julian date for selected day
-     (`calendar-print-julian-date').
+     (`calendar-print-julian-date').  
 
 `p a'
      Display astronomical (Julian) day number for selected day
-     (`calendar-print-astro-day-number').
+     (`calendar-print-astro-day-number').  
 
 `p h'
      Display Hebrew date for selected day
-     (`calendar-print-hebrew-date').
+     (`calendar-print-hebrew-date').  
 
 `p i'
      Display Islamic date for selected day
-     (`calendar-print-islamic-date').
+     (`calendar-print-islamic-date').  
 
 `p f'
      Display French Revolutionary date for selected day
-     (`calendar-print-french-date').
+     (`calendar-print-french-date').  
 
 `p C'
      Display Chinese date for selected day
-     (`calendar-print-chinese-date').
+     (`calendar-print-chinese-date').  
 
 `p k'
      Display Coptic date for selected day
-     (`calendar-print-coptic-date').
+     (`calendar-print-coptic-date').  
 
 `p e'
      Display Ethiopic date for selected day
-     (`calendar-print-ethiopic-date').
+     (`calendar-print-ethiopic-date').  
 
 `p p'
      Display Persian date for selected day
-     (`calendar-print-persian-date').
+     (`calendar-print-persian-date').  
 
 `p m'
      Display Mayan date for selected day (`calendar-print-mayan-date').
@@ -2523,8 +2702,8 @@ the appropriate keys.  The `p' is a mnemonic for "print" since Emacs
 \1f
 File: xemacs.info,  Node: From Other Calendar,  Next: Mayan Calendar,  Prev: To Other Calendar,  Up: Other Calendars
 
-Converting From Other Calendars
-===============================
+26.5 Converting From Other Calendars
+====================================
 
 You can use the other supported calendars to specify a date to move to.
 This section describes the commands for doing this using calendars
@@ -2589,8 +2768,8 @@ and then displays the list of yahrzeit dates.
 \1f
 File: xemacs.info,  Node: Mayan Calendar,  Next: Diary,  Prev: From Other Calendar,  Up: Other Calendars
 
-Converting from the Mayan Calendar
-----------------------------------
+26.5.1 Converting from the Mayan Calendar
+-----------------------------------------
 
 Here are the commands to select dates based on the Mayan calendar:
 
@@ -2664,8 +2843,8 @@ you to type a Mayan name, so you don't have to worry about spelling.
 \1f
 File: xemacs.info,  Node: Diary,  Next: Calendar Customization,  Prev: Mayan Calendar,  Up: Calendar/Diary
 
-The Diary
----------
+26.5.2 The Diary
+----------------
 
 The Emacs diary keeps track of appointments or other events on a daily
 basis, in conjunction with the calendar.  To use the diary feature, you
@@ -2707,8 +2886,8 @@ Included Diary Files::).
 \1f
 File: xemacs.info,  Node: Diary Commands,  Next: Format of Diary File,  Prev: Diary,  Up: Diary
 
-Commands Displaying Diary Entries
----------------------------------
+26.5.3 Commands Displaying Diary Entries
+----------------------------------------
 
 Once you have created a `~/diary' file, you can use the calendar to
 view it.  You can also view today's events outside of Calendar mode.
@@ -2790,8 +2969,8 @@ diary-mail-entries'.  A prefix argument specifies how many days
 \1f
 File: xemacs.info,  Node: Format of Diary File,  Next: Date Formats,  Prev: Diary Commands,  Up: Diary
 
-The Diary File
---------------
+26.5.4 The Diary File
+---------------------
 
 Your "diary file" is a file that records events associated with
 particular dates.  The name of the diary file is specified by the
@@ -2850,8 +3029,8 @@ file with `s' (`show-all-diary-entries').
 \1f
 File: xemacs.info,  Node: Date Formats,  Next: Adding to Diary,  Prev: Format of Diary File,  Up: Diary
 
-Date Formats
-------------
+26.5.5 Date Formats
+-------------------
 
 Here are some sample diary entries, illustrating different ways of
 formatting a date.  The examples all show dates in American order
@@ -2903,8 +3082,8 @@ it in full; case is not significant.
 \1f
 File: xemacs.info,  Node: Adding to Diary,  Next: Special Diary Entries,  Prev: Date Formats,  Up: Diary
 
-Commands to Add to the Diary
-----------------------------
+26.5.6 Commands to Add to the Diary
+-----------------------------------
 
 While in the calendar, there are several commands to create diary
 entries:
@@ -2947,8 +3126,8 @@ exiting Emacs.
 \1f
 File: xemacs.info,  Node: Special Diary Entries,  Prev: Adding to Diary,  Up: Diary
 
-Special Diary Entries
----------------------
+26.5.7 Special Diary Entries
+----------------------------
 
 In addition to entries based on calendar dates, the diary file can
 contain "sexp entries" for regular events such as anniversaries.  These
@@ -3068,8 +3247,8 @@ the sexp evaluates to `nil', the entry does _not_ apply to that date.
 \1f
 File: xemacs.info,  Node: Calendar Customization,  Prev: Diary,  Up: Calendar/Diary
 
-Customizing the Calendar and Diary
-----------------------------------
+26.5.8 Customizing the Calendar and Diary
+-----------------------------------------
 
 There are many customizations that you can use to make the calendar and
 diary suit your personal tastes.
@@ -3091,8 +3270,8 @@ diary suit your personal tastes.
 \1f
 File: xemacs.info,  Node: Calendar Customizing,  Next: Holiday Customizing,  Up: Calendar Customization
 
-Customizing the Calendar
-........................
+26.5.8.1 Customizing the Calendar
+.................................
 
 If you set the variable `view-diary-entries-initially' to `t', calling
 up the calendar automatically displays the diary entries for the
@@ -3164,8 +3343,8 @@ current date is _not_ visible in the window.
 \1f
 File: xemacs.info,  Node: Holiday Customizing,  Next: Date Display Format,  Prev: Calendar Customizing,  Up: Calendar Customization
 
-Customizing the Holidays
-........................
+26.5.8.2 Customizing the Holidays
+.................................
 
 Emacs knows about holidays defined by entries on one of several lists.
 You can customize these lists of holidays to your own needs, adding or
@@ -3312,8 +3491,8 @@ window, with descriptive strings, like this:
 \1f
 File: xemacs.info,  Node: Date Display Format,  Next: Time Display Format,  Prev: Holiday Customizing,  Up: Calendar Customization
 
-Date Display Format
-...................
+26.5.8.3 Date Display Format
+............................
 
 You can customize the manner of displaying dates in the diary, in mode
 lines, and in messages by setting `calendar-date-display-form'.  This
@@ -3328,7 +3507,7 @@ while in the European style this value is the default:
 
      ((if dayname (concat dayname ", ")) day " " monthname " " year)
 
-   + The ISO standard date representation is this:
+   +The ISO standard date representation is this:
 
      (year "-" month "-" day)
 
@@ -3339,8 +3518,8 @@ This specifies a typical American format:
 \1f
 File: xemacs.info,  Node: Time Display Format,  Next: Daylight Savings,  Prev: Date Display Format,  Up: Calendar Customization
 
-Time Display Format
-...................
+26.5.8.4 Time Display Format
+............................
 
 The calendar and diary by default display times of day in the
 conventional American style with the hours from 1 through 12, minutes,
@@ -3366,8 +3545,8 @@ defined, and times like `21:07' if they are not.
 \1f
 File: xemacs.info,  Node: Daylight Savings,  Next: Diary Customizing,  Prev: Time Display Format,  Up: Calendar Customization
 
-Daylight Savings Time
-.....................
+26.5.8.5 Daylight Savings Time
+..............................
 
 Emacs understands the difference between standard time and daylight
 savings time--the times given for sunrise, sunset, solstices,
@@ -3437,8 +3616,8 @@ values are 120.
 \1f
 File: xemacs.info,  Node: Diary Customizing,  Next: Hebrew/Islamic Entries,  Prev: Daylight Savings,  Up: Calendar Customization
 
-Customizing the Diary
-.....................
+26.5.8.6 Customizing the Diary
+..............................
 
 Ordinarily, the mode line of the diary buffer window indicates any
 holidays that fall on the date of the diary entries.  The process of
@@ -3530,8 +3709,8 @@ fourth pattern.
 \1f
 File: xemacs.info,  Node: Hebrew/Islamic Entries,  Next: Fancy Diary Display,  Prev: Diary Customizing,  Up: Calendar Customization
 
-Hebrew- and Islamic-Date Diary Entries
-......................................
+26.5.8.7 Hebrew- and Islamic-Date Diary Entries
+...............................................
 
 Your diary file can have entries based on Hebrew or Islamic dates, as
 well as entries based on the world-standard Gregorian calendar.
@@ -3610,8 +3789,8 @@ the diary entry.
 \1f
 File: xemacs.info,  Node: Fancy Diary Display,  Next: Included Diary Files,  Prev: Hebrew/Islamic Entries,  Up: Calendar Customization
 
-Fancy Diary Display
-...................
+26.5.8.8 Fancy Diary Display
+............................
 
 Diary display works by preparing the diary buffer and then running the
 hook `diary-display-hook'.  The default value of this hook
@@ -3653,8 +3832,8 @@ first within each day.
 \1f
 File: xemacs.info,  Node: Included Diary Files,  Next: Sexp Diary Entries,  Prev: Fancy Diary Display,  Up: Calendar Customization
 
-Included Diary Files
-....................
+26.5.8.9 Included Diary Files
+.............................
 
 Fancy diary display also has the ability to process included diary
 files.  This permits a group of people to share a diary file for events
@@ -3677,8 +3856,8 @@ diary file.
 \1f
 File: xemacs.info,  Node: Sexp Diary Entries,  Next: Appt Customizing,  Prev: Included Diary Files,  Up: Calendar Customization
 
-Sexp Entries and the Fancy Diary Display
-........................................
+26.5.8.10 Sexp Entries and the Fancy Diary Display
+..................................................
 
 Sexp diary entries allow you to do more than just have complicated
 conditions under which a diary entry applies.  If you use the fancy
@@ -3818,8 +3997,8 @@ the Hebrew calendar in certain standard ways:
 \1f
 File: xemacs.info,  Node: Appt Customizing,  Prev: Sexp Diary Entries,  Up: Calendar Customization
 
-Customizing Appointment Reminders
-.................................
+26.5.8.11 Customizing Appointment Reminders
+...........................................
 
 You can specify exactly how Emacs reminds you of an appointment, and
 how far in advance it begins doing so, by setting these variables:
@@ -3851,8 +4030,8 @@ how far in advance it begins doing so, by setting these variables:
 \1f
 File: xemacs.info,  Node: Sorting,  Next: Shell,  Prev: Calendar/Diary,  Up: Top
 
-Sorting Text
-============
+26.6 Sorting Text
+=================
 
 XEmacs provides several commands for sorting text in a buffer.  All
 operate on the contents of the region (the text between point and the
@@ -3956,8 +4135,8 @@ Rectangles::.
 \1f
 File: xemacs.info,  Node: Shell,  Next: Narrowing,  Prev: Sorting,  Up: Top
 
-Running Shell Commands from XEmacs
-==================================
+26.7 Running Shell Commands from XEmacs
+=======================================
 
 XEmacs has commands for passing single command lines to inferior shell
 processes; it can also run a shell interactively with input and output
@@ -3993,8 +4172,8 @@ to an XEmacs buffer `*shell*'.
 \1f
 File: xemacs.info,  Node: Single Shell,  Next: Interactive Shell,  Prev: Shell,  Up: Shell
 
-Single Shell Commands
----------------------
+26.7.1 Single Shell Commands
+----------------------------
 
 `M-!' (`shell-command') reads a line of text using the minibuffer and
 creates an inferior shell to execute the line as a command.  Standard
@@ -4026,8 +4205,8 @@ command.
 \1f
 File: xemacs.info,  Node: Interactive Shell,  Next: Shell Mode,  Prev: Single Shell,  Up: Shell
 
-Interactive Inferior Shell
---------------------------
+26.7.2 Interactive Inferior Shell
+---------------------------------
 
 To run a subshell interactively with its typescript in an XEmacs
 buffer, use `M-x shell'.  This creates (or reuses) a buffer named
@@ -4096,8 +4275,8 @@ your input history.  The default is 30.
 \1f
 File: xemacs.info,  Node: Shell Mode,  Next: Terminal emulator,  Prev: Interactive Shell,  Up: Shell
 
-Shell Mode
-----------
+26.7.3 Shell Mode
+-----------------
 
 The shell buffer uses Shell mode, which defines several special keys
 attached to the `C-c' prefix.  They are chosen to resemble the usual
@@ -4170,8 +4349,8 @@ special key bindings of Shell mode:
 \1f
 File: xemacs.info,  Node: Terminal emulator,  Next: Term Mode,  Prev: Shell Mode,  Up: Shell
 
-Interactive Inferior Shell with Terminal Emulator
--------------------------------------------------
+26.7.4 Interactive Inferior Shell with Terminal Emulator
+--------------------------------------------------------
 
 To run a subshell in a terminal emulator, putting its typescript in an
 XEmacs buffer, use `M-x term'.  This creates (or reuses) a buffer named
@@ -4217,8 +4396,8 @@ automatically by bash for version 1.15 and later.
 \1f
 File: xemacs.info,  Node: Term Mode,  Next: Paging in Term,  Prev: Terminal emulator,  Up: Shell
 
-Term Mode
----------
+26.7.5 Term Mode
+----------------
 
 Term uses Term mode, which has two input modes: In line mode, Term
 basically acts like Shell mode.  *Note Shell Mode::.  In Char mode,
@@ -4246,8 +4425,8 @@ the Term escape character, normally `C-c'.
 \1f
 File: xemacs.info,  Node: Paging in Term,  Prev: Term Mode,  Up: Shell
 
-Paging in the terminal emulator
--------------------------------
+26.7.6 Paging in the terminal emulator
+--------------------------------------
 
 Term mode has a pager feature.  When the pager is enabled, term mode
 will pause at the end of each screenful.
@@ -4266,8 +4445,8 @@ interface is similar to the Unix `more' program.
 \1f
 File: xemacs.info,  Node: Narrowing,  Next: Hardcopy,  Prev: Shell,  Up: Top
 
-Narrowing
-=========
+26.8 Narrowing
+==============
 
 "Narrowing" means focusing in on some portion of the buffer, making the
 rest temporarily invisible and inaccessible.  Cancelling the narrowing
@@ -4311,8 +4490,8 @@ buffer you narrowed down.  *Note Position Info::.
 \1f
 File: xemacs.info,  Node: Hardcopy,  Next: Recursive Edit,  Prev: Narrowing,  Up: Top
 
-Hardcopy Output
-===============
+26.9 Hardcopy Output
+====================
 
 The XEmacs commands for making hardcopy derive their names from the
 Unix commands `print' and `lpr'.
@@ -4340,8 +4519,8 @@ example, the value could be `("-Pfoo")' to print on printer `foo'.
 \1f
 File: xemacs.info,  Node: Recursive Edit,  Next: Dissociated Press,  Prev: Hardcopy,  Up: Top
 
-Recursive Editing Levels
-========================
+26.10 Recursive Editing Levels
+==============================
 
 A "recursive edit" is a situation in which you are using XEmacs
 commands to perform arbitrary editing while in the middle of another
@@ -4399,8 +4578,8 @@ was invoked from.
 \1f
 File: xemacs.info,  Node: Dissociated Press,  Next: CONX,  Prev: Recursive Edit,  Up: Top
 
-Dissociated Press
-=================
+26.11 Dissociated Press
+=======================
 
 `M-x dissociated-press' is a command for scrambling a file of text
 either word by word or character by character.  Starting from a buffer
@@ -4448,8 +4627,8 @@ well userenced and properbose.  Have fun.  Your buggestions are welcome.
 \1f
 File: xemacs.info,  Node: CONX,  Next: Amusements,  Prev: Dissociated Press,  Up: Top
 
-CONX
-====
+26.12 CONX
+==========
 
 Besides producing a file of scrambled text with Dissociated Press, you
 can generate random sentences by using CONX.
@@ -4482,8 +4661,8 @@ database, use `M-x conx-init'.
 \1f
 File: xemacs.info,  Node: Amusements,  Next: Emulation,  Prev: CONX,  Up: Top
 
-Other Amusements
-================
+26.13 Other Amusements
+======================
 
 If you are a little bit bored, you can try `M-x hanoi'.  If you are
 considerably bored, give it a numeric argument.  If you are very, very
@@ -4497,8 +4676,8 @@ doctor'.  End each input by typing `RET' twice.
 \1f
 File: xemacs.info,  Node: Emulation,  Next: Customization,  Prev: Amusements,  Up: Top
 
-Emulation
-=========
+26.14 Emulation
+===============
 
 XEmacs can be programmed to emulate (more or less) most other editors.
 Standard facilities can emulate these:
@@ -4545,8 +4724,8 @@ Gosling Emacs
 \1f
 File: xemacs.info,  Node: Customization,  Next: Quitting,  Prev: Emulation,  Up: Top
 
-Customization
-*************
+27 Customization
+****************
 
 This chapter talks about various topics relevant to adapting the
 behavior of Emacs in minor ways.
@@ -4583,8 +4762,8 @@ file to do the customization in each session.  *Note Init File::.
 \1f
 File: xemacs.info,  Node: Minor Modes,  Next: Variables,  Up: Customization
 
-Minor Modes
-===========
+27.1 Minor Modes
+================
 
 Minor modes are options which you can use or not.  For example, Auto
 Fill mode is a minor mode in which <SPC> breaks lines between words as
@@ -4618,8 +4797,8 @@ mode'.  *Note Abbrevs::, for full information.
 \1f
 File: xemacs.info,  Node: Variables,  Next: Keyboard Macros,  Prev: Minor Modes,  Up: Customization
 
-Variables
-=========
+27.2 Variables
+==============
 
 A "variable" is a Lisp symbol which has a value.  Variable names can
 contain any characters, but by convention they are words separated by
@@ -4660,12 +4839,12 @@ from the left margin) to be used by the fill commands (*note Filling::).
 \1f
 File: xemacs.info,  Node: Examining,  Next: Easy Customization,  Up: Variables
 
-Examining and Setting Variables
--------------------------------
+27.2.1 Examining and Setting Variables
+--------------------------------------
 
 `C-h v'
 `M-x describe-variable'
-     Print the value and documentation of a variable.
+     Print the value and documentation of a variable.  
 
 `M-x set-variable'
      Change the value of a variable.
@@ -4680,7 +4859,7 @@ documentation of the variable.
 prints something like:
 
      fill-column's value is 75
-     
+
      Documentation:
      *Column beyond which automatic line-wrapping should happen.
      Automatically becomes local when set in any fashion.
@@ -4705,8 +4884,8 @@ except where explicitly stated, affects only the current Emacs session.
 \1f
 File: xemacs.info,  Node: Easy Customization,  Next: Edit Options,  Prev: Examining,  Up: Variables
 
-Easy Customization Interface
-----------------------------
+27.2.2 Easy Customization Interface
+-----------------------------------
 
 A convenient way to find the user option variables that you want to
 change, and then change them, is with `M-x customize' (or use a
@@ -4729,8 +4908,8 @@ are adding the rest.)
 \1f
 File: xemacs.info,  Node: Customization Groups,  Next: Changing an Option,  Up: Easy Customization
 
-Customization Groups
-....................
+27.2.2.1 Customization Groups
+.............................
 
 For customization purposes, user options are organized into "groups" to
 help you find them.  Groups are collected into bigger groups, all the
@@ -4744,15 +4923,15 @@ immediately under it.  It looks like this, in part:
            [State]: visible group members are all at standard settings.
         Customization of the One True Editor.
         See also [Manual].
-     
+
       [Open] Editing group
      Basic text editing facilities.
-     
+
       [Open] External group
      Interfacing to external utilities.
-     
+
      MORE SECOND-LEVEL GROUPS
-     
+
      \- Emacs group end ------------------------------------------------/
 
 This says that the buffer displays the contents of the `Emacs' group.
@@ -4795,8 +4974,8 @@ to set values in it.
 \1f
 File: xemacs.info,  Node: Changing an Option,  Next: Face Customization,  Prev: Customization Groups,  Up: Easy Customization
 
-Changing an Option
-..................
+27.2.2.2 Changing an Option
+...........................
 
 Here is an example of what a user option looks like in the
 customization buffer:
@@ -4936,8 +5115,8 @@ in the buffer that could meaningfully be set, saved or reset.
 \1f
 File: xemacs.info,  Node: Face Customization,  Next: Specific Customization,  Prev: Changing an Option,  Up: Easy Customization
 
-Customizing Faces
-.................
+27.2.2.3 Customizing Faces
+..........................
 
 In addition to user options, some customization groups also include
 faces.  When you show the contents of a group, both the user options and
@@ -4980,8 +5159,8 @@ from invoking `[State]'.
 \1f
 File: xemacs.info,  Node: Specific Customization,  Prev: Face Customization,  Up: Easy Customization
 
-Customizing Specific Items
-..........................
+27.2.2.4 Customizing Specific Items
+...................................
 
 Instead of finding the options you want to change by moving down
 through the structure of groups, you can specify the particular option,
@@ -5040,8 +5219,8 @@ you have set but not saved.
 \1f
 File: xemacs.info,  Node: Edit Options,  Next: Locals,  Prev: Easy Customization,  Up: Variables
 
-Editing Variable Values
------------------------
+27.2.3 Editing Variable Values
+------------------------------
 
 `M-x list-options'
      Display a buffer listing names, values, and documentation of all
@@ -5093,8 +5272,8 @@ its value:
 \1f
 File: xemacs.info,  Node: Locals,  Next: File Variables,  Prev: Edit Options,  Up: Variables
 
-Local Variables
----------------
+27.2.4 Local Variables
+----------------------
 
 `M-x make-local-variable'
      Make a variable have a local value in the current buffer.
@@ -5168,8 +5347,8 @@ explicitly, as in the case of:
 \1f
 File: xemacs.info,  Node: File Variables,  Prev: Locals,  Up: Variables
 
-Local Variables in Files
-------------------------
+27.2.5 Local Variables in Files
+-------------------------------
 
 A file can contain a "local variables list", which specifies the values
 to use for certain Emacs variables when that file is edited.  Visiting
@@ -5262,8 +5441,8 @@ ignores this variable.
 \1f
 File: xemacs.info,  Node: Keyboard Macros,  Next: Key Bindings,  Prev: Variables,  Up: Customization
 
-Keyboard Macros
-===============
+27.3 Keyboard Macros
+====================
 
 A "keyboard macro" is a command defined by the user to abbreviate a
 sequence of keys.  For example, if you discover that you are about to
@@ -5319,8 +5498,8 @@ commands again by invoking the macro.
 \1f
 File: xemacs.info,  Node: Basic Kbd Macro,  Next: Save Kbd Macro,  Up: Keyboard Macros
 
-Basic Use
----------
+27.3.1 Basic Use
+----------------
 
 To start defining a keyboard macro, type `C-x (' (`start-kbd-macro').
 From then on, anything you type continues to be executed, but also
@@ -5363,8 +5542,8 @@ defined.
 \1f
 File: xemacs.info,  Node: Save Kbd Macro,  Next: Kbd Macro Query,  Prev: Basic Kbd Macro,  Up: Keyboard Macros
 
-Naming and Saving Keyboard Macros
----------------------------------
+27.3.2 Naming and Saving Keyboard Macros
+----------------------------------------
 
 To save a keyboard macro for longer than until you define the next one,
 you must give it a name using `M-x name-last-kbd-macro'.  This reads a
@@ -5397,8 +5576,8 @@ you load the file.
 \1f
 File: xemacs.info,  Node: Kbd Macro Query,  Prev: Save Kbd Macro,  Up: Keyboard Macros
 
-Executing Macros With Variations
---------------------------------
+27.3.3 Executing Macros With Variations
+---------------------------------------
 
 You can use `C-x q' (`kbd-macro-query'), to get an effect similar to
 that of `query-replace'.  The macro asks you  each time whether to make
@@ -5432,11 +5611,11 @@ particularized editing.  *Note Recursive Edit::.
 \1f
 File: xemacs.info,  Node: Key Bindings,  Next: Syntax,  Prev: Keyboard Macros,  Up: Customization
 
-Customizing Key Bindings
-========================
+27.4 Customizing Key Bindings
+=============================
 
 This section deals with the "keymaps" that define the bindings between
-keys and functions, and shows how you can customize these bindings.
+keys and functions, and shows how you can customize these bindings.  
 
    A command is a Lisp function whose definition provides for
 interactive use.  Like every Lisp function, a command has a function
@@ -5455,8 +5634,8 @@ letters and hyphens.
 \1f
 File: xemacs.info,  Node: Keymaps,  Next: Rebinding,  Up: Key Bindings
 
-Keymaps
--------
+27.4.1 Keymaps
+--------------
 
 The bindings between characters and command functions are recorded in
 data structures called "keymaps".  Emacs has many of these.  One, the
@@ -5538,8 +5717,8 @@ for `C-x' commands is used.
 \1f
 File: xemacs.info,  Node: Rebinding,  Next: Disabling,  Prev: Keymaps,  Up: Key Bindings
 
-Changing Key Bindings
----------------------
+27.4.2 Changing Key Bindings
+----------------------------
 
 You can redefine an Emacs key by changing its entry in a keymap.  You
 can change the global keymap, in which case the change is effective in
@@ -5556,8 +5735,8 @@ local map, which affects all buffers using the same major mode.
 \1f
 File: xemacs.info,  Node: Interactive Rebinding,  Next: Programmatic Rebinding,  Up: Rebinding
 
-Changing Key Bindings Interactively
-...................................
+27.4.2.1 Changing Key Bindings Interactively
+............................................
 
 `M-x global-set-key <RET> KEY CMD <RET>'
      Defines KEY globally to run CMD.
@@ -5609,8 +5788,8 @@ old definition to have the new definition instead.
 \1f
 File: xemacs.info,  Node: Programmatic Rebinding,  Next: Key Bindings Using Strings,  Prev: Interactive Rebinding,  Up: Rebinding
 
-Changing Key Bindings Programmatically
-......................................
+27.4.2.2 Changing Key Bindings Programmatically
+...............................................
 
 You can use the functions `global-set-key' and `define-key' to rebind
 keys under program control.
@@ -5674,16 +5853,16 @@ abbreviation:
 
      ;;;  Bind `my-command' to <f1>
      (global-set-key 'f1 'my-command)
-     
+
      ;;;  Bind `my-command' to Shift-f1
      (global-set-key '(shift f1) 'my-command)
-     
+
      ;;; Bind `my-command' to C-c Shift-f1
      (global-set-key '[(control c) (shift f1)] 'my-command)
-     
+
      ;;; Bind `my-command' to the middle mouse button.
      (global-set-key 'button2 'my-command)
-     
+
      ;;; Bind `my-command' to <META> <CTL> <Right Mouse Button>
      ;;; in the keymap that is in force when you are running `dired'.
      (define-key dired-mode-map '(meta control button3) 'my-command)
@@ -5691,8 +5870,8 @@ abbreviation:
 \1f
 File: xemacs.info,  Node: Key Bindings Using Strings,  Prev: Programmatic Rebinding,  Up: Rebinding
 
-Using Strings for Changing Key Bindings
-.......................................
+27.4.2.3 Using Strings for Changing Key Bindings
+................................................
 
 For backward compatibility, you can still use strings to represent key
 sequences.  Thus you can use commands like the following:
@@ -5737,8 +5916,8 @@ fashion:
 \1f
 File: xemacs.info,  Node: Disabling,  Prev: Rebinding,  Up: Key Bindings
 
-Disabling Commands
-------------------
+27.4.3 Disabling Commands
+-------------------------
 
 Disabling a command marks it as requiring confirmation before it can be
 executed.  The purpose of disabling a command is to prevent beginning
@@ -5781,8 +5960,8 @@ programs.
 \1f
 File: xemacs.info,  Node: Syntax,  Next: Init File,  Prev: Key Bindings,  Up: Customization
 
-The Syntax Table
-================
+27.5 The Syntax Table
+=====================
 
 All the Emacs commands which parse words or balance parentheses are
 controlled by the "syntax table".  The syntax table specifies which
@@ -5802,8 +5981,8 @@ of length 256 whose elements are numbers.
 \1f
 File: xemacs.info,  Node: Syntax Entry,  Next: Syntax Change,  Up: Syntax
 
-Information About Each Character
---------------------------------
+27.5.1 Information About Each Character
+---------------------------------------
 
 The syntax table entry for a character is a number that encodes six
 pieces of information:
@@ -5909,8 +6088,8 @@ comment terminator is a newline but not every newline ends a comment.
 \1f
 File: xemacs.info,  Node: Syntax Change,  Prev: Syntax Entry,  Up: Syntax
 
-Altering Syntax Information
----------------------------
+27.5.2 Altering Syntax Information
+----------------------------------
 
 It is possible to alter a character's syntax table entry by storing a
 new number in the appropriate element of the syntax table, but it would
@@ -5963,8 +6142,8 @@ some English to explain that string if necessary.
 \1f
 File: xemacs.info,  Node: Init File,  Next: Audible Bell,  Prev: Syntax,  Up: Customization
 
-The Init File
-=============
+27.6 The Init File
+==================
 
 When you start Emacs, it normally loads either `.xemacs/init.el' or the
 file `.emacs' (whichever comes first) in your home directory.  This
@@ -5998,8 +6177,8 @@ byte-compile it to `~/.xemacs/init.elc' or `~/.emacs.elc'.
 \1f
 File: xemacs.info,  Node: Init Syntax,  Next: Init Examples,  Up: Init File
 
-Init File Syntax
-----------------
+27.6.1 Init File Syntax
+-----------------------
 
 The init file contains one or more Lisp function call expressions.
 Each consists of a function name followed by arguments, all surrounded
@@ -6059,8 +6238,8 @@ Other Lisp objects
 \1f
 File: xemacs.info,  Node: Init Examples,  Next: Terminal Init,  Prev: Init Syntax,  Up: Init File
 
-Init File Examples
-------------------
+27.6.2 Init File Examples
+-------------------------
 
 Here are some examples of doing certain commonly desired things with
 Lisp expressions:
@@ -6180,8 +6359,8 @@ Lisp expressions:
 \1f
 File: xemacs.info,  Node: Terminal Init,  Prev: Init Examples,  Up: Init File
 
-Terminal-Specific Initialization
---------------------------------
+27.6.3 Terminal-Specific Initialization
+---------------------------------------
 
 Each terminal type can have a Lisp library to be loaded into Emacs when
 it is run on that type of terminal.  For a terminal type named
@@ -6216,8 +6395,8 @@ initializations for terminals that do not have a library.
 \1f
 File: xemacs.info,  Node: Audible Bell,  Next: Faces,  Prev: Init File,  Up: Customization
 
-Changing the Bell Sound
-=======================
+27.7 Changing the Bell Sound
+============================
 
 You can now change how the audible bell sounds using the variable
 `sound-alist'.
@@ -6228,7 +6407,7 @@ the symbols, the associated sound data is played instead of the
 standard beep.  This only works if you are logged in on the console of a
 machine with audio hardware. To listen to a sound of the provided type,
 call the function `play-sound' with the argument SOUND. You can also
-set the volume of the sound with the optional argument VOLUME.
+set the volume of the sound with the optional argument VOLUME.  
 
    Each element of `sound-alist' is a list describing a sound.  The
 first element of the list is the name of the sound being defined.
@@ -6312,8 +6491,8 @@ kernel of Emacs uses.
 \1f
 File: xemacs.info,  Node: Faces,  Next: Frame Components,  Prev: Audible Bell,  Up: Customization
 
-Faces
-=====
+27.8 Faces
+==========
 
 XEmacs has objects called extents and faces.  An "extent" is a region
 of text and a "face" is a collection of textual attributes, such as
@@ -6326,8 +6505,8 @@ its buffer is viewed from a different X window.
    The display attributes of faces may be specified either in Lisp or
 through the X resource manager.
 
-Customizing Faces
------------------
+27.8.1 Customizing Faces
+------------------------
 
 You can change the face of an extent with the functions in this
 section.  All the functions prompt for a FACE as an argument; use
@@ -6450,8 +6629,8 @@ otherwise, it is changed in all frames.
 \1f
 File: xemacs.info,  Node: Frame Components,  Next: X Resources,  Prev: Faces,  Up: Customization
 
-Frame Components
-================
+27.9 Frame Components
+=====================
 
 You can control the presence and position of most frame components, such
 as the menubar, toolbars, and gutters.
@@ -6463,8 +6642,8 @@ Intro, and *Note Gutter Intro: (lispref)Gutter Intro.
 \1f
 File: xemacs.info,  Node: X Resources,  Prev: Frame Components,  Up: Customization
 
-X Resources
-===========
+27.10 X Resources
+=================
 
 Historically, XEmacs has used the X resource application class `Emacs'
 for its resources.  Unfortunately, GNU Emacs uses the same application
@@ -6487,12 +6666,10 @@ name passed to the `make-frame' function.
    You can specify resources for all frames with the syntax:
 
      Emacs*parameter: value
-
-or
+   or
 
      Emacs*EmacsFrame.parameter:value
-
-You can specify resources for a particular frame with the syntax:
+   You can specify resources for a particular frame with the syntax:
 
      Emacs*FRAME-NAME.parameter: value
 
@@ -6508,23 +6685,20 @@ You can specify resources for a particular frame with the syntax:
 \1f
 File: xemacs.info,  Node: Geometry Resources,  Next: Iconic Resources,  Up: X Resources
 
-Geometry Resources
-------------------
+27.10.1 Geometry Resources
+--------------------------
 
 To make the default size of all Emacs frames be 80 columns by 55 lines,
 do this:
 
      Emacs*EmacsFrame.geometry: 80x55
-
-To set the geometry of a particular frame named `fred', do this:
+   To set the geometry of a particular frame named `fred', do this:
 
      Emacs*fred.geometry: 80x55
-
-Important! Do not use the following syntax:
+   Important! Do not use the following syntax:
 
      Emacs*geometry: 80x55
-
-You should never use `*geometry' with any X application. It does not
+   You should never use `*geometry' with any X application. It does not
 say "make the geometry of Emacs be 80 columns by 55 lines."  It really
 says, "make Emacs and all subwindows thereof be 80x55 in whatever units
 they care to measure in."  In particular, that is both telling the
@@ -6535,10 +6709,9 @@ to be 80x55 pixels, which is surely not what you want.
 the default size of all Emacs frames to 80 columns by 55 lines):
 
      Emacs.geometry: 80x55
-
-since that is the syntax used with most other applications (since most
-other applications have only one top-level window, unlike Emacs).  In
-general, however, the top-level shell (the unmapped ApplicationShell
+   since that is the syntax used with most other applications (since
+most other applications have only one top-level window, unlike Emacs).
+In general, however, the top-level shell (the unmapped ApplicationShell
 widget named `Emacs' that is the parent of the shell widgets that
 actually manage the individual frames) does not have any interesting
 resources on it, and you should set the resources on the frames instead.
@@ -6572,8 +6745,8 @@ frames created in various ways.
 \1f
 File: xemacs.info,  Node: Iconic Resources,  Next: Resource List,  Prev: Geometry Resources,  Up: X Resources
 
-Iconic Resources
-----------------
+27.10.2 Iconic Resources
+------------------------
 
 Analogous to `-geometry', the `-iconic' command-line option sets the
 iconic flag of the ApplicationShell (`Emacs.iconic') and always applies
@@ -6584,8 +6757,8 @@ the `Emacs*FRAME-NAME.iconic' resource.
 \1f
 File: xemacs.info,  Node: Resource List,  Next: Face Resources,  Prev: Iconic Resources,  Up: X Resources
 
-Resource List
--------------
+27.10.3 Resource List
+---------------------
 
 Emacs frames accept the following resources:
 
@@ -6729,18 +6902,16 @@ Emacs frames accept the following resources:
 \1f
 File: xemacs.info,  Node: Face Resources,  Next: Widgets,  Prev: Resource List,  Up: X Resources
 
-Face Resources
---------------
+27.10.4 Face Resources
+----------------------
 
 The attributes of faces are also per-frame. They can be specified as:
 
      Emacs.FACE_NAME.parameter: value
-
-or
+   or
 
      Emacs*FRAME_NAME.FACE_NAME.parameter: value
-
-Faces accept the following resources:
+   Faces accept the following resources:
 
 `attributeFont' (class `AttributeFont'): font-name
      The font of this face.
@@ -6822,8 +6993,7 @@ specified the default font using the XLFD (X Logical Font Description)
 format, which looks like
 
      *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
-
-If you use any of the other, less strict font name formats, some of
+   If you use any of the other, less strict font name formats, some of
 which look like
 
      lucidasanstypewriter-12
@@ -6838,8 +7008,8 @@ and `xfontsel(1)'.
 \1f
 File: xemacs.info,  Node: Widgets,  Next: Menubar Resources,  Prev: Face Resources,  Up: X Resources
 
-Widgets
--------
+27.10.5 Widgets
+---------------
 
 There are several structural widgets between the terminal EmacsFrame
 widget and the top level ApplicationShell; the exact names and types of
@@ -6860,8 +7030,8 @@ is generally `Emacs'.
 \1f
 File: xemacs.info,  Node: Menubar Resources,  Prev: Widgets,  Up: X Resources
 
-Menubar Resources
------------------
+27.10.6 Menubar Resources
+-------------------------
 
 As the menubar is implemented as a widget which is not a part of XEmacs
 proper, it does not use the face mechanism for specifying fonts and
@@ -6898,8 +7068,8 @@ are appropriate for the toolkit in use.
 \1f
 File: xemacs.info,  Node: Quitting,  Next: Lossage,  Prev: Customization,  Up: Top
 
-Quitting and Aborting
-=====================
+27.11 Quitting and Aborting
+===========================
 
 `C-g'
      Quit.  Cancel running or partially typed command.
@@ -6964,8 +7134,8 @@ finished executing.  *Note Undo::.
 \1f
 File: xemacs.info,  Node: Lossage,  Next: Bugs,  Prev: Quitting,  Up: Top
 
-Dealing With Emacs Trouble
-==========================
+27.12 Dealing With Emacs Trouble
+================================
 
 This section describes various conditions in which Emacs fails to work,
 and how to recognize them and correct them.
@@ -6983,8 +7153,8 @@ and how to recognize them and correct them.
 \1f
 File: xemacs.info,  Node: Stuck Recursive,  Next: Screen Garbled,  Prev: Lossage,  Up: Lossage
 
-Recursive Editing Levels
-------------------------
+27.12.1 Recursive Editing Levels
+--------------------------------
 
 Recursive editing levels are important and useful features of Emacs, but
 they can seem like malfunctions to the user who does not understand
@@ -7000,8 +7170,8 @@ called getting back to top level.  *Note Recursive Edit::.
 \1f
 File: xemacs.info,  Node: Screen Garbled,  Next: Text Garbled,  Prev: Stuck Recursive,  Up: Lossage
 
-Garbage on the Screen
----------------------
+27.12.2 Garbage on the Screen
+-----------------------------
 
 If the data on the screen looks wrong, the first thing to do is see
 whether the text is actually wrong.  Type `C-l', to redisplay the
@@ -7023,8 +7193,8 @@ that have or lack specific features.
 \1f
 File: xemacs.info,  Node: Text Garbled,  Next: Unasked-for Search,  Prev: Screen Garbled,  Up: Lossage
 
-Garbage in the Text
--------------------
+27.12.3 Garbage in the Text
+---------------------------
 
 If `C-l' shows that the text is wrong, try undoing the changes to it
 using `C-x u' until it gets back to a state you consider correct.  Also
@@ -7039,8 +7209,8 @@ visible again, type `C-x n w'.  *Note Narrowing::.
 \1f
 File: xemacs.info,  Node: Unasked-for Search,  Next: Emergency Escape,  Prev: Text Garbled,  Up: Lossage
 
-Spontaneous Entry to Incremental Search
----------------------------------------
+27.12.4 Spontaneous Entry to Incremental Search
+-----------------------------------------------
 
 If Emacs spontaneously displays `I-search:' at the bottom of the
 screen, it means that the terminal is sending `C-s' and `C-q' according
@@ -7056,8 +7226,8 @@ flow control to be used, until you can get a properly designed terminal.
 \1f
 File: xemacs.info,  Node: Emergency Escape,  Next: Total Frustration,  Prev: Unasked-for Search,  Up: Lossage
 
-Emergency Escape
-----------------
+27.12.5 Emergency Escape
+------------------------
 
 Because at times there have been bugs causing Emacs to loop without
 checking `quit-flag', a special feature causes Emacs to be suspended
@@ -7096,8 +7266,8 @@ kill Emacs or to create another window and run another program.
 \1f
 File: xemacs.info,  Node: Total Frustration,  Prev: Emergency Escape,  Up: Lossage
 
-Help for Total Frustration
---------------------------
+27.12.6 Help for Total Frustration
+----------------------------------
 
 If using Emacs (or something else) becomes terribly frustrating and none
 of the techniques described above solve the problem, Emacs can still
@@ -7112,192 +7282,3 @@ help you.
 the doctor, you must end it by typing <RET> <RET>.  This lets the
 doctor know you are finished.
 
-\1f
-File: xemacs.info,  Node: Bugs,  Prev: Lossage,  Up: Top
-
-Reporting Bugs
-==============
-
-Sometimes you will encounter a bug in Emacs.  Although we cannot promise
-we can or will fix the bug, and we might not even agree that it is a
-bug, we want to hear about bugs you encounter in case we do want to fix
-them.
-
-   To make it possible for us to fix a bug, you must report it.  In
-order to do so effectively, you must know when and how to do it.
-
-When Is There a Bug
--------------------
-
-If Emacs executes an illegal instruction, or dies with an operating
-system error message that indicates a problem in the program (as
-opposed to something like "disk full"), then it is certainly a bug.
-
-   If Emacs updates the display in a way that does not correspond to
-what is in the buffer, then it is certainly a bug.  If a command seems
-to do the wrong thing but the problem corrects itself if you type
-`C-l', it is a case of incorrect display updating.
-
-   Taking forever to complete a command can be a bug, but you must make
-certain that it was really Emacs's fault.  Some commands simply take a
-long time.  Type `C-g' and then `C-h l' to see whether the input Emacs
-received was what you intended to type; if the input was such that you
-KNOW it should have been processed quickly, report a bug.  If you don't
-know whether the command should take a long time, find out by looking
-in the manual or by asking for assistance.
-
-   If a command you are familiar with causes an Emacs error message in a
-case where its usual definition ought to be reasonable, it is probably a
-bug.
-
-   If a command does the wrong thing, that is a bug.  But be sure you
-know for certain what it ought to have done.  If you aren't familiar
-with the command, or don't know for certain how the command is supposed
-to work, then it might actually be working right.  Rather than jumping
-to conclusions, show the problem to someone who knows for certain.
-
-   Finally, a command's intended definition may not be best for editing
-with.  This is a very important sort of problem, but it is also a
-matter of judgment.  Also, it is easy to come to such a conclusion out
-of ignorance of some of the existing features.  It is probably best not
-to complain about such a problem until you have checked the
-documentation in the usual ways, feel confident that you understand it,
-and know for certain that what you want is not available.  If you are
-not sure what the command is supposed to do after a careful reading of
-the manual, check the index and glossary for any terms that may be
-unclear.  If you still do not understand, this indicates a bug in the
-manual.  The manual's job is to make everything clear.  It is just as
-important to report documentation bugs as program bugs.
-
-   If the online documentation string of a function or variable
-disagrees with the manual, one of them must be wrong, so report the bug.
-
-How to Report a Bug
--------------------
-
-When you decide that there is a bug, it is important to report it and to
-report it in a way which is useful.  What is most useful is an exact
-description of what commands you type, starting with the shell command
-to run Emacs, until the problem happens.  Always include the version
-number of Emacs that you are using; type `M-x emacs-version' to print
-this.
-
-   The most important principle in reporting a bug is to report FACTS,
-not hypotheses or categorizations.  It is always easier to report the
-facts, but people seem to prefer to strain to posit explanations and
-report them instead.  If the explanations are based on guesses about
-how Emacs is implemented, they will be useless; we will have to try to
-figure out what the facts must have been to lead to such speculations.
-Sometimes this is impossible.  But in any case, it is unnecessary work
-for us.
-
-   For example, suppose that you type `C-x C-f /glorp/baz.ugh <RET>',
-visiting a file which (you know) happens to be rather large, and Emacs
-prints out `I feel pretty today'.  The best way to report the bug is
-with a sentence like the preceding one, because it gives all the facts
-and nothing but the facts.
-
-   Do not assume that the problem is due to the size of the file and
-say, "When I visit a large file, Emacs prints out `I feel pretty
-today'."  This is what we mean by "guessing explanations".  The problem
-is just as likely to be due to the fact that there is a `z' in the file
-name.  If this is so, then when we got your report, we would try out
-the problem with some "large file", probably with no `z' in its name,
-and not find anything wrong.  There is no way in the world that we
-could guess that we should try visiting a file with a `z' in its name.
-
-   Alternatively, the problem might be due to the fact that the file
-starts with exactly 25 spaces.  For this reason, you should make sure
-that you inform us of the exact contents of any file that is needed to
-reproduce the bug.  What if the problem only occurs when you have typed
-the `C-x a l' command previously?  This is why we ask you to give the
-exact sequence of characters you typed since starting to use Emacs.
-
-   You should not even say "visit a file" instead of `C-x C-f' unless
-you know that it makes no difference which visiting command is used.
-Similarly, rather than saying "if I have three characters on the line,"
-say "after I type `<RET> A B C <RET> C-p'," if that is the way you
-entered the text.
-
-   If you are not in Fundamental mode when the problem occurs, you
-should say what mode you are in.
-
-   If the manifestation of the bug is an Emacs error message, it is
-important to report not just the text of the error message but a
-backtrace showing how the Lisp program in Emacs arrived at the error.
-To make the backtrace, you must execute the Lisp expression `(setq
-debug-on-error t)' before the error happens (that is to say, you must
-execute that expression and then make the bug happen).  This causes the
-Lisp debugger to run (*note Lisp Debug::).  The debugger's backtrace
-can be copied as text into the bug report.  This use of the debugger is
-possible only if you know how to make the bug happen again.  Do note
-the error message the first time the bug happens, so if you can't make
-it happen again, you can report at least that.
-
-   Check whether any programs you have loaded into the Lisp world,
-including your init file, set any variables that may affect the
-functioning of Emacs.  *Note Init File::.  Also, see whether the
-problem happens in a freshly started Emacs without loading your init
-file (start Emacs with the `-q' switch to prevent loading the init
-file).  If the problem does NOT occur then, it is essential that we
-know the contents of any programs that you must load into the Lisp
-world in order to cause the problem to occur.
-
-   If the problem does depend on an init file or other Lisp programs
-that are not part of the standard Emacs system, then you should make
-sure it is not a bug in those programs by complaining to their
-maintainers first.  After they verify that they are using Emacs in a
-way that is supposed to work, they should report the bug.
-
-   If you can tell us a way to cause the problem without visiting any
-files, please do so.  This makes it much easier to debug.  If you do
-need files, make sure you arrange for us to see their exact contents.
-For example, it can often matter whether there are spaces at the ends
-of lines, or a newline after the last line in the buffer (nothing ought
-to care whether the last line is terminated, but tell that to the bugs).
-
-   The easy way to record the input to Emacs precisely is to write a
-dribble file; execute the Lisp expression:
-
-     (open-dribble-file "~/dribble")
-
-using `Meta-<ESC>' or from the `*scratch*' buffer just after starting
-Emacs.  From then on, all Emacs input will be written in the specified
-dribble file until the Emacs process is killed.
-
-   For possible display bugs, it is important to report the terminal
-type (the value of environment variable `TERM'), the complete termcap
-entry for the terminal from `/etc/termcap' (since that file is not
-identical on all machines), and the output that Emacs actually sent to
-the terminal.  The way to collect this output is to execute the Lisp
-expression:
-
-     (open-termscript "~/termscript")
-
-using `Meta-<ESC>' or from the `*scratch*' buffer just after starting
-Emacs.  From then on, all output from Emacs to the terminal will be
-written in the specified termscript file as well, until the Emacs
-process is killed.  If the problem happens when Emacs starts up, put
-this expression into your init file so that the termscript file will be
-open when Emacs displays the screen for the first time.  *Note Init
-File::. Be warned: it is often difficult, and sometimes impossible, to
-fix a terminal-dependent bug without access to a terminal of the type
-that stimulates the bug.
-
-   The newsgroup `comp.emacs.xemacs' may be used for bug reports, other
-discussions and requests for assistance.
-
-   If you don't have access to this newgroup, you can subscribe to the
-mailing list version: the newsgroup is bidirectionally gatewayed into
-the mailing list `xemacs@xemacs.org'.
-
-   To be added or removed from this mailing list, send mail to
-`xemacs-request@xemacs.org'.  Do not send requests for addition to the
-mailing list itself.
-
-   The mailing lists and newsgroups are archived on our anonymous FTP
-server, `ftp.xemacs.org', and at various other archive sites around the
-net. You should also check the `FAQ' in `/pub/xemacs' on our anonymous
-FTP server. It provides some introductory information and help for
-initial configuration problems.
-
index af09a71..89486d1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.6 from
+This is ../info/xemacs.info, produced by makeinfo version 4.8 from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,6 +30,195 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Bugs,  Prev: Lossage,  Up: Top
+
+27.13 Reporting Bugs
+====================
+
+Sometimes you will encounter a bug in Emacs.  Although we cannot promise
+we can or will fix the bug, and we might not even agree that it is a
+bug, we want to hear about bugs you encounter in case we do want to fix
+them.
+
+   To make it possible for us to fix a bug, you must report it.  In
+order to do so effectively, you must know when and how to do it.
+
+27.13.1 When Is There a Bug
+---------------------------
+
+If Emacs executes an illegal instruction, or dies with an operating
+system error message that indicates a problem in the program (as
+opposed to something like "disk full"), then it is certainly a bug.
+
+   If Emacs updates the display in a way that does not correspond to
+what is in the buffer, then it is certainly a bug.  If a command seems
+to do the wrong thing but the problem corrects itself if you type
+`C-l', it is a case of incorrect display updating.
+
+   Taking forever to complete a command can be a bug, but you must make
+certain that it was really Emacs's fault.  Some commands simply take a
+long time.  Type `C-g' and then `C-h l' to see whether the input Emacs
+received was what you intended to type; if the input was such that you
+KNOW it should have been processed quickly, report a bug.  If you don't
+know whether the command should take a long time, find out by looking
+in the manual or by asking for assistance.
+
+   If a command you are familiar with causes an Emacs error message in a
+case where its usual definition ought to be reasonable, it is probably a
+bug.
+
+   If a command does the wrong thing, that is a bug.  But be sure you
+know for certain what it ought to have done.  If you aren't familiar
+with the command, or don't know for certain how the command is supposed
+to work, then it might actually be working right.  Rather than jumping
+to conclusions, show the problem to someone who knows for certain.
+
+   Finally, a command's intended definition may not be best for editing
+with.  This is a very important sort of problem, but it is also a
+matter of judgment.  Also, it is easy to come to such a conclusion out
+of ignorance of some of the existing features.  It is probably best not
+to complain about such a problem until you have checked the
+documentation in the usual ways, feel confident that you understand it,
+and know for certain that what you want is not available.  If you are
+not sure what the command is supposed to do after a careful reading of
+the manual, check the index and glossary for any terms that may be
+unclear.  If you still do not understand, this indicates a bug in the
+manual.  The manual's job is to make everything clear.  It is just as
+important to report documentation bugs as program bugs.
+
+   If the online documentation string of a function or variable
+disagrees with the manual, one of them must be wrong, so report the bug.
+
+27.13.2 How to Report a Bug
+---------------------------
+
+When you decide that there is a bug, it is important to report it and to
+report it in a way which is useful.  What is most useful is an exact
+description of what commands you type, starting with the shell command
+to run Emacs, until the problem happens.  Always include the version
+number of Emacs that you are using; type `M-x emacs-version' to print
+this.
+
+   The most important principle in reporting a bug is to report FACTS,
+not hypotheses or categorizations.  It is always easier to report the
+facts, but people seem to prefer to strain to posit explanations and
+report them instead.  If the explanations are based on guesses about
+how Emacs is implemented, they will be useless; we will have to try to
+figure out what the facts must have been to lead to such speculations.
+Sometimes this is impossible.  But in any case, it is unnecessary work
+for us.
+
+   For example, suppose that you type `C-x C-f /glorp/baz.ugh <RET>',
+visiting a file which (you know) happens to be rather large, and Emacs
+prints out `I feel pretty today'.  The best way to report the bug is
+with a sentence like the preceding one, because it gives all the facts
+and nothing but the facts.
+
+   Do not assume that the problem is due to the size of the file and
+say, "When I visit a large file, Emacs prints out `I feel pretty
+today'."  This is what we mean by "guessing explanations".  The problem
+is just as likely to be due to the fact that there is a `z' in the file
+name.  If this is so, then when we got your report, we would try out
+the problem with some "large file", probably with no `z' in its name,
+and not find anything wrong.  There is no way in the world that we
+could guess that we should try visiting a file with a `z' in its name.
+
+   Alternatively, the problem might be due to the fact that the file
+starts with exactly 25 spaces.  For this reason, you should make sure
+that you inform us of the exact contents of any file that is needed to
+reproduce the bug.  What if the problem only occurs when you have typed
+the `C-x a l' command previously?  This is why we ask you to give the
+exact sequence of characters you typed since starting to use Emacs.
+
+   You should not even say "visit a file" instead of `C-x C-f' unless
+you know that it makes no difference which visiting command is used.
+Similarly, rather than saying "if I have three characters on the line,"
+say "after I type `<RET> A B C <RET> C-p'," if that is the way you
+entered the text.
+
+   If you are not in Fundamental mode when the problem occurs, you
+should say what mode you are in.
+
+   If the manifestation of the bug is an Emacs error message, it is
+important to report not just the text of the error message but a
+backtrace showing how the Lisp program in Emacs arrived at the error.
+To make the backtrace, you must execute the Lisp expression `(setq
+debug-on-error t)' before the error happens (that is to say, you must
+execute that expression and then make the bug happen).  This causes the
+Lisp debugger to run (*note Lisp Debug::).  The debugger's backtrace
+can be copied as text into the bug report.  This use of the debugger is
+possible only if you know how to make the bug happen again.  Do note
+the error message the first time the bug happens, so if you can't make
+it happen again, you can report at least that.
+
+   Check whether any programs you have loaded into the Lisp world,
+including your init file, set any variables that may affect the
+functioning of Emacs.  *Note Init File::.  Also, see whether the
+problem happens in a freshly started Emacs without loading your init
+file (start Emacs with the `-q' switch to prevent loading the init
+file).  If the problem does NOT occur then, it is essential that we
+know the contents of any programs that you must load into the Lisp
+world in order to cause the problem to occur.
+
+   If the problem does depend on an init file or other Lisp programs
+that are not part of the standard Emacs system, then you should make
+sure it is not a bug in those programs by complaining to their
+maintainers first.  After they verify that they are using Emacs in a
+way that is supposed to work, they should report the bug.
+
+   If you can tell us a way to cause the problem without visiting any
+files, please do so.  This makes it much easier to debug.  If you do
+need files, make sure you arrange for us to see their exact contents.
+For example, it can often matter whether there are spaces at the ends
+of lines, or a newline after the last line in the buffer (nothing ought
+to care whether the last line is terminated, but tell that to the bugs).
+
+   The easy way to record the input to Emacs precisely is to write a
+dribble file; execute the Lisp expression:
+
+     (open-dribble-file "~/dribble")
+
+using `Meta-<ESC>' or from the `*scratch*' buffer just after starting
+Emacs.  From then on, all Emacs input will be written in the specified
+dribble file until the Emacs process is killed.
+
+   For possible display bugs, it is important to report the terminal
+type (the value of environment variable `TERM'), the complete termcap
+entry for the terminal from `/etc/termcap' (since that file is not
+identical on all machines), and the output that Emacs actually sent to
+the terminal.  The way to collect this output is to execute the Lisp
+expression:
+
+     (open-termscript "~/termscript")
+
+using `Meta-<ESC>' or from the `*scratch*' buffer just after starting
+Emacs.  From then on, all output from Emacs to the terminal will be
+written in the specified termscript file as well, until the Emacs
+process is killed.  If the problem happens when Emacs starts up, put
+this expression into your init file so that the termscript file will be
+open when Emacs displays the screen for the first time.  *Note Init
+File::. Be warned: it is often difficult, and sometimes impossible, to
+fix a terminal-dependent bug without access to a terminal of the type
+that stimulates the bug.
+
+   The newsgroup `comp.emacs.xemacs' may be used for bug reports, other
+discussions and requests for assistance.
+
+   If you don't have access to this newgroup, you can subscribe to the
+mailing list version: the newsgroup is bidirectionally gatewayed into
+the mailing list `xemacs@xemacs.org'.
+
+   To be added or removed from this mailing list, send mail to
+`xemacs-request@xemacs.org'.  Do not send requests for addition to the
+mailing list itself.
+
+   The mailing lists and newsgroups are archived on our anonymous FTP
+server, `ftp.xemacs.org', and at various other archive sites around the
+net. You should also check the `FAQ' in `/pub/xemacs' on our anonymous
+FTP server. It provides some introductory information and help for
+initial configuration problems.
+
+\1f
 File: xemacs.info,  Node: Glossary,  Next: Manifesto,  Prev: Intro,  Up: Top
 
 Glossary
@@ -1295,473 +1484,511 @@ File: xemacs.info,  Node: Key Index,  Next: Command Index,  Prev: Manifesto,  Up
 Key (Character) Index
 *********************
 
+\0\b[index\0\b]
 * Menu:
 
-* ! (query-replace):                     Query Replace.
-* " (TeX mode):                          TeX Editing.
-* , (query-replace):                     Query Replace.
-* . (Calendar mode):                     Specified Dates.
-* . (query-replace):                     Query Replace.
-* ? (Calendar mode):                     General Calendar.
-* ^ (query-replace):                     Query Replace.
-* a (Calendar mode):                     Holidays.
-* BS:                                    Inserting Text.
-* button1:                               Intro to Keystrokes.
-* button1up:                             Intro to Keystrokes.
-* button2:                               Intro to Keystrokes.
-* button2up:                             Intro to Keystrokes.
-* button3:                               Intro to Keystrokes.
-* button3up:                             Intro to Keystrokes.
-* C-<:                                   Setting Mark.
-* C->:                                   Setting Mark.
-* C-@ (Calendar mode):                   Mark and Region.
-* C-\:                                   Select Input Method.
-* C-] <1>:                               Quitting.
-* C-]:                                   Recursive Edit.
-* C-_:                                   Undo.
-* C-a:                                   Moving Point.
+* ! (query-replace):                     Query Replace.       (line  27)
+* " (TeX mode):                          TeX Editing.         (line  31)
+* , (query-replace):                     Query Replace.       (line  27)
+* . (Calendar mode):                     Specified Dates.     (line  26)
+* . (query-replace):                     Query Replace.       (line  27)
+* ? (Calendar mode):                     General Calendar.    (line  26)
+* ^ (query-replace):                     Query Replace.       (line  27)
+* a (Calendar mode):                     Holidays.            (line  48)
+* BS:                                    Inserting Text.      (line  13)
+* button1:                               Intro to Keystrokes. (line  16)
+* button1up:                             Intro to Keystrokes. (line  16)
+* button2:                               Intro to Keystrokes. (line  16)
+* button2up:                             Intro to Keystrokes. (line  16)
+* button3:                               Intro to Keystrokes. (line  16)
+* button3up:                             Intro to Keystrokes. (line  16)
+* C-<:                                   Setting Mark.        (line  50)
+* C->:                                   Setting Mark.        (line  50)
+* C-@ (Calendar mode):                   Mark and Region.     (line  24)
+* C-\:                                   Select Input Method. (line  26)
+* C-] <1>:                               Quitting.            (line  44)
+* C-]:                                   Recursive Edit.      (line  18)
+* C-_:                                   Undo.                (line  20)
+* C-a:                                   Moving Point.        (line  15)
 * C-a (Calendar mode):                   Move to Beginning or End.
-* C-b:                                   Moving Point.
+                                                              (line  11)
+* C-b:                                   Moving Point.        (line  15)
 * C-b (Calendar mode):                   Calendar Unit Motion.
-* C-c:                                   Key Sequences.
-* C-c ' (Picture mode):                  Insert in Picture.
-* C-c . (Picture mode):                  Insert in Picture.
-* C-c / (Picture mode):                  Insert in Picture.
-* C-c ; (Fortran mode):                  Fortran Comments.
-* C-c < (Picture mode):                  Insert in Picture.
-* C-c > (Picture mode):                  Insert in Picture.
-* C-c \ (Picture mode):                  Insert in Picture.
-* C-c ^ (Picture mode):                  Insert in Picture.
-* C-c ` (Picture mode):                  Insert in Picture.
-* C-c C-\ (Shell mode):                  Shell Mode.
-* C-c C-b (Outline mode):                Outline Motion.
-* C-c C-b (Picture mode):                Insert in Picture.
-* C-c C-b (TeX mode):                    TeX Print.
-* C-c C-c (Edit Abbrevs):                Editing Abbrevs.
-* C-c C-c (Edit Tab Stops):              Tab Stops.
-* C-c C-c (Mail mode):                   Mail Mode.
+                                                              (line  34)
+* C-c:                                   Key Sequences.       (line  29)
+* C-c ' (Picture mode):                  Insert in Picture.   (line   6)
+* C-c . (Picture mode):                  Insert in Picture.   (line   6)
+* C-c / (Picture mode):                  Insert in Picture.   (line   6)
+* C-c ; (Fortran mode):                  Fortran Comments.    (line  71)
+* C-c < (Picture mode):                  Insert in Picture.   (line   6)
+* C-c > (Picture mode):                  Insert in Picture.   (line   6)
+* C-c \ (Picture mode):                  Insert in Picture.   (line   6)
+* C-c ^ (Picture mode):                  Insert in Picture.   (line   6)
+* C-c ` (Picture mode):                  Insert in Picture.   (line   6)
+* C-c C-\ (Shell mode):                  Shell Mode.          (line  12)
+* C-c C-b (Outline mode):                Outline Motion.      (line  36)
+* C-c C-b (Picture mode):                Insert in Picture.   (line  40)
+* C-c C-b (TeX mode):                    TeX Print.           (line  32)
+* C-c C-c (Edit Abbrevs):                Editing Abbrevs.     (line  34)
+* C-c C-c (Edit Tab Stops):              Tab Stops.           (line  11)
+* C-c C-c (Mail mode):                   Mail Mode.           (line  45)
 * C-c C-c (Occur mode):                  Other Repeating Search.
-* C-c C-c (Shell mode):                  Shell Mode.
-* C-c C-d (Outline mode):                Outline Visibility.
-* C-c C-d (Picture mode):                Basic Picture.
-* C-c C-d (Shell mode):                  Shell Mode.
-* C-c C-f (LaTeX mode):                  TeX Editing.
-* C-c C-f (Outline mode):                Outline Motion.
-* C-c C-f (Picture mode):                Insert in Picture.
-* C-c C-f C-c (Mail mode):               Mail Mode.
-* C-c C-f C-s (Mail mode):               Mail Mode.
-* C-c C-f C-t (Mail mode):               Mail Mode.
-* C-c C-h (Outline mode):                Outline Visibility.
-* C-c C-i (Outline mode):                Outline Visibility.
-* C-c C-j (Term mode):                   Term Mode.
+                                                              (line  15)
+* C-c C-c (Shell mode):                  Shell Mode.          (line  12)
+* C-c C-d (Outline mode):                Outline Visibility.  (line  48)
+* C-c C-d (Picture mode):                Basic Picture.       (line  41)
+* C-c C-d (Shell mode):                  Shell Mode.          (line  12)
+* C-c C-f (LaTeX mode):                  TeX Editing.         (line  72)
+* C-c C-f (Outline mode):                Outline Motion.      (line  36)
+* C-c C-f (Picture mode):                Insert in Picture.   (line  40)
+* C-c C-f C-c (Mail mode):               Mail Mode.           (line  54)
+* C-c C-f C-s (Mail mode):               Mail Mode.           (line  54)
+* C-c C-f C-t (Mail mode):               Mail Mode.           (line  54)
+* C-c C-h (Outline mode):                Outline Visibility.  (line  48)
+* C-c C-i (Outline mode):                Outline Visibility.  (line  62)
+* C-c C-j (Term mode):                   Term Mode.           (line  12)
 * C-c C-k (Picture mode):                Rectangles in Picture.
-* C-c C-k (Term mode):                   Term Mode.
-* C-c C-k (TeX mode):                    TeX Print.
-* C-c C-l (Calendar mode):               General Calendar.
-* C-c C-l (TeX mode):                    TeX Print.
-* C-c C-n (Fortran mode):                Fortran Motion.
-* C-c C-n (Outline mode):                Outline Motion.
-* C-c C-o (Shell mode):                  Shell Mode.
-* C-c C-p (Fortran mode):                Fortran Motion.
-* C-c C-p (Outline mode):                Outline Motion.
-* C-c C-p (TeX mode):                    TeX Print.
-* C-c C-q (Mail mode):                   Mail Mode.
-* C-c C-q (Term mode):                   Paging in Term.
-* C-c C-q (TeX mode):                    TeX Print.
-* C-c C-r (Fortran mode):                Fortran Columns.
-* C-c C-r (Shell mode):                  Shell Mode.
-* C-c C-r (TeX mode):                    TeX Print.
-* C-c C-s (Mail mode):                   Mail Mode.
-* C-c C-u (Outline mode):                Outline Motion.
-* C-c C-u (Shell mode):                  Shell Mode.
-* C-c C-w (Fortran mode):                Fortran Columns.
-* C-c C-w (Mail mode):                   Mail Mode.
+                                                              (line  27)
+* C-c C-k (Term mode):                   Term Mode.           (line  17)
+* C-c C-k (TeX mode):                    TeX Print.           (line  38)
+* C-c C-l (Calendar mode):               General Calendar.    (line  33)
+* C-c C-l (TeX mode):                    TeX Print.           (line  38)
+* C-c C-n (Fortran mode):                Fortran Motion.      (line  11)
+* C-c C-n (Outline mode):                Outline Motion.      (line  29)
+* C-c C-o (Shell mode):                  Shell Mode.          (line  12)
+* C-c C-p (Fortran mode):                Fortran Motion.      (line  11)
+* C-c C-p (Outline mode):                Outline Motion.      (line  29)
+* C-c C-p (TeX mode):                    TeX Print.           (line  32)
+* C-c C-q (Mail mode):                   Mail Mode.           (line  78)
+* C-c C-q (Term mode):                   Paging in Term.      (line   9)
+* C-c C-q (TeX mode):                    TeX Print.           (line  32)
+* C-c C-r (Fortran mode):                Fortran Columns.     (line  15)
+* C-c C-r (Shell mode):                  Shell Mode.          (line  12)
+* C-c C-r (TeX mode):                    TeX Print.           (line  48)
+* C-c C-s (Mail mode):                   Mail Mode.           (line  45)
+* C-c C-u (Outline mode):                Outline Motion.      (line  36)
+* C-c C-u (Shell mode):                  Shell Mode.          (line  12)
+* C-c C-w (Fortran mode):                Fortran Columns.     (line  30)
+* C-c C-w (Mail mode):                   Mail Mode.           (line  63)
 * C-c C-w (Picture mode):                Rectangles in Picture.
-* C-c C-w (Shell mode):                  Shell Mode.
+                                                              (line  27)
+* C-c C-w (Shell mode):                  Shell Mode.          (line  12)
 * C-c C-x (Picture mode):                Rectangles in Picture.
-* C-c C-y (Mail mode):                   Mail Mode.
+                                                              (line  36)
+* C-c C-y (Mail mode):                   Mail Mode.           (line  67)
 * C-c C-y (Picture mode):                Rectangles in Picture.
-* C-c C-y (Shell mode):                  Shell Mode.
-* C-c C-z (Shell mode):                  Shell Mode.
-* C-c TAB (Picture mode):                Tabs in Picture.
-* C-c { (TeX mode):                      TeX Editing.
-* C-c } (TeX mode):                      TeX Editing.
-* C-d:                                   Killing.
-* C-d (Shell mode):                      Shell Mode.
-* C-e:                                   Moving Point.
+                                                              (line  36)
+* C-c C-y (Shell mode):                  Shell Mode.          (line  12)
+* C-c C-z (Shell mode):                  Shell Mode.          (line  12)
+* C-c TAB (Picture mode):                Tabs in Picture.     (line  23)
+* C-c { (TeX mode):                      TeX Editing.         (line  49)
+* C-c } (TeX mode):                      TeX Editing.         (line  49)
+* C-d:                                   Killing.             (line   6)
+* C-d (Shell mode):                      Shell Mode.          (line  12)
+* C-e:                                   Moving Point.        (line  15)
 * C-e (Calendar mode):                   Move to Beginning or End.
-* C-END:                                 Moving Point.
-* C-f:                                   Moving Point.
+                                                              (line  12)
+* C-END:                                 Moving Point.        (line  15)
+* C-f:                                   Moving Point.        (line  15)
 * C-f (Calendar mode):                   Calendar Unit Motion.
-* C-g <1>:                               Quitting.
-* C-g:                                   Minibuffer.
-* C-g (isearch-mode):                    Incremental Search.
-* C-h <1>:                               Help.
-* C-h:                                   Key Sequences.
-* C-h A:                                 Apropos.
-* C-h b:                                 Misc Help.
-* C-h c:                                 Key Help.
-* C-h C-\:                               Select Input Method.
-* C-h C-c:                               Misc Help.
-* C-h C-d:                               Misc Help.
-* C-h C-f:                               Misc Help.
-* C-h C-h:                               Help.
-* C-h C-k:                               Misc Help.
-* C-h C-w:                               Misc Help.
-* C-h f:                                 Documentation.
-* C-h F:                                 Misc Help.
-* C-h f:                                 Name Help.
-* C-h h:                                 Mule Intro.
-* C-h I:                                 Select Input Method.
-* C-h i:                                 Misc Help.
-* C-h k:                                 Key Help.
+                                                              (line  34)
+* C-g <1>:                               Quitting.            (line  26)
+* C-g:                                   Minibuffer.          (line  26)
+* C-g (isearch-mode):                    Incremental Search.  (line 130)
+* C-h <1>:                               Help.                (line   6)
+* C-h:                                   Key Sequences.       (line  29)
+* C-h A:                                 Apropos.             (line   6)
+* C-h b:                                 Misc Help.           (line  37)
+* C-h c:                                 Key Help.            (line   6)
+* C-h C-\:                               Select Input Method. (line  14)
+* C-h C-c:                               Misc Help.           (line  51)
+* C-h C-d:                               Misc Help.           (line  51)
+* C-h C-f:                               Misc Help.           (line  18)
+* C-h C-h:                               Help.                (line  13)
+* C-h C-k:                               Misc Help.           (line  18)
+* C-h C-w:                               Misc Help.           (line  51)
+* C-h f:                                 Documentation.       (line   6)
+* C-h F:                                 Misc Help.           (line  51)
+* C-h f:                                 Name Help.           (line   6)
+* C-h h:                                 Mule Intro.          (line  59)
+* C-h I:                                 Select Input Method. (line  14)
+* C-h i:                                 Misc Help.           (line   6)
+* C-h k:                                 Key Help.            (line  13)
 * C-h L:                                 Language Environments.
-* C-h l:                                 Misc Help.
-* C-h m:                                 Misc Help.
-* C-h n:                                 Misc Help.
-* C-h p:                                 Library Keywords.
-* C-h s:                                 Syntax Change.
-* C-h t <1>:                             Misc Help.
-* C-h t:                                 Basic.
-* C-h v <1>:                             Examining.
-* C-h v <2>:                             Documentation.
-* C-h v:                                 Name Help.
-* C-h w:                                 Name Help.
-* C-HOME:                                Moving Point.
-* C-k:                                   Killing.
-* C-l <1>:                               Scrolling.
-* C-l:                                   Moving Point.
-* C-l (query-replace):                   Query Replace.
-* C-LEFT:                                Moving Point.
-* C-M-@ <1>:                             Lists.
-* C-M-@:                                 Marking Objects.
-* C-M-\ <1>:                             Multi-line Indent.
+                                                              (line  36)
+* C-h l:                                 Misc Help.           (line  27)
+* C-h m:                                 Misc Help.           (line  32)
+* C-h n:                                 Misc Help.           (line  51)
+* C-h p:                                 Library Keywords.    (line   6)
+* C-h s:                                 Syntax Change.       (line  48)
+* C-h t <1>:                             Misc Help.           (line  51)
+* C-h t:                                 Basic.               (line   6)
+* C-h v <1>:                             Examining.           (line  13)
+* C-h v <2>:                             Documentation.       (line   6)
+* C-h v:                                 Name Help.           (line  49)
+* C-h w:                                 Name Help.           (line  44)
+* C-HOME:                                Moving Point.        (line  15)
+* C-k:                                   Killing.             (line  73)
+* C-l <1>:                               Scrolling.           (line  37)
+* C-l:                                   Moving Point.        (line  15)
+* C-l (query-replace):                   Query Replace.       (line  27)
+* C-LEFT:                                Moving Point.        (line  15)
+* C-M-@ <1>:                             Lists.               (line 114)
+* C-M-@:                                 Marking Objects.     (line  28)
+* C-M-\ <1>:                             Multi-line Indent.   (line  35)
 * C-M-\:                                 Indentation Commands.
-* C-M-a:                                 Defuns.
-* C-M-a (Fortran mode):                  Fortran Motion.
-* C-M-b:                                 Lists.
-* C-M-c:                                 Recursive Edit.
-* C-M-d:                                 Lists.
-* C-M-e:                                 Defuns.
-* C-M-e (Fortran mode):                  Fortran Motion.
-* C-M-f:                                 Lists.
-* C-M-h <1>:                             Defuns.
-* C-M-h:                                 Marking Objects.
-* C-M-h (Fortran mode):                  Fortran Motion.
-* C-M-k <1>:                             Lists.
-* C-M-k:                                 Killing.
-* C-M-n:                                 Lists.
+                                                              (line  33)
+* C-M-a:                                 Defuns.              (line  23)
+* C-M-a (Fortran mode):                  Fortran Motion.      (line  11)
+* C-M-b:                                 Lists.               (line  67)
+* C-M-c:                                 Recursive Edit.      (line  13)
+* C-M-d:                                 Lists.               (line  96)
+* C-M-e:                                 Defuns.              (line  23)
+* C-M-e (Fortran mode):                  Fortran Motion.      (line  11)
+* C-M-f:                                 Lists.               (line  67)
+* C-M-h <1>:                             Defuns.              (line  23)
+* C-M-h:                                 Marking Objects.     (line  32)
+* C-M-h (Fortran mode):                  Fortran Motion.      (line  11)
+* C-M-k <1>:                             Lists.               (line  87)
+* C-M-k:                                 Killing.             (line 100)
+* C-M-n:                                 Lists.               (line  90)
 * C-M-o:                                 Indentation Commands.
-* C-M-p:                                 Lists.
-* C-M-q:                                 Multi-line Indent.
-* C-M-q (Fortran mode):                  ForIndent Commands.
-* C-M-t <1>:                             Lists.
-* C-M-t:                                 Transpose.
-* C-M-u:                                 Lists.
-* C-M-v <1>:                             Other Window.
-* C-M-v:                                 Minibuffer Edit.
-* C-M-w:                                 Appending Kills.
-* C-M-x <1>:                             External Lisp.
-* C-M-x:                                 Lisp Eval.
-* C-n:                                   Moving Point.
+                                                              (line  17)
+* C-M-p:                                 Lists.               (line  90)
+* C-M-q:                                 Multi-line Indent.   (line  19)
+* C-M-q (Fortran mode):                  ForIndent Commands.  (line  21)
+* C-M-t <1>:                             Lists.               (line 108)
+* C-M-t:                                 Transpose.           (line  30)
+* C-M-u:                                 Lists.               (line  96)
+* C-M-v <1>:                             Other Window.        (line  40)
+* C-M-v:                                 Minibuffer Edit.     (line  33)
+* C-M-w:                                 Appending Kills.     (line  33)
+* C-M-x <1>:                             External Lisp.       (line  27)
+* C-M-x:                                 Lisp Eval.           (line  44)
+* C-n:                                   Moving Point.        (line  15)
 * C-n (Calendar mode):                   Calendar Unit Motion.
-* C-o:                                   Blank Lines.
-* C-p:                                   Moving Point.
+                                                              (line  34)
+* C-o:                                   Blank Lines.         (line  16)
+* C-p:                                   Moving Point.        (line  15)
 * C-p (Calendar mode):                   Calendar Unit Motion.
-* C-q:                                   Inserting Text.
-* C-q (isearch-mode):                    Incremental Search.
-* C-r:                                   Incremental Search.
-* C-r (isearch-mode):                    Incremental Search.
-* C-r (query-replace):                   Query Replace.
-* C-RIGHT:                               Moving Point.
-* C-s:                                   Incremental Search.
-* C-s (isearch-mode):                    Incremental Search.
-* C-SPC:                                 Setting Mark.
-* C-SPC (Calendar mode):                 Mark and Region.
-* C-t <1>:                               Transpose.
-* C-t:                                   Moving Point.
-* C-u:                                   Arguments.
-* C-u - C-x ;:                           Comments.
-* C-u C-@:                               Mark Ring.
-* C-u C-SPC:                             Mark Ring.
-* C-u C-x v v:                           Editing with VC.
-* C-u TAB:                               Multi-line Indent.
-* C-v <1>:                               Scrolling.
-* C-v:                                   Moving Point.
-* C-v (Calendar mode):                   Scroll Calendar.
-* C-w:                                   Killing.
-* C-w (isearch-mode):                    Incremental Search.
-* C-w (query-replace):                   Query Replace.
-* C-x:                                   Key Sequences.
-* C-x $:                                 Selective Display.
-* C-x (:                                 Basic Kbd Macro.
-* C-x ):                                 Basic Kbd Macro.
-* C-x .:                                 Fill Prefix.
-* C-x 0:                                 Change Window.
-* C-x 1:                                 Change Window.
-* C-x 2:                                 Split Window.
-* C-x 3:                                 Split Window.
-* C-x 4:                                 Pop Up Window.
-* C-x 4 .:                               Find Tag.
-* C-x 4 b:                               Select Buffer.
-* C-x 4 d:                               Dired Enter.
-* C-x 4 f:                               Visiting.
-* C-x 4 m:                               Sending Mail.
-* C-x 5 b:                               Select Buffer.
-* C-x 5 C-f:                             Visiting.
-* C-x ;:                                 Comments.
+                                                              (line  34)
+* C-q:                                   Inserting Text.      (line  33)
+* C-q (isearch-mode):                    Incremental Search.  (line 130)
+* C-r:                                   Incremental Search.  (line  19)
+* C-r (isearch-mode):                    Incremental Search.  (line 130)
+* C-r (query-replace):                   Query Replace.       (line  27)
+* C-RIGHT:                               Moving Point.        (line  15)
+* C-s:                                   Incremental Search.  (line  19)
+* C-s (isearch-mode):                    Incremental Search.  (line 130)
+* C-SPC:                                 Setting Mark.        (line  32)
+* C-SPC (Calendar mode):                 Mark and Region.     (line  24)
+* C-t <1>:                               Transpose.           (line  18)
+* C-t:                                   Moving Point.        (line  15)
+* C-u:                                   Arguments.           (line  28)
+* C-u - C-x ;:                           Comments.            (line  58)
+* C-u C-@:                               Mark Ring.           (line   6)
+* C-u C-SPC:                             Mark Ring.           (line   6)
+* C-u C-x v v:                           Editing with VC.     (line 107)
+* C-u TAB:                               Multi-line Indent.   (line  27)
+* C-v <1>:                               Scrolling.           (line  42)
+* C-v:                                   Moving Point.        (line  15)
+* C-v (Calendar mode):                   Scroll Calendar.     (line  35)
+* C-w:                                   Killing.             (line 100)
+* C-w (isearch-mode):                    Incremental Search.  (line 130)
+* C-w (query-replace):                   Query Replace.       (line  27)
+* C-x:                                   Key Sequences.       (line  29)
+* C-x $:                                 Selective Display.   (line   6)
+* C-x (:                                 Basic Kbd Macro.     (line   6)
+* C-x ):                                 Basic Kbd Macro.     (line   6)
+* C-x .:                                 Fill Prefix.         (line  22)
+* C-x 0:                                 Change Window.       (line  23)
+* C-x 1:                                 Change Window.       (line  31)
+* C-x 2:                                 Split Window.        (line  21)
+* C-x 3:                                 Split Window.        (line  28)
+* C-x 4:                                 Pop Up Window.       (line   6)
+* C-x 4 .:                               Find Tag.            (line  67)
+* C-x 4 b:                               Select Buffer.       (line  16)
+* C-x 4 d:                               Dired Enter.         (line  16)
+* C-x 4 f:                               Visiting.            (line 108)
+* C-x 4 m:                               Sending Mail.        (line  22)
+* C-x 5 b:                               Select Buffer.       (line  16)
+* C-x 5 C-f:                             Visiting.            (line  46)
+* C-x ;:                                 Comments.            (line  84)
 * C-x <:                                 Horizontal Scrolling.
-* C-x < (Calendar mode):                 Scroll Calendar.
-* C-x <RET> C:                           Coding Systems.
-* C-x =:                                 Position Info.
+                                                              (line  12)
+* C-x < (Calendar mode):                 Scroll Calendar.     (line  28)
+* C-x <RET> C:                           Coding Systems.      (line  39)
+* C-x =:                                 Position Info.       (line  47)
 * C-x >:                                 Horizontal Scrolling.
-* C-x > (Calendar mode):                 Scroll Calendar.
-* C-x [:                                 Pages.
+                                                              (line  12)
+* C-x > (Calendar mode):                 Scroll Calendar.     (line  28)
+* C-x [:                                 Pages.               (line  28)
 * C-x [ (Calendar mode):                 Calendar Unit Motion.
-* C-x ]:                                 Pages.
+                                                              (line  43)
+* C-x ]:                                 Pages.               (line  28)
 * C-x ] (Calendar mode):                 Calendar Unit Motion.
-* C-x ^:                                 Change Window.
-* C-x `:                                 Compilation.
-* C-x a g:                               Defining Abbrevs.
-* C-x a i g:                             Defining Abbrevs.
-* C-x a i l:                             Defining Abbrevs.
-* C-x a l:                               Defining Abbrevs.
-* C-x b:                                 Select Buffer.
-* C-x C-b:                               List Buffers.
-* C-x C-c:                               Exiting.
-* C-x C-d:                               ListDir.
-* C-x C-e:                               Lisp Eval.
-* C-x C-l:                               Case.
-* C-x C-o <1>:                           Killing.
-* C-x C-o:                               Blank Lines.
-* C-x C-p <1>:                           Pages.
-* C-x C-p:                               Marking Objects.
-* C-x C-q:                               Misc Buffer.
-* C-x C-q (version control):             Editing with VC.
-* C-x C-s:                               Saving.
-* C-x C-t:                               Transpose.
-* C-x C-u:                               Case.
-* C-x C-v:                               Visiting.
-* C-x C-w:                               Saving.
-* C-x C-x:                               Setting Mark.
-* C-x C-x (Calendar mode):               Mark and Region.
-* C-x d:                                 Dired Enter.
-* C-x DEL <1>:                           Sentences.
-* C-x DEL <2>:                           Kill Errors.
-* C-x DEL:                               Killing.
-* C-x e:                                 Basic Kbd Macro.
-* C-x ESC ESC:                           Repetition.
-* C-x f:                                 Fill Commands.
-* C-x h:                                 Marking Objects.
-* C-x k:                                 Kill Buffer.
-* C-x l:                                 Pages.
-* C-x m:                                 Sending Mail.
-* C-x n n:                               Narrowing.
-* C-x n w:                               Narrowing.
-* C-x o:                                 Other Window.
-* C-x q:                                 Kbd Macro Query.
-* C-x r +:                               RegNumbers.
-* C-x r b:                               Bookmarks.
-* C-x r g:                               RegText.
-* C-x r i:                               RegText.
-* C-x r j:                               RegPos.
-* C-x r l:                               Bookmarks.
-* C-x r m:                               Bookmarks.
-* C-x r n:                               RegNumbers.
-* C-x r r:                               RegRect.
-* C-x r s:                               RegText.
-* C-x r SPC:                             RegPos.
-* C-x r w:                               RegConfig.
-* C-x RET:                               Mule Intro.
-* C-x RET c:                             Specify Coding.
-* C-x RET C-\:                           Select Input Method.
-* C-x RET f:                             Specify Coding.
-* C-x RET k:                             Specify Coding.
-* C-x RET p:                             Specify Coding.
-* C-x RET t:                             Specify Coding.
-* C-x s:                                 Saving.
+                                                              (line  43)
+* C-x ^:                                 Change Window.       (line  36)
+* C-x `:                                 Compilation.         (line  58)
+* C-x a g:                               Defining Abbrevs.    (line  25)
+* C-x a i g:                             Defining Abbrevs.    (line  44)
+* C-x a i l:                             Defining Abbrevs.    (line  44)
+* C-x a l:                               Defining Abbrevs.    (line  38)
+* C-x b:                                 Select Buffer.       (line  16)
+* C-x C-b:                               List Buffers.        (line   9)
+* C-x C-c:                               Exiting.             (line  64)
+* C-x C-d:                               ListDir.             (line  17)
+* C-x C-e:                               Lisp Eval.           (line  50)
+* C-x C-l:                               Case.                (line  46)
+* C-x C-o <1>:                           Killing.             (line  53)
+* C-x C-o:                               Blank Lines.         (line  16)
+* C-x C-p <1>:                           Pages.               (line  34)
+* C-x C-p:                               Marking Objects.     (line  32)
+* C-x C-q:                               Misc Buffer.         (line  15)
+* C-x C-q (version control):             Editing with VC.     (line  33)
+* C-x C-s:                               Saving.              (line  26)
+* C-x C-t:                               Transpose.           (line  30)
+* C-x C-u:                               Case.                (line  46)
+* C-x C-v:                               Visiting.            (line  96)
+* C-x C-w:                               Saving.              (line  73)
+* C-x C-x:                               Setting Mark.        (line  42)
+* C-x C-x (Calendar mode):               Mark and Region.     (line  24)
+* C-x d:                                 Dired Enter.         (line   6)
+* C-x DEL <1>:                           Sentences.           (line  37)
+* C-x DEL <2>:                           Kill Errors.         (line  19)
+* C-x DEL:                               Killing.             (line 100)
+* C-x e:                                 Basic Kbd Macro.     (line   6)
+* C-x ESC ESC:                           Repetition.          (line  27)
+* C-x f:                                 Fill Commands.       (line  53)
+* C-x h:                                 Marking Objects.     (line  32)
+* C-x k:                                 Kill Buffer.         (line  16)
+* C-x l:                                 Pages.               (line  46)
+* C-x m:                                 Sending Mail.        (line  22)
+* C-x n n:                               Narrowing.           (line  28)
+* C-x n w:                               Narrowing.           (line  39)
+* C-x o:                                 Other Window.        (line  20)
+* C-x q:                                 Kbd Macro Query.     (line   6)
+* C-x r +:                               RegNumbers.          (line  14)
+* C-x r b:                               Bookmarks.           (line  30)
+* C-x r g:                               RegText.             (line  21)
+* C-x r i:                               RegText.             (line  21)
+* C-x r j:                               RegPos.              (line  20)
+* C-x r l:                               Bookmarks.           (line  37)
+* C-x r m:                               Bookmarks.           (line  30)
+* C-x r n:                               RegNumbers.          (line  11)
+* C-x r r:                               RegRect.             (line  11)
+* C-x r s:                               RegText.             (line  21)
+* C-x r SPC:                             RegPos.              (line  16)
+* C-x r w:                               RegConfig.           (line   6)
+* C-x RET:                               Mule Intro.          (line  68)
+* C-x RET c:                             Specify Coding.      (line  34)
+* C-x RET C-\:                           Select Input Method. (line  20)
+* C-x RET f:                             Specify Coding.      (line  27)
+* C-x RET k:                             Specify Coding.      (line  73)
+* C-x RET p:                             Specify Coding.      (line  91)
+* C-x RET t:                             Specify Coding.      (line  62)
+* C-x s:                                 Saving.              (line  39)
 * C-x TAB:                               Indentation Commands.
-* C-x u:                                 Undo.
-* C-x v =:                               Old Versions.
-* C-x v a:                               Change Logs and VC.
-* C-x v c:                               Editing with VC.
-* C-x v d:                               VC Status.
-* C-x v h:                               Version Headers.
-* C-x v i:                               Editing with VC.
-* C-x v l:                               VC Status.
-* C-x v r:                               Making Snapshots.
-* C-x v s:                               Making Snapshots.
-* C-x v u:                               Editing with VC.
-* C-x v ~:                               Old Versions.
-* C-x }:                                 Change Window.
-* C-y:                                   Kill Ring.
-* C-y (isearch-mode):                    Incremental Search.
-* C-z:                                   Exiting.
-* control key:                           Intro to Keystrokes.
-* d (Calendar mode):                     Diary Commands.
-* DEL <1>:                               Program Modes.
-* DEL <2>:                               Major Modes.
-* DEL <3>:                               Kill Errors.
-* DEL:                                   Killing.
-* DEL (isearch-mode):                    Incremental Search.
-* DEL (query-replace):                   Query Replace.
-* DOWN:                                  Moving Point.
-* END:                                   Moving Point.
-* ESC <1>:                               Meta Key.
-* ESC:                                   Key Sequences.
-* ESC (query-replace):                   Query Replace.
-* F1:                                    Help.
-* g CHAR (Calendar mode):                From Other Calendar.
-* g d (Calendar mode):                   Specified Dates.
-* g m l (Calendar mode):                 Mayan Calendar.
-* h (Calendar mode):                     Holidays.
-* Help:                                  Help.
-* HOME:                                  Moving Point.
+                                                              (line  33)
+* C-x u:                                 Undo.                (line  20)
+* C-x v =:                               Old Versions.        (line  22)
+* C-x v a:                               Change Logs and VC.  (line  11)
+* C-x v c:                               Editing with VC.     (line  76)
+* C-x v d:                               VC Status.           (line  11)
+* C-x v h:                               Version Headers.     (line  11)
+* C-x v i:                               Editing with VC.     (line  92)
+* C-x v l:                               VC Status.           (line   6)
+* C-x v r:                               Making Snapshots.    (line  14)
+* C-x v s:                               Making Snapshots.    (line   9)
+* C-x v u:                               Editing with VC.     (line  66)
+* C-x v ~:                               Old Versions.        (line  17)
+* C-x }:                                 Change Window.       (line  36)
+* C-y:                                   Kill Ring.           (line   6)
+* C-y (isearch-mode):                    Incremental Search.  (line 130)
+* C-z:                                   Exiting.             (line  39)
+* control key:                           Intro to Keystrokes. (line  16)
+* d (Calendar mode):                     Diary Commands.      (line  35)
+* DEL <1>:                               Program Modes.       (line  50)
+* DEL <2>:                               Major Modes.         (line   6)
+* DEL <3>:                               Kill Errors.         (line  15)
+* DEL:                                   Killing.             (line   6)
+* DEL (isearch-mode):                    Incremental Search.  (line 130)
+* DEL (query-replace):                   Query Replace.       (line  27)
+* DOWN:                                  Moving Point.        (line   6)
+* END:                                   Moving Point.        (line  15)
+* ESC <1>:                               Meta Key.            (line   6)
+* ESC:                                   Key Sequences.       (line  29)
+* ESC (query-replace):                   Query Replace.       (line  27)
+* F1:                                    Help.                (line   6)
+* g CHAR (Calendar mode):                From Other Calendar. (line  10)
+* g d (Calendar mode):                   Specified Dates.     (line  18)
+* g m l (Calendar mode):                 Mayan Calendar.      (line  42)
+* h (Calendar mode):                     Holidays.            (line  33)
+* Help:                                  Help.                (line   6)
+* HOME:                                  Moving Point.        (line  15)
 * hyper key <1>:                         Super and Hyper Keys.
+                                                              (line   6)
 * hyper key <2>:                         Representing Keystrokes.
-* hyper key:                             Intro to Keystrokes.
+                                                              (line   6)
+* hyper key:                             Intro to Keystrokes. (line  16)
 * i a (Calendar mode):                   Special Diary Entries.
+                                                              (line  29)
 * i b (Calendar mode):                   Special Diary Entries.
+                                                              (line  56)
 * i c (Calendar mode):                   Special Diary Entries.
-* i d (Calendar mode):                   Adding to Diary.
-* i m (Calendar mode):                   Adding to Diary.
-* i w (Calendar mode):                   Adding to Diary.
-* i y (Calendar mode):                   Adding to Diary.
-* LEFT:                                  Moving Point.
-* LFD <1>:                               Basic Indent.
-* LFD <2>:                               Major Modes.
+                                                              (line  61)
+* i d (Calendar mode):                   Adding to Diary.     (line  24)
+* i m (Calendar mode):                   Adding to Diary.     (line  29)
+* i w (Calendar mode):                   Adding to Diary.     (line  29)
+* i y (Calendar mode):                   Adding to Diary.     (line  29)
+* LEFT:                                  Moving Point.        (line   6)
+* LFD <1>:                               Basic Indent.        (line  26)
+* LFD <2>:                               Major Modes.         (line   6)
 * LFD:                                   String Key Sequences.
-* LFD (TeX mode):                        TeX Editing.
-* m (Calendar mode):                     Diary Commands.
-* M (Calendar mode):                     Lunar Phases.
-* M-!:                                   Single Shell.
-* M-$:                                   Spelling.
-* M-%:                                   Query Replace.
-* M-':                                   Expanding Abbrevs.
-* M-(:                                   Balanced Editing.
-* M-):                                   Balanced Editing.
-* M-,:                                   Tags Search.
-* M--:                                   Arguments.
-* M-- M-c:                               Fixing Case.
-* M-- M-l:                               Fixing Case.
-* M-- M-u:                               Fixing Case.
-* M-.:                                   Find Tag.
-* M-/:                                   Dynamic Abbrevs.
-* M-1:                                   Arguments.
-* M-::                                   Lisp Eval.
-* M-;:                                   Comments.
-* M-<:                                   Moving Point.
+                                                              (line  15)
+* LFD (TeX mode):                        TeX Editing.         (line  55)
+* m (Calendar mode):                     Diary Commands.      (line  47)
+* M (Calendar mode):                     Lunar Phases.        (line  19)
+* M-!:                                   Single Shell.        (line   6)
+* M-$:                                   Spelling.            (line  18)
+* M-%:                                   Query Replace.       (line  13)
+* M-':                                   Expanding Abbrevs.   (line  32)
+* M-(:                                   Balanced Editing.    (line  13)
+* M-):                                   Balanced Editing.    (line  13)
+* M-,:                                   Tags Search.         (line  28)
+* M--:                                   Arguments.           (line  16)
+* M-- M-c:                               Fixing Case.         (line  16)
+* M-- M-l:                               Fixing Case.         (line  16)
+* M-- M-u:                               Fixing Case.         (line  16)
+* M-.:                                   Find Tag.            (line  19)
+* M-/:                                   Dynamic Abbrevs.     (line  12)
+* M-1:                                   Arguments.           (line  16)
+* M-::                                   Lisp Eval.           (line  38)
+* M-;:                                   Comments.            (line   6)
+* M-<:                                   Moving Point.        (line  15)
 * M-< (Calendar mode):                   Move to Beginning or End.
-* M-=:                                   Position Info.
-* M-= (Calendar mode):                   Mark and Region.
-* M->:                                   Moving Point.
+                                                              (line  21)
+* M-=:                                   Position Info.       (line  31)
+* M-= (Calendar mode):                   Mark and Region.     (line  31)
+* M->:                                   Moving Point.        (line  15)
 * M-> (Calendar mode):                   Move to Beginning or End.
-* M-?:                                   Nroff Mode.
-* M-@ <1>:                               Words.
-* M-@:                                   Marking Objects.
+                                                              (line  24)
+* M-?:                                   Nroff Mode.          (line  14)
+* M-@ <1>:                               Words.               (line  61)
+* M-@:                                   Marking Objects.     (line  28)
 * M-\ <1>:                               Indentation Commands.
-* M-\:                                   Killing.
+                                                              (line  24)
+* M-\:                                   Killing.             (line  53)
 * M-^ <1>:                               Indentation Commands.
-* M-^:                                   Killing.
-* M-a:                                   Sentences.
+                                                              (line  24)
+* M-^:                                   Killing.             (line  53)
+* M-a:                                   Sentences.           (line  22)
 * M-a (Calendar mode):                   Move to Beginning or End.
-* M-b:                                   Words.
-* M-c:                                   Case.
-* M-C-r:                                 Regexp Search.
-* M-C-s:                                 Regexp Search.
-* M-d <1>:                               Words.
-* M-d:                                   Killing.
-* M-DEL <1>:                             Words.
-* M-DEL <2>:                             Kill Errors.
-* M-DEL:                                 Killing.
-* M-e:                                   Sentences.
+                                                              (line  15)
+* M-b:                                   Words.               (line  32)
+* M-c:                                   Case.                (line  24)
+* M-C-r:                                 Regexp Search.       (line  28)
+* M-C-s:                                 Regexp Search.       (line  28)
+* M-d <1>:                               Words.               (line  41)
+* M-d:                                   Killing.             (line 100)
+* M-DEL <1>:                             Words.               (line  50)
+* M-DEL <2>:                             Kill Errors.         (line  19)
+* M-DEL:                                 Killing.             (line 100)
+* M-e:                                   Sentences.           (line  22)
 * M-e (Calendar mode):                   Move to Beginning or End.
-* M-f:                                   Words.
-* M-g:                                   Fill Commands.
-* M-h <1>:                               Paragraphs.
-* M-h:                                   Marking Objects.
-* M-i:                                   Tab Stops.
-* M-k <1>:                               Sentences.
-* M-k:                                   Killing.
-* M-l:                                   Case.
-* M-LFD:                                 Comments.
-* M-LFD (Fortran mode):                  ForIndent Commands.
+                                                              (line  18)
+* M-f:                                   Words.               (line  32)
+* M-g:                                   Fill Commands.       (line  27)
+* M-h <1>:                               Paragraphs.          (line  31)
+* M-h:                                   Marking Objects.     (line  32)
+* M-i:                                   Tab Stops.           (line   6)
+* M-k <1>:                               Sentences.           (line  37)
+* M-k:                                   Killing.             (line 100)
+* M-l:                                   Case.                (line  24)
+* M-LFD:                                 Comments.            (line  72)
+* M-LFD (Fortran mode):                  ForIndent Commands.  (line  25)
 * M-m:                                   Indentation Commands.
-* M-n <1>:                               Nroff Mode.
-* M-n:                                   Repetition.
-* M-n (isearch-mode):                    Incremental Search.
-* M-n (minibuffer history):              Minibuffer History.
-* M-n (Shell mode):                      Shell Mode.
-* M-p <1>:                               Nroff Mode.
-* M-p:                                   Repetition.
-* M-p (isearch-mode):                    Incremental Search.
-* M-p (minibuffer history):              Minibuffer History.
-* M-p (Shell mode):                      Shell Mode.
-* M-q:                                   Fill Commands.
-* M-r:                                   Moving Point.
-* M-r (minibuffer history):              Minibuffer History.
-* M-s:                                   Fill Commands.
-* M-s (minibuffer history):              Minibuffer History.
-* M-SPC:                                 Killing.
-* M-t <1>:                               Words.
-* M-t:                                   Transpose.
-* M-TAB <1>:                             Tabs in Picture.
-* M-TAB:                                 Lisp Completion.
-* M-TAB (customization buffer):          Changing an Option.
-* M-TAB (isearch-mode):                  Incremental Search.
-* M-u:                                   Case.
-* M-v <1>:                               Scrolling.
-* M-v:                                   Moving Point.
-* M-v (Calendar mode):                   Scroll Calendar.
-* M-w:                                   Kill Ring.
-* M-x:                                   M-x.
-* M-y:                                   Earlier Kills.
-* M-z:                                   Killing.
-* M-{:                                   Paragraphs.
+                                                              (line   9)
+* M-n <1>:                               Nroff Mode.          (line  14)
+* M-n:                                   Repetition.          (line  45)
+* M-n (isearch-mode):                    Incremental Search.  (line 130)
+* M-n (minibuffer history):              Minibuffer History.  (line  30)
+* M-n (Shell mode):                      Shell Mode.          (line  12)
+* M-p <1>:                               Nroff Mode.          (line  14)
+* M-p:                                   Repetition.          (line  45)
+* M-p (isearch-mode):                    Incremental Search.  (line 130)
+* M-p (minibuffer history):              Minibuffer History.  (line  30)
+* M-p (Shell mode):                      Shell Mode.          (line  12)
+* M-q:                                   Fill Commands.       (line  21)
+* M-r:                                   Moving Point.        (line  15)
+* M-r (minibuffer history):              Minibuffer History.  (line  48)
+* M-s:                                   Fill Commands.       (line  44)
+* M-s (minibuffer history):              Minibuffer History.  (line  48)
+* M-SPC:                                 Killing.             (line  53)
+* M-t <1>:                               Words.               (line  55)
+* M-t:                                   Transpose.           (line  30)
+* M-TAB <1>:                             Tabs in Picture.     (line   6)
+* M-TAB:                                 Lisp Completion.     (line   9)
+* M-TAB (customization buffer):          Changing an Option.  (line  52)
+* M-TAB (isearch-mode):                  Incremental Search.  (line 130)
+* M-u:                                   Case.                (line  24)
+* M-v <1>:                               Scrolling.           (line  42)
+* M-v:                                   Moving Point.        (line  15)
+* M-v (Calendar mode):                   Scroll Calendar.     (line  35)
+* M-w:                                   Kill Ring.           (line  30)
+* M-x:                                   M-x.                 (line  18)
+* M-y:                                   Earlier Kills.       (line   6)
+* M-z:                                   Killing.             (line 129)
+* M-{:                                   Paragraphs.          (line   6)
 * M-{ (Calendar mode):                   Calendar Unit Motion.
-* M-|:                                   Single Shell.
-* M-}:                                   Paragraphs.
+                                                              (line  43)
+* M-|:                                   Single Shell.        (line  15)
+* M-}:                                   Paragraphs.          (line   6)
 * M-} (Calendar mode):                   Calendar Unit Motion.
-* M-~:                                   Saving.
-* META:                                  Meta Key.
-* meta key:                              Intro to Keystrokes.
-* next:                                  Scrolling.
-* o (Calendar mode):                     Specified Dates.
-* p (Calendar mode):                     To Other Calendar.
-* p d (Calendar mode):                   General Calendar.
-* pgdn:                                  Scrolling.
-* PGDN:                                  Moving Point.
-* pgup:                                  Scrolling.
-* PGUP:                                  Moving Point.
-* prior:                                 Scrolling.
-* q (Calendar mode):                     General Calendar.
-* RET:                                   Inserting Text.
-* RET (isearch-mode):                    Incremental Search.
-* RET (Shell mode):                      Shell Mode.
-* RIGHT:                                 Moving Point.
-* s (Calendar mode):                     Diary Commands.
-* S (Calendar mode):                     Sunrise/Sunset.
-* S-TAB (customization buffer):          Changing an Option.
-* shift key:                             Intro to Keystrokes.
-* SPC:                                   Completion Commands.
-* SPC (Calendar mode):                   General Calendar.
-* SPC (query-replace):                   Query Replace.
+                                                              (line  43)
+* M-~:                                   Saving.              (line  45)
+* META:                                  Meta Key.            (line   6)
+* meta key:                              Intro to Keystrokes. (line  16)
+* next:                                  Scrolling.           (line  42)
+* o (Calendar mode):                     Specified Dates.     (line  23)
+* p (Calendar mode):                     To Other Calendar.   (line  11)
+* p d (Calendar mode):                   General Calendar.    (line  21)
+* pgdn:                                  Scrolling.           (line  42)
+* PGDN:                                  Moving Point.        (line  15)
+* pgup:                                  Scrolling.           (line  42)
+* PGUP:                                  Moving Point.        (line  15)
+* prior:                                 Scrolling.           (line  42)
+* q (Calendar mode):                     General Calendar.    (line  41)
+* RET:                                   Inserting Text.      (line  19)
+* RET (isearch-mode):                    Incremental Search.  (line 130)
+* RET (Shell mode):                      Shell Mode.          (line  12)
+* RIGHT:                                 Moving Point.        (line   6)
+* s (Calendar mode):                     Diary Commands.      (line  55)
+* S (Calendar mode):                     Sunrise/Sunset.      (line  22)
+* S-TAB (customization buffer):          Changing an Option.  (line  90)
+* shift key:                             Intro to Keystrokes. (line  16)
+* SPC:                                   Completion Commands. (line  34)
+* SPC (Calendar mode):                   General Calendar.    (line  29)
+* SPC (query-replace):                   Query Replace.       (line  27)
 * super key <1>:                         Super and Hyper Keys.
+                                                              (line   6)
 * super key <2>:                         Representing Keystrokes.
-* super key:                             Intro to Keystrokes.
-* t (Calendar mode):                     LaTeX Calendar.
-* TAB <1>:                               Basic Indent.
-* TAB <2>:                               Text Mode.
-* TAB <3>:                               Indentation.
-* TAB <4>:                               Major Modes.
-* TAB <5>:                               Completion Example.
+                                                              (line   6)
+* super key:                             Intro to Keystrokes. (line  16)
+* t (Calendar mode):                     LaTeX Calendar.      (line  10)
+* TAB <1>:                               Basic Indent.        (line  12)
+* TAB <2>:                               Text Mode.           (line   6)
+* TAB <3>:                               Indentation.         (line  39)
+* TAB <4>:                               Major Modes.         (line   6)
+* TAB <5>:                               Completion Example.  (line   6)
 * TAB:                                   String Key Sequences.
-* TAB (customization buffer):            Changing an Option.
-* TAB (Shell mode):                      Shell Mode.
-* u (Calendar mode) <1>:                 Diary Commands.
-* u (Calendar mode):                     Holidays.
-* UP:                                    Moving Point.
-* x (Calendar mode):                     Holidays.
+                                                              (line  15)
+* TAB (customization buffer):            Changing an Option.  (line  90)
+* TAB (Shell mode):                      Shell Mode.          (line  12)
+* u (Calendar mode) <1>:                 Diary Commands.      (line  47)
+* u (Calendar mode):                     Holidays.            (line  40)
+* UP:                                    Moving Point.        (line   6)
+* x (Calendar mode):                     Holidays.            (line  40)
 
 \1f
 File: xemacs.info,  Node: Command Index,  Next: Variable Index,  Prev: Key Index,  Up: Top
@@ -1769,763 +1996,869 @@ File: xemacs.info,  Node: Command Index,  Next: Variable Index,  Prev: Key Index
 Command and Function Index
 **************************
 
+\0\b[index\0\b]
 * Menu:
 
-* abbrev-mode <1>:                       Minor Modes.
-* abbrev-mode:                           Abbrevs.
-* abbrev-prefix-mark:                    Expanding Abbrevs.
-* abort-recursive-edit <1>:              Quitting.
-* abort-recursive-edit:                  Recursive Edit.
-* add-change-log-entry:                  Change Log.
-* add-global-abbrev:                     Defining Abbrevs.
-* add-menu:                              Menu Customization.
-* add-menu-item:                         Menu Customization.
-* add-mode-abbrev:                       Defining Abbrevs.
-* add-name-to-file:                      Misc File Ops.
-* american-calendar:                     Date Formats.
-* append-next-kill:                      Appending Kills.
-* append-to-buffer:                      Accumulating Text.
-* append-to-file <1>:                    Misc File Ops.
-* append-to-file:                        Accumulating Text.
-* apropos:                               Apropos.
-* apropos-documentation:                 Apropos.
-* apropos-value:                         Apropos.
-* ask-user-about-lock:                   Interlocking.
-* auto-fill-mode <1>:                    Minor Modes.
-* auto-fill-mode:                        Auto Fill.
-* auto-save-mode:                        Auto Save Control.
+* abbrev-mode <1>:                       Minor Modes.         (line  31)
+* abbrev-mode:                           Abbrevs.             (line  12)
+* abbrev-prefix-mark:                    Expanding Abbrevs.   (line  32)
+* abort-recursive-edit <1>:              Quitting.            (line  44)
+* abort-recursive-edit:                  Recursive Edit.      (line  18)
+* add-change-log-entry:                  Change Log.          (line   6)
+* add-global-abbrev:                     Defining Abbrevs.    (line  25)
+* add-hook:                              Mode Hooks.          (line   6)
+* add-menu:                              Menu Customization.  (line  30)
+* add-menu-item:                         Menu Customization.  (line  53)
+* add-mode-abbrev:                       Defining Abbrevs.    (line  38)
+* add-name-to-file:                      Misc File Ops.       (line   9)
+* american-calendar:                     Date Formats.        (line  39)
+* append-next-kill:                      Appending Kills.     (line  33)
+* append-to-buffer:                      Accumulating Text.   (line   6)
+* append-to-file <1>:                    Misc File Ops.       (line  13)
+* append-to-file:                        Accumulating Text.   (line   6)
+* apropos:                               Apropos.             (line  44)
+* apropos-documentation:                 Apropos.             (line  49)
+* apropos-value:                         Apropos.             (line  53)
+* ask-user-about-lock:                   Interlocking.        (line  18)
+* auto-fill-mode <1>:                    Minor Modes.         (line  22)
+* auto-fill-mode:                        Auto Fill.           (line  17)
+* auto-save-mode:                        Auto Save Control.   (line   6)
+* awk-mode:                              CC Mode.             (line   6)
 * back-to-indentation:                   Indentation Commands.
-* backward-char:                         Moving Point.
-* backward-delete-char-untabify:         Program Modes.
-* backward-kill-sentence <1>:            Sentences.
-* backward-kill-sentence <2>:            Kill Errors.
-* backward-kill-sentence:                Killing.
-* backward-kill-word <1>:                Words.
-* backward-kill-word <2>:                Kill Errors.
-* backward-kill-word:                    Killing.
-* backward-list:                         Lists.
-* backward-or-forward-delete-char:       Inserting Text.
-* backward-page:                         Pages.
-* backward-paragraph:                    Paragraphs.
-* backward-sentence:                     Sentences.
-* backward-sexp:                         Lists.
-* backward-text-line:                    Nroff Mode.
-* backward-up-list:                      Lists.
-* backward-word:                         Words.
-* batch-byte-compile:                    Compiling Libraries.
-* beginning-of-buffer:                   Moving Point.
-* beginning-of-defun:                    Defuns.
-* beginning-of-fortran-subprogram:       Fortran Motion.
-* beginning-of-line:                     Moving Point.
-* bookmark-delete:                       Bookmarks.
-* bookmark-insert:                       Bookmarks.
-* bookmark-insert-location:              Bookmarks.
-* bookmark-jump:                         Bookmarks.
-* bookmark-load:                         Bookmarks.
-* bookmark-save:                         Bookmarks.
-* bookmark-set:                          Bookmarks.
-* bookmark-write:                        Bookmarks.
-* buffer-menu:                           Several Buffers.
-* byte-compile-and-load-file:            Compiling Libraries.
-* byte-compile-buffer:                   Compiling Libraries.
-* byte-compile-file:                     Compiling Libraries.
-* byte-recompile-directory:              Compiling Libraries.
-* c-indent-line:                         Basic Indent.
-* calendar:                              Calendar/Diary.
+                                                              (line   9)
+* backward-char:                         Moving Point.        (line  15)
+* backward-delete-char-untabify:         Program Modes.       (line  50)
+* backward-kill-sentence <1>:            Sentences.           (line  37)
+* backward-kill-sentence <2>:            Kill Errors.         (line  19)
+* backward-kill-sentence:                Killing.             (line 100)
+* backward-kill-word <1>:                Words.               (line  50)
+* backward-kill-word <2>:                Kill Errors.         (line  19)
+* backward-kill-word:                    Killing.             (line 100)
+* backward-list:                         Lists.               (line  90)
+* backward-or-forward-delete-char:       Inserting Text.      (line  55)
+* backward-page:                         Pages.               (line  28)
+* backward-paragraph:                    Paragraphs.          (line   6)
+* backward-sentence:                     Sentences.           (line  22)
+* backward-sexp:                         Lists.               (line  67)
+* backward-text-line:                    Nroff Mode.          (line  14)
+* backward-up-list:                      Lists.               (line  96)
+* backward-word:                         Words.               (line  32)
+* batch-byte-compile:                    Compiling Libraries. (line  52)
+* beginning-of-buffer:                   Moving Point.        (line  15)
+* beginning-of-defun:                    Defuns.              (line  23)
+* beginning-of-fortran-subprogram:       Fortran Motion.      (line  11)
+* beginning-of-line:                     Moving Point.        (line  15)
+* bookmark-delete:                       Bookmarks.           (line  74)
+* bookmark-insert:                       Bookmarks.           (line  81)
+* bookmark-insert-location:              Bookmarks.           (line  77)
+* bookmark-jump:                         Bookmarks.           (line  22)
+* bookmark-load:                         Bookmarks.           (line  65)
+* bookmark-save:                         Bookmarks.           (line  28)
+* bookmark-set:                          Bookmarks.           (line  19)
+* bookmark-write:                        Bookmarks.           (line  71)
+* buffer-menu:                           Several Buffers.     (line  14)
+* byte-compile-and-load-file:            Compiling Libraries. (line  34)
+* byte-compile-buffer:                   Compiling Libraries. (line  34)
+* byte-compile-file:                     Compiling Libraries. (line  34)
+* byte-recompile-directory:              Compiling Libraries. (line  44)
+* c++-mode:                              CC Mode.             (line   6)
+* c-indent-line:                         Basic Indent.        (line  12)
+* c-mode:                                CC Mode.             (line   6)
+* calendar:                              Calendar/Diary.      (line   6)
 * calendar-backward-day:                 Calendar Unit Motion.
+                                                              (line  34)
 * calendar-backward-month:               Calendar Unit Motion.
+                                                              (line  43)
 * calendar-backward-week:                Calendar Unit Motion.
+                                                              (line  34)
 * calendar-beginning-of-month:           Move to Beginning or End.
+                                                              (line  15)
 * calendar-beginning-of-week:            Move to Beginning or End.
+                                                              (line  11)
 * calendar-beginning-of-year:            Move to Beginning or End.
-* calendar-count-days-region:            Mark and Region.
-* calendar-cursor-holidays:              Holidays.
+                                                              (line  21)
+* calendar-count-days-region:            Mark and Region.     (line  31)
+* calendar-cursor-holidays:              Holidays.            (line  33)
 * calendar-end-of-month:                 Move to Beginning or End.
+                                                              (line  18)
 * calendar-end-of-week:                  Move to Beginning or End.
+                                                              (line  12)
 * calendar-end-of-year:                  Move to Beginning or End.
-* calendar-exchange-point-and-mark:      Mark and Region.
+                                                              (line  24)
+* calendar-exchange-point-and-mark:      Mark and Region.     (line  24)
 * calendar-forward-day:                  Calendar Unit Motion.
+                                                              (line  34)
 * calendar-forward-month:                Calendar Unit Motion.
+                                                              (line  43)
 * calendar-forward-week:                 Calendar Unit Motion.
+                                                              (line  34)
 * calendar-forward-year:                 Calendar Unit Motion.
-* calendar-goto-astro-day-number:        From Other Calendar.
-* calendar-goto-chinese-date:            From Other Calendar.
-* calendar-goto-coptic-date:             From Other Calendar.
-* calendar-goto-date:                    Specified Dates.
-* calendar-goto-ethiopic-date:           From Other Calendar.
-* calendar-goto-french-date:             From Other Calendar.
-* calendar-goto-hebrew-date:             From Other Calendar.
-* calendar-goto-islamic-date:            From Other Calendar.
-* calendar-goto-iso-date:                From Other Calendar.
-* calendar-goto-julian-date:             From Other Calendar.
-* calendar-goto-mayan-long-count-date:   Mayan Calendar.
-* calendar-goto-persian-date:            From Other Calendar.
-* calendar-goto-today:                   Specified Dates.
+                                                              (line  43)
+* calendar-goto-astro-day-number:        From Other Calendar. (line  10)
+* calendar-goto-chinese-date:            From Other Calendar. (line  10)
+* calendar-goto-coptic-date:             From Other Calendar. (line  10)
+* calendar-goto-date:                    Specified Dates.     (line  18)
+* calendar-goto-ethiopic-date:           From Other Calendar. (line  10)
+* calendar-goto-french-date:             From Other Calendar. (line  10)
+* calendar-goto-hebrew-date:             From Other Calendar. (line  10)
+* calendar-goto-islamic-date:            From Other Calendar. (line  10)
+* calendar-goto-iso-date:                From Other Calendar. (line  10)
+* calendar-goto-julian-date:             From Other Calendar. (line  10)
+* calendar-goto-mayan-long-count-date:   Mayan Calendar.      (line  42)
+* calendar-goto-persian-date:            From Other Calendar. (line  10)
+* calendar-goto-today:                   Specified Dates.     (line  26)
 * calendar-mark-today:                   Calendar Customizing.
-* calendar-next-calendar-round-date:     Mayan Calendar.
-* calendar-next-haab-date:               Mayan Calendar.
-* calendar-next-tzolkin-date:            Mayan Calendar.
-* calendar-other-month:                  Specified Dates.
-* calendar-phases-of-moon:               Lunar Phases.
-* calendar-previous-haab-date:           Mayan Calendar.
-* calendar-previous-tzolkin-date:        Mayan Calendar.
-* calendar-print-astro-day-number:       To Other Calendar.
-* calendar-print-chinese-date:           To Other Calendar.
-* calendar-print-coptic-date:            To Other Calendar.
-* calendar-print-day-of-year:            General Calendar.
-* calendar-print-ethiopic-date:          To Other Calendar.
-* calendar-print-french-date:            To Other Calendar.
-* calendar-print-hebrew-date:            To Other Calendar.
-* calendar-print-islamic-date:           To Other Calendar.
-* calendar-print-iso-date:               To Other Calendar.
-* calendar-print-julian-date:            To Other Calendar.
-* calendar-print-mayan-date:             To Other Calendar.
-* calendar-print-persian-date:           To Other Calendar.
-* calendar-set-mark:                     Mark and Region.
+                                                              (line  61)
+* calendar-next-calendar-round-date:     Mayan Calendar.      (line  64)
+* calendar-next-haab-date:               Mayan Calendar.      (line  56)
+* calendar-next-tzolkin-date:            Mayan Calendar.      (line  48)
+* calendar-other-month:                  Specified Dates.     (line  23)
+* calendar-phases-of-moon:               Lunar Phases.        (line  19)
+* calendar-previous-haab-date:           Mayan Calendar.      (line  56)
+* calendar-previous-tzolkin-date:        Mayan Calendar.      (line  48)
+* calendar-print-astro-day-number:       To Other Calendar.   (line  19)
+* calendar-print-chinese-date:           To Other Calendar.   (line  35)
+* calendar-print-coptic-date:            To Other Calendar.   (line  39)
+* calendar-print-day-of-year:            General Calendar.    (line  21)
+* calendar-print-ethiopic-date:          To Other Calendar.   (line  43)
+* calendar-print-french-date:            To Other Calendar.   (line  31)
+* calendar-print-hebrew-date:            To Other Calendar.   (line  23)
+* calendar-print-islamic-date:           To Other Calendar.   (line  27)
+* calendar-print-iso-date:               To Other Calendar.   (line  11)
+* calendar-print-julian-date:            To Other Calendar.   (line  15)
+* calendar-print-mayan-date:             To Other Calendar.   (line  51)
+* calendar-print-persian-date:           To Other Calendar.   (line  47)
+* calendar-set-mark:                     Mark and Region.     (line  24)
 * calendar-star-date:                    Calendar Customizing.
-* calendar-sunrise-sunset:               Sunrise/Sunset.
-* calendar-unmark <1>:                   Diary Commands.
-* calendar-unmark:                       Holidays.
-* call-last-kbd-macro:                   Basic Kbd Macro.
-* cancel-debug-on-entry:                 Lisp Debug.
-* capitalize-word <1>:                   Case.
-* capitalize-word:                       Fixing Case.
-* center-line:                           Fill Commands.
-* choose-completion:                     Completion Commands.
-* clear-rectangle:                       Rectangles.
-* comint-delchar-or-maybe-eof:           Shell Mode.
-* comint-dynamic-complete:               Shell Mode.
-* comint-next-input:                     Shell Mode.
-* comint-previous-input:                 Shell Mode.
-* command-apropos:                       Apropos.
-* compare-windows <1>:                   Other Window.
-* compare-windows:                       Comparing Files.
-* compile:                               Compilation.
-* compile-defun:                         Defuns.
-* convert-mocklisp-buffer:               Mocklisp.
-* conx:                                  CONX.
-* conx-buffer:                           CONX.
-* conx-init:                             CONX.
-* conx-load:                             CONX.
-* conx-region:                           CONX.
-* conx-save:                             CONX.
-* copy-file:                             Misc File Ops.
-* copy-last-shell-input:                 Shell Mode.
-* copy-rectangle-to-register:            RegRect.
-* copy-region-as-kill:                   Kill Ring.
-* copy-to-buffer:                        Accumulating Text.
-* copy-to-register:                      RegText.
-* count-lines-page:                      Pages.
-* count-lines-region:                    Position Info.
+                                                              (line  56)
+* calendar-sunrise-sunset:               Sunrise/Sunset.      (line  22)
+* calendar-unmark <1>:                   Diary Commands.      (line  47)
+* calendar-unmark:                       Holidays.            (line  40)
+* call-last-kbd-macro:                   Basic Kbd Macro.     (line   6)
+* cancel-debug-on-entry:                 Lisp Debug.          (line  18)
+* capitalize-word <1>:                   Case.                (line  24)
+* capitalize-word:                       Fixing Case.         (line  16)
+* center-line:                           Fill Commands.       (line  44)
+* choose-completion:                     Completion Commands. (line  60)
+* clear-rectangle:                       Rectangles.          (line  68)
+* comint-delchar-or-maybe-eof:           Shell Mode.          (line  12)
+* comint-dynamic-complete:               Shell Mode.          (line  12)
+* comint-next-input:                     Shell Mode.          (line  12)
+* comint-previous-input:                 Shell Mode.          (line  12)
+* command-apropos:                       Apropos.             (line   6)
+* compare-windows <1>:                   Other Window.        (line  45)
+* compare-windows:                       Comparing Files.     (line  22)
+* compile:                               Compilation.         (line  29)
+* compile-defun:                         Defuns.              (line  34)
+* convert-mocklisp-buffer:               Mocklisp.            (line   6)
+* conx:                                  CONX.                (line  28)
+* conx-buffer:                           CONX.                (line  28)
+* conx-init:                             CONX.                (line  28)
+* conx-load:                             CONX.                (line  28)
+* conx-region:                           CONX.                (line  28)
+* conx-save:                             CONX.                (line  28)
+* copy-file:                             Misc File Ops.       (line  16)
+* copy-last-shell-input:                 Shell Mode.          (line  12)
+* copy-rectangle-to-register:            RegRect.             (line  11)
+* copy-region-as-kill:                   Kill Ring.           (line  30)
+* copy-to-buffer:                        Accumulating Text.   (line   6)
+* copy-to-register:                      RegText.             (line  21)
+* count-lines-page:                      Pages.               (line  46)
+* count-lines-region:                    Position Info.       (line  31)
 * count-matches:                         Other Repeating Search.
-* count-text-lines:                      Nroff Mode.
-* customize:                             Easy Customization.
+                                                              (line   9)
+* count-text-lines:                      Nroff Mode.          (line  14)
+* customize:                             Easy Customization.  (line   6)
 * customize-apropos:                     Specific Customization.
+                                                              (line  47)
 * customize-browse:                      Customization Groups.
+                                                              (line  51)
 * customize-customized:                  Specific Customization.
+                                                              (line  54)
 * customize-face:                        Specific Customization.
+                                                              (line  38)
 * customize-group:                       Specific Customization.
+                                                              (line  41)
 * customize-option:                      Specific Customization.
+                                                              (line  31)
 * customize-saved:                       Specific Customization.
-* dabbrev-expand:                        Dynamic Abbrevs.
-* debug:                                 Lisp Debug.
-* debug-on-entry:                        Lisp Debug.
-* default-value:                         Locals.
-* define-abbrevs:                        Saving Abbrevs.
+                                                              (line  54)
+* dabbrev-expand:                        Dynamic Abbrevs.     (line  12)
+* debug:                                 Lisp Debug.          (line  18)
+* debug-on-entry:                        Lisp Debug.          (line  18)
+* default-value:                         Locals.              (line  68)
+* define-abbrevs:                        Saving Abbrevs.      (line  42)
 * define-key <1>:                        Programmatic Rebinding.
+                                                              (line   9)
 * define-key:                            Interactive Rebinding.
-* delete-backward-char <1>:              Kill Errors.
-* delete-backward-char:                  Killing.
-* delete-blank-lines <1>:                Killing.
-* delete-blank-lines:                    Blank Lines.
-* delete-char <1>:                       Basic Picture.
-* delete-char:                           Killing.
-* delete-file:                           Misc File Ops.
+                                                              (line  44)
+* delete-backward-char <1>:              Kill Errors.         (line  15)
+* delete-backward-char:                  Killing.             (line   6)
+* delete-blank-lines <1>:                Killing.             (line  53)
+* delete-blank-lines:                    Blank Lines.         (line  16)
+* delete-char <1>:                       Basic Picture.       (line  41)
+* delete-char:                           Killing.             (line   6)
+* delete-file:                           Misc File Ops.       (line  21)
 * delete-horizontal-space <1>:           Indentation Commands.
-* delete-horizontal-space:               Killing.
+                                                              (line  24)
+* delete-horizontal-space:               Killing.             (line  53)
 * delete-indentation <1>:                Indentation Commands.
-* delete-indentation:                    Killing.
+                                                              (line  24)
+* delete-indentation:                    Killing.             (line  53)
 * delete-matching-lines:                 Other Repeating Search.
-* delete-menu-item:                      Menu Customization.
+                                                              (line   9)
+* delete-menu-item:                      Menu Customization.  (line  90)
 * delete-non-matching-lines:             Other Repeating Search.
-* delete-other-windows:                  Change Window.
-* delete-rectangle:                      Rectangles.
-* delete-window:                         Change Window.
-* describe-bindings:                     Misc Help.
-* describe-calendar-mode:                General Calendar.
-* describe-coding-system:                Coding Systems.
-* describe-copying:                      Misc Help.
-* describe-distribution:                 Misc Help.
-* describe-function <1>:                 Documentation.
-* describe-function:                     Name Help.
-* describe-input-method:                 Select Input Method.
-* describe-key:                          Key Help.
-* describe-key-briefly:                  Key Help.
+                                                              (line   9)
+* delete-other-windows:                  Change Window.       (line  31)
+* delete-rectangle:                      Rectangles.          (line  42)
+* delete-window:                         Change Window.       (line  23)
+* describe-bindings:                     Misc Help.           (line  37)
+* describe-calendar-mode:                General Calendar.    (line  26)
+* describe-coding-system:                Coding Systems.      (line  39)
+* describe-copying:                      Misc Help.           (line  51)
+* describe-distribution:                 Misc Help.           (line  51)
+* describe-function <1>:                 Documentation.       (line   6)
+* describe-function:                     Name Help.           (line   6)
+* describe-input-method:                 Select Input Method. (line  14)
+* describe-key:                          Key Help.            (line  13)
+* describe-key-briefly:                  Key Help.            (line   6)
 * describe-language-environment:         Language Environments.
-* describe-mode:                         Misc Help.
-* describe-no-warranty:                  Misc Help.
-* describe-syntax:                       Syntax Change.
-* describe-variable <1>:                 Examining.
-* describe-variable <2>:                 Documentation.
-* describe-variable:                     Name Help.
-* diary:                                 Diary Commands.
-* diary-anniversary <1>:                 Sexp Diary Entries.
+                                                              (line  36)
+* describe-mode:                         Misc Help.           (line  32)
+* describe-no-warranty:                  Misc Help.           (line  51)
+* describe-syntax:                       Syntax Change.       (line  48)
+* describe-variable <1>:                 Examining.           (line  13)
+* describe-variable <2>:                 Documentation.       (line   6)
+* describe-variable:                     Name Help.           (line  49)
+* diary:                                 Diary Commands.      (line  67)
+* diary-anniversary <1>:                 Sexp Diary Entries.  (line  13)
 * diary-anniversary:                     Special Diary Entries.
-* diary-astro-day-number:                Sexp Diary Entries.
+                                                              (line  35)
+* diary-astro-day-number:                Sexp Diary Entries.  (line  69)
 * diary-block:                           Special Diary Entries.
-* diary-cyclic <1>:                      Sexp Diary Entries.
+                                                              (line  50)
+* diary-cyclic <1>:                      Sexp Diary Entries.  (line  32)
 * diary-cyclic:                          Special Diary Entries.
-* diary-day-of-year:                     Sexp Diary Entries.
+                                                              (line  66)
+* diary-day-of-year:                     Sexp Diary Entries.  (line  69)
 * diary-float:                           Special Diary Entries.
-* diary-french-date:                     Sexp Diary Entries.
-* diary-hebrew-date:                     Sexp Diary Entries.
-* diary-islamic-date:                    Sexp Diary Entries.
-* diary-iso-date:                        Sexp Diary Entries.
-* diary-julian-date:                     Sexp Diary Entries.
-* diary-mail-entries:                    Diary Commands.
-* diary-mayan-date:                      Sexp Diary Entries.
-* diary-omer:                            Sexp Diary Entries.
-* diary-parasha:                         Sexp Diary Entries.
-* diary-phases-of-moon:                  Sexp Diary Entries.
-* diary-rosh-hodesh:                     Sexp Diary Entries.
-* diary-sabbath-candles:                 Sexp Diary Entries.
-* diary-sunrise-sunset:                  Sexp Diary Entries.
-* diary-yahrzeit:                        Sexp Diary Entries.
-* diff:                                  Comparing Files.
-* diff-backup:                           Comparing Files.
-* digit-argument:                        Arguments.
-* dired:                                 Dired Enter.
-* dired-other-window <1>:                Pop Up Window.
-* dired-other-window:                    Dired Enter.
-* disable-command:                       Disabling.
-* disable-menu-item:                     Menu Customization.
-* disassemble:                           Compiling Libraries.
-* display-time:                          Mode Line.
-* dissociated-press:                     Dissociated Press.
-* do-auto-save:                          Auto Save Control.
-* doctor:                                Total Frustration.
-* down-list:                             Lists.
-* downcase-region:                       Case.
-* downcase-word <1>:                     Case.
-* downcase-word:                         Fixing Case.
-* edit-abbrevs:                          Editing Abbrevs.
-* edit-abbrevs-redefine:                 Editing Abbrevs.
-* edit-options:                          Edit Options.
-* edit-picture:                          Picture.
-* edit-tab-stops <1>:                    Text Mode.
-* edit-tab-stops:                        Tab Stops.
-* edit-tab-stops-note-changes:           Tab Stops.
-* edt-emulation-off:                     Emulation.
-* edt-emulation-on:                      Emulation.
-* electric-nroff-mode:                   Nroff Mode.
-* emacs-lisp-mode:                       Lisp Eval.
-* emacs-version:                         Bugs.
-* enable-command:                        Disabling.
-* enable-menu-item:                      Menu Customization.
-* end-kbd-macro:                         Basic Kbd Macro.
-* end-of-buffer:                         Moving Point.
-* end-of-defun:                          Defuns.
-* end-of-fortran-subprogram:             Fortran Motion.
-* end-of-line:                           Moving Point.
-* enlarge-window:                        Change Window.
-* enlarge-window-horizontally:           Change Window.
-* european-calendar:                     Date Formats.
-* eval-current-buffer:                   Lisp Eval.
-* eval-defun:                            Lisp Eval.
-* eval-expression:                       Lisp Eval.
-* eval-last-sexp:                        Lisp Eval.
-* eval-region:                           Lisp Eval.
-* exchange-point-and-mark:               Setting Mark.
-* execute-extended-command:              M-x.
-* exit-calendar:                         General Calendar.
-* exit-recursive-edit:                   Recursive Edit.
-* expand-abbrev:                         Expanding Abbrevs.
-* expand-region-abbrevs:                 Expanding Abbrevs.
-* fancy-diary-display:                   Fancy Diary Display.
-* fill-individual-paragraphs:            Fill Prefix.
-* fill-paragraph:                        Fill Commands.
-* fill-region:                           Fill Commands.
-* fill-region-as-paragraph:              Fill Commands.
-* find-alternate-file:                   Visiting.
-* find-file:                             Visiting.
-* find-file-other-frame <1>:             Visiting.
-* find-file-other-frame:                 XEmacs under X.
-* find-file-other-window <1>:            Pop Up Window.
-* find-file-other-window:                Visiting.
-* find-tag:                              Find Tag.
-* find-tag-other-window <1>:             Find Tag.
-* find-tag-other-window:                 Pop Up Window.
-* find-this-file:                        Visiting.
-* find-this-file-other-window:           Visiting.
-* finder-by-keyword:                     Library Keywords.
-* fortran-column-ruler:                  Fortran Columns.
-* fortran-comment-region:                Fortran Comments.
-* fortran-indent-line:                   ForIndent Commands.
-* fortran-indent-subprogram:             ForIndent Commands.
-* fortran-mode:                          Fortran.
-* fortran-next-statement:                Fortran Motion.
-* fortran-previous-statement:            Fortran Motion.
-* fortran-split-line:                    ForIndent Commands.
-* fortran-window-create:                 Fortran Columns.
-* forward-char:                          Moving Point.
-* forward-list:                          Lists.
-* forward-page:                          Pages.
-* forward-paragraph:                     Paragraphs.
-* forward-sentence:                      Sentences.
-* forward-sexp:                          Lists.
-* forward-text-line:                     Nroff Mode.
-* forward-word:                          Words.
-* frame-configuration-to-register:       RegConfig.
+                                                              (line  87)
+* diary-french-date:                     Sexp Diary Entries.  (line  69)
+* diary-hebrew-date:                     Sexp Diary Entries.  (line  69)
+* diary-islamic-date:                    Sexp Diary Entries.  (line  69)
+* diary-iso-date:                        Sexp Diary Entries.  (line  69)
+* diary-julian-date:                     Sexp Diary Entries.  (line  69)
+* diary-mail-entries:                    Diary Commands.      (line  77)
+* diary-mayan-date:                      Sexp Diary Entries.  (line  69)
+* diary-omer:                            Sexp Diary Entries.  (line 119)
+* diary-parasha:                         Sexp Diary Entries.  (line 119)
+* diary-phases-of-moon:                  Sexp Diary Entries.  (line  69)
+* diary-rosh-hodesh:                     Sexp Diary Entries.  (line 119)
+* diary-sabbath-candles:                 Sexp Diary Entries.  (line 119)
+* diary-sunrise-sunset:                  Sexp Diary Entries.  (line  69)
+* diary-yahrzeit:                        Sexp Diary Entries.  (line 119)
+* diff:                                  Comparing Files.     (line   6)
+* diff-backup:                           Comparing Files.     (line  18)
+* digit-argument:                        Arguments.           (line  16)
+* dired:                                 Dired Enter.         (line   6)
+* dired-other-window <1>:                Pop Up Window.       (line  11)
+* dired-other-window:                    Dired Enter.         (line  16)
+* disable-command:                       Disabling.           (line  25)
+* disable-menu-item:                     Menu Customization.  (line  98)
+* disassemble:                           Compiling Libraries. (line  64)
+* display-time:                          Mode Line.           (line  70)
+* dissociated-press:                     Dissociated Press.   (line   6)
+* do-auto-save:                          Auto Save Control.   (line  15)
+* doctor:                                Total Frustration.   (line  13)
+* down-list:                             Lists.               (line  96)
+* downcase-region:                       Case.                (line  46)
+* downcase-word <1>:                     Case.                (line  24)
+* downcase-word:                         Fixing Case.         (line  16)
+* edit-abbrevs:                          Editing Abbrevs.     (line  34)
+* edit-abbrevs-redefine:                 Editing Abbrevs.     (line  34)
+* edit-options:                          Edit Options.        (line  30)
+* edit-picture:                          Picture.             (line   6)
+* edit-tab-stops <1>:                    Text Mode.           (line   6)
+* edit-tab-stops:                        Tab Stops.           (line  11)
+* edit-tab-stops-note-changes:           Tab Stops.           (line  11)
+* edt-emulation-off:                     Emulation.           (line  29)
+* edt-emulation-on:                      Emulation.           (line  29)
+* electric-nroff-mode:                   Nroff Mode.          (line  25)
+* emacs-lisp-mode:                       Lisp Eval.           (line   6)
+* emacs-version:                         Bugs.                (line  63)
+* enable-command:                        Disabling.           (line  25)
+* enable-menu-item:                      Menu Customization.  (line  98)
+* end-kbd-macro:                         Basic Kbd Macro.     (line   6)
+* end-of-buffer:                         Moving Point.        (line  15)
+* end-of-defun:                          Defuns.              (line  23)
+* end-of-fortran-subprogram:             Fortran Motion.      (line  11)
+* end-of-line:                           Moving Point.        (line  15)
+* enlarge-window:                        Change Window.       (line  36)
+* enlarge-window-horizontally:           Change Window.       (line  36)
+* european-calendar:                     Date Formats.        (line  39)
+* eval-current-buffer:                   Lisp Eval.           (line  60)
+* eval-defun:                            Lisp Eval.           (line  44)
+* eval-expression:                       Lisp Eval.           (line  38)
+* eval-last-sexp:                        Lisp Eval.           (line  50)
+* eval-region:                           Lisp Eval.           (line  60)
+* exchange-point-and-mark:               Setting Mark.        (line  42)
+* execute-extended-command:              M-x.                 (line 152)
+* exit-calendar:                         General Calendar.    (line  41)
+* exit-recursive-edit:                   Recursive Edit.      (line  13)
+* expand-abbrev:                         Expanding Abbrevs.   (line  23)
+* expand-region-abbrevs:                 Expanding Abbrevs.   (line  54)
+* fancy-diary-display:                   Fancy Diary Display. (line  11)
+* fill-individual-paragraphs:            Fill Prefix.         (line  45)
+* fill-paragraph:                        Fill Commands.       (line  21)
+* fill-region:                           Fill Commands.       (line  27)
+* fill-region-as-paragraph:              Fill Commands.       (line  30)
+* find-alternate-file:                   Visiting.            (line  96)
+* find-file:                             Visiting.            (line  46)
+* find-file-other-frame <1>:             Visiting.            (line  46)
+* find-file-other-frame:                 XEmacs under X.      (line  22)
+* find-file-other-window <1>:            Pop Up Window.       (line  11)
+* find-file-other-window:                Visiting.            (line 108)
+* find-tag:                              Find Tag.            (line  19)
+* find-tag-other-window <1>:             Find Tag.            (line  67)
+* find-tag-other-window:                 Pop Up Window.       (line  11)
+* find-this-file:                        Visiting.            (line  67)
+* find-this-file-other-window:           Visiting.            (line 119)
+* finder-by-keyword:                     Library Keywords.    (line   6)
+* fortran-column-ruler:                  Fortran Columns.     (line  15)
+* fortran-comment-region:                Fortran Comments.    (line  71)
+* fortran-indent-line:                   ForIndent Commands.  (line  16)
+* fortran-indent-subprogram:             ForIndent Commands.  (line  21)
+* fortran-mode:                          Fortran.             (line  16)
+* fortran-next-statement:                Fortran Motion.      (line  11)
+* fortran-previous-statement:            Fortran Motion.      (line  11)
+* fortran-split-line:                    ForIndent Commands.  (line  25)
+* fortran-window-create:                 Fortran Columns.     (line  30)
+* forward-char:                          Moving Point.        (line  15)
+* forward-list:                          Lists.               (line  90)
+* forward-page:                          Pages.               (line  28)
+* forward-paragraph:                     Paragraphs.          (line   6)
+* forward-sentence:                      Sentences.           (line  22)
+* forward-sexp:                          Lists.               (line  67)
+* forward-text-line:                     Nroff Mode.          (line  14)
+* forward-word:                          Words.               (line  32)
+* frame-configuration-to-register:       RegConfig.           (line   6)
 * global-set-key <1>:                    Programmatic Rebinding.
+                                                              (line   9)
 * global-set-key:                        Interactive Rebinding.
-* goto-char:                             Moving Point.
-* goto-line:                             Moving Point.
-* hanoi:                                 Amusements.
-* help-command:                          Help.
-* help-for-help:                         Help.
-* help-with-tutorial <1>:                Misc Help.
-* help-with-tutorial:                    Basic.
-* hide-body:                             Outline Visibility.
-* hide-entry:                            Outline Visibility.
-* hide-leaves:                           Outline Visibility.
-* hide-subtree:                          Outline Visibility.
-* holidays:                              Holidays.
+                                                              (line   6)
+* goto-char:                             Moving Point.        (line  15)
+* goto-line:                             Moving Point.        (line  15)
+* hanoi:                                 Amusements.          (line   6)
+* help-command:                          Help.                (line   6)
+* help-for-help:                         Help.                (line  13)
+* help-with-tutorial <1>:                Misc Help.           (line  51)
+* help-with-tutorial:                    Basic.               (line   6)
+* hide-body:                             Outline Visibility.  (line  66)
+* hide-entry:                            Outline Visibility.  (line  43)
+* hide-leaves:                           Outline Visibility.  (line  56)
+* hide-subtree:                          Outline Visibility.  (line  48)
+* holidays:                              Holidays.            (line  53)
+* idl-mode:                              CC Mode.             (line   6)
 * include-other-diary-files:             Included Diary Files.
-* increment-register:                    RegNumbers.
-* indent-c-exp:                          Multi-line Indent.
-* indent-for-comment:                    Comments.
-* indent-new-comment-line:               Comments.
-* indent-region <1>:                     Multi-line Indent.
+                                                              (line  17)
+* increment-register:                    RegNumbers.          (line  14)
+* indent-c-exp:                          Multi-line Indent.   (line  19)
+* indent-for-comment:                    Comments.            (line   6)
+* indent-new-comment-line:               Comments.            (line  72)
+* indent-region <1>:                     Multi-line Indent.   (line  35)
 * indent-region:                         Indentation Commands.
+                                                              (line  33)
 * indent-relative:                       Indentation Commands.
+                                                              (line  43)
 * indent-rigidly:                        Indentation Commands.
-* indent-sexp:                           Multi-line Indent.
-* indented-text-mode:                    Text Mode.
-* info:                                  Misc Help.
-* Info-elisp-ref:                        Misc Help.
-* Info-goto-emacs-command-node:          Misc Help.
-* insert-abbrevs:                        Saving Abbrevs.
+                                                              (line  33)
+* indent-sexp:                           Multi-line Indent.   (line  19)
+* indented-text-mode:                    Text Mode.           (line  15)
+* info:                                  Misc Help.           (line   6)
+* Info-elisp-ref:                        Misc Help.           (line  18)
+* Info-goto-emacs-command-node:          Misc Help.           (line  18)
+* Info-goto-emacs-key-command-node:      Misc Help.           (line  18)
+* insert-abbrevs:                        Saving Abbrevs.      (line  42)
 * insert-anniversary-diary-entry:        Special Diary Entries.
+                                                              (line  29)
 * insert-block-diary-entry:              Special Diary Entries.
+                                                              (line  56)
 * insert-cyclic-diary-entry:             Special Diary Entries.
-* insert-diary-entry:                    Adding to Diary.
-* insert-file:                           Misc File Ops.
+                                                              (line  61)
+* insert-diary-entry:                    Adding to Diary.     (line  24)
+* insert-file:                           Misc File Ops.       (line  25)
 * insert-hebrew-diary-entry:             Hebrew/Islamic Entries.
+                                                              (line  74)
 * insert-islamic-diary-entry:            Hebrew/Islamic Entries.
-* insert-kbd-macro:                      Save Kbd Macro.
-* insert-monthly-diary-entry:            Adding to Diary.
+                                                              (line  74)
+* insert-kbd-macro:                      Save Kbd Macro.      (line  15)
+* insert-monthly-diary-entry:            Adding to Diary.     (line  29)
 * insert-monthly-hebrew-diary-entry:     Hebrew/Islamic Entries.
+                                                              (line  74)
 * insert-monthly-islamic-diary-entry:    Hebrew/Islamic Entries.
-* insert-parentheses:                    Balanced Editing.
-* insert-register:                       RegText.
-* insert-weekly-diary-entry:             Adding to Diary.
-* insert-yearly-diary-entry:             Adding to Diary.
+                                                              (line  74)
+* insert-parentheses:                    Balanced Editing.    (line  13)
+* insert-register:                       RegText.             (line  21)
+* insert-weekly-diary-entry:             Adding to Diary.     (line  29)
+* insert-yearly-diary-entry:             Adding to Diary.     (line  29)
 * insert-yearly-hebrew-diary-entry:      Hebrew/Islamic Entries.
+                                                              (line  74)
 * insert-yearly-islamic-diary-entry:     Hebrew/Islamic Entries.
-* interactive:                           M-x.
-* interrupt-shell-subjob:                Shell Mode.
-* inverse-add-global-abbrev:             Defining Abbrevs.
-* inverse-add-mode-abbrev:               Defining Abbrevs.
-* invert-face:                           Faces.
-* isearch-abort:                         Incremental Search.
-* isearch-backward:                      Incremental Search.
-* isearch-backward-regexp:               Regexp Search.
-* isearch-complete:                      Incremental Search.
-* isearch-delete-char:                   Incremental Search.
-* isearch-exit:                          Incremental Search.
-* isearch-forward:                       Incremental Search.
-* isearch-forward-regexp:                Regexp Search.
-* isearch-quote-char:                    Incremental Search.
-* isearch-repeat-backward:               Incremental Search.
-* isearch-repeat-forward:                Incremental Search.
-* isearch-ring-advance:                  Incremental Search.
-* isearch-ring-retreat:                  Incremental Search.
-* isearch-yank-line:                     Incremental Search.
-* isearch-yank-word:                     Incremental Search.
-* jump-to-register <1>:                  Split Window.
-* jump-to-register:                      RegPos.
-* just-one-space:                        Killing.
-* kbd-macro-query:                       Kbd Macro Query.
-* kill-all-abbrevs:                      Defining Abbrevs.
-* kill-buffer:                           Kill Buffer.
-* kill-comment:                          Comments.
-* kill-compilation:                      Compilation.
-* kill-line:                             Killing.
-* kill-local-variable:                   Locals.
-* kill-output-from-shell:                Shell Mode.
-* kill-rectangle:                        Rectangles.
-* kill-region:                           Killing.
-* kill-sentence <1>:                     Sentences.
-* kill-sentence:                         Killing.
-* kill-sexp <1>:                         Lists.
-* kill-sexp:                             Killing.
-* kill-some-buffers:                     Kill Buffer.
-* kill-word <1>:                         Words.
-* kill-word:                             Killing.
-* latex-mode:                            TeX Mode.
-* LaTeX-mode:                            TeX Mode.
-* lisp-complete-symbol:                  Lisp Completion.
-* lisp-indent-line:                      Basic Indent.
-* lisp-interaction-mode:                 Lisp Interaction.
-* lisp-mode:                             External Lisp.
-* lisp-send-defun:                       External Lisp.
-* list-abbrevs:                          Editing Abbrevs.
-* list-bookmarks:                        Bookmarks.
-* list-buffers:                          List Buffers.
-* list-calendar-holidays:                Holidays.
-* list-coding-systems:                   Coding Systems.
-* list-command-history:                  Repetition.
-* list-directory:                        ListDir.
+                                                              (line  74)
+* interactive:                           M-x.                 (line  49)
+* interrupt-shell-subjob:                Shell Mode.          (line  12)
+* inverse-add-global-abbrev:             Defining Abbrevs.    (line  44)
+* inverse-add-mode-abbrev:               Defining Abbrevs.    (line  44)
+* invert-face:                           Faces.               (line  70)
+* isearch-abort:                         Incremental Search.  (line 130)
+* isearch-backward:                      Incremental Search.  (line  19)
+* isearch-backward-regexp:               Regexp Search.       (line  28)
+* isearch-complete:                      Incremental Search.  (line 130)
+* isearch-delete-char:                   Incremental Search.  (line 130)
+* isearch-exit:                          Incremental Search.  (line 130)
+* isearch-forward:                       Incremental Search.  (line  19)
+* isearch-forward-regexp:                Regexp Search.       (line  28)
+* isearch-quote-char:                    Incremental Search.  (line 130)
+* isearch-repeat-backward:               Incremental Search.  (line 130)
+* isearch-repeat-forward:                Incremental Search.  (line 130)
+* isearch-ring-advance:                  Incremental Search.  (line 130)
+* isearch-ring-retreat:                  Incremental Search.  (line 130)
+* isearch-yank-line:                     Incremental Search.  (line 130)
+* isearch-yank-word:                     Incremental Search.  (line 130)
+* java-mode:                             CC Mode.             (line   6)
+* jump-to-register <1>:                  Split Window.        (line  46)
+* jump-to-register:                      RegPos.              (line  20)
+* just-one-space:                        Killing.             (line  53)
+* kbd-macro-query:                       Kbd Macro Query.     (line   6)
+* kill-all-abbrevs:                      Defining Abbrevs.    (line  58)
+* kill-buffer:                           Kill Buffer.         (line  16)
+* kill-comment:                          Comments.            (line  58)
+* kill-compilation:                      Compilation.         (line  51)
+* kill-line:                             Killing.             (line  73)
+* kill-local-variable:                   Locals.              (line  50)
+* kill-output-from-shell:                Shell Mode.          (line  12)
+* kill-rectangle:                        Rectangles.          (line  42)
+* kill-region:                           Killing.             (line 100)
+* kill-sentence <1>:                     Sentences.           (line  37)
+* kill-sentence:                         Killing.             (line 100)
+* kill-sexp <1>:                         Lists.               (line  87)
+* kill-sexp:                             Killing.             (line 100)
+* kill-some-buffers:                     Kill Buffer.         (line  16)
+* kill-word <1>:                         Words.               (line  41)
+* kill-word:                             Killing.             (line 100)
+* latex-mode:                            TeX Mode.            (line   6)
+* LaTeX-mode:                            TeX Mode.            (line   6)
+* lisp-complete-symbol:                  Lisp Completion.     (line   9)
+* lisp-indent-line:                      Basic Indent.        (line  12)
+* lisp-interaction-mode:                 Lisp Interaction.    (line  22)
+* lisp-mode:                             External Lisp.       (line  22)
+* lisp-send-defun:                       External Lisp.       (line  27)
+* list-abbrevs:                          Editing Abbrevs.     (line  12)
+* list-bookmarks:                        Bookmarks.           (line  25)
+* list-buffers:                          List Buffers.        (line   9)
+* list-calendar-holidays:                Holidays.            (line  48)
+* list-coding-systems:                   Coding Systems.      (line  46)
+* list-command-history:                  Repetition.          (line  12)
+* list-directory:                        ListDir.             (line  17)
 * list-hebrew-diary-entries:             Hebrew/Islamic Entries.
-* list-holidays:                         Holidays.
-* list-input-methods:                    Select Input Method.
+                                                              (line  13)
+* list-holidays:                         Holidays.            (line  63)
+* list-input-methods:                    Select Input Method. (line  47)
 * list-islamic-diary-entries:            Hebrew/Islamic Entries.
+                                                              (line  18)
 * list-matching-lines:                   Other Repeating Search.
-* list-options:                          Edit Options.
-* list-tags:                             List Tags.
-* list-yahrzeit-dates:                   From Other Calendar.
-* load:                                  Loading.
-* load-default-sounds:                   Audible Bell.
-* load-file:                             Loading.
-* load-library <1>:                      Loading.
-* load-library:                          Startup Paths.
-* load-sound-file:                       Audible Bell.
+                                                              (line   9)
+* list-options:                          Edit Options.        (line  13)
+* list-tags:                             List Tags.           (line  12)
+* list-yahrzeit-dates:                   From Other Calendar. (line  57)
+* load:                                  Loading.             (line  21)
+* load-default-sounds:                   Audible Bell.        (line   6)
+* load-file:                             Loading.             (line  15)
+* load-library <1>:                      Loading.             (line  21)
+* load-library:                          Startup Paths.       (line 124)
+* load-sound-file:                       Audible Bell.        (line  59)
 * local-set-key:                         Interactive Rebinding.
+                                                              (line   6)
 * local-unset-key:                       Interactive Rebinding.
-* locate-library:                        Loading.
-* lpr-buffer:                            Hardcopy.
-* lpr-region:                            Hardcopy.
-* mail:                                  Sending Mail.
-* mail-cc:                               Mail Mode.
-* mail-fill-yanked-message:              Mail Mode.
-* mail-interactive-insert-alias:         Mail Headers.
-* mail-other-window <1>:                 Sending Mail.
-* mail-other-window:                     Pop Up Window.
-* mail-send:                             Mail Mode.
-* mail-send-and-exit:                    Mail Mode.
-* mail-signature:                        Mail Mode.
-* mail-subject:                          Mail Mode.
-* mail-to:                               Mail Mode.
-* mail-yank-original:                    Mail Mode.
-* make-directory:                        File Names.
-* make-face-bold:                        Faces.
-* make-face-bold-italic:                 Faces.
-* make-face-italic:                      Faces.
-* make-face-larger:                      Faces.
-* make-face-smaller:                     Faces.
-* make-face-unbold:                      Faces.
-* make-face-unitalic:                    Faces.
-* make-frame:                            XEmacs under X.
-* make-local-variable:                   Locals.
-* make-obsolete:                         Compiling Libraries.
-* make-symbolic-link:                    Misc File Ops.
-* make-variable-buffer-local:            Locals.
-* manual-entry:                          Documentation.
-* mark-beginning-of-buffer:              Setting Mark.
-* mark-calendar-holidays:                Holidays.
-* mark-defun <1>:                        Defuns.
-* mark-defun:                            Marking Objects.
-* mark-diary-entries:                    Diary Commands.
-* mark-end-of-buffer:                    Setting Mark.
-* mark-fortran-subprogram:               Fortran Motion.
+                                                              (line   6)
+* locate-library:                        Loading.             (line  57)
+* lpr-buffer:                            Hardcopy.            (line  24)
+* lpr-region:                            Hardcopy.            (line  24)
+* mail:                                  Sending Mail.        (line  22)
+* mail-cc:                               Mail Mode.           (line  54)
+* mail-fill-yanked-message:              Mail Mode.           (line  78)
+* mail-interactive-insert-alias:         Mail Headers.        (line  99)
+* mail-other-window <1>:                 Sending Mail.        (line  22)
+* mail-other-window:                     Pop Up Window.       (line  11)
+* mail-send:                             Mail Mode.           (line  45)
+* mail-send-and-exit:                    Mail Mode.           (line  45)
+* mail-signature:                        Mail Mode.           (line  63)
+* mail-subject:                          Mail Mode.           (line  54)
+* mail-to:                               Mail Mode.           (line  54)
+* mail-yank-original:                    Mail Mode.           (line  67)
+* make-directory:                        File Names.          (line  51)
+* make-face-bold:                        Faces.               (line  77)
+* make-face-bold-italic:                 Faces.               (line  77)
+* make-face-italic:                      Faces.               (line  77)
+* make-face-larger:                      Faces.               (line  70)
+* make-face-smaller:                     Faces.               (line  70)
+* make-face-unbold:                      Faces.               (line  77)
+* make-face-unitalic:                    Faces.               (line  77)
+* make-frame:                            XEmacs under X.      (line  16)
+* make-local-variable:                   Locals.              (line  26)
+* make-obsolete:                         Compiling Libraries. (line  28)
+* make-symbolic-link:                    Misc File Ops.       (line  29)
+* make-variable-buffer-local:            Locals.              (line  31)
+* manual-entry:                          Documentation.       (line  17)
+* mark-beginning-of-buffer:              Setting Mark.        (line  50)
+* mark-calendar-holidays:                Holidays.            (line  40)
+* mark-defun <1>:                        Defuns.              (line  23)
+* mark-defun:                            Marking Objects.     (line  32)
+* mark-diary-entries:                    Diary Commands.      (line  47)
+* mark-end-of-buffer:                    Setting Mark.        (line  50)
+* mark-fortran-subprogram:               Fortran Motion.      (line  11)
 * mark-hebrew-diary-entries:             Hebrew/Islamic Entries.
+                                                              (line  13)
 * mark-included-diary-files:             Included Diary Files.
+                                                              (line  17)
 * mark-islamic-diary-entries:            Hebrew/Islamic Entries.
-* mark-page <1>:                         Pages.
-* mark-page:                             Marking Objects.
-* mark-paragraph <1>:                    Paragraphs.
-* mark-paragraph:                        Marking Objects.
-* mark-sexp <1>:                         Lists.
-* mark-sexp:                             Marking Objects.
-* mark-whole-buffer:                     Marking Objects.
-* mark-word <1>:                         Words.
-* mark-word:                             Marking Objects.
-* minibuffer-complete:                   Completion Example.
-* minibuffer-complete-word:              Completion Commands.
-* modify-syntax-entry:                   Syntax Change.
-* mouse-choose-completion:               Completion Commands.
+                                                              (line  18)
+* mark-page <1>:                         Pages.               (line  34)
+* mark-page:                             Marking Objects.     (line  32)
+* mark-paragraph <1>:                    Paragraphs.          (line  31)
+* mark-paragraph:                        Marking Objects.     (line  32)
+* mark-sexp <1>:                         Lists.               (line 114)
+* mark-sexp:                             Marking Objects.     (line  28)
+* mark-whole-buffer:                     Marking Objects.     (line  32)
+* mark-word <1>:                         Words.               (line  61)
+* mark-word:                             Marking Objects.     (line  28)
+* minibuffer-complete:                   Completion Example.  (line   6)
+* minibuffer-complete-word:              Completion Commands. (line  34)
+* modify-syntax-entry:                   Syntax Change.       (line  12)
+* mouse-choose-completion:               Completion Commands. (line  45)
 * mouse-del-char:                        Additional Mouse Operations.
+                                                              (line  14)
 * mouse-delete-window:                   Additional Mouse Operations.
+                                                              (line  14)
 * mouse-keep-one-window:                 Additional Mouse Operations.
+                                                              (line  14)
 * mouse-kill-line:                       Additional Mouse Operations.
+                                                              (line  14)
 * mouse-line-length:                     Additional Mouse Operations.
+                                                              (line  14)
 * mouse-scroll:                          Additional Mouse Operations.
+                                                              (line  14)
 * mouse-select:                          Additional Mouse Operations.
+                                                              (line  14)
 * mouse-select-and-split:                Additional Mouse Operations.
+                                                              (line  14)
 * mouse-set-mark:                        Additional Mouse Operations.
+                                                              (line  14)
 * mouse-set-point:                       Additional Mouse Operations.
+                                                              (line  14)
 * mouse-track:                           Additional Mouse Operations.
+                                                              (line  14)
 * mouse-track-adjust:                    Additional Mouse Operations.
+                                                              (line  14)
 * mouse-track-and-copy-to-cutbuffer:     Additional Mouse Operations.
+                                                              (line  14)
 * mouse-track-delete-and-insert:         Additional Mouse Operations.
-* move-over-close-and-reindent:          Balanced Editing.
-* move-to-window-line:                   Moving Point.
-* name-last-kbd-macro:                   Save Kbd Macro.
-* narrow-to-region:                      Narrowing.
-* negative-argument:                     Arguments.
-* newline:                               Inserting Text.
-* newline-and-indent:                    Basic Indent.
-* next-complex-command:                  Repetition.
-* next-error:                            Compilation.
-* next-history-element:                  Minibuffer History.
-* next-line:                             Moving Point.
-* next-list-mode-item:                   Completion Commands.
-* next-matching-history-element:         Minibuffer History.
-* not-modified:                          Saving.
-* nroff-mode:                            Nroff Mode.
-* number-to-register:                    RegNumbers.
+                                                              (line  14)
+* move-over-close-and-reindent:          Balanced Editing.    (line  13)
+* move-to-window-line:                   Moving Point.        (line  15)
+* name-last-kbd-macro:                   Save Kbd Macro.      (line   6)
+* narrow-to-region:                      Narrowing.           (line  28)
+* negative-argument:                     Arguments.           (line  16)
+* newline:                               Inserting Text.      (line  55)
+* newline-and-indent:                    Basic Indent.        (line  26)
+* next-complex-command:                  Repetition.          (line  45)
+* next-error:                            Compilation.         (line  58)
+* next-history-element:                  Minibuffer History.  (line  30)
+* next-line:                             Moving Point.        (line  15)
+* next-list-mode-item:                   Completion Commands. (line  66)
+* next-matching-history-element:         Minibuffer History.  (line  48)
+* not-modified:                          Saving.              (line  45)
+* nroff-mode:                            Nroff Mode.          (line   6)
+* number-to-register:                    RegNumbers.          (line  11)
+* objc-mode:                             CC Mode.             (line   6)
 * occur:                                 Other Repeating Search.
-* open-dribble-file:                     Bugs.
-* open-line:                             Blank Lines.
-* open-rectangle:                        Rectangles.
-* open-termscript:                       Bugs.
-* other-window:                          Other Window.
-* other-window-any-frame:                Other Window.
-* outline-backward-same-level:           Outline Motion.
-* outline-forward-same-level:            Outline Motion.
-* outline-next-visible-heading:          Outline Motion.
-* outline-previous-visible-heading:      Outline Motion.
-* outline-up-heading:                    Outline Motion.
-* overwrite-mode:                        Minor Modes.
-* phases-of-moon:                        Lunar Phases.
-* picture-backward-clear-column:         Basic Picture.
-* picture-backward-column:               Basic Picture.
-* picture-clear-column:                  Basic Picture.
-* picture-clear-line:                    Basic Picture.
+                                                              (line   9)
+* open-dribble-file:                     Bugs.                (line 144)
+* open-line:                             Blank Lines.         (line  16)
+* open-rectangle:                        Rectangles.          (line  68)
+* open-termscript:                       Bugs.                (line 153)
+* other-window:                          Other Window.        (line  20)
+* other-window-any-frame:                Other Window.        (line  34)
+* outline-backward-same-level:           Outline Motion.      (line  36)
+* outline-forward-same-level:            Outline Motion.      (line  36)
+* outline-next-visible-heading:          Outline Motion.      (line  29)
+* outline-previous-visible-heading:      Outline Motion.      (line  29)
+* outline-up-heading:                    Outline Motion.      (line  36)
+* overwrite-mode:                        Minor Modes.         (line  26)
+* phases-of-moon:                        Lunar Phases.        (line  23)
+* picture-backward-clear-column:         Basic Picture.       (line  27)
+* picture-backward-column:               Basic Picture.       (line   6)
+* picture-clear-column:                  Basic Picture.       (line  27)
+* picture-clear-line:                    Basic Picture.       (line  27)
 * picture-clear-rectangle:               Rectangles in Picture.
+                                                              (line  27)
 * picture-clear-rectangle-to-register:   Rectangles in Picture.
-* picture-forward-column:                Basic Picture.
-* picture-motion:                        Insert in Picture.
-* picture-motion-reverse:                Insert in Picture.
-* picture-move-down:                     Basic Picture.
-* picture-move-up:                       Basic Picture.
-* picture-movement-down:                 Insert in Picture.
-* picture-movement-left:                 Insert in Picture.
-* picture-movement-ne:                   Insert in Picture.
-* picture-movement-nw:                   Insert in Picture.
-* picture-movement-right:                Insert in Picture.
-* picture-movement-se:                   Insert in Picture.
-* picture-movement-sw:                   Insert in Picture.
-* picture-movement-up:                   Insert in Picture.
-* picture-newline:                       Basic Picture.
-* picture-open-line:                     Basic Picture.
-* picture-set-tab-stops:                 Tabs in Picture.
-* picture-tab:                           Tabs in Picture.
-* picture-tab-search:                    Tabs in Picture.
+                                                              (line  27)
+* picture-forward-column:                Basic Picture.       (line   6)
+* picture-motion:                        Insert in Picture.   (line  40)
+* picture-motion-reverse:                Insert in Picture.   (line  40)
+* picture-move-down:                     Basic Picture.       (line   6)
+* picture-move-up:                       Basic Picture.       (line   6)
+* picture-movement-down:                 Insert in Picture.   (line   6)
+* picture-movement-left:                 Insert in Picture.   (line   6)
+* picture-movement-ne:                   Insert in Picture.   (line   6)
+* picture-movement-nw:                   Insert in Picture.   (line   6)
+* picture-movement-right:                Insert in Picture.   (line   6)
+* picture-movement-se:                   Insert in Picture.   (line   6)
+* picture-movement-sw:                   Insert in Picture.   (line   6)
+* picture-movement-up:                   Insert in Picture.   (line   6)
+* picture-newline:                       Basic Picture.       (line  20)
+* picture-open-line:                     Basic Picture.       (line  34)
+* picture-set-tab-stops:                 Tabs in Picture.     (line  23)
+* picture-tab:                           Tabs in Picture.     (line  18)
+* picture-tab-search:                    Tabs in Picture.     (line   6)
 * picture-yank-rectangle:                Rectangles in Picture.
+                                                              (line  36)
 * picture-yank-rectangle-from-register:  Rectangles in Picture.
-* plain-TeX-mode:                        TeX Mode.
-* plain-tex-mode:                        TeX Mode.
-* play-sound:                            Audible Bell.
-* point-to-register:                     RegPos.
-* prefer-coding-system:                  Recognize Coding.
-* prepend-to-buffer:                     Accumulating Text.
-* previous-complex-command:              Repetition.
-* previous-history-element:              Minibuffer History.
-* previous-line:                         Moving Point.
-* previous-list-mode-item:               Completion Commands.
-* previous-matching-history-element:     Minibuffer History.
-* print-buffer:                          Hardcopy.
-* print-diary-entries <1>:               Diary Customizing.
-* print-diary-entries:                   Diary Commands.
-* print-region:                          Hardcopy.
-* quail-set-keyboard-layout:             Select Input Method.
-* query-replace:                         Query Replace.
-* query-replace-regexp:                  Query Replace.
-* quietly-read-abbrev-file:              Saving Abbrevs.
-* quit-shell-subjob:                     Shell Mode.
-* quoted-insert:                         Inserting Text.
-* re-search-backward:                    Regexp Search.
-* re-search-forward:                     Regexp Search.
-* read-abbrev-file:                      Saving Abbrevs.
+                                                              (line  36)
+* pike-mode:                             CC Mode.             (line   6)
+* plain-TeX-mode:                        TeX Mode.            (line   6)
+* plain-tex-mode:                        TeX Mode.            (line   6)
+* play-sound:                            Audible Bell.        (line   6)
+* point-to-register:                     RegPos.              (line  16)
+* prefer-coding-system:                  Recognize Coding.    (line  28)
+* prepend-to-buffer:                     Accumulating Text.   (line   6)
+* previous-complex-command:              Repetition.          (line  45)
+* previous-history-element:              Minibuffer History.  (line  30)
+* previous-line:                         Moving Point.        (line  15)
+* previous-list-mode-item:               Completion Commands. (line  73)
+* previous-matching-history-element:     Minibuffer History.  (line  48)
+* print-buffer:                          Hardcopy.            (line  24)
+* print-diary-entries <1>:               Diary Customizing.   (line  26)
+* print-diary-entries:                   Diary Commands.      (line  61)
+* print-region:                          Hardcopy.            (line  24)
+* quail-set-keyboard-layout:             Select Input Method. (line  41)
+* query-replace:                         Query Replace.       (line  13)
+* query-replace-regexp:                  Query Replace.       (line  20)
+* quietly-read-abbrev-file:              Saving Abbrevs.      (line  30)
+* quit-shell-subjob:                     Shell Mode.          (line  12)
+* quoted-insert:                         Inserting Text.      (line  33)
+* re-search-backward:                    Regexp Search.       (line  42)
+* re-search-forward:                     Regexp Search.       (line  42)
+* read-abbrev-file:                      Saving Abbrevs.      (line  30)
 * read-key-sequence:                     Representing Keystrokes.
-* recenter <1>:                          Scrolling.
-* recenter:                              Moving Point.
-* recover-file:                          Recover.
-* redraw-calendar:                       General Calendar.
-* relabel-menu-item:                     Menu Customization.
-* remove-directory:                      File Names.
-* rename-buffer:                         Misc Buffer.
-* rename-file:                           Misc File Ops.
-* repeat-complex-command:                Repetition.
+                                                              (line   6)
+* recenter <1>:                          Scrolling.           (line  37)
+* recenter:                              Moving Point.        (line  15)
+* recover-file:                          Recover.             (line   6)
+* redraw-calendar:                       General Calendar.    (line  33)
+* relabel-menu-item:                     Menu Customization.  (line 103)
+* remove-directory:                      File Names.          (line  51)
+* remove-hook:                           Mode Hooks.          (line   6)
+* rename-buffer:                         Misc Buffer.         (line  25)
+* rename-file:                           Misc File Ops.       (line  37)
+* repeat-complex-command:                Repetition.          (line  27)
 * replace-regexp:                        Unconditional Replace.
+                                                              (line   6)
 * replace-string:                        Unconditional Replace.
-* revert-buffer:                         Reverting.
-* run-lisp:                              External Lisp.
-* save-buffer:                           Saving.
-* save-buffers-kill-emacs:               Exiting.
-* save-some-buffers:                     Saving.
-* scroll-calendar-left:                  Scroll Calendar.
-* scroll-calendar-left-three-months:     Scroll Calendar.
-* scroll-calendar-right:                 Scroll Calendar.
-* scroll-calendar-right-three-months:    Scroll Calendar.
-* scroll-down:                           Scrolling.
+                                                              (line   6)
+* revert-buffer:                         Reverting.           (line   6)
+* run-lisp:                              External Lisp.       (line  12)
+* save-buffer:                           Saving.              (line  26)
+* save-buffers-kill-emacs:               Exiting.             (line  64)
+* save-some-buffers:                     Saving.              (line  39)
+* scroll-calendar-left:                  Scroll Calendar.     (line  28)
+* scroll-calendar-left-three-months:     Scroll Calendar.     (line  35)
+* scroll-calendar-right:                 Scroll Calendar.     (line  28)
+* scroll-calendar-right-three-months:    Scroll Calendar.     (line  35)
+* scroll-down:                           Scrolling.           (line  42)
 * scroll-left:                           Horizontal Scrolling.
-* scroll-other-window <1>:               General Calendar.
-* scroll-other-window:                   Other Window.
+                                                              (line  12)
+* scroll-other-window <1>:               General Calendar.    (line  29)
+* scroll-other-window:                   Other Window.        (line  40)
 * scroll-right:                          Horizontal Scrolling.
-* scroll-up:                             Scrolling.
+                                                              (line  12)
+* scroll-up:                             Scrolling.           (line  42)
 * search-backward:                       Non-Incremental Search.
+                                                              (line  25)
 * search-forward:                        Non-Incremental Search.
-* select-input-method:                   Select Input Method.
-* self-insert:                           Inserting Text.
-* send-shell-input:                      Shell Mode.
-* set-buffer-file-coding-system:         Specify Coding.
-* set-buffer-process-coding-system:      Specify Coding.
-* set-comment-column:                    Comments.
-* set-default-file-modes:                Interlocking.
-* set-face-background:                   Faces.
-* set-face-background-pixmap:            Faces.
-* set-face-font:                         Faces.
-* set-face-foreground:                   Faces.
-* set-face-underline-p:                  Faces.
-* set-fill-column:                       Fill Commands.
-* set-fill-prefix:                       Fill Prefix.
-* set-gnu-bindings:                      Emulation.
-* set-goal-column:                       Moving Point.
-* set-gosmacs-bindings:                  Emulation.
-* set-keyboard-coding-system:            Specify Coding.
+                                                              (line  25)
+* select-input-method:                   Select Input Method. (line  20)
+* self-insert:                           Inserting Text.      (line  55)
+* send-shell-input:                      Shell Mode.          (line  12)
+* set-buffer-file-coding-system:         Specify Coding.      (line  27)
+* set-buffer-process-coding-system:      Specify Coding.      (line  91)
+* set-comment-column:                    Comments.            (line  84)
+* set-default-file-modes:                Interlocking.        (line  77)
+* set-face-background:                   Faces.               (line  98)
+* set-face-background-pixmap:            Faces.               (line 104)
+* set-face-font:                         Faces.               (line 120)
+* set-face-foreground:                   Faces.               (line 126)
+* set-face-underline-p:                  Faces.               (line 132)
+* set-fill-column:                       Fill Commands.       (line  53)
+* set-fill-prefix:                       Fill Prefix.         (line  22)
+* set-gnu-bindings:                      Emulation.           (line  38)
+* set-goal-column:                       Moving Point.        (line  95)
+* set-gosmacs-bindings:                  Emulation.           (line  38)
+* set-keyboard-coding-system:            Specify Coding.      (line  73)
 * set-language-environment:              Language Environments.
-* set-mark-command:                      Setting Mark.
-* set-selective-display:                 Selective Display.
-* set-terminal-coding-system:            Specify Coding.
-* set-variable:                          Examining.
-* set-visited-file-name:                 Saving.
-* setq-default:                          Locals.
-* shell:                                 Interactive Shell.
-* shell-command:                         Single Shell.
-* shell-command-on-region:               Single Shell.
-* shell-send-eof:                        Shell Mode.
-* show-all:                              Outline Visibility.
-* show-all-diary-entries:                Diary Commands.
-* show-branches:                         Outline Visibility.
-* show-children:                         Outline Visibility.
-* show-entry:                            Outline Visibility.
-* show-output-from-shell:                Shell Mode.
-* show-subtree:                          Outline Visibility.
-* simple-diary-display:                  Fancy Diary Display.
-* sort-columns:                          Sorting.
-* sort-diary-entries:                    Fancy Diary Display.
-* sort-fields:                           Sorting.
-* sort-lines:                            Sorting.
-* sort-numeric-fields:                   Sorting.
-* sort-pages:                            Sorting.
-* sort-paragraphs:                       Sorting.
-* spell-buffer:                          Spelling.
-* spell-region:                          Spelling.
-* spell-string:                          Spelling.
-* spell-word:                            Spelling.
+                                                              (line  19)
+* set-mark-command:                      Setting Mark.        (line  32)
+* set-selective-display:                 Selective Display.   (line   6)
+* set-terminal-coding-system:            Specify Coding.      (line  62)
+* set-variable:                          Examining.           (line   8)
+* set-visited-file-name:                 Saving.              (line  62)
+* setq-default:                          Locals.              (line  56)
+* shell:                                 Interactive Shell.   (line   6)
+* shell-command:                         Single Shell.        (line   6)
+* shell-command-on-region:               Single Shell.        (line  15)
+* shell-send-eof:                        Shell Mode.          (line  12)
+* show-all:                              Outline Visibility.  (line  66)
+* show-all-diary-entries:                Diary Commands.      (line  55)
+* show-branches:                         Outline Visibility.  (line  56)
+* show-children:                         Outline Visibility.  (line  62)
+* show-entry:                            Outline Visibility.  (line  43)
+* show-output-from-shell:                Shell Mode.          (line  12)
+* show-subtree:                          Outline Visibility.  (line  48)
+* simple-diary-display:                  Fancy Diary Display. (line   6)
+* sort-columns:                          Sorting.             (line  87)
+* sort-diary-entries:                    Fancy Diary Display. (line  35)
+* sort-fields:                           Sorting.             (line  23)
+* sort-lines:                            Sorting.             (line  23)
+* sort-numeric-fields:                   Sorting.             (line  23)
+* sort-pages:                            Sorting.             (line  23)
+* sort-paragraphs:                       Sorting.             (line  23)
+* spell-buffer:                          Spelling.            (line  30)
+* spell-region:                          Spelling.            (line  34)
+* spell-string:                          Spelling.            (line  37)
+* spell-word:                            Spelling.            (line  18)
 * split-line:                            Indentation Commands.
-* split-window-horizontally:             Split Window.
-* split-window-vertically:               Split Window.
-* start-kbd-macro:                       Basic Kbd Macro.
-* stop-shell-subjob:                     Shell Mode.
+                                                              (line  17)
+* split-window-horizontally:             Split Window.        (line  28)
+* split-window-vertically:               Split Window.        (line  21)
+* start-kbd-macro:                       Basic Kbd Macro.     (line   6)
+* stop-shell-subjob:                     Shell Mode.          (line  12)
 * substitute-key-definition:             Interactive Rebinding.
-* sunrise-sunset:                        Sunrise/Sunset.
-* suspend-emacs:                         Exiting.
-* switch-to-buffer:                      Select Buffer.
-* switch-to-buffer-other-frame <1>:      Select Buffer.
-* switch-to-buffer-other-frame:          XEmacs under X.
-* switch-to-buffer-other-window <1>:     Pop Up Window.
-* switch-to-buffer-other-window:         Select Buffer.
-* switch-to-completions:                 Completion Commands.
-* switch-to-other-buffer:                Select Buffer.
-* tab-to-tab-stop <1>:                   Text Mode.
-* tab-to-tab-stop:                       Tab Stops.
-* tabify:                                Just Spaces.
-* tags-apropos:                          List Tags.
-* tags-loop-continue:                    Tags Search.
-* tags-query-replace:                    Tags Search.
-* tags-search:                           Tags Search.
-* term:                                  Terminal emulator.
-* term-line-mode:                        Term Mode.
-* term-pager-toggle:                     Paging in Term.
-* tex-buffer:                            TeX Print.
-* tex-close-latex-block:                 TeX Editing.
-* tex-insert-braces:                     TeX Editing.
-* tex-insert-quote:                      TeX Editing.
-* tex-kill-job:                          TeX Print.
-* tex-mode:                              TeX Mode.
-* TeX-mode:                              TeX Mode.
-* tex-print:                             TeX Print.
-* tex-recenter-output-buffer:            TeX Print.
-* tex-region:                            TeX Print.
-* tex-show-print-queue:                  TeX Print.
-* tex-terminate-paragraph:               TeX Editing.
-* text-mode:                             Text Mode.
-* toggle-input-method:                   Select Input Method.
-* toggle-read-only:                      Misc Buffer.
-* top-level <1>:                         Quitting.
-* top-level:                             Recursive Edit.
-* transpose-chars <1>:                   Transpose.
-* transpose-chars:                       Moving Point.
-* transpose-lines:                       Transpose.
-* transpose-sexps <1>:                   Lists.
-* transpose-sexps:                       Transpose.
-* transpose-words <1>:                   Words.
-* transpose-words:                       Transpose.
-* undo:                                  Undo.
-* unexpand-abbrev:                       Expanding Abbrevs.
-* universal-argument:                    Arguments.
-* universal-coding-system-argument:      Specify Coding.
-* untabify:                              Just Spaces.
-* up-list:                               TeX Editing.
-* upcase-region:                         Case.
-* upcase-word <1>:                       Case.
-* upcase-word:                           Fixing Case.
-* validate-tex-buffer:                   TeX Editing.
-* vc-cancel-version:                     Editing with VC.
-* vc-create-snapshot:                    Making Snapshots.
-* vc-diff:                               Old Versions.
-* vc-directory:                          VC Status.
-* vc-insert-headers:                     Version Headers.
-* vc-next-action:                        Editing with VC.
-* vc-print-log:                          VC Status.
-* vc-register:                           Editing with VC.
-* vc-rename-file:                        Renaming and VC.
-* vc-retrieve-snapshot:                  Making Snapshots.
-* vc-revert-buffer:                      Editing with VC.
-* vc-update-change-log:                  Change Logs and VC.
-* vc-version-other-window:               Old Versions.
-* view-buffer:                           Misc Buffer.
-* view-diary-entries:                    Diary Commands.
-* view-emacs-news:                       Misc Help.
-* view-file:                             Misc File Ops.
-* view-hello-file:                       Mule Intro.
-* view-lossage:                          Misc Help.
-* view-register:                         Registers.
-* visit-tags-table:                      Select Tags Table.
-* what-cursor-position:                  Position Info.
-* what-line:                             Position Info.
-* what-page:                             Position Info.
-* where-is:                              Name Help.
-* widen:                                 Narrowing.
-* widget-backward:                       Changing an Option.
-* widget-complete:                       Changing an Option.
-* widget-forward:                        Changing an Option.
-* window-configuration-to-register <1>:  Split Window.
-* window-configuration-to-register:      RegConfig.
-* word-search-backward:                  Word Search.
-* word-search-forward:                   Word Search.
-* write-abbrev-file:                     Saving Abbrevs.
-* write-file:                            Saving.
+                                                              (line  44)
+* sunrise-sunset:                        Sunrise/Sunset.      (line  22)
+* suspend-emacs:                         Exiting.             (line  39)
+* switch-to-buffer:                      Select Buffer.       (line  16)
+* switch-to-buffer-other-frame <1>:      Select Buffer.       (line  16)
+* switch-to-buffer-other-frame:          XEmacs under X.      (line  27)
+* switch-to-buffer-other-window <1>:     Pop Up Window.       (line  11)
+* switch-to-buffer-other-window:         Select Buffer.       (line  16)
+* switch-to-completions:                 Completion Commands. (line  52)
+* switch-to-other-buffer:                Select Buffer.       (line  35)
+* tab-to-tab-stop <1>:                   Text Mode.           (line   6)
+* tab-to-tab-stop:                       Tab Stops.           (line   6)
+* tabify:                                Just Spaces.         (line  12)
+* tags-apropos:                          List Tags.           (line  21)
+* tags-loop-continue:                    Tags Search.         (line  28)
+* tags-query-replace:                    Tags Search.         (line  33)
+* tags-search:                           Tags Search.         (line  22)
+* term:                                  Terminal emulator.   (line   6)
+* term-line-mode:                        Term Mode.           (line  17)
+* term-pager-toggle:                     Paging in Term.      (line   9)
+* tex-buffer:                            TeX Print.           (line  32)
+* tex-close-latex-block:                 TeX Editing.         (line  72)
+* tex-insert-braces:                     TeX Editing.         (line  49)
+* tex-insert-quote:                      TeX Editing.         (line  31)
+* tex-kill-job:                          TeX Print.           (line  38)
+* tex-mode:                              TeX Mode.            (line   6)
+* TeX-mode:                              TeX Mode.            (line   6)
+* tex-print:                             TeX Print.           (line  32)
+* tex-recenter-output-buffer:            TeX Print.           (line  38)
+* tex-region:                            TeX Print.           (line  48)
+* tex-show-print-queue:                  TeX Print.           (line  32)
+* tex-terminate-paragraph:               TeX Editing.         (line  55)
+* text-mode:                             Text Mode.           (line   6)
+* toggle-input-method:                   Select Input Method. (line  26)
+* toggle-read-only:                      Misc Buffer.         (line  15)
+* top-level <1>:                         Quitting.            (line  53)
+* top-level:                             Recursive Edit.      (line  28)
+* transpose-chars <1>:                   Transpose.           (line  18)
+* transpose-chars:                       Moving Point.        (line  15)
+* transpose-lines:                       Transpose.           (line  30)
+* transpose-sexps <1>:                   Lists.               (line 108)
+* transpose-sexps:                       Transpose.           (line  30)
+* transpose-words <1>:                   Words.               (line  55)
+* transpose-words:                       Transpose.           (line  30)
+* undo:                                  Undo.                (line  20)
+* unexpand-abbrev:                       Expanding Abbrevs.   (line  48)
+* universal-argument:                    Arguments.           (line  28)
+* universal-coding-system-argument:      Specify Coding.      (line  34)
+* untabify:                              Just Spaces.         (line  12)
+* up-list:                               TeX Editing.         (line  49)
+* upcase-region:                         Case.                (line  46)
+* upcase-word <1>:                       Case.                (line  24)
+* upcase-word:                           Fixing Case.         (line  16)
+* validate-tex-buffer:                   TeX Editing.         (line  55)
+* vc-cancel-version:                     Editing with VC.     (line  76)
+* vc-create-snapshot:                    Making Snapshots.    (line   9)
+* vc-diff:                               Old Versions.        (line  22)
+* vc-directory:                          VC Status.           (line  11)
+* vc-insert-headers:                     Version Headers.     (line  11)
+* vc-next-action:                        Editing with VC.     (line 107)
+* vc-print-log:                          VC Status.           (line   6)
+* vc-register:                           Editing with VC.     (line  92)
+* vc-rename-file:                        Renaming and VC.     (line   6)
+* vc-retrieve-snapshot:                  Making Snapshots.    (line  14)
+* vc-revert-buffer:                      Editing with VC.     (line  66)
+* vc-update-change-log:                  Change Logs and VC.  (line  11)
+* vc-version-other-window:               Old Versions.        (line  17)
+* view-buffer:                           Misc Buffer.         (line  30)
+* view-diary-entries:                    Diary Commands.      (line  35)
+* view-emacs-news:                       Misc Help.           (line  51)
+* view-file:                             Misc File Ops.       (line  44)
+* view-hello-file:                       Mule Intro.          (line  59)
+* view-lossage:                          Misc Help.           (line  27)
+* view-register:                         Registers.           (line  12)
+* visit-tags-table:                      Select Tags Table.   (line  70)
+* what-cursor-position:                  Position Info.       (line  47)
+* what-line:                             Position Info.       (line  31)
+* what-page:                             Position Info.       (line  31)
+* where-is:                              Name Help.           (line  44)
+* widen:                                 Narrowing.           (line  39)
+* widget-backward:                       Changing an Option.  (line  90)
+* widget-complete:                       Changing an Option.  (line  52)
+* widget-forward:                        Changing an Option.  (line  90)
+* window-configuration-to-register <1>:  Split Window.        (line  46)
+* window-configuration-to-register:      RegConfig.           (line   6)
+* word-search-backward:                  Word Search.         (line  33)
+* word-search-forward:                   Word Search.         (line  33)
+* write-abbrev-file:                     Saving Abbrevs.      (line  24)
+* write-file:                            Saving.              (line  73)
 * x-copy-primary-selection:              X Selection Commands.
-* x-create-frame:                        X Resources.
+                                                              (line   6)
+* x-create-frame:                        X Resources.         (line   6)
 * x-delete-primary-selection:            X Selection Commands.
+                                                              (line   6)
 * x-insert-selection:                    X Selection Commands.
+                                                              (line   6)
 * x-kill-primary-selection:              X Selection Commands.
+                                                              (line   6)
 * x-mouse-kill:                          X Selection Commands.
+                                                              (line   6)
 * x-own-secondary-selection:             X Selection Commands.
+                                                              (line   6)
 * x-own-selection:                       X Selection Commands.
+                                                              (line   6)
 * x-set-point-and-insert-selection:      X Selection Commands.
-* xemacs-local-faq:                      Misc Help.
-* Yank:                                  Kill Ring.
-* yank-pop:                              Earlier Kills.
-* yank-rectangle:                        Rectangles.
-* yow:                                   Amusements.
-* zap-to-char:                           Killing.
-* zmacs-activate-region:                 Active Regions.
-* zmacs-deactivate-region:               Active Regions.
+                                                              (line   6)
+* xemacs-local-faq:                      Misc Help.           (line  51)
+* Yank:                                  Kill Ring.           (line   6)
+* yank-pop:                              Earlier Kills.       (line   6)
+* yank-rectangle:                        Rectangles.          (line  63)
+* yow:                                   Amusements.          (line   6)
+* zap-to-char:                           Killing.             (line 129)
+* zmacs-activate-region:                 Active Regions.      (line  88)
+* zmacs-deactivate-region:               Active Regions.      (line  93)
 
 \1f
 File: xemacs.info,  Node: Variable Index,  Next: Concept Index,  Prev: Command Index,  Up: Top
@@ -2533,293 +2866,316 @@ File: xemacs.info,  Node: Variable Index,  Next: Concept Index,  Prev: Command I
 Variable Index
 **************
 
+\0\b[index\0\b]
 * Menu:
 
-* abbrev-all-caps:                       Expanding Abbrevs.
-* abbrev-file-name:                      Saving Abbrevs.
-* abbrev-mode:                           Abbrevs.
-* after-load-alist:                      Loading.
-* after-save-hook:                       Saving.
-* all-christian-calendar-holidays:       Holiday Customizing.
-* all-hebrew-calendar-holidays:          Holiday Customizing.
-* all-islamic-calendar-holidays:         Holiday Customizing.
-* appt-audible:                          Appt Customizing.
-* appt-display-duration:                 Appt Customizing.
-* appt-display-mode-line:                Appt Customizing.
-* appt-message-warning-time:             Appt Customizing.
-* appt-msg-window:                       Appt Customizing.
-* appt-visible:                          Appt Customizing.
-* apropos-do-all:                        Apropos.
-* auto-fill-inhibit-regexp:              Fill Commands.
-* auto-lower-frame:                      XEmacs under X.
-* auto-mode-alist:                       Choosing Modes.
-* auto-raise-frame:                      XEmacs under X.
-* auto-save-default:                     Auto Save Control.
-* auto-save-interval:                    Auto Save Control.
-* auto-save-timeout:                     Auto Save Control.
-* auto-save-visited-file-name:           Auto Save Files.
-* backup-by-copying:                     Backup Copying.
-* backup-by-copying-when-linked:         Backup Copying.
-* backup-by-copying-when-mismatch:       Backup Copying.
-* bell-volume:                           Audible Bell.
-* blink-matching-paren:                  Matching.
-* blink-matching-paren-distance:         Matching.
-* bookmark-save-flag:                    Bookmarks.
-* bookmark-search-size:                  Bookmarks.
-* buffer-file-coding-system:             Recognize Coding.
-* buffer-file-name:                      Visiting.
-* buffer-file-truename:                  Visiting.
-* buffer-read-only:                      Misc Buffer.
-* buffer-tag-table:                      Find Tag.
-* c-argdecl-indent:                      C Indent.
-* c-auto-newline:                        C Indent.
-* c-brace-imaginary-offset:              C Indent.
-* c-brace-offset:                        C Indent.
-* c-continued-statement-offset:          C Indent.
-* c-indent-level:                        C Indent.
-* c-label-offset:                        C Indent.
-* c-mode-hook:                           Program Modes.
-* c-mode-map:                            Keymaps.
-* c-tab-always-indent:                   C Indent.
-* calendar-date-display-form:            Date Display Format.
-* calendar-daylight-savings-ends:        Daylight Savings.
-* calendar-daylight-savings-ends-time:   Daylight Savings.
-* calendar-daylight-savings-starts:      Daylight Savings.
-* calendar-daylight-time-offset:         Daylight Savings.
-* calendar-daylight-time-zone-name:      Sunrise/Sunset.
+* abbrev-all-caps:                       Expanding Abbrevs.   (line  10)
+* abbrev-file-name:                      Saving Abbrevs.      (line  30)
+* abbrev-mode:                           Abbrevs.             (line  12)
+* after-load-alist:                      Loading.             (line  79)
+* after-save-hook:                       Saving.              (line  92)
+* all-christian-calendar-holidays:       Holiday Customizing. (line  22)
+* all-hebrew-calendar-holidays:          Holiday Customizing. (line  22)
+* all-islamic-calendar-holidays:         Holiday Customizing. (line  22)
+* appt-audible:                          Appt Customizing.    (line   9)
+* appt-display-duration:                 Appt Customizing.    (line   9)
+* appt-display-mode-line:                Appt Customizing.    (line   9)
+* appt-message-warning-time:             Appt Customizing.    (line   9)
+* appt-msg-window:                       Appt Customizing.    (line   9)
+* appt-visible:                          Appt Customizing.    (line   9)
+* apropos-do-all:                        Apropos.             (line  59)
+* auto-fill-inhibit-regexp:              Fill Commands.       (line  41)
+* auto-lower-frame:                      XEmacs under X.      (line  59)
+* auto-mode-alist:                       Choosing Modes.      (line  15)
+* auto-raise-frame:                      XEmacs under X.      (line  59)
+* auto-save-default:                     Auto Save Control.   (line   6)
+* auto-save-interval:                    Auto Save Control.   (line  15)
+* auto-save-timeout:                     Auto Save Control.   (line  25)
+* auto-save-visited-file-name:           Auto Save Files.     (line  26)
+* awk-mode-hook:                         CC Mode.             (line   6)
+* backup-by-copying:                     Backup Copying.      (line  25)
+* backup-by-copying-when-linked:         Backup Copying.      (line  25)
+* backup-by-copying-when-mismatch:       Backup Copying.      (line  25)
+* bell-volume:                           Audible Bell.        (line  49)
+* blink-matching-paren:                  Matching.            (line  23)
+* blink-matching-paren-distance:         Matching.            (line  23)
+* bookmark-save-flag:                    Bookmarks.           (line  50)
+* bookmark-search-size:                  Bookmarks.           (line  56)
+* buffer-file-coding-system:             Recognize Coding.    (line  57)
+* buffer-file-name:                      Visiting.            (line  75)
+* buffer-file-truename:                  Visiting.            (line  81)
+* buffer-read-only:                      Misc Buffer.         (line  15)
+* buffer-tag-table:                      Find Tag.            (line  49)
+* c++-mode-hook:                         CC Mode.             (line   6)
+* c-initialization-hook:                 CC Mode.             (line   6)
+* c-mode-common-hook:                    CC Mode.             (line   6)
+* c-mode-hook:                           CC Mode.             (line   6)
+* c-mode-map:                            Keymaps.             (line  12)
+* calendar-date-display-form:            Date Display Format. (line   6)
+* calendar-daylight-savings-ends:        Daylight Savings.    (line  21)
+* calendar-daylight-savings-ends-time:   Daylight Savings.    (line  65)
+* calendar-daylight-savings-starts:      Daylight Savings.    (line  21)
+* calendar-daylight-time-offset:         Daylight Savings.    (line  61)
+* calendar-daylight-time-zone-name:      Sunrise/Sunset.      (line  53)
 * calendar-holiday-marker:               Calendar Customizing.
-* calendar-holidays:                     Holiday Customizing.
-* calendar-latitude:                     Sunrise/Sunset.
+                                                              (line  33)
+* calendar-holidays:                     Holiday Customizing. (line   6)
+* calendar-latitude:                     Sunrise/Sunset.      (line  41)
 * calendar-load-hook:                    Calendar Customizing.
-* calendar-location-name:                Sunrise/Sunset.
-* calendar-longitude:                    Sunrise/Sunset.
-* calendar-standard-time-zone-name:      Sunrise/Sunset.
-* calendar-time-display-form:            Time Display Format.
-* calendar-time-zone:                    Sunrise/Sunset.
+                                                              (line  41)
+* calendar-location-name:                Sunrise/Sunset.      (line  41)
+* calendar-longitude:                    Sunrise/Sunset.      (line  41)
+* calendar-standard-time-zone-name:      Sunrise/Sunset.      (line  53)
+* calendar-time-display-form:            Time Display Format. (line   6)
+* calendar-time-zone:                    Sunrise/Sunset.      (line  53)
 * calendar-today-marker:                 Calendar Customizing.
+                                                              (line  63)
 * calendar-week-start-day:               Move to Beginning or End.
+                                                              (line  33)
 * case-fold-search <1>:                  Replacement and Case.
-* case-fold-search:                      Search Case.
+                                                              (line   6)
+* case-fold-search:                      Search Case.         (line   6)
 * case-replace:                          Replacement and Case.
-* christian-holidays:                    Holiday Customizing.
-* coding:                                Recognize Coding.
-* command-history:                       Repetition.
-* command-line-args:                     Command Switches.
-* comment-column:                        Comments.
-* comment-end:                           Comments.
-* comment-indent-hook:                   Comments.
-* comment-line-start:                    Fortran Comments.
-* comment-line-start-skip:               Fortran Comments.
-* comment-multi-line:                    Comments.
-* comment-start:                         Comments.
-* comment-start-skip:                    Comments.
-* compare-ignore-case:                   Comparing Files.
-* compile-command:                       Compilation.
-* completion-auto-help:                  Completion Options.
-* completion-ignored-extensions:         Completion Options.
-* create-frame-hook:                     XEmacs under X.
-* ctl-arrow:                             Display Vars.
-* ctl-x-map:                             Keymaps.
-* current-input-method:                  Select Input Method.
-* data-directory:                        Startup Paths.
-* data-directory-list:                   Startup Paths.
-* debug-on-error:                        Lisp Debug.
-* debug-on-quit:                         Lisp Debug.
-* default-buffer-file-coding-system:     Specify Coding.
-* default-directory:                     File Names.
-* default-directory-alist:               File Names.
-* default-frame-alist:                   XEmacs under X.
-* default-frame-plist:                   XEmacs under X.
-* default-input-method:                  Select Input Method.
-* default-major-mode:                    Choosing Modes.
-* delete-auto-save-files:                Auto Save Files.
-* delete-old-versions:                   Backup Deletion.
-* describe-function-show-arglist:        Name Help.
-* diary-date-forms:                      Diary Customizing.
-* diary-display-hook:                    Fancy Diary Display.
+                                                              (line   6)
+* christian-holidays:                    Holiday Customizing. (line   6)
+* coding:                                Recognize Coding.    (line  48)
+* command-history:                       Repetition.          (line  57)
+* command-line-args:                     Command Switches.    (line 188)
+* comment-column:                        Comments.            (line  84)
+* comment-end:                           Comments.            (line 107)
+* comment-indent-hook:                   Comments.            (line 124)
+* comment-line-start:                    Fortran Comments.    (line  61)
+* comment-line-start-skip:               Fortran Comments.    (line  61)
+* comment-multi-line:                    Comments.            (line 113)
+* comment-start:                         Comments.            (line 107)
+* comment-start-skip:                    Comments.            (line  97)
+* compare-ignore-case:                   Comparing Files.     (line  29)
+* compile-command:                       Compilation.         (line  36)
+* completion-auto-help:                  Completion Options.  (line  17)
+* completion-ignored-extensions:         Completion Options.  (line   6)
+* create-frame-hook:                     XEmacs under X.      (line  47)
+* ctl-arrow:                             Display Vars.        (line  24)
+* ctl-x-map:                             Keymaps.             (line  41)
+* current-input-method:                  Select Input Method. (line  20)
+* data-directory:                        Startup Paths.       (line 152)
+* data-directory-list:                   Startup Paths.       (line 157)
+* debug-on-error:                        Lisp Debug.          (line   6)
+* debug-on-quit:                         Lisp Debug.          (line   6)
+* default-buffer-file-coding-system:     Specify Coding.      (line  55)
+* default-directory:                     File Names.          (line  27)
+* default-directory-alist:               File Names.          (line  46)
+* default-frame-alist:                   XEmacs under X.      (line  31)
+* default-frame-plist:                   XEmacs under X.      (line  31)
+* default-input-method:                  Select Input Method. (line  35)
+* default-major-mode:                    Choosing Modes.      (line  51)
+* delete-auto-save-files:                Auto Save Files.     (line  30)
+* delete-old-versions:                   Backup Deletion.     (line  17)
+* describe-function-show-arglist:        Name Help.           (line   6)
+* diary-date-forms:                      Diary Customizing.   (line  36)
+* diary-display-hook:                    Fancy Diary Display. (line   6)
 * diary-entry-marker:                    Calendar Customizing.
+                                                              (line  33)
 * diary-file:                            Format of Diary File.
-* diary-list-include-blanks:             Fancy Diary Display.
-* diary-mail-days:                       Diary Commands.
-* diff-switches:                         Comparing Files.
-* dired-kept-versions:                   Dired Deletion.
-* dired-listing-switches:                Dired Enter.
-* display-buffer-function:               Pop Up Window.
-* doc-directory:                         Startup Paths.
-* echo-keystrokes:                       Display Vars.
-* emacs-lisp-mode-hook:                  Program Modes.
-* emacs-roots:                           Startup Paths.
-* EMACSDATA:                             Startup Paths.
-* EMACSLOADPATH:                         Startup Paths.
-* EMACSPATH:                             Startup Paths.
-* enable-local-variables:                File Variables.
-* enable-recursive-minibuffers:          Minibuffer Edit.
-* esc-map:                               Keymaps.
-* european-calendar-style:               Date Formats.
-* exec-directory:                        Startup Paths.
-* exec-path:                             Startup Paths.
-* explicit-shell-file-name:              Interactive Shell.
-* face-frob-from-locale-first:           Faces.
-* file-coding-system-alist:              Recognize Coding.
-* file-name-coding-system:               Specify Coding.
-* fill-column:                           Fill Commands.
-* fill-prefix:                           Fill Prefix.
-* find-file-compare-truenames:           Visiting.
-* find-file-hooks:                       Visiting.
-* find-file-not-found-hooks:             Visiting.
-* find-file-run-dired:                   Visiting.
-* find-file-use-truenames:               Visiting.
-* fortran-check-all-num-for-matching-do: ForIndent Vars.
-* fortran-comment-indent-char:           Fortran Comments.
-* fortran-comment-indent-style:          Fortran Comments.
-* fortran-comment-line-column:           Fortran Comments.
-* fortran-comment-region:                Fortran Comments.
-* fortran-continuation-char:             ForIndent Conv.
-* fortran-continuation-indent:           ForIndent Vars.
-* fortran-do-indent:                     ForIndent Vars.
-* fortran-electric-line-number:          ForIndent Num.
-* fortran-if-indent:                     ForIndent Vars.
-* fortran-line-number-indent:            ForIndent Num.
-* fortran-minimum-statement-indent:      ForIndent Vars.
-* frame-icon-title-format <1>:           Command Switches.
-* frame-icon-title-format:               XEmacs under X.
-* frame-title-format <1>:                Command Switches.
-* frame-title-format:                    XEmacs under X.
-* general-holidays:                      Holiday Customizing.
-* global-map:                            Keymaps.
-* hebrew-holidays:                       Holiday Customizing.
-* help-map:                              Keymaps.
-* holidays-in-diary-buffer:              Diary Customizing.
-* indent-tabs-mode:                      Just Spaces.
-* Info-directory-list:                   Startup Paths.
-* INFOPATH:                              Startup Paths.
+                                                              (line   6)
+* diary-list-include-blanks:             Fancy Diary Display. (line  26)
+* diary-mail-days:                       Diary Commands.      (line  77)
+* diff-switches:                         Comparing Files.     (line   6)
+* dired-kept-versions:                   Dired Deletion.      (line  64)
+* dired-listing-switches:                Dired Enter.         (line   6)
+* display-buffer-function:               Pop Up Window.       (line  33)
+* doc-directory:                         Startup Paths.       (line 148)
+* echo-keystrokes:                       Display Vars.        (line  19)
+* emacs-lisp-mode-hook:                  Mode Hooks.          (line   6)
+* emacs-roots:                           Startup Paths.       (line  38)
+* EMACSDATA:                             Startup Paths.       (line 153)
+* EMACSLOADPATH:                         Startup Paths.       (line 127)
+* EMACSPATH:                             Startup Paths.       (line 145)
+* enable-local-variables:                File Variables.      (line  86)
+* enable-recursive-minibuffers:          Minibuffer Edit.     (line  56)
+* esc-map:                               Keymaps.             (line  41)
+* european-calendar-style:               Date Formats.        (line  39)
+* exec-directory:                        Startup Paths.       (line 137)
+* exec-path:                             Startup Paths.       (line 142)
+* explicit-shell-file-name:              Interactive Shell.   (line  27)
+* face-frob-from-locale-first:           Faces.               (line  77)
+* file-coding-system-alist:              Recognize Coding.    (line  35)
+* file-name-coding-system:               Specify Coding.      (line 100)
+* fill-column:                           Fill Commands.       (line  48)
+* fill-prefix:                           Fill Prefix.         (line  39)
+* find-file-compare-truenames:           Visiting.            (line  81)
+* find-file-hooks:                       Visiting.            (line 127)
+* find-file-not-found-hooks:             Visiting.            (line 127)
+* find-file-run-dired:                   Visiting.            (line 103)
+* find-file-use-truenames:               Visiting.            (line  75)
+* fortran-check-all-num-for-matching-do: ForIndent Vars.      (line   6)
+* fortran-comment-indent-char:           Fortran Comments.    (line  57)
+* fortran-comment-indent-style:          Fortran Comments.    (line  46)
+* fortran-comment-line-column:           Fortran Comments.    (line  46)
+* fortran-comment-region:                Fortran Comments.    (line  71)
+* fortran-continuation-char:             ForIndent Conv.      (line  10)
+* fortran-continuation-indent:           ForIndent Vars.      (line   6)
+* fortran-do-indent:                     ForIndent Vars.      (line   6)
+* fortran-electric-line-number:          ForIndent Num.       (line  21)
+* fortran-if-indent:                     ForIndent Vars.      (line   6)
+* fortran-line-number-indent:            ForIndent Num.       (line  14)
+* fortran-minimum-statement-indent:      ForIndent Vars.      (line   6)
+* frame-icon-title-format <1>:           Command Switches.    (line 218)
+* frame-icon-title-format:               XEmacs under X.      (line  53)
+* frame-title-format <1>:                Command Switches.    (line 218)
+* frame-title-format:                    XEmacs under X.      (line  53)
+* general-holidays:                      Holiday Customizing. (line  14)
+* global-map:                            Keymaps.             (line   6)
+* hebrew-holidays:                       Holiday Customizing. (line   6)
+* help-map:                              Keymaps.             (line  41)
+* holidays-in-diary-buffer:              Diary Customizing.   (line   6)
+* idl-mode-hook:                         CC Mode.             (line   6)
+* indent-tabs-mode:                      Just Spaces.         (line   6)
+* Info-directory-list:                   Startup Paths.       (line 130)
+* INFOPATH:                              Startup Paths.       (line 134)
 * initial-calendar-window-hook:          Calendar Customizing.
-* initial-major-mode:                    Entering Emacs.
-* input-method-highlight-flag:           Input Methods.
-* input-method-verbose-flag:             Input Methods.
-* input-ring-size:                       Interactive Shell.
-* insert-default-directory <1>:          File Names.
-* insert-default-directory:              Minibuffer File.
-* isearch-mode-map:                      Keymaps.
-* islamic-holidays:                      Holiday Customizing.
-* kept-new-versions:                     Backup Deletion.
-* kept-old-versions:                     Backup Deletion.
-* keyboard-translate-table:              Intro to Keystrokes.
-* kill-ring-max:                         Earlier Kills.
-* LaTeX-mode-hook:                       TeX Print.
-* lisp-body-indention:                   Lisp Indent.
-* lisp-directory:                        Startup Paths.
-* lisp-indent-offset:                    Lisp Indent.
-* lisp-interaction-mode-hook:            Program Modes.
-* lisp-mode-hook:                        Program Modes.
-* lisp-mode-map:                         Keymaps.
+                                                              (line  45)
+* initial-major-mode:                    Entering Emacs.      (line  22)
+* input-method-highlight-flag:           Input Methods.       (line  67)
+* input-method-verbose-flag:             Input Methods.       (line  67)
+* input-ring-size:                       Interactive Shell.   (line  55)
+* insert-default-directory <1>:          File Names.          (line  68)
+* insert-default-directory:              Minibuffer File.     (line  35)
+* isearch-mode-map:                      Keymaps.             (line  23)
+* islamic-holidays:                      Holiday Customizing. (line   6)
+* java-mode-hook:                        CC Mode.             (line   6)
+* kept-new-versions:                     Backup Deletion.     (line   6)
+* kept-old-versions:                     Backup Deletion.     (line   6)
+* keyboard-translate-table:              Intro to Keystrokes. (line  53)
+* kill-ring-max:                         Earlier Kills.       (line  48)
+* LaTeX-mode-hook:                       TeX Print.           (line  69)
+* lisp-body-indention:                   Lisp Indent.         (line  22)
+* lisp-directory:                        Startup Paths.       (line 118)
+* lisp-indent-offset:                    Lisp Indent.         (line  17)
+* lisp-interaction-mode-hook:            Mode Hooks.          (line   6)
+* lisp-mode-hook:                        Mode Hooks.          (line   6)
+* lisp-mode-map:                         Keymaps.             (line  12)
 * list-diary-entries-hook:               Included Diary Files.
-* list-directory-brief-switches:         ListDir.
-* list-directory-verbose-switches:       ListDir.
-* load-path <1>:                         Loading.
-* load-path:                             Startup Paths.
-* local-holidays:                        Holiday Customizing.
-* lpr-switches:                          Hardcopy.
-* mail-abbrev-mailrc-file:               Mail Headers.
-* mail-abbrev-mode-regexp:               Mail Headers.
-* mail-alias-separator-string:           Mail Headers.
-* mail-archive-file-name:                Mail Headers.
-* mail-header-separator:                 Mail Format.
-* mail-mode-hook:                        Mail Mode.
-* make-backup-files:                     Backup.
-* make-tags-files-invisible:             Find Tag.
+                                                              (line  17)
+* list-directory-brief-switches:         ListDir.             (line  33)
+* list-directory-verbose-switches:       ListDir.             (line  33)
+* load-path <1>:                         Loading.             (line  39)
+* load-path:                             Startup Paths.       (line 123)
+* local-holidays:                        Holiday Customizing. (line  18)
+* lpr-switches:                          Hardcopy.            (line  24)
+* mail-abbrev-mailrc-file:               Mail Headers.        (line  65)
+* mail-abbrev-mode-regexp:               Mail Headers.        (line  88)
+* mail-alias-separator-string:           Mail Headers.        (line 135)
+* mail-archive-file-name:                Mail Headers.        (line 140)
+* mail-header-separator:                 Mail Format.         (line  21)
+* mail-mode-hook:                        Mail Mode.           (line  86)
+* make-backup-files:                     Backup.              (line   6)
+* make-tags-files-invisible:             Find Tag.            (line  49)
 * mark-diary-entries-hook:               Included Diary Files.
+                                                              (line  17)
 * mark-diary-entries-in-calendar:        Calendar Customizing.
+                                                              (line  22)
 * mark-holidays-in-calendar:             Calendar Customizing.
-* mark-ring:                             Mark Ring.
-* mark-ring-max:                         Mark Ring.
-* meta-flag:                             Meta Key.
-* minibuffer-confirm-incomplete <1>:     Completion Options.
-* minibuffer-confirm-incomplete:         Minibuffer Edit.
-* minibuffer-local-completion-map:       Keymaps.
-* minibuffer-local-map:                  Keymaps.
-* minibuffer-local-must-match-map:       Keymaps.
-* minibuffer-local-ns-map:               Keymaps.
-* mode-line-inverse-video:               Mode Line.
-* modeline-pointer-glyph:                Mouse Selection.
-* muddle-mode-hook:                      Program Modes.
-* next-line-add-newlines:                Moving Point.
-* next-screen-context-lines:             Scrolling.
-* no-redraw-on-reenter:                  Display Vars.
+                                                              (line  29)
+* mark-ring:                             Mark Ring.           (line  32)
+* mark-ring-max:                         Mark Ring.           (line  27)
+* meta-flag:                             Meta Key.            (line  23)
+* minibuffer-confirm-incomplete <1>:     Completion Options.  (line  22)
+* minibuffer-confirm-incomplete:         Minibuffer Edit.     (line  40)
+* minibuffer-local-completion-map:       Keymaps.             (line  23)
+* minibuffer-local-map:                  Keymaps.             (line  23)
+* minibuffer-local-must-match-map:       Keymaps.             (line  23)
+* minibuffer-local-ns-map:               Keymaps.             (line  23)
+* mode-line-inverse-video:               Mode Line.           (line  86)
+* modeline-pointer-glyph:                Mouse Selection.     (line  10)
+* next-line-add-newlines:                Moving Point.        (line 110)
+* next-screen-context-lines:             Scrolling.           (line  50)
+* no-redraw-on-reenter:                  Display Vars.        (line   9)
 * nongregorian-diary-listing-hook:       Hebrew/Islamic Entries.
+                                                              (line  13)
 * nongregorian-diary-marking-hook:       Hebrew/Islamic Entries.
-* nontext-pointer-glyph:                 Mouse Selection.
-* nroff-mode-hook:                       Nroff Mode.
-* number-of-diary-entries:               Diary Customizing.
-* other-holidays:                        Holiday Customizing.
-* outline-mode-hook:                     Outline Mode.
-* outline-regexp:                        Outline Format.
-* page-delimiter:                        Pages.
-* paragraph-separate:                    Paragraphs.
-* paragraph-start:                       Paragraphs.
-* parse-sexp-ignore-comments:            Syntax Entry.
-* PATH:                                  Startup Paths.
-* picture-mode-hook:                     Picture.
-* picture-tab-chars:                     Tabs in Picture.
-* plain-TeX-mode-hook:                   TeX Print.
-* print-diary-entries-hook:              Diary Customizing.
-* repeat-complex-command-map:            Keymaps.
-* require-final-newline:                 Saving.
-* save-abbrevs:                          Saving Abbrevs.
-* scheme-mode-hook:                      Program Modes.
-* scroll-conservatively:                 Scrolling.
-* scroll-step:                           Scrolling.
-* search-slow-speed:                     Incremental Search.
-* search-slow-window-lines:              Incremental Search.
-* selective-display-ellipses <1>:        Outline Visibility.
-* selective-display-ellipses:            Display Vars.
-* sentence-end:                          Sentences.
-* shell-cd-regexp:                       Interactive Shell.
-* shell-file-name:                       Single Shell.
-* shell-popd-regexp:                     Interactive Shell.
-* shell-prompt-pattern:                  Shell Mode.
-* shell-pushd-regexp:                    Interactive Shell.
-* sound-alist:                           Audible Bell.
-* tab-stop-list:                         Tab Stops.
-* tab-width:                             Display Vars.
-* tag-mark-stack-max:                    Find Tag.
-* tag-table-alist <1>:                   Find Tag.
-* tag-table-alist:                       Select Tags Table.
-* tags-always-build-completion-table:    Select Tags Table.
-* tags-build-completion-table:           Find Tag.
-* tags-file-name <1>:                    Find Tag.
-* tags-file-name:                        Select Tags Table.
-* term-file-prefix:                      Terminal Init.
-* term-setup-hook:                       Terminal Init.
-* TeX-mode-hook:                         TeX Print.
-* text-mode-hook:                        Text Mode.
-* text-pointer-glyph:                    Mouse Selection.
+                                                              (line  13)
+* nontext-pointer-glyph:                 Mouse Selection.     (line  10)
+* nroff-mode-hook:                       Nroff Mode.          (line  34)
+* number-of-diary-entries:               Diary Customizing.   (line  14)
+* objc-mode-hook:                        CC Mode.             (line   6)
+* other-holidays:                        Holiday Customizing. (line  31)
+* outline-mode-hook:                     Outline Mode.        (line  12)
+* outline-regexp:                        Outline Format.      (line  41)
+* page-delimiter:                        Pages.               (line  56)
+* paragraph-separate:                    Paragraphs.          (line  40)
+* paragraph-start:                       Paragraphs.          (line  40)
+* parse-sexp-ignore-comments:            Syntax Entry.        (line  94)
+* PATH:                                  Startup Paths.       (line 144)
+* picture-mode-hook:                     Picture.             (line  41)
+* picture-tab-chars:                     Tabs in Picture.     (line   6)
+* pike-mode-hook:                        CC Mode.             (line   6)
+* plain-TeX-mode-hook:                   TeX Print.           (line  69)
+* print-diary-entries-hook:              Diary Customizing.   (line  26)
+* repeat-complex-command-map:            Keymaps.             (line  23)
+* require-final-newline:                 Saving.              (line  88)
+* save-abbrevs:                          Saving Abbrevs.      (line  38)
+* scheme-mode-hook:                      Mode Hooks.          (line   6)
+* scroll-conservatively:                 Scrolling.           (line  84)
+* scroll-step:                           Scrolling.           (line  70)
+* search-slow-speed:                     Incremental Search.  (line 193)
+* search-slow-window-lines:              Incremental Search.  (line 197)
+* selective-display-ellipses <1>:        Outline Visibility.  (line  72)
+* selective-display-ellipses:            Display Vars.        (line  50)
+* sentence-end:                          Sentences.           (line  47)
+* shell-cd-regexp:                       Interactive Shell.   (line  39)
+* shell-file-name:                       Single Shell.        (line  21)
+* shell-popd-regexp:                     Interactive Shell.   (line  39)
+* shell-prompt-pattern:                  Shell Mode.          (line  12)
+* shell-pushd-regexp:                    Interactive Shell.   (line  39)
+* sound-alist:                           Audible Bell.        (line   6)
+* tab-stop-list:                         Tab Stops.           (line  11)
+* tab-width:                             Display Vars.        (line  42)
+* tag-mark-stack-max:                    Find Tag.            (line  49)
+* tag-table-alist <1>:                   Find Tag.            (line  49)
+* tag-table-alist:                       Select Tags Table.   (line   6)
+* tags-always-build-completion-table:    Select Tags Table.   (line  66)
+* tags-build-completion-table:           Find Tag.            (line  49)
+* tags-file-name <1>:                    Find Tag.            (line  49)
+* tags-file-name:                        Select Tags Table.   (line  70)
+* term-file-prefix:                      Terminal Init.       (line  24)
+* term-setup-hook:                       Terminal Init.       (line  29)
+* TeX-mode-hook:                         TeX Print.           (line  69)
+* text-mode-hook:                        Text Mode.           (line  22)
+* text-pointer-glyph:                    Mouse Selection.     (line  10)
 * today-invisible-calendar-hook:         Calendar Customizing.
+                                                              (line  70)
 * today-visible-calendar-hook:           Calendar Customizing.
-* track-eol:                             Moving Point.
-* truncate-lines:                        Continuation Lines.
-* truncate-partial-width-windows:        Split Window.
+                                                              (line  50)
+* track-eol:                             Moving Point.        (line 105)
+* truncate-lines:                        Continuation Lines.  (line  18)
+* truncate-partial-width-windows:        Split Window.        (line  36)
 * vc-command-messages:                   Variables for Check-in/out.
-* vc-comment-alist:                      Version Headers.
-* vc-default-back-end:                   Editing with VC.
-* vc-header-alist:                       Version Headers.
-* vc-initial-comment:                    Editing with VC.
-* vc-keep-workfiles:                     Editing with VC.
-* vc-log-mode-hook:                      Log Entries.
-* vc-make-backup-files:                  Editing with VC.
+                                                              (line  11)
+* vc-comment-alist:                      Version Headers.     (line  35)
+* vc-default-back-end:                   Editing with VC.     (line  92)
+* vc-header-alist:                       Version Headers.     (line  17)
+* vc-initial-comment:                    Editing with VC.     (line 103)
+* vc-keep-workfiles:                     Editing with VC.     (line  53)
+* vc-log-mode-hook:                      Log Entries.         (line  26)
+* vc-make-backup-files:                  Editing with VC.     (line  49)
 * vc-mistrust-permissions:               Variables for Check-in/out.
+                                                              (line  22)
 * vc-path:                               Variables for Check-in/out.
-* vc-static-header-alist:                Version Headers.
+                                                              (line  34)
+* vc-static-header-alist:                Version Headers.     (line  42)
 * vc-suppress-confirm:                   Variables for Check-in/out.
-* version-control:                       Backup Names.
+                                                              (line   6)
+* version-control:                       Backup Names.        (line  21)
 * view-calendar-holidays-initially:      Calendar Customizing.
+                                                              (line  17)
 * view-diary-entries-initially:          Calendar Customizing.
-* window-min-height:                     Change Window.
-* window-min-width:                      Change Window.
-* write-file-hooks:                      Saving.
-* x-frame-defaults:                      XEmacs under X.
-* zmacs-region-stays:                    Active Regions.
-* zmacs-regions:                         Active Regions.
+                                                              (line   6)
+* window-min-height:                     Change Window.       (line  36)
+* window-min-width:                      Change Window.       (line  36)
+* write-file-hooks:                      Saving.              (line  92)
+* x-frame-defaults:                      XEmacs under X.      (line  41)
+* zmacs-region-stays:                    Active Regions.      (line  81)
+* zmacs-regions:                         Active Regions.      (line  28)
 
 \1f
 File: xemacs.info,  Node: Concept Index,  Next: Frame,  Prev: Variable Index,  Up: Top
@@ -2827,543 +3183,573 @@ File: xemacs.info,  Node: Concept Index,  Next: Frame,  Prev: Variable Index,  U
 Concept Index
 *************
 
+\0\b[index\0\b]
 * Menu:
 
-* $ in regexp:                           Regexps.
-* ( in regexp:                           Regexps.
-* ) in regexp:                           Regexps.
-* * in regexp:                           Regexps.
-* *? in regexp:                          Regexps.
-* + in regexp:                           Regexps.
-* +? in regexp:                          Regexps.
-* . in regexp:                           Regexps.
-* .mailrc file:                          Mail Headers.
-* // in file name:                       Minibuffer File.
-* ? in regexp:                           Regexps.
-* ?? in regexp:                          Regexps.
-* [ in regexp:                           Regexps.
-* \ in regexp:                           Regexps.
-* \' in regexp:                          Regexps.
-* \(?: in regexp:                        Regexps.
-* \< in regexp:                          Regexps.
-* \= in regexp:                          Regexps.
-* \> in regexp:                          Regexps.
-* \` in regexp:                          Regexps.
-* \B in regexp:                          Regexps.
-* \b in regexp:                          Regexps.
-* \S in regexp:                          Regexps.
-* \s in regexp:                          Regexps.
-* \W in regexp:                          Regexps.
-* \w in regexp:                          Regexps.
-* \{n,m\} in regexp:                     Regexps.
-* ] in regexp:                           Regexps.
-* ^ in regexp:                           Regexps.
-* Abbrev mode:                           Minor Modes.
-* abbrevs:                               Abbrevs.
-* aborting:                              Quitting.
-* accumulating text:                     Accumulating Text.
+* $ in regexp:                           Regexps.             (line 155)
+* ( in regexp:                           Regexps.             (line 198)
+* ) in regexp:                           Regexps.             (line 198)
+* * in regexp:                           Regexps.             (line  35)
+* *? in regexp:                          Regexps.             (line  78)
+* + in regexp:                           Regexps.             (line  65)
+* +? in regexp:                          Regexps.             (line  91)
+* . in regexp:                           Regexps.             (line  29)
+* .mailrc file:                          Mail Headers.        (line  71)
+* // in file name:                       Minibuffer File.     (line  30)
+* ? in regexp:                           Regexps.             (line  72)
+* ?? in regexp:                          Regexps.             (line  94)
+* [ in regexp:                           Regexps.             (line 106)
+* \ in regexp:                           Regexps.             (line 162)
+* \' in regexp:                          Regexps.             (line 283)
+* \(?: in regexp:                        Regexps.             (line 237)
+* \< in regexp:                          Regexps.             (line 301)
+* \= in regexp:                          Regexps.             (line 287)
+* \> in regexp:                          Regexps.             (line 304)
+* \` in regexp:                          Regexps.             (line 279)
+* \B in regexp:                          Regexps.             (line 297)
+* \b in regexp:                          Regexps.             (line 291)
+* \S in regexp:                          Regexps.             (line 272)
+* \s in regexp:                          Regexps.             (line 265)
+* \W in regexp:                          Regexps.             (line 262)
+* \w in regexp:                          Regexps.             (line 258)
+* \{n,m\} in regexp:                     Regexps.             (line  97)
+* ] in regexp:                           Regexps.             (line 106)
+* ^ in regexp:                           Regexps.             (line 134)
+* Abbrev mode:                           Minor Modes.         (line  31)
+* abbrevs:                               Abbrevs.             (line   6)
+* aborting:                              Quitting.            (line  44)
+* accumulating text:                     Accumulating Text.   (line   6)
 * active fields (customization buffer):  Customization Groups.
-* active regions:                        Active Regions.
-* adding menu items:                     Menu Customization.
-* adding menus:                          Menu Customization.
-* againformation:                        Dissociated Press.
-* Apps menu <1>:                         Apps Menu.
-* Apps menu:                             Pull-down Menus.
-* apropos:                               Apropos.
-* architecture-specific directories:     Startup Paths.
-* arguments (from shell):                Command Switches.
-* arrow keys:                            Moving Point.
-* ASCII:                                 Intro to Keystrokes.
-* Asm mode:                              Asm Mode.
-* astronomical day numbers:              Calendar Systems.
-* audible bell, changing:                Audible Bell.
-* Auto Delete Selection menu item:       Options Menu.
-* Auto Fill mode <1>:                    Minor Modes.
-* Auto Fill mode <2>:                    Comments.
-* Auto Fill mode:                        Auto Fill.
-* Auto-Save mode:                        Auto Save.
-* autoload:                              Loading.
-* automatic package install:             Automatically.
-* available packages:                    Available Packages.
-* backup file:                           Backup.
-* batch mode:                            Command Switches.
-* beginning of line in regexp:           Regexps.
-* bell, changing:                        Audible Bell.
-* binary packages:                       Package Terminology.
-* binding:                               Commands.
-* blank lines <1>:                       Comments.
-* blank lines:                           Blank Lines.
-* body lines (Outline mode):             Outline Format.
-* bold font:                             Face Customization.
-* bookmarks:                             Bookmarks.
-* boredom:                               Amusements.
-* buffer:                                Frame.
-* buffer menu:                           Several Buffers.
-* buffers:                               Buffers.
-* Buffers menu <1>:                      Buffers Menu.
-* Buffers menu:                          Pull-down Menus.
-* Buffers Menu Length... menu item:      Options Menu.
-* Buffers Sub-Menus menu item:           Options Menu.
-* buggestion:                            Dissociated Press.
-* bugs:                                  Bugs.
-* building packages:                     Building Packages.
-* byte code:                             Compiling Libraries.
-* C:                                     Programs.
-* C mode:                                Program Modes.
-* C++ class browser, tags:               Tags.
-* calendar:                              Calendar/Diary.
-* calendar and LaTeX:                    LaTeX Calendar.
+                                                              (line  35)
+* active regions:                        Active Regions.      (line   6)
+* adding menu items:                     Menu Customization.  (line  53)
+* adding menus:                          Menu Customization.  (line  30)
+* againformation:                        Dissociated Press.   (line  27)
+* Apps menu <1>:                         Apps Menu.           (line   6)
+* Apps menu:                             Pull-down Menus.     (line  25)
+* apropos:                               Apropos.             (line   6)
+* architecture-specific directories:     Startup Paths.       (line 105)
+* arguments (from shell):                Command Switches.    (line   6)
+* arrow keys:                            Moving Point.        (line   6)
+* ASCII:                                 Intro to Keystrokes. (line   6)
+* Asm mode:                              Asm Mode.            (line   6)
+* astronomical day numbers:              Calendar Systems.    (line  12)
+* audible bell, changing:                Audible Bell.        (line   6)
+* Auto Delete Selection menu item:       Options Menu.        (line  14)
+* Auto Fill mode <1>:                    Minor Modes.         (line  22)
+* Auto Fill mode <2>:                    Comments.            (line  72)
+* Auto Fill mode:                        Auto Fill.           (line   6)
+* Auto-Save mode:                        Auto Save.           (line   6)
+* autoload:                              Loading.             (line  63)
+* automatic package install:             Automatically.       (line   3)
+* available packages:                    Available Packages.  (line   3)
+* AWK Mode:                              CC Mode.             (line   6)
+* AWK Mode without CC Mode:              Older Modes.         (line   6)
+* backup file:                           Backup.              (line   6)
+* batch mode:                            Command Switches.    (line 118)
+* beginning of line in regexp:           Regexps.             (line 146)
+* bell, changing:                        Audible Bell.        (line   6)
+* binary packages:                       Package Terminology. (line  33)
+* binding:                               Commands.            (line   6)
+* blank lines <1>:                       Comments.            (line  72)
+* blank lines:                           Blank Lines.         (line  16)
+* body lines (Outline mode):             Outline Format.      (line   6)
+* bold font:                             Face Customization.  (line   6)
+* bookmarks:                             Bookmarks.           (line   6)
+* boredom:                               Amusements.          (line   6)
+* buffer:                                Frame.               (line   6)
+* buffer menu:                           Several Buffers.     (line   6)
+* buffers:                               Buffers.             (line   6)
+* Buffers menu <1>:                      Buffers Menu.        (line   6)
+* Buffers menu:                          Pull-down Menus.     (line  35)
+* Buffers Menu Length... menu item:      Options Menu.        (line  14)
+* Buffers Sub-Menus menu item:           Options Menu.        (line  14)
+* buggestion:                            Dissociated Press.   (line  44)
+* bugs:                                  Bugs.                (line   6)
+* building packages:                     Building Packages.   (line   3)
+* byte code:                             Compiling Libraries. (line   6)
+* C Mode:                                CC Mode.             (line   6)
+* C Mode without CC Mode:                Older Modes.         (line   6)
+* C++ class browser, tags:               Tags.                (line  27)
+* C++ Mode:                              CC Mode.             (line   6)
+* calendar:                              Calendar/Diary.      (line   6)
+* calendar and LaTeX:                    LaTeX Calendar.      (line   6)
 * calendar, first day of week:           Move to Beginning or End.
-* candle lighting times:                 Sexp Diary Entries.
-* case conversion <1>:                   Case.
-* case conversion:                       Fixing Case.
-* Case Sensitive Search menu item:       Options Menu.
-* CCL programs:                          Mule and Fonts.
-* centering:                             Fill Commands.
-* change log:                            Change Log.
-* changing buffers:                      Select Buffer.
-* changing menu items:                   Menu Customization.
-* character set:                         Intro to Keystrokes.
-* character set (in regexp):             Regexps.
-* checking in files:                     Concepts of VC.
-* checking out files:                    Concepts of VC.
-* Chinese:                               Mule.
-* Chinese calendar:                      Calendar Systems.
-* choosing packages <1>:                 Which Packages.
-* choosing packages:                     Installing Packages.
-* class browser, C++:                    Tags.
-* Clear menu item:                       Edit Menu.
+                                                              (line  33)
+* candle lighting times:                 Sexp Diary Entries.  (line 119)
+* case conversion <1>:                   Case.                (line   6)
+* case conversion:                       Fixing Case.         (line  16)
+* Case Sensitive Search menu item:       Options Menu.        (line  14)
+* CCL programs:                          Mule and Fonts.      (line   6)
+* centering:                             Fill Commands.       (line  44)
+* change log:                            Change Log.          (line   6)
+* changing buffers:                      Select Buffer.       (line   6)
+* changing menu items:                   Menu Customization.  (line 103)
+* character set:                         Intro to Keystrokes. (line   6)
+* character set (in regexp):             Regexps.             (line 106)
+* checking in files:                     Concepts of VC.      (line  17)
+* checking out files:                    Concepts of VC.      (line  17)
+* Chinese:                               Mule.                (line   6)
+* Chinese calendar:                      Calendar Systems.    (line  53)
+* choosing packages <1>:                 Which Packages.      (line   3)
+* choosing packages:                     Installing Packages. (line  20)
+* class browser, C++:                    Tags.                (line  27)
+* Clear menu item:                       Edit Menu.           (line  13)
 * clipboard selections:                  X Clipboard Selection.
-* coding systems:                        Coding Systems.
-* command <1>:                           Key Bindings.
-* command:                               Commands.
-* command history:                       Repetition.
-* command line arguments:                Command Switches.
-* command name:                          Key Bindings.
-* comments:                              Comments.
-* comparing files:                       Comparing Files.
-* compilation errors:                    Compilation.
-* compiling files:                       Compilation.
-* completion:                            Completion.
-* completion (symbol names):             Lisp Completion.
-* continuation line:                     Continuation Lines.
-* Control-Meta:                          Lists.
-* Coptic calendar:                       Calendar Systems.
-* Copy menu item:                        Edit Menu.
-* copying files:                         Misc File Ops.
-* copying text <1>:                      Accumulating Text.
-* copying text:                          Yanking.
-* core distribution:                     Installing Packages.
-* crashes:                               Auto Save.
-* creating directories:                  File Names.
-* creating files:                        Visiting.
-* current buffer:                        Buffers.
-* current stack frame:                   Lisp Debug.
-* cursor <1>:                            Inserting Text.
-* cursor:                                Point.
-* cursor motion:                         Moving Point.
-* customization <1>:                     Customization.
-* customization <2>:                     Lisp Indent.
-* customization:                         Commands.
-* customization buffer:                  Easy Customization.
+                                                              (line   6)
+* coding systems:                        Coding Systems.      (line   6)
+* command <1>:                           Key Bindings.        (line   7)
+* command:                               Commands.            (line   6)
+* command history:                       Repetition.          (line   6)
+* command line arguments:                Command Switches.    (line   6)
+* command name:                          Key Bindings.        (line   7)
+* comments:                              Comments.            (line   6)
+* comparing files:                       Comparing Files.     (line   6)
+* compilation errors:                    Compilation.         (line   6)
+* compiling files:                       Compilation.         (line  45)
+* completion:                            Completion.          (line   6)
+* completion (symbol names):             Lisp Completion.     (line   6)
+* continuation line:                     Continuation Lines.  (line   6)
+* Control-Meta:                          Lists.               (line   6)
+* Coptic calendar:                       Calendar Systems.    (line  41)
+* Copy menu item:                        Edit Menu.           (line  13)
+* copying files:                         Misc File Ops.       (line  16)
+* copying text <1>:                      Accumulating Text.   (line   6)
+* copying text:                          Yanking.             (line   6)
+* CORBA IDL Mode:                        CC Mode.             (line   6)
+* core distribution:                     Installing Packages. (line  10)
+* crashes:                               Auto Save.           (line   6)
+* creating directories:                  File Names.          (line  51)
+* creating files:                        Visiting.            (line  91)
+* current buffer:                        Buffers.             (line  13)
+* current stack frame:                   Lisp Debug.          (line  44)
+* cursor <1>:                            Inserting Text.      (line   6)
+* cursor:                                Point.               (line   6)
+* cursor motion:                         Moving Point.        (line   6)
+* customization <1>:                     Customization.       (line   6)
+* customization <2>:                     Lisp Indent.         (line   6)
+* customization:                         Commands.            (line   6)
+* customization buffer:                  Easy Customization.  (line   6)
 * customization groups:                  Customization Groups.
-* customizing faces:                     Face Customization.
+                                                              (line   6)
+* customizing faces:                     Face Customization.  (line   6)
 * cut buffers:                           X Selection Commands.
-* Cut menu item:                         Edit Menu.
-* cutting:                               Killing.
-* Cyrillic:                              Mule.
-* day of year:                           General Calendar.
-* daylight savings time:                 Daylight Savings.
-* debugger:                              Lisp Debug.
-* default argument:                      Minibuffer.
-* defuns:                                Defuns.
-* Delete Frame menu item:                File Menu.
-* deleting blank lines:                  Blank Lines.
-* deleting characters and lines:         Erasing.
-* deleting menu items:                   Menu Customization.
-* deleting packages:                     Removing Packages.
-* deletion <1>:                          Killing.
-* deletion:                              Inserting Text.
-* deletion (of files) <1>:               Misc File Ops.
-* deletion (of files):                   Dired.
-* diary:                                 Diary.
-* diary buffer:                          Fancy Diary Display.
+                                                              (line   6)
+* Cut menu item:                         Edit Menu.           (line  13)
+* cutting:                               Killing.             (line   6)
+* Cyrillic:                              Mule.                (line   6)
+* day of year:                           General Calendar.    (line  21)
+* daylight savings time:                 Daylight Savings.    (line   6)
+* debugger:                              Lisp Debug.          (line   6)
+* default argument:                      Minibuffer.          (line  19)
+* defuns:                                Defuns.              (line   6)
+* Delete Frame menu item:                File Menu.           (line  11)
+* deleting blank lines:                  Blank Lines.         (line   6)
+* deleting characters and lines:         Erasing.             (line  24)
+* deleting menu items:                   Menu Customization.  (line  90)
+* deleting packages:                     Removing Packages.   (line   3)
+* deletion <1>:                          Killing.             (line   6)
+* deletion:                              Inserting Text.      (line  13)
+* deletion (of files) <1>:               Misc File Ops.       (line  21)
+* deletion (of files):                   Dired.               (line   6)
+* diary:                                 Diary.               (line   6)
+* diary buffer:                          Fancy Diary Display. (line  11)
 * diary file:                            Format of Diary File.
-* ding:                                  Audible Bell.
-* directories:                           Startup Paths.
-* directory hierarchies:                 Startup Paths.
-* directory listing:                     ListDir.
-* Dired:                                 Dired.
-* disabled command:                      Disabling.
-* disabling menu items:                  Menu Customization.
-* Distribution:                          License.
-* doctor:                                Total Frustration.
-* double slash in file name:             Minibuffer File.
-* drastic changes:                       Reverting.
-* dribble file:                          Bugs.
-* early package hierarchies:             Startup Paths.
-* Ebrowse:                               Tags.
-* echo area:                             Echo Area.
-* Edit menu <1>:                         Edit Menu.
-* Edit menu:                             Pull-down Menus.
+                                                              (line   6)
+* ding:                                  Audible Bell.        (line  15)
+* directories:                           Startup Paths.       (line   6)
+* directory hierarchies:                 Startup Paths.       (line  16)
+* directory listing:                     ListDir.             (line   6)
+* Dired:                                 Dired.               (line   6)
+* disabled command:                      Disabling.           (line   6)
+* disabling menu items:                  Menu Customization.  (line  98)
+* Distribution:                          License.             (line  64)
+* doctor:                                Total Frustration.   (line   6)
+* double slash in file name:             Minibuffer File.     (line  30)
+* drastic changes:                       Reverting.           (line   6)
+* dribble file:                          Bugs.                (line 144)
+* early package hierarchies:             Startup Paths.       (line  49)
+* Ebrowse:                               Tags.                (line  27)
+* echo area:                             Echo Area.           (line   6)
+* Edit menu <1>:                         Edit Menu.           (line   6)
+* Edit menu:                             Pull-down Menus.     (line  20)
 * editable fields (customization buffer): Customization Groups.
-* editing level, recursive <1>:          Quitting.
-* editing level, recursive:              Recursive Edit.
-* EDT:                                   Emulation.
-* Eliza:                                 Total Frustration.
-* Emacs initialization file:             Init File.
-* Emacs-Lisp mode:                       Lisp Eval.
-* enabling menu items:                   Menu Customization.
-* encoding of characters:                Mule.
-* End Macro Recording menu item:         Edit Menu.
-* entering XEmacs:                       Entering Emacs.
-* environment:                           Single Shell.
-* erasing characters and lines:          Erasing.
-* error log:                             Compilation.
-* etags program:                         Create Tags Table.
-* Ethiopic calendar:                     Calendar Systems.
-* Execute Last Macro menu item:          Edit Menu.
-* Exit Emacs menu item:                  File Menu.
-* exiting <1>:                           Recursive Edit.
-* exiting:                               Exiting.
-* expansion (of abbrevs):                Abbrevs.
-* expression:                            Lists.
-* file dates:                            Interlocking.
-* file directory:                        ListDir.
-* File menu <1>:                         File Menu.
-* File menu:                             Pull-down Menus.
-* file names:                            File Names.
-* file protection:                       Interlocking.
-* files <1>:                             Visiting.
-* files <2>:                             Files.
-* files:                                 Basic Files.
-* files, remote:                         Files.
-* fill prefix:                           Fill Prefix.
-* filling:                               Filling.
-* font encoding:                         Mule and Fonts.
-* Font menu item:                        Options Menu.
-* font registry:                         Mule and Fonts.
-* fonts:                                 Mule and Fonts.
-* fonts and faces:                       Face Customization.
-* formfeed:                              Pages.
-* Fortran mode:                          Fortran.
-* frame:                                 Frame.
-* French Revolutionary calendar:         Calendar Systems.
-* function <1>:                          Key Bindings.
-* function:                              Commands.
-* General Public License:                License.
-* getting help with keys:                Basic Help.
-* global keymap:                         Keymaps.
-* global substitution:                   Replace.
-* graphic characters:                    Inserting Text.
-* Greek:                                 Mule.
-* Gregorian calendar:                    Other Calendars.
-* grinding:                              Grinding.
-* hardcopy:                              Hardcopy.
-* header (TeX mode):                     TeX Print.
-* headers (of mail message):             Mail Headers.
-* heading lines (Outline mode):          Outline Format.
-* Hebrew calendar:                       Calendar Systems.
-* help:                                  Help.
-* Help menu <1>:                         Help Menu.
-* Help menu:                             Pull-down Menus.
-* hierarchies:                           Startup Paths.
-* history of commands:                   Repetition.
-* history of minibuffer input:           Minibuffer History.
-* holiday forms:                         Holiday Customizing.
-* holidays:                              Holidays.
+                                                              (line  35)
+* editing level, recursive <1>:          Quitting.            (line  44)
+* editing level, recursive:              Recursive Edit.      (line   6)
+* EDT:                                   Emulation.           (line   6)
+* Eliza:                                 Total Frustration.   (line   6)
+* Emacs initialization file:             Init File.           (line   6)
+* Emacs-Lisp mode:                       Lisp Eval.           (line   6)
+* enabling menu items:                   Menu Customization.  (line  98)
+* encoding of characters:                Mule.                (line   6)
+* End Macro Recording menu item:         Edit Menu.           (line  13)
+* entering XEmacs:                       Entering Emacs.      (line   6)
+* environment:                           Single Shell.        (line  21)
+* erasing characters and lines:          Erasing.             (line  24)
+* error log:                             Compilation.         (line   6)
+* etags program:                         Create Tags Table.   (line   6)
+* Ethiopic calendar:                     Calendar Systems.    (line  41)
+* Execute Last Macro menu item:          Edit Menu.           (line  13)
+* Exit Emacs menu item:                  File Menu.           (line  11)
+* exiting <1>:                           Recursive Edit.      (line  13)
+* exiting:                               Exiting.             (line   6)
+* expansion (of abbrevs):                Abbrevs.             (line   6)
+* expression:                            Lists.               (line  13)
+* file dates:                            Interlocking.        (line   6)
+* file directory:                        ListDir.             (line   6)
+* File menu <1>:                         File Menu.           (line   6)
+* File menu:                             Pull-down Menus.     (line  16)
+* file names:                            File Names.          (line   6)
+* file protection:                       Interlocking.        (line  77)
+* files <1>:                             Visiting.            (line  21)
+* files <2>:                             Files.               (line   6)
+* files:                                 Basic Files.         (line   6)
+* files, remote:                         Files.               (line  13)
+* fill prefix:                           Fill Prefix.         (line   6)
+* filling:                               Filling.             (line   6)
+* font encoding:                         Mule and Fonts.      (line   6)
+* Font menu item:                        Options Menu.        (line  14)
+* font registry:                         Mule and Fonts.      (line   6)
+* fonts:                                 Mule and Fonts.      (line   6)
+* fonts and faces:                       Face Customization.  (line   6)
+* formfeed:                              Pages.               (line   6)
+* Fortran mode:                          Fortran.             (line   6)
+* frame:                                 Frame.               (line   6)
+* French Revolutionary calendar:         Calendar Systems.    (line  29)
+* function <1>:                          Key Bindings.        (line   7)
+* function:                              Commands.            (line   6)
+* General Public License:                License.             (line   7)
+* getting help with keys:                Basic Help.          (line   6)
+* global keymap:                         Keymaps.             (line   6)
+* global substitution:                   Replace.             (line   6)
+* graphic characters:                    Inserting Text.      (line   6)
+* Greek:                                 Mule.                (line   6)
+* Gregorian calendar:                    Other Calendars.     (line   6)
+* grinding:                              Grinding.            (line   6)
+* hardcopy:                              Hardcopy.            (line   6)
+* header (TeX mode):                     TeX Print.           (line  57)
+* headers (of mail message):             Mail Headers.        (line   6)
+* heading lines (Outline mode):          Outline Format.      (line   6)
+* Hebrew calendar:                       Calendar Systems.    (line  16)
+* help:                                  Help.                (line   6)
+* Help menu <1>:                         Help Menu.           (line   6)
+* Help menu:                             Pull-down Menus.     (line  43)
+* hierarchies:                           Startup Paths.       (line  16)
+* history of commands:                   Repetition.          (line   6)
+* history of minibuffer input:           Minibuffer History.  (line   6)
+* holiday forms:                         Holiday Customizing. (line  34)
+* holidays:                              Holidays.            (line   6)
+* Hook variables:                        Mode Hooks.          (line   6)
 * horizontal scrolling:                  Horizontal Scrolling.
-* Icomplete mode:                        Completion Options.
-* ignoriginal:                           Dissociated Press.
-* indentation <1>:                       Comments.
-* indentation <2>:                       Grinding.
-* indentation:                           Indentation.
-* inferior process:                      Compilation.
-* Info:                                  Misc Help.
-* init file:                             Init File.
-* input methods:                         Input Methods.
-* Insert File... menu item:              File Menu.
-* inserting blank lines:                 Blank Lines.
-* insertion:                             Inserting Text.
-* install:                               Installing Packages.
-* installing packages:                   Installing Packages.
-* international scripts:                 Mule.
-* interval operator (in regexps):        Etags Regexps.
-* invisible lines:                       Outline Mode.
-* IPA:                                   Mule.
-* Islamic calendar:                      Calendar Systems.
-* ISO commercial calendar:               Calendar Systems.
-* italic font:                           Face Customization.
-* Japanese:                              Mule.
-* Julian calendar:                       Calendar Systems.
-* Julian day numbers:                    Calendar Systems.
-* justification:                         Fill Commands.
-* key rebinding, permanent:              Init File.
-* key rebinding, this session:           Rebinding.
-* keyboard macros:                       Keyboard Macros.
+                                                              (line  12)
+* Icomplete mode:                        Completion Options.  (line  27)
+* ignoriginal:                           Dissociated Press.   (line  36)
+* indentation <1>:                       Comments.            (line   6)
+* indentation <2>:                       Grinding.            (line   6)
+* indentation:                           Indentation.         (line   6)
+* inferior process:                      Compilation.         (line   6)
+* Info:                                  Misc Help.           (line   6)
+* init file:                             Init File.           (line   6)
+* input methods:                         Input Methods.       (line   6)
+* Insert File... menu item:              File Menu.           (line  11)
+* inserting blank lines:                 Blank Lines.         (line   6)
+* insertion:                             Inserting Text.      (line   6)
+* install:                               Installing Packages. (line   3)
+* installing packages:                   Installing Packages. (line   3)
+* international scripts:                 Mule.                (line   6)
+* interval operator (in regexps):        Etags Regexps.       (line  21)
+* invisible lines:                       Outline Mode.        (line   6)
+* IPA:                                   Mule.                (line   6)
+* Islamic calendar:                      Calendar Systems.    (line  20)
+* ISO commercial calendar:               Calendar Systems.    (line   6)
+* italic font:                           Face Customization.  (line   6)
+* Japanese:                              Mule.                (line   6)
+* Java Mode:                             CC Mode.             (line   6)
+* Julian calendar:                       Calendar Systems.    (line   8)
+* Julian day numbers:                    Calendar Systems.    (line  12)
+* justification:                         Fill Commands.       (line  36)
+* key rebinding, permanent:              Init File.           (line   6)
+* key rebinding, this session:           Rebinding.           (line   6)
+* keyboard macros:                       Keyboard Macros.     (line   6)
 * keycode:                               Super and Hyper Keys.
-* keymap <1>:                            Keymaps.
-* keymap:                                Commands.
-* keystroke:                             Intro to Keystrokes.
-* keysym:                                Intro to Keystrokes.
+                                                              (line  38)
+* keymap <1>:                            Keymaps.             (line   6)
+* keymap:                                Commands.            (line   6)
+* keystroke:                             Intro to Keystrokes. (line   6)
+* keysym:                                Intro to Keystrokes. (line  16)
 * keysyms:                               Super and Hyper Keys.
-* Kill Buffer menu item:                 File Menu.
-* kill ring:                             Yanking.
-* killing:                               Killing.
-* killing characters and lines:          Erasing.
-* killing Emacs:                         Exiting.
-* Korean:                                Mule.
+                                                              (line  38)
+* Kill Buffer menu item:                 File Menu.           (line  11)
+* kill ring:                             Yanking.             (line   6)
+* killing:                               Killing.             (line   6)
+* killing characters and lines:          Erasing.             (line  24)
+* killing Emacs:                         Exiting.             (line   6)
+* Korean:                                Mule.                (line   6)
 * language environments:                 Language Environments.
-* last package hierarchies:              Startup Paths.
-* late package hierarchies:              Startup Paths.
-* LaTeX:                                 TeX Mode.
-* leaving Emacs:                         Exiting.
-* libraries:                             Lisp Libraries.
-* license to copy XEmacs:                License.
-* line number:                           Position Info.
-* line wrapping:                         Continuation Lines.
-* Lisp:                                  Programs.
-* Lisp mode:                             Program Modes.
-* list:                                  Lists.
-* loading libraries:                     Loading.
-* loading Lisp code:                     Lisp Libraries.
-* local keymap:                          Keymaps.
-* local variables:                       Locals.
-* local variables in files:              File Variables.
-* local.rules:                           Local.rules File.
-* locking and version control:           Concepts of VC.
-* log entry:                             Editing with VC.
-* mail <1>:                              Reading Mail.
-* mail:                                  Sending Mail.
-* major modes:                           Major Modes.
-* make:                                  Compilation.
-* manual package install:                Manually.
-* manuals, on-line:                      Misc Help.
-* mark:                                  Mark.
-* mark ring <1>:                         Mark and Region.
-* mark ring:                             Mark Ring.
-* Markov chain:                          Dissociated Press.
-* master file:                           Concepts of VC.
-* matching parentheses:                  Matching.
-* Mayan calendar:                        Calendar Systems.
-* Mayan calendar round:                  Mayan Calendar.
-* Mayan haab calendar:                   Mayan Calendar.
-* Mayan long count:                      Mayan Calendar.
-* Mayan tzolkin calendar:                Mayan Calendar.
-* menus <1>:                             Change Window.
-* menus:                                 Pull-down Menus.
-* message <1>:                           Reading Mail.
-* message:                               Sending Mail.
-* Meta:                                  Words.
-* minibuffer <1>:                        Keymaps.
-* minibuffer <2>:                        M-x.
-* minibuffer:                            Minibuffer.
-* minibuffer history:                    Minibuffer History.
-* minor modes:                           Minor Modes.
-* mistakes, correcting <1>:              Fixit.
-* mistakes, correcting:                  Undo.
-* mocklisp:                              Mocklisp.
-* mode hook:                             Program Modes.
-* mode line <1>:                         Minor Modes.
-* mode line:                             Mode Line.
-* mode, Term:                            Term Mode.
-* modified (buffer):                     Visiting.
-* modifier key:                          Intro to Keystrokes.
+                                                              (line   6)
+* last package hierarchies:              Startup Paths.       (line  49)
+* late package hierarchies:              Startup Paths.       (line  49)
+* LaTeX:                                 TeX Mode.            (line   6)
+* leaving Emacs:                         Exiting.             (line   6)
+* libraries:                             Lisp Libraries.      (line   6)
+* license to copy XEmacs:                License.             (line   7)
+* line number:                           Position Info.       (line  31)
+* line wrapping:                         Continuation Lines.  (line   6)
+* Lisp:                                  Programs.            (line   6)
+* Lisp mode:                             Program Modes.       (line   6)
+* list:                                  Lists.               (line  13)
+* loading libraries:                     Loading.             (line  34)
+* loading Lisp code:                     Lisp Libraries.      (line   6)
+* local keymap:                          Keymaps.             (line  12)
+* local variables:                       Locals.              (line  16)
+* local variables in files:              File Variables.      (line   6)
+* local.rules:                           Local.rules File.    (line   3)
+* locking and version control:           Concepts of VC.      (line  17)
+* log entry:                             Editing with VC.     (line  38)
+* mail <1>:                              Reading Mail.        (line   6)
+* mail:                                  Sending Mail.        (line   6)
+* major modes:                           Major Modes.         (line   6)
+* make:                                  Compilation.         (line   6)
+* manual package install:                Manually.            (line   3)
+* manuals, on-line:                      Misc Help.           (line   6)
+* mark:                                  Mark.                (line   6)
+* mark ring <1>:                         Mark and Region.     (line  35)
+* mark ring:                             Mark Ring.           (line   6)
+* Markov chain:                          Dissociated Press.   (line  36)
+* master file:                           Concepts of VC.      (line   6)
+* matching parentheses:                  Matching.            (line   6)
+* Mayan calendar:                        Calendar Systems.    (line  35)
+* Mayan calendar round:                  Mayan Calendar.      (line  64)
+* Mayan haab calendar:                   Mayan Calendar.      (line  56)
+* Mayan long count:                      Mayan Calendar.      (line  36)
+* Mayan tzolkin calendar:                Mayan Calendar.      (line  48)
+* menus <1>:                             Change Window.       (line  54)
+* menus:                                 Pull-down Menus.     (line  44)
+* message <1>:                           Reading Mail.        (line   6)
+* message:                               Sending Mail.        (line   6)
+* Meta:                                  Words.               (line   6)
+* minibuffer <1>:                        Keymaps.             (line  23)
+* minibuffer <2>:                        M-x.                 (line  18)
+* minibuffer:                            Minibuffer.          (line   6)
+* minibuffer history:                    Minibuffer History.  (line   6)
+* minor modes:                           Minor Modes.         (line   6)
+* mistakes, correcting <1>:              Fixit.               (line   6)
+* mistakes, correcting:                  Undo.                (line   6)
+* mocklisp:                              Mocklisp.            (line   6)
+* mode hook:                             Mode Hooks.          (line   6)
+* mode line <1>:                         Minor Modes.         (line   6)
+* mode line:                             Mode Line.           (line   6)
+* mode, Term:                            Term Mode.           (line   6)
+* modified (buffer):                     Visiting.            (line  41)
+* modifier key:                          Intro to Keystrokes. (line  16)
 * modifier mapping:                      Super and Hyper Keys.
-* moon, phases of:                       Lunar Phases.
+                                                              (line  83)
+* moon, phases of:                       Lunar Phases.        (line   6)
 * mouse operations:                      Additional Mouse Operations.
-* mouse selection:                       Mouse Selection.
-* movement:                              Moving Point.
-* moving inside the calendar:            Calendar Motion.
-* moving point:                          Moving Point.
-* moving text:                           Yanking.
-* moving the cursor:                     Moving Point.
-* MULE:                                  Mule.
-* multi-frame XEmacs:                    XEmacs under X.
-* multibyte characters:                  Mule.
-* named configurations (RCS):            Snapshot Caveats.
-* narrowing:                             Narrowing.
-* New Frame menu item:                   File Menu.
-* newline:                               Inserting Text.
+                                                              (line   6)
+* mouse selection:                       Mouse Selection.     (line   6)
+* movement:                              Moving Point.        (line   6)
+* moving inside the calendar:            Calendar Motion.     (line   6)
+* moving point:                          Moving Point.        (line   6)
+* moving text:                           Yanking.             (line   6)
+* moving the cursor:                     Moving Point.        (line   6)
+* MULE:                                  Mule.                (line   6)
+* multi-frame XEmacs:                    XEmacs under X.      (line  16)
+* multibyte characters:                  Mule.                (line   6)
+* named configurations (RCS):            Snapshot Caveats.    (line   6)
+* narrowing:                             Narrowing.           (line   6)
+* New Frame menu item:                   File Menu.           (line  11)
+* newline:                               Inserting Text.      (line  19)
 * non-incremental search:                Non-Incremental Search.
-* nroff:                                 Nroff Mode.
-* numeric arguments:                     Arguments.
-* omer count:                            Sexp Diary Entries.
-* on-line manuals:                       Misc Help.
-* Open File, New Frame... menu item:     File Menu.
-* Open File... menu item:                File Menu.
-* option <1>:                            Examining.
-* option:                                Variables.
-* Options menu <1>:                      Options Menu.
-* Options menu:                          Pull-down Menus.
-* other editors:                         Emulation.
-* outlines:                              Outline Mode.
-* outragedy:                             Dissociated Press.
-* Overstrike menu item:                  Options Menu.
-* Overwrite mode:                        Minor Modes.
-* package building:                      Building Packages.
-* package distributions:                 Package Terminology.
-* package hierarchies:                   Startup Paths.
-* package path:                          Startup Paths.
-* package tools:                         Automatically.
-* packages <1>:                          Available Packages.
-* packages:                              Packages.
-* page number:                           Position Info.
-* pages:                                 Pages.
-* paragraphs:                            Paragraphs.
-* parasha, weekly:                       Sexp Diary Entries.
-* Paren Highlighting menu item:          Options Menu.
-* parentheses:                           Matching.
-* Paste menu item:                       Edit Menu.
-* pasting:                               Yanking.
-* path:                                  Startup Paths.
-* paths:                                 Startup Paths.
-* per-buffer variables:                  Locals.
-* Persian calendar:                      Calendar Systems.
-* phases of the moon:                    Lunar Phases.
-* pictures:                              Picture.
-* point <1>:                             Inserting Text.
-* point:                                 Point.
-* pointer face:                          Mouse Selection.
-* pointer shapes:                        Mouse Selection.
-* prefix key sequence:                   Key Sequences.
-* presidentagon:                         Dissociated Press.
+                                                              (line   6)
+* nroff:                                 Nroff Mode.          (line   6)
+* numeric arguments:                     Arguments.           (line   6)
+* Objective C Mode:                      CC Mode.             (line   6)
+* Old AWK Mode:                          Older Modes.         (line   6)
+* Old C Mode:                            Older Modes.         (line   6)
+* old-c-mode:                            Older Modes.         (line   6)
+* omer count:                            Sexp Diary Entries.  (line 119)
+* on-line manuals:                       Misc Help.           (line   6)
+* Open File, New Frame... menu item:     File Menu.           (line  11)
+* Open File... menu item:                File Menu.           (line  11)
+* option <1>:                            Examining.           (line  28)
+* option:                                Variables.           (line   6)
+* Options menu <1>:                      Options Menu.        (line   6)
+* Options menu:                          Pull-down Menus.     (line  31)
+* other editors:                         Emulation.           (line   6)
+* outlines:                              Outline Mode.        (line   6)
+* outragedy:                             Dissociated Press.   (line  44)
+* Overstrike menu item:                  Options Menu.        (line  14)
+* Overwrite mode:                        Minor Modes.         (line  26)
+* package building:                      Building Packages.   (line   3)
+* package distributions:                 Package Terminology. (line  24)
+* package hierarchies:                   Startup Paths.       (line  43)
+* package path:                          Startup Paths.       (line  73)
+* package tools:                         Automatically.       (line   3)
+* packages <1>:                          Available Packages.  (line   3)
+* packages:                              Packages.            (line   6)
+* page number:                           Position Info.       (line  31)
+* pages:                                 Pages.               (line   6)
+* paragraphs:                            Paragraphs.          (line   6)
+* parasha, weekly:                       Sexp Diary Entries.  (line 119)
+* Paren Highlighting menu item:          Options Menu.        (line  14)
+* parentheses:                           Matching.            (line   6)
+* Paste menu item:                       Edit Menu.           (line  13)
+* pasting:                               Yanking.             (line   6)
+* path:                                  Startup Paths.       (line   9)
+* paths:                                 Startup Paths.       (line  91)
+* per-buffer variables:                  Locals.              (line  31)
+* Persian calendar:                      Calendar Systems.    (line  47)
+* phases of the moon:                    Lunar Phases.        (line   6)
+* pictures:                              Picture.             (line   6)
+* point <1>:                             Inserting Text.      (line   6)
+* point:                                 Point.               (line   6)
+* pointer face:                          Mouse Selection.     (line  17)
+* pointer shapes:                        Mouse Selection.     (line   6)
+* prefix key sequence:                   Key Sequences.       (line  29)
+* presidentagon:                         Dissociated Press.   (line  18)
 * primary selections:                    X Selection Commands.
-* Print Buffer menu item:                File Menu.
-* prompt:                                Minibuffer.
-* properbose:                            Dissociated Press.
-* Pull-down Menus <1>:                   Change Window.
-* Pull-down Menus:                       Pull-down Menus.
-* query replace:                         Query Replace.
-* quitting:                              Quitting.
-* quitting (in search):                  Incremental Search.
-* quitting Emacs:                        Exiting.
-* quoting:                               Inserting Text.
-* random sentences:                      CONX.
-* RCS:                                   Concepts of VC.
-* Read Only menu item:                   Options Menu.
-* read-only buffer:                      Misc Buffer.
-* rebinding keys, permanently:           Init File.
-* rebinding keys, this session:          Rebinding.
+                                                              (line   6)
+* Print Buffer menu item:                File Menu.           (line  11)
+* Programming Languages:                 Programs.            (line   6)
+* prompt:                                Minibuffer.          (line  13)
+* properbose:                            Dissociated Press.   (line  44)
+* Pull-down Menus <1>:                   Change Window.       (line  54)
+* Pull-down Menus:                       Pull-down Menus.     (line  44)
+* query replace:                         Query Replace.       (line   6)
+* quitting:                              Quitting.            (line   6)
+* quitting (in search):                  Incremental Search.  (line  76)
+* quitting Emacs:                        Exiting.             (line   6)
+* quoting:                               Inserting Text.      (line  33)
+* random sentences:                      CONX.                (line   6)
+* RCS:                                   Concepts of VC.      (line   6)
+* Read Only menu item:                   Options Menu.        (line  14)
+* read-only buffer:                      Misc Buffer.         (line  15)
+* rebinding keys, permanently:           Init File.           (line   6)
+* rebinding keys, this session:          Rebinding.           (line   6)
 * rectangle <1>:                         Rectangles in Picture.
-* rectangle:                             RegRect.
-* rectangles:                            Rectangles.
-* recursive editing level <1>:           Quitting.
-* recursive editing level:               Recursive Edit.
+                                                              (line   6)
+* rectangle:                             RegRect.             (line   6)
+* rectangles:                            Rectangles.          (line   6)
+* recursive editing level <1>:           Quitting.            (line  44)
+* recursive editing level:               Recursive Edit.      (line   6)
 * redefining keys:                       Key Bindings Using Strings.
-* regexp:                                Regexp Search.
-* regexp alternative:                    Regexps.
-* regexp grouping:                       Regexps.
-* region <1>:                            Case.
-* region:                                Mark.
-* registered file:                       Concepts of VC.
-* registers:                             Registers.
-* regular expression:                    Regexp Search.
-* regular packages:                      Package Terminology.
-* remote files:                          Files.
-* removing directories:                  File Names.
-* removing packages:                     Removing Packages.
-* replacement:                           Replace.
-* restriction:                           Narrowing.
-* Revert Buffer menu item:               File Menu.
-* root of a hierarchy:                   Startup Paths.
-* rosh hodesh:                           Sexp Diary Entries.
-* Russian:                               Mule.
-* Save Buffer As ... menu item:          File Menu.
-* Save Buffer menu item:                 File Menu.
-* Save Options:                          Options Menu.
-* saving:                                Visiting.
-* saving option value:                   Changing an Option.
-* SCCS:                                  Concepts of VC.
-* Scheme mode:                           Program Modes.
-* scrolling:                             Scrolling.
-* scrolling in the calendar:             Scroll Calendar.
-* searching:                             Search.
-* selected buffer:                       Buffers.
-* selected window:                       Basic Window.
-* selective display:                     Outline Mode.
-* self-documentation:                    Help.
-* sentences:                             Sentences.
-* setting option value:                  Changing an Option.
-* setting variables:                     Examining.
-* sexp:                                  Lists.
-* sexp diary entries:                    Sexp Diary Entries.
-* shell commands:                        Shell.
-* Shell mode:                            Shell Mode.
+                                                              (line  22)
+* regexp:                                Regexp Search.       (line   6)
+* regexp alternative:                    Regexps.             (line 184)
+* regexp grouping:                       Regexps.             (line 198)
+* region <1>:                            Case.                (line  46)
+* region:                                Mark.                (line   6)
+* registered file:                       Concepts of VC.      (line   6)
+* registers:                             Registers.           (line   6)
+* regular expression:                    Regexp Search.       (line   6)
+* regular packages:                      Package Terminology. (line  11)
+* remote files:                          Files.               (line  13)
+* removing directories:                  File Names.          (line  51)
+* removing packages:                     Removing Packages.   (line   3)
+* replacement:                           Replace.             (line   6)
+* restriction:                           Narrowing.           (line   6)
+* Revert Buffer menu item:               File Menu.           (line  11)
+* root of a hierarchy:                   Startup Paths.       (line  34)
+* rosh hodesh:                           Sexp Diary Entries.  (line 119)
+* Russian:                               Mule.                (line   6)
+* Save Buffer As ... menu item:          File Menu.           (line  11)
+* Save Buffer menu item:                 File Menu.           (line  11)
+* Save Options:                          Options Menu.        (line  14)
+* saving:                                Visiting.            (line  21)
+* saving option value:                   Changing an Option.  (line 101)
+* SCCS:                                  Concepts of VC.      (line   6)
+* scrolling:                             Scrolling.           (line  10)
+* scrolling in the calendar:             Scroll Calendar.     (line   6)
+* searching:                             Search.              (line   6)
+* selected buffer:                       Buffers.             (line  13)
+* selected window:                       Basic Window.        (line  12)
+* selective display:                     Outline Mode.        (line   6)
+* self-documentation:                    Help.                (line   6)
+* sentences:                             Sentences.           (line   6)
+* setting option value:                  Changing an Option.  (line  40)
+* setting variables:                     Examining.           (line   6)
+* sexp:                                  Lists.               (line  13)
+* sexp diary entries:                    Sexp Diary Entries.  (line   6)
+* shell commands:                        Shell.               (line   6)
+* Shell mode:                            Shell Mode.          (line   6)
 * shift modifier:                        Representing Keystrokes.
-* shrinking XEmacs frame:                Exiting.
-* simultaneous editing:                  Interlocking.
-* single-file packages:                  Package Terminology.
-* site-specific directories:             Startup Paths.
-* Size menu item:                        Options Menu.
-* slashes repeated in file name:         Minibuffer File.
-* snapshots and version control:         Snapshots.
-* sorting:                               Sorting.
-* sorting diary entries:                 Fancy Diary Display.
-* source packages:                       Package Terminology.
-* spelling:                              Spelling.
-* Split Frame:                           File Menu.
-* Start Macro Recording menu item:       Edit Menu.
-* starting XEmacs:                       Entering Emacs.
-* startup paths:                         Startup Paths.
-* string substitution:                   Replace.
-* subshell:                              Shell.
-* subtree (Outline mode):                Outline Visibility.
-* sumo package install:                  Sumo.
-* sunrise and sunset:                    Sunrise/Sunset.
-* suspending:                            Exiting.
-* switching buffers:                     Select Buffer.
-* Syntax Highlighting menu item:         Options Menu.
-* syntax table <1>:                      Syntax.
-* syntax table:                          Words.
-* tags table:                            Tags.
-* tags, C++:                             Tags.
-* Teach Extended Commands menu item:     Options Menu.
-* techniquitous:                         Dissociated Press.
-* television:                            Appending Kills.
-* Term mode:                             Term Mode.
-* termscript file:                       Bugs.
-* TeX:                                   TeX Mode.
-* text:                                  Text.
-* Text mode:                             Text Mode.
-* Tools menu <1>:                        Tools Menu.
-* Tools menu:                            Pull-down Menus.
-* top level:                             Mode Line.
-* transposition <1>:                     Lists.
-* transposition <2>:                     Words.
-* transposition:                         Transpose.
-* truncation:                            Continuation Lines.
-* typos:                                 Fixit.
-* Un-split (Keep Others):                File Menu.
-* Un-split (Keep This):                  File Menu.
-* undo:                                  Undo.
-* Undo menu item:                        Edit Menu.
-* variable:                              Variables.
-* variables:                             Commands.
-* version control:                       Version Control.
-* version-specific directories:          Startup Paths.
-* vi:                                    Emulation.
-* viewing:                               Misc File Ops.
-* Viper:                                 Emulation.
-* visiting:                              Visiting.
-* visiting files:                        Visiting.
+                                                              (line  31)
+* shrinking XEmacs frame:                Exiting.             (line   6)
+* simultaneous editing:                  Interlocking.        (line   6)
+* single-file packages:                  Package Terminology. (line  14)
+* site-specific directories:             Startup Paths.       (line 101)
+* Size menu item:                        Options Menu.        (line  14)
+* slashes repeated in file name:         Minibuffer File.     (line  30)
+* snapshots and version control:         Snapshots.           (line   6)
+* sorting:                               Sorting.             (line   6)
+* sorting diary entries:                 Fancy Diary Display. (line  31)
+* source packages:                       Package Terminology. (line  39)
+* spelling:                              Spelling.            (line   6)
+* Split Frame:                           File Menu.           (line  11)
+* Start Macro Recording menu item:       Edit Menu.           (line  13)
+* starting XEmacs:                       Entering Emacs.      (line   6)
+* startup paths:                         Startup Paths.       (line   6)
+* string substitution:                   Replace.             (line   6)
+* subshell:                              Shell.               (line   6)
+* subtree (Outline mode):                Outline Visibility.  (line  48)
+* sumo package install:                  Sumo.                (line   3)
+* sunrise and sunset:                    Sunrise/Sunset.      (line   6)
+* suspending:                            Exiting.             (line   6)
+* switching buffers:                     Select Buffer.       (line   6)
+* Syntax Highlighting menu item:         Options Menu.        (line  14)
+* syntax table <1>:                      Syntax.              (line   6)
+* syntax table:                          Words.               (line  67)
+* tags table:                            Tags.                (line   6)
+* tags, C++:                             Tags.                (line  27)
+* Teach Extended Commands menu item:     Options Menu.        (line  14)
+* techniquitous:                         Dissociated Press.   (line  36)
+* television:                            Appending Kills.     (line   6)
+* Term mode:                             Term Mode.           (line   6)
+* termscript file:                       Bugs.                (line 153)
+* TeX:                                   TeX Mode.            (line   6)
+* text:                                  Text.                (line   6)
+* Text mode:                             Text Mode.           (line   6)
+* Tools menu <1>:                        Tools Menu.          (line   6)
+* Tools menu:                            Pull-down Menus.     (line  40)
+* top level:                             Mode Line.           (line   6)
+* transposition <1>:                     Lists.               (line 108)
+* transposition <2>:                     Words.               (line  55)
+* transposition:                         Transpose.           (line  18)
+* truncation:                            Continuation Lines.  (line  18)
+* typos:                                 Fixit.               (line   6)
+* Un-split (Keep Others):                File Menu.           (line  11)
+* Un-split (Keep This):                  File Menu.           (line  11)
+* undo:                                  Undo.                (line   6)
+* Undo menu item:                        Edit Menu.           (line  13)
+* variable:                              Variables.           (line   6)
+* variables:                             Commands.            (line  43)
+* version control:                       Version Control.     (line   6)
+* version-specific directories:          Startup Paths.       (line  97)
+* vi:                                    Emulation.           (line   6)
+* viewing:                               Misc File Ops.       (line  44)
+* Viper:                                 Emulation.           (line  10)
+* visiting:                              Visiting.            (line  21)
+* visiting files:                        Visiting.            (line   6)
 * weeks, which day they start on:        Move to Beginning or End.
-* Weight menu item:                      Options Menu.
-* which packages:                        Which Packages.
-* widening:                              Narrowing.
-* window:                                Frame.
-* windows:                               Windows.
-* Windows menu:                          Change Window.
-* word search:                           Word Search.
-* words <1>:                             Case.
-* words <2>:                             Words.
-* words:                                 Fixing Case.
-* work file:                             Concepts of VC.
-* wrapping:                              Continuation Lines.
-* X resources:                           X Resources.
-* yahrzeits <1>:                         Sexp Diary Entries.
-* yahrzeits:                             From Other Calendar.
-* yanking:                               Yanking.
-* | in regexp:                           Regexps.
+                                                              (line  33)
+* Weight menu item:                      Options Menu.        (line  14)
+* which packages:                        Which Packages.      (line   3)
+* widening:                              Narrowing.           (line   6)
+* window:                                Frame.               (line   6)
+* windows:                               Windows.             (line   6)
+* Windows menu:                          Change Window.       (line  54)
+* word search:                           Word Search.         (line   6)
+* words <1>:                             Case.                (line  24)
+* words <2>:                             Words.               (line   6)
+* words:                                 Fixing Case.         (line  16)
+* work file:                             Concepts of VC.      (line   6)
+* wrapping:                              Continuation Lines.  (line   6)
+* X resources:                           X Resources.         (line   6)
+* yahrzeits <1>:                         Sexp Diary Entries.  (line 119)
+* yahrzeits:                             From Other Calendar. (line  57)
+* yanking:                               Yanking.             (line   6)
+* | in regexp:                           Regexps.             (line 184)
 
 
index cf05781..3675816 100644 (file)
@@ -1,3 +1,7 @@
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
 2005-12-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
index f913b9e..2d65942 100644 (file)
@@ -1,3 +1,48 @@
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
+2006-01-03  Aidan Kehoe  <kehoea@parhasard.net>
+
+       * easymenu.el: Update copyright. 
+       * easymenu.el (easy-menu-all-popups):
+       Add a docstring. 
+       * easymenu.el (easy-menu-add):
+       Document a bug, rework the function to preserve any existing
+       non-default mode-popup-menu instead of overwriting it, and not to
+       bother normalising the menu title (nothing else does).
+       * easymenu.el (easy-menu-remove):
+       Restore the default mode-popup-menu instead of leaving an empty
+       one when we remove the last easy-menu popup. 
+
+2006-01-06  Adrian Aichner  <adrian@xemacs.org>
+
+       * package-get.el (package-get-download-sites): Add pt.xemacs.org,
+       as suggested by Rodrigo Ventura.
+       * package-get.el (package-get-pre-release-download-sites): Ditto,
+       with replacement of xemacs-21.5 by beta, which is the logical path
+       to our beta core and package pre-releases.
+
+2005-12-17  Adrian Aichner  <adrian@xemacs.org>
+
+       * package-get.el (package-get-download-sites): Add Hong Kong
+       download site.
+       * package-get.el (package-get-pre-release-download-sites): Ditto.
+
+2005-12-26  Vin Shelton  <acs@xemacs.org>
+
+       * find-paths.el:
+       * find-paths.el (paths-emacs-root-p): Add search for package root.
+       * find-paths.el (paths-find-emacs-root): Replaced with
+       paths-find-invocation-roots, which returns a list of roots.
+       * find-paths.el (paths-find-invocation-roots): New.
+       * find-paths.el (paths-find-emacs-roots): Call paths-find-invocation-roots.
+
+2005-12-05  Ville Skyttä  <scop@xemacs.org>
+
+       * minibuf.el (x-library-search-path): Add /usr(/local)/share/X11.
+       * font.el (font-lookup-rgb-components): Ditto, remove stale comment.
+
 2005-12-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
index 88caef1..d0afd32 100644 (file)
@@ -1506,9 +1506,9 @@ one version of a package available.")
 
 (defcustom package-get-install-to-user-init-directory nil "*If non-nil install packages under `user-init-directory'." :type 'boolean :group 'package-get)
 
-(defcustom package-get-download-sites '(("US (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/packages") ("Argentina (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/packages") ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/packages") ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/packages") ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/packages") ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/packages") ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages") ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages") ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") ("Canada (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/packages") ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages") ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages") ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("France (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/packages") ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages") ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/packages") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") ("Taiwan (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/packages") ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ("US (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/packages") ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages") ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
+(defcustom package-get-download-sites '(("US (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/packages") ("Argentina (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/packages") ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/packages") ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/packages") ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/packages") ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/packages") ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages") ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages") ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") ("Canada (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/packages") ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages") ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages") ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("France (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/packages") ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages") ("Hong Kong (hk.xemacs.org)" "ftp.hk.xemacs.org" "pub/xemacsftp/packages") ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/packages") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") ("Portugal (pt.xemacs.org)" "ftp.pt.xemacs.org" "pub/MIRRORS/ftp.xemacs.org/packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") ("Taiwan (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/packages") ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ("US (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/packages") ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages") ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
 
-(defcustom package-get-pre-release-download-sites '(("US Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Argentina Pre-Releases (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/beta/experimental/packages") ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Austria Pre-Releases (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/beta/experimental/packages") ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/beta/experimental/packages") ("Brazil Pre-Releases (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/xemacs-21.5/experimental/packages") ("Canada Pre-Releases (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/beta/experimental/packages") ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") ("Canada Pre-Releases (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages") ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Finland Pre-Releases (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/beta/experimental/packages") ("France Pre-Releases (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/beta/experimental/packages") ("France Pre-Releases (mirror.cict.fr)" "mirror.cict.fr" "xemacs/beta/experimental/packages") ("France Pre-Releases (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/beta/experimental/packages") ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages") ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/beta/experimental/packages") ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/beta/experimental/packages") ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/beta/experimental/packages") ("Taiwan Pre-Releases (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/beta/experimental/packages") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/beta/experimental/packages") ("US Pre-Releases (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/beta/experimental/packages")) "*List of remote sites available for downloading \"Pre-Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Pre-Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
+(defcustom package-get-pre-release-download-sites '(("US Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Argentina Pre-Releases (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/beta/experimental/packages") ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Austria Pre-Releases (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/beta/experimental/packages") ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/beta/experimental/packages") ("Brazil Pre-Releases (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/xemacs-21.5/experimental/packages") ("Canada Pre-Releases (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/beta/experimental/packages") ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") ("Canada Pre-Releases (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages") ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Finland Pre-Releases (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/beta/experimental/packages") ("France Pre-Releases (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/beta/experimental/packages") ("France Pre-Releases (mirror.cict.fr)" "mirror.cict.fr" "xemacs/beta/experimental/packages") ("France Pre-Releases (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/beta/experimental/packages") ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages") ("Hong Kong Pre-Releases (hk.xemacs.org)" "ftp.hk.xemacs.org" "pub/xemacsftp/beta/experimental/packages") ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/beta/experimental/packages") ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Portugal Pre-Releases (pt.xemacs.org)" "ftp.pt.xemacs.org" "pub/MIRRORS/ftp.xemacs.org/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/beta/experimental/packages") ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/beta/experimental/packages") ("Taiwan Pre-Releases (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/beta/experimental/packages") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/beta/experimental/packages") ("US Pre-Releases (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/beta/experimental/packages")) "*List of remote sites available for downloading \"Pre-Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Pre-Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
 
 (defcustom package-get-site-release-download-sites nil "*List of remote sites available for downloading \"Site Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Site Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
 
index 93c9d58..6052fac 100644 (file)
@@ -1,6 +1,6 @@
 ;;; easymenu.el - Easy menu support for Emacs 19 and XEmacs.
 
-;; Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1993, 1994, 1995, 2005 Free Software Foundation, Inc.
 
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Maintainer: XEmacs Development Team
@@ -159,32 +159,52 @@ is a list of menu items, as above."
                    ,doc
                    (interactive "@e")
                    (run-hooks 'activate-menubar-hook)
-                   (setq zmacs-region-stays 't)
+                   (setq zmacs-region-stays t)
                    (popup-menu ,symbol)))))
 
 (defun easy-menu-change (&rest args)
   (when (featurep 'menubar)
     (apply 'add-menu args)))
 
-;; This variable hold the easy-menu mode menus of all major and
-;; minor modes currently in effect in the current buffer.
-(defvar easy-menu-all-popups nil)
+(defvar easy-menu-all-popups nil 
+  "Don't use this. 
+This variable holds the menus of all major and minor modes in effect in the
+current buffer.  ")
 (make-variable-buffer-local 'easy-menu-all-popups)
 
 (defun easy-menu-add (menu &optional map)
   "Add MENU to the current menu bar."
+  ;; If you uncomment the following, do an xemacs -vanilla, type M-x
+  ;; folding-mode RET, you'll see that this code, which theoretically has
+  ;; *scratch* as its buffer context, can't see *scratch*'s value for
+  ;; mode-popup-menu--the default overrides it.  
+  ;;
+  ;; This is not specific to *scratch*--try it on ~/.xemacs/init.el--but it
+  ;; does appear to be specific to the first time mode-popup-menu is
+  ;; accessed as a buffer-local variable in non-interactive code (that is,
+  ;; M-: mode-popup-menu RET gives the correct value).
+  ;; 
+  ;; My fixing this right now isn't going to happen. Aidan Kehoe, 2006-01-03
+;    (message (concat "inside easy-menu-add, menu is %s, "
+;                 "mode-popup-menu is %s, current buffer is %s, "
+;                 "default-value mode-popup-menu is %s, "
+;                 "easy-menu-all-popups is %s")
+;         menu mode-popup-menu (current-buffer) 
+;         (default-value 'mode-popup-menu) easy-menu-all-popups)
   (when (featurep 'menubar)
-    (unless (member menu easy-menu-all-popups)
-      (push menu easy-menu-all-popups))
-    (setq mode-popup-menu (if (> (length easy-menu-all-popups) 1)
-                             (cons (easy-menu-title)
-                                   (reverse easy-menu-all-popups))
-                           (let ((same-as-menu
-                                  (car easy-menu-all-popups)))
-                             (cons (normalize-menu-item-name
-                                    (car same-as-menu))
-                                   (cdr same-as-menu)))))
-
+    ;; Save the existing mode-popup-menu, if it's been changed.
+    (when (and (zerop (length easy-menu-all-popups))
+              (not (equal (default-value 'mode-popup-menu) mode-popup-menu)))
+      (push mode-popup-menu easy-menu-all-popups))
+    ;; Add the menu to our list of all the popups for the buffer. 
+    (pushnew menu easy-menu-all-popups :test 'equal)
+    ;; If there are multiple popup menus available, make the popup menu
+    ;; normally shown with button-3 a menu of them. If there is just one,
+    ;; make that button show it, and no super-menu.
+    (setq mode-popup-menu (if (= 1 (length easy-menu-all-popups))
+                             (car easy-menu-all-popups)
+                           (cons (easy-menu-title)
+                               (reverse easy-menu-all-popups))))
     (cond ((null current-menubar)
           ;; Don't add it to a non-existing menubar.
           nil)
@@ -202,16 +222,20 @@ is a list of menu items, as above."
 (defun easy-menu-remove (menu)
   "Remove MENU from the current menu bar."
   (when (featurep 'menubar)
-    (setq easy-menu-all-popups (delq menu easy-menu-all-popups)
-         mode-popup-menu (if (> (length easy-menu-all-popups) 1)
-                             (cons (easy-menu-title)
-                                   (reverse easy-menu-all-popups))
-                           (let ((same-as-menu
-                                  (car easy-menu-all-popups)))
-                             (cons (normalize-menu-item-name
-                                    (car same-as-menu))
-                                   (cdr same-as-menu)))))
-
+    (setq 
+     ;; Remove this menu from the list of popups we know about. 
+     easy-menu-all-popups (delq menu easy-menu-all-popups)
+     ;; If there are multiple popup menus available, make the popup menu
+     ;; normally shown with button-3 a menu of them. If there is just one,
+     ;; make that button show it, and no super-menu.
+     mode-popup-menu (if (= 1 (length easy-menu-all-popups))
+                        (car easy-menu-all-popups)
+                      (cons (easy-menu-title)
+                            (reverse easy-menu-all-popups))))
+    ;; If we've just set mode-popup-menu to an empty menu, change that menu
+    ;; to its default value (without intervention from easy-menu).
+    (if (zerop (length easy-menu-all-popups))
+       (setq mode-popup-menu (default-value 'mode-popup-menu)))
     (and current-menubar
         (assoc (car menu) current-menubar)
         (delete-menu-item (list (car menu))))))
@@ -261,9 +285,6 @@ The return value can be used as an argument to `easy-menu-add-item'."
     (delete-menu-item (append path (list name))
                      (easy-menu-normalize menu))))
 
-
-
-
 ;; Think up a good title for the menu.  Take the major-mode of the
 ;; buffer, strip the -mode part, convert hyphens to spaces, and
 ;; capitalize it.
index 494ed16..bad05a9 100644 (file)
@@ -108,7 +108,12 @@ from the search."
    ;; in-place or windows-nt
    (and
     (paths-file-readable-directory-p (paths-construct-path (list directory "lisp")))
-    (paths-file-readable-directory-p (paths-construct-path (list directory "etc"))))))
+    (paths-file-readable-directory-p (paths-construct-path (list directory "etc"))))
+
+   ;; searching for a package directory on Windows
+   (and
+    (string-match "win32\\|cygwin" system-configuration)
+    (paths-file-readable-directory-p (paths-construct-path (list directory "xemacs-packages"))))))
 
 (defun paths-root-in-place-p (root)
   "Check if ROOT is an in-place installation root for XEmacs."
@@ -123,9 +128,10 @@ from the search."
              (paths-chase-symlink destination))
          file-name)))
 
-(defun paths-find-emacs-root
-  (invocation-directory invocation-name)
-  "Find the run-time root of XEmacs."
+(defun paths-find-invocation-roots (invocation-directory invocation-name)
+  "Find the list of run-time roots of XEmacs.
+INVOCATION-DIRECTORY is a directory containing the XEmacs executable.
+INVOCATION-NAME is the name of the executable itself."
   (let* ((executable-file-name (paths-chase-symlink
                                (concat invocation-directory
                                        invocation-name)))
@@ -134,10 +140,9 @@ from the search."
                        (paths-construct-path '("..") executable-directory)))
         (maybe-root-2 (file-name-as-directory
                        (paths-construct-path '(".." "..") executable-directory))))
-    (or (and (paths-emacs-root-p maybe-root-1)
-            maybe-root-1)
-       (and (paths-emacs-root-p maybe-root-2)
-            maybe-root-2))))
+
+    (paths-filter #'paths-emacs-root-p
+                 (list maybe-root-1 maybe-root-2))))
 
 (defun paths-construct-path (components &optional expand-directory)
   "Convert list of path components COMPONENTS into a path.
@@ -301,11 +306,8 @@ Otherwise, they are left alone."
 (defun paths-find-emacs-roots (invocation-directory
                               invocation-name)
   "Find all plausible installation roots for XEmacs."
-  (let* ((potential-invocation-root
-         (paths-find-emacs-root invocation-directory invocation-name))
-        (invocation-roots
-         (and potential-invocation-root
-              (list potential-invocation-root)))
+  (let* ((invocation-roots
+         (paths-find-invocation-roots invocation-directory invocation-name))
         (potential-installation-roots
          (paths-uniq-append
           (and configure-exec-prefix-directory
index 02bfd9c..b0e002f 100644 (file)
@@ -1078,8 +1078,6 @@ for use in the 'weight' field of an mswindows font string.")
 The list (R G B) is returned, or an error is signaled if the lookup fails."
   (let ((lib-list (if (boundp 'x-library-search-path)
                      x-library-search-path
-                   ;; This default is from XEmacs 19.13 - hope it covers
-                   ;; everyone.
                    (list "/usr/X11R6/lib/X11/"
                          "/usr/X11R5/lib/X11/"
                          "/usr/lib/X11R6/X11/"
@@ -1090,7 +1088,9 @@ The list (R G B) is returned, or an error is signaled if the lookup fails."
                          "/usr/local/lib/X11R5/X11/"
                          "/usr/X11/lib/X11/"
                          "/usr/lib/X11/"
+                         "/usr/share/X11/"
                          "/usr/local/lib/X11/"
+                         "/usr/local/share/X11/"
                          "/usr/X386/lib/X11/"
                          "/usr/x386/lib/X11/"
                          "/usr/XFree86/lib/X11/"
index 7e4c7c9..8177a3e 100644 (file)
@@ -2196,7 +2196,9 @@ whether it is a file(/result) or a directory (/result/)."
                                "/usr/local/lib/X11R5/X11/"
                                "/usr/X11/lib/X11/"
                                "/usr/lib/X11/"
+                               "/usr/share/X11/"
                                "/usr/local/lib/X11/"
+                               "/usr/local/share/X11/"
                                "/usr/X386/lib/X11/"
                                "/usr/x386/lib/X11/"
                                "/usr/XFree86/lib/X11/"
index 4580677..33d5802 100644 (file)
@@ -220,6 +220,7 @@ directory."
     ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages")
     ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages")
     ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages")
+    ("Hong Kong (hk.xemacs.org)" "ftp.hk.xemacs.org" "pub/xemacsftp/packages")
     ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages")
     ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages")
     ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/packages")
@@ -235,6 +236,7 @@ directory."
     ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages")
     ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages")
     ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages")
+    ("Portugal (pt.xemacs.org)" "ftp.pt.xemacs.org" "pub/MIRRORS/ftp.xemacs.org/packages")
     ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/packages")
 ;   ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages")
     ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages")
@@ -297,6 +299,8 @@ variable actually used to specify package download sites."
      "pub/computing/xemacs/beta/experimental/packages")
     ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org"
      "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages")
+    ("Hong Kong Pre-Releases (hk.xemacs.org)" "ftp.hk.xemacs.org"
+     "pub/xemacsftp/beta/experimental/packages")
     ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org"
      "pub/xemacs/beta/experimental/packages")
     ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org"
@@ -325,6 +329,8 @@ variable actually used to specify package download sites."
      "pub/xemacs/beta/experimental/packages")
     ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org"
      "pub/unix/editors/xemacs/beta/experimental/packages")
+    ("Portugal Pre-Releases (pt.xemacs.org)" "ftp.pt.xemacs.org"
+     "pub/MIRRORS/ftp.xemacs.org/beta/experimental/packages")
     ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org"
      "pub/emacs/xemacs/beta/experimental/packages")
 ;   ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org"
index 9fa21ce..259cf54 100644 (file)
@@ -1,3 +1,7 @@
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
 2005-12-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
index bafcc7b..d6c5abe 100644 (file)
@@ -1,4 +1,16 @@
-2005-12-03  Vin Shelton <acs@xemacs.org>
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
+2005-12-07  Vin Shelton  <acs@xemacs.org>
+
+       * xemacs-faq.texi (Q1.0.5): Updated the dates of my contributions.
+
+2005-12-06  Vin Shelton  <acs@xemacs.org>
+
+       * xemacs-faq.texi: copied from 21.5.
+
+2005-12-03  Vin Shelton  <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
 
@@ -36,7 +48,7 @@
        (Face Convenience Functions): Cross-reference glyph interface.
        Background pixmap is an image specifier, not a glyph.
 
-2005-02-06  Vin Shelton <acs@xemacs.org>
+2005-02-06  Vin Shelton  <acs@xemacs.org>
 
        * XEmacs 21.4.17 is released
 
@@ -78,7 +90,7 @@
 
        * lispref/help.texi: Document 3rd arg to `make-obsolete'.
 
-2004-12-05  Vin Shelton <acs@xemacs.org>
+2004-12-05  Vin Shelton  <acs@xemacs.org>
 
        * XEmacs 21.4.16 is released
 
        run-hook-with-args-until-failure, and
        run-hook-with-args-until-success.
 
-2004-02-02  Vin Shelton <acs@xemacs.org>
+2004-02-02  Vin Shelton  <acs@xemacs.org>
 
        * XEmacs 21.4.15 is released
 
        * lispref/backups.texi (Reverting): Fix the PRINTED-MANUAL-TITLE
        argument for a cross reference to  "The XEmacs User's Manual".
 
-2003-09-03  Vin Shelton <acs@xemacs.org>
+2003-09-03  Vin Shelton  <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
 
index af2fa57..1c2ea47 100644 (file)
@@ -7,10 +7,10 @@
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2003/10/09 19:16:02 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2005/10/14 02:11:49 $
 @sp 1
-@author Tony Rossini <rossini@@u.washington.edu>
 @author Ben Wing <ben@@xemacs.org>
+@author Tony Rossini <rossini@@u.washington.edu>
 @author Chuck Thompson <cthomp@@xemacs.org>
 @author Steve Baur <steve@@xemacs.org>
 @author Andreas Kaempf <andreas@@sccon.com>
 @end direntry
 @end ifinfo
 
+@ignore
+ *****************************************
+ ***** To update the menus and nodes *****
+ *****************************************
+
+First, the first argument to @node (the name itself) needs to be correct.
+Use a macro if necessary to update the @node names from the
+@unnumberedsubsec commands.  Also note that the command we're about to
+run will not correctly fix up the part of the menu to the right of a ::.
+It will leave existing text in place but not change anything.  If you
+make a lot of changes and want to update this semi-automatically, use
+M-x occur to pick out all @unnumberedsubsec lines then do some editing
+magic to coerce them into the right format and cut and paste as necessary:
+
+1. M-x occur @unnumberedsubsec
+2. <select a rectangle including all text before the Q#.#.#>
+3. C-x r t *<space>
+4. go to the top and use the following macro to get the indentation right.
+(setq last-kbd-macro (read-kbd-macro
+"C-s : RET : <right> M-x indent- to- column RET 14 RET <home> <down>"))
+
+5. Cut and paste the menus into the detailmenu at the top and
+   individual menus at the top of the appropriate chapters. (#### I
+   wonder, does texinfo-master-menu generate the detailmenu from the
+   individual menus or vice-versa or neither?)
+
+Then,
+
+6. C-u C-c C-u m (C-u M-x texinfo-master-menu) will update the menus
+   and nodes.  However, it appears that even though it tries to
+   preserve the existing menu structure as much as possible, it
+   doesn't do a perfect job.  It messes up in at least two ways: The
+   indentation in the part of the main menu above the detailmenu will
+   be screwed up, and the #.0 titles will be removed from both the
+   detailmenu and the individual chapter menus.  In addition,
+   sometimes random things get screwed up in individual parts of the
+   menus.  Therefore:
+
+   1. Use the Lisp line below to get the spacing correct for the Q#.#.#
+   menu entries.
+
+(set (make-local-variable 'texinfo-column-for-description) 14)
+
+   2. Copy the whole detailmenu beforehand.
+   3. Run C-u C-c C-u m to fix up the nodes.
+   4. Run `fix-main-menu' and `fix-omitted-menu-lines'.
+   5. Check the new detailmenu carefully to see if anything is screwed up
+      compared to the old detailmenu you copied.
+   6. If so, paste back the appropriate sections and fix up the corresponding
+      part of the chapter-specific menu.
+
+(defun fix-main-menu ()
+  (interactive)
+  (save-restriction
+    (let (p q)
+      (goto-char (point-min))
+      (re-search-forward "^@menu")
+      (setq p (match-beginning 0))
+      (re-search-forward "^$")
+      (setq q (match-end 0))
+      (narrow-to-region p q)
+      (goto-char p)
+      (while (search-forward "::  " nil t)
+        (indent-to-column 26)))))
+
+(defun fix-omitted-menu-lines ()
+  (interactive)
+  (save-excursion
+    (loop for x from 1 to 10 do
+      (goto-char (point-min))
+      (re-search-forward (format "@unnumberedsec \\(%d.0: .*\\)" x))
+      (let ((line (match-string 1)))
+       (re-search-backward "^@menu")
+       (forward-line 1)
+       (unless (looking-at "[0-9]+.0:")
+         (insert line)
+         (insert "\n"))
+       (goto-char (point-min))
+       (re-search-forward "^@menu")
+       (search-forward (format "Q%d.0.1:" x))
+       (forward-line -1)
+       (unless (looking-at "[0-9]+.0:")
+         (insert "\n")
+         (insert line))))))
+
+ *****************************************
+ *****            Other work         *****
+ *****************************************
+
+When you've rearranged and renumbered a bunch of nodes, you can get
+the numbers agreeing again.  The macro below assumes that the
+unnumberedsubsec number is correct, and fixes up the node to agree.
+Only the first part of the node is fixed and the other parts may still
+be wrong; but they will be fixed as part of
+@code{texinfo-master-menu}.
+
+(setq last-kbd-macro (read-kbd-macro
+"<f1> unnumberedsubsec SPC RET C-s : RET <left> C-x C-x <f3> <home> <up> <C-right> <right> C-s , RET <left> C-x C-x <f4> <home> 2*<down>"))
+@end ignore
+
+
 @node Top, Introduction, (dir), (dir)
 @top XEmacs FAQ
 
@@ -77,360 +179,390 @@ library directory>/info/}. For example in
 @c end ifset points to CANONICAL
 
 @menu
-* Introduction::        Introduction, Policy, Credits.
-* Installation::        Installation and Trouble Shooting.
-* Customization::       Customization and Options.
-* Subsystems::          Major Subsystems.
-* Miscellaneous::       The Miscellaneous Stuff.
-* MS Windows::          XEmacs on Microsoft Windows.
-* Current Events::      What the Future Holds.
-* Legacy Versions::     New information about old XEmacsen.
+* Introduction::          Introduction, Policy, Credits.
+* Installation::          Installation and Troubleshooting.
+* Editing::               Editing Functions.
+* Display::               Display Functions.
+* External Subsystems::   Interfacing with the OS and External Devices.
+* Internet::              Connecting to the Internet.
+* Advanced::              Advanced Customization Using XEmacs Lisp.
+* Other Packages::        Other External Packages.
+* Current Events::        What the Future Holds.
+* Legacy Versions::       New information about old XEmacsen.
 
 @detailmenu
-
  --- The Detailed Node Listing ---
 
-Introduction, Policy, Credits
-
-* Q1.0.1::      What is XEmacs?
-* Q1.0.2::      What is the current version of XEmacs?
-* Q1.0.3::      Where can I find it?
-* Q1.0.4::      Why Another Version of Emacs?
-* Q1.0.5::      Why Haven't XEmacs and GNU Emacs Merged?
-* Q1.0.6::      Where can I get help?
-* Q1.0.7::      Where are the mailing lists archived?
-* Q1.0.8::      How do you pronounce XEmacs?
-* Q1.0.9::      What does XEmacs look like?
-* Q1.0.10::     Is there a port of XEmacs to Microsoft ('95 or NT)?
-* Q1.0.11::     Is there a port of XEmacs to the Macintosh?
-* Q1.0.12::     Is there a port of XEmacs to NextStep?
-* Q1.0.13::     Is there a port of XEmacs to OS/2?
-* Q1.0.14::     Where can I get a printed copy of the XEmacs users manual?
-
-Policies:
-* Q1.1.1::      What is the FAQ editorial policy?
-* Q1.1.2::      How do I become a Beta Tester?
-* Q1.1.3::      How do I contribute to XEmacs itself?
-
-Credits:
-* Q1.2.1::      Who wrote XEmacs?
-* Q1.2.2::      Who contributed to this version of the FAQ?
-* Q1.2.3::      Who contributed to the FAQ in the past?
-
-Internationalization:
-* Q1.3.1::      What is the status of internationalization support aka MULE (including Asian language support?
-* Q1.3.2::      How can I help with internationalization?
-* Q1.3.3::      How do I type non-ASCII characters?
-* Q1.3.4::      Can XEmacs messages come out in a different language?
-* Q1.3.5::      Please explain the various input methods in MULE/XEmacs
-* Q1.3.6::      How do I portably code for MULE/XEmacs?
-* Q1.3.7::      How about Cyrillic Modes?
-* Q1.3.8::      Does XEmacs support Unicode?
-* Q1.3.9::      How does XEmacs display Unicode?
-
-Getting Started:
-* Q1.4.1::      What is an @file{init.el} or @file{.emacs} and is there a sample one?
-* Q1.4.2::      Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
-* Q1.4.3::      Any good XEmacs tutorials around?
-* Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
-* Q1.4.5::      And how do I bind it to a key?
-* Q1.4.6::      What's the difference between a macro and a function?
-
-Installation and Trouble Shooting
-
-* Q2.0.1::      Running XEmacs without installing.
-* Q2.0.2::      XEmacs is too big.
-* Q2.0.3::      Compiling XEmacs with Netaudio.
-* Q2.0.4::      Problems with Linux and ncurses.
-* Q2.0.5::      Do I need X11 to run XEmacs?
-* Q2.0.6::      I'm having strange crashes.  What do I do?
-* Q2.0.7::      Libraries in non-standard locations.
-* Q2.0.8::      can't resolve symbol _h_errno
-* Q2.0.9::      Where do I find external libraries?
-* Q2.0.10::     After I run configure I find a coredump, is something wrong?
-* Q2.0.11::     XEmacs can't resolve host names.
-* Q2.0.12::     Why can't I strip XEmacs?
-* Q2.0.13::     I don't need no steenkin' packages.  Do I?
-* Q2.0.14::     How do I figure out which packages to install?
-* Q2.0.15::     EFS fails with "500 AUTH not understood" (NEW)
-* Q2.0.16::     Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW)
-
-Trouble Shooting:
-* Q2.1.1::      XEmacs just crashed on me!
-* Q2.1.2::      Cryptic Minibuffer messages.
-* Q2.1.3::      Translation Table Syntax messages at Startup.
-* Q2.1.4::      Startup warnings about deducing proper fonts?
-* Q2.1.5::      XEmacs cannot connect to my X Terminal.
-* Q2.1.6::      XEmacs just locked up my Linux X server.
-* Q2.1.7::      HP Alt key as Meta.
-* Q2.1.8::      got (wrong-type-argument color-instance-p nil)!
-* Q2.1.9::      XEmacs causes my OpenWindows 3.0 server to crash.
-* Q2.1.10::     Warnings from incorrect key modifiers.
-* Q2.1.11::     Can't instantiate image error... in toolbar
-* Q2.1.12::     Regular Expression Problems on DEC OSF1.
-* Q2.1.13::     HP/UX 10.10 and @code{create_process} failure
-* Q2.1.14::     @kbd{C-g} doesn't work for me.  Is it broken?
-* Q2.1.15::     How to debug an XEmacs problem with a debugger.
-* Q2.1.16::     XEmacs crashes in @code{strcat} on HP/UX 10.
-* Q2.1.17::     @samp{Marker does not point anywhere}.
-* Q2.1.18::     XEmacs is outputting lots of X errors.
-* Q2.1.19::     XEmacs does not follow the local timezone.
-* Q2.1.20::     @samp{Symbol's function definition is void: hkey-help-show.}
-* Q2.1.21::     [This question intentionally left blank]
-* Q2.1.22::     XEmacs seems to take a really long time to do some things.
-* Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
-* Q2.1.24::     XEmacs won't start without network.
-* Q2.1.25::     After upgrading, XEmacs won't do `foo' any more!
-
-Customization and Options
-
-* Q3.0.1::      What version of Emacs am I running?
-* Q3.0.2::      How do I evaluate Elisp expressions?
-* Q3.0.3::      @code{(setq tab-width 6)} behaves oddly.
-* Q3.0.4::      How can I add directories to the @code{load-path}?
-* Q3.0.5::      How to check if a lisp function is defined?
-* Q3.0.6::      Can I force the output of @code{(face-list)} to a buffer?
-* Q3.0.7::      Font selections don't get saved after @code{Save Options}.
-* Q3.0.8::      How do I make a single minibuffer frame?
-* Q3.0.9::      What is @code{Customize}?
-
-X Window System & Resources:
-* Q3.1.1::      Where is a list of X resources?
-* Q3.1.2::      How can I detect a color display?
-* Q3.1.3::      [This question intentionally left blank]
-* Q3.1.4::      [This question intentionally left blank]
-* Q3.1.5::      How can I get the icon to just say @samp{XEmacs}?
-* Q3.1.6::      How can I have the window title area display the full path?
-* Q3.1.7::      @samp{xemacs -name junk} doesn't work?
-* Q3.1.8::      @samp{-iconic} doesn't work.
-
-Textual Fonts & Colors:
-* Q3.2.1::      How can I set color options from @file{init.el}/@file{.emacs}?
-* Q3.2.2::      How do I set the text, menu and modeline fonts?
-* Q3.2.3::      How can I set the colors when highlighting a region?
-* Q3.2.4::      How can I limit color map usage?
-* Q3.2.5::      My tty supports color, but XEmacs doesn't use them.
-* Q3.2.6::      Can I have pixmap backgrounds in XEmacs?
-
-The Modeline:
-* Q3.3.1::      How can I make the modeline go away?
-* Q3.3.2::      How do you have XEmacs display the line number in the modeline?
-* Q3.3.3::      How do I get XEmacs to put the time of day on the modeline?
-* Q3.3.4::      How do I turn off current chapter from AUC TeX modeline?
-* Q3.3.5::      How can one change the modeline color based on the mode used?
-
-Multiple Device Support:
-* Q3.4.1::      How do I open a frame on another screen of my multi-headed display?
-* Q3.4.2::      Can I really connect to a running XEmacs after calling up over a modem?  How?
-
-The Keyboard:
-* Q3.5.1::      How can I bind complex functions (or macros) to keys?
-* Q3.5.2::      How can I stop down-arrow from adding empty lines to the bottom of my buffers?
-* Q3.5.3::      How do I bind C-. and C-; to scroll one line up and down?
-* Q3.5.4::      Globally binding @kbd{Delete}?
-* Q3.5.5::      Scrolling one line at a time.
-* Q3.5.6::      How to map @kbd{Help} key alone on Sun type4 keyboard?
-* Q3.5.7::      How can you type in special characters in XEmacs?
-* Q3.5.8::      [This question intentionally left blank]
-* Q3.5.9::      How do I make the Delete key delete forward?
-* Q3.5.10::     Can I turn on @dfn{sticky} modifier keys?
-* Q3.5.11::     How do I map the arrow keys?
-
-The Cursor:
-* Q3.6.1::      Is there a way to make the bar cursor thicker?
-* Q3.6.2::      Is there a way to get back the old block cursor where the cursor covers the character in front of the point?
-* Q3.6.3::      Can I make the cursor blink?
-
-The Mouse and Highlighting:
-* Q3.7.1::      How can I turn off Mouse pasting?
-* Q3.7.2::      How do I set control/meta/etc modifiers on mouse buttons?
-* Q3.7.3::      Clicking the left button does not do anything in buffer list.
-* Q3.7.4::      How can I get a list of buffers when I hit mouse button 3?
-* Q3.7.5::      Why does cut-and-paste not work between XEmacs and a cmdtool?
-* Q3.7.6::      How I can set XEmacs up so that it pastes where the text cursor is?
-* Q3.7.7::      How do I select a rectangular region?
-* Q3.7.8::      Why does @kbd{M-w} take so long?
-
-The Menubar and Toolbar:
-* Q3.8.1::      How do I get rid of the menu (or menubar)?
-* Q3.8.2::      Can I customize the basic menubar?
-* Q3.8.3::      How do I control how many buffers are listed in the menu @code{Buffers} list?
-* Q3.8.4::      Resources like @code{Emacs*menubar*font} are not working?
-* Q3.8.5::      How can I bind a key to a function to toggle the toolbar?
-
-Scrollbars:
-* Q3.9.1::      How can I disable the scrollbar?
-* Q3.9.2::      How can one use resources to change scrollbar colors?
-* Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
-* Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
-
-Text Selections:
-* Q3.10.1::     How can I turn off or change highlighted selections?
-* Q3.10.2::     How do I get that typing on an active region removes it?
-* Q3.10.3::     Can I turn off the highlight during isearch?
-* Q3.10.4::     How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
-* Q3.10.5::     The region disappears when I hit the end of buffer while scrolling.
-* Q3.10.6::     Why is killing so slow?
-
-Major Subsystems
-
-* Q4.0.1::      How do I set up VM to retrieve remote mail using POP?
-* Q4.0.2::      How do I get VM to filter mail for me?
-* Q4.0.3::      How can I get VM to automatically check for new mail?
-* Q4.0.4::      [This question intentionally left blank]
-* Q4.0.5::      How do I get my outgoing mail archived?
-* Q4.0.6::      I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
-* Q4.0.7::      Is there a mailing list or FAQ for VM?
-* Q4.0.8::      Remote mail reading with VM.
-* Q4.0.9::      rmail or VM gets an error incorporating new mail.
-* Q4.0.10::     How do I make VM stay in a single frame?
-* Q4.0.11::     How do I make VM or mh-e display graphical smilies?
-* Q4.0.12::     Customization of VM not covered in the manual or here.
-
-Web browsing with W3:
-* Q4.1.1::      What is W3?
-* Q4.1.2::      How do I run W3 from behind a firewall?
-* Q4.1.3::      Is it true that W3 supports style sheets and tables?
-
-Reading Netnews and Mail with Gnus:
-* Q4.2.1::      GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
-* Q4.2.2::      [This question intentionally left blank]
-* Q4.2.3::      How do I make Gnus stay within a single frame?
-* Q4.2.4::      How do I customize the From: line?
-
-Other Mail & News:
-* Q4.3.1::      How can I read and/or compose MIME messages?
-* Q4.3.2::      What is TM and where do I get it?
-* Q4.3.3::      Why isn't this @code{movemail} program working?
-* Q4.3.4::      Movemail is also distributed by Netscape?  Can that cause problems?
-* Q4.3.5::      Where do I find pstogif (required by tm)?
-
-Sparcworks, EOS, and WorkShop:
-* Q4.4.1::      What is SPARCworks, EOS, and WorkShop
-* Q4.4.2::      How do I start the Sun Workshop support in XEmacs 21?
-
-Energize:
-* Q4.5.1::      What is/was Energize?
-
-Infodock:
-* Q4.6.1::      What is Infodock?
-
-Other Unbundled Packages:
-* Q4.7.1::      What is AUC TeX?  Where do you get it?
-* Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
-* Q4.7.3::      [This question intentionally left blank]
-* Q4.7.4::      Problems installing AUC TeX
-* Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
-* Q4.7.6::      Is there a MatLab mode?
-* Q4.7.7::      Can I edit files on other hosts?
-
-The Miscellaneous Stuff
-
-* Q5.0.1::      How can I do source code highlighting using font-lock?
-* Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
-* Q5.0.3::      How do I get @samp{More} Syntax Highlighting on by default?
-* Q5.0.4::      How can I enable auto-indent and/or Filladapt?
-* Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
-* Q5.0.6::      How do I start up a second shell buffer?
-* Q5.0.7::      Telnet from shell filters too much.
-* Q5.0.8::      Why does edt emulation not work?
-* Q5.0.9::      How can I emulate VI and use it as my default mode?
-* Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     [This question intentionally left blank]
-* Q5.0.12::     How do I disable gnuserv from opening a new frame?
-* Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
-* Q5.0.14::     Strange things are happening in Shell Mode.
-* Q5.0.15::     Where do I get the latest CC Mode?
-* Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
-* Q5.0.17::     How can I get two instances of info?
-* Q5.0.18::     [This question intentionally left blank]
-* Q5.0.19::     Is there something better than LaTeX mode?
-* Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
-
-Emacs Lisp Programming Techniques:
-* Q5.1.1::      The difference in key sequences between XEmacs and GNU Emacs?
-* Q5.1.2::      Can I generate "fake" keyboard events?
-* Q5.1.3::      Could you explain @code{read-kbd-macro} in more detail?
-* Q5.1.4::      What is the performance hit of @code{let}?
-* Q5.1.5::      What is the recommended use of @code{setq}?
-* Q5.1.6::      What is the typical misuse of @code{setq} ?
-* Q5.1.7::      I like the @code{do} form of cl, does it slow things down?
-* Q5.1.8::      I like recursion, does it slow things down?
-* Q5.1.9::      How do I put a glyph as annotation in a buffer?
-* Q5.1.10::     @code{map-extents} won't traverse all of my extents!
-* Q5.1.11::     My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
-
-Sound:
-* Q5.2.1::      How do I turn off the sound?
-* Q5.2.2::      How do I get funky sounds instead of a boring beep?
-* Q5.2.3::      What's NAS, how do I get it?
-* Q5.2.4::      Sunsite sounds don't play.
-
-Miscellaneous:
-* Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
-* Q5.3.2::      [This question intentionally left blank]
-* Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
-* Q5.3.4::      Getting @kbd{M-x lpr} to work with postscript printer.
-* Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
-* Q5.3.6::      [This question intentionally left blank]
-* Q5.3.7::      Can I have the end of the buffer delimited in some way?
-* Q5.3.8::      How do I insert today's date into a buffer?
-* Q5.3.9::      Are only certain syntactic character classes available for abbrevs?
-* Q5.3.10::     How can I get those oh-so-neat X-Face lines?
-* Q5.3.11::     How do I add new Info directories?
-* Q5.3.12::     What do I need to change to make printing work?
-
-XEmacs on MS Windows
-
-General Info:
-* Q6.0.1::      What is the status of the XEmacs port to Windows?
-* Q6.0.2::      What flavors of MS Windows are supported?  The list name implies NT only.
-* Q6.0.3::      Are binaries available?
-* Q6.0.4::      Can I build XEmacs on MS Windows with X support?  Do I need to?
-* Q6.0.5::      I'd like to help out.  What do I do?
-* Q6.0.6::      What are Cygwin and MinGW, and do I need them to run XEmacs?
-* Q6.0.7::      What exactly are all the different ways to build XEmacs under Windows?
-
-Building XEmacs on MS Windows:
-* Q6.1.1::      What compiler/libraries do I need to compile XEmacs?
-* Q6.1.2::      How do I compile the native port?
-* Q6.1.3::      What do I need for Cygwin?
-* Q6.1.4::      How do I compile under Cygwin?
-* Q6.1.5::      How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
-* Q6.1.6::      I decided to run with X.  Where do I get an X server?
-* Q6.1.7::      How do I compile with X support?
-
-Customization and User Interface:
-* Q6.2.1::      How does the port cope with differences in the Windows user interface?
-* Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
-* Q6.2.3::      Where do I put my @file{init.el}/@file{.emacs} file?
-* Q6.2.4::      How do I get Windows Explorer to associate a file type with XEmacs?
-* Q6.2.5::      Is it possible to print from XEmacs?
-
-Miscellaneous:
-* Q6.3.1::      Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
-* Q6.3.2::      What are the differences between the various MS Windows emacsen?
-* Q6.3.3::      XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
-* Q6.3.4::      What is the porting team doing at the moment?
-
-Troubleshooting:
-* Q6.4.1::      XEmacs won't start on Windows.
-* Q6.4.2::      Why do I get a blank toolbar on Windows 95?
-* Q6.4.3::      XEmacs complains "No such file or directory, diff"
-
-What the Future Holds
-
-* Q7.0.1::      What new features will be in XEmacs soon?
-* Q7.0.2::      What's new in XEmacs 21.4?
-* Q7.0.3::      What's new in XEmacs 21.1?
-* Q7.0.4::      What's new in XEmacs 20.4?
-* Q7.0.5::      What's new in XEmacs 20.3?
-* Q7.0.6::      What's new in XEmacs 20.2?
-
-New information about old XEmacsen.
-
-XEmacs 21.1:
-* Q8.0.1::      Gnus 5.10 won't display smileys in XEmacs 21.1.
+1 Introduction, Policy, Credits
+
+1.0: What is XEmacs?
+* Q1.0.1::    What is XEmacs?
+* Q1.0.2::    What is the current version of XEmacs?
+* Q1.0.3::    How do you pronounce XEmacs?
+* Q1.0.4::    What does XEmacs look like?
+* Q1.0.5::    Who wrote XEmacs?
+* Q1.0.6::    Who wrote the FAQ?
+
+1.1: Getting XEmacs
+* Q1.1.1::    Where can I find XEmacs?
+* Q1.1.2::    Are binaries available?
+* Q1.1.3::    How do I get the bleeding-edge sources?
+* Q1.1.4::    Where can I obtain a printed copy of the XEmacs User's Manual?
+
+1.2: Versions for Different Operating Systems
+* Q1.2.1::    Do I need X11 to run XEmacs?
+* Q1.2.2::    What versions of Unix does XEmacs run on?
+* Q1.2.3::    Is there a port of XEmacs to Microsoft Windows?
+* Q1.2.4::    Can I build XEmacs on MS Windows with X support?  Do I need to?
+* Q1.2.5::    What are Cygwin and MinGW, and do I need them to run XEmacs?
+* Q1.2.6::    What are the differences between the various MS Windows emacsen?
+* Q1.2.7::    How does the port cope with differences in the Windows user interface?
+* Q1.2.8::    Is there a port of XEmacs to the Macintosh?
+* Q1.2.9::    Is there a port of XEmacs to MS-DOS?
+* Q1.2.10::   Is there a port of XEmacs to OS/2?
+* Q1.2.11::   Is there a port of XEmacs to NextStep?
+* Q1.2.12::   Is there a port of XEmacs to VMS?
+
+1.3: Getting Started
+* Q1.3.1::    What is an @file{init.el} or @file{.emacs} and is there a sample one?
+* Q1.3.2::    Where do I put my @file{init.el} file?
+* Q1.3.3::    Can I use the same @file{init.el} with the other Emacs?
+* Q1.3.4::    Any good XEmacs tutorials around?
+* Q1.3.5::    May I see an example of a useful XEmacs Lisp function?
+* Q1.3.6::    And how do I bind it to a key?
+* Q1.3.7::    What's the difference between a macro and a function?
+* Q1.3.8::    What is @code{Custom}?
+
+1.4: Getting Help
+* Q1.4.1::    Where can I get help?
+* Q1.4.2::    Which mailing lists are there?
+* Q1.4.3::    Where are the mailing lists archived?
+* Q1.4.4::    How can I get two instances of info?
+* Q1.4.5::    How do I add new Info directories?
+
+1.5: Contributing to XEmacs
+* Q1.5.1::    How do I submit changes to the FAQ?
+* Q1.5.2::    How do I become a beta tester?
+* Q1.5.3::    How do I contribute to XEmacs itself?
+* Q1.5.4::    How do I get started developing XEmacs?
+* Q1.5.5::    What's the basic layout of the code?
+
+1.6: Politics (XEmacs vs. GNU Emacs)
+* Q1.6.1::    What is GNU Emacs?
+* Q1.6.2::    How does XEmacs differ from GNU Emacs?
+* Q1.6.3::    How much does XEmacs differ?
+* Q1.6.4::    Is XEmacs "GNU"?
+* Q1.6.5::    What is the correct way to refer to XEmacs and GNU Emacs?
+* Q1.6.6::    Why haven't XEmacs and GNU Emacs merged?
+
+1.7: External Packages
+* Q1.7.1::    What is the package system?
+* Q1.7.2::    Which external packages are there?
+* Q1.7.3::    Do I need to have the packages to run XEmacs? 
+* Q1.7.4::    Is there a way to find which package has particular functionality?
+
+1.8: Internationalization
+* Q1.8.1::    What is the status of internationalization support aka MULE (including Asian language support)?
+* Q1.8.2::    How can I help with internationalization?
+* Q1.8.3::    How do I type non-ASCII characters?
+* Q1.8.4::    Can XEmacs messages come out in a different language?
+* Q1.8.5::    Please explain the various input methods in MULE/XEmacs
+* Q1.8.6::    How do I portably code for MULE/XEmacs?
+* Q1.8.7::    How about Cyrillic modes?
+* Q1.8.8::    Does XEmacs support Unicode?
+* Q1.8.9::    How does XEmacs display Unicode?
+
+2 Installation and Troubleshooting
+
+2.0: Installation (General)
+* Q2.0.1::    How do I build and install XEmacs?
+* Q2.0.2::    Where do I find external libraries?
+* Q2.0.3::    How do I specify the paths that XEmacs uses for finding files?
+* Q2.0.4::    Running XEmacs without installing
+* Q2.0.5::    XEmacs is too big
+
+2.1: Package Installation
+* Q2.1.1::    How do I install the packages?
+* Q2.1.2::    Can I install the packages individually?
+* Q2.1.3::    Can I install the packages automatically?
+* Q2.1.4::    Can I upgrade or remove packages?
+* Q2.1.5::    Which packages to install?
+* Q2.1.6::    Can you describe the package location process in more detail?
+* Q2.1.7::    EFS fails with "500 AUTH not understood"
+
+2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
+* Q2.2.1::    Libraries in non-standard locations
+* Q2.2.2::    Why can't I strip XEmacs?
+
+2.3: Windows Installation (Windows, Cygwin, MinGW)
+* Q2.3.1::    What exactly are all the different ways to build XEmacs under Windows?
+* Q2.3.2::    What compiler/libraries do I need to compile XEmacs?
+* Q2.3.3::    How do I compile the native port?
+* Q2.3.4::    What do I need for Cygwin?
+* Q2.3.5::    How do I compile under Cygwin?
+* Q2.3.6::    How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
+* Q2.3.7::    How do I compile with X support?
+* Q2.3.8::    Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
+
+2.4: General Troubleshooting
+* Q2.4.1::    How do I deal with bugs or with problems building, installing, or running?
+* Q2.4.2::    Help!  XEmacs just crashed on me!
+* Q2.4.3::    XEmacs crashes and I compiled it myself.
+* Q2.4.4::    How to debug an XEmacs problem with a debugger
+* Q2.4.5::    I get a cryptic error message when trying to do something.
+* Q2.4.6::    XEmacs hangs when I try to do something.
+* Q2.4.7::    I get an error message when XEmacs is running in batch mode.
+* Q2.4.8::    The keyboard or mouse is not working properly, or I have some other event-related problem.
+* Q2.4.9::    @kbd{C-g} doesn't work for me.  Is it broken?
+* Q2.4.10::   How do I debug process-related problems?
+* Q2.4.11::   XEmacs is outputting lots of X errors.
+* Q2.4.12::   After upgrading, XEmacs won't do `foo' any more!
+
+2.5: Startup-Related Problems
+* Q2.5.1::    XEmacs cannot connect to my X Terminal!
+* Q2.5.2::    Startup problems related to paths or package locations.
+* Q2.5.3::    XEmacs won't start without network.
+* Q2.5.4::    Startup warnings about deducing proper fonts?
+* Q2.5.5::    Warnings from incorrect key modifiers.
+* Q2.5.6::    XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
+
+3 Editing Functions
+
+3.0: The Keyboard
+* Q3.0.1::    How can I customize the keyboard?
+* Q3.0.2::    How can I bind complex functions (or macros) to keys?
+* Q3.0.3::    How do I bind C-. and C-; to scroll one line up and down?
+* Q3.0.4::    Globally binding @kbd{Delete}?
+* Q3.0.5::    How to map @kbd{Help} key alone on Sun type4 keyboard?
+* Q3.0.6::    How can you type in special characters in XEmacs?
+* Q3.0.7::    Can I turn on @dfn{sticky} modifier keys?
+* Q3.0.8::    How do I map the arrow keys?
+* Q3.0.9::    HP Alt key as Meta.
+* Q3.0.10::   Why does edt emulation not work?
+* Q3.0.11::   How can I emulate VI and use it as my default mode?
+
+3.1: The Mouse
+* Q3.1.1::    How can I turn off Mouse pasting?
+* Q3.1.2::    How do I set control/meta/etc modifiers on mouse buttons?
+* Q3.1.3::    Clicking the left button does not do anything in buffer list.
+* Q3.1.4::    How can I get a list of buffers when I hit mouse button 3?
+* Q3.1.5::    How can I set XEmacs up so that it pastes where the text cursor is?
+
+3.2: Buffers, Text Editing
+* Q3.2.1::    Can I have the end of the buffer delimited in some way?
+* Q3.2.2::    How do I insert today's date into a buffer?
+* Q3.2.3::    How do I get a single minibuffer frame?
+* Q3.2.4::    How can I enable auto-indent and/or Filladapt?
+* Q3.2.5::    How can I get XEmacs to come up in text/auto-fill mode by default?
+
+3.3: Text Selections
+* Q3.3.1::    How do I select a rectangular region?
+* Q3.3.2::    How can I turn off or change highlighted selections?
+* Q3.3.3::    How do I cause typing on an active region to remove it?
+* Q3.3.4::    Can I turn off the highlight during isearch?
+* Q3.3.5::    Why is killing so slow?
+* Q3.3.6::    Why does @kbd{M-w} take so long?
+
+3.4: Editing Source Code
+* Q3.4.1::    I do not like cc-mode.  How do I use the old c-mode?
+* Q3.4.2::    How do you make XEmacs indent CL if-clauses correctly?
+
+4 Display Functions
+
+4.0: Textual Fonts and Colors
+* Q4.0.1::    How do I specify a font?
+* Q4.0.2::    How do I set the text, menu and modeline fonts?
+* Q4.0.3::    How can I set color options from @file{init.el}?
+* Q4.0.4::    How can I set the colors when highlighting a region?
+* Q4.0.5::    How can I limit color map usage?
+* Q4.0.6::    My tty supports color, but XEmacs doesn't use them.
+* Q4.0.7::    Can I have pixmap backgrounds in XEmacs?
+* Q4.0.8::    How do I display non-ASCII characters?
+* Q4.0.9::    Font selections in don't get saved after @code{Save Options}.
+
+4.1: Syntax Highlighting (Font Lock)
+* Q4.1.1::    How can I do source code highlighting using font-lock?
+* Q4.1.2::    How do I get @samp{More} Syntax Highlighting on by default?
+
+4.2: The Modeline
+* Q4.2.1::    How can I make the modeline go away?
+* Q4.2.2::    How do you have XEmacs display the line number in the modeline?
+* Q4.2.3::    How do I get XEmacs to put the time of day on the modeline?
+* Q4.2.4::    How can I change the modeline color based on the mode used?
+
+4.3: The Cursor
+* Q4.3.1::    Is there a way to make the bar cursor thicker?
+* Q4.3.2::    Is there a way to get back the block cursor?
+* Q4.3.3::    Can I make the cursor blink?
+
+4.4: The Menubar
+* Q4.4.1::    How do I get rid of the menubar?
+* Q4.4.2::    How can I customize the menubar?
+* Q4.4.3::    How do I enable use of the keyboard (@kbd{Alt}) to access menu items?
+* Q4.4.4::    How do I control how many buffers are listed in the menu @code{Buffers List}?
+* Q4.4.5::    Resources like @code{Emacs*menubar*font} are not working?
+
+4.5: The Toolbar
+* Q4.5.1::    How do I get rid of the toolbar?
+* Q4.5.2::    How can I customize the toolbar?
+* Q4.5.3::    How can I bind a key to a function to toggle the toolbar?
+* Q4.5.4::    @samp{Can't instantiate image error...} in toolbar
+
+4.6: Scrollbars and Scrolling
+* Q4.6.1::    How can I disable the scrollbar?
+* Q4.6.2::    How can I change the scrollbar width?
+* Q4.6.3::    How can I use resources to change scrollbar colors?
+* Q4.6.4::    Moving the scrollbar can move the point; can I disable this?
+* Q4.6.5::    Scrolling one line at a time.
+* Q4.6.6::    How can I turn off automatic horizontal scrolling in specific modes?
+* Q4.6.7::    I find auto-show-mode disconcerting.  How do I turn it off?
+
+4.7: The Gutter Tabs, The Progress Bar, Widgets
+* Q4.7.1::    How can I disable the gutter tabs?
+* Q4.7.2::    How can I disable the progress bar?
+* Q4.7.3::    There are bugs in the gutter or widgets.
+* Q4.7.4::    How can I customize the gutter or gutter tabs?
+
+5 Interfacing with the Operating System and External Devices
+
+5.0: X Window System and Resources
+* Q5.0.1::    Where is a list of X resources?
+* Q5.0.2::    How can I detect a color display?
+* Q5.0.3::    How can I get the icon to just say @samp{XEmacs}?
+* Q5.0.4::    How can I have the window title area display the full path?
+* Q5.0.5::    @samp{xemacs -name junk} doesn't work?
+* Q5.0.6::    @samp{-iconic} doesn't work.
+
+5.1: Microsoft Windows
+* Q5.1.1::    Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
+* Q5.1.2::    How do I get Windows Explorer to associate a file type with XEmacs?
+
+5.2: Printing
+* Q5.2.1::    What do I need to change to make printing work?
+* Q5.2.2::    How can I print WYSIWYG a font-locked buffer?
+* Q5.2.3::    Getting @kbd{M-x lpr} to work with postscript printer.
+* Q5.2.4::    Can you print under MS Windows?
+
+5.3: Sound
+* Q5.3.1::    How do I turn off the sound?
+* Q5.3.2::    How do I get funky sounds instead of a boring beep?
+* Q5.3.3::    What are NAS and ESD (EsounD)?
+* Q5.3.4::    Sunsite sounds don't play.
+
+5.4: Running an Interior Shell, Invoking Subprocesses
+* Q5.4.1::    What is an interior shell?
+* Q5.4.2::    How do I start up a second shell buffer?
+* Q5.4.3::    Telnet from shell filters too much
+* Q5.4.4::    Strange things are happening in Shell Mode.
+* Q5.4.5::    XEmacs complains "No such file or directory, diff"
+* Q5.4.6::    Cygwin error "fork_copy: linked dll/bss pass 0 failed"
+
+5.5: Multiple Device Support
+* Q5.5.1::    How do I open a frame on another screen of my multi-headed display?
+* Q5.5.2::    Can I really connect to a running XEmacs after calling up over a modem?  How?
+* Q5.5.3::    How do I disable gnuserv from opening a new frame?
+* Q5.5.4::    How do I start gnuserv so that each subsequent XEmacs is a client?
+* Q5.5.5::    Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+
+6 Connecting to the Internet
+
+6.0: General Mail and News
+* Q6.0.1::    What are the various packages for reading mail?
+* Q6.0.2::    How can I send mail?
+* Q6.0.3::    How do I get my outgoing mail archived?
+* Q6.0.4::    How can I read and/or compose MIME messages?
+* Q6.0.5::    How do I customize the From line?
+* Q6.0.6::    How do I get my MUA to filter mail for me?
+* Q6.0.7::    Remote mail reading with an MUA.
+* Q6.0.8::    An MUA gets an error incorporating new mail.
+* Q6.0.9::    Why isn't @file{movemail} working?
+* Q6.0.10::   How do I make my MUA display graphical smilies?
+* Q6.0.11::   How can I get those oh-so-neat X-Face lines?
+
+6.1: Reading Mail with VM
+* Q6.1.1::    How do I set up VM to retrieve mail from a remote site using POP?
+* Q6.1.2::    How can I get VM to automatically check for new mail?
+* Q6.1.3::    I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
+* Q6.1.4::    Is there a mailing list or FAQ for VM?
+* Q6.1.5::    How do I make VM stay in a single frame?
+* Q6.1.6::    Customization of VM not covered in the manual, or here.
+
+6.2: Reading Netnews and Mail with Gnus
+* Q6.2.1::    GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+* Q6.2.2::    How do I make Gnus stay within a single frame?
+
+6.3: FTP Access
+* Q6.3.1::    Can I edit files on other hosts?
+* Q6.3.2::    What is EFS?
+
+6.4: Web Browsing with W3
+* Q6.4.1::    What is W3?
+* Q6.4.2::    How do I run W3 from behind a firewall?
+* Q6.4.3::    Is it true that W3 supports style sheets and tables?
+
+7 Advanced Customization Using XEmacs Lisp
+
+7.0: Emacs Lisp and @file{init.el}
+* Q7.0.1::    What version of Emacs am I running?
+* Q7.0.2::    How can I evaluate Emacs-Lisp expressions?
+* Q7.0.3::    @code{(setq tab-width 6)} behaves oddly.
+* Q7.0.4::    How can I add directories to the @code{load-path}?
+* Q7.0.5::    How to check if a lisp function is defined?
+* Q7.0.6::    Can I force the output of @code{(face-list)} to a buffer?
+
+7.1: Emacs Lisp Programming Techniques
+* Q7.1.1::    What is the difference in key sequences between XEmacs and GNU Emacs?
+* Q7.1.2::    Can I generate "fake" keyboard events?
+* Q7.1.3::    Could you explain @code{read-kbd-macro} in more detail?
+* Q7.1.4::    What is the performance hit of @code{let}?
+* Q7.1.5::    What is the recommended use of @code{setq}?
+* Q7.1.6::    What is the typical misuse of @code{setq}?
+* Q7.1.7::    I like the @code{do} form of cl, does it slow things down?
+* Q7.1.8::    I like recursion, does it slow things down?
+* Q7.1.9::    How do I put a glyph as annotation in a buffer?
+* Q7.1.10::   @code{map-extents} won't traverse all of my extents!
+* Q7.1.11::   My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
+
+7.2: Mathematics
+* Q7.2.1::    What are bignums, ratios, and bigfloats in Lisp?
+* Q7.2.2::    XEmacs segfaults when I use very big numbers!
+* Q7.2.3::    Bignums are really slow!
+* Q7.2.4::    Equal bignums don't compare as equal!  What gives?
+
+8 Other External Packages
+
+8.0: TeX
+* Q8.0.1::    Is there something better than LaTeX mode?
+* Q8.0.2::    What is AUCTeX?  Where do you get it?
+* Q8.0.3::    Problems installing AUCTeX.
+* Q8.0.4::    How do I turn off current chapter from AUCTeX modeline?
+
+8.1: Other Unbundled Packages
+* Q8.1.1::    Is there a reason for an Emacs package not to be included in XEmacs?
+* Q8.1.2::    Are there any Emacs Lisp Spreadsheets?
+* Q8.1.3::    Is there a MatLab mode?
+
+8.2: Environments Built Around XEmacs
+* Q8.2.1::    What are SPARCworks, EOS, and WorkShop?
+* Q8.2.2::    How do I start the Sun Workshop support in XEmacs 21?
+* Q8.2.3::    What is/was Energize?
+* Q8.2.4::    What is Infodock?
+
+9 What the Future Holds
+
+9.0: Changes
+* Q9.0.1::    What new features will be in XEmacs soon?
+* Q9.0.2::    What's new in XEmacs 21.4?
+* Q9.0.3::    What's new in XEmacs 21.1?
+* Q9.0.4::    What's new in XEmacs 20.4?
+* Q9.0.5::    What's new in XEmacs 20.3?
+* Q9.0.6::    What's new in XEmacs 20.2?
+
+10 New information about old XEmacsen
+
+10.0: XEmacs 21.1
+* Q10.0.1::   Gnus 5.10 won't display smileys in XEmacs 21.1.
+* Q10.0.2::   XEmacs won't start on Windows in XEmacs 21.1.
 
 @end detailmenu
 @end menu
@@ -445,437 +577,387 @@ considering XEmacs for their own use, or has just obtained it and is
 wondering what to do next.  It is also useful as a reference to
 available resources.
 
-The previous maintainer of the FAQ was @email{rossini@@biostat.washington.edu,
-Anthony Rossini}, who started it, after getting tired of hearing JWZ
-complain about repeatedly having to answer questions.
-@email{ben@@xemacs.org, Ben Wing} and @email{cthomp@@xemacs.org, Chuck
-Thompson}, the principal authors of XEmacs, then took over and Ben did
-a massive update reorganizing the whole thing.  At which point Anthony
-took back over, but then had to give it up again.  Some of the other
-contributors to this FAQ are listed later in this document.
+The previous maintainer of the FAQ was
+@email{rossini@@biostat.washington.edu, Anthony Rossini}, who started
+it, after getting tired of hearing JWZ complain about repeatedly
+having to answer questions.  @email{ben@@xemacs.org, Ben Wing} then
+took over and did a massive update reorganizing the whole thing.  At
+this point Anthony took back over, but then had to give it up again.
+Some of the other contributors to this FAQ are listed later in this
+document.
 
 The previous version was converted to hypertext format, and edited by
 @email{steve@@xemacs.org, Steven L. Baur}.  It was converted back to
 texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}.  The FAQ was then
 maintained by @email{andreas@@sccon.com, Andreas Kaempf}, who passed it
-on to ChristianNyb@o{}.
+on to ChristianNyb@o{}, and then to @email{wambold@@xemacs.org,Sandra Wambold}.
+
+The current version of the FAQ has been heavily redone by
+@email{ben@@xemacs.org, Ben Wing}.
 
 If you notice any errors or items which should be added or amended to
-this FAQ please send email to @email{faq@@xemacs.org, Sandra
-Wambold}.  Include @samp{XEmacs FAQ} on the Subject: line.
+this FAQ please send email to @email{xemacs-beta@@xemacs.org}.
+Include @samp{XEmacs FAQ} on the Subject: line.
 
 @menu
-Introduction:
-* Q1.0.1::      What is XEmacs?
-* Q1.0.2::      What is the current version of XEmacs?
-* Q1.0.3::      Where can I find it?
-* Q1.0.4::      Why Another Version of Emacs?
-* Q1.0.5::      Why Haven't XEmacs and GNU Emacs Merged?
-* Q1.0.6::      Where can I get help?
-* Q1.0.7::      Where are the mailing lists archived?
-* Q1.0.8::      How do you pronounce XEmacs?
-* Q1.0.9::      What does XEmacs look like?
-* Q1.0.10::     Is there a port of XEmacs to Microsoft ('95 or NT)?
-* Q1.0.11::     Is there a port of XEmacs to the Macintosh?
-* Q1.0.12::     Is there a port of XEmacs to NextStep?
-* Q1.0.13::     Is there a port of XEmacs to OS/2?
-* Q1.0.14::     Where can I get a printed copy of the XEmacs users manual?
-
-Policies:
-* Q1.1.1::      What is the FAQ editorial policy?
-* Q1.1.2::      How do I become a Beta Tester?
-* Q1.1.3::      How do I contribute to XEmacs itself?
-
-Credits:
-* Q1.2.1::      Who wrote XEmacs?
-* Q1.2.2::      Who contributed to this version of the FAQ?
-* Q1.2.3::      Who contributed to the FAQ in the past?
-
-Internationalization:
-* Q1.3.1::      What is the status of internationalization support aka MULE (including Asian language support?
-* Q1.3.2::      How can I help with internationalization?
-* Q1.3.3::      How do I type non-ASCII characters?
-* Q1.3.4::      Can XEmacs messages come out in a different language?
-* Q1.3.5::      Please explain the various input methods in MULE/XEmacs
-* Q1.3.6::      How do I portably code for MULE/XEmacs?
-* Q1.3.7::      How about Cyrillic Modes?
-* Q1.3.8::      Does XEmacs support Unicode?
-* Q1.3.9::      How does XEmacs display Unicode?
-
-Getting Started:
-* Q1.4.1::      What is an @file{init.el} or @file{.emacs} and is there a sample one?
-* Q1.4.2::      Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
-* Q1.4.3::      Any good XEmacs tutorials around?
-* Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
-* Q1.4.5::      And how do I bind it to a key?
-* Q1.4.6::      What's the difference between a macro and a function?
+1.0: What is XEmacs?
+* Q1.0.1::    What is XEmacs?
+* Q1.0.2::    What is the current version of XEmacs?
+* Q1.0.3::    How do you pronounce XEmacs?
+* Q1.0.4::    What does XEmacs look like?
+* Q1.0.5::    Who wrote XEmacs?
+* Q1.0.6::    Who wrote the FAQ?
+
+1.1: Getting XEmacs
+* Q1.1.1::    Where can I find XEmacs?
+* Q1.1.2::    Are binaries available?
+* Q1.1.3::    How do I get the bleeding-edge sources?
+* Q1.1.4::    Where can I obtain a printed copy of the XEmacs User's Manual?
+
+1.2: Versions for Different Operating Systems
+* Q1.2.1::    Do I need X11 to run XEmacs?
+* Q1.2.2::    What versions of Unix does XEmacs run on?
+* Q1.2.3::    Is there a port of XEmacs to Microsoft Windows?
+* Q1.2.4::    Can I build XEmacs on MS Windows with X support?  Do I need to?
+* Q1.2.5::    What are Cygwin and MinGW, and do I need them to run XEmacs?
+* Q1.2.6::    What are the differences between the various MS Windows emacsen?
+* Q1.2.7::    How does the port cope with differences in the Windows user interface?
+* Q1.2.8::    Is there a port of XEmacs to the Macintosh?
+* Q1.2.9::    Is there a port of XEmacs to MS-DOS?
+* Q1.2.10::   Is there a port of XEmacs to OS/2?
+* Q1.2.11::   Is there a port of XEmacs to NextStep?
+* Q1.2.12::   Is there a port of XEmacs to VMS?
+
+1.3: Getting Started
+* Q1.3.1::    What is an @file{init.el} or @file{.emacs} and is there a sample one?
+* Q1.3.2::    Where do I put my @file{init.el} file?
+* Q1.3.3::    Can I use the same @file{init.el} with the other Emacs?
+* Q1.3.4::    Any good XEmacs tutorials around?
+* Q1.3.5::    May I see an example of a useful XEmacs Lisp function?
+* Q1.3.6::    And how do I bind it to a key?
+* Q1.3.7::    What's the difference between a macro and a function?
+* Q1.3.8::    What is @code{Custom}?
+
+1.4: Getting Help
+* Q1.4.1::    Where can I get help?
+* Q1.4.2::    Which mailing lists are there?
+* Q1.4.3::    Where are the mailing lists archived?
+* Q1.4.4::    How can I get two instances of info?
+* Q1.4.5::    How do I add new Info directories?
+
+1.5: Contributing to XEmacs
+* Q1.5.1::    How do I submit changes to the FAQ?
+* Q1.5.2::    How do I become a beta tester?
+* Q1.5.3::    How do I contribute to XEmacs itself?
+* Q1.5.4::    How do I get started developing XEmacs?
+* Q1.5.5::    What's the basic layout of the code?
+
+1.6: Politics (XEmacs vs. GNU Emacs)
+* Q1.6.1::    What is GNU Emacs?
+* Q1.6.2::    How does XEmacs differ from GNU Emacs?
+* Q1.6.3::    How much does XEmacs differ?
+* Q1.6.4::    Is XEmacs "GNU"?
+* Q1.6.5::    What is the correct way to refer to XEmacs and GNU Emacs?
+* Q1.6.6::    Why haven't XEmacs and GNU Emacs merged?
+
+1.7: External Packages
+* Q1.7.1::    What is the package system?
+* Q1.7.2::    Which external packages are there?
+* Q1.7.3::    Do I need to have the packages to run XEmacs? 
+* Q1.7.4::    Is there a way to find which package has particular functionality?
+
+1.8: Internationalization
+* Q1.8.1::    What is the status of internationalization support aka MULE (including Asian language support)?
+* Q1.8.2::    How can I help with internationalization?
+* Q1.8.3::    How do I type non-ASCII characters?
+* Q1.8.4::    Can XEmacs messages come out in a different language?
+* Q1.8.5::    Please explain the various input methods in MULE/XEmacs
+* Q1.8.6::    How do I portably code for MULE/XEmacs?
+* Q1.8.7::    How about Cyrillic modes?
+* Q1.8.8::    Does XEmacs support Unicode?
+* Q1.8.9::    How does XEmacs display Unicode?
 @end menu
 
+@unnumberedsec 1.0: What is XEmacs?
+
 @node Q1.0.1, Q1.0.2, Introduction, Introduction
-@unnumberedsec 1.0: Introduction
 @unnumberedsubsec Q1.0.1: What is XEmacs?
 
-
 XEmacs is a powerful, highly customizable open source text editor and
-application development system, with full GUI support.  It is protected
-under the GNU Public License and related to other versions of Emacs, in
-particular GNU Emacs.  Its emphasis is on modern graphical user
-interface support and an open software development model, similar to
-Linux.  XEmacs has an active development community numbering in the
-hundreds (and thousands of active beta testers on top of this), and runs
-on all versions of MS Windows, on Linux, and on nearly every other
-version of Unix in existence.  Support for XEmacs has been supplied by
-Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical
-Laboratory, Amdahl Corporation, BeOpen, and others, as well as the
-unpaid time of a great number of individual developers.
+application development system, with full GUI support.  It is
+protected under the GNU Public License and related to other versions
+of Emacs, in particular GNU Emacs.  Its emphasis is on modern
+graphical user interface support and an open software development
+model, similar to Linux.  XEmacs has an active development community
+numbering in the hundreds (and thousands of active beta testers on top
+of this), and runs on all versions of MS Windows, on Mac OS X, on
+Linux, and on nearly every other version of Unix in existence.
+Support for XEmacs has been supplied by Sun Microsystems, University
+of Illinois, Lucid, ETL/Electrotechnical Laboratory, Amdahl
+Corporation, BeOpen, and others, as well as the unpaid time of a great
+number of individual developers.
 
 @node Q1.0.2, Q1.0.3, Q1.0.1, Introduction
 @unnumberedsubsec Q1.0.2: What is the current version of XEmacs?
 
-XEmacs versions 21.1.* are releases made from the current stable
-sources.  XEmacs versions 21.2.* are releases made from the development
-sources.  Check at @uref{http://www.xemacs.org} for the current minor
-version.
+XEmacs versions 21.4.* are releases made from the current stable
+sources.  XEmacs versions 21.5.* (which will be released as 22.0) are
+releases made from the development sources.  Check at
+@uref{http://www.xemacs.org} for the current minor version.  XEmacs
+versions 21.1.* were the previous stable releases, now retired.
 
-XEmacs 19.16 was the last release of v19, released in November, 1997,
-which was also the last version without international language support.
+XEmacs 20.4, released in February 1998, was the last release of v20.
 
-@node Q1.0.3, Q1.0.4, Q1.0.2, Introduction
-@unnumberedsubsec Q1.0.3: Where can I find it?
+XEmacs 19.16, released in November, 1997. was the last release of v19,
+and was also the last version without international language support.
 
-The canonical source and binaries can be found via anonymous FTP at:
+@node Q1.0.3, Q1.0.4, Q1.0.2, Introduction
+@unnumberedsubsec Q1.0.3: How do you pronounce XEmacs?
 
-@example
-@uref{ftp://ftp.xemacs.org/pub/xemacs/}
-@end example
+The most common pronounciation is @samp{Eks eemax}.
 
 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction
-@unnumberedsubsec Q1.0.4: Why Another Version of Emacs?
+@unnumberedsubsec Q1.0.4: What does XEmacs look like?
 
-For a detailed description of the differences between GNU Emacs and
-XEmacs and a detailed history of XEmacs, check out the
-@example
-@uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file}
-@end example
+Screen snapshots are available at
+@uref{http://www.xemacs.org/About/Screenshots/index.html}
+as part of the XEmacs website.
 
-However, here is a list of some of the reasons why we think you might
-consider using it:
+@node Q1.0.5, Q1.0.6, Q1.0.4, Introduction
+@unnumberedsubsec Q1.0.5: Who wrote XEmacs?
 
-@itemize @bullet
-@item
-It looks nicer.
+XEmacs is the result of the time and effort of many people, and the
+active developers have changed over time.  There are two major
+components of the XEmacs effort -- writing the code itself and providing
+all the support work (testing the code, releasing beta and final
+versions, handling patches, reading bug reports, maintaining the web
+site, managing the mailing lists, etc. etc.).  Neither component would
+work without the other.
 
-@item
-The XEmacs maintainers are generally more receptive to suggestions than
-the GNU Emacs maintainers.
+@subheading CODING
 
-@item
-Many more bundled packages than GNU Emacs.
+The primary code contributor over the years has been Ben Wing (active
+since late 1992).  Between 1991 and 1995, large amounts of coding was
+contributed by Jamie Zawinski and Chuck Thompson.  Many other people
+have authored major subsystems or otherwise contributed large amounts of
+code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris,
+Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard
+Mlynarik, Stig, William Perry and plenty of others.
 
-@item
-Binaries are available for many common operating systems.
+Primary XEmacs-specific subsystems and their authors:
 
+@table @asis
+@item Objects
+@itemize @minus
 @item
-Face support on TTY's.
-
+Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcrecords: Richard Mlynarik, 1994
 @item
-A built-in toolbar.
-
+Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Buchholz
 @item
-Better Motif compliance.
-
+Portable dumper, object descriptions: Olivier Galibert
 @item
-Some internationalization support (including full MULE support, if
-compiled with it).
-
+KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber and students
 @item
-Variable-width fonts.
-
+Random object work (object equal and hash methods, weak lists, lcrecord lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing
 @item
-Variable-height lines.
-
+Profiling: Ben Wing
 @item
-Marginal annotations.
-
+Some byte-compilation and hash-table improvements: Martin Buchholz
 @item
-ToolTalk support.
+Bignum: Jerry James
+@end itemize
 
+@item Internationalization/Mule
+@itemize @minus
 @item
-XEmacs can be used as an Xt widget, and can be embedded within another
-application.
+mostly Ben Wing; many ideas for future work, Stephen Turnbull
+@end itemize
 
+@item I/O
+@itemize @minus
 @item
-Horizontal and vertical scrollbars (using real toolkit scrollbars).
-
+Basic event/event-stream implementation: Jamie Zawinski
 @item
-Better APIs (and performance) for attaching fonts, colors, and other
-properties to text.
-
+Most event work since 1994: Ben Wing
 @item
-The ability to embed arbitrary graphics in a buffer.
-
+Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing
 @item
-Completely compatible (at the C level) with the Xt-based toolkits.
-
+Process method abstraction, Windows process work: Kirill Katsnelson
+@item
+Misc-user events, async timeouts, most quit-checking and signal code, most other work since 1994: Ben Wing
+@item
+Lstreams: Ben Wing
 @end itemize
 
-@node Q1.0.5, Q1.0.6, Q1.0.4, Introduction
-@unnumberedsubsec Q1.0.5: Why Haven't XEmacs and GNU Emacs Merged?
-
-There are currently irreconcilable differences in the views about
-technical, programming, design and organizational matters between RMS
-and the XEmacs development team which provide little hope for a merge to
-take place in the short-term future.
-
-If you have a comment to add regarding the merge, it is a good idea to
-avoid posting to the newsgroups,  because of the very heated flamewars
-that often result.  Mail your questions to @email{xemacs-beta@@xemacs.org} and
-@email{bug-gnu-emacs@@prep.ai.mit.edu}.
-
-@node Q1.0.6, Q1.0.7, Q1.0.5, Introduction
-@unnumberedsubsec Q1.0.6: Where can I get help?
-
-Probably the easiest way, if everything is installed, is to use Info, by
-pressing @kbd{C-h i}, or looking for an Info item on the
-Help Menu.  @kbd{M-x apropos} can be used to look for particular commands.
-
-For items not found in the manual, try reading this FAQ
-@comment , examining the regular GNU Emacs FAQ (which can be
-@comment found with the Emacs 19 distribution) as well as at
-@comment @uref{http://www.eecs.nwu.edu/emacs/faq/}
-and reading the Usenet group comp.emacs.xemacs.
-
-If you choose to post to a newsgroup, @strong{please use
-comp.emacs.xemacs}.  Please do not post XEmacs related questions to
-gnu.emacs.help.
-
-If you cannot post or read Usenet news, there is a corresponding mailing
-list @email{xemacs-news@@xemacs.org} which is available.  It can be
-subscribed to via the Mailman Web interface or by sending mail to to
-@email{xemacs-news-request@@xemacs.org} with @samp{subscribe} in the
-body of the message.  See also
-@uref{http://www.xemacs.org/Lists/#xemacs-news}.  To cancel a
-subscription, you may use the @email{xemacs-news-request@@xemacs.org}
-address or the Web interface.  Send a message with a subject of
-@samp{unsubscribe} to be removed.
-
-@node Q1.0.7, Q1.0.8, Q1.0.6, Introduction
-@unnumberedsubsec Q1.0.7: Where are the mailing lists archived?
-
-The archives can be found at @uref{http://list-archive.xemacs.org}
-
-@node Q1.0.8, Q1.0.9, Q1.0.7, Introduction
-@unnumberedsubsec Q1.0.8: How do you pronounce XEmacs?
-
-The most common pronounciation is @samp{Eks eemax}.
-
-@node Q1.0.9, Q1.0.10, Q1.0.8, Introduction
-@unnumberedsubsec Q1.0.9: What does XEmacs look like?
-
-Screen snapshots are available at
-@uref{http://www.xemacs.org/About/Screenshots/index.html}
-as part of the XEmacs website.
-
-@node Q1.0.10, Q1.0.11, Q1.0.9, Introduction
-@unnumberedsubsec Q1.0.10: Is there a port of XEmacs to Microsoft ('95 or NT)?
-
-Yes.  XEmacs can be built under MS Windows and is fully-featured and
-actively developed.  See @ref{MS Windows}.
-
-@node Q1.0.11, Q1.0.12, Q1.0.10, Introduction
-@unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh?
-@c changed
-
-@c There has been a port to the MachTen environment of XEmacs 19.13, but no
-@c patches have been submitted to the maintainers to get this in the
-@c mainstream distribution.
-@c
-@c For the MacOS, there is a port of
-@c @uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}.
-
-Yes.
-
-XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
-will not feel very much like a Mac application as it has no Mac-specific
-code in it.
-
-There is also a port of XEmacs 19.14 that works on all recent versions
-of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com,
-Pitts Jarvis}.  It runs in an equivalent of TTY mode only (one single
-Macintosh window, 25 colors), but has a large number of Mac-specific
-additions.  It's available at
-@uref{http://homepage.mac.com/pjarvis/xemacs.html}.
-
-@node Q1.0.12, Q1.0.13, Q1.0.11, Introduction
-@unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep?
-
-Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did
-the port of GNU Emacs to NeXTstep and expressed interest in doing the
-XEmacs port, but never went any farther.
-
-@node Q1.0.13, Q1.0.14, Q1.0.12, Introduction
-@unnumberedsubsec Q1.0.13: Is there a port of XEmacs to OS/2?
-
-No, but Alexander Nikolaev <avn_1251@@mail.ru> is working on it.
-
-@node Q1.0.14, Q1.1.1, Q1.0.13, Introduction
-@unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual?
-
-Pre-printed manuals are not available.  If you are familiar with
-TeX, you can generate your own manual from the XEmacs sources.
-
-HTML and Postscript versions of XEmacs manuals are available from the
-XEmacs web site at
-@uref{http://www.xemacs.org/Documentation/index.html}.
-
-@node Q1.1.1, Q1.1.2, Q1.0.14, Introduction
-@unnumberedsec 1.1: Policies
-@unnumberedsubsec Q1.1.1: What is the FAQ editorial policy?
+@item Display
+@itemize @minus
+@item
+Redisplay mechanism: implementation, Chuck Thompson; additional work, lots of people
+@item
+Glyphs: mostly Ben Wing
+@item
+Specifiers: Ben Wing
+@item
+Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wing
+@item
+Widgets: Andy Piper
+@item
+JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, others (see comment in @file{glyphs-eimage.c})
+@item
+Menus: Jamie Zawinski, someone at Lucid (Lucid menus)
+@item
+Scrollbars: Chuck Thompson, ??? (Lucid scrollbar)
+@item
+Multi-device/device-independence work (console/device/etc methods): Ben Wing, prototype by chuck thompson
+@item
+Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben Wing
+@item
+Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wing
+@item
+Toolbars: implementation, chuck, much interface work, Ben Wing
+@item
+Gutters, tabs: andy piper
+@end itemize
 
-The FAQ is actively maintained and modified regularly.  All links should
-be up to date.  Unfortunately, some of the information is out of date --
-a situation which the FAQ maintainer is working on.  All submissions are
-welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ
-maintainers}.
+@item Device subsystems
+@itemize @minus
+@item
+X Windows: Jamie Zawinksi, Ben Wing, others
+@item
+GTK: William Perry, Malcolm Purvis
+@item
+MS Windows: initial implementation, Jonathan Harris; some more work, Andy Piper, Ben Wing
+@item
+TTY: Chuck Thompson, Ben Wing
+@item
+Cygwin: Andy Piper
+@end itemize
 
-Please make sure that @samp{XEmacs FAQ} appears on the Subject: line.
-If you think you have a better way of answering a question, or think a
-question should be included, we'd like to hear about it.  Questions and
-answers included into the FAQ will be edited for spelling and grammar
-and will be attributed.  Answers appearing without attribution are
-either from versions of the FAQ dated before May 1996 or are from
-previous FAQ maintainers.  Answers quoted from Usenet news articles will
-always be attributed, regardless of the author.
+@item Misc
+@itemize @minus
+@item
+Configure: initial porting from fsf, Chuck Thompson; conversion to autoconf 2, much rewriting, Martin Buchholz
+@item
+Most initialization-related code: Ben Wing
+@item
+Internals manual, much of Lisp manual: Ben Wing
+@item
+FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, Ben Wing
+@end itemize
+@end table
 
-@node Q1.1.2, Q1.1.3, Q1.1.1, Introduction
-@unnumberedsubsec Q1.1.2: How do I become a Beta Tester?
+@subheading SUPPORT
 
-Send an email message to @email{xemacs-beta-request@@xemacs.org} with
-the line @samp{subscribe} in the body of the message.
+Currently, support duties are handled by many different people.
 
-Be prepared to get your hands dirty, as beta testers are expected to
-identify problems as best they can.
+Release managers have been
 
-@node Q1.1.3, Q1.2.1, Q1.1.2, Introduction
-@unnumberedsubsec Q1.1.3: How do I contribute to XEmacs itself?
+@itemize @minus
+@item
+Stephen Turnbull (April 2001 - January 2003, March 2004 - present, 21.2.47 - 21.4.12, 21.5.2 - 21.5.7, 21.5.17 - present)
+@item
+Vin Shelton (Mar 1997 - Jan 2001, May 2003 - present, 19.16, 21.1.3 -
+21.1.14, 21.4.13 - present)
+@item
+Steve Youngs (July 2002 - September 2003, 21.5.8 - 21.5.16)
+@item
+Martin Buchholz (December 1998, November 1999 - May 2001, 21.2.7 - 21.2.8, 21.2.21 - 21.2.46, 21.5.0 - 21.5.1)
+@item
+Steve Baur (early 1997 - December 1998, February 1999 - November 1999, 19.15 - 21.2.5, 21.2.9 - 21.2.20)
+@item
+Andy Piper (December 1998, 21.2.6)
+@item
+Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14)
+@item
+Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10)
+@end itemize
 
-Ben Wing @email{ben@@xemacs.org} writes:
+The recent overlapping dates are intentional, since two or three trees
+are maintained simultaneously at any point.
 
-@quotation
-BTW if you have a wish list of things that you want added, you have to
-speak up about it!  More specifically, you can do the following if you
-want a feature added (in increasing order of usefulness):
+Other major support work:
 
-@itemize @bullet
+@itemize @minus
 @item
-Make a posting about a feature you want added.
-
+Adrian Aichner wrote and maintains the web site.
 @item
-Become a beta tester and make more postings about those same features.
-
+Stephen Turnbull has produced many of the beta and semi-stable releases
+and has attempted to be the "face" of XEmacs on the newsgroups and
+mailing lists.
 @item
-Convince us that you're going to use the features in some cool and
-useful way.
-
+Steve Youngs currently produces the beta releases (???).
 @item
-Come up with a clear and well-thought-out API concerning the features.
-
+Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns
+maintaining the packages.
 @item
-Write the code to implement a feature and send us a patch.
+Vin Shelton maintains the stable releases.
+@item
+Testing - #### Norbert, Adrian, ???
 @end itemize
 
-(not that we're necessarily requiring you to write the code, but we can
-always hope :)
-@end quotation
-
-@node Q1.2.1, Q1.2.2, Q1.1.3, Introduction
-@unnumberedsec 1.2: Credits
-@unnumberedsubsec Q1.2.1: Who wrote XEmacs?
-
-XEmacs is the result of the time and effort of many people.  The
-developers responsible for recent releases are:
+Portraits and email of some of the major developers:
 
 @itemize @bullet
-@item @email{martin@@xemacs.org, Martin Buchholz}
+@item @email{andy@@xemacs.org, Andy Piper}
 @html
-<br><img src="mrb.jpeg" alt="Portrait of Martin Buchholz"><br>
+<br><img src="piper.png" alt="Portrait of Andy Piper"><br>
 @end html
 
-
-@item @email{stephen@@xemacs.org, Stephen Turnbull}
-
-
 @item @email{ben@@xemacs.org, Ben Wing}
 @html
-<br><img src="wing.gif" alt="Portrait of Ben Wing"><br>
+<br><img src="ben.png" alt="Portrait of Ben Wing"><br>
 @end html
 
-
-@item @email{hniksic@@xemacs.org, Hrvoje Niksic}
-
+@item @email{cthomp@@xemacs.org, Chuck Thompson}
 @html
-<br><img src="hniksic.jpeg" alt="Portrait of Hrvoje Niksic"><br>
+<br><img src="cthomp.png" alt="Portrait of Chuck Thompson"><br>
 @end html
 
-@end itemize
-
-The developers responsible for older releases were:
-
-@itemize @bullet
-@item @email{steve@@xemacs.org, Steve Baur}
+@item @email{hniksic@@xemacs.org, Hrvoje Niksic}
 
 @html
-<br><img src="steve.gif" alt="Portrait of Steve Baur"><br>
+<br><img src="hniksic.png" alt="Portrait of Hrvoje Niksic"><br>
 @end html
 
-@item @email{cthomp@@xemacs.org, Chuck Thompson}
+@item @email{jwz@@jwz.org, Jamie Zawinski}
 @html
-<br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br>
+<br><img src="jwz.png" alt="Portrait of Jamie Zawinski"><br>
 @end html
 
-@item @email{jwz@@jwz.org, Jamie Zawinski}
+@item @email{martin@@xemacs.org, Martin Buchholz}
 @html
-<br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br>
+<br><img src="martin.png" alt="Portrait of Martin Buchholz"><br>
 @end html
 
 @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
+@html
+<br><img src="mly.png" alt="Portrait of Richard Mlynarik"><br>
+@end html
 
-Steve Baur was the primary maintainer for 19.15 through 21.0.
-
-Chuck Thompson and Ben Wing were the maintainers for 19.11 through 19.14
-and heavy code contributors for 19.8 through 19.10.
-
-Jamie Zawinski was the maintainer for 19.0 through 19.10 (the entire
-history of Lucid Emacs).  Richard Mlynarik was a heavy code contributor
-to 19.6 through 19.8.
+@item @email{stephen@@xemacs.org, Stephen Turnbull}
 
+@item @email{steve@@xemacs.org, Steve Baur}
+@html
+<br><img src="slb.png" alt="Portrait of Steve Baur"><br>
+@end html
 @end itemize
 
-Along with many other contributors, partially enumerated in the
-@samp{About XEmacs} option in the Help menu.
+Many other people have contributed to XEmacs; this is partially
+enumerated in the @samp{About XEmacs} option in the Help menu.
 
-@node Q1.2.2, Q1.2.3, Q1.2.1, Introduction
-@unnumberedsubsec Q1.2.2: Who contributed to this version of the FAQ?
+@node Q1.0.6, Q1.1.1, Q1.0.5, Introduction
+@unnumberedsubsec Q1.0.6: Who wrote the FAQ?
+
+The current version of this FAQ was created by @email{ben@@xemacs.org,
+Ben Wing}.
 
-The following people contributed valuable suggestions to building this
-version of the FAQ (listed in alphabetical order):
+Previous contributors to the FAQ include
 
 @itemize @bullet
 @item @email{steve@@xemacs.org, SL Baur}
 
 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
 
-@item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
-
-@end itemize
-
-@node Q1.2.3, Q1.3.1, Q1.2.2, Introduction
-@unnumberedsubsec Q1.2.3: Who contributed to the FAQ in the past?
-
-This is only a partial list, as many names were lost in a hard disk
-crash some time ago.
-
-@itemize @bullet
 @item @email{binge@@aloft.att.com, Curtis.N.Bingham}
 
 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan}
@@ -915,308 +997,391 @@ crash some time ago.
 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
 @end itemize
 
-@node Q1.3.1, Q1.3.2, Q1.2.3, Introduction
-@unnumberedsec 1.3: Internationalization
-@unnumberedsubsec Q1.3.1: What is the status of internationalization support aka MULE (including Asian language support?
+@unnumberedsec 1.1: Getting XEmacs
 
-Both the stable and development versions of XEmacs include
-internationalization support (aka MULE).  MULE currently (21.4) works on
-UNIX and Linux systems.  It is possible to build with MULE on Windows
-systems, but if you really need MULE on Windows, it is recommended that
-you build and use the development (21.5) version, and deal with the
-instability of the development tree.  Binaries compiled without MULE
-support run faster than MULE capable XEmacsen.
+@node Q1.1.1, Q1.1.2, Q1.0.6, Introduction
+@unnumberedsubsec Q1.1.1: Where can I find XEmacs?
 
-@node Q1.3.2, Q1.3.3, Q1.3.1, Introduction
-@unnumberedsubsec Q1.3.2: How can I help with internationalization?
+To download XEmacs, visit the XEmacs WWW page at
+@uref{http://www.xemacs.org/Download/}.  The most up-to-date list of
+distribution sites can always be found there.  Try to pick a site that
+is networkologically close to you.  If you know of other mirrors of
+the XEmacs archives, please send e-mail to
+@uref{mailto:webmaster@@xemacs.org} and we will list them here as well.
 
-If you would like to help, you may want to join the
-@email{xemacs-mule@@xemacs.org} mailing list.  Especially needed are
-people who speak/write languages other than English, who are willing to
-use XEmacs/MULE regularly, and have some experience with Elisp.
+The canonical distribution point is ftp.xemacs.org, available either
+through HTTP (@uref{http://ftp.xemacs.org/}) or anonymous FTP
+(@uref{ftp://ftp.xemacs.org/pub/xemacs/}).
 
-Translations of the TUTORIAL and man page are welcome, and XEmacs does
-support multilingual menus, but we have few current translations.
+@node Q1.1.2, Q1.1.3, Q1.1.1, Introduction
+@unnumberedsubsec Q1.1.2: Are binaries available?
 
-@xref{Q1.1.2}.
+MS Windows binaries are available at
+@uref{http://www.xemacs.org/Download/win32/} for the native versions
+of 21.4 and 21.1.  Cygwin binaries are now available as part of the
+standard Cygwin installation process.  XEmacs also comes pre-built as
+part of many Linux distributions, such as Red Hat and SuSE.
 
-@node Q1.3.3, Q1.3.4, Q1.3.2, Introduction
-@unnumberedsubsec Q1.3.3: How do I type non-ASCII characters?
+Otherwise, you will need to build XEmacs yourself or get your system
+administrator to do it.  Generally, this is not a difficult process
+under Unix and Mac OS X, as XEmacs has been tested under all of the
+common Unix versions and under Mac OS X and comes with an extensive
+configure script that is able to automatically detect most aspects of
+the configuration of your particular system.
 
-See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ for some
-simple methods that also work in non-MULE builds of XEmacs (but only for
-one-octet coded character sets, and mostly for ISO 8859/1).  Many of the
-methods available for Cyrillic (@pxref{Q1.3.7}) work without MULE.
-MULE has more general capabilities.  @xref{Q1.3.5}.
+@node Q1.1.3, Q1.1.4, Q1.1.2, Introduction
+@unnumberedsubsec Q1.1.3: How do I get the bleeding-edge sources?
 
-@xref{Q3.2.7}, which covers display of non-ASCII characters.
+If you are interested in developing XEmacs, or getting the absolutely most
+recent, up-to-the-moment, bleeding-edge source code, you can directly
+access the master CVS source tree (read-only, of course, until you ask for
+and are granted permission to directly modify portions of the source tree)
+at cvs.xemacs.org.  Directions on how to access the source tree are located
+at @uref{http://www.xemacs.org/Develop/cvsaccess.html}.
 
-@node Q1.3.4, Q1.3.5, Q1.3.3, Introduction
-@unnumberedsubsec Q1.3.4: Can XEmacs messages come out in a different language?
+Nightly CVS snapshots are available at
+@uref{http://www.dk.xemacs.org/Download/CVS-snapshots/}.
 
-The message-catalog support was written but is badly bit-rotted.  XEmacs
-20 and 21 did @emph{not} support it, and early releases of XEmacs 22
-will not either.
+@node Q1.1.4, Q1.2.1, Q1.1.3, Introduction
+@unnumberedsubsec Q1.1.4: Where can I obtain a printed copy of the XEmacs User's Manual?
 
-However, menubar localization @emph{does} work.  To enable it, add to
-your @file{Emacs} file entries like this:
-
-@example
-Emacs*XlwMenu.resourceLabels:                   True
-Emacs*XlwMenu.file.labelString:                 Fichier
-Emacs*XlwMenu.openInOtherWindow.labelString:   In anderem Fenster oeffnen
-@end example
-
-The name of the resource is derived from the non-localized entry by
-removing punctuation and capitalizing as above.
+Pre-printed manuals are not available.  If you are familiar with
+TeX, you can generate your own manual from the XEmacs sources.
 
-@node Q1.3.5, Q1.3.6, Q1.3.4, Introduction
-@unnumberedsubsec Q1.3.5: Please explain the various input methods in MULE/XEmacs
+HTML and Postscript versions of XEmacs manuals are available from the
+XEmacs web site at
+@uref{http://www.xemacs.org/Documentation/index.html}.
 
-Mule supports a wide variety of input methods.  There are three basic
-classes: Lisp implementations, generic platform support, and library
-interfaces.
+@unnumberedsec 1.2: Versions for Different Operating Systems
 
-@emph{Lisp implementations} include Quail, which provides table-driven input
-methods for almost all the character sets that Mule supports (including
-all of the ISO 8859 family, the Indic languages, Thai, and so on), and
-SKK, for Japanese.  (SKK also supports an interface to an external
-"dictionary server" process.)  Quail supports both typical "dead-key"
-methods (eg, in the "latin-1-prefix" method, @kbd{" a} produces ä, LATIN
-SMALL LETTER A WITH DIAERESIS), and the complex dictionary-based phonetic
-methods used for Asian ideographic languages like Chinese.
+@node Q1.2.1, Q1.2.2, Q1.1.4, Introduction
+@unnumberedsubsec Q1.2.1: Do I need X11 to run XEmacs?
 
-Lisp implementations can be less powerful (but they are not perceptibly
-inefficient), and of course are not portable to non-Emacs applications.
-The incompatibility can be very annoying.  On the other hand, they
-require no special platform support or external libraries, so if you can
-display the characters, Mule can input them for you and you can edit,
-anywhere.
+No.  The name @dfn{XEmacs} is unfortunate in the sense that it is
+@strong{not} an X Window System-only version of Emacs.  XEmacs has
+full color support on a color-capable character terminal.
 
-@emph{Generic platform support} is currently limited to the X Input
-Method (XIM) framework, although support for MSIME (for MS Windows) is
-planned, and IIIMF (Sun's Internet-Intranet Input Method Framework)
-support is extremely desirable.  XIM is enabled at build time by use of
-the @samp{--with-xim} flag to @code{configure}.  For use of XIM, see
-your platform documentation.  However, normally the input method you use
-is specified via the @samp{LANG} and @samp{XMODIFIERS} environment
-variables.
+@node Q1.2.2, Q1.2.3, Q1.2.1, Introduction
+@unnumberedsubsec Q1.2.2: What versions of Unix does XEmacs run on?
 
-Of course, input skills are portable across most applications.  However,
-especially in modern GUI systems the habit of using bucky bits has
-fallen into sad disuse, and many XIM systems are poorly configured for
-use with Emacs.  For example, the kinput2 input manager (a separate
-process providing an interface between Japanese dictionary servers such
-as Canna and Wnn, and the application) tends to gobble up keystrokes
-generating Meta characters.  This means that to edit while using an XIM
-input method, you must toggle the input method off every time you want
-to use @kbd{M-f}.  Your mileage may vary.
+XEmacs is regularly tested on Linux, Solaris, SunOS, HP/UX, FreeBSD,
+OpenBSD, BSD/OS aka BSDI, Tru64 aka DEC/OSF, SCO5, and probably
+others.  It should work on all versions of Unix created in the last 10
+years or so, perhaps with a bit of work on more obscure platforms to
+correct bit-rot.  It uses a sophisticated configuration system to
+auto-detect zillions of features that are implemented differently in
+different versions of Unix, so it will probably work on your vendor's
+version, possibly with a bit of tweaking, even if we've never heard of
+it.
 
-@emph{Library interfaces} are most common for Japanese, although Wnn
-supports Chinese (traditional and simplified) and Korean.  There are
-Chinese and Korean input servers available, but we do not know of any
-patches for XEmacs to use them directly.  You can use them via
-IM-enabled terminals, by manipulating the terminal coding systems.  We
-describe only the Japanese-oriented systems here.  The advantage of
-these systems is that they are very powerful, and on platforms where
-they are available there is typically a wide range of applications that
-support them.  Thus your input skills are portable across applications.
+For problems with particular machines and versions of Unix, see the
+@file{PROBLEMS} file.
 
-Mule provides built-in interfaces to the following input methods: Wnn4,
-Wnn6, Canna, and SJ3.  These can be configured at build time.  There are
-patches available (no URL, sorry) to support the SKK server, as well.
-Wnn and SJ3 use the @code{egg} user interface.  The interface for Canna
-is specialized to Canna.
+Much effort has gone into making XEmacs work on as many different
+machines, configurations, and compilers as possible.
 
-Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Kyôto
-University. It is a powerful and complex system.  Wnn4 is free and Wnn6
-is not.  Wnn uses grammatical hints and probability of word association,
-so in principle Wnn can be cleverer than other methods.
+Much effort has gone into making XEmacs 64-bit clean.
 
-Canna, made by NEC, supports only Japanese.  It is a simple and powerful
-system. Canna uses only grammar, but its grammar and dictionary are
-quite sophisticated.  So for standard modern Japanese, Canna seems
-cleverer than Wnn4. In addition, the UNIX version of Canna is free (now
-there is a Microsoft Windows version).
+Much effort has gone into removing system-specific code, and replacing
+such code with autodetection at configure time.
 
-SJ3, by Sony, supports only Japanese.
+The XEmacs core should build "out of the box" on most Unix-like systems.
 
-Egg consists of following parts:
+XEmacs 21.2 was tested and @samp{make check} succeeded on these Unix
+configurations as of 2001-02-10:
 
-@enumerate
-@item
-Input character Translation System (ITS) layer.
-It translates ASCII inputs to Kana/PinYin/Hangul characters.
+@example
+alphaev56-dec-osf4.0e (both Compaq C and gcc)
+i386-unknown-freebsd4.2
+i386-unknown-netbsdelf1.5
+i586-sco-sysv5uw7.0.1 (both SCO's cc and gcc)
+i686-pc-linux-gnu
+hppa2.0-hp-hpux10.20 (both HP's ANSI cc and gcc)
+mips-sgi-irix6.5 (both MIPSpro cc and gcc)
+rs6000-ibm-aix4.3.0.0 (both IBM's xlc and gcc)
+sparc-sun-solaris2.6 (both Sun's Forte C and gcc)
+sparc-sun-solaris2.7 (both Sun's Forte C and gcc)
+sparc-sun-sunos4.1.4 (gcc)
+@end example
 
-@item
-Kana/PinYin/Hangul to Kanji transfer layer.
-The interface layer to network Kana-Kanji server (Wnn and Sj3).
-@end enumerate
+Some systems have a dual mode 32-bit/64-bit compiler.  On most of these,
+XEmacs requires the @samp{--pdump} (in XEmacs 21.5,
+@samp{--enable-pdump}) configure option to build correctly with the
+64-bit version of the compiler.
 
-These input methods are modal.  They have a raw (alphabet) mode, a
-phonetic input mode, and Kana-Kanji transfer mode.  However there are
-mode-less input methods for Egg and Canna.  @samp{boiled-egg} is a
-mode-less input method running on Egg.  For Canna, @samp{canna.el} has a
-tiny boiled-egg-like command, @code{(canna-boil)}, and there are some
-boiled-egg-like utilities.
+@example
+mips-sgi-irix6.5, CC="gcc -mabi=64"
+mips-sgi-irix6.5, CC="cc -64"
+rs6000-ibm-aix4.3.0.0, CC="cc -q64"
+@end example
 
-Much of this information was provided by @email{morioka@@jaist.ac.jp,
-MORIOKA Tomohiko}.
+On most of these systems, XEmacs also builds with a C++ compiler,
+but not "out of the box".  This feature is only for use by the
+maintainers.
 
-@node Q1.3.6, Q1.3.7, Q1.3.5, Introduction
-@unnumberedsubsec Q1.3.6: How do I portably code for MULE/XEmacs?
+XEmacs 21.2 is known @emph{not} to work on any machines with m680x0
+processors.  Sorry, all you sun3 and Unix PC nostalgia buffs out there.
 
-MULE has evolved rapidly over the last few years, and the original third
-party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite
-different implementations.  The APIs also vary although recent versions
-of XEmacs have tended to converge to the GNU Emacs standard.
+VMS has never been supported by XEmacs.  In fact, all the old VMS code
+inherited from Emacs has been removed.  Sorry, all you VMS fans out there.
 
-MULE implementations are going to continue to evolve.  Both GNU Emacs
-and XEmacs are working hard on Unicode support, which will involve new
-APIs and probably variations on old ones.  For XEmacs 22, the old ISO
-2022-based system for recognizing encodings will be replaced by a much
-more flexible system, which should improve accuracy of automatic coding
-detections, but will also involve new APIs.
+@node Q1.2.3, Q1.2.4, Q1.2.2, Introduction
+@unnumberedsubsec Q1.2.3: Is there a port of XEmacs to Microsoft Windows?
 
-@email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes:
+Yes.  Beginning with release 21.0, XEmacs has worked under MS Windows
+and is fully-featured and actively developed.  A group of dedicated
+developers actively maintains and improves the Windows-specific
+portions of the code.  Some of the core developers, in fact, use
+Windows as their only development environment, and some features, such
+as printing, actually work better on Windows than native Unix and Mac
+OS X.  The mailing list at @email{xemacs-winnt@@xemacs.org} is dedicated
+to that effort (please use the -request address to
+subscribe). (Despite its name, XEmacs actually works on all versions
+of Windows.)
 
-@quotation
-The application implementor must write separate code for these mule
-variants.  [Please don't hesitate to report these variants to us; they
-are not, strictly speaking, bugs, but they give third-party developers
-the same kind of creepy-crawly feeling.  We'll do what we can. -- Ed.]
+The list name is misleading, as XEmacs supports and has been compiled on
+Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
+XP, and all newer versions of Windows.  The MS Windows-specific code is
+based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
+MS-DOS.
 
-MULE and the next version of Emacs are similar but the symbols are very
-different---requiring separate code as well.
+XEmacs also supports the Cygwin and MinGW development and runtime
+environments, where it also uses native Windows code for graphical
+features.  In addition, under Cygwin it is possible to compile XEmacs
+to use an X server (and XFree86 is available as part of the standard
+Cygwin installation).
 
-Namely we must support 3 kinds of mule variants and 4 or 5 or 6 kinds of
-emacs variants... (;_;) I'm shocked, so I wrote a wrapper package called
-@code{emu} to provide a common interface.  [There is an XEmacs package
-of APEL which provides much more comprehensive coverage.  Be careful,
-however; APEL has problems of its own. -- Ed.]
+@node Q1.2.4, Q1.2.5, Q1.2.3, Introduction
+@unnumberedsubsec Q1.2.4: Can I build XEmacs on MS Windows with X support?  Do I need to?
 
-I have the following suggestions about dealing with mule variants:
+Yes, you can, but no you do not need to.  In fact, we recommend that you
+use a native-GUI version unless you have a specific need for an X
+version.
 
-@itemize @bullet
-@item
-@code{(featurep 'mule)} @code{t} on all mule variants
+@node Q1.2.5, Q1.2.6, Q1.2.4, Introduction
+@unnumberedsubsec Q1.2.5: What are Cygwin and MinGW, and do I need them to run XEmacs?
 
-@item
-@code{(boundp 'MULE)} is @code{t} on only MULE.  Maybe the next version
-of Emacs will not have this symbol.
+To answer the second part of the question: No, you, you don't need
+Cygwin or MinGW to build or to run XEmacs.  But if you have them and
+want to use them, XEmacs supports these environments.
 
-@item
-MULE has a variable @code{mule-version}.  Perhaps the next version of
-Emacs will have this variable as well.
-@end itemize
+(One important reason to support Cygwin is that it lets the MS Windows
+developers test out their code in a Unix environment without actually
+having to have a Unix machine around.  For this reason alone, Cygwin
+support is likely to remain supported for a long time in XEmacs.  Same
+goes for the X support under Cygwin, for the same reasons.  MinGW
+support, on the other hand, depends on volunteers to keep it up to date;
+but this is generally not hard.)
 
-Following is a sample to distinguish mule variants:
+Cygwin is a set of tools providing Unix-like API on top of Win32.
+It makes it easy to port large Unix programs without significant
+changes to their source code.  It is a development environment as well
+as a runtime environment.
 
-@lisp
-(if (featurep 'mule)
-    (cond ((boundp 'MULE)
-           ;; for original Mule
-           )
-          ((string-match "XEmacs" emacs-version)
-           ;; for XEmacs with Mule
-           )
-          (t
-           ;; for next version of Emacs
-           ))
-  ;; for old emacs variants
-  )
-@end lisp
-@end quotation
+When built with Cygwin, XEmacs supports all display types -- TTY, X &
+Win32 GUI, and can be built with support for all three simultaneously.
+If you build with Win32 GUI support then the Cygwin version uses the
+majority of the Windows-specific code, which is mostly related to
+display.  If you want to build with X support you need X libraries (and
+an X server to display XEmacs on); see @ref{Q2.3.7}.  TTY and Win32 GUI
+require no additional libraries beyond what comes standard with Cygwin.
 
-@node Q1.3.7, Q1.3.8, Q1.3.6, Introduction
-@unnumberedsubsec Q1.3.7: How about Cyrillic Modes?
+The advantages of the Cygwin version are that it integrates well with
+the Cygwin environment for existing Cygwin users; uses configure so
+building with different features is very easy; and actively supports X &
+TTY.  Furthermore, the entire Cygwin environment and compiler are free,
+whereas Visual C++ costs money.
 
-@email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes:
+The disadvantage is that it requires the whole Cygwin environment,
+whereas the native port requires only a suitable MS Windows compiler.
+Also, it follows the Unix filesystem and process model very closely
+(some will undoubtedly view this as an advantage).
 
-@quotation
-There is a cyrillic mode in the file @file{mysetup.zip} in
-@iftex
-@*
-@end iftex
-@uref{ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/}.  This is a
-modification to @email{ava@@math.jhu.ed, Valery Alexeev's} @file{russian.el}
-which can be obtained from
-@end quotation
+See @uref{http://www.cygwin.com/} for more information on
+Cygwin.
 
-@uref{http://www.math.uga.edu/~valery/russian.el}.
+MinGW is a collection of header files and import libraries that allow
+one to use GCC under the Cygwin environment to compile and produce
+exactly the same native Win32 programs that you can using Visual C++.
+Programs compiled with MinGW make use of the standard Microsoft runtime
+library @file{MSVCRT.DLL}, present on all Windows systems, and look,
+feel, and act like a standard Visual-C-produced application. (The only
+difference is the compiler.) This means that, unlike a
+standardly-compiled Cygwin application, no extra runtime support
+(e.g. Cygwin's @file{cygwin1.dll}) is required.  This, along with the
+fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
+environment, for those die-hard Unix hackers out there), is the main
+advantage of MinGW.  It is also potentially faster than Cygwin because
+it has less overhead when calling Windows, but you lose the POSIX
+emulation layer, which makes Unix programs harder to port. (But this is
+irrelevant for XEmacs since it's already ported to Win32.)
 
-@email{d.barsky@@ee.surrey.ac.uk, Dima Barsky} writes:
+See @uref{http://www.mingw.org/} for more information on MinGW.
 
-@quotation
-There is another cyrillic mode for both GNU Emacs and XEmacs by
-@email{manin@@camelot.mssm.edu, Dmitrii
-(Mitya) Manin} at
-@iftex
+@node Q1.2.6, Q1.2.7, Q1.2.5, Introduction
+@unnumberedsubsec Q1.2.6: What are the differences between the various MS Windows emacsen?
 
-@end iftex
-@uref{http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el}.
-@c Link above, <URL:http://camelot.mssm.edu/~manin/cyr.el> was dead.
-@c Changed to russian host instead
-@end quotation
+XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
+Could you briefly explain the differences between them?
 
-@email{rebecca.ore@@op.net, Rebecca Ore} writes:
+Here is a recount of various Emacs versions running on MS Windows:
 
-@quotation
-The fullest resource I found on Russian language use (in and out of
-XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html}
-@end quotation
+@itemize @bullet
 
-@node Q1.3.8, Q1.3.9, Q1.3.7, Introduction
-@unnumberedsubsec Q1.3.8: Does XEmacs support Unicode?
+@item
+XEmacs
 
-Partially, as an external encoding for files, processes, and terminals.
-It does not yet support Unicode fonts @ref{Q1.3.9, Does XEmacs support
-Unicode Fonts?}
+@itemize @minus
 
-To get Unicode support, you need a Mule-enabled XEmacs.  Install
-Mule-UCS from packages in the usual way.  Put
+@item
+Beginning with XEmacs 19.12, XEmacs' architecture was redesigned
+in such a way to allow clean support of multiple window systems.  At
+this time the TTY support was added, making X and TTY the first two
+"window systems" supported by XEmacs.  The 19.12 design is the basis for
+the current native MS Windows code.
 
-@example
-(require 'un-define)
-(set-coding-priority-list '(utf-8))
-(set-coding-category-system 'utf-8 'utf-8)
-@end example
+@item
+Some time during 1997, David Hobley (soon joined by Marc Paquette)
+imported some of the NT-specific portions of GNU Emacs, making XEmacs
+with X support compile under Windows NT, and creating the "X" port.
 
-in your init file to enable the UTF-8 coding system.  You may wish to
-view the documentation of @code{set-coding-priority-list} if you find
-that files that are not UTF-8 are being mis-recognized as UTF-8.
+@item
+Several months later, Jonathan Harris sent out initial patches to use
+the Win32 API, thus creating the native port.  Since then, various
+people have contributed, including Kirill M. Katsnelson (contributed
+support for menubars, subprocesses and network, as well as loads of
+other code), Andy Piper (ported XEmacs to Cygwin environment,
+contributed Windows unexec, Windows-specific glyphs and toolbars code,
+and more), Ben Wing (loads of improvements; primary MS Windows developer
+since 2000), Jeff Sparkes (contributed scrollbars support) and many
+others.
+@end itemize
 
-Install standard national fonts (not Unicode fonts) for all
-character sets you use.  See @ref{Q1.3.9}.
+@item
+NT Emacs
 
-Mule-UCS also supports 16-bit forms of Unicode (UTF-16).  It does not
-support 31-bit forms of Unicode (UTF-32 or UCS-4).
+@itemize @minus
 
-@node Q1.3.9, Q1.4.1, Q1.3.8, Introduction
-@unnumberedsubsec Q1.3.9: How does XEmacs display Unicode?
+@item
+NT Emacs was an early version of GNU Emacs 19 modified to compile and
+run under MS Windows 95 and NT using the native Win32 API.  It was
+written by Geoff Voelker, and has long since been incorporated into
+the mainline GNU Emacs distribution.
+@end itemize
 
-Mule doesn't have a Unicode charset internally, so there's nothing to
-bind a Unicode registry to.  It would not be straightforward to create,
-either, because Unicode is not ISO 2022-compatible.  You'd have to
-translate it to multiple 96x96 pages.
+@item
+Win-Emacs
 
-This means that Mule-UCS uses ordinary national fonts for display.  This
-is not really a problem, except for those languages that use the Unified
-Han characters.  The problem here is that Mule-UCS maps from Unicode
-code points to national character sets in a deterministic way.  By
-default, this means that Japanese fonts are tried first, then Chinese,
-then Korean.  To change the priority ordering, use the command
-`un-define-change-charset-order'.
+@itemize @minus
 
-It also means you can't use Unicode fonts directly, at least not without
-extreme hackery.  You can run -nw with (set-terminal-coding-system
-'utf-8) if you really want a Unicode font for some reason.
+@item
+Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
+compatibility libraries.  Win-Emacs was written by Ben Wing.  The MS
+Windows code never made it back to Lucid Emacs, and its creator (Pearl
+Software) has long since gone out of business.
+@end itemize
 
-Real Unicode support will be introduced in XEmacs 22.0.
+@item
+GNU Emacs for DOS
+
+@itemize @minus
+
+@item
+GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
+port of GCC).  Such an Emacs is heavily underfeatured, because it does
+not support long file names, lacks proper subprocesses support, and
+is far too big compared with typical DOS editors.
+@end itemize
+
+@item
+GNU Emacs compiled with Win32
+
+@itemize @minus
+
+@item
+Starting with GNU Emacs 19.30, it has been possible to compile GNU Emacs
+under MS Windows using the DJGPP compiler and X libraries.  The result
+is very similar to GNU Emacs compiled under MS DOS, only it works
+somewhat better because it runs in 32-bit mode, makes use of all the
+system memory, supports long file names, etc.
+@end itemize
+
+@end itemize
+
+@node Q1.2.7, Q1.2.8, Q1.2.6, Introduction
+@unnumberedsubsec Q1.2.7: How does the port cope with differences in the Windows user interface?
+
+The XEmacs (and Emacs in general) user interface is pretty different
+from what is expected of a typical MS Windows program.  How does the MS
+Windows port cope with it?
+
+As a general rule, we follow native MS Windows conventions as much as
+possible.  21.4 is a fairly complete Windows application, supporting
+native printing, system file dialog boxes, tool tips, etc.  In cases
+where there's a clear UI conflict, we currently use normal Unix XEmacs
+behavior by default, but make sure the MS Windows "look and feel" (mark
+via shift-arrow, self-inserting deletes region, Alt selects menu items,
+etc.) is easily configurable (respectively: using the variable
+@code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact
+the default in these versions], or the @file{pc-select} package; using
+the @file{pending-del} package; and setting the variable
+@code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above).
+In fact, if you use the sample @file{init.el} file as your init file,
+you will get all these behaviors automatically turned on.
+
+In future versions, some of these features might be turned on by
+default in the MS Windows environment.
+
+@node Q1.2.8, Q1.2.9, Q1.2.7, Introduction
+@unnumberedsubsec Q1.2.8: Is there a port of XEmacs to the Macintosh?
+
+Yes.
+
+XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
+will not feel very much like a Mac application as it has no Mac-specific
+code in it.
+
+There is also a port of XEmacs 19.14 that works on all recent versions
+of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com,
+Pitts Jarvis} (recently deceased).  It runs in an equivalent of TTY
+mode only (one single Macintosh window, 25 colors), but has a large
+number of Mac-specific additions.  It's available at
+@uref{http://homepage.mac.com/pjarvis/xemacs.html}.
+
+@node Q1.2.9, Q1.2.10, Q1.2.8, Introduction
+@unnumberedsubsec Q1.2.9: Is there a port of XEmacs to MS-DOS?
+
+No.  We have never supported running on MS-DOS or Windows 3.1, and in
+fact have long since deleted all MS-DOS-related code.  We're not
+particularly interested in patches for these platforms, as they would
+introduce huge amounts of code clutter due to the woefully
+underfeatured nature of these systems. (See GNU Emacs for a port to
+MS-DOS.)
+
+@node Q1.2.10, Q1.2.11, Q1.2.9, Introduction
+@unnumberedsubsec Q1.2.10: Is there a port of XEmacs to OS/2?
+
+No, but Alexander Nikolaev <avn_1251@@mail.ru> was at one point
+working on it.
+
+@node Q1.2.11, Q1.2.12, Q1.2.10, Introduction
+@unnumberedsubsec Q1.2.11: Is there a port of XEmacs to NextStep?
+
+Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did
+the port of GNU Emacs to NeXTstep and expressed interest in doing the
+XEmacs port, but never went any farther.
 
-@node Q1.4.1, Q1.4.2, Q1.3.9, Introduction
-@unnumberedsec 1.4: Getting Started, Backing up & Recovery
-@unnumberedsubsec Q1.4.1: What is an @file{init.el} or @file{.emacs} and is there a sample one?
+@node Q1.2.12, Q1.3.1, Q1.2.11, Introduction
+@unnumberedsubsec Q1.2.12: Is there a port of XEmacs to VMS?
+
+VMS has never been supported by XEmacs.  In fact, all the old VMS code
+inherited from GNU Emacs has been removed.  Sorry, all you VMS fans
+out there.
+
+@unnumberedsec 1.3: Getting Started
+
+@node Q1.3.1, Q1.3.2, Q1.2.12, Introduction
+@unnumberedsubsec Q1.3.1: What is an @file{init.el} or @file{.emacs} and is there a sample one?
 
 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to
 your tastes.  Starting in 21.4, the preferred location for the init file
@@ -1244,18 +1409,32 @@ various versions.  Recently, look under the @samp{Samples} submenu.)  To
 determine the location of the @file{etc/} directory type the command
 @kbd{C-h v data-directory @key{RET}}.
 
-@node Q1.4.2, Q1.4.3, Q1.4.1, Introduction
-@unnumberedsubsec Q1.4.2: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
+@node Q1.3.2, Q1.3.3, Q1.3.1, Introduction
+@unnumberedsubsec Q1.3.2: Where do I put my @file{init.el} file?
+
+@file{init.el} is the name of the init file starting with 21.4, and is
+located in the subdirectory @file{.xemacs/} of your home directory.  In
+prior versions, the init file is called @file{.emacs} and is located in
+your home directory.
+
+Your home directory under Windows is determined by the @samp{HOME}
+environment variable.  If this is not set, it defaults to @samp{C:\}.
+To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
+select @samp{Control Panel->System->Advanced->Environment Variables...}
+under Windows NT/2000.
+
+@node Q1.3.3, Q1.3.4, Q1.3.2, Introduction
+@unnumberedsubsec Q1.3.3: Can I use the same @file{init.el} with the other Emacs?
 
-Yes.  The sample @file{init.el}/@file{.emacs} included in the XEmacs
+Yes.  The sample @file{init.el} included in the XEmacs
 distribution will show you how to handle different versions and flavors
 of Emacs.
 
-@node Q1.4.3, Q1.4.4, Q1.4.2, Introduction
-@unnumberedsubsec Q1.4.3: Any good tutorials around?
+@node Q1.3.4, Q1.3.5, Q1.3.3, Introduction
+@unnumberedsubsec Q1.3.4: Any good XEmacs tutorials around?
 
 There's the XEmacs tutorial available from the Help Menu under
-@samp{Basics->Tutorials}, or by typing @kbd{C-h t}. To check whether
+@samp{Help->Tutorials}, or by typing @kbd{C-h t}. To check whether
 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type
 the first letters of your preferred language, then type @key{RET}.
 
@@ -1272,8 +1451,8 @@ the first letters of your preferred language, then type @key{RET}.
 @comment @end iftex
 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}.
 
-@node Q1.4.4, Q1.4.5, Q1.4.3, Introduction
-@unnumberedsubsec Q1.4.4: May I see an example of a useful XEmacs Lisp function?
+@node Q1.3.5, Q1.3.6, Q1.3.4, Introduction
+@unnumberedsubsec Q1.3.5: May I see an example of a useful XEmacs Lisp function?
 
 The following function does a little bit of everything useful.  It does
 something with the prefix argument, it examines the text around the
@@ -1307,8 +1486,8 @@ this will tell you that the @code{*} requires a writable buffer, and
 @code{p} converts the prefix argument to a number, and
 @code{interactive} allows you to execute the command with @kbd{M-x}.
 
-@node Q1.4.5, Q1.4.6, Q1.4.4, Introduction
-@unnumberedsubsec Q1.4.5: And how do I bind it to a key?
+@node Q1.3.6, Q1.3.7, Q1.3.5, Introduction
+@unnumberedsubsec Q1.3.6: And how do I bind it to a key?
 
 To bind to a key do:
 
@@ -1318,8 +1497,8 @@ To bind to a key do:
 
 Or interactively, @kbd{M-x global-set-key} and follow the prompts.
 
-@node Q1.4.6, , Q1.4.5, Introduction
-@unnumberedsubsec Q1.4.6: What's the difference between a macro and a function?
+@node Q1.3.7, Q1.3.8, Q1.3.6, Introduction
+@unnumberedsubsec Q1.3.7: What's the difference between a macro and a function?
 
 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual:
 
@@ -1338,3725 +1517,4104 @@ Do not confuse the two terms with @dfn{keyboard macros}, which are
 another matter, entirely.  A keyboard macro is a key bound to several
 other keys.  Refer to manual for details.
 
-@node Installation, Customization, Introduction, Top
-@unnumbered 2 Installation and Trouble Shooting
-
-This is part 2 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to Installation, Maintenance and Trouble Shooting.
+@node Q1.3.8, Q1.4.1, Q1.3.7, Introduction
+@unnumberedsubsec Q1.3.8: What is @code{Custom}?
 
-@menu
-Installation:
-* Q2.0.1::      Running XEmacs without installing.
-* Q2.0.2::      XEmacs is too big.
-* Q2.0.3::      Compiling XEmacs with Netaudio.
-* Q2.0.4::      Problems with Linux and ncurses.
-* Q2.0.5::      Do I need X11 to run XEmacs?
-* Q2.0.6::      I'm having strange crashes.  What do I do?
-* Q2.0.7::      Libraries in non-standard locations.
-* Q2.0.8::      can't resolve symbol _h_errno
-* Q2.0.9::      Where do I find external libraries?
-* Q2.0.10::     After I run configure I find a coredump, is something wrong?
-* Q2.0.11::     XEmacs can't resolve host names.
-* Q2.0.12::     Why can't I strip XEmacs?
-* Q2.0.13::     I don't need no steenkin' packages.  Do I?
-* Q2.0.14::     I don't want to install a million .els one at a time!
-* Q2.0.15::     EFS fails with "500 AUTH not understood" (NEW)
-* Q2.0.16::     Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW)
-
-Trouble Shooting:
-* Q2.1.1::      XEmacs just crashed on me!
-* Q2.1.2::      Cryptic Minibuffer messages.
-* Q2.1.3::      Translation Table Syntax messages at Startup.
-* Q2.1.4::      Startup warnings about deducing proper fonts?
-* Q2.1.5::      XEmacs cannot connect to my X Terminal.
-* Q2.1.6::      XEmacs just locked up my Linux X server.
-* Q2.1.7::      HP Alt key as Meta.
-* Q2.1.8::      got (wrong-type-argument color-instance-p nil)!
-* Q2.1.9::      XEmacs causes my OpenWindows 3.0 server to crash.
-* Q2.1.10::     Warnings from incorrect key modifiers.
-* Q2.1.11::     Can't instantiate image error... in toolbar
-* Q2.1.12::     Regular Expression Problems on DEC OSF1.
-* Q2.1.13::     HP/UX 10.10 and @code{create_process} failure
-* Q2.1.14::     @kbd{C-g} doesn't work for me.  Is it broken?
-* Q2.1.15::     How to debug an XEmacs problem with a debugger.
-* Q2.1.16::     XEmacs crashes in @code{strcat} on HP/UX 10.
-* Q2.1.17::     @samp{Marker does not point anywhere}.
-* Q2.1.18::     XEmacs is outputting lots of X errors.
-* Q2.1.19::     XEmacs does not follow the local timezone.
-* Q2.1.20::     @samp{Symbol's function definition is void: hkey-help-show.}
-* Q2.1.21::     [This question intentionally left blank]
-* Q2.1.22::     XEmacs seems to take a really long time to do some things.
-* Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
-* Q2.1.24::     XEmacs won't start without network.
-* Q2.1.25::     After upgrading, XEmacs won't do `foo' any more!
-@end menu
+@code{Custom} is a system for customizing XEmacs options.
 
-@node Q2.0.1, Q2.0.2, Installation, Installation
-@unnumberedsec 2.0: Installation
-@unnumberedsubsec Q2.0.1: Running XEmacs without installing
+You can access @code{Advanced (Customize)} from the @code{Options} menu
+or invoking one of customize commands by typing eg.
+@kbd{M-x customize}, @kbd{M-x customize-face},
+@kbd{M-x customize-variable} or @kbd{M-x customize-apropos}.
 
-How can I just try XEmacs without installing it?
+There is also new @samp{browser} mode for Customize.
+Try it out with @kbd{M-x customize-browse}
 
-XEmacs will run in place without requiring installation and copying of
-the Lisp directories, and without having to specify a special build-time
-flag.  It's the copying of the Lisp directories that requires so much
-space.  XEmacs is largely written in Lisp.
+@unnumberedsec 1.4: Getting Help
 
-A good method is to make a shell alias for xemacs:
+@node Q1.4.1, Q1.4.2, Q1.3.8, Introduction
+@unnumberedsubsec Q1.4.1: Where can I get help?
 
-@example
-alias xemacs=/i/xemacs-20.2/src/xemacs
-@end example
+Probably the easiest way, if everything is installed, is to use Info, by
+pressing @kbd{C-h i}, or looking for an Info item on the
+Help Menu.  @kbd{M-x apropos} can be used to look for particular commands.
 
-(You will obviously use whatever directory you downloaded the source
-tree to instead of @file{/i/xemacs-20.2}).
+For items not found in the manual, try reading this FAQ
+and reading the Usenet group comp.emacs.xemacs.
 
-This will let you run XEmacs without massive copying.
+If you choose to post to a newsgroup, @strong{please use
+comp.emacs.xemacs}.  Please do not post XEmacs related questions to
+gnu.emacs.help.
 
-@node Q2.0.2, Q2.0.3, Q2.0.1, Installation
-@unnumberedsubsec Q2.0.2: XEmacs is too big
+If you cannot post or read Usenet news, there is a corresponding mailing
+list @email{xemacs-news@@xemacs.org} which is available.  It can be
+subscribed to via the Mailman Web interface or by sending mail to to
+@email{xemacs-news-request@@xemacs.org} with @samp{subscribe} in the
+body of the message.  See also
+@uref{http://www.xemacs.org/Lists/#xemacs-news}.  To cancel a
+subscription, you may use the @email{xemacs-news-request@@xemacs.org}
+address or the Web interface.  Send a message with a subject of
+@samp{unsubscribe} to be removed.
 
-The space required by the installation directories can be
-reduced dramatically if desired.  Gzip all the .el files.  Remove all
-the packages you'll never want to use.  Remove the TexInfo manuals.
-Remove the Info (and use just hardcopy versions of the manual).  Remove
-most of the stuff in etc.  Remove or gzip all the source code.  Gzip or
-remove the C source code.  Configure it so that copies are not made of
-the support lisp.
+@node Q1.4.2, Q1.4.3, Q1.4.1, Introduction
+@unnumberedsubsec Q1.4.2: Which mailing lists are there?
+
+For complete, up-to-date info on the lists and how to subscribe, see
+@uref{http://www.xemacs.org/Lists/}.
+
+@table @samp
+
+@item comp.emacs.xemacs
+is a Usenet newsgroup
+for XEmacs users to discuss problems and issues that arise
+for them.  It's not generally an appropriate place to ask
+about apparent bugs (use @samp{xemacs-beta}), or future plans
+(use @samp{xemacs-design}).
+
+@item xemacs-announce
+is a read-only, low
+volume list for announcements concerning the XEmacs project
+and new releases of the XEmacs software.
+
+@item xemacs-beta
+is an open list for bug reports about beta versions of XEmacs.  This
+includes the bug reports themselves, by both users and developers, as
+well as queries, follow-ups, and discussions further determining their
+nature and status.  This is the primary channel for this kind of
+discussion; related code changes will usually not be applied until
+they have been discussed here.  When such discussions touch on
+significant changes to the code (in particular, structural changes),
+or on changes to API's or external functionality, they should be moved
+to @samp{xemacs-design}.  Requests and proposals for non-bug-related
+changes do not belong on @samp{xemacs-beta}, and should be sent to
+@samp{xemacs-design} instead.
+
+@item xemacs-beta-ja
+is an open list for bug
+reports and design discussion related to Mule features,
+including Japanese handling, in beta versions of XEmacs.
+Japanese is the preferred language of discussion.  For most
+timely presentation to reviewers, please consider sending
+appropriate discussion to @samp{xemacs-mule} or
+@samp{xemacs-design} in English when convenient for
+the participants in discussion.  When possible, bug reports
+not related to Mule (including Japanese) should be reported on
+@samp{xemacs-beta} in English.
+
+@item xemacs-buildreports
+is an open list for
+submission of build-reports on beta versions of XEmacs. For
+information on what the build-reports should contain, please
+see the `etc/BETA' file which is included in each beta
+distribution.
 
-These are all Emacs Lisp source code and bytecompiled object code.  You
-may safely gzip everything named *.el here.  You may remove any package
-you don't use.  @emph{Nothing bad will happen if you delete a package
-that you do not use}.  You must be sure you do not use it though, so be
-conservative at first.
+@item xemacs-cvs
+is a read-only list for notices
+and information on what has been committed to the XEmacs CVS
+trees, by whom, and for what.
+
+@item xemacs-design
+is an open list for
+discussing the design of XEmacs.  This includes discussion
+about planned and ongoing changes to functionality and API
+changes and additions as well as requests for them.  This is
+the primary channel for this kind of discussion; related code
+changes will usually not be applied until they have been
+discussed here.  This does not include bug reports, which go
+to @samp{xemacs-beta}.
+
+@item xemacs-mule
+is an open mailing list for
+discussion of International extensions to XEmacs including
+Mule, XIM, I18n issues, etc, and is not confined to
+developmental issues. This list is not restricted to
+English, postings in all languages are welcome.
+
+@item xemacs-news
+is an open list for discussion
+and bug reporting for XEmacs.  This mailing list is
+bi-directionally gatewayed with the USENET newsgroup
+comp.emacs.xemacs.
+
+@item xemacs-nt
+is a developers-only mailing
+list and is intended for people who wish to work actively on
+the porting of XEmacs to Microsoft Windows NT and Microsoft
+Windows '95.
+
+@item xemacs-patches
+is an open, moderated
+list for submission of patches to the XEmacs distribution
+and its packages. Anyone may subscribe or submit to
+xemacs-patches, but all submissions are reviewed by the list
+moderator before they are distributed to the
+list. Discussion is not appropriate on xemacs-patches.
+
+@item xemacs-users-ja
+is an open list for
+discussion and bug reporting for XEmacs.  Japanese is the
+preferred language of discussion.  It is not gated to
+comp.emacs.xemacs or the @samp{xemacs} list.  For
+fastest response, bugs not specifically related to Japanese
+or Mule features should be reported on
+@samp{xemacs-beta} (in English).
+
+@item xemacs-users-ru
+is an open list for
+discussion and bug reporting for XEmacs.  Russian is the
+preferred language of discussion.  It is not gated to
+comp.emacs.xemacs or the @samp{xemacs} list.  For
+fastest response, bugs not specifically related to Russian
+or Mule features should be reported on
+@samp{xemacs-beta} (in English).
+@end table
 
-Any package with the possible exceptions of xemacs-base, and EFS are
-candidates for removal.  Ask yourself, @emph{Do I ever want to use this
-package?}  If the answer is no, then it is a candidate for removal.
+@node Q1.4.3, Q1.4.4, Q1.4.2, Introduction
+@unnumberedsubsec Q1.4.3: Where are the mailing lists archived?
 
-First, gzip all the .el files.  Then go about package by package and
-start gzipping the .elc files.  Then run XEmacs and do whatever it is
-you normally do.  If nothing bad happens, then remove the package.  You
-can remove a package via the PUI interface 
-(@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages
-you wish to delete, and then @kbd{x} to delete them.
+The archives can be found at @uref{http://list-archive.xemacs.org}
 
-Another method is to do @code{M-x package-get-delete-package}.
+@node Q1.4.4, Q1.4.5, Q1.4.3, Introduction
+@unnumberedsubsec Q1.4.4: How can I get two instances of info?
 
-@node Q2.0.3, Q2.0.4, Q2.0.2, Installation
-@unnumberedsubsec Q2.0.3: Compiling XEmacs with Netaudio.
+Before 21.4, you can't.  The @code{info} package does not provide for
+multiple info buffers.  In 21.4, this should be fixed. #### how?
 
-What is the best way to compile XEmacs with the netaudio system, since I
-have got the netaudio system compiled but installed at a weird place, I
-am not root.  Also in the READMEs it does not say anything about
-compiling with the audioserver?
+@node Q1.4.5, Q1.5.1, Q1.4.4, Introduction
+@unnumberedsubsec Q1.4.5: How do I add new Info directories?
 
-You should only need to add some stuff to the configure command line.
-To tell it to compile in netaudio support: @samp{--with-sound=both}, or
-@samp{--with-sound=nas} if you don't want native sound support for some
-reason.) To tell it where to find the netaudio includes and libraries:
+You use something like:
 
-@example
---site-libraries=WHATEVER
---site-includes=WHATEVER
-@end example
+@lisp
+(setq Info-directory-list (cons
+                           (expand-file-name "~/info")
+                           Info-default-directory-list))
+@end lisp
 
-Then (fingers crossed) it should compile and it will use netaudio if you
-have a server running corresponding to the X server. The netaudio server
-has to be there when XEmacs starts. If the netaudio server goes away and
-another is run, XEmacs should cope (fingers crossed, error handling in
-netaudio isn't perfect).
+@email{davidm@@prism.kla.com, David Masterson} writes:
 
-BTW, netaudio has been renamed as it has a name clash with something
-else, so if you see references to NAS or Network Audio System, it's the
-same thing.  It also might be found at
-@uref{ftp://ftp.x.org/contrib/audio/nas/}.
+@quotation
+Emacs Info and XEmacs Info do many things differently.  If you're trying to
+support a number of versions of Emacs, here are some notes to remember:
 
-@node Q2.0.4, Q2.0.5, Q2.0.3, Installation
-@unnumberedsubsec Q2.0.4: Problems with Linux and ncurses.
+@enumerate
+@item
+Emacs Info scans @code{Info-directory-list} from right-to-left while
+XEmacs Info reads it from left-to-right, so append to the @emph{correct}
+end of the list.
 
-On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc
-5.2.18, XEmacs 20.0b20 is unable to open a tty device:
+@item
+Use @code{Info-default-directory-list} to initialize
+@code{Info-directory-list} @emph{if} it is available at startup, but not
+all Emacsen define it.
 
-@example
-src/xemacs -nw -q
-Initialization error:
-@iftex
-@*
-@end iftex
-Terminal type `xterm' undefined (or can't access database?)
-@end example
+@item
+Emacs Info looks for a standard @file{dir} file in each of the
+directories scanned from #1 and magically concatenates them together.
 
-@email{ben@@xemacs.org, Ben Wing} writes:
+@item
+XEmacs Info looks for a @file{localdir} file (which consists of just the
+menu entries from a @file{dir} file) in each of the directories scanned
+from #1 (except the first), does a simple concatenation of them, and
+magically attaches the resulting list to the end of the menu in the
+@file{dir} file in the first directory.
+@end enumerate
 
-@quotation
-Your ncurses configuration is messed up.  Your /usr/lib/terminfo is a
-bad pointer, perhaps to a CD-ROM that is not inserted.
+Another alternative is to convert the documentation to HTML with
+texi2html and read it from a web browser like Lynx or W3.
 @end quotation
 
-@node Q2.0.5, Q2.0.6, Q2.0.4, Installation
-@unnumberedsubsec Q2.0.5: Do I need X11 to run XEmacs?
-
-No.  The name @dfn{XEmacs} is unfortunate in the sense that it is
-@strong{not} an X Window System-only version of Emacs.  XEmacs has
-full color support on a color-capable character terminal.
-
-@node Q2.0.6, Q2.0.7, Q2.0.5, Installation
-@unnumberedsubsec Q2.0.6: I'm having strange crashes.  What do I do?
-
-There have been a variety of reports of crashes due to compilers with
-buggy optimizers.  Please see the @file{PROBLEMS} file that comes with
-XEmacs to read what it says about your platform.
+@unnumberedsec 1.5: Contributing to XEmacs
 
-If you compiled XEmacs using @samp{--use-union-type} (or the option
-@samp{USE_UNION_TYPE} in @file{config.inc} under Windows), try
-recompiling again without it.  The union type has been known to trigger
-compiler errors in a number of cases.
+@node Q1.5.1, Q1.5.2, Q1.4.5, Introduction
+@unnumberedsubsec Q1.5.1: How do I submit changes to the FAQ?
 
-@node Q2.0.7, Q2.0.8, Q2.0.6, Installation
-@unnumberedsubsec Q2.0.7: Libraries in non-standard locations
+The FAQ is actively maintained and modified regularly.  All links should
+be up to date.  Unfortunately, some of the information is out of date --
+a situation which the FAQ maintainer is working on.  All submissions are
+welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ
+maintainers}.
 
-I have x-faces, jpeg, xpm etc. all in different places.  I've tried
-space-separated, comma-separated, several --site-libraries, all to no
-avail.
+Please make sure that @samp{XEmacs FAQ} appears on the Subject: line.
+If you think you have a better way of answering a question, or think a
+question should be included, we'd like to hear about it.  Questions and
+answers included into the FAQ will be edited for spelling and grammar
+and will be attributed.  Answers appearing without attribution are
+either from versions of the FAQ dated before May 1996 or are from
+previous FAQ maintainers.  Answers quoted from Usenet news articles will
+always be attributed, regardless of the author.
 
-@example
---site-libraries='/path/one /path/two /path/etc'
-@end example
+@node Q1.5.2, Q1.5.3, Q1.5.1, Introduction
+@unnumberedsubsec Q1.5.2: How do I become a beta tester?
 
-@node Q2.0.8, Q2.0.9, Q2.0.7, Installation
-@unnumberedsubsec Q2.0.8: can't resolve symbol _h_errno
+Send an email message to @email{xemacs-beta-request@@xemacs.org} with
+the line @samp{subscribe} in the body of the message.
 
-You are using the Linux/ELF distribution of XEmacs 19.14, and your ELF
-libraries are out of date.  You have the following options:
+Be prepared to get your hands dirty, as beta testers are expected to
+identify problems as best they can.
 
-@enumerate
-@item
-Upgrade your libc to at least 5.2.16 (better is 5.2.18, 5.3.12, or
-5.4.10).
+@node Q1.5.3, Q1.5.4, Q1.5.2, Introduction
+@unnumberedsubsec Q1.5.3: How do I contribute to XEmacs itself?
 
-@item
-Patch the XEmacs binary by replacing all occurrences of
-@samp{_h_errno^@@} with
-@iftex
-@*
-@end iftex
-@samp{h_errno^@@^@@}.  Any version of Emacs will
-suffice.  If you don't understand how to do this, don't do it.
+It depends on the knowledge and time you possess.  If you are able, by
+all means become a beta tester (@pxref{Q1.5.2}).  If you are a
+programmer, try to build XEmacs and see if you can improve it.
 
-@item
-Rebuild XEmacs yourself---any working ELF version of libc should be
-O.K.
-@end enumerate
+Otherwise, you can still help by using XEmacs as your everyday editor
+(for pre-built binary versions, @pxref{Q1.1.2}) and reporting bugs you
+find to the mailing list.
 
-@email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
+Another area where we need help is the documentation: We need good
+documentation for building XEmacs and for using it.  This FAQ is a
+small step in that direction.
 
-@quotation
-Why not use a Perl one-liner for No. 2?
+Ben Wing @email{ben@@xemacs.org} writes:
 
-@example
-perl -pi -e 's/_h_errno\0/h_errno\0\0/g' \
-/usr/local/bin/xemacs-19.14
-@end example
+@quotation
+BTW if you have a wish list of things that you want added, you have to
+speak up about it!  More specifically, you can do the following if you
+want a feature added (in increasing order of usefulness):
 
-NB: You @emph{must} patch @file{/usr/local/bin/xemacs-19.14}, and not
-@file{xemacs} because @file{xemacs} is a link to @file{xemacs-19.14};
-the Perl @samp{-i} option will cause unwanted side-effects if applied to
-a symbolic link.
-@end quotation
+@itemize @bullet
+@item
+Make a posting about a feature you want added.
 
-@email{steve@@xemacs.org, SL Baur} writes:
+@item
+Become a beta tester and make more postings about those same features.
 
-@quotation
-If you build against a recent libc-5.4 (late enough to have caused
-problems earlier in the beta cycle) and then run with an earlier version
-of libc, you get a
+@item
+Convince us that you're going to use the features in some cool and
+useful way.
 
-@example
-$ xemacs
-xemacs: can't resolve symbol '__malloc_hook'
-zsh: 7942 segmentation fault (core dumped)  xemacs
-@end example
+@item
+Come up with a clear and well-thought-out API concerning the features.
 
-(Example binary compiled against libc-5.4.23 and run with libc-5.4.16).
+@item
+Write the code to implement a feature and send us a patch.
+@end itemize
 
-The solution is to upgrade to at least libc-5.4.23.  Sigh.  Drat.
+(not that we're necessarily requiring you to write the code, but we can
+always hope :)
 @end quotation
 
-@node Q2.0.9, Q2.0.10, Q2.0.8, Installation
-@unnumberedsubsec Q2.0.9: Where do I find external libraries?
+@node Q1.5.4, Q1.5.5, Q1.5.3, Introduction
+@unnumberedsubsec Q1.5.4: How do I get started developing XEmacs?
 
-All external libraries used by XEmacs can be found at the XEmacs FTP
-site
-@iftex
-@*
-@end iftex
-@uref{ftp://ftp.xemacs.org/pub/xemacs/aux/}.
-[These tarballs and this FAQ are wa-a-ay out of date.  Sorry, I'm not
-currently network-capable, and I will probably forgot to update this
-before submitting the patch. -- Ed.]
+First, get yourself set up under CVS so that you can access the CVS
+repositories containing the XEmacs sources and the XEmacs packages.
 
-@c Changed June Link above, <URL:ftp://ftp.xemacs.org/pub/aux/> was dead.
-@c This list is a pain in the you-know-what to keep in synch with the
-@c world.
-The canonical locations (at the time of this writing) are as follows:
+Next, set up your layout.  This is important, as a good layout will
+facilitate getting things done efficiently, while a bad layout will could
+lead to disaster, as you can't figure out which code is the most recent,
+which can be thrown away, etc.  We suggest the following layout: (feel free
+to make changes)
 
-@table @asis
-@item JPEG
-@uref{ftp://ftp.uu.net/graphics/jpeg/}.  Version 6a is current.
-@c Check from host with legal IP address
-@item XPM
-@uref{ftp://ftp.x.org/contrib/libraries/}.  Version 3.4j is current.
-Older versions of this package are known to cause XEmacs crashes.
-
-@item TIFF
-@uref{ftp://ftp.sgi.com/graphics/tiff/}.  v3.4 is current.  The latest
-beta is v3.4b035.  There is a HOWTO here.
-
-@item PNG
-@uref{ftp://ftp.uu.net/graphics/png/}.  0.89c is current.  XEmacs
-requires a fairly recent version to avoid using temporary files.
-@c Check from host with legal IP address
-
-@uref{ftp://swrinde.nde.swri.edu/pub/png/src/}
-
-@item Compface
-@uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/}.  This library has
-been frozen for about 6 years, and is distributed without version
-numbers.  @emph{It should be compiled with the same options that X11 was
-compiled with on your system}.  The version of this library at
-XEmacs.org includes the @file{xbm2xface.pl} script, written by
-@email{stig@@hackvan.com}, which may be useful when generating your own xface.
-
-@item NAS
-@uref{ftp://ftp.x.org/contrib/audio/nas/}.
-Version 1.2p5 is current.  There is a FAQ here.
-@end table
+@itemize @bullet
+@item
+Everything goes under @file{/src/xemacs} (use a different directory if
+you want).  From now, instead of saying @file{/src/xemacs}, we use
+@file{<xsrc-top>}, to make it easier in case someone picked a
+different directory.
+
+@item
+Package source is in @file{<xsrc-top>/package-src}.
 
-@node Q2.0.10, Q2.0.11, Q2.0.9, Installation
-@unnumberedsubsec Q2.0.10: After I run configure I find a core dump, is something wrong?
+@item
+Installed packages go under @file{<xsrc-top>/xemacs-packages}, and
+@file{<xsrc-top>/mule-packages}.
 
-Not necessarily.  If you have GNU sed 3.0 you should downgrade it to
-2.05.  From the @file{README} at prep.ai.mit.edu:
+@item
+A "workspace" is a complete copy of the sources, in which you do work of
+a particular kind.  Workspaces can be differentiated by which branch of
+the source tree they extend off of -- usually either the stable or
+experimental, unless other branches have been created (for example, Ben
+created a branch for his Mule work because (1) the project was long-term
+and involved an enormous number of changes, (2) people wanted to be able
+to look at what his work in progress, and (3) he wanted to be able to
+check things in and in general use source-code control, since it was a
+long-term project).  Workspaces are also differentiated in what their
+purpose is -- general working workspace, workspace for particular
+projects, workspace keeping the latest copy of the code in one of the
+branches without mods, etc.
 
-@quotation
-sed 3.0 has been withdrawn from distribution.  It has major revisions,
-which mostly seem to be improvements; but it turns out to have bugs too
-which cause trouble in some common cases.
+@item
+Various workspaces are subdirectories under @file{<xsrc-top>}, e.g.:
 
-Tom Lord won't be able to work fixing the bugs until May.  So in the
-mean time, we've decided to withdraw sed 3.0 from distribution and make
-version 2.05 once again the recommended version.
-@end quotation
+@itemize @bullet
+@item
+@file{<xsrc-top>/working} (the workspace you're actively working on,
+periodically synched up with the latest trunk)
 
-It has also been observed that the vfork test on Solaris will leave a
-core dump.
+@item
+@file{<xsrc-top>/stable} (for making changes to the stable version of
+XEmacs, which sits on a branch)
 
-@node Q2.0.11, Q2.0.12, Q2.0.10, Installation
-@unnumberedsubsec Q2.0.11: XEmacs doesn't resolve hostnames.
+@item
+@file{<xsrc-top>/unsigned-removal} (a workspace for a specific, difficult
+task that's going to affect lots of source and take a long time, and
+so best done in its own workspace without the interference of other
+work you're doing.  Also, you can commit just this one large change,
+separate from all the other changes).
 
-This is the result of a long-standing problem with SunOS and the fact
-that stock SunOS systems do not ship with DNS resolver code in libc.
+@item
+@file{<xsrc-top>/latest} (a copy of the latest sources on the trunk,
+i.e. the experimental version of XEmacs, with no patches in it;
+either update it periodically, by hand, or set up a cron job to do it
+automatically).  Set it up so it can be built, and build it so you
+have a working XEmacs. (Building it might also go into the cron job.)
 
-@email{ckd@@loiosh.kei.com, Christopher Davis} writes:
+This workspace serves a number of purposes:
+@enumerate
+@item
+You always have a recent version of XEmacs you can compare
+against when something you're working on breaks.  It's true
+that you can do this with cvs diff, but when you need to do
+some serious investigation, this method just fails.
+@item
+You (almost) always have a working, up-to-date executable that
+can be used when your executable is crashing and you need to
+keep developing it, or when you need an `xemacs' to build
+packages, etc.
+@item
+When creating new workspaces, you can just copy the `latest'
+workspace using GNU @code{cp -a}.  You have all the .elc's built,
+everything else probably configured, any spare files in place
+(e.g. some annoying xpm.dll under Windows, etc.).
+@end enumerate
 
-@quotation
-That's correct [The SunOS 4.1.3 precompiled binaries don't do name
-lookup].  Since Sun figured that everyone used NIS to do name lookups
-(that DNS thing was apparently only a passing fad, right?), the stock
-SunOS 4.x systems don't have DNS-based name lookups in libc.
+@item
+@file{<xsrc-top>/latest-stable/} (equivalent to @file{<xsrc-top>/latest/}, but
+for the Stable branch of XEmacs, rather than the Experimental branch
+of XEmacs).  This may or may not be necessary depending on how much
+development you do of the stable branch.
+@end itemize
 
-This is also why Netscape ships two binaries for SunOS 4.1.x.
+@item
+@file{<xsrc-top>/xemacsweb} is a workspace for working on the XEmacs
+web site.
 
-The best solution is to compile it yourself; the configure script will
-check to see if you've put DNS in the shared libc and will then proceed
-to link against the DNS resolver library code.
-@end quotation
+@item
+@file{<xsrc-top>/in-patches} for patches received from email and saved
+to files.
 
-@node Q2.0.12, Q2.0.13, Q2.0.11, Installation
-@unnumberedsubsec Q2.0.12: Why can't I strip XEmacs?
+@item
+@file{<xsrc-top>/out-patches} for locally-generated patches to be sent
+to @email{xemacs-patches@@xemacs.org}.  Less useful now that the
+patcher util has been developed.
 
-@email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes:
+@item
+@file{<xsrc-top>/build}, for build trees when compiling and testing XEmacs with
+various configuration options turned off and on.  The scripts in
+xemacs-builds/ben (see below) can be used to automate building XEmacs
+workspaces with many different configuration options and automatically
+filtering out the normal output so that you see only the abnormal
+output.
 
-@quotation
-Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The
-link gives you a bare-boned emacs (called temacs). temacs is then run,
-preloading some of the lisp files. The result is then dumped into a new
-executable, named xemacs, which will contain all of the preloaded lisp
-functions and data.
+@item
+@file{<xsrc-top>/xemacs-builds}, for the xemacs-builds module, which you need
+to check out separately in CVS.  This contains scripts used for building
+XEmacs, automating and simplifying using CVS, etc.  Under various
+people's directories are their own build and other scripts.  The
+currently most-maintained scripts are under ben/, where there are easily
+configurable scripts that can be used to easily build any workspace
+(esp. if you've more or less followed the layout presented above)
+unattended, with one or more configuration states (there's a
+pre-determined list of the most useful, but it's easy to change).  The
+output is filtered and split up in various ways so that you can identify
+which output came from where, and you can see the output either full or
+with all "normal" output except occasional status messages filtered so
+that you only see the abnormal ones.
+@end itemize
 
-Now, during the dump itself, the executable (code+data+symbols) is
-written on disk using a special unexec() function. This function is
-obviously heavily system dependent. And on some systems, it leads to an
-executable which, although valid, cannot be stripped without damage. If
-memory serves, this is especially the case for AIX binaries. On other
-architectures it might work OK.
+@node Q1.5.5, Q1.6.1, Q1.5.4, Introduction
+@unnumberedsubsec Q1.5.5: What's the basic layout of the code?
 
-The Right Way to strip the emacs binary is to strip temacs prior to
-dumping xemacs. This will always work, although you can do that only if
-you install from sources (as temacs is @file{not} part of the binary
-kits).
-@end quotation
+The file @file{configure} is a shell script to acclimate XEmacs to the
+oddities of your processor and operating system.  It will create a
+file named @file{Makefile} (a script for the @file{make} program), which helps
+automate the process of building and installing emacs.  See INSTALL
+for more detailed information.
 
-@email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes:
+The file @file{configure.in} is the input used by the autoconf program to
+construct the @file{configure} script.  Since XEmacs has configuration
+requirements that autoconf can't meet, @file{configure.in} uses an unholy
+marriage of custom-baked configuration code and autoconf macros; it
+may be wise to avoid rebuilding @file{configure} from @file{configure.in} when
+possible.
 
-@quotation
-Here is the trick:
+The file @file{Makefile.in} is a template used by @file{configure} to create
+@file{Makefile}.
+
+There are several subdirectories:
 
 @enumerate
 @item
-[ ./configure; make ]
-
+@file{src} holds the C code for XEmacs (the XEmacs Lisp interpreter and its
+primitives, the redisplay code, and some basic editing functions).
 @item
-rm src/xemacs
-
+@file{lisp} holds the XEmacs Lisp code for XEmacs (most everything else).
 @item
-strip src/temacs
-
+@file{lib-src} holds the source code for some utility programs for use by
+or with XEmacs, like movemail and etags.
 @item
-make
-
+@file{etc} holds miscellaneous architecture-independent data files
+XEmacs uses, like the tutorial text.  The contents of the @file{lisp},
+@file{info} and @file{man} subdirectories are architecture-independent too.
 @item
-cp src/xemacs /usr/local/bin/xemacs
-
+@file{lwlib} holds the C code for the X toolkit objects used by XEmacs.
 @item
-cp lib-src/DOC-19.16-XEmacs
-@iftex
-\ @*
-@end iftex
-/usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
+@file{info} holds the Info documentation tree for XEmacs.
+@item
+@file{man} holds the source code for the XEmacs online documentation.
+@item
+@file{nt} holds files used compiling XEmacs under Microsoft Windows.
 @end enumerate
-@end quotation
 
-@node Q2.0.13, Q2.0.14, Q2.0.12, Installation
-@unnumberedsubsec Q2.0.13: I don't need no steenkin' packages.  Do I?
+@unnumberedsec 1.6: Politics (XEmacs vs. GNU Emacs)
 
-Strictly speaking, no.  XEmacs will build and install just fine without
-any packages installed.  However, only the most basic editing functions
-will be available with no packages installed, so installing packages is
-an essential part of making your installed XEmacs _useful_.
+@node Q1.6.1, Q1.6.2, Q1.5.5, Introduction
+@unnumberedsubsec Q1.6.1: What is GNU Emacs?
 
-@node Q2.0.14, Q2.0.15, Q2.0.13, Installation
-@unnumberedsubsec Q2.0.14: How do I figure out which packages to install?
+GNU Emacs and XEmacs are related open-source text editors.  Both
+derive from GNU Emacs version 18; the split between the two happened
+in 1991 (for comparison, the oldest versions of GNU Emacs date from
+1984).  For information on GNU Emacs, see
+@uref{http://www.gnu.org/software/emacs/emacs.html}.
 
-Many people really liked the old way that packages were bundled and do
-not want to mess with packages at all.  You can grab all the packages at
-once like you used to with old XEmacs versions.  Download the file
+@node Q1.6.2, Q1.6.3, Q1.6.1, Introduction
+@unnumberedsubsec Q1.6.2: How does XEmacs differ from GNU Emacs?
 
-@file{xemacs-sumo.tar.gz}
+For a detailed description of the differences between GNU Emacs and
+XEmacs and a detailed history of XEmacs, check out the
+@example
+@uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file}
+@end example
 
-For an XEmacs compiled with Mule you also need
+@table @strong
+@item User-Visible Editing Features
+XEmacs in general tries hard to conform to exist user-interface
+standards, and to work "out-of-the-box" without the need for obscure
+customization changes.  GNU Emacs, particularly version 21, has gotten
+better about this (in many cases by copying the XEmacs behavior!), but
+still has some weirdnesses.  For example, the standard method of
+selecting text using the Shift key works out-of-the-box in XEmacs.
+
+XEmacs has a built-in toolbar. Four toolbars can actually be configured
+simultaneously: top, bottom, left, and right toolbars.
+
+XEmacs has vertical and horizontal scrollbars. Unlike in GNU Emacs 19
+(which provides a primitive form of vertical scrollbar), these are true
+toolkit scrollbars. A look-alike Motif scrollbar is provided for those
+who don't have Motif. (Even for those who do, the look-alike may be
+preferable as it is faster.)
+
+XEmacs has buffer tabs along the top of the frame (although the
+position can be changed) that make it very easy to switch buffers.
+
+The menubar under XEmacs is better-designed, with more thought put into
+it.
+
+XEmacs can ask questions using popup dialog boxes. Any command executed
+from a menu will ask yes/no questions with dialog boxes, while commands
+executed via the keyboard will use the minibuffer.
+
+XEmacs under MS Windows provides uses the standard file-dialog box for
+opening and saving files.  Standard menu-accelerator behavior can easily
+be enabled using the Options menu, and integrates well into the existing
+keymap.
+
+XEmacs has (still experimental) support for widgets of various sorts --
+buttons, text boxes, sliders, progress bars, etc.  A progress bar is
+used in font lock to show the progress.
+
+Experimental support for drag-and-drop protocols is provided from
+XEmacs 21.
+
+@item General Platform Support
+If you're running on a machine with audio hardware, you can specify
+sound files for XEmacs to play instead of the default X beep. See the
+documentation of the function load-sound-file and the variable
+sound-alist. XEmacs also supports the network sound protocols NAS and
+EsounD.
+
+XEmacs 21 supports database protocols with LISP bindings, currently
+including Berkeley DB, LDAP, and PostgreSQL (21.2 only).
+
+XEmacs 20 and 21 support the Canna, Wnn, and SJ3 Japanese input method
+servers directly, as well as through the X Input Method (XIM)
+protocol. GNU Emacs 20 supports only the XIM protocol. Both Emacsen
+support the Quail family of input methods (implemented in LISP) for many
+languages.
+
+XEmacs provides support for ToolTalk on systems that have
+it.
+
+@item Packaged LISP Libraries
+Many more packages are provided standard with XEmacs than with GNU Emacs
+19 or 20.
+
+XEmacs 21 supports an integrated package management system which uses
+EFS to download, then automatically install prebuilt LISP
+libraries. This allows XEmacs users much more straightforward access to
+the "latest and greatest" version of any given library.
+
+We are working on a standard method for enabling, disabling and
+otherwise controlling packages, which should make them very easy to use.
+
+@item LISP Programming
+From XEmacs 20 on, characters are a separate type. Characters can be
+converted to integers (and many integers can be converted to
+characters), but characters are not integers. GNU Emacs 19, XEmacs 19,
+Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and GNU Emacs
+20 (incorporating Mule 3 and later Mule 4) represent them as integers.
+
+From XEmacs 20 on, the buffer is treated as an array of characters, and
+the representation of buffer text is not exposed to LISP. The GNU Emacs
+20 functions like buffer-as-multibyte are not supported.
+
+In XEmacs, events are first-class objects. GNU Emacs 19 represents them
+as integers, which obscures the differences between a key gesture and
+the ancient ASCII code used to represent a particular overlapping subset
+of them.
+
+In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19
+represents them as complicated combinations of association lists and
+vectors. If you use the advertised functional interface to manipulation
+of keymaps, the same code will work in XEmacs, GNU Emacs 18, and GNU
+Emacs 19; if your code depends on the underlying implementation of
+keymaps, it will not.
+
+XEmacs uses "extents" to represent all non-textual aspects of buffers;
+GNU Emacs 19 uses two distinct objects, "text properties" and
+"overlays", which divide up the functionality between them. Extents are
+a superset of the union of the functionality of the two GNU Emacs data
+types. The full GNU Emacs 19 interface to text properties and overlays
+is supported in XEmacs (with extents being the underlying
+representation).
+
+Extents can be made to be copied into strings, and then restored, by
+kill and yank. Thus, one can specify this behavior on either "extents"
+or "text properties", whereas in GNU Emacs 19 text properties always
+have this behavior and overlays never do.
+
+@item Window System Programming Interface
+XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which makes
+it be a more well-behaved X citizen (and also improves portability). A
+result of this is that it is possible to include other Xt "Widgets" in
+the XEmacs window. Also, XEmacs understands the standard Xt command-line
+arguments.
+
+XEmacs supports Motif applications, generic Xt (e.g. Athena)
+applications, and raw Xlib applications. An XEmacs variant which
+supports GTK+ is available (integration as an option in the XEmacs
+mainline is planned for XEmacs 22), although code to take advantage of
+the support is as yet scarce.
+
+An XEmacs frame can be placed within an "external client widget" managed
+by another application. This allows an application to use an XEmacs
+frame as its text pane rather than the standard Text widget that is
+provided with Motif or Athena.
+
+@item Community Participation
+Joining the XEmacs development team is simple. Mail to
+@email{xemacs-beta@@xemacs.org, XEmacs Developers}, and you're in! (If
+you want to be, of course. You're also welcome to just post
+development-related questions and bug reports.) The GNU Emacs
+development team and internal mailing lists are still by invitation
+only.
+
+The "bleeding edge" of mainline XEmacs development is available by
+anonymous CVS as are some subsidiary branches (check out the xemacs-gtk
+module for the latest in GUI features!)
+
+Development and maintenance of Lisp libraries is separated from the core
+editor development at a fairly low level. This provides better
+modularization and a better division of responsibility between external
+library maintainers and the XEmacs core development team. Even for
+packages the size of Gnus, XEmacs users normally have access to a
+pre-built version within a few weeks of a major release, and minor
+updates often within days.
+
+CVS commit authority is broadly dispersed. Recognized maintainers of
+LISP libraries who are willing to maintain XEmacs packaged versions
+automatically qualify for CVS accounts for their packages.
+@end table
 
-@file{xemacs-mule-sumo.tar.gz}
+@node Q1.6.3, Q1.6.4, Q1.6.2, Introduction
+@unnumberedsubsec Q1.6.3: How much does XEmacs differ?
 
-from the @file{packages} directory on your XEmacs mirror archive.
-N.B. They are called 'Sumo Tarballs' for good reason. They are
-currently about 15MB and 2.3MB (gzipped) respectively.
+RMS has asserted at times that XEmacs is merely a "patch" on top of
+GNU Emacs (@pxref{Q1.6.4}).  In fact, probably not more than 5% of the
+code, if that, remains unchanged, and nearly 14 years of work has gone
+into XEmacs at this point. (GNU Emacs itself is only than 20 years
+old, and thus XEmacs has existed as a separate product for over 2/3 of
+the lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has
+perhaps 65,000 more lines of C code than GNU Emacs 21.2.
 
-Install them by
+However, the XEmacs developers strive to keep their code compatible with
+GNU Emacs, especially on the Lisp level.  Much effort goes into
+"synching" the XEmacs Elisp code with recent GNU Emacs releases so as to
+benefit from GNU Emacs development work. (In contrast, almost no code
+from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs
+developers are instructed by RMS not to even look at XEmacs source code!
+This stems from self-imposed licensing restrictions on the part of GNU
+Emacs -- and almost certainly out of hostility, as well.)
 
-@code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -}
+@node Q1.6.4, Q1.6.5, Q1.6.3, Introduction
+@unnumberedsubsec Q1.6.4: Is XEmacs "GNU"?
 
-See README.packages for more detailed installation instructions.
+RMS insists on the term "GNU XEmacs" and maintains that
 
-As the Sumo tarballs are not regenerated as often as the individual
-packages, it is recommended that you use the automatic package tools
-afterwards to pick up any recent updates.
+@quotation
+XEmacs is GNU software because it's a modified version of a
+GNU program. And it is GNU software because the FSF is the copyright
+holder for most of it, and therefore the legal responsibility for
+protecting its free status falls on us whether we want it or not. This
+is why the term "GNU XEmacs" is legitimate.
+@end quotation
 
-@node Q2.0.15, Q2.0.16, Q2.0.14, Installation
-@unnumberedsubsec Q2.0.15: EFS fails with "500 AUTH not understood" (NEW)
+In fact, FSF is @emph{not} the copyright holder for most of the code,
+as very little unmodified FSF code remains (@pxref{Q1.6.3}).
+
+Furthermore, RMS's assertion that XEmacs is "GNU" seems rather bizarre
+to the XEmacs developers given RMS's hostility and general lack of
+interest in cooperation.  "GNU" software in general is part of the GNU
+Project, is distributed by it on their FTP site, and receives support
+(or at least cooperation), as well as implicit endorsement, from it.
+The GNU Project, however, has never supported XEmacs and never
+distributed XEmacs, and RMS's hostility is the farthest thing possible
+from an endorsement.  In fact, the GNU Project distributes a number of
+non-GNU software projects on the FSF web site, but again XEmacs is not
+one of them.
+
+@node Q1.6.5, Q1.6.6, Q1.6.4, Introduction
+@unnumberedsubsec Q1.6.5: What is the correct way to refer to XEmacs and GNU Emacs?
+
+Unfortunately even the naming of these two applications has become
+politicized.  Much of this stems from RMS, who has a history of
+politicizing similar issues. (Compare the controversy over "Lignux"
+and "GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU
+Emacs" be used, which are neutral and acceptable to most people.  RMS,
+however, is not willing to accept these terms.  He insists that, if
+his product is called "GNU Emacs", then ours must be called "GNU
+XEmacs". (For our opinion of this term, @xref{Q1.6.4}.) On the other
+hand, if our product is to be called "XEmacs", as we prefer, then his
+product must simply be called "Emacs".  The intent of this seems
+clear: RMS wants to make sure the names reflect his view that his
+version is the "real" Emacs and ours is merely a derivative,
+second-class product (@pxref{Q1.6.3}).
+
+The XEmacs developers hope that you will use the neutral terms
+"XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on
+the other hand, is a generic term for a class of programmable text
+editors with a similar look-and-feel, and usually a Lisp-based
+extension language.  These trace themselves back to early editors such
+as EINE, ZWEI, ZMACS and Multics Emacs. @xref{A History of Emacs,,,
+internals, XEmacs Internals Manual}.
+
+We also call upon RMS, in the spirit of furthering cooperation, to
+stop politicizing this issue and use the neutral terms "XEmacs" and
+"GNU Emacs".  We have already acceded to RMS' wishes in this respect,
+and we expect him to do the same. (In the past, the XEmacs developers
+often used the terms "FSF Emacs" or "FSFmacs" or "RMSmacs" in
+reference to GNU Emacs; these terms were apparently modeled after RMS'
+own usage of "Gosmacs" and "Gosling Emacs" in reference to Unipress
+Emacs, produced by James Gosling.  RMS, however, considers such terms
+to be insulting, so we refrain from using them as much as possible in
+preference to GNU Emacs.)
+
+@node Q1.6.6, Q1.7.1, Q1.6.5, Introduction
+@unnumberedsubsec Q1.6.6: Why haven't XEmacs and GNU Emacs merged?
 
-A typical error: FTP Error: USER request failed; 500 AUTH not understood.
+There are currently irreconcilable differences in the views about
+technical, programming, design, organizational and legal matters
+between Richard Stallman (RMS), the author and leader of the GNU Emacs
+project, and the XEmacs development team which provide little hope for
+a merge to take place in the short-term future.  There have been
+repeated attempts at merging by all of the major XEmacs developers,
+starting from the early days of Lucid Emacs (in 1991), but they have
+all failed.  RMS has very strong views about how GNU Emacs should be
+structured and how his project should be run, and during the repeated
+merge efforts has never demonstrated any realistic interest in
+sufficiently compromising or ceding control to allow a middle ground
+to be found.  The basic problem seems to be the very different goals
+of RMS and the XEmacs project.  The primary goals of the XEmacs
+project are technical and organizational -- we want to create the best
+editor possible, and to make it as easy as possible for people around
+the world to contribute.  The primary goals of RMS, on the other hand,
+are political, and GNU Emacs, and any potential merge efforts with
+XEmacs, are strictly subservient to these goals.  In fact, in many
+ways RMS sees GNU Emacs as the "poster child" of his aims, the one
+program in the GNU project that above all others must set an example
+to the world. (This has to do with the fact that GNU Emacs was the
+first program in the GNU project, and the only one that he is still
+personally involved with on a day-to-day basis.)  Given his goals, his
+position is completely reasonable -- but unfortunately, makes any
+merge impossible.
+
+From the XEmacs perspective, the most intractable issues appear to be
+legal and organizational, specifically:
 
-Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends
-on comp.emacs.xemacs:
+@itemize @bullet
+@item
+RMS requires "legal papers" to be signed for all contributions of code
+to GNU Emacs over 10 lines or so, transferring the copyright and all
+legal rights to the code to the Free Software Foundation.  XEmacs does
+not and has never required this, since it has the practical effect of
+discouraging individual and in particular corporate contributions --
+corporations will almost never sign away their legal rights to code
+since it makes it impossible to reuse the code in any product that
+whose license is not compatible with the GNU General Public License.
+Since RMS has shown no inclination to compromise on this issue, a
+merge would require that most of the existing XEmacs code would need
+to be thrown away and rewritten -- something the XEmacs developers are
+understandably reluctant to do.
+
+@item 
+A repeated stumbling block in the merge talks has been the issue of
+organizational control over the resulting product.  RMS has made it
+clear that he intends to have final say over design issues in a merged
+Emacs.  Unfortunately, RMS and the XEmacs developers have repeatedly
+clashed over design decisions, and RMS' insistence on getting his way
+in such disagreements was the very reason for the split in the first
+place.  This same issue has come up again and again in merge talks and
+we have never been able to come to a satisfactory resolution.  To the
+extent that RMS is willing to compromise at all, it appears to be of a
+purely political rather than technical nature -- "If we support this
+feature of yours, we also get to support this other feature of mine."
+The XEmacs developers cannot see how such a process would lead to
+anything but a mess of incompatible things hodgepodged together.
+
+@item
+Because of the years of separate development, distinct and
+incompatible interfaces have developed and merging would be extremely
+difficult even with the above non-technical issues resolved.  The
+problem has been exacerbated by the issue of legal papers -- because
+XEmacs code is not "kosher" from RMS' perspective, he discourages
+developers from even looking at it out of legal concerns.  Although it
+is still possible to read the XEmacs documentation and run the
+program, the practical effect of this prohibition has been to strongly
+discourage code-sharing and cooperative development -- although a
+great deal of GNU Emacs code has been incorporated into XEmacs,
+practically none has gone the other direction.
+@end itemize
 
-   tell your ftp client to not attempt AUTH authentication (or do not
-   use FTP servers that don't understand AUTH)
+If you have a comment to add regarding the merge, it is a good idea to
+avoid posting to the newsgroups, because of the very heated flamewars
+that often result.  Mail your questions to
+@email{xemacs-beta@@xemacs.org} and @email{emacs-devel@@gnu.org}.
 
-and notes that you need to add an element (often "-u") to
-`efs-ftp-program-args'.  Use M-x customize-variable, and verify the
-needed flag with `man ftp' or other local documentation.
+@unnumberedsec 1.7: External Packages
 
-@node Q2.0.16, Q2.1.1, Q2.0.15, Installation
-@unnumberedsubsec Q2.0.16: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW)
+@node Q1.7.1, Q1.7.2, Q1.6.6, Introduction
+@unnumberedsubsec Q1.7.1: What is the package system?
 
-The Cygwin binary distributed with the netinstaller uses an external DLL
-to handle XPM images (such as toolbar buttons).  You may get an error like
+In order to reduce the size and increase the maintainability of
+XEmacs, the majority of the Elisp packages that came with previous
+releases have been unbundled.  They have been replaced by the package
+system.  Each elisp add-on (or groups of them when they are small) now
+comes in its own tarball that contains a small search hierarchy.
 
-    This application has failed to start because cygXpm-noX4.dll was not found.
-    Re-installing the application may fix this problem.
+You select just the ones you need.  Install them by untarring them into
+the right place.  On startup XEmacs will find them, set up the load
+path correctly, install autoloads, etc, etc.
 
-Andy Piper <andy@@xemacs.org> sez:
+@xref{Q2.1.1}, for more info on how to download and install the packages.
 
-    cygXpm-noX4 is part of the cygwin distribution under libraries or
-    graphics, but is not installed by default. You need to run the
-    cygwin setup again and select this package.
+@node Q1.7.2, Q1.7.3, Q1.7.1, Introduction
+@unnumberedsubsec Q1.7.2: Which external packages are there?
 
-Ie, reinstalling XEmacs won't help because it is not part of the XEmacs
-distribution.
+@subheading Normal Packages
 
-@node Q2.1.1, Q2.1.2, Q2.0.16, Installation
-@unnumberedsec 2.1: Trouble Shooting
-@unnumberedsubsec Q2.1.1: Help!  XEmacs just crashed on me!
+A very broad collection of elisp packages.
 
-First of all, don't panic.  Whenever XEmacs crashes, it tries extremely
-hard to auto-save all of your files before dying.  (The main time that
-this will not happen is if the machine physically lost power or if you
-killed the XEmacs process using @code{kill -9}).  The next time you try
-to edit those files, you will be informed that a more recent auto-save
-file exists.  You can use @kbd{M-x recover-file} to retrieve the
-auto-saved version of the file.
+@table @asis
+@item Sun
+Support for Sparcworks.
 
-You can use the command @kbd{M-x recover-session} after a crash to pick
-up where you left off.
+@item ada
+Ada language support.
 
-Now, XEmacs is not perfect, and there may occasionally be times, or
-particular sequences of actions, that cause it to crash.  If you can
-come up with a reproducible way of doing this (or even if you have a
-pretty good memory of exactly what you were doing at the time), the
-maintainers would be very interested in knowing about it.  The best way
-to report a bug is using @kbd{M-x report-emacs-bug} (or by selecting
-@samp{Send Bug Report...} from the Help menu).  If that won't work
-(e.g. you can't get XEmacs working at all), send ordinary mail to
-@email{crashes@@xemacs.org}. @emph{MAKE SURE} to include the output from
-the crash, especially including the Lisp backtrace, as well as the
-XEmacs configuration from @kbd{M-x describe-installation} (or
-equivalently, the file @file{Installation} in the top of the build
-tree).  Please note that the @samp{crashes} address is exclusively for
-crash reports.  The best way to report bugs in general is through the
-@kbd{M-x report-emacs-bug} interface just mentioned, or if necessary by
-emailing @email{xemacs-beta@@xemacs.org}.  Note that the developers do
-@emph{not} usually follow @samp{comp.emacs.xemacs} on a regular basis;
-thus, this is better for general questions about XEmacs than bug
-reports.
+@item apel
+A Portable Emacs Library.  Used by XEmacs MIME support.
 
-If at all possible, include a C stack backtrace of the core dump that
-was produced.  This shows where exactly things went wrong, and makes it
-much easier to diagnose problems.  To do this under Unix, you need to
-locate the core file (it's called @file{core}, and is usually sitting in
-the directory that you started XEmacs from, or your home directory if
-that other directory was not writable).  Then, go to that directory and
-execute a command like:
+@item auctex
+Basic TeX/LaTeX support.
 
-@example
-gdb `which xemacs` core
-@end example
+@item bbdb
+The Big Brother Data Base: a rolodex-like database program.
 
-and then issue the command @samp{where} to get the stack backtrace.  You
-might have to use @code{dbx} or some similar debugger in place of
-@code{gdb}.  If you don't have any such debugger available, complain to
-your system administrator.
+@item build
+Build XEmacs from within (UNIX, Windows).
 
-It's possible that a core file didn't get produced, in which case you're
-out of luck.  Go complain to your system administrator and tell him not
-to disable core files by default.  Also see @ref{Q2.1.15}, for tips and
-techniques for dealing with a debugger.
+@item c-support
+Basic single-file add-ons for editing C code.
 
-If you're under Microsoft Windows, you're out of luck unless you happen
-to have a debugging aid installed on your system, for example Visual
-C++.  In this case, the crash will result in a message giving you the
-option to enter a debugger (for example, by pressing @samp{Cancel}).  Do
-this and locate the stack-trace window. (If your XEmacs was built
-without debugging information, the stack trace may not be very useful.)
+@item calc
+Emacs calculator.
 
-When making a problem report make sure that:
+@item calendar
+Calendar and diary support.
 
-@enumerate
-@item
-Report @strong{all} of the information output by XEmacs during the
-crash.
+@item cc-mode
+C, C++, Objective-C, Java, CORBA IDL, Pike and AWK language support.
 
-@item
-You mention what O/S & Hardware you are running XEmacs on.
+@item clearcase
+New Clearcase Version Control for XEmacs (UNIX, Windows).
 
-@item
-What version of XEmacs you are running.
+@item clearcase
+Support for the Clearcase version control system.
 
-@item
-What build options you are using.
+@item cookie
+"Fortune cookie"-style messages. Includes Spook (suspicious phrases) 
+and Yow (Zippy quotes).
 
-@item
-If the problem is related to graphics and you are running Unix, we will
-also need to know what version of the X Window System you are running,
-and what window manager you are using.
+@item crisp
+Crisp/Brief emulation.
 
-@item
-If the problem happened on a TTY, please include the terminal type.
-@end enumerate
+@item debug
+GUD, gdb, dbx debugging support.
 
-Much of the information above is automatically generated by @kbd{M-x
-report-emacs-bug}.  Even more, and often useful, information can be
-generated by redirecting the output of @code{make} and @code{make check}
-to a file (@file{beta.err} is the default used by @code{build-report}),
-and executing @kbd{M-x build-report}.
+@item dictionary
+Interface to RFC2229 dictionary servers.
 
-@node Q2.1.2, Q2.1.3, Q2.1.1, Installation
-@unnumberedsubsec Q2.1.2: Cryptic Minibuffer messages.
+@item dired
+The DIRectory EDitor is for manipulating, and running commands on
+files in a directory.
 
-When I try to use some particular option of some particular package, I
-get a cryptic error in the minibuffer.
-
-If you can't figure out what's going on, select Options/General
-Options/Debug on Error from the Menubar and then try and make the error
-happen again.  This will give you a backtrace that may be enlightening.
-If not, try reading through this FAQ; if that fails, you could try
-posting to comp.emacs.xemacs (making sure to include the backtrace) and
-someone may be able to help.  If you can identify which Emacs lisp
-source file the error is coming from you can get a more detailed stack
-backtrace by doing the following:
+@item docbookide
+DocBook editing support.
 
-@enumerate
-@item
-Visit the .el file in an XEmacs buffer.
+@item ecb
+Emacs source code browser.
 
-@item
-Issue the command @kbd{M-x eval-current-buffer}.
+@item ecrypto
+Crypto functionality in Emacs Lisp.
 
-@item
-Reproduce the error.
-@end enumerate
+@item edebug
+An Emacs Lisp debugger.
 
-Depending on the version of XEmacs, you may either select View->Show
-Message Log (recent versions), Edit->Show Messages (some earlier
-versions) or Help->Recent Keystrokes/Messages (other earlier versions)
-from the menubar to see the most recent messages.  This command is bound
-to @kbd{C-h l} by default.
+@item ediff
+Interface over GNU patch.
 
-@node Q2.1.3, Q2.1.4, Q2.1.2, Installation
-@unnumberedsubsec Q2.1.3: Translation Table Syntax messages at Startup
+@item edit-utils
+Miscellaneous editor extensions, you probably need this.
 
-I get tons of translation table syntax error messages during startup.
-How do I get rid of them?
+@item edt
+DEC EDIT/EDT emulation.
 
-There are two causes of this problem.  The first usually only strikes
-people using the prebuilt binaries.  The culprit in both cases is the
-file @file{XKeysymDB}.
+@item efs
+Treat files on remote systems the same as local files.
 
-@itemize @bullet
-@item
-The binary cannot find the @file{XKeysymDB} file.  The location is
-hardcoded at compile time so if the system the binary was built on puts
-it a different place than your system does, you have problems.  To fix,
-set the environment variable @code{XKEYSYMDB} to the location of the
-@file{XKeysymDB} file on your system or to the location of the one
-included with XEmacs which should be at
-@iftex
-@*
-@end iftex
-@file{<xemacs_root_directory>/lib/xemacs-19.16/etc/XKeysymDB}.
+@item eieio
+Enhanced Implementation of Emacs Interpreted Objects.
 
-@item
-The binary is finding the XKeysymDB but it is out-of-date on your system
-and does not contain the necessary lines.  Either ask your system
-administrator to replace it with the one which comes with XEmacs (which
-is the stock R6 version and is backwards compatible) or set your
-@code{XKEYSYMDB} variable to the location of XEmacs's described above.
-@end itemize
+@item elib
+Portable Emacs Lisp utilities library.
 
-@node Q2.1.4, Q2.1.5, Q2.1.3, Installation
-@unnumberedsubsec Q2.1.4: Startup warnings about deducing proper fonts?
+@item emerge
+Another interface over GNU patch.
 
-How can I avoid the startup warnings about deducing proper fonts?
+@item erc
+ERC is an Emacs InternetRelayChat client.
 
-This is highly dependent on your installation, but try with the
-following font as your base font for XEmacs and see what it does:
+@item escreen
+Multiple editing sessions withing a single frame (like screen).
 
-@format
--adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
-@end format
+@item eshell
+Command shell implemented entirely in Emacs Lisp.
 
-More precisely, do the following in your resource file:
+@item ess
+ESS: Emacs Speaks Statistics.
 
-@format
-Emacs.default.attributeFont: \
--adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
-@end format
+@item eterm
+Terminal emulation.
 
-If you just don't want to see the @samp{*Warnings*} buffer at startup
-time, you can set this:
+@item eudc
+Emacs Unified Directory Client (LDAP, PH).
 
-@lisp
-(setq display-warning-minimum-level 'error)
-@end lisp
+@item footnote
+Footnoting in mail message editing modes.
 
-The buffer still exists; it just isn't in your face.
+@item forms
+Forms editing support (obsolete, use Widget instead).
 
-@node Q2.1.5, Q2.1.6, Q2.1.4, Installation
-@unnumberedsubsec Q2.1.5: XEmacs cannot connect to my X Terminal!
+@item fortran-modes
+Fortran support.
 
-Help!  I can not get XEmacs to display on my Envizex X-terminal!
+@item fortran-modes
+Fortran language support.
 
-Try setting the @code{DISPLAY} variable using the numeric IP address of
-the host you are running XEmacs from.
-
-@node Q2.1.6, Q2.1.7, Q2.1.5, Installation
-@unnumberedsubsec Q2.1.6: XEmacs just locked up my Linux X server!
-
-There have been several reports of the X server locking up under Linux.
-In all reported cases removing speedo and scaled fonts from the font
-path corrected the problem.  This can be done with the command
-@code{xset}.
+@item frame-icon
+Set up mode-specific icons for each frame under XEmacs.
 
-It is possible that using a font server may also solve the problem.
+@item fsf-compat
+GNU Emacs compatibility files.
 
-@node Q2.1.7, Q2.1.8, Q2.1.6, Installation
-@unnumberedsubsec Q2.1.7: HP Alt key as Meta.
+@item games
+Tetris, Sokoban, and Snake.
 
-How can I make XEmacs recognize the Alt key of my HP workstation as a
-Meta key?
-
-Put the following line into a file and load it with xmodmap(1) before
-starting XEmacs:
+@item general-docs
+General documentation.  Presently, empty.
 
-@example
-remove Mod1 = Mode_switch
-@end example
+@item gnats
+XEmacs bug reports.
 
-@node Q2.1.8, Q2.1.9, Q2.1.7, Installation
-@unnumberedsubsec Q2.1.8: got (wrong-type-argument color-instance-p nil)
+@item gnus
+The Gnus Newsreader and Mailreader.
 
-@email{nataliek@@rd.scitec.com.au, Natalie Kershaw} writes:
+@item haskell-mode
+Haskell editing support.
 
-@quotation
-I am trying to run xemacs 19.13 under X11R4. Whenever I move the mouse I
-get the following error. Has anyone seen anything like this? This
-doesn't occur on X11R5.
+@item hm--html-menus
+HTML editing.
 
-@lisp
-Signalling:
-(error "got (wrong-type-argument color-instance-p nil)
-and I don't know why!")
-@end lisp
-@end quotation
+@item hyperbole
+Hyperbole: The Everyday Info Manager.
 
-@email{map01kd@@gold.ac.uk, dinos} writes:
+@item ibuffer
+Advanced replacement for buffer-menu.
 
-@quotation
-I think this is due to undefined resources; You need to define color
-backgrounds and foregrounds into your @file{.../app-defaults/Emacs}
-like:
+@item idlwave
+Editing and Shell mode for the Interactive Data Language.
 
-@example
-*Foreground:    Black   ;everything will be of black on grey95,
-*Background:    Grey95  ;unless otherwise specified.
-*cursorColor:   Red3    ;red3 cursor with grey95 border.
-*pointerColor:  Red3    ;red3 pointer with grey95 border.
-@end example
-@end quotation
+@item igrep
+Enhanced front-end for Grep.
 
-Natalie Kershaw adds:
+@item ilisp
+Front-end for interacting with Inferior Lisp (external lisps).
 
-@quotation
-What fixed the problem was adding some more colors to the X color
-database (copying the X11R5 colors over), and also defining the
-following resources:
+@item ispell
+Spell-checking with GNU ispell.
 
-@example
-xemacs*cursorColor:    black
-xemacs*pointerColor:   black
-@end example
+@item jde
+Integrated Development Environment for Java.
 
-With the new colors installed the problem still occurs if the above
-resources are not defined.
+@item liece
+IRC (Internet Relay Chat) client for Emacs.  Note, this package is
+deprecated and will be removed, use riece instead.
 
-If the new colors are not present then an additional error occurs on
-XEmacs startup, which says @samp{Color Red3} not defined.
-@end quotation
+@item mail-lib
+Fundamental lisp files for providing email support.
 
-@node Q2.1.9, Q2.1.10, Q2.1.8, Installation
-@unnumberedsubsec Q2.1.9: XEmacs causes my OpenWindows 3.0 server to crash.
+@item mailcrypt
+Support for messaging encryption with PGP.
 
-The OpenWindows 3.0 server is incredibly buggy.  Your best bet is to
-replace it with one from the generic MIT X11 release.  You might also
-try disabling parts of your @file{init.el}/@file{.emacs}, like those
-that enable background pixmaps.
+@item mew
+Messaging in an Emacs World; a MIME-based email program.
 
-@node Q2.1.10, Q2.1.11, Q2.1.9, Installation
-@unnumberedsubsec Q2.1.10: Warnings from incorrect key modifiers.
+@item mh-e
+The XEmacs Interface to the MH Mail System.
 
-The following information comes from the @file{PROBLEMS} file that comes
-with XEmacs.
+@item mine
+Elisp implementation of the game 'Minehunt'.
 
-If you're having troubles with HP/UX it is because HP/UX defines the
-modifiers wrong in X.  Here is a shell script to fix the problem; be
-sure that it is run after VUE configures the X server.
+@item misc-games
+Other amusements and diversions.
 
-@example
-#! /bin/sh
-xmodmap 2> /dev/null - << EOF
-keysym Alt_L = Meta_L
-keysym Alt_R = Meta_R
-EOF
+@item mmm-mode
+Support for Multiple Major Modes within a single buffer.
 
-xmodmap - << EOF
-clear mod1
-keysym Mode_switch = NoSymbol
-add mod1 = Meta_L
-keysym Meta_R = Mode_switch
-add mod2 = Mode_switch
-EOF
-@end example
+@item net-utils
+Miscellaneous Networking Utilities.
 
-@node Q2.1.11, Q2.1.12, Q2.1.10, Installation
-@unnumberedsubsec Q2.1.11: @samp{Can't instantiate image error...} in toolbar
-@c New
+@item ocaml
+Objective Caml editing support.
 
-@email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes:
+@item oo-browser
+OO-Browser: The Multi-Language Object-Oriented Code Browser.
 
-I just installed the XEmacs (20.4-2) RPMS that I downloaded from
-@uref{http://www.xemacs.org/}.  Everything works fine, except that when
-I place my mouse over the toolbar, it beeps and gives me this message:
+@item ocaml
+Objective Caml editing support.
 
-@example
- Can't instantiate image (probably cached):
- [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
- (16 16 <strange control characters> ...
-@end example
+@item os-utils
+Miscellaneous single-file O/S utilities, for printing, archiving,
+compression, remote shells, etc.
 
-@email{kyle_jones@@wonderworks.com, Kyle Jones} writes:
-@quotation
-This is problem specific to some Chips and Technologies video
-chips, when running XFree86.  Putting
+@item pc
+PC style interface emulation.
 
-@code{Option "sw_cursor"}
+@item pcl-cvs
+CVS frontend.
 
-in @file{XF86Config} gets rid of the problem.
-@end quotation
+@item pcomplete
+Provides programmatic completion.
 
-@node Q2.1.12, Q2.1.13, Q2.1.11, Installation
-@unnumberedsubsec Q2.1.12: Problems with Regular Expressions on DEC OSF1.
+@item perl-modes
+Perl support.
 
-I have xemacs 19.13 running on an alpha running OSF1 V3.2 148 and ispell
-would not run because it claimed the version number was incorrect
-although it was indeed OK. I traced the problem to the regular
-expression handler.
+@item pgg
+Emacs interface to various PGP implementations.
 
-@email{douglask@@dstc.edu.au, Douglas Kosovic} writes:
+@item prog-modes
+Support for various programming languages.
 
-@quotation
-Actually it's a DEC cc optimization bug that screws up the regexp
-handling in XEmacs.
+@item ps-print
+Printing functions and utilities.
 
-Rebuilding using the @samp{-migrate} switch for DEC cc (which uses a
-different sort of optimization) works fine.
-@end quotation
+@item psgml
+Validated HTML/SGML editing.
 
-See @file{xemacs-19_13-dunix-3_2c.patch} at the following URL on how to
-build with the @samp{-migrate} flag:
+@item psgml-dtds
+A collection of DTDs for psgml.  Note that this package is deprecated
+and will be removed in the future, most likely Q2/2003.  Instead of using
+this, you should install needed DTDs yourself.
 
-@example
-@uref{http://www-digital.cern.ch/carney/emacs/emacs.html}
-@c Link above, <URL:http://www-digital.cern.ch/carney/emacs/emacs.html> is
-@c dead. And the directory `carney' is empty.
+@item python-modes
+Python language support.
 
+@item reftex
+Emacs support for LaTeX cross-references, citations.
 
+@item riece
+IRC (Internet Relay Chat) client for Emacs.
 
-@end example
+@item rmail
+An obsolete Emacs mailer.  If you do not already use it don't start.
 
-NOTE: There have been a variety of other problems reported that are
-fixed in this fashion.
+@item ruby-modes
+Ruby support.
 
-@node Q2.1.13, Q2.1.14, Q2.1.12, Installation
-@unnumberedsubsec Q2.1.13: HP/UX 10.10 and @code{create_process} failure.
+@item sasl
+Simple Authentication and Security Layer (SASL) library.
 
-@email{Dave.Carrigan@@ipl.ca, Dave Carrigan} writes:
+@item scheme
+Front-end support for Inferior Scheme.
 
-@quotation
-With XEmacs 19.13 and HP/UX 10.10, anything that relies on the
-@code{create_process} function fails. This breaks a lot of things
-(shell-mode, compile, ange-ftp, to name a few).
-@end quotation
+@item semantic
+Semantic bovinator (Yacc/Lex for XEmacs). Includes Senator.
 
-@email{johnson@@dtc.hp.com, Phil Johnson} writes:
+@item sgml
+SGML/Linuxdoc-SGML editing.
 
-@quotation
-This is a problem specific to HP-UX 10.10.  It only occurs when XEmacs
-is compiled for shared libraries (the default), so you can work around
-it by compiling a statically-linked binary (run configure with
-@samp{--dynamic=no}).
+@item sh-script
+Support for editing shell scripts.
 
-I'm not sure whether the problem is with a particular shared library or
-if it's a kernel problem which crept into 10.10.
-@end quotation
+@item sieve
+Manage Sieve email filtering scripts.
 
-@email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes:
+@item slider
+User interface tool.
 
-@quotation
-I had a few problems with 10.10. Apparently, some of them were solved by
-forcing a static link of libc (manually).
-@end quotation
+@item sml-mode
+SML editing support.
 
-@node Q2.1.14, Q2.1.15, Q2.1.13, Installation
-@unnumberedsubsec Q2.1.14: @kbd{C-g} doesn't work for me.  Is it broken?
+@item sounds-au
+XEmacs Sun sound files.
 
-@email{ben@@xemacs.org, Ben Wing} writes:
+@item sounds-wav
+XEmacs Microsoft sound files.
 
-@quotation
-@kbd{C-g} does work for most people in most circumstances.  If it
-doesn't, there are only two explanations:
+@item speedbar
+Provides a separate frame with convenient references.
 
-@enumerate
-@item
-The code is wrapped with a binding of @code{inhibit-quit} to
-@code{t}.  @kbd{Ctrl-Shift-G} should still work, I think.
+@item strokes
+Mouse enhancement utility.
 
-@item
-SIGIO is broken on your system, but BROKEN_SIGIO isn't defined.
-@end enumerate
+@item supercite
+An Emacs citation tool for News & Mail messages.
 
-To test #2, try executing @code{(while t)} from the @samp{*scratch*}
-buffer.  If @kbd{C-g} doesn't interrupt, then you're seeing #2.
-@end quotation
+@item texinfo
+XEmacs TeXinfo support.
 
-@email{terra@@diku.dk, Morten Welinder} writes:
+@item text-modes
+Miscellaneous support for editing text files.
 
-@quotation
-On some (but @emph{not} all) machines a hung XEmacs can be revived by
-@code{kill -FPE <pid>}.  This is a hack, of course, not a solution.
-This technique works on a Sun4 running 4.1.3_U1.  To see if it works for
-you, start another XEmacs and test with that first.  If you get a core
-dump the method doesn't work and if you get @samp{Arithmetic error} then
-it does.
-@end quotation
+@item textools
+Miscellaneous TeX support.
 
-@node Q2.1.15, Q2.1.16, Q2.1.14, Installation
-@unnumberedsubsec Q2.1.15: How to debug an XEmacs problem with a debugger
+@item time
+Display time & date on the modeline.
 
-If XEmacs does crash on you, one of the most productive things you can
-do to help get the bug fixed is to poke around a bit with the debugger.
-Here are some hints:
+@item tm
+Emacs MIME support. Not needed for gnus >= 5.8.0.
 
-@itemize @bullet
-@item
-First of all, if the crash is at all reproducible, consider very
-strongly recompiling your XEmacs with debugging symbols and with no
-optimization (e.g. with GCC use the compiler flags @samp{-g -O0} --
-that's an "oh" followed by a zero), and with the configure options
-@samp{--debug=yes} and @samp{--error-checking=all}.  This will make your
-XEmacs run somewhat slower, but you are a lot more likely to catch the
-problem earlier (closer to its source).  It makes it a lot easier to
-determine what's going on with a debugger.
+@item tooltalk
+Support for building with Tooltalk.
 
-@item
-If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie
-process), or it's inconvenient to run XEmacs again because XEmacs is
-already running or is running in batch mode as part of a bunch of
-scripts, you may be able to attach to the existing process with your
-debugger.  Most debuggers let you do this by substituting the process ID
-for the core file when you invoke the debugger from the command line, or
-by using the @code{attach} command or something similar.
+@item tpu
+DEC EDIT/TPU support.
 
-@item
-If you're able to run XEmacs under a debugger and reproduce the crash,
-here are some things you can do:
+@item tramp
+Remote shell-based file editing.  This is similar to EFS or Ange-FTP,
+but works with rsh/ssh and rcp/scp.
 
-@item
-If XEmacs is hitting an assertion failure, put a breakpoint on
-@code{assert_failed()}.
+@item vc
+Version Control for Free systems.
 
-@item
-If XEmacs is hitting some weird Lisp error that's causing it to crash
-(e.g. during startup), put a breakpoint on @code{signal_1()}---this is
-declared static in eval.c.
+@item vc-cc
+Version Control for ClearCase (UnFree) systems.
 
-@item
-If XEmacs is outputting lots of X errors, put a breakpoint on
-@code{x_error_handler()}; that will tell you which call is causing them.
+@item vhdl
+Support for VHDL.
 
-@item
-Internally, you will probably see lots of variables that hold objects of
-type @code{Lisp_Object}.  These are references to Lisp objects.
-Printing them out with the debugger probably won't be too
-useful---you'll likely just see a number.  To decode them, do this:
+@item view-process
+A Unix process browsing tool.
 
-@example
-call dp (OBJECT)
-@end example
+@item viper
+VI emulation support.
 
-where @var{OBJECT} is whatever you want to decode (it can be a variable,
-a function call, etc.).  This uses the Lisp printing routines to out a
-readable representation on the TTY from which the xemacs process was
-invoked.
+@item vm
+An Emacs mailer.
 
-@item
-If you want to get a Lisp backtrace showing the Lisp call
-stack, do this:
+@item w3
+A Web browser.
 
-@example
-call db ()
-@end example
+@item x-symbol
+Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts.
 
-@item
-Using @code{dp} and @code{db} has two disadvantages - they can only be
-used with a running (including hung or zombie) xemacs process, and they
-do not display the internal C structure of a Lisp Object.  Even if all
-you've got is a core dump, all is not lost.
+@item xemacs-base
+Fundamental XEmacs support, you almost certainly need this.
 
-If you're using GDB, there are some macros in the file
-@file{src/.gdbinit} in the XEmacs source distribution that should make
-it easier for you to decode Lisp objects.  This file is automatically
-read by gdb if gdb is run in the directory where xemacs was built, and
-contains these useful macros to inspect the state of xemacs:
+@item xemacs-devel
+XEmacs Lisp developer support.  This package contains utilities for
+supporting Lisp development.  It is a single-file package so it may be 
+tailored.
 
-@table @code
-@item pobj
-Usage: pobj lisp_object @*
-Print the internal C representation of a lisp object.
+@item xlib
+Emacs interface to X server.
 
-@item xtype
-Usage: xtype lisp_object @*
-Print the Lisp type of a lisp object.
+@item xslide
+XSL editing support.
 
-@item lbt
-Usage: lbt @*
-Print the current Lisp stack trace.
-Requires a running xemacs process.  (It works by calling the db
-routine described above.)
+@item xslt-process
+A minor mode for (X)Emacs which allows running an XSLT processor on a
+buffer.
 
-@item ldp
-Usage: ldp lisp_object @*
-Print a Lisp Object value using the Lisp printer.
-Requires a running xemacs process.  (It works by calling the dp
-routine described above.)
+@item xwem
+X Emacs Window Manager.
 
-@item run-temacs
-Usage: run-temacs @*
-Run temacs interactively, like xemacs.
-Use this with debugging tools (like purify) that cannot deal with dumping,
-or when temacs builds successfully, but xemacs does not.
+@item zenirc
+ZENIRC IRC Client.
+@end table
 
-@item dump-temacs
-Usage: dump-temacs @*
-Run the dumping part of the build procedure.
-Use when debugging temacs, not xemacs!
-Use this when temacs builds successfully, but xemacs does not.
+@subheading Mule Support (mule)
 
-@item check-xemacs
-Usage: check-xemacs @*
-Run the test suite.  Equivalent to 'make check'.
+MULti-lingual Enhancement.  Support for world scripts such as
+Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
+To use these packages your XEmacs must be compiled with Mule
+support.
 
-@item check-temacs
-Usage: check-temacs @*
-Run the test suite on temacs.  Equivalent to 'make check-temacs'.
-Use this with debugging tools (like purify) that cannot deal with dumping,
-or when temacs builds successfully, but xemacs does not.
-@end table
+@table @asis
+@item edict
+MULE: Lisp Interface to EDICT, Kanji Dictionary.
 
-If you are using Sun's @file{dbx} debugger, there is an equivalent file
-@file{src/.dbxrc}, which defines the same commands for dbx.
+@item egg-its
+MULE: Wnn (4.2 and 6) support.  SJ3 support.
 
-@item
-If you're using a debugger to get a C stack backtrace and you're seeing
-stack traces with some of the innermost frames mangled, it may be due to
-dynamic linking. (This happens especially under Linux.) Consider
-reconfiguring with @samp{--dynamic=no}.  Also, sometimes (again under
-Linux), stack backtraces of core dumps will have the frame where the
-fatal signal occurred mangled; if you can obtain a stack trace while
-running the XEmacs process under a debugger, the stack trace should be
-clean.
+@item latin-unity
+MULE: find single ISO 8859 character set to encode a buffer.
 
-@email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so
-version 1.8 if dynamic linking and debugging is a problem on Linux.
+@item latin-unity
+Unify character sets in a buffer. When characters belong to disjoint
+character sets, this attempts to translate the characters so
+that they belong to one character set. If the buffer coding system is
+not sufficient, this suggests different coding systems.
 
-@item
-If you're using a debugger to get a C stack backtrace and you're
-getting a completely mangled and bogus stack trace, it's probably due to
-one of the following:
+@item leim
+MULE: Quail.  All non-English and non-Japanese language support.
 
-@enumerate a
-@item
-Your executable has been stripped.  Bad news.  Tell your sysadmin not to
-do this---it doesn't accomplish anything except to save a bit of disk
-space, and makes debugging much much harder.
+@item locale
+MULE: Localized menubars and localized splash screens.
 
-@item
-Your stack is getting trashed.  Debugging this is hard; you have to do a
-binary-search type of narrowing down where the crash occurs, until you
-figure out exactly which line is causing the problem.  Of course, this
-only works if the bug is highly reproducible.  Also, in many cases if
-you run XEmacs from the debugger, the debugger can protect the stack
-somewhat.  However, if the stack is being smashed, it is typically the
-case that there is a wild pointer somewhere in the program, often quite
-far from where the crash occurs.
+@item lookup
+Dictionary support. (This isn't an English dictionary program)
 
-@item
-If your stack trace has exactly one frame in it, with address 0x0, this
-could simply mean that XEmacs attempted to execute code at that address,
-e.g. through jumping to a null function pointer.  Unfortunately, under
-those circumstances, GDB under Linux doesn't know how to get a stack
-trace. (Yes, this is the fourth Linux-related problem I've mentioned.  I
-have no idea why GDB under Linux is so bogus.  Complain to the GDB
-authors, or to comp.os.linux.development.system.) Again, you'll have to
-use the narrowing-down process described above.
+@item mule-base
+MULE: Basic Mule support, required for building with Mule.
 
-@item
-You will get a Lisp backtrace output when XEmacs crashes, so you'll have
-something useful.
+@item mule-ucs
+MULE: Extended coding systems (including Unicode) for XEmacs.
 
-@end enumerate
+@item mule-ucs
+Extended coding systems (including Unicode) for XEmacs.
 
-@item
-If you compile with the newer gcc variants gcc-2.8 or egcs, you will
-also need gdb 4.17 or above.  Earlier releases of gdb can't handle the
-debug information generated by the newer compilers.
+@item skk
+Another Japanese Language Input Method.  Can be used without a
+separate process running as a dictionary server.
+@end table
 
-@item
-In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named
-@file{src/gdbinit}.  This had the disadvantage of not being sourced
-automatically by gdb, so you had to set that up yourself.
+@node Q1.7.3, Q1.7.4, Q1.7.2, Introduction
+@unnumberedsubsec Q1.7.3: Do I need to have the packages to run XEmacs?
 
-@item
-If you are running Microsoft Windows, the the file @file{nt/README} for
-further information about debugging XEmacs.
+Strictly speaking, no.  XEmacs will build and install just fine without
+any packages installed.  However, only the most basic editing functions
+will be available with no packages installed, so installing packages is
+an essential part of making your installed XEmacs _useful_.
 
-@end itemize
+@node Q1.7.4, Q1.8.1, Q1.7.3, Introduction
+@unnumberedsubsec Q1.7.4: Is there a way to find which package has particular functionality?
 
-@node Q2.1.16, Q2.1.17, Q2.1.15, Installation
-@unnumberedsubsec Q2.1.16: XEmacs crashes in @code{strcat} on HP/UX 10
+If you want to find out which package contains the functionality you
+are looking for, use @kbd{M-x package-get-package-provider}, and give it a
+symbol that is likely to be in that package.  
 
-From the problems database (through
-the former address http://support.mayfield.hp.com/):
+For example, if some code you want to use has a @code{(require 'thingatpt)}
+in it:
 
 @example
-Problem Report: 5003302299
-Status:         Open
+       M-x package-get-package-provider RET thingatpt RET
+@end example
 
-System/Model:   9000/700
-Product Name:   HPUX S800 10.0X
-Product Vers:   9245XB.10.00
+which will return something like: @samp{(fsf-compat "1.08").}
 
-Description: strcat(3C) may read beyond
-end of source string, can cause SIGSEGV
+@unnumberedsec 1.8: Internationalization
 
+@node Q1.8.1, Q1.8.2, Q1.7.4, Introduction
+@unnumberedsubsec Q1.8.1: What is the status of internationalization support aka MULE (including Asian language support)?
 
-*** PROBLEM TEXT ***
-strcat(3C) may read beyond the source string onto an unmapped page,
-causing a segmentation violation.
-@end example
+Both the stable and development versions of XEmacs include
+internationalization support (aka MULE).  MULE currently (21.4) works on
+UNIX and Linux systems.  It is possible to build with MULE on Windows
+systems, but if you really need MULE on Windows, it is recommended that
+you build and use the development (21.5) version, and deal with the
+instability of the development tree.  Binaries compiled without MULE
+support run faster than MULE capable XEmacsen.
 
-@node Q2.1.17, Q2.1.18, Q2.1.16, Installation
-@unnumberedsubsec Q2.1.17: @samp{Marker does not point anywhere}
+@node Q1.8.2, Q1.8.3, Q1.8.1, Introduction
+@unnumberedsubsec Q1.8.2: How can I help with internationalization?
 
-As with other errors, set @code{debug-on-error} to @code{t} to get the
-backtrace when the error occurs.  Specifically, two problems have been
-reported (and fixed).
+If you would like to help, you may want to join the
+@email{xemacs-mule@@xemacs.org} mailing list.  Especially needed are
+people who speak/write languages other than English, who are willing to
+use XEmacs/MULE regularly, and have some experience with Elisp.
 
-@enumerate
-@item
-A problem with line-number-mode in XEmacs 19.14 affected a large number
-of other packages.  If you see this error message, turn off
-line-number-mode.
+Translations of the TUTORIAL and man page are welcome, and XEmacs does
+support multilingual menus, but we have few current translations.
 
-@item
-A problem with some early versions of Gnus 5.4 caused this error.
-Upgrade your Gnus.
-@end enumerate
+@xref{Q1.5.2, How do I become a Beta Tester?}.
 
-@node Q2.1.18, Q2.1.19, Q2.1.17, Installation
-@unnumberedsubsec Q2.1.18: XEmacs is outputting lots of X errors.
+@node Q1.8.3, Q1.8.4, Q1.8.2, Introduction
+@unnumberedsubsec Q1.8.3: How do I type non-ASCII characters?
 
-If this is happening, we would very much like to know what's causing
-them.  To find this out, see @ref{Q2.1.15}.  Try to get both a C and Lisp
-backtrace, and send them to @email{xemacs-beta@@xemacs.org}.
+@xref{Q3.0.6, How can you type in special characters in XEmacs?}, in
+part 3 of this FAQ, for some simple methods that also work in non-MULE
+builds of XEmacs (but only for one-octet coded character sets, and
+mostly for ISO 8859/1).  Many of the methods available for Cyrillic
+(@pxref{Q1.8.7, How about Cyrillic modes?}) work without MULE.  MULE
+has more general capabilities.  @xref{Q1.8.5, Please explain the
+various input methods in MULE/XEmacs}.
 
-@node Q2.1.19, Q2.1.20, Q2.1.18, Installation
-@unnumberedsubsec Q2.1.19: XEmacs does not follow the local timezone.
+@xref{Q4.0.8, How do I display non-ASCII characters?}, which covers
+display of non-ASCII characters.
 
-When using one of the prebuilt binaries many users have observed that
-XEmacs uses the timezone under which it was built, but not the timezone
-under which it is running.  The solution is to add:
+@node Q1.8.4, Q1.8.5, Q1.8.3, Introduction
+@unnumberedsubsec Q1.8.4: Can XEmacs messages come out in a different language?
 
-@lisp
-(set-time-zone-rule "MET")
-@end lisp
+The message-catalog support was written but is badly bit-rotted.  XEmacs
+20 and 21 did @emph{not} support it, and early releases of XEmacs 22
+will not either.
 
-to your @file{init.el}/@file{.emacs} or the @file{site-start.el} file if
-you can.  Replace @code{MET} with your local timezone.
+However, menubar localization @emph{does} work.  To enable it, add to
+your @file{Emacs} file entries like this:
 
-@node Q2.1.20, Q2.1.21, Q2.1.19, Installation
-@unnumberedsubsec Q2.1.20: @samp{Symbol's function definition is void: hkey-help-show.}
+@example
+Emacs*XlwMenu.resourceLabels:                   True
+Emacs*XlwMenu.file.labelString:                 Fichier
+Emacs*XlwMenu.openInOtherWindow.labelString:   In anderem Fenster oeffnen
+@end example
 
-This is a problem with a partially loaded hyperbole.  Try adding:
+The name of the resource is derived from the non-localized entry by
+removing punctuation and capitalizing as above.
 
-@lisp
-(require 'hmouse-drv)
-@end lisp
+@node Q1.8.5, Q1.8.6, Q1.8.4, Introduction
+@unnumberedsubsec Q1.8.5: Please explain the various input methods in MULE/XEmacs
 
-where you load hyperbole and the problem should go away.
+Mule supports a wide variety of input methods.  There are three basic
+classes: Lisp implementations, generic platform support, and library
+interfaces.
 
-@node Q2.1.21, Q2.1.22, Q2.1.20, Installation
-@unnumberedsubsec Q2.1.21: [This question intentionally left blank]
+@emph{Lisp implementations} include Quail, which provides table-driven input
+methods for almost all the character sets that Mule supports (including
+all of the ISO 8859 family, the Indic languages, Thai, and so on), and
+SKK, for Japanese.  (SKK also supports an interface to an external
+"dictionary server" process.)  Quail supports both typical "dead-key"
+methods (eg, in the "latin-1-prefix" method, @kbd{" a} produces ä, LATIN
+SMALL LETTER A WITH DIAERESIS), and the complex dictionary-based phonetic
+methods used for Asian ideographic languages like Chinese.
 
-@node Q2.1.22, Q2.1.23, Q2.1.21, Installation
-@unnumberedsubsec Q2.1.22: XEmacs seems to take a really long time to do some things
+Lisp implementations can be less powerful (but they are not perceptibly
+inefficient), and of course are not portable to non-Emacs applications.
+The incompatibility can be very annoying.  On the other hand, they
+require no special platform support or external libraries, so if you can
+display the characters, Mule can input them for you and you can edit,
+anywhere.
 
-@email{dmoore@@ucsd.edu, David Moore} writes:
+@emph{Generic platform support} is currently limited to the X Input
+Method (XIM) framework, although support for MSIME (for MS Windows) is
+planned, and IIIMF (Sun's Internet-Intranet Input Method Framework)
+support is extremely desirable.  XIM is enabled at build time by use of
+the @samp{--with-xim} flag to @code{configure}.  For use of XIM, see
+your platform documentation.  However, normally the input method you use
+is specified via the @samp{LANG} and @samp{XMODIFIERS} environment
+variables.
 
-@quotation
-Two things you can do:
+Of course, input skills are portable across most applications.  However,
+especially in modern GUI systems the habit of using bucky bits has
+fallen into sad disuse, and many XIM systems are poorly configured for
+use with Emacs.  For example, the kinput2 input manager (a separate
+process providing an interface between Japanese dictionary servers such
+as Canna and Wnn, and the application) tends to gobble up keystrokes
+generating Meta characters.  This means that to edit while using an XIM
+input method, you must toggle the input method off every time you want
+to use @kbd{M-f}.  Your mileage may vary.
 
-1) C level:
+@emph{Library interfaces} are most common for Japanese, although Wnn
+supports Chinese (traditional and simplified) and Korean.  There are
+Chinese and Korean input servers available, but we do not know of any
+patches for XEmacs to use them directly.  You can use them via
+IM-enabled terminals, by manipulating the terminal coding systems.  We
+describe only the Japanese-oriented systems here.  The advantage of
+these systems is that they are very powerful, and on platforms where
+they are available there is typically a wide range of applications that
+support them.  Thus your input skills are portable across applications.
 
-When you see it going mad like this, you might want to use gdb from an
-'xterm' to attach to the running process and get a stack trace.  To do
-this just run:
+Mule provides built-in interfaces to the following input methods: Wnn4,
+Wnn6, Canna, and SJ3.  These can be configured at build time.  There are
+patches available (no URL, sorry) to support the SKK server, as well.
+Wnn and SJ3 use the @code{egg} user interface.  The interface for Canna
+is specialized to Canna.
 
-@example
-gdb /path/to/xemacs/xemacs ####
-@end example
+Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Kyôto
+University. It is a powerful and complex system.  Wnn4 is free and Wnn6
+is not.  Wnn uses grammatical hints and probability of word association,
+so in principle Wnn can be cleverer than other methods.
 
-Where @code{####} is the process id of your xemacs, instead of
-specifying the core.  When gdb attaches, the xemacs will stop [1] and
-you can type `where' in gdb to get a stack trace as usual.  To get
-things moving again, you can just type `quit' in gdb.  It'll tell you
-the program is running and ask if you want to quit anyways.  Say 'y' and
-it'll quit and have your emacs continue from where it was at.
+Canna, made by NEC, supports only Japanese.  It is a simple and powerful
+system. Canna uses only grammar, but its grammar and dictionary are
+quite sophisticated.  So for standard modern Japanese, Canna seems
+cleverer than Wnn4. In addition, the UNIX version of Canna is free (now
+there is a Microsoft Windows version).
 
-2) Lisp level:
+SJ3, by Sony, supports only Japanese.
 
-Turn on debug-on-quit early on.  When you think things are going slow
-hit C-g and it may pop you in the debugger so you can see what routine
-is running.  Press `c' to get going again.
+Egg consists of following parts:
 
-debug-on-quit doesn't work if something's turned on inhibit-quit or in
-some other strange cases.
-@end quotation
+@enumerate
+@item
+Input character Translation System (ITS) layer.
+It translates ASCII inputs to Kana/PinYin/Hangul characters.
 
-@node Q2.1.23, Q2.1.24, Q2.1.22, Installation
-@unnumberedsubsec Q2.1.23:  Movemail on Linux does not work for XEmacs 19.15 and later.
+@item
+Kana/PinYin/Hangul to Kanji transfer layer.
+The interface layer to network Kana-Kanji server (Wnn and Sj3).
+@end enumerate
 
-Movemail used to work fine in 19.14 but has stopped working in 19.15
-and 20.x.  I am using Linux.
+These input methods are modal.  They have a raw (alphabet) mode, a
+phonetic input mode, and Kana-Kanji transfer mode.  However there are
+mode-less input methods for Egg and Canna.  @samp{boiled-egg} is a
+mode-less input method running on Egg.  For Canna, @samp{canna.el} has a
+tiny boiled-egg-like command, @code{(canna-boil)}, and there are some
+boiled-egg-like utilities.
 
-@email{steve@@xemacs.org, SL Baur} writes:
+Much of this information was provided by @email{morioka@@jaist.ac.jp,
+MORIOKA Tomohiko}.
 
-@quotation
-Movemail on Linux used to default to using flock file locking.  With
-19.15 and later versions it now defaults to using @code{.lock} file
-locking.  If this is not appropriate for your system, edit src/s/linux.h
-and uncomment the line that reads:
+@node Q1.8.6, Q1.8.7, Q1.8.5, Introduction
+@unnumberedsubsec Q1.8.6: How do I portably code for MULE/XEmacs?
 
-@example
-#define MAIL_USE_FLOCK
-@end example
-@end quotation
+MULE has evolved rapidly over the last few years, and the original third
+party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite
+different implementations.  The APIs also vary although recent versions
+of XEmacs have tended to converge to the GNU Emacs standard.
 
-@node Q2.1.24, Q2.1.25, Q2.1.23, Installation
-@unnumberedsubsec Q2.1.24:  XEmacs won't start without network.
+MULE implementations are going to continue to evolve.  Both GNU Emacs
+and XEmacs are working hard on Unicode support, which will involve new
+APIs and probably variations on old ones.  For XEmacs 22, the old ISO
+2022-based system for recognizing encodings will be replaced by a much
+more flexible system, which should improve accuracy of automatic coding
+detections, but will also involve new APIs.
 
-If XEmacs starts when you're on the network, but fails when you're not
-on the network, you may be missing a "localhost" entry in your
-@file{/etc/hosts} file.  The file should contain an entry like:
+@email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes:
 
-@example
-127.0.0.1        localhost
-@end example
+@quotation
+The application implementor must write separate code for these mule
+variants.  [Please don't hesitate to report these variants to us; they
+are not, strictly speaking, bugs, but they give third-party developers
+the same kind of creepy-crawly feeling.  We'll do what we can. -- Ed.]
 
-Add that line, and XEmacs will be happy.
+MULE and the next version of Emacs are similar but the symbols are very
+different---requiring separate code as well.
 
-@node Q2.1.25,  , Q2.1.24, Installation
-@unnumberedsubsec Q2.1.25::  After upgrading, XEmacs won't do `foo' any more!
+Namely we must support 3 kinds of mule variants and 4 or 5 or 6 kinds of
+emacs variants... (;_;) I'm shocked, so I wrote a wrapper package called
+@code{emu} to provide a common interface.  [There is an XEmacs package
+of APEL which provides much more comprehensive coverage.  Be careful,
+however; APEL has problems of its own. -- Ed.]
 
-You have been used to doing `foo', but now when you invoke it (or click
-the toolbar button or select the menu item), nothing (or an error)
-happens.  The simplest explanation is that you are missing a package
-that is essential to you.  You can either track it down and install it
-(there is a list of packages and brief descriptions of their contents in
-@file{etc/PACKAGES}), or install the `Sumo Tarball' (@pxref{Q2.0.14}).
+I have the following suggestions about dealing with mule variants:
 
-@c #### should xref to XEmacs manual here
+@itemize @bullet
+@item
+@code{(featurep 'mule)} @code{t} on all mule variants
 
-@node Customization, Subsystems, Installation, Top
-@unnumbered 3 Customization and Options
+@item
+@code{(boundp 'MULE)} is @code{t} on only MULE.  Maybe the next version
+of Emacs will not have this symbol.
 
-This is part 3 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to Customization and screen settings.
+@item
+MULE has a variable @code{mule-version}.  Perhaps the next version of
+Emacs will have this variable as well.
+@end itemize
 
-@menu
-Customization---Emacs Lisp and @file{init.el}/@file{.emacs}:
-* Q3.0.1::      What version of Emacs am I running?
-* Q3.0.2::      How do I evaluate Elisp expressions?
-* Q3.0.3::      @code{(setq tab-width 6)} behaves oddly.
-* Q3.0.4::      How can I add directories to the @code{load-path}?
-* Q3.0.5::      How to check if a lisp function is defined?
-* Q3.0.6::      Can I force the output of @code{(face-list)} to a buffer?
-* Q3.0.7::      Font selections don't get saved after @code{Save Options}.
-* Q3.0.8::      How do I make a single minibuffer frame?
-* Q3.0.9::      What is @code{Customize}?
-
-X Window System & Resources:
-* Q3.1.1::      Where is a list of X resources?
-* Q3.1.2::      How can I detect a color display?
-* Q3.1.3::      [This question intentionally left blank]
-* Q3.1.4::      [This question intentionally left blank]
-* Q3.1.5::      How can I get the icon to just say @samp{XEmacs}?
-* Q3.1.6::      How can I have the window title area display the full path?
-* Q3.1.7::      @samp{xemacs -name junk} doesn't work?
-* Q3.1.8::      @samp{-iconic} doesn't work.
-
-Textual Fonts & Colors:
-* Q3.2.1::      How can I set color options from @file{init.el}/@file{.emacs}?
-* Q3.2.2::      How do I set the text, menu and modeline fonts?
-* Q3.2.3::      How can I set the colors when highlighting a region?
-* Q3.2.4::      How can I limit color map usage?
-* Q3.2.5::      My tty supports color, but XEmacs doesn't use them.
-* Q3.2.6::      Can I have pixmap backgrounds in XEmacs?
-* Q3.2.7::      How do I display non-ASCII characters?
-
-The Modeline:
-* Q3.3.1::      How can I make the modeline go away?
-* Q3.3.2::      How do you have XEmacs display the line number in the modeline?
-* Q3.3.3::      How do I get XEmacs to put the time of day on the modeline?
-* Q3.3.4::      How do I turn off current chapter from AUC TeX modeline?
-* Q3.3.5::      How can one change the modeline color based on the mode used?
-
-3.4 Multiple Device Support:
-* Q3.4.1::      How do I open a frame on another screen of my multi-headed display?
-* Q3.4.2::      Can I really connect to a running XEmacs after calling up over a modem?  How?
-
-3.5 The Keyboard:
-* Q3.5.1::      How can I bind complex functions (or macros) to keys?
-* Q3.5.2::      How can I stop down-arrow from adding empty lines to the bottom of my buffers?
-* Q3.5.3::      How do I bind C-. and C-; to scroll one line up and down?
-* Q3.5.4::      Globally binding @kbd{Delete}?
-* Q3.5.5::      Scrolling one line at a time.
-* Q3.5.6::      How to map @kbd{Help} key alone on Sun type4 keyboard?
-* Q3.5.7::      How can you type in special characters in XEmacs?
-* Q3.5.8::      [This question intentionally left blank]
-* Q3.5.9::      How do I make the Delete key delete forward?
-* Q3.5.10::     Can I turn on @dfn{sticky} modifier keys?
-* Q3.5.11::     How do I map the arrow keys?
-
-The Cursor:
-* Q3.6.1::      Is there a way to make the bar cursor thicker?
-* Q3.6.2::      Is there a way to get back the old block cursor where the cursor covers the character in front of the point?
-* Q3.6.3::      Can I make the cursor blink?
-
-The Mouse and Highlighting:
-* Q3.7.1::      How can I turn off Mouse pasting?
-* Q3.7.2::      How do I set control/meta/etc modifiers on mouse buttons?
-* Q3.7.3::      Clicking the left button does not do anything in buffer list.
-* Q3.7.4::      How can I get a list of buffers when I hit mouse button 3?
-* Q3.7.5::      Why does cut-and-paste not work between XEmacs and a cmdtool?
-* Q3.7.6::      How I can set XEmacs up so that it pastes where the text cursor is?
-* Q3.7.7::      How do I select a rectangular region?
-* Q3.7.8::      Why does @kbd{M-w} take so long?
-
-The Menubar and Toolbar:
-* Q3.8.1::      How do I get rid of the menu (or menubar)?
-* Q3.8.2::      Can I customize the basic menubar?
-* Q3.8.3::      How do I control how many buffers are listed in the menu @code{Buffers} list?
-* Q3.8.4::      Resources like @code{Emacs*menubar*font} are not working?
-* Q3.8.5::      How can I bind a key to a function to toggle the toolbar?
-
-Scrollbars:
-* Q3.9.1::      How can I disable the scrollbar?
-* Q3.9.2::      How can one use resources to change scrollbar colors?
-* Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
-* Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
-
-Text Selections:
-* Q3.10.1::     How can I turn off or change highlighted selections?
-* Q3.10.2::     How do I get that typing on an active region removes it?
-* Q3.10.3::     Can I turn off the highlight during isearch?
-* Q3.10.4::     How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
-* Q3.10.5::     The region disappears when I hit the end of buffer while scrolling.
-* Q3.10.6::     Why is killing so slow?
-@end menu
+Following is a sample to distinguish mule variants:
 
-@node Q3.0.1, Q3.0.2, Customization, Customization
-@unnumberedsec 3.0: Customization -- Emacs Lisp and @file{init.el}/@file{.emacs}
-@unnumberedsubsec Q3.0.1: What version of Emacs am I running?
+@lisp
+(if (featurep 'mule)
+    (cond ((boundp 'MULE)
+           ;; for original Mule
+           )
+          ((string-match "XEmacs" emacs-version)
+           ;; for XEmacs with Mule
+           )
+          (t
+           ;; for next version of Emacs
+           ))
+  ;; for old emacs variants
+  )
+@end lisp
+@end quotation
 
-How can @file{init.el}/@file{.emacs} determine which of the family of
-Emacsen I am using?
+@node Q1.8.7, Q1.8.8, Q1.8.6, Introduction
+@unnumberedsubsec Q1.8.7: How about Cyrillic modes?
 
-To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
-XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
-example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in
-XEmacs versions prior to 21.4).  There are other nifty things in there
-as well!
+@email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes:
 
-For all new code, all you really need to do is:
+@quotation
+There is a cyrillic mode in the file @file{mysetup.zip} in
+@iftex
+@*
+@end iftex
+@uref{ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/}.  This is a
+modification to @email{ava@@math.jhu.ed, Valery Alexeev's} @file{russian.el}
+which can be obtained from
+@end quotation
 
-@lisp
-(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
-@end lisp
+@uref{http://www.math.uga.edu/~valery/russian.el}.
 
-@node Q3.0.2, Q3.0.3, Q3.0.1, Customization
-@unnumberedsubsec Q3.0.2: How can I evaluate Emacs-Lisp expressions?
+@email{d.barsky@@ee.surrey.ac.uk, Dima Barsky} writes:
 
-I know I can evaluate Elisp expressions from @code{*scratch*} buffer
-with @kbd{C-j} after the expression.  How do I do it from another
-buffer?
+@quotation
+There is another cyrillic mode for both GNU Emacs and XEmacs by
+@email{manin@@camelot.mssm.edu, Dmitrii
+(Mitya) Manin} at
+@iftex
 
-Press @kbd{M-:} (the default binding of @code{eval-expression}), and
-enter the expression to the minibuffer.
+@end iftex
+@uref{http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el}.
+@c Link above, <URL:http://camelot.mssm.edu/~manin/cyr.el> was dead.
+@c Changed to russian host instead
+@end quotation
 
-@node Q3.0.3, Q3.0.4, Q3.0.2, Customization
-@unnumberedsubsec Q3.0.3: @code{(setq tab-width 6)} behaves oddly.
+@email{rebecca.ore@@op.net, Rebecca Ore} writes:
 
-If you put @code{(setq tab-width 6)} in your
-@file{init.el}/@file{.emacs} file it does not work!  Is there a reason
-for this?  If you do it at the EVAL prompt it works fine!! How strange.
+@quotation
+The fullest resource I found on Russian language use (in and out of
+XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html}
+@end quotation
 
-Use @code{setq-default} instead, since @code{tab-width} is
-all-buffer-local.
+@node Q1.8.8, Q1.8.9, Q1.8.7, Introduction
+@unnumberedsubsec Q1.8.8: Does XEmacs support Unicode?
 
-@node Q3.0.4, Q3.0.5, Q3.0.3, Customization
-@unnumberedsubsec Q3.0.4: How can I add directories to the @code{load-path}?
+To get Unicode support, you need a Mule-enabled XEmacs.
 
-Here are two ways to do that, one that puts your directories at the
-front of the load-path, the other at the end:
+21.5 has internal support for Unicode and supports it fully, although we
+don't yet use it as the internal encoding.
 
-@lisp
-;;; Add things at the beginning of the load-path, do not add
-;;; duplicate directories:
-(pushnew "bar" load-path :test 'equal)
+21.4 supports Unicode partially -- as an external encoding for files,
+processes, and terminals, but without font support.  @xref{Q1.8.9, How
+does XEmacs display Unicode?}.  To get Unicode support in 21.4,
+install Mule-UCS from packages in the usual way, and put
 
-(pushnew "foo" load-path :test 'equal)
+@example
+(require 'un-define)
+(set-coding-priority-list '(utf-8))
+(set-coding-category-system 'utf-8 'utf-8)
+@end example
 
-;;; Add things at the end, unconditionally
-(setq load-path (nconc load-path '("foo" "bar")))
-@end lisp
+in your init file to enable the UTF-8 coding system.  You may wish to
+view the documentation of @code{set-coding-priority-list} if you find
+that files that are not UTF-8 are being mis-recognized as UTF-8.
 
-@email{keithh@@nortel.ca, keith (k.p.) hanlan} writes:
+Install standard national fonts (not Unicode fonts) for all character
+sets you use.  @xref{Q1.8.9, How does XEmacs display Unicode??}.
 
-@quotation
-To add directories using Unix shell metacharacters use
-@file{expand-file-name} like this:
+Mule-UCS also supports 16-bit forms of Unicode (UTF-16).  It does not
+support 31-bit forms of Unicode (UTF-32 or UCS-4).
 
-@lisp
-(push (expand-file-name "~keithh/.emacsdir") load-path)
-@end lisp
-@end quotation
+@node Q1.8.9,  , Q1.8.8, Introduction
+@unnumberedsubsec Q1.8.9: How does XEmacs display Unicode?
 
-@node Q3.0.5, Q3.0.6, Q3.0.4, Customization
-@unnumberedsubsec Q3.0.5: How to check if a lisp function is defined?
+Mule doesn't have a Unicode charset internally, so there's nothing to
+bind a Unicode registry to.  It would not be straightforward to create,
+either, because Unicode is not ISO 2022-compatible.  You'd have to
+translate it to multiple 96x96 pages.
 
-Use the following elisp:
+This means that Mule-UCS uses ordinary national fonts for display.  This
+is not really a problem, except for those languages that use the Unified
+Han characters.  The problem here is that Mule-UCS maps from Unicode
+code points to national character sets in a deterministic way.  By
+default, this means that Japanese fonts are tried first, then Chinese,
+then Korean.  To change the priority ordering, use the command
+`un-define-change-charset-order'.
 
-@lisp
-(fboundp 'foo)
-@end lisp
+It also means you can't use Unicode fonts directly, at least not without
+extreme hackery.  You can run -nw with (set-terminal-coding-system
+'utf-8) if you really want a Unicode font for some reason.
 
-It's almost always a mistake to test @code{emacs-version} or any similar
-variables.
+Real Unicode support will be introduced in XEmacs 22.0.
 
-Instead, use feature-tests, such as @code{featurep}, @code{boundp},
-@code{fboundp}, or even simple behavioral tests, eg.:
+@node Installation, Editing, Introduction, Top
+@unnumbered 2 Installation and Troubleshooting
 
-@lisp
-(defvar foo-old-losing-code-p
-  (condition-case nil (progn (losing-code t) nil)
-    (wrong-number-of-arguments t)))
-@end lisp
+This is part 2 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to Installation, Maintenance and Troubleshooting.
 
-There is an incredible amount of broken code out there which could work
-much better more often in more places if it did the above instead of
-trying to divine its environment from the value of one variable.
+@menu
+2.0: Installation (General)
+* Q2.0.1::    How do I build and install XEmacs?
+* Q2.0.2::    Where do I find external libraries?
+* Q2.0.3::    How do I specify the paths that XEmacs uses for finding files?
+* Q2.0.4::    Running XEmacs without installing
+* Q2.0.5::    XEmacs is too big
+
+2.1: Package Installation
+* Q2.1.1::    How do I install the packages?
+* Q2.1.2::    Can I install the packages individually?
+* Q2.1.3::    Can I install the packages automatically?
+* Q2.1.4::    Can I upgrade or remove packages?
+* Q2.1.5::    Which packages to install?
+* Q2.1.6::    Can you describe the package location process in more detail?
+* Q2.1.7::    EFS fails with "500 AUTH not understood"
+
+2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
+* Q2.2.1::    Libraries in non-standard locations
+* Q2.2.2::    Why can't I strip XEmacs?
+
+2.3: Windows Installation (Windows, Cygwin, MinGW)
+* Q2.3.1::    What exactly are all the different ways to build XEmacs under Windows?
+* Q2.3.2::    What compiler/libraries do I need to compile XEmacs?
+* Q2.3.3::    How do I compile the native port?
+* Q2.3.4::    What do I need for Cygwin?
+* Q2.3.5::    How do I compile under Cygwin?
+* Q2.3.6::    How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
+* Q2.3.7::    How do I compile with X support?
+* Q2.3.8::    Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
+
+2.4: General Troubleshooting
+* Q2.4.1::    How do I deal with bugs or with problems building, installing, or running?
+* Q2.4.2::    Help!  XEmacs just crashed on me!
+* Q2.4.3::    XEmacs crashes and I compiled it myself.
+* Q2.4.4::    How to debug an XEmacs problem with a debugger
+* Q2.4.5::    I get a cryptic error message when trying to do something.
+* Q2.4.6::    XEmacs hangs when I try to do something.
+* Q2.4.7::    I get an error message when XEmacs is running in batch mode.
+* Q2.4.8::    The keyboard or mouse is not working properly, or I have some other event-related problem.
+* Q2.4.9::    @kbd{C-g} doesn't work for me.  Is it broken?
+* Q2.4.10::   How do I debug process-related problems?
+* Q2.4.11::   XEmacs is outputting lots of X errors.
+* Q2.4.12::   After upgrading, XEmacs won't do `foo' any more!
+
+2.5: Startup-Related Problems
+* Q2.5.1::    XEmacs cannot connect to my X Terminal!
+* Q2.5.2::    Startup problems related to paths or package locations.
+* Q2.5.3::    XEmacs won't start without network.
+* Q2.5.4::    Startup warnings about deducing proper fonts?
+* Q2.5.5::    Warnings from incorrect key modifiers.
+* Q2.5.6::    XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
+@end menu
 
-@node Q3.0.6, Q3.0.7, Q3.0.5, Customization
-@unnumberedsubsec Q3.0.6: Can I force the output of @code{(face-list)} to a buffer?
+@unnumberedsec 2.0: Installation (General)
 
-It would be good having it in a buffer, as the output of
-@code{(face-list)} is too wide to fit to a minibuffer.
-
-Evaluate the expression in the @samp{*scratch*} buffer with point after
-the rightmost paren and typing @kbd{C-j}.
+@node Q2.0.1, Q2.0.2, Installation, Installation
+@unnumberedsubsec Q2.0.1: How do I build and install XEmacs?
 
-If the minibuffer smallness is the only problem you encounter, you can
-simply press @kbd{C-h l} to get the former minibuffer contents in a
-buffer.
+See the file @file{etc/NEWS} for information on new features and other
+user-visible changes since the last version of XEmacs.
 
-@node Q3.0.7, Q3.0.8, Q3.0.6, Customization
-@unnumberedsubsec Q3.0.7: Font selections in don't get saved after @code{Save Options}.
+The file @file{INSTALL} in the top-level directory says how to bring
+up XEmacs on Unix and Cygwin, once you have loaded the entire subtree
+of this directory.
 
-@email{mannj@@ll.mit.edu, John Mann} writes:
+See the file @file{nt/README} for instructions on building XEmacs for
+Microsoft Windows.
 
-@quotation
-You have to go to Options->Frame Appearance and unselect
-@samp{Frame-Local Font Menu}.  If this option is selected, font changes
-are only applied to the @emph{current} frame and do @emph{not} get saved
-when you save options.
-@end quotation
+@xref{Q2.1.1}, for the installation of (essential) add on packages.
 
-Also, set the following in your @file{init.el}/@file{.emacs}:
+@node Q2.0.2, Q2.0.3, Q2.0.1, Installation
+@unnumberedsubsec Q2.0.2: Where do I find external libraries?
 
-@lisp
-(setq options-save-faces t)
-@end lisp
+All external libraries used by XEmacs can be found on the XEmacs web
+site
+@iftex
+@*
+@end iftex
+@uref{http://www.xemacs.org/Download/optLibs.html}.
 
-@node Q3.0.8, Q3.0.9, Q3.0.7, Customization
-@unnumberedsubsec Q3.0.8: How do I get a single minibuffer frame?
+The library versions available here are known to work with XEmacs.
+(Newer versions will probably work as well but we can't guarantee it.)
+We try to keep the libraries up-to-date but may not always succeed.
+Check the above page for the canonical locations of the external libraries,
+allowing you to download the latest, bleeding-edge versions.
 
-@email{acs@@acm.org, Vin Shelton} writes:
+@node Q2.0.3, Q2.0.4, Q2.0.2, Installation
+@unnumberedsubsec Q2.0.3: How do I specify the paths that XEmacs uses for finding files?
 
-@lisp
-(setq initial-frame-plist '(minibuffer nil))
-(setq default-frame-plist '(minibuffer nil))
-(setq default-minibuffer-frame
-      (make-frame
-       '(minibuffer only
-                    width 86
-                    height 1
-                    menubar-visible-p nil
-                    default-toolbar-visible-p nil
-                    name "minibuffer"
-                    top -2
-                    left -2
-                    has-modeline-p nil)))
-(frame-notice-user-settings)
-@end lisp
+You can specify what paths to use by using a number of different flags
+when running configure.  See the section MAKE VARIABLES in the top-level
+file INSTALL in the XEmacs distribution for a listing of those flags.
 
-@strong{Please note:} The single minibuffer frame may not be to everyone's
-taste, and there any number of other XEmacs options settings that may
-make it difficult or inconvenient to use.
+Most of the time, however, the simplest fix is: @strong{do not} specify
+paths as you might for GNU Emacs.  XEmacs can generally determine the
+necessary paths dynamically at run time.  The only path that generally
+needs to be specified is the root directory to install into.  That can
+be specified by passing the @code{--prefix} flag to configure.  For a
+description of the XEmacs install tree, please consult the @file{NEWS}
+file.
 
-@node Q3.0.9, Q3.1.1, Q3.0.8, Customization
-@unnumberedsubsec Q3.0.9: What is @code{Customize}?
+@node Q2.0.4, Q2.0.5, Q2.0.3, Installation
+@unnumberedsubsec Q2.0.4: Running XEmacs without installing
 
-Starting with XEmacs 20.2 there is new system 'Customize' for customizing
-XEmacs options.
+How can I just try XEmacs without installing it?
 
-You can access @code{Customize} from the @code{Options} menu
-or invoking one of customize commands by typing eg.
-@kbd{M-x customize}, @kbd{M-x customize-face},
-@kbd{M-x customize-variable} or @kbd{M-x customize-apropos}.
+XEmacs will run in place without requiring installation and copying of
+the Lisp directories, and without having to specify a special build-time
+flag.  It's the copying of the Lisp directories that requires so much
+space.  XEmacs is largely written in Lisp.
 
-Starting with XEmacs 20.3 there is also new `browser' mode for Customize.
-Try it out with @kbd{M-x customize-browse}
+A good method is to make a shell alias for xemacs:
 
-@node Q3.1.1, Q3.1.2, Q3.0.9, Customization
-@unnumberedsec 3.1: X Window System & Resources
-@unnumberedsubsec Q3.1.1: Where is a list of X resources?
+@example
+alias xemacs=/src/xemacs-21.5/src/xemacs
+@end example
 
-Search through the @file{NEWS} file for @samp{X Resources}.  A fairly
-comprehensive list is given after it.
+(You will obviously use whatever directory you downloaded the source
+tree to instead of @file{/src/xemacs-21.5}).
 
-In addition, an @file{app-defaults} file @file{etc/Emacs.ad} is
-supplied, listing the defaults.  The file @file{etc/sample.Xresources}
-gives a different set of defaults that you might consider for
-installation in your @file{~/.Xresources} file.  It is nearly the same
-as @file{etc/Emacs.ad}, but a few entries are altered.  Be careful about
-installing the contents of this file into your @file{.Xresources} (or
-legacy @file{.Xdefaults}) file if you use GNU Emacs under X11 as well.
+This will let you run XEmacs without massive copying.
 
-@node Q3.1.2, Q3.1.3, Q3.1.1, Customization
-@unnumberedsubsec Q3.1.2: How can I detect a color display?
+@node Q2.0.5, Q2.1.1, Q2.0.4, Installation
+@unnumberedsubsec Q2.0.5: XEmacs is too big
 
-You can test the return value of the function @code{(device-class)}, as
-in:
+The space required by the installation directories can be
+reduced dramatically if desired.  Gzip all the .el files.  Remove all
+the packages you'll never want to use.  Remove the TexInfo manuals.
+Remove the Info (and use just hardcopy versions of the manual).  Remove
+most of the stuff in etc.  Remove or gzip all the source code.  Gzip or
+remove the C source code.  Configure it so that copies are not made of
+the support lisp.
 
-@lisp
-(when (eq (device-class) 'color)
-  (set-face-foreground  'font-lock-comment-face "Grey")
-  (set-face-foreground  'font-lock-string-face  "Red")
-  ....
-  )
-@end lisp
+These are all Emacs Lisp source code and bytecompiled object code.  You
+may safely gzip everything named *.el here.  You may remove any package
+you don't use.  @emph{Nothing bad will happen if you delete a package
+that you do not use}.  You must be sure you do not use it though, so be
+conservative at first.
 
-@node Q3.1.3, Q3.1.4, Q3.1.2, Customization
-@unnumberedsubsec Q3.1.3: [This question intentionally left blank]
+Any package with the possible exceptions of xemacs-base, and EFS are
+candidates for removal.  Ask yourself, @emph{Do I ever want to use this
+package?}  If the answer is no, then it is a candidate for removal.
 
-@node Q3.1.4, Q3.1.5, Q3.1.3, Customization
-@unnumberedsubsec Q3.1.4: [This question intentionally left blank]
+First, gzip all the .el files.  Then go about package by package and
+start gzipping the .elc files.  Then run XEmacs and do whatever it is
+you normally do.  If nothing bad happens, then remove the package.  You
+can remove a package via the PUI interface 
+(@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages
+you wish to delete, and then @kbd{x} to delete them.
 
-@node Q3.1.5, Q3.1.6, Q3.1.4, Customization
-@unnumberedsubsec Q3.1.5: How can I get the icon to just say @samp{XEmacs}?
+Another method is to do @code{M-x package-get-delete-package}.
 
-I'd like the icon to just say @samp{XEmacs}, and not include the name of
-the current file in it.
+@unnumberedsec 2.1: Package Installation
 
-Add the following line to your @file{init.el}/@file{.emacs}:
+@node Q2.1.1, Q2.1.2, Q2.0.5, Installation
+@unnumberedsubsec Q2.1.1: How do I install the packages?
 
-@lisp
-(setq frame-icon-title-format "XEmacs")
-@end lisp
+There are three ways to install the packages.
 
-@node Q3.1.6, Q3.1.7, Q3.1.5, Customization
-@unnumberedsubsec Q3.1.6: How can I have the window title area display the full path?
+@enumerate
+@item
+Manually, all at once, using the 'Sumo Tarball'.
+@item
+Manually, using individual package tarballs.
+@item
+Automatically, using the package tools from XEmacs.
+@end enumerate
 
-I'd like to have the window title area display the full directory/name
-of the current buffer file and not just the name.
+If you don't want to mess with the packages, it is easiest to just
+grab them manually, all at once. (For the other two ways,
+@xref{Q2.1.2}, and @xref{Q2.1.3}.) Download the file
 
-Add the following line to your @file{init.el}/@file{.emacs}:
+@file{xemacs-sumo.tar.gz}
 
-@lisp
-(setq frame-title-format "%S: %f")
-@end lisp
+For an XEmacs compiled with Mule you also need
 
-A more sophisticated title might be:
+@file{xemacs-mule-sumo.tar.gz}
 
-@lisp
-(setq frame-title-format
-      '("%S: " (buffer-file-name "%f"
-                                 (dired-directory dired-directory "%b"))))
-@end lisp
+These are in the @file{packages} directory on your XEmacs mirror
+archive: @uref{ftp://ftp.xemacs.org/pub/xemacs/packages} or its
+mirrors.  N.B. They are called 'Sumo Tarballs' for good reason. They
+are currently about 19MB and 4.5MB (gzipped) respectively.
 
-That is, use the file name, or the dired-directory, or the buffer name.
+Install them on Unix and Mac OS X using the shell/Terminal command
 
-@node Q3.1.7, Q3.1.8, Q3.1.6, Customization
-@unnumberedsubsec Q3.1.7: @samp{xemacs -name junk} doesn't work?
+@code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -}
 
-When I run @samp{xterm -name junk}, I get an xterm whose class name
-according to xprop, is @samp{junk}.  This is the way it's supposed to
-work, I think.  When I run @samp{xemacs -name junk} the class name is
-not set to @samp{junk}.  It's still @samp{emacs}.  What does
-@samp{xemacs -name} really do?  The reason I ask is that my window
-manager (fvwm) will make a window sticky and I use XEmacs to read my
-mail.  I want that XEmacs window to be sticky, without having to use the
-window manager's function to set the window sticky.  What gives?
+Where @samp{$prefix} is what you gave to the @samp{--prefix} flag to
+@file{configure}, and defaults to @file{/usr/local}.
 
-@samp{xemacs -name} sets the application name for the program (that is,
-the thing which normally comes from @samp{argv[0]}).  Using @samp{-name}
-is the same as making a copy of the executable with that new name.  The
-@code{WM_CLASS} property on each frame is set to the frame-name, and the
-application-class.  So, if you did @samp{xemacs -name FOO} and then
-created a frame named @var{BAR}, you'd get an X window with WM_CLASS =
-@code{( "BAR", "Emacs")}.  However, the resource hierarchy for this
-widget would be:
+If you have GNU tar you can use:
 
-@example
-Name:    FOO   .shell             .container   .BAR
-Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
-@end example
+@code{cd $prefix/lib/xemacs ; tar zxvf <tarballname>}
 
-instead of the default
+If you have the packages somewhere nonstandard and don't want to bother
+with @samp{$prefix} (for example, you're a developer and are compiling
+the packages yourself, and want your own private copy of everything),
+you can also directly specify this using @file{configure}.  To do this
+with 21.5 and above use the @samp{--with-package-prefix} parameter to
+specify the directory under which you untarred the above tarballs.
+Under 21.4 and previous you need to use @samp{--package-path}.  Using
+these options looks something like this:
 
 @example
-Name:    xemacs.shell             .container   .emacs
-Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
+   configure --package-path="~/.xemacs::/src/xemacs/site-packages:/src/xemacs/xemacs-packages:/src/xemacs/mule-packages" ...
 @end example
 
+Under Windows, you need to place the above @samp{tar.gz} files in the
+directory specified using the @samp{PACKAGE_PREFIX} value in
+@file{nt/config.inc} and by default is @file{\Program Files\XEmacs}.
+(To untar a @samp{tar.gz} file you will need to use a utility such as
+WinZip, unless you have Cygwin or a similar environment installed, in
+which case the above Unix shell command should work fine.) If you want
+the packages somewhere else, just change @samp{PACKAGE_PREFIX}.
+
+Note that XEmacs finds the packages automatically anywhere underneath
+the directory tree where it expects to find the packages.  All you
+need to do is put stuff there; you don't need to run any program to
+tell XEmacs to find the packges, or do anything of that sort.
+
+However, XEmacs will only notice newly installed packages when it
+starts up, so you will have to restart if you are already running
+XEmacs.
 
-It is arguable that the first element of WM_CLASS should be set to the
-application-name instead of the frame-name, but I think that's less
-flexible, since it does not give you the ability to have multiple frames
-with different WM_CLASS properties.  Another possibility would be for
-the default frame name to come from the application name instead of
-simply being @samp{emacs}.  However, at this point, making that change
-would be troublesome: it would mean that many users would have to make
-yet another change to their resource files (since the default frame name
-would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever
-the executable happened to be named), so we'd rather avoid it.
-
-To make a frame with a particular name use:
+For more details, @xref{Startup Paths,,,xemacs, the XEmacs User's
+Manual}, and @xref{Packages,,,xemacs, the XEmacs User's Manual}.
 
-@lisp
-(make-frame '((name . "the-name")))
-@end lisp
+As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
 
-@node Q3.1.8, Q3.2.1, Q3.1.7, Customization
-@unnumberedsubsec Q3.1.8: @samp{-iconic} doesn't work.
+@emph{NOTE}: For detailed information about how the package
+hierarchies work, @xref{Package Overview,,,lispref, the XEmacs Lisp
+Reference Manual}.
 
-When I start up XEmacs using @samp{-iconic} it doesn't work right.
-Using @samp{-unmapped} on the command line, and setting the
-@code{initiallyUnmapped} X Resource don't seem to help much either...
+@node Q2.1.2, Q2.1.3, Q2.1.1, Installation
+@unnumberedsubsec Q2.1.2: Can I install the packages individually?
 
-@email{ben@@xemacs.org, Ben Wing} writes:
+Yes, you can download individual packages from the FTP site (@pxref{Q2.1.1}).  Since packages are automatically noticed at startup, you just have to put them in the right place.
 
-@quotation
-Ugh, this stuff is such an incredible mess that I've about given up
-getting it to work.  The principal problem is numerous window-manager
-bugs...
-@end quotation
+Note: If you are upgrading packages already installed, it's best to
+remove the old package first (@pxref{Q2.1.4}).
 
-@node Q3.2.1, Q3.2.2, Q3.1.8, Customization
-@unnumberedsec 3.2: Textual Fonts & Colors
-@unnumberedsubsec Q3.2.1: How can I set color options from @file{init.el}/@file{.emacs}?
+For example if we are installing the @samp{xemacs-base}
+package (version 1.48):
 
-How can I set the most commonly used color options from my
-@file{init.el}/@file{.emacs} instead of from my @file{.Xresources}?
+@example
+   mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/xemacs-packages RET
+   gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+@end example
 
-Like this:
+Or if you have GNU tar, the last step can be:
 
-@lisp
-(set-face-background 'default      "bisque") ; frame background
-(set-face-foreground 'default      "black") ; normal text
-(set-face-background 'zmacs-region "red") ; When selecting w/
-                                        ; mouse
-(set-face-foreground 'zmacs-region "yellow")
-(set-face-font       'default      "*courier-bold-r*120-100-100*")
-(set-face-background 'highlight    "blue") ; Ie when selecting
-                                        ; buffers
-(set-face-foreground 'highlight    "yellow")
-(set-face-background 'modeline     "blue") ; Line at bottom
-                                        ; of buffer
-(set-face-foreground 'modeline     "white")
-(set-face-font       'modeline     "*bold-r-normal*140-100-100*")
-(set-face-background 'isearch      "yellow") ; When highlighting
-                                        ; while searching
-(set-face-foreground 'isearch      "red")
-(setq x-pointer-foreground-color   "black") ; Adds to bg color,
-                                        ; so keep black
-(setq x-pointer-background-color   "blue") ; This is color
-                                        ; you really
-                                        ; want ptr/crsr
-@end lisp
+@example
+   tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
+@end example
 
-@node Q3.2.2, Q3.2.3, Q3.2.1, Customization
-@unnumberedsubsec Q3.2.2: How do I set the text, menu and modeline fonts?
+For MULE related packages, it is best to untar into the @samp{mule-packages}
+hierarchy, i.e. for the @samp{mule-base} package, version 1.37:
 
-Note that you should use @samp{Emacs.} and not @samp{Emacs*} when
-setting face values.
+@example
+   mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/mule-packages RET
+   gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+@end example
 
-In @file{.Xresources}:
+Or if you have GNU tar, the last step can be:
 
 @example
-Emacs.default.attributeFont:  -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
-Emacs*menubar*font:           fixed
-Emacs.modeline.attributeFont: fixed
+   tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
 @end example
 
-This is confusing because @samp{default} and @samp{modeline} are face
-names, and can be found listed with all faces in the current mode by
-using @kbd{M-x set-face-font (enter) ?}.  They use the face-specific
-resource @samp{attributeFont}.
+@node Q2.1.3, Q2.1.4, Q2.1.2, Installation
+@unnumberedsubsec Q2.1.3: Can I install the packages automatically?
 
-On the other hand, @samp{menubar} is a normal X thing that uses the
-resource @samp{font}.  With Motif it @emph{may be} necessary to use
-@samp{fontList} @emph{instead of} @samp{font}.  In @emph{non-Motif}
-configurations with Mule it @emph{is} necessary to use @samp{fontSet}
-instead of @samp{font}.  (Sorry, there just is no simple recipe here.)
+XEmacs comes with some tools to make the periodic updating and
+installing easier. It will notice if new packages or versions are
+available and will fetch them from the FTP site.
 
-@node Q3.2.3, Q3.2.4, Q3.2.2, Customization
-@unnumberedsubsec Q3.2.3: How can I set the colors when highlighting a region?
+Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
+This requirement will hopefully go away in the future. The packages
+you need are:
 
-How can I set the background/foreground colors when highlighting a
-region?
+@example
+   efs          - To fetch the files from the FTP site or mirrors.
+   xemacs-base  - Needed by efs.
+@end example
 
-You can change the face @code{zmacs-region} either in your
-@file{.Xresources}:
+and optionally:
 
 @example
-Emacs.zmacs-region.attributeForeground: firebrick
-Emacs.zmacs-region.attributeBackground: lightseagreen
+   mailcrypt    - For PGP verification of the package-index file.
 @end example
 
-or in your @file{init.el}/@file{.emacs}:
-
-@lisp
-(set-face-background 'zmacs-region "red")
-(set-face-foreground 'zmacs-region "yellow")
-@end lisp
+After installing these by hand, fire up XEmacs and follow these
+steps.
 
-@node Q3.2.4, Q3.2.5, Q3.2.3, Customization
-@unnumberedsubsec Q3.2.4: How can I limit color map usage?
+@enumerate
+@item
+Choose a download site.
+@itemize @bullet
+@item
+via menu: Tools -> Packages -> Set Download Site 
+@item
+via keyb: M-x customize-variable RET package-get-remote RET
+(put in the details of remote host and directory)
+@end itemize
 
-I'm using Netscape (or another color grabber like XEmacs);
-is there any way to limit the number of available colors in the color map?
+If the package tarballs _AND_ the package-index file are in a
+local directory, you can: M-x pui-set-local-package-get-directory RET
 
-Answer: No, but you can start Netscape before XEmacs, and it will use
-the closest available color if the colormap is full.  You can also limit
-the number of colors Netscape uses, using the flags -mono, -ncols <#> or
--install (for mono, limiting to <#> colors, or for using a private color
-map).
-
-If you have the money, another solution would be to use a truecolor or
-direct color video.
+@item
+Obtain a list of packages and display the list in a buffer named
+"*Packages*".
+@itemize @bullet
+@item
+menu: Tools -> Packages -> List & Install
+@item
+keyb: M-x pui-list-packages RET
+@end itemize
 
-@node Q3.2.5, Q3.2.6, Q3.2.4, Customization
-@unnumberedsubsec Q3.2.5: My tty supports color, but XEmacs doesn't use them.
+XEmacs will now connect to the remote site and download the
+latest package-index file.
 
-XEmacs tries to automatically determine whether your tty supports color,
-but sometimes guesses wrong.  In that case, you can make XEmacs Do The
-Right Thing using this Lisp code:
+The resulting buffer, "*Packages*" has brief instructions at the
+end of the buffer.
 
-@lisp
-(if (eq 'tty (device-type))
-    (set-device-class nil 'color))
-@end lisp
+@item
+Choose the packages you wish to install.
+@itemize @bullet
+@item
+mouse: Click button 2 on the package name.
+@item
+keyb: RET on the package name
+@end itemize
 
-@node Q3.2.6, Q3.2.7, Q3.2.5, Customization
-@unnumberedsubsec Q3.2.6: Can I have pixmap backgrounds in XEmacs?
-@c New
-@email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes:
+@item
+Make sure you have everything you need.
+@itemize @bullet
+@item
+menu: Packages -> Add Required
+@item
+keyb: r
+@end itemize
 
-@quotation
-There are several ways to do it.  For example, you could specify a
-default pixmap image to use in your @file{~/.Xresources}, e.g.,
+XEmacs will now search for packages that are required by the
+ones that you have chosen to install and offer to select
+those packages also.
 
+For novices and gurus alike, this step can save your bacon.
+It's easy to forget to install a critical package.
 
-@example
-  Emacs*EmacsFrame.default.attributeBackgroundPixmap: /path/to/image.xpm
-@end example
+@item
+Download and install the packages.
+@itemize @bullet
+@item
+menu: Packages -> Install/Remove Selected
+@item
+keyb: x
+@end itemize
+@end enumerate
 
+@node Q2.1.4, Q2.1.5, Q2.1.3, Installation
+@unnumberedsubsec Q2.1.4: Can I upgrade or remove packages?
 
-and then reload ~/.Xresources and restart XEmacs.  Alternatively,
-since each face can have its own pixmap background, a better way
-would be to set a face's pixmap within your XEmacs init file, e.g.,
+As the exact files and their locations contained in a package may
+change it is recommended to remove a package first before installing a
+new version. In order to facilitate removal each package contains an
+pgkinfo/MANIFEST.pkgname file which list all the files belong to the
+package. M-x package-admin-delete-binary-package RET can be used to
+remove a package using this file.
 
-@lisp
-  (set-face-background-pixmap 'default "/path/to/image.xpm")
-  (set-face-background-pixmap 'bold    "/path/to/another_image.xpm")
-@end lisp
+Note that the interactive package tools included with XEmacs already do
+this for you.
 
-and so on.  You can also do this interactively via @kbd{M-x edit-faces}.
+@node Q2.1.5, Q2.1.6, Q2.1.4, Installation
+@unnumberedsubsec Q2.1.5: Which packages to install?
 
-@end quotation
+Unless you are an advanced user, just install everything.
 
-@node Q3.2.7, Q3.3.1, Q3.2.6, Customization
-@unnumberedsubsec Q3.2.7: How do I display non-ASCII characters?
-@c New
+If you really want to install only what's absolutely needed, a good
+minimal set of packages for XEmacs-latin1 would be
 
-If you're using a Mule-enabled XEmacs, then display is automatic.  If
-you're not seeing the characters you expect, either (1) you don't have
-appropriate fonts available or (2) XEmacs did not correctly detect the
-coding system (@pxref{Recognize Coding, , , xemacs}).  In case (1),
-install fonts as is customary for your platform.  In case (2), you
-need to tell XEmacs explicitly what coding systems you're using.
-@ref{Specify Coding, , , xemacs}.
+@example
+xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+text-modes, time, mailcrypt
+@end example
 
-If your XEmacs is not Mule-enabled, and for some reason getting a
-Mule-enabled XEmacs seems like the wrong thing to do, all is not lost.
-You can arrange it by brute force.  In @file{event-Xt.c} (suppress the
-urge to look in this file---play Doom instead, because you'll survive
-longer), it is written:
+If you are using the XEmacs package tools, don't forget to do:
 
-@quotation
-In a non-Mule world, a user can still have a multi-lingual editor, by
-doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all
-their Latin-2 buffers, etc.
-@end quotation
+@example
+       Packages -> Add Required
+@end example
 
-For the related problem of @emph{inputting} non-ASCII characters in a
-non-Mule XEmacs, @xref{Q3.5.7}.
+To make sure you have everything that the packages you have chosen to
+install need.
 
-@node Q3.3.1, Q3.3.2, Q3.2.7, Customization
-@unnumberedsec 3.3: The Modeline
-@unnumberedsubsec Q3.3.1: How can I make the modeline go away?
+@xref{Q1.7.2}, for a description of the various packages.
 
-@lisp
-(set-specifier has-modeline-p nil)
-@end lisp
+@node Q2.1.6, Q2.1.7, Q2.1.5, Installation
+@unnumberedsubsec Q2.1.6: Can you describe the package location process in more detail?
 
-@c Starting with XEmacs 19.14 the modeline responds to mouse clicks, so if
-@c you haven't liked or used the modeline in the past, you might want to
-@c try the new version out.
-@c
-@node Q3.3.2, Q3.3.3, Q3.3.1, Customization
-@unnumberedsubsec Q3.3.2: How do you have XEmacs display the line number in the modeline?
+On startup XEmacs looks for packages in so-called package hierarchies.
+Normally, there are three system wide hierarchies, like this:
 
-Add the following line to your @file{init.el}/@file{.emacs} file to
-display the line number:
+@example
+$prefix/lib/xemacs/xemacs-packages/
+     Normal packages go here.
 
-@lisp
-(line-number-mode 1)
-@end lisp
+$prefix/lib/xemacs/mule-packages/
+     Mule packages go here and are only searched by MULE-enabled XEmacsen.
 
-Use the following to display the column number:
+$prefix/lib/xemacs/site-packages/
+     Local and 3rd party packages go here.
+@end example
 
-@lisp
-(column-number-mode 1)
-@end lisp
+This is what you get when you untar the SUMO tarballs under
+@file{$prefix/lib/xemacs}.
 
-Or select from the @code{Options} menu
-@iftex
-@*
-@end iftex
-@code{Advanced (Customize)->Emacs->Editing->Basics->Line Number Mode}
-and/or
-@iftex
-@*
-@end iftex
-@code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode}
+@file{$prefix} is specified using the @samp{--prefix} parameter to
+@file{configure}, and defaults to @file{usr/local}.
 
-Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
+If the package path is not explicitly specified, XEmacs looks for the
+package directory @file{xemacs-packages} (and @file{mule-packages} and
+@file{site-packages}) first under @samp{~/.xemacs}, then for a sister
+directory @file{lib/xemacs-VERSION} of the directory in which the
+XEmacs executable is located, then for a sister directory
+@file{lib/xemacs}.  The XEmacs executable (under Unix at least) is
+installed by default in @file{/usr/local/bin}; this explains why
+XEmacs in its default installation will find packages that you put
+under @file{/usr/local/lib/xemacs}.
 
-@node Q3.3.3, Q3.3.4, Q3.3.2, Customization
-@unnumberedsubsec Q3.3.3: How do I get XEmacs to put the time of day on the modeline?
+You can specify where exactly XEmacs looks for packages by using the
+@samp{--with-package-prefix} or @samp{--with-package-path} parameters to
+@file{configure} (or the equivalent settings in @file{config.inc}, under
+Windows), or setting the @samp{EMACSPACKAGEPATH} environment variable
+(which has the same format as @samp{--with-package-path}).  @xref{Q2.1.1}.
 
-Add the following line to your @file{init.el}/@file{.emacs} file to
-display the time:
+See @file{configure.usage} for more info about the format of these
+@file{configure} parameters.
 
-@lisp
-(display-time)
-@end lisp
+In addition to the system wide packages, each user can have his own
+packages installed under @file{~/.xemacs/}. If you want to install
+packages there using the interactive tools, you need to set
+@code{package-get-install-to-user-init-directory} to @code{t}.
 
-See @code{Customize} from the @code{Options} menu for customization.
+The site-packages hierarchy replaces the old @file{site-lisp}
+directory.  XEmacs no longer looks into a @file{site-lisp} directly by
+default.  A good place to put @file{site-start.el} would be in
+@file{$prefix/lib/xemacs/site-packages/lisp/}.
 
-@node Q3.3.4, Q3.3.5, Q3.3.3, Customization
-@unnumberedsubsec Q3.3.4: How do I turn off current chapter from AUC TeX modeline?
+@node Q2.1.7, Q2.2.1, Q2.1.6, Installation
+@unnumberedsubsec Q2.1.7: EFS fails with "500 AUTH not understood" (NEW)
 
-With AUC TeX, fast typing is hard because the current chapter, section
-etc. are given in the modeline.  How can I turn this off?
+A typical error: FTP Error: USER request failed; 500 AUTH not understood.
 
-It's not AUC TeX, it comes from @code{func-menu} in @file{func-menu.el}.
+Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends
+on comp.emacs.xemacs:
 
-@c Add this code to your @file{init.el}/@file{.emacs} to turn it off:
-@c
-@c @lisp
-@c (setq fume-display-in-modeline-p nil)
-@c @end lisp
-@c
-@c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX
-@c mode:
-@c
-@c @lisp
-@c (add-hook 'TeX-mode-hook
-@c           '(lambda () (setq fume-display-in-modeline-p nil)))
-@c @end lisp
-@c
-@email{dhughes@@origin-at.co.uk, David Hughes} writes:
+   tell your ftp client to not attempt AUTH authentication (or do not
+   use FTP servers that don't understand AUTH)
 
-@quotation
-Try this; you'll still get the function name displayed in the modeline,
-but it won't attempt to keep track when you modify the file. To refresh
-when it gets out of synch, you simply need click on the @samp{Rescan
-Buffer} option in the function-menu.
+and notes that you need to add an element (often "-u") to
+`efs-ftp-program-args'.  Use M-x customize-variable, and verify the
+needed flag with `man ftp' or other local documentation.
 
-@lisp
-(setq-default fume-auto-rescan-buffer-p nil)
-@end lisp
-@end quotation
+@unnumberedsec 2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
 
-@node Q3.3.5, Q3.4.1, Q3.3.4, Customization
-@unnumberedsubsec Q3.3.5: How can one change the modeline color based on the mode used?
+@node Q2.2.1, Q2.2.2, Q2.1.7, Installation
+@unnumberedsubsec Q2.2.1: Libraries in non-standard locations
 
-You can use something like the following:
+If your libraries are in a non-standard location, you can specify the location
+using the following flags to @file{configure}.  Under 21.4 or earlier:
 
-@lisp
-(add-hook 'lisp-mode-hook
-          (lambda ()
-            (set-face-background 'modeline "red" (current-buffer))))
-@end lisp
+@example
+--site-libraries=WHATEVER
+--site-includes=WHATEVER
+@end example
 
-Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
-colors change from the default set in your @file{init.el}/@file{.emacs}.
-The change will only be made in the buffer you just entered (which
-contains the Lisp file you are editing) and will not affect the modeline
-colors anywhere else.
+Under 21.5 or later:
 
-Notes:
+@example
+--with-site-libraries=WHATEVER
+--with-site-includes=WHATEVER
+@end example
 
-@itemize @bullet
+If you have multiple paths to specify, use the following syntax:
 
-@item The hook is the mode name plus @code{-hook}.  eg. c-mode-hook,
-c++-mode-hook, emacs-lisp-mode-hook (used for your
-@file{init.el}/@file{.emacs} or a @file{xx.el} file),
-lisp-interaction-mode-hook (the @samp{*scratch*} buffer),
-text-mode-hook, etc.
+@example
+--site-libraries='/path/one /path/two /path/etc'
+@end example
 
-@item
-Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)},
-otherwise you will erase anything that anybody has already put on the
-hook.
+If the libraries and headers reside in the directories @samp{lib} and
+@samp{include} of a common root (say @samp{/sw}) then both can be
+specified with a single option:
 
-@item
-You can also do @code{(set-face-font 'modeline @var{font})},
-eg. @code{(set-face-font 'modeline "*bold-r-normal*140-100-100*"
-(current-buffer))} if you wish the modeline font to vary based on the
-current mode.
-@end itemize
+@example
+--site-prefixes=WHATEVER
+@end example
 
-There are additional modeline faces, @code{modeline-buffer-id},
-@code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which
-you may want to customize.
+or for 21.5:
 
-@node Q3.4.1, Q3.4.2, Q3.3.5, Customization
-@unnumberedsec 3.4: Multiple Device Support
-@unnumberedsubsec Q3.4.1: How do I open a frame on another screen of my multi-headed display?
+@example
+--with-site-prefixes=WHATEVER
+@end example
 
-Use the command @kbd{M-x make-frame-on-display}.  This command is also
-on the File menu in the menubar.
+@node Q2.2.2, Q2.3.1, Q2.2.1, Installation
+@unnumberedsubsec Q2.2.2: Why can't I strip XEmacs?
 
-The command @code{make-frame-on-tty} also exists, which will establish a
-connection to any tty-like device.  Opening the TTY devices should be
-left to @code{gnuclient}, though.
+@email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes:
 
-@node Q3.4.2, Q3.5.1, Q3.4.1, Customization
-@unnumberedsubsec Q3.4.2: Can I really connect to a running XEmacs after calling up over a modem?  How?
+@quotation
+Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The
+link gives you a bare-boned emacs (called temacs). temacs is then run,
+preloading some of the lisp files. The result is then dumped into a new
+executable, named xemacs, which will contain all of the preloaded lisp
+functions and data.
 
-Yes.  Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach}
-program supplied with XEmacs instead.)
+Now, during the dump itself, the executable (code+data+symbols) is
+written on disk using a special unexec() function. This function is
+obviously heavily system dependent. And on some systems, it leads to an
+executable which, although valid, cannot be stripped without damage. If
+memory serves, this is especially the case for AIX binaries. On other
+architectures it might work OK.
 
-Also see @ref{Q5.0.12}.
+The Right Way to strip the emacs binary is to strip temacs prior to
+dumping xemacs. This will always work, although you can do that only if
+you install from sources (as temacs is @file{not} part of the binary
+kits).
+@end quotation
 
-@node Q3.5.1, Q3.5.2, Q3.4.2, Customization
-@unnumberedsec 3.5: The Keyboard
-@unnumberedsubsec Q3.5.1: How can I bind complex functions (or macros) to keys?
+@email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes:
 
-As an example, say you want the @kbd{paste} key on a Sun keyboard to
-insert the current Primary X selection at point. You can accomplish this
-with:
+@quotation
+Here is the trick:
 
-@lisp
-(define-key global-map [f18] 'x-insert-selection)
-@end lisp
+@enumerate
+@item
+[ ./configure; make ]
 
-However, this only works if there is a current X selection (the
-selection will be highlighted).  The functionality I like is for the
-@kbd{paste} key to insert the current X selection if there is one,
-otherwise insert the contents of the clipboard.  To do this you need to
-pass arguments to @code{x-insert-selection}.  This is done by wrapping
-the call in a 'lambda form:
+@item
+rm src/xemacs
 
-@lisp
-(global-set-key [f18]
-  (lambda () (interactive) (x-insert-selection t nil)))
-@end lisp
+@item
+strip src/temacs
 
-This binds the f18 key to a @dfn{generic} functional object.  The
-interactive spec is required because only interactive functions can be
-bound to keys.
+@item
+make
 
-For the FAQ example you could use:
+@item
+cp src/xemacs /usr/local/bin/xemacs
 
-@lisp
-(global-set-key [(control ?.)]
-  (lambda () (interactive) (scroll-up 1)))
-(global-set-key [(control ?;)]
-  (lambda () (interactive) (scroll-up -1)))
-@end lisp
+@item
+cp lib-src/DOC-19.16-XEmacs
+@iftex
+\ @*
+@end iftex
+/usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
+@end enumerate
+@end quotation
 
-This is fine if you only need a few functions within the lambda body.
-If you're doing more it's cleaner to define a separate function as in
-question 3.5.3 (@pxref{Q3.5.3}).
+@unnumberedsec 2.3: Windows Installation (Windows, Cygwin, MinGW)
 
-@node Q3.5.2, Q3.5.3, Q3.5.1, Customization
-@unnumberedsubsec Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers?
+@node Q2.3.1, Q2.3.2, Q2.2.2, Installation
+@unnumberedsubsec Q2.3.1: What exactly are all the different ways to build XEmacs under Windows?
 
-Add the following line to your @file{init.el}/@file{.emacs} file:
+XEmacs can be built in several ways in the MS Windows environment.
 
-@lisp
-(setq next-line-add-newlines nil)
-@end lisp
+The standard way is what we call the "native" port.  It uses the Win32
+API and has no connection with X whatsoever -- it does not require X
+libraries to build, nor does it require an X server to run.  The native
+port is the most reliable version and provides the best graphical
+support.  Almost all development is geared towards this version, and
+there is little reason not to use it.
 
-This has been the default setting in XEmacs for some time.
+The second way to build is the Cygwin port.  It takes advantage of
+Cygnus emulation library under Win32.  @xref{Q1.2.5, What are Cygwin
+and MinGW, and do I need them to run XEmacs?}, for more information.
 
-@node Q3.5.3, Q3.5.4, Q3.5.2, Customization
-@unnumberedsubsec Q3.5.3: How do I bind C-. and C-; to scroll one line up and down?
+A third way is the MinGW port.  It uses the Cygwin environment to
+build but does not require it at runtime.  @xref{Q1.2.5, What are
+Cygwin and MinGW, and do I need them to run XEmacs?}, for more
+information.
 
-Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and
-@email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}:
+Finally, you might also be able to build the non-Cygwin, non-MinGW "X"
+port.  This was actually the first version of XEmacs that ran under MS
+Windows, and although the code is still in XEmacs, it's essentially
+orphaned and it's unlikely it will compile without a lot of work.  If
+you want an MS Windows versin of XEmacs that supports X, use the Cygwin
+version. (The X support there is actively maintained, so that Windows
+developers can test the X support in XEmacs.)
 
-@lisp
-(defun scroll-up-one-line ()
-  (interactive)
-  (scroll-up 1))
+@node Q2.3.2, Q2.3.3, Q2.3.1, Installation
+@unnumberedsubsec Q2.3.2: What compiler/libraries do I need to compile XEmacs?
 
-(defun scroll-down-one-line ()
-  (interactive)
-  (scroll-down 1))
+You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
+some beta testers currently trying to compile with VC.NET, aka version
+7.0, but we can't yet report complete success.) For the Cygwin and
+MinGW versions, you need the Cygwin environment, which comes with GCC,
+the compiler used for those versions.  @xref{Q1.2.5, What are Cygwin
+and MinGW, and do I need them to run XEmacs?}, for more information on
+Cygwin and MinGW.
 
-(global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
-(global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
-@end lisp
+@node Q2.3.3, Q2.3.4, Q2.3.2, Installation
+@unnumberedsubsec Q2.3.3: How do I compile the native port?
 
-The key point is that you can only bind simple functions to keys; you
-can not bind a key to a function that you're also passing arguments to.
-(@pxref{Q3.5.1} for a better answer).
+Please read the file @file{nt/README} in the XEmacs distribution, which
+contains the full description.
 
-@node Q3.5.4, Q3.5.5, Q3.5.3, Customization
-@unnumberedsubsec Q3.5.4: Globally binding @kbd{Delete}?
+@node Q2.3.4, Q2.3.5, Q2.3.3, Installation
+@unnumberedsubsec Q2.3.4: What do I need for Cygwin?
 
-I cannot manage to globally bind my @kbd{Delete} key to something other
-than the default.  How does one do this?
+You can find the Cygwin tools and compiler at:
 
-Answer: The problem is that many modes explicitly bind @kbd{Delete}.  To
-get around this, try the following:
+@uref{http://www.cygwin.com/}
 
-@lisp
-(defun foo ()
-  (interactive)
-  (message "You hit DELETE"))
+Click on the @samp{Install or update now!} link, which will download a
+file @file{setup.exe}, which you can use to download everything
+else. (You will need to pick a mirror site; @samp{mirrors.rcn.net} is
+probably the best.) You should go ahead and install everything --
+you'll get various ancillary libraries that XEmacs needs or likes,
+e.g. XPM, PNG, JPEG, TIFF, etc.  You can also get X Windows here, if you
+want to compile under X.
 
-(define-key key-translation-map 'delete 'redirected-delete)
-(global-set-key 'redirected-delete 'foo)
-@end lisp
+If you want to compile without X, you will need the @file{xpm-nox}
+library, which must be specifically selected in the Cygwin netinstaller;
+it is not selected by default.  The package has had various names.
+Currently it is called @file{cygXpm-noX4.dll}.
 
-Also see @ref{Q3.5.10}.
+@node Q2.3.5, Q2.3.6, Q2.3.4, Installation
+@unnumberedsubsec Q2.3.5: How do I compile under Cygwin?
 
-@node Q3.5.5, Q3.5.6, Q3.5.4, Customization
-@unnumberedsubsec Q3.5.5: Scrolling one line at a time.
+Similar as on Unix; use the usual `configure' and `make' process.
+Some problems to watch out for:
 
-Can the cursor keys scroll the screen a line at a time, rather than the
-default half page jump?  I tend it to find it disorienting.
+@itemize @bullet
+@item
+make sure HOME is set. This controls where you
+@file{init.el} file comes from;
 
-Try this:
+@item
+@samp{CYGWIN} needs to be set to @samp{tty} for process support to work;
 
-@lisp
-(defun scroll-one-line-up (&optional arg)
-  "Scroll the selected window up (forward in the text) one line (or N lines)."
-  (interactive "p")
-  (scroll-up (or arg 1)))
-
-(defun scroll-one-line-down (&optional arg)
-  "Scroll the selected window down (backward in the text) one line (or N)."
-  (interactive "p")
-  (scroll-down (or arg 1)))
-
-(global-set-key [up]   'scroll-one-line-up)
-(global-set-key [down] 'scroll-one-line-down)
-@end lisp
+@item
+picking up some other grep or other UNIX-like tools can kill configure;
 
-The following will also work but will affect more than just the cursor
-keys (i.e. @kbd{C-n} and @kbd{C-p}):
+@item
+static heap too small, adjust @file{src/sheap-adjust.h} to a more positive
+number;
 
-@lisp
-(setq scroll-step 1)
-@end lisp
+@item
+(Unconfirmed) The Cygwin version doesn't understand
+@file{//machine/path} type paths so you will need to manually mount a
+directory of this form under a unix style directory for a build to work
+on the directory;
 
-Starting with XEmacs-20.3 you can also change this with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...} or type
-@kbd{M-x customize @key{RET} windows @key{RET}}.
+@item
+If you're building @strong{WITHOUT} X11, don't forget to change symlinks
+@file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to
+the non-X versions of these libraries.  By default they point to the X
+versions.  So:
 
-@node Q3.5.6, Q3.5.7, Q3.5.5, Customization
-@unnumberedsubsec Q3.5.6: How to map @kbd{Help} key alone on Sun type4 keyboard?
+@example
+/usr/lib/libXpm.a     -> /usr/lib/libXpm-noX.a
+/usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
+@end example
 
-The following works in GNU Emacs 19:
+(This advice may now be obsolete because of the availability of the
+cygXpm-noX4.dll package from Cygwin.  Send confirmation to
+@email{faq@@xemacs.org}.)
 
-@lisp
-(global-set-key [help] 'help-command);; Help
-@end lisp
+@item
+Other problems are listed in the @file{PROBLEMS} file, in the top-level
+directory of the XEmacs sources.
 
-The following works in XEmacs with the addition of shift:
+@end itemize
 
-@lisp
-(global-set-key [(shift help)] 'help-command);; Help
-@end lisp
 
-But it doesn't work alone.  This is in the file @file{PROBLEMS} which
-should have come with your XEmacs installation: @emph{Emacs ignores the
-@kbd{help} key when running OLWM}.
+@node Q2.3.6, Q2.3.7, Q2.3.5, Installation
+@unnumberedsubsec Q2.3.6: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
 
-OLWM grabs the @kbd{help} key, and retransmits it to the appropriate
-client using
-@iftex
-@*
-@end iftex
-@code{XSendEvent}.  Allowing Emacs to react to synthetic
-events is a security hole, so this is turned off by default.  You can
-enable it by setting the variable @code{x-allow-sendevents} to t.  You
-can also cause fix this by telling OLWM to not grab the help key, with
-the null binding @code{OpenWindows.KeyboardCommand.Help:}.
+Similar to the method for Unix.  Things to remember:
 
-@node Q3.5.7, Q3.5.8, Q3.5.6, Customization
-@unnumberedsubsec Q3.5.7: How can you type in special characters in XEmacs?
-@c Changed
-One way is to use the package @code{x-compose}.  Then you can use
-sequences like @kbd{Compose " a} to get ä, etc.
+@itemize @bullet
+@item
+Specify the target host on the command line for @file{./configure}, e.g.
+@samp{./configure i586-pc-mingw32}.
 
-Another way is to use the @code{iso-insert} package. Then you can use
-sequences like @kbd{C-x 8 " a} to get ä, etc.
+@item
+Be sure that your build directory is mounted such that it has the
+same path either as a cygwin path (@file{/build/xemacs}) or as a Windows
+path (@file{c:\build\xemacs}).
 
-@email{glynn@@sensei.co.uk, Glynn Clements} writes:
+@item
+Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng},
+@file{compface}, etc.
 
-@quotation
-It depends upon your X server.
+@item
+Specify the target location of the extra libs on the command line
+to @file{configure}, e.g.for 21.4 or earlier
+@samp{./configure --site-prefixes=/build/libs i586-pc-mingw32} and for
+21.5 or later 
+@samp{./configure --with-site-prefixes=/build/libs i586-pc-mingw32}.
+@end itemize
 
-Generally, the simplest way is to define a key as Multi_key with
-xmodmap, e.g.
-@c hey, show some respect, willya -- there's xkeycaps, isn't there? --
-@c chr ;)
-@example
-        xmodmap -e 'keycode 0xff20 = Multi_key'
-@end example
+@node Q2.3.7, Q2.3.8, Q2.3.6, Installation
+@unnumberedsubsec Q2.3.7: How do I compile with X support?
 
-You will need to pick an appropriate keycode. Use xev to find out the
-keycodes for each key.
+To compile under Cygwin, all you need to do is install XFree86, which
+is available as part of the standard Cygwin installation.
+@uref{http://www.cygwin.com/}.  Once installed, @file{configure}
+should automatically find the X libraries and compile with X support.
 
-[NB: On a `Windows' keyboard, recent versions of XFree86 automatically
-define the right `Windows' key as Multi_key'.]
+As noted above, the non-Cygwin X support is basically orphaned, and
+probably won't work.  But if it want to try, it's described in
+@file{nt/README} in some detail.  Basically, you need to get X11
+libraries from @uref{http://ftp.x.org}, and compile them.  If the
+precompiled versions are available somewhere, we don't know of it.
+
+@node Q2.3.8, Q2.4.1, Q2.3.7, Installation
+@unnumberedsubsec Q2.3.8: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
+
+The Cygwin binary distributed with the netinstaller uses an external DLL
+to handle XPM images (such as toolbar buttons).  You may get an error like
 
-Once you have Multi_key defined, you can use e.g.
 @example
-        Multi a '       => á
-        Multi e "       => ë
-        Multi c ,       => ç
+This application has failed to start because cygXpm-noX4.dll was not found.
+Re-installing the application may fix this problem.
 @end example
 
-etc.
+Andy Piper <andy@@xemacs.org> sez:
 
-Also, recent versions of XFree86 define various AltGr-<key>
-combinations as dead keys, i.e.
 @example
-        AltGr [         => dead_diaeresis
-        AltGr ]         => dead_tilde
-        AltGr ;         => dead_acute
+cygXpm-noX4 is part of the cygwin distribution under libraries or
+graphics, but is not installed by default. You need to run the
+cygwin setup again and select this package.
 @end example
-etc.
 
-Running @samp{xmodmap -pk} will list all of the defined keysyms.
-@end quotation
+Ie, reinstalling XEmacs won't help because it is not part of the XEmacs
+distribution.
 
-For the related problem of @emph{displaying} non-ASCII characters in a
-non-Mule XEmacs, @xref{Q3.2.7}.
+@unnumberedsec 2.4: General Troubleshooting
 
-@node Q3.5.8, Q3.5.9, Q3.5.7, Customization
-@unnumberedsubsec Q3.5.8: [This question intentionally left blank]
+@node Q2.4.1, Q2.4.2, Q2.3.8, Installation
+@unnumberedsubsec Q2.4.1: How do I deal with bugs or with problems building, installing, or running?
 
-Obsolete question, left blank to avoid renumbering.
+The file @file{PROBLEMS} contains information on many common problems that
+occur in building, installing and running XEmacs.
 
-@node Q3.5.9, Q3.5.10, Q3.5.8, Customization
-@unnumberedsubsec Q3.5.9: How do I make the Delete key delete forward?
+Reports of bugs in XEmacs should be sent to
+@email{xemacs-beta@@xemacs.org}.  You can also post to the newsgroup
+comp.emacs.xemacs (or equivalentlt, send to the mailing list
+@email{xemacs@@xemacs.org}), but it is less likely that the developers
+will see it in a timely fashion.  @xref{Bugs,,, xemacs, the XEmacs
+User's Manual}, for more information on how to report bugs.
+@xref{Q1.4.2}, for more information on mailing lists relating to
+XEmacs.
 
-With XEmacs-20.2 use the @code{delbs} package:
+There are three ways to read the Bugs section.
 
-@lisp
-(require 'delbs)
-@end lisp
+@enumerate
+@item
+In a printed copy of the XEmacs manual.
 
-This will give you the functions @code{delbs-enable-delete-forward} to
-set things up, and @code{delbs-disable-delete-forward} to revert to
-``normal'' behavior.  Note that @code{delbackspace} package is obsolete.
+@item
+With Info.  First, start XEmacs.  From the menu, select
+@samp{Help->Info (Online Docs)->Info Contents} to enter Info, then
+click on @samp{XEmacs}, then on @samp{Bugs}.  Or, use the keyboard: do
+@kbd{C-h i} to enter Info, then @kbd{m XEmacs RET} to get to the Emacs
+manual, then @kbd{m Bugs RET} to get to the section on bugs.  Or use
+standalone Info in a like manner.  (Standalone Info is part of the
+Texinfo distribution, not part of the XEmacs distribution.)
 
-Starting with XEmacs-20.3 better solution is to set variable
-@code{delete-key-deletes-forward} to t.  You can also change this with
-Customize. Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Editing->Basics->Delete Key Deletes Forward} or
-type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
+@item
+By hand.  Do
+@example
+cat info/xemacs* | more "+/^File: xemacs.info,  Node: Bugs,"
+@end example
+@end enumerate
 
-Also see @ref{Q3.5.4}.
+@node Q2.4.2, Q2.4.3, Q2.4.1, Installation
+@unnumberedsubsec Q2.4.2: Help!  XEmacs just crashed on me!
 
-@node Q3.5.10, Q3.5.11, Q3.5.9, Customization
-@unnumberedsubsec Q3.5.10: Can I turn on @dfn{sticky} modifier keys?
+First of all, don't panic.  Whenever XEmacs crashes, it tries extremely
+hard to auto-save all of your files before dying.  (The main time that
+this will not happen is if the machine physically lost power or if you
+killed the XEmacs process using @code{kill -9}).  The next time you try
+to edit those files, you will be informed that a more recent auto-save
+file exists.  You can use @kbd{M-x recover-file} to retrieve the
+auto-saved version of the file.
 
-Yes, with @code{(setq modifier-keys-are-sticky t)}.  This will give the
-effect of being able to press and release Shift and have the next
-character typed come out in upper case.  This will affect all the other
-modifier keys like Control and Meta as well.
+You can use the command @kbd{M-x recover-session} after a crash to pick
+up where you left off.
 
-@email{ben@@xemacs.org, Ben Wing} writes:
+Now, XEmacs is not perfect, and there may occasionally be times, or
+particular sequences of actions, that cause it to crash.  If you can
+come up with a reproducible way of doing this (or even if you have a
+pretty good memory of exactly what you were doing at the time), the
+maintainers would be very interested in knowing about it.  The best
+way to report a bug is using @kbd{M-x report-emacs-bug} (or by
+selecting @samp{Send Bug Report...} from the Help menu).  If that
+won't work (e.g. you can't get XEmacs working at all), send ordinary
+mail to @email{xemacs-beta@@xemacs.org}. @emph{MAKE SURE} to include
+the output from the crash, especially including the Lisp backtrace, as
+well as the XEmacs configuration from @kbd{M-x describe-installation}
+(or equivalently, the file @file{Installation} in the top of the build
+tree).  Note that the developers do @emph{not} usually follow
+@samp{comp.emacs.xemacs} on a regular basis; thus, this is better for
+general questions about XEmacs than bug reports.
 
-@quotation
-One thing about the sticky modifiers is that if you move the mouse out
-of the frame and back in, it cancels all currently ``stuck'' modifiers.
-@end quotation
+If at all possible, include a C stack backtrace of the core dump that
+was produced.  This shows where exactly things went wrong, and makes
+it much easier to diagnose problems.  To do this under Unix and Mac OS
+X, you need to locate the core file (it's called @file{core}, and is
+usually sitting in the directory that you started XEmacs from, or your
+home directory if that other directory was not writable).  Then, go to
+that directory and execute a command like:
 
-@node Q3.5.11, Q3.6.1, Q3.5.10, Customization
-@unnumberedsubsec Q3.5.11: How do I map the arrow keys?
-@c New
-Say you want to map @kbd{C-@key{right}} to forward-word:
+@example
+gdb `which xemacs` core
+@end example
 
-@email{sds@@usa.net, Sam Steingold} writes:
+and then issue the command @samp{where} to get the stack backtrace.  You
+might have to use @code{dbx} or some similar debugger in place of
+@code{gdb}.  If you don't have any such debugger available, complain to
+your system administrator.
 
-@quotation
-@lisp
-; both XEmacs and Emacs
-(define-key global-map [(control right)] 'forward-word)
-@end lisp
-or
-@lisp
-; Emacs only
-(define-key global-map [C-right] 'forward-word)
-@end lisp
-or
-@lisp
-; ver > 20, both
-(define-key global-map (kbd "C-<right>") 'forward-word)
-@end lisp
-@end quotation
+It's possible that a core file didn't get produced or the stack trace
+from gdb is garbage, in which case you're out of luck unless you can
+reproduce the bug.  A nonexistent core file can happen in some
+circumstances on some operating systems, depending on what exactly
+triggered the crash.  It's also possible, however, that your limits
+are set to turn them off.  You may be able to reenable them using a
+command like @samp{unlimit coredumpsize} or @samp{ulimit -c}. (To find
+out how your limits are set, use the command @samp{limit}.) However, if
+you didn't explicitly set your limits this way, go complain to your
+system administrator and tell him not to disable core files by
+default.
+
+A garbaged stack trace can happen for various reasons.  Some versions
+of gdb are broken on certain operating systems and aren't able to read
+the core file.  It's also possible that the stack got overwritten
+during the crash.  A very simple reason, however, is that your version
+of XEmacs was compiled without debugging information or had the
+debugging information stripped.  A compilation with optimization can
+also result in partly or completely garbaged stack trace.  In such
+cases, you will need to recompile XEmacs with debugging information
+and without optimization; @xref{Q2.4.4, How to debug an XEmacs problem
+with a debugger}.  Note also that core files currently don't work at
+all under Cygwin, and the only way to get a backtrace is to run XEmacs
+from gdb.
+
+If you cannot get a backtrace from the core dump, but can reproduce
+the problem, try running XEmacs under gdb.  The goal is to get clean C
+and Lisp backtraces and submit a bug report including full
+configuration information as described above, as this will greatly
+assist in the process of tracking down the bug.  However, even partial
+information is better than none.  The process of getting backtraces
+from gdb is described in detail in @ref{Q2.4.4, How to debug an XEmacs
+problem with a debugger}.
 
+If you're under Microsoft Windows, you're out of luck unless you happen
+to have a debugging aid installed on your system, for example Visual
+C++.  In this case, the crash will result in a message giving you the
+option to enter a debugger (for example, by pressing @samp{Cancel}).  Do
+this and locate the stack-trace window. (If your XEmacs was built
+without debugging information, the stack trace may not be very useful.)
 
+When making a problem report make sure that:
 
-@node Q3.6.1, Q3.6.2, Q3.5.11, Customization
-@unnumberedsec 3.6: The Cursor
-@unnumberedsubsec Q3.6.1: Is there a way to make the bar cursor thicker?
+@enumerate
+@item
+Report @strong{all} of the information output by XEmacs during the
+crash.
 
-I'd like to have the bar cursor a little thicker, as I tend to "lose" it
-often.
+@item
+You mention what O/S and Hardware you are running XEmacs on.
 
-For a 1 pixel bar cursor, use:
+@item
+What version of XEmacs you are running.
 
-@lisp
-(setq bar-cursor t)
-@end lisp
+@item
+What build options you are using.
 
-For a 2 pixel bar cursor, use:
+@item
+If the problem is related to graphics and you are running Unix or Mac
+OS X, we will also need to know what version of the X Window System
+you are running, and what window manager you are using.
 
-@lisp
-(setq bar-cursor 'anything-else)
-@end lisp
+@item
+If the problem happened on a TTY, please include the terminal type.
 
-Starting with XEmacs-20.3 you can also change these with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
-@kbd{M-x customize @key{RET} display @key{RET}}.
+@item
+Try very hard to get both C and Lisp backtraces, as described above.
+@end enumerate
 
-You can use a color to make it stand out better:
+Much of the information above is automatically generated by @kbd{M-x
+report-emacs-bug}.  Even more, and often useful, information can be
+generated by redirecting the output of @code{make} and @code{make check}
+to a file (@file{beta.err} is the default used by @code{build-report}),
+and executing @kbd{M-x build-report}.
 
-@example
-Emacs*cursorColor:      Red
-@end example
 
-@node Q3.6.2, Q3.6.3, Q3.6.1, Customization
-@unnumberedsubsec Q3.6.2: Is there a way to get back the block cursor?
+@node Q2.4.3, Q2.4.4, Q2.4.2, Installation
+@unnumberedsubsec Q2.4.3: XEmacs crashes and I compiled it myself.
 
-@lisp
-(setq bar-cursor nil)
-@end lisp
+There have been a variety of reports of crashes due to compilers with
+buggy optimizers.  If you are compiling with optimization, consider
+turning it off (@pxref{Q2.4.4, How to debug an XEmacs problem with a
+debugger}) and recompiling.
 
-Starting with XEmacs 20.3 you can also change this with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
-@kbd{M-x customize @key{RET} display @key{RET}}.
+Please see the @file{PROBLEMS} file that comes with XEmacs (it's in
+the top-level source directory) to read what it says about your
+platform.
 
-@node Q3.6.3, Q3.7.1, Q3.6.2, Customization
-@unnumberedsubsec Q3.6.3: Can I make the cursor blink?
+If you compiled XEmacs 21.4 or ealier using @samp{--use-union-type}, or
+21.5 or later using @samp{--enable-union-type} (or in either case used
+the option @samp{USE_UNION_TYPE} in @file{config.inc} under Windows),
+try recompiling again without it.  The union type has been known to
+trigger compiler errors in a number of cases.
 
-Yes, like this:
+@node Q2.4.4, Q2.4.5, Q2.4.3, Installation
+@unnumberedsubsec Q2.4.4: How to debug an XEmacs problem with a debugger
 
-@lisp
-(blink-cursor-mode)
-@end lisp
+If XEmacs does crash on you, one of the most productive things you can
+do to help get the bug fixed is to poke around a bit with the debugger.
+Here are some hints:
 
-This function toggles between a steady cursor and a blinking cursor.
-You may also set this mode from the menu bar by selecting @samp{Options
-=> Frame Appearance => Blinking Cursor}.  Remember to save options.
+@itemize @bullet
+@item
+First of all, if the crash is at all reproducible, consider very
+strongly recompiling your XEmacs with debugging symbols and with no
+optimization (e.g. with GCC use the compiler flags @samp{-g -O0} --
+that's an "oh" followed by a zero), and with the configure options
+@samp{--debug=yes} and @samp{--error-checking=all}
+(@samp{--enable-debug=yes} and @samp{--enable-error-checking=all} on
+XEmacs 21.5 or later).  This will make your XEmacs run somewhat slower,
+but you are a lot more likely to catch the problem earlier (closer to
+its source).  It makes it a lot easier to determine what's going on with
+a debugger.  The way to control the compiler flags is with the
+configuration option @samp{--cflags} (@samp{--with-cflags} in 21.5).  If
+you have a recent version of 21.5, you should use
+@samp{--without-optimization} in preference to directly setting
+@samp{--cflags}.
 
-@node Q3.7.1, Q3.7.2, Q3.6.3, Customization
-@unnumberedsec 3.7: The Mouse and Highlighting
-@unnumberedsubsec Q3.7.1: How can I turn off Mouse pasting?
+@item
+If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie
+process), or it's inconvenient to run XEmacs again because XEmacs is
+already running or is running in batch mode as part of a bunch of
+scripts, you may be able to attach to the existing process with your
+debugger.  Under Unix and Mac OS X, the typical way to do this is to
+first use some variant of the @samp{ps} command to figure out the
+process ID of XEmacs, for example @samp{ps -auxww | grep xemacs} under
+a BSD variant, @samp{ps -elf | grep xemacs} under Linux or System V,
+or @samp{ps -aW | grep xemacs} under Cygwin.  Then run
 
-I keep hitting the middle mouse button by accident and getting stuff
-pasted into my buffer so how can I turn this off?
+@example
+gdb /path/to/xemacs/xemacs ####
+@end example
 
-Here is an alternative binding, whereby the middle mouse button selects
-(but does not cut) the expression under the mouse. Clicking middle on a
-left or right paren will select to the matching one.  Note that you can
-use @code{define-key} or @code{global-set-key}.
+Where @code{####} is the process id of your XEmacs. (If you're not
+sure, try using @samp{which xemacs}.) When gdb attaches, the xemacs
+will stop and you can type @samp{where} in gdb to get a stack trace as
+usual.  To get things moving again, you can just type @samp{quit} in
+gdb.  It'll tell you the program is running and ask if you want to
+quit anyways.  Say @samp{y} and it'll quit and have your emacs
+continue from where it was at.
 
-@lisp
-(defun mouse-set-point-and-select (event)
-  "Sets the point at the mouse location, then marks following form"
-  (interactive "@@e")
-  (mouse-set-point event)
-  (mark-sexp 1))
-(define-key global-map [button2] 'mouse-set-point-and-select)
-@end lisp
+If you're running another debugger, a similar method may work, or you
+may have to run the debugger first and then use the @code{attach}
+command or something similar.
 
-@node Q3.7.2, Q3.7.3, Q3.7.1, Customization
-@unnumberedsubsec Q3.7.2: How do I set control/meta/etc modifiers on mouse buttons?
+Under Microsoft Windows, use the menu item @samp{Build->Start
+Debug->Attach to Process...} and select the XEmacs process from the list
+given.
 
-Use, for instance, @code{[(meta button1)]}. For example, here is a common
-setting for Common Lisp programmers who use the bundled @code{ilisp}
-package, whereby meta-button1 on a function name will find the file where
-the function name was defined, and put you at that location in the source
-file.
+@item
+If you're able to run XEmacs under a debugger and reproduce the crash,
+here are some things you can do:
 
-[Inside a function that gets called by the lisp-mode-hook and
-ilisp-mode-hook]
+@item
+If XEmacs is hitting an assertion failure, put a breakpoint on
+@code{assert_failed()}.
 
-@lisp
-(local-set-key [(meta button1)] 'edit-definitions-lisp)
-@end lisp
+@item
+If XEmacs is hitting some weird Lisp error that's causing it to crash
+(e.g. during startup), put a breakpoint on @code{signal_1()}---this is
+declared static in @file{eval.c}.
 
-@node Q3.7.3, Q3.7.4, Q3.7.2, Customization
-@unnumberedsubsec Q3.7.3: Clicking the left button does not do anything in buffer list.
+@item
+If XEmacs is outputting lots of X errors, put a breakpoint on
+@code{x_error_handler()}; that will tell you which call is causing
+them.  Note that the result may not be very useful by default because
+X Windows normally operates asynchronously: A bunch of commands are
+buffered up and then sent to the server all at once.  This greatly
+improves performance over a network but means that an error may not be
+reported until the server receives the commands, which can be long
+after XEmacs made the erroneous calls.  For best results, you need to
+make the X server synchronous before getting the backtrace.  This can
+be done by starting XEmacs with the @samp{-sync} option or executing
+the Lisp code @code{(x-debug-mode t)}.
 
-I do @kbd{C-x C-b} to get a list of buffers and the entries get
-highlighted when I move the mouse over them but clicking the left mouse
-does not do anything.
+@item
+Internally, you will probably see lots of variables that hold objects of
+type @code{Lisp_Object}.  These are references to Lisp objects.
+Printing them out with the debugger probably won't be too
+useful---you'll likely just see a number.  To decode them, do this:
 
-Use the middle mouse button.
+@example
+call debug_print (OBJECT)
+@end example
 
-@node Q3.7.4, Q3.7.5, Q3.7.3, Customization
-@unnumberedsubsec Q3.7.4: How can I get a list of buffers when I hit mouse button 3?
+where @var{OBJECT} is whatever you want to decode (it can be a variable,
+a function call, etc.).  This uses the Lisp printing routines to out a
+readable representation on the TTY from which the xemacs process was
+invoked.
 
-The following code will replace the default popup on button3:
+Under 21.5 and later, @code{dp} is defined as an easier-to-type equivalent
+of @code{debug_print}.  You can also try @code{dpa} if you can't see
+the output from @code{debug_print} (this will return a string containing
+the output), or use @code{debug_p3} if @code{debug_print} itself triggers
+a crash (this is a less comprehensive but super-safe way to print out
+a Lisp object).
 
-@lisp
-(global-set-key [button3] 'popup-buffer-menu)
-@end lisp
+@item
+If you want to get a Lisp backtrace showing the Lisp call
+stack, do this:
 
-@node Q3.7.5, Q3.7.6, Q3.7.4, Customization
-@unnumberedsubsec Q3.7.5: Why does cut-and-paste not work between XEmacs and a cmdtool?
+@example
+call debug_backtrace ()
+@end example
 
-We don't know.  It's a bug.  There does seem to be a work-around,
-however.  Try running xclipboard first.  It appears to fix the problem
-even if you exit it.  (This should be mostly fixed in 19.13, but we
-haven't yet verified that).
+Under 21.5 and later, @code{db} is defined as an easier-to-type equivalent
+of @code{debug_backtrace}.
 
-@node Q3.7.6, Q3.7.7, Q3.7.5, Customization
-@unnumberedsubsec Q3.7.6: How I can set XEmacs up so that it pastes where the text cursor is?
+@item
+Using @code{debug_print} and @code{debug_backtrace} has two
+disadvantages - they can only be used with a running (including hung
+or zombie) xemacs process, and they do not display the internal C
+structure of a Lisp Object.  Even if all you've got is a core dump,
+all is not lost.
 
-By default XEmacs pastes X selections where the mouse pointer is.  How
-do I disable this?
+If you're using GDB, there are some macros in the file
+@file{src/.gdbinit} in the XEmacs source distribution that should make
+it easier for you to decode Lisp objects.  This file is automatically
+read by gdb if gdb is run in the directory where xemacs was built, and
+contains these useful macros to inspect the state of xemacs:
 
-Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank
-@key{RET}}.
+@table @code
+@item pobj
+Usage: pobj lisp_object @*
+Print the internal C representation of a lisp object.
 
-To get XEmacs to paste at the text cursor, add this your @file{init.el}/@file{.emacs}:
+@item xtype
+Usage: xtype lisp_object @*
+Print the Lisp type of a lisp object.
 
-@lisp
-(setq mouse-yank-at-point t)
-@end lisp
+@item lbt
+Usage: lbt @*
+Print the current Lisp stack trace.
+Requires a running xemacs process.  (It works by calling the db
+routine described above.)
 
-Starting with XEmacs-20.2 you can also change this with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...} or type
-@kbd{M-x customize @key{RET} mouse @key{RET}}.
+@item ldp
+Usage: ldp lisp_object @*
+Print a Lisp Object value using the Lisp printer.
+Requires a running xemacs process.  (It works by calling the dp
+routine described above.)
 
-@node Q3.7.7, Q3.7.8, Q3.7.6, Customization
-@unnumberedsubsec Q3.7.7: How do I select a rectangular region?
+@item run-temacs
+Usage: run-temacs @*
+Run temacs interactively, like xemacs.
+Use this with debugging tools (like purify) that cannot deal with dumping,
+or when temacs builds successfully, but xemacs does not.
 
-Just select the region normally, then use the rectangle commands (e.g.
-@code{kill-rectangle} on it.  The region does not highlight as a
-rectangle, but the commands work just fine.
+@item dump-temacs
+Usage: dump-temacs @*
+Run the dumping part of the build procedure.
+Use when debugging temacs, not xemacs!
+Use this when temacs builds successfully, but xemacs does not.
 
-To actually sweep out rectangular regions with the mouse you can use
-@code{mouse-track-do-rectangle} which is assigned to @kbd{M-button1}.
-Then use rectangle commands.
+@item check-xemacs
+Usage: check-xemacs @*
+Run the test suite.  Equivalent to 'make check'.
 
-You can also do the following to change default behavior to sweep out
-rectangular regions:
+@item check-temacs
+Usage: check-temacs @*
+Run the test suite on temacs.  Equivalent to 'make check-temacs'.
+Use this with debugging tools (like purify) that cannot deal with dumping,
+or when temacs builds successfully, but xemacs does not.
+@end table
 
-@lisp
-(setq mouse-track-rectangle-p t)
-@end lisp
+If you are using Sun's @file{dbx} debugger, there is an equivalent file
+@file{src/.dbxrc}, which defines the same commands for dbx.
 
-Starting with XEmacs-20.2 you can also change this with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...} or type
-@kbd{M-x customize @key{RET} mouse @key{RET}}.
+@item
+If you're using a debugger to get a C stack backtrace and you're seeing
+stack traces with some of the innermost frames mangled, it may be due to
+dynamic linking. (This happens especially under Linux.) Consider
+reconfiguring with @samp{--dynamic=no} (@samp{--with-dynamic=no} in 21.5
+or later).  Also, sometimes (again under Linux), stack backtraces of
+core dumps will have the frame where the fatal signal occurred mangled;
+if you can obtain a stack trace while running the XEmacs process under a
+debugger, the stack trace should be clean.
 
+@email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so
+version 1.8 if dynamic linking and debugging is a problem on Linux.
 
-@example
- mouse-track-do-rectangle: (event)
-   -- an interactive compiled Lisp function.
- Like `mouse-track' but selects rectangles instead of regions.
-@end example
+@item
+If you're using a debugger to get a C stack backtrace and you're
+getting a completely mangled and bogus stack trace, it's probably due to
+one of the following:
 
-@node Q3.7.8, Q3.8.1, Q3.7.7, Customization
-@unnumberedsubsec Q3.7.8: Why does @kbd{M-w} take so long?
+@enumerate a
+@item
+Your executable has been stripped.  Bad news.  Tell your sysadmin not to
+do this---it doesn't accomplish anything except to save a bit of disk
+space, and makes debugging much much harder.
 
-It actually doesn't.  It leaves the region visible for a second so that
-you can see what area is being yanked.  If you start working, though, it
-will immediately complete its operation.  In other words, it will only
-delay for a second if you let it.
+@item
+Your stack is getting trashed.  Debugging this is hard; you have to do a
+binary-search type of narrowing down where the crash occurs, until you
+figure out exactly which line is causing the problem.  Of course, this
+only works if the bug is highly reproducible.  Also, in many cases if
+you run XEmacs from the debugger, the debugger can protect the stack
+somewhat.  However, if the stack is being smashed, it is typically the
+case that there is a wild pointer somewhere in the program, often quite
+far from where the crash occurs.
 
-@node Q3.8.1, Q3.8.2, Q3.7.8, Customization
-@unnumberedsec 3.8: The Menubar and Toolbar
-@unnumberedsubsec Q3.8.1: How do I get rid of the menu (or menubar)?
+@item
+If your stack trace has exactly one frame in it, with address 0x0, this
+could simply mean that XEmacs attempted to execute code at that address,
+e.g. through jumping to a null function pointer.  Unfortunately, under
+those circumstances, GDB under Linux doesn't know how to get a stack
+trace. (Yes, this is the fourth Linux-related problem I've mentioned.  I
+have no idea why GDB under Linux is so bogus.  Complain to the GDB
+authors, or to comp.os.linux.development.system.) Again, you'll have to
+use the narrowing-down process described above.
 
-@c If you are running XEmacs 19.13 or earlier, add this command to your
-@c @file{init.el}/@file{.emacs}.
-@c
-@c @lisp
-@c (set-menubar nil)
-@c @end lisp
-@c
-@c Starting with XEmacs 19.14 the preferred method is:
-@c
-@lisp
-(set-specifier menubar-visible-p nil)
-@end lisp
+@item
+You will get a Lisp backtrace output when XEmacs crashes, so you'll have
+something useful.
 
-@node Q3.8.2, Q3.8.3, Q3.8.1, Customization
-@unnumberedsubsec Q3.8.2: Can I customize the basic menubar?
+@end enumerate
 
-For an extensive menubar, add this line to your @file{init.el}/@file{.emacs}:
+@item
+If you compile with the newer gcc variants gcc-2.8 or egcs, you will
+also need gdb 4.17 or above.  Earlier releases of gdb can't handle the
+debug information generated by the newer compilers.
 
-@lisp
-(load "big-menubar")
-@end lisp
+@item
+In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named
+@file{src/gdbinit}.  This had the disadvantage of not being sourced
+automatically by gdb, so you had to set that up yourself.
 
-If you'd like to write your own, this file provides as good a set of
-examples as any to start from.  The file is located in edit-utils
-package. 
+@item
+If you are running Microsoft Windows, the the file @file{nt/README} for
+further information about debugging XEmacs.
 
-@node Q3.8.3, Q3.8.4, Q3.8.2, Customization
-@unnumberedsubsec Q3.8.3: How do I control how many buffers are listed in the menu @code{Buffers List}?
+@end itemize
 
-Add the following to your @file{init.el}/@file{.emacs} (suit to fit):
+@node Q2.4.5, Q2.4.6, Q2.4.4, Installation
+@unnumberedsubsec Q2.4.5: I get a cryptic error message when trying to do something.
 
-@lisp
-(setq buffers-menu-max-size 20)
-@end lisp
+When I try to use some particular option of some particular package, I
+get a cryptic error message in the minibuffer.
+
+If the message went by too quickly, use @samp{Help->Recent Messages}
+from the menubar (or type @kbd{C-h l}) to see recent messages.
+
+If you can't figure out what's going on, select
+@samp{Options->Troubleshooting->Debug on Error} from the menubar (or
+type @kbd{M-:} then @kbd{(setq debug-on-error t)}) then try and make
+the error happen again.  This will put in the debugger (you can get
+out of this and continue what you were doing before by typing @kbd{c})
+and give you a backtrace that may be enlightening.  If not, try
+reading through this FAQ; if that fails, you could try posting to
+@samp{comp.emacs.xemacs} (making sure to include the backtrace) and
+someone may be able to help.  If you can identify which XEmacs Lisp
+source file the error is coming from you can get a more detailed stack
+backtrace by doing the following:
 
-For no limit, use an argument of @samp{nil}.
+@enumerate
+@item
+Visit the .el file in an XEmacs buffer.
 
-Starting with XEmacs-20.3 you can also change this with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...} or
-type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}.
+@item
+Issue the command @kbd{M-x eval-current-buffer}.
 
-@node Q3.8.4, Q3.8.5, Q3.8.3, Customization
-@unnumberedsubsec Q3.8.4: Resources like @code{Emacs*menubar*font} are not working?
+@item
+Reproduce the error.
+@end enumerate
 
-I am trying to use a resource like @code{Emacs*menubar*font} to set the
-font of the menubar but it's not working.
-
-In Motif, the use of @samp{font} resources is obsoleted in order to
-support internationalization.  If you are using the real Motif menubar,
-this resource is not recognized at all; you have to say:
+For more information on debugging Lisp code, @xref{Debugging,,,
+lispref, XEmacs Lisp Reference Manual}.
+
+@node Q2.4.6, Q2.4.7, Q2.4.5, Installation
+@unnumberedsubsec Q2.4.6: XEmacs hangs when I try to do something.
+
+XEmacs might just be slow; some operations take a long time.  XEmacs
+may also be waiting on a response from the network, for example when
+you are trying to send mail.
+
+You can usually interrupt XEmacs by typing @kbd{C-g}.  If not (for
+example, Lisp code explicitly disabled this by setting
+@code{inhibit-quit}), you can use the "critical quit" mechanism by
+typing @kbd{Control-Shift-G}.  This should also pop you into the
+debugger and give you a backtrace, which can tell you where the
+problem is (@pxref{Q2.4.4, How to debug an XEmacs problem with a
+debugger}). (Note that setting @code{debug-on-quit} or selecting
+@samp{Options->Troubleshooting->Debug on Quit} will also cause regular
+@kbd{C-g} to enter the debugger and give you a backtrace.)
+
+If you can't interrupt XEmacs this way, or for some reason XEmacs is
+not talking to the keyboard, you can try sending the @samp{SIGINT}
+signal using the @samp{kill} command.
+
+If the Lisp backtrace isn't enlightening, or if XEmacs is so hung that
+you can't interrupt it at all, you could try attaching to the process
+and getting a C stack backtrace.  @xref{Q2.4.4, How to debug an XEmacs
+problem with a debugger}.
+
+@node Q2.4.7, Q2.4.8, Q2.4.6, Installation
+@unnumberedsubsec Q2.4.7: I get an error message when XEmacs is running in batch mode.
+
+Typically this happens when you are trying to compile some Elisp code.
+If you are doing this as part of XEmacs or the XEmacs packages, you
+should automatically get a backtrace, which can help you determine the
+source of the problem.  In other cases, you can get equivalent results
+by setting the environment variable @samp{XEMACSDEBUG} to @samp{(setq
+stack-trace-on-error t load-always-display-messages t
+load-ignore-out-of-date-elc-files t load-show-full-path-in-messages
+t)} (this needs to be all on one line; to set an environment variable,
+use @samp{export XEMACSDEBUG='FOO'} under @samp{bash}, @samp{zsh},
+etc. or @samp{setenv XEMACSDEBUG 'FOO'} under @samp{csh} and
+@samp{tcsh}).  @samp{XEMACSDEBUG} specifies Lisp code that will be
+executed at startup time.
+
+If the backtrace is not sufficiently useful in helping you diagnose
+the problem, you should consider using a debugger such as GDB.
+@xref{Q2.4.4, How to debug an XEmacs problem with a debugger}.  You
+probably want to set a breakpoint on @code{signal_1}.  Since such
+errors often occur during compiling, which is often triggered by a
+complex command run from a make suite, it may be easier to attach to
+the process once it's running.
+
+Under Microsoft Windows (and perhaps other operating systems), there is
+another useful trick you can do if you have configured with debugging
+support (configure option @samp{--debug} (@samp{--with-debug} in 21.5)
+or setting @samp{DEBUG_XEMACS} in @file{nt/config.inc}).  Set the
+environment variable @samp{XEMACSDEBUG} (as described above) to
+@samp{(setq debug-on-error t)}.  Then, when an error occurs
+noninteractively, instead of trying to invoke the Lisp debugger (which
+obviously won't work), XEmacs will break out to a C debugger using
+@code{(force-debugging-signal t)}.  @emph{NOTE}: This runs
+@code{abort()}!!! (As well as and after executing INT 3 under MS
+Windows, which should invoke a debugger if it's active.) This is
+guaranteed to kill XEmacs! (But in this situation, XEmacs is about to
+die anyway, and if no debugger is present, this will usefully dump
+core.)
+
+@node Q2.4.8, Q2.4.9, Q2.4.7, Installation
+@unnumberedsubsec Q2.4.8: The keyboard or mouse is not working properly, or I have some other event-related problem.
+
+XEmacs has various facilities for debugging event handling.
+
+First, try setting the variable @code{debug-emacs-events} to non-zero.
+This will output various information showing which events are being
+received and how they are being translated.  This may show you, for
+example, that a key command is getting intercepted using
+@code{key-translation-map}; this problem can otherwise be very tricky
+to debug.
+
+Under X, you can see exactly which events are being received from the
+window system by setting @code{x-debug-events} to non-zero. (The value
+@samp{1} gives you regular output, and @samp{2} gives you verbose
+output, including all parameters.)
+
+A similar facility exists under MS Windows: Set
+@code{debug-mswindows-events} to non-zero. (The value @samp{1} gives
+you regular output.  The value @samp{2} gives you verbose output,
+including all parameters.  The value @samp{3} gives you
+super-gorily-detailed output.)
+
+@node Q2.4.9, Q2.4.10, Q2.4.8, Installation
+@unnumberedsubsec Q2.4.9: @kbd{C-g} doesn't work for me.  Is it broken?
 
-@example
-Emacs*menubar*fontList: FONT
-@end example
+@kbd{C-g} does work for most people in most circumstances.  If it
+doesn't, there are two possible explanations:
 
-If you are using the Lucid menubar, for backward compatibility with
-existing user configurations, the @samp{font} resource is recognized.
-Since this is not supported by Motif itself, the code is a kludge and
-the @samp{font} resource will be recognized only if the @samp{fontList}
-resource resource is unset.  This means that the resource
+@enumerate
+@item
+XEmacs is hung in a way that prevents @kbd{C-g} from working.  This
+can happen when code is wrapped with a binding of @code{inhibit-quit}
+to @code{t}; you should still be able interrupt XEmacs using "critical
+quit".  On the other hand, XEmacs may be seriously wedged. (If you're
+lucky, sending @samp{SIGINT} to the XEmacs process will interrupt it.) 
+@xref{Q2.4.6, XEmacs hangs when I try to do something.}.
 
-@example
-*fontList: FONT
-@end example
+@item
+@kbd{C-g} is indeed broken on your system.  To test, try executing
+@code{(while t)} from the @samp{*scratch*} buffer.  If @kbd{C-g}
+doesn't interrupt, then it's broken.  This used to happen with systems
+where @samp{SIGIO} was broken, but @samp{BROKEN_SIGIO} wasn't defined.
+However, there may not be very many such systems nowadays.
+@end enumerate
 
-will override
+@node Q2.4.10, Q2.4.11, Q2.4.9, Installation
+@unnumberedsubsec Q2.4.10: How do I debug process-related problems?
+
+Under MS Windows, you can set the variable
+@code{debug-mswindows-process-command-lines} to non-@samp{nil} to get
+information on exactly what is getting passed to a process.  This can
+be useful in determining problems with quoting. (Under Unix, a process
+receives each argument separately, but under MS Windows a single
+command line is received, and arguments with spaces or other special
+characters in them must be quoted.  Unfortunately this means that each
+process, potentially at least, has its own quoting conventions, and
+the code to process quoting conventions in @file{cmd.exe}, the Visual
+C++ startup code and the like is baroque and poorly documented.
+XEmacs uses the variable
+@code{mswindows-construct-process-command-line-alist} to construct a
+command line from a list of arguments based on the command to be run,
+but it is (and cannot be) a perfect solution.)
+
+@node Q2.4.11, Q2.4.12, Q2.4.10, Installation
+@unnumberedsubsec Q2.4.11: XEmacs is outputting lots of X errors.
 
-@example
-Emacs*menubar*font: FONT
-@end example
+If this is happening, we would very much like to know what's causing
+them.  To find this out, see @ref{Q2.4.4, How to debug an XEmacs
+problem with a debugger}.  Try to get both a C and Lisp backtrace, and
+send them along with the full error output to
+@email{xemacs-beta@@xemacs.org}.
+
+@node Q2.4.12, Q2.5.1, Q2.4.11, Installation
+@unnumberedsubsec Q2.4.12: After upgrading, XEmacs won't do `foo' any more!
+
+You have been used to doing `foo', but now when you invoke it (or
+click the toolbar button or select the menu item), nothing (or an
+error) happens.  The simplest explanation is that you are missing a
+package that is essential to you.  You can either track it down and
+install it (there is a list of packages and brief descriptions of
+their contents in @file{etc/PACKAGES}), or install the `Sumo Tarball'
+(@pxref{Q2.1.2, How do I figure out which packages to install?}).
 
-even though the latter is more specific.
+@c #### should xref to XEmacs manual here
 
-In non-Motif configurations using @samp{--with-mule} and
-@samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet}
-resource @emph{instead of} the @code{font} resource.  The backward
-compatibility kludge was never implemented for non-Motif builds.
-Example:
+@unnumberedsec 2.5: Startup-Related Problems
 
-@example
-*fontSet: FONT
-@end example
+@node Q2.5.1, Q2.5.2, Q2.4.12, Installation
+@unnumberedsubsec Q2.5.1: XEmacs cannot connect to my X Terminal!
 
-@node Q3.8.5, Q3.9.1, Q3.8.4, Customization
-@unnumberedsubsec Q3.8.5: How can I bind a key to a function to toggle the toolbar?
+Help!  I can not get XEmacs to display on my Envizex X-terminal!
 
-Try something like:
+Try setting the @code{DISPLAY} variable using the numeric IP address of
+the host you are running XEmacs from.
 
-@lisp
-(defun my-toggle-toolbar ()
-  (interactive)
-  (set-specifier default-toolbar-visible-p
-                 (not (specifier-instance default-toolbar-visible-p))))
-(global-set-key "\C-xT" 'my-toggle-toolbar)
-@end lisp
+@node Q2.5.2, Q2.5.3, Q2.5.1, Installation
+@unnumberedsubsec Q2.5.2 Startup problems related to paths or package locations.
 
-There are redisplay bugs in 19.14 that may make the preceding result in
-a messed-up display, especially for frames with multiple windows.  You
-may need to resize the frame before XEmacs completely realizes the
-toolbar is really gone.
+First of all, if XEmacs can't find the packages, check to make sure
+that you put the packages in the right place, or that you told XEmacs
+where to look for the packages when you compiled it.  @xref{Q2.1.1}.
 
-Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct
-code.
+If something is still going wrong, or you get a startup warning about
+not being able to deduce some paths, you can get detailed information
+on the path-searching process at startup by setting the environment
+variable @samp{EMACSDEBUGPATHS} to a non-null value.  One thing to
+look for if you're having package problems is the value of
+@samp{configure-package-path}.  This corresponds to what was compiled
+into XEmacs using the @samp{--package-prefix} or @samp{--package-path}
+parameter (@pxref{Q2.1.1}).  If this has the value of @samp{nil},
+this means that no value was compiled into XEmacs using these parameters.
 
-@node Q3.9.1, Q3.9.2, Q3.8.5, Customization
-@unnumberedsec 3.9: Scrollbars
-@unnumberedsubsec Q3.9.1: How can I disable the scrollbar?
+@node Q2.5.3, Q2.5.4, Q2.5.2, Installation
+@unnumberedsubsec Q2.5.3: XEmacs won't start without network.
 
-To disable them for all frames, add the following line to
-your @file{.Xresources}:
+If XEmacs starts when you're on the network, but fails when you're not
+on the network, you may be missing a "localhost" entry in your
+@file{/etc/hosts} file.  The file should contain an entry like:
 
 @example
-Emacs.scrollBarWidth:  0
+127.0.0.1        localhost
 @end example
 
-Or select from the @code{Options} menu @code{Frame Appearance->Scrollbars}.
-Remember to save options.
-
-To turn the scrollbar off on a per-frame basis, use the following
-function:
+Add that line, and XEmacs will be happy.
 
-@lisp
-(set-specifier scrollbar-width 0 (selected-frame))
-@end lisp
+@node Q2.5.4, Q2.5.5, Q2.5.3, Installation
+@unnumberedsubsec Q2.5.4: Startup warnings about deducing proper fonts?
 
-You can actually turn the scrollbars on at any level you want by
-substituting for (selected-frame) in the above command.  For example, to
-turn the scrollbars off only in a single buffer:
+How can I avoid the startup warnings about deducing proper fonts?
 
-@lisp
-(set-specifier scrollbar-width 0 (current-buffer))
-@end lisp
-@c
-@c In XEmacs versions prior to 19.14, you had to use the hairier construct:
-@c
-@c @lisp
-@c (set-specifier scrollbar-width (cons (selected-frame) 0))
-@c @end lisp
+This is highly dependent on your installation, but try with the
+following font as your base font for XEmacs and see what it does:
 
-@node Q3.9.2, Q3.9.3, Q3.9.1, Customization
-@unnumberedsubsec Q3.9.2: How can one use resources to change scrollbar colors?
+@format
+-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
+@end format
 
-Here's a recap of how to use resources to change your scrollbar colors:
+More precisely, do the following in your resource file:
 
-@example
-! Motif scrollbars
+@format
+Emacs.default.attributeFont: \
+-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
+@end format
 
-Emacs*XmScrollBar.Background: skyblue
-Emacs*XmScrollBar.troughColor: lightgray
+If you just don't want to see the @samp{*Warnings*} buffer at startup
+time, you can set this:
 
-! Athena scrollbars
+@lisp
+(setq display-warning-minimum-level 'error)
+@end lisp
 
-Emacs*Scrollbar.Foreground: skyblue
-Emacs*Scrollbar.Background: lightgray
-@end example
+The buffer still exists; it just isn't in your face.
 
-Note the capitalization of @code{Scrollbar} for the Athena widget.
+@node Q2.5.5, Q2.5.6, Q2.5.4, Installation
+@unnumberedsubsec Q2.5.5: Warnings from incorrect key modifiers.
 
-@node Q3.9.3, Q3.9.4, Q3.9.2, Customization
-@unnumberedsubsec Q3.9.3: Moving the scrollbar can move the point; can I disable this?
+The following information comes from the @file{PROBLEMS} file that comes
+with XEmacs.
 
-When I move the scrollbar in an XEmacs window, it moves the point as
-well, which should not be the default behavior.  Is this a bug or a
-feature?  Can I disable it?
+If you're having troubles with HP/UX it is because HP/UX defines the
+modifiers wrong in X.  Here is a shell script to fix the problem; be
+sure that it is run after VUE configures the X server.
 
-The current behavior is a feature, not a bug.  Point remains at the same
-buffer position as long as that position does not scroll off the screen.
-In that event, point will end up in either the upper-left or lower-left
-hand corner.
+@example
+#! /bin/sh
+xmodmap 2> /dev/null - << EOF
+keysym Alt_L = Meta_L
+keysym Alt_R = Meta_R
+EOF
 
-This cannot be changed.
+xmodmap - << EOF
+clear mod1
+keysym Mode_switch = NoSymbol
+add mod1 = Meta_L
+keysym Meta_R = Mode_switch
+add mod2 = Mode_switch
+EOF
+@end example
 
-@node Q3.9.4, Q3.10.1, Q3.9.3, Customization
-@unnumberedsubsec Q3.9.4: How can I turn off automatic horizontal scrolling in specific modes?
+@node Q2.5.6,  , Q2.5.5, Installation
+@unnumberedsubsec Q2.5.6: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
 
-Do @code{(setq truncate-lines t)} in the mode-hooks for any modes
-in which you want lines truncated.
+Yes.
 
-More precisely: If @code{truncate-lines} is nil, horizontal scrollbars
-will never appear.  Otherwise, they will appear only if the value of
-@code{scrollbar-height} for that buffer/window/etc. is non-zero.  If you
-do
+The console was there because @file{temacs} (and in turn, @file{xemacs})
+was a console application, and Windows typically creates a new
+console for a console process unless the creating process requests that
+one isn't created.  This used to be fixed with @file{runemacs}, a small
+Windows application that existed merely to start @file{xemacs}, stating
+that it didn't want a console.
 
-@lisp
-(set-specifier scrollbar-height 0)
-@end lisp
+XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
+application.  The explanation of what that means is included for
+educational value.
 
-then horizontal scrollbars will not appear in truncated buffers unless
-the package specifically asked for them.
+When building an application to be run in a Win32 environment, you must
+state which sub-system it is to run in.  Valid subsystems include
+"console" and "gui".  The subsystem you use affects the run time
+libraries linked into your application, the start up function that is
+run before control is handed over to your application, the entry point
+to your program, and how Windows normally invokes your program. (Console
+programs automatically get a console created for them at startup if
+their stdin/stdout don't point anywhere useful, which is the case when
+run from the GUI.  This is a stupid design, of course -- instead, the
+console should get created only when the first I/O actually occurs!
+GUI programs have an equally stupid design: When called from
+@file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to
+point nowhere useful, even though the command shell has its own
+stdin/stdout.  It's as if someone who had learned a bit about stdio but
+had no actual knowledge of interprocess communication designed the
+scheme; unfortunately, the whole process-communication aspect of the
+Win32 API is equally badly designed.) For example, the entry point for a
+console app is "main" (which is what you'd expect for a C/C++ program),
+but the entry point for a "gui" app is "WinMain".  This confuses and
+annoys a lot of programmers who've grown up on Unix systems, where the
+kernel doesn't really care whether your application is a gui program or
+not.
 
-@node Q3.10.1, Q3.10.2, Q3.9.4, Customization
-@unnumberedsec 3.10: Text Selections
-@unnumberedsubsec Q3.10.1: How can I turn off or change highlighted selections?
+For reasons not altogether clear, and are lost in the mists of time and
+tradition, XEmacs on Win32 started out as a console application, and
+therefore a console was automatically created for it. (It may have been
+made a console application partly because a console is needed in some
+circumstances, especially under Win95, to interrupt, terminate, or send
+signals to a child process, and because of the bogosity mentioned above
+with GUI programs and the standard command shell.  Currently, XEmacs
+just creates and immediately hides a console when necessary, and
+works around the "no useful stdio" problem by creating its own console
+window as necessary to display messages in.)
 
-The @code{zmacs} mode allows for what some might call gratuitous
-highlighting for selected regions (either by setting mark or by using
-the mouse).  This is the default behavior.  To turn off, add the
-following line to your @file{init.el}/@file{.emacs} file:
+@node Editing, Display, Installation, Top
+@unnumbered 3 Editing Functions
 
-@lisp
-(setq zmacs-regions nil)
-@end lisp
+This is part 3 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to the editing-related capabilities of XEmacs (the
+keyboard, mouse, buffers, text selections, etc.) and how to customize
+them.
 
-Starting with XEmacs-20.2 you can also change this with Customize. Select
-from the @code{Options} menu @code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs
-Regions} or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
+@menu
+3.0: The Keyboard
+* Q3.0.1::    How can I customize the keyboard?
+* Q3.0.2::    How can I bind complex functions (or macros) to keys?
+* Q3.0.3::    How do I bind C-. and C-; to scroll one line up and down?
+* Q3.0.4::    Globally binding @kbd{Delete}?
+* Q3.0.5::    How to map @kbd{Help} key alone on Sun type4 keyboard?
+* Q3.0.6::    How can you type in special characters in XEmacs?
+* Q3.0.7::    Can I turn on @dfn{sticky} modifier keys?
+* Q3.0.8::    How do I map the arrow keys?
+* Q3.0.9::    HP Alt key as Meta.
+* Q3.0.10::   Why does edt emulation not work?
+* Q3.0.11::   How can I emulate VI and use it as my default mode?
+
+3.1: The Mouse
+* Q3.1.1::    How can I turn off Mouse pasting?
+* Q3.1.2::    How do I set control/meta/etc modifiers on mouse buttons?
+* Q3.1.3::    Clicking the left button does not do anything in buffer list.
+* Q3.1.4::    How can I get a list of buffers when I hit mouse button 3?
+* Q3.1.5::    How can I set XEmacs up so that it pastes where the text cursor is?
+
+3.2: Buffers, Text Editing
+* Q3.2.1::    Can I have the end of the buffer delimited in some way?
+* Q3.2.2::    How do I insert today's date into a buffer?
+* Q3.2.3::    How do I get a single minibuffer frame?
+* Q3.2.4::    How can I enable auto-indent and/or Filladapt?
+* Q3.2.5::    How can I get XEmacs to come up in text/auto-fill mode by default?
+
+3.3: Text Selections
+* Q3.3.1::    How do I select a rectangular region?
+* Q3.3.2::    How can I turn off or change highlighted selections?
+* Q3.3.3::    How do I cause typing on an active region to remove it?
+* Q3.3.4::    Can I turn off the highlight during isearch?
+* Q3.3.5::    Why is killing so slow?
+* Q3.3.6::    Why does @kbd{M-w} take so long?
+
+3.4: Editing Source Code
+* Q3.4.1::    I do not like cc-mode.  How do I use the old c-mode?
+* Q3.4.2::    How do you make XEmacs indent CL if-clauses correctly?
+@end menu
 
-To change the face for selection, look at @code{Options->Customize} on
-the menubar.
+@unnumberedsec 3.0: The Keyboard
 
-@node Q3.10.2, Q3.10.3, Q3.10.1, Customization
-@unnumberedsubsec Q3.10.2: How do I get that typing on an active region removes it?
+@node Q3.0.1, Q3.0.2, Editing, Editing
+@unnumberedsubsec Q3.0.1: How can I customize the keyboard?
 
-I want to change things so that if I select some text and start typing,
-the typed text replaces the selected text, similar to Motif.
+#### Write me.
 
-You want to use something called @dfn{pending delete}.  Pending delete
-is what happens when you select a region (with the mouse or keyboard)
-and you press a key to replace the selected region by the key you typed.
-Usually backspace kills the selected region.
+@node Q3.0.2, Q3.0.3, Q3.0.1, Editing
+@unnumberedsubsec Q3.0.2: How can I bind complex functions (or macros) to keys?
 
-To get this behavior, ensure that you have the @file{pc} package
-installed, and add the following lines to your
-@file{init.el}/@file{.emacs}:
+As an example, say you want the @kbd{paste} key on a Sun keyboard to
+insert the current Primary X selection at point. You can accomplish this
+with:
 
 @lisp
-(cond
- ((fboundp 'turn-on-pending-delete)
-  (turn-on-pending-delete))
- ((fboundp 'pending-delete-on)
-  (pending-delete-on t)))
+(define-key global-map [f18] 'x-insert-selection)
 @end lisp
 
-Note that this will work with both Backspace and Delete.  This code is a
-tad more complicated than it has to be for XEmacs in order to make it
-more portable.
+However, this only works if there is a current X selection (the
+selection will be highlighted).  The functionality I like is for the
+@kbd{paste} key to insert the current X selection if there is one,
+otherwise insert the contents of the clipboard.  To do this you need to
+pass arguments to @code{x-insert-selection}.  This is done by wrapping
+the call in a 'lambda form:
 
-@node Q3.10.3, Q3.10.4, Q3.10.2, Customization
-@unnumberedsubsec Q3.10.3: Can I turn off the highlight during isearch?
+@lisp
+(global-set-key [f18]
+  (lambda () (interactive) (x-insert-selection t nil)))
+@end lisp
 
-I do not like my text highlighted while I am doing isearch as I am not
-able to see what's underneath.  How do I turn it off?
+This binds the f18 key to a @dfn{generic} functional object.  The
+interactive spec is required because only interactive functions can be
+bound to keys.
 
-Put the following in your @file{init.el}/@file{.emacs}:
+For the FAQ example you could use:
 
 @lisp
-(setq isearch-highlight nil)
+(global-set-key [(control ?.)]
+  (lambda () (interactive) (scroll-up 1)))
+(global-set-key [(control ?;)]
+  (lambda () (interactive) (scroll-up -1)))
 @end lisp
 
-Starting with XEmacs-20.2 you can also change this with Customize. Type
-@kbd{M-x customize-variable @key{RET} isearch-highlight @key{RET}}.
-
-Note also that isearch-highlight affects query-replace and ispell.
-Instead of disabling isearch-highlight you may find that a better
-solution consists of customizing the @code{isearch} face.
+This is fine if you only need a few functions within the lambda body.
+If you're doing more it's cleaner to define a separate function.
+@xref{Q3.0.3, How do I bind C-. and C-; to scroll one line up and
+down?}.
 
-@node Q3.10.4, Q3.10.5, Q3.10.3, Customization
-@unnumberedsubsec Q3.10.4: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
+@node Q3.0.3, Q3.0.4, Q3.0.2, Editing
+@unnumberedsubsec Q3.0.3: How do I bind C-. and C-; to scroll one line up and down?
 
-Put this in your @code{.emacs}:
+Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and
+@email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}:
 
 @lisp
-(setq zmacs-regions nil)
-@end lisp
+(defun scroll-up-one-line ()
+  (interactive)
+  (scroll-up 1))
 
-@strong{Warning: This command turns off all region highlighting.}
+(defun scroll-down-one-line ()
+  (interactive)
+  (scroll-down 1))
 
-Also see @ref{Q3.10.1}.
+(global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
+(global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
+@end lisp
 
-@node Q3.10.5, Q3.10.6, Q3.10.4, Customization
-@unnumberedsubsec Q3.10.5: The region disappears when I hit the end of buffer while scrolling.
+The key point is that you can only bind simple functions to keys; you
+can not bind a key to a function that you're also passing arguments
+to.  (@pxref{Q3.0.2, How can I bind complex functions (or macros) to
+keys?} for a better answer).
 
-This has been fixed by default starting with XEmacs-20.3.
+@node Q3.0.4, Q3.0.5, Q3.0.3, Editing
+@unnumberedsubsec Q3.0.4: Globally binding @kbd{Delete}?
 
-With older versions you can turn this feature (if it indeed is a feature)
-off like this:
+I cannot manage to globally bind my @kbd{Delete} key to something other
+than the default.  How does one do this?
 
-@lisp
-(defadvice scroll-up (around scroll-up freeze)
-  (interactive "_P")
-  (let ((zmacs-region-stays t))
-    (if (interactive-p)
-        (condition-case nil
-            ad-do-it
-          (end-of-buffer (goto-char (point-max))))
-      ad-do-it)))
-
-(defadvice scroll-down (around scroll-down freeze)
-  (interactive "_P")
-  (let ((zmacs-region-stays t))
-    (if (interactive-p)
-        (condition-case nil
-            ad-do-it
-          (beginning-of-buffer (goto-char (point-min))))
-      ad-do-it)))
-@end lisp
+Answer: The problem is that many modes explicitly bind @kbd{Delete}.  To
+get around this, try the following:
 
-Thanks to @email{raman@@adobe.com, T. V. Raman} for assistance in deriving this
-answer.
+@lisp
+(defun foo ()
+  (interactive)
+  (message "You hit DELETE"))
 
-@node Q3.10.6,  , Q3.10.5, Customization
-@unnumberedsubsec Q3.10.6: Why is killing so slow?
+(define-key key-translation-map 'delete 'redirected-delete)
+(global-set-key 'redirected-delete 'foo)
+@end lisp
 
-This actually is an X Windows question, although you'll notice it with
-keyboard operations as well as while using the GUI.  Basically, there
-are four ways to communicate interprogram via the X server:
+@node Q3.0.5, Q3.0.6, Q3.0.4, Editing
+@unnumberedsubsec Q3.0.5: How to map @kbd{Help} key alone on Sun type4 keyboard?
 
-@table @strong
-@item Primary selection
-a transient selection that gets replaced every time a new selection is made
+The following works in GNU Emacs 19:
 
-@item Secondary selection
-for "exchanging" with the primary selection
+@lisp
+(global-set-key [help] 'help-command);; Help
+@end lisp
 
-@item Cut buffers
-a clipboard internal to the X server (deprecated)
+The following works in XEmacs with the addition of shift:
 
-@item Clipboard selection
-a selection with a notification protocol that allows a separate app to
-manage the clipboard
-@end table
+@lisp
+(global-set-key [(shift help)] 'help-command);; Help
+@end lisp
 
-The cut buffers are deprecated because managing them is even more
-inefficient than the clipboard notification protocol.  The primary
-selection works fine for many users and applications, but is not very
-robust under intensive or sophisticated use.
+But it doesn't work alone.  This is in the file @file{PROBLEMS} which
+should have come with your XEmacs installation: @emph{Emacs ignores the
+@kbd{help} key when running OLWM}.
 
-In Motif and MS Windows, a clipboard has become the primary means for
-managing cut and paste.  These means that "modern" applications tend to
-be oriented toward a true clipboard, rather than the primary selection.
-(On Windows, there is nothing equivalent to the primary selection.)
-It's not that XEmacs doesn't support the simple primary selection
-method, it's that more and more other applications don't.
+OLWM grabs the @kbd{help} key, and retransmits it to the appropriate
+client using
+@iftex
+@*
+@end iftex
+@code{XSendEvent}.  Allowing Emacs to react to synthetic
+events is a security hole, so this is turned off by default.  You can
+enable it by setting the variable @code{x-allow-sendevents} to t.  You
+can also cause fix this by telling OLWM to not grab the help key, with
+the null binding @code{OpenWindows.KeyboardCommand.Help:}.
 
-So the slowdown occurs because XEmacs now engages in the clipboard
-notification protocol on @emph{every} kill.  This is especially slow on
-Motif.
+@node Q3.0.6, Q3.0.7, Q3.0.5, Editing
+@unnumberedsubsec Q3.0.6: How can you type in special characters in XEmacs?
+One way is to use the package @code{x-compose}.  Then you can use
+sequences like @kbd{Compose " a} to get ä, etc.
 
-With most people running most clients and server on the same host, and
-many of the rest working over very fast communication, you may expect
-that the situation is not going to improve.
+Another way is to use the @code{iso-insert} package. Then you can use
+sequences like @kbd{C-x 8 " a} to get ä, etc.
 
-There are a number of workarounds.  The most effective is to use a
-special command to do selection ownership only when you intend to paste
-to another application.  Useful commands are @code{kill-primary-selection}
-and @code{copy-primary-selection}.  These work only on text selected
-with the mouse (probably; experiment), and are bound by default to the
-@kbd{Cut} and @kbd{Copy}, respectively, buttons on the toolbar.
-@code{copy-primary-selection} is also bound to @kbd{C-Insert}.  You can
-yank the clipboard contents with @code{yank-primary-selection}, bound to
-the @kbd{Paste} toolbar button and @kbd{Sh-Insert}.
+@email{glynn@@sensei.co.uk, Glynn Clements} writes:
 
-If you are communicating by cut and paste with applications that use the
-primary selection, then you can customize
-@code{interprogram-cut-function} to @code{nil}, restoring the XEmacs
-version 20 behavior.  How can you tell if a program will support this?
-Motifly-correct programs require the clipboard; you lose.  For others,
-only by trying it.  You also need to customize the complementary
-@code{interprogram-paste-function} to @code{nil}.  (Otherwise
-XEmacs-to-XEmacs pastes will not work correctly.)
+@quotation
+It depends upon your X server.
 
-You may get some relief on Motif by setting
-@code{x-selection-strict-motif-ownership} to nil, but this means you will
-only intermittently be able to paste XEmacs kills to Motif applications.
+Generally, the simplest way is to define a key as Multi_key with
+xmodmap, e.g.
+@c hey, show some respect, willya -- there's xkeycaps, isn't there? --
+@c chr ;)
+@example
+        xmodmap -e 'keycode 0xff20 = Multi_key'
+@end example
 
-Thanks to Jeff Mincy and Glynn Clements for corrections.
+You will need to pick an appropriate keycode. Use xev to find out the
+keycodes for each key.
 
-@node Subsystems, Miscellaneous, Customization, Top
-@unnumbered 4 Major Subsystems
+[NB: On a `Windows' keyboard, recent versions of XFree86 automatically
+define the right `Windows' key as Multi_key'.]
 
-This is part 4 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to major XEmacs subsystems.
+Once you have Multi_key defined, you can use e.g.
+@example
+        Multi a '       => á
+        Multi e "       => ë
+        Multi c ,       => ç
+@end example
 
-@menu
-Reading Mail with VM:
-* Q4.0.1::      How do I set up VM to retrieve remote mail using POP?
-* Q4.0.2::      How do I get VM to filter mail for me?
-* Q4.0.3::      How can I get VM to automatically check for new mail?
-* Q4.0.4::      [This question intentionally left blank]
-* Q4.0.5::      How do I get my outgoing mail archived?
-* Q4.0.6::      I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
-* Q4.0.7::      Is there a mailing list or FAQ for VM?
-* Q4.0.8::      Remote mail reading with VM.
-* Q4.0.9::      rmail or VM gets an error incorporating new mail.
-* Q4.0.10::     How do I make VM stay in a single frame?
-* Q4.0.11::     How do I make VM or mh-e display graphical smilies?
-* Q4.0.12::     Customization of VM not covered in the manual or here.
-
-Web browsing with W3:
-* Q4.1.1::      What is W3?
-* Q4.1.2::      How do I run W3 from behind a firewall?
-* Q4.1.3::      Is it true that W3 supports style sheets and tables?
-
-Reading Netnews and Mail with Gnus:
-* Q4.2.1::      GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus,argh!
-* Q4.2.2::      [This question intentionally left blank]
-* Q4.2.3::      How do I make Gnus stay within a single frame?
-* Q4.2.4::      How do I customize the From: line?
-
-Other Mail & News:
-* Q4.3.1::      How can I read and/or compose MIME messages?
-* Q4.3.2::      What is TM and where do I get it?
-* Q4.3.3::      Why isn't this @code{movemail} program working?
-* Q4.3.4::      Movemail is also distributed by Netscape?  Can that cause problems?
-* Q4.3.5::      Where do I find pstogif (required by tm)?
-
-Sparcworks, EOS, and WorkShop:
-* Q4.4.1::      What is SPARCworks, EOS, and WorkShop
-* Q4.4.2::      How do I start the Sun Workshop support in XEmacs 21?
-
-Energize:
-* Q4.5.1::      What is/was Energize?
-
-Infodock:
-* Q4.6.1::      What is Infodock?
-
-Other Unbundled Packages:
-* Q4.7.1::      What is AUC TeX?  Where do you get it?
-* Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
-* Q4.7.3::      [This question intentionally left blank]
-* Q4.7.4::      Problems installing AUC TeX
-* Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
-* Q4.7.6::      Is there a MatLab mode?
-* Q4.7.7::      Can I edit files on other hosts?
-@end menu
+etc.
 
-@node Q4.0.1, Q4.0.2, Subsystems, Subsystems
-@unnumberedsec 4.0: Reading Mail with VM
-@unnumberedsubsec Q4.0.1: How do I set up VM to retrieve mail from a remote site using POP?
+Also, recent versions of XFree86 define various AltGr-<key>
+combinations as dead keys, i.e.
+@example
+        AltGr [         => dead_diaeresis
+        AltGr ]         => dead_tilde
+        AltGr ;         => dead_acute
+@end example
+etc.
 
-Use @code{vm-spool-files}, like this for example:
+Running @samp{xmodmap -pk} will list all of the defined keysyms.
+@end quotation
 
-@lisp
-(setq vm-spool-files '("/var/spool/mail/wing"
-                       "netcom23.netcom.com:110:pass:wing:MYPASS"))
-@end lisp
+For the related problem of @emph{displaying} non-ASCII characters in a
+non-Mule XEmacs, @xref{Q4.0.8, How do I display non-ASCII characters?}.
 
-Of course substitute your actual password for MYPASS.
+@node Q3.0.7, Q3.0.8, Q3.0.6, Editing
+@unnumberedsubsec Q3.0.7: Can I turn on @dfn{sticky} modifier keys?
 
-@node Q4.0.2, Q4.0.3, Q4.0.1, Subsystems
-@unnumberedsubsec Q4.0.2: How do I get VM to filter mail for me?
+Yes, with @code{(setq modifier-keys-are-sticky t)}.  This will give the
+effect of being able to press and release Shift and have the next
+character typed come out in upper case.  This will affect all the other
+modifier keys like Control and Meta as well.
 
-One possibility is to use procmail to split your mail before it gets to
-VM.  I prefer this personally, since there are many strange and
-wonderful things one can do with procmail.  Procmail may be found at
-@uref{ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/}.
+@email{ben@@xemacs.org, Ben Wing} writes:
 
-Also see the Mail Filtering FAQ at:
-@iftex
-@*
-@end iftex
-@uref{ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq}.
-@c Link above,
-@c <URL:http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/filtering-faq/faq.html>
-@c was dead.
+@quotation
+One thing about the sticky modifiers is that if you move the mouse out
+of the frame and back in, it cancels all currently ``stuck'' modifiers.
+@end quotation
 
-@node Q4.0.3, Q4.0.4, Q4.0.2, Subsystems
-@unnumberedsubsec Q4.0.3: How can I get VM to automatically check for new mail?
+@node Q3.0.8, Q3.0.9, Q3.0.7, Editing
+@unnumberedsubsec Q3.0.8: How do I map the arrow keys?
+@c New
+Say you want to map @kbd{C-@key{right}} to forward-word:
 
-@email{turner@@lanl.gov, John Turner} writes:
+@email{sds@@usa.net, Sam Steingold} writes:
 
 @quotation
-Use the following:
-
 @lisp
-(setq vm-auto-get-new-mail 60)
+; both XEmacs and Emacs
+(define-key global-map [(control right)] 'forward-word)
+@end lisp
+or
+@lisp
+; Emacs only
+(define-key global-map [C-right] 'forward-word)
+@end lisp
+or
+@lisp
+; ver > 20, both
+(define-key global-map (kbd "C-<right>") 'forward-word)
 @end lisp
 @end quotation
 
-@node Q4.0.4, Q4.0.5, Q4.0.3, Subsystems
-@unnumberedsubsec Q4.0.4: [This question intentionally left blank]
+@node Q3.0.9, Q3.0.10, Q3.0.8, Editing
+@unnumberedsubsec Q3.0.9: HP Alt key as Meta.
+
+How can I make XEmacs recognize the Alt key of my HP workstation as a
+Meta key?
+
+Put the following line into a file and load it with xmodmap(1) before
+starting XEmacs:
+
+@example
+remove Mod1 = Mode_switch
+@end example
 
-Obsolete question, left blank to avoid renumbering.
+@node Q3.0.10, Q3.0.11, Q3.0.9, Editing
+@unnumberedsubsec Q3.0.10: Why does edt emulation not work?
 
-@node Q4.0.5, Q4.0.6, Q4.0.4, Subsystems
-@unnumberedsubsec Q4.0.5: How do I get my outgoing mail archived?
+We don't know, but you can use tpu-edt emulation instead, which works
+fine and is a little fancier than the standard edt emulation.  To do
+this, add the following line to your @file{init.el}:
 
 @lisp
-(setq mail-archive-file-name "~/outbox")
+(tpu-edt)
 @end lisp
 
-@node Q4.0.6, Q4.0.7, Q4.0.5, Subsystems
-@unnumberedsubsec Q4.0.6: I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
-
-Set @code{vm-reply-ignored-addresses} to a list, like
+If you don't want it to replace @kbd{C-h} with an edt-style help menu
+add this as well:
 
 @lisp
-(setq vm-reply-ignored-addresses
-      '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
-        "wing@@netcom.com" "wing@@xemacs.org"))
+(global-set-key [(control h)] 'help-for-help)
 @end lisp
 
-Note that each string is a regular expression.
+@node Q3.0.11, Q3.1.1, Q3.0.10, Editing
+@unnumberedsubsec Q3.0.11: How can I emulate VI and use it as my default mode?
 
-@node Q4.0.7, Q4.0.8, Q4.0.6, Subsystems
-@unnumberedsubsec Q4.0.7: Is there a mailing list or FAQ for VM?
+Our recommended VI emulator is viper. To make viper-mode the default,
+add this to your @file{init.el}:
 
-A FAQ for VM exists at @uref{http://www.wonderworks.com/vm/FAQ.html}.
+@lisp
+(viper-mode)
+@end lisp
 
-VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
+@email{kifer@@CS.SunySB.EDU, Michael Kifer} writes:
 
-@node Q4.0.8, Q4.0.9, Q4.0.7,  Subsystems
-@unnumberedsubsec Q4.0.8: Remote mail reading with VM.
+@quotation
+This should be added as close to the top of @file{init.el} as you can get
+it, otherwise some minor modes may not get viper-ized.
+@end quotation
 
-My mailbox lives at the office on a big honkin server.  My regular INBOX
-lives on my honkin desktop machine.  I now can PPP to the office from
-home which is far from honking...  I'd like to be able to read mail at
-home without storing it here and I'd like to use xemacs and VM at
-home...  Is there a recommended setup?
+@unnumberedsec 3.1: The Mouse
 
-@email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes:
+@node Q3.1.1, Q3.1.2, Q3.0.11, Editing
+@unnumberedsubsec Q3.1.1: How can I turn off Mouse pasting?
 
-@quotation
-There are several ways to do this.
+I keep hitting the middle mouse button by accident and getting stuff
+pasted into my buffer so how can I turn this off?
 
-@enumerate
-@item
-Set your display to your home machine and run dxpc or one of the other X
-compressors.
+Here is an alternative binding, whereby the middle mouse button selects
+(but does not cut) the expression under the mouse. Clicking middle on a
+left or right paren will select to the matching one.  Note that you can
+use @code{define-key} or @code{global-set-key}.
 
-@item
-NFS mount your desktop machine on your home machine and modify your pop
-command on your home machine to rsh to your desktop machine and actually
-do the pop get's.
+@lisp
+(defun mouse-set-point-and-select (event)
+  "Sets the point at the mouse location, then marks following form"
+  (interactive "@@e")
+  (mouse-set-point event)
+  (mark-sexp 1))
+(define-key global-map [button2] 'mouse-set-point-and-select)
+@end lisp
 
-@item
-Run a POP server on your desktop machine as well and do a sort of two
-tiered POP get.
-@end enumerate
-@end quotation
+@node Q3.1.2, Q3.1.3, Q3.1.1, Editing
+@unnumberedsubsec Q3.1.2: How do I set control/meta/etc modifiers on mouse buttons?
 
-        @email{wmperry@@monolith.spry.com, William Perry} adds:
+Use, for instance, @code{[(meta button1)]}. For example, here is a common
+setting for Common Lisp programmers who use the bundled @code{ilisp}
+package, whereby meta-button1 on a function name will find the file where
+the function name was defined, and put you at that location in the source
+file.
 
-@quotation
-Or you could run a pop script periodically on your desktop machine, and
-just use ange-ftp or NFS to get to your mailbox.  I used to do this all
-the time back at IU.
-@end quotation
+[Inside a function that gets called by the lisp-mode-hook and
+ilisp-mode-hook]
 
-@node Q4.0.9, Q4.0.10, Q4.0.8, Subsystems
-@unnumberedsubsec Q4.0.9: rmail or VM gets an error incorporating new mail.
+@lisp
+(local-set-key [(meta button1)] 'edit-definitions-lisp)
+@end lisp
 
-Quoting the XEmacs PROBLEMS file:
+@node Q3.1.3, Q3.1.4, Q3.1.2, Editing
+@unnumberedsubsec Q3.1.3: Clicking the left button does not do anything in buffer list.
 
-@quotation
-rmail and VM get new mail from @file{/usr/spool/mail/$USER} using a
-program called @code{movemail}.  This program interlocks with
-@code{/bin/mail} using the protocol defined by @code{/bin/mail}.
+I do @kbd{C-x C-b} to get a list of buffers and the entries get
+highlighted when I move the mouse over them but clicking the left mouse
+does not do anything.
 
-There are two different protocols in general use.  One of them uses the
-@code{flock} system call.  The other involves creating a lock file;
-@code{movemail} must be able to write in @file{/usr/spool/mail} in order
-to do this.  You control which one is used by defining, or not defining,
-the macro @code{MAIL_USE_FLOCK} in @file{config.h} or the m- or s- file
-it includes.
+Use the middle mouse button.
 
-@strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
-SYSTEM, YOU CAN LOSE MAIL!}
+@node Q3.1.4, Q3.1.5, Q3.1.3, Editing
+@unnumberedsubsec Q3.1.4: How can I get a list of buffers when I hit mouse button 3?
 
-If your system uses the lock file protocol, and fascist restrictions
-prevent ordinary users from writing the lock files in
-@file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a
-suitable group such as @samp{mail}.  You can use these commands (as
-root):
+The following code will replace the default popup on button3:
 
-@example
-chgrp mail movemail
-chmod 2755 movemail
-@end example
-
-If your system uses the lock file protocol, and fascist restrictions
-prevent ordinary users from writing the lock files in
-@file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a
-suitable group such as @code{mail}.  To do this, use the following
-commands (as root) after doing the make install.
+@lisp
+(global-set-key [button3] 'popup-buffer-menu)
+@end lisp
 
-@example
-chgrp mail movemail
-chmod 2755 movemail
-@end example
+@node Q3.1.5, Q3.2.1, Q3.1.4, Editing
+@unnumberedsubsec Q3.1.5: How can I set XEmacs up so that it pastes where the text cursor is?
 
-Installation normally copies movemail from the build directory to an
-installation directory which is usually under @file{/usr/local/lib}.
-The installed copy of @code{movemail} is usually in the directory
-@file{/usr/local/lib/emacs/VERSION/TARGET}.  You must change the group
-and mode of the installed copy; changing the group and mode of the build
-directory copy is ineffective.
-@end quotation
+By default XEmacs pastes X selections where the mouse pointer is.  How
+do I disable this?
 
-@node Q4.0.10, Q4.0.11, Q4.0.9, Subsystems
-@unnumberedsubsec Q4.0.10: How do I make VM stay in a single frame?
+Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank
+@key{RET}}.
 
-John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes:
+To get XEmacs to paste at the text cursor, add this your @file{init.el}:
 
-@quotation
 @lisp
-                                        ; Don't use multiple frames
-(setq vm-frame-per-composition nil)
-(setq vm-frame-per-folder nil)
-(setq vm-frame-per-edit nil)
-(setq vm-frame-per-summary nil)
+(setq mouse-yank-at-point t)
 @end lisp
-@end quotation
 
-@node Q4.0.11, Q4.0.12, Q4.0.10, Subsystems
-@unnumberedsubsec Q4.0.11: How do I make VM or mh-e display graphical smilies?
-@c Changed June
-For mh-e use the following:
+You can also change this with Customize.  Select from the
+@code{Options} menu @code{Advanced
+(Customize)->Emacs->Editing->Mouse->Yank At Point...} or type @kbd{M-x
+customize @key{RET} mouse @key{RET}}.
+
+@unnumberedsec 3.2: Buffers, Text Editing
+
+@node Q3.2.1, Q3.2.2, Q3.1.5, Editing
+@unnumberedsubsec Q3.2.1: Can I have the end of the buffer delimited in some way?
+
+Say, with: @samp{[END]}?
+
+Try this:
 
 @lisp
-(add-hook 'mh-show-mode-hook '(lambda ()
-                                (smiley-region (point-min)
-                                               (point-max))))
+(let ((ext (make-extent (point-min) (point-max))))
+  (set-extent-property ext 'start-closed t)
+  (set-extent-property ext 'end-closed t)
+  (set-extent-property ext 'detachable nil)
+  (set-extent-end-glyph ext (make-glyph [string :data "[END]"])))
 @end lisp
 
-@email{bill@@carpenter.ORG, WJCarpenter} writes:
-For VM use the following:
+Since this is XEmacs, you can specify an icon to be shown on
+window-system devices.  To do so, change the @code{make-glyph} call to
+something like this:
+
 @lisp
-       (autoload 'smiley-region "smiley" nil t)
-       (add-hook 'vm-select-message-hook
-                 '(lambda ()
-                    (smiley-region (point-min)
-                                   (point-max))))
+(make-glyph '([xpm :file "~/something.xpm"]
+              [string :data "[END]"]))
 @end lisp
 
-For tm use the following:
+You can inline the @sc{xpm} definition yourself by specifying
+@code{:data} instead of @code{:file}.  Here is such a full-featured
+version that works on both X and TTY devices:
+
 @lisp
-(autoload 'smiley-buffer "smiley" nil t)
-(add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
+(let ((ext (make-extent (point-min) (point-max))))
+  (set-extent-property ext 'start-closed t)
+  (set-extent-property ext 'end-closed t)
+  (set-extent-property ext 'detachable nil)
+  (set-extent-end-glyph ext (make-glyph '([xpm :data "\
+/* XPM */
+static char* eye = @{
+\"20 11 7 2\",
+\"__ c None\"
+\"_` c #7f7f7f\",
+\"_a c #fefefe\",
+\"_b c #7f0000\",
+\"_c c #fefe00\",
+\"_d c #fe0000\",
+\"_e c #bfbfbf\",
+\"___________`_`_`___b_b_b_b_________`____\",
+\"_________`_`_`___b_c_c_c_b_b____________\",
+\"_____`_`_`_e___b_b_c_c_c___b___b_______`\",
+\"___`_`_e_a___b_b_d___b___b___b___b______\",
+\"_`_`_e_a_e___b_b_d_b___b___b___b___b____\",
+\"_`_`_a_e_a___b_b_d___b___b___b___b___b__\",
+\"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\",
+\"___`_`_e_a___b_b_b_d_c___b___b___d_b____\",
+\"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\",
+\"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\",
+\"___`_____`_`_`_`___b_b_b_b_b_b__________\",
+@} ;"]
+                                          [string :data "[END]"]))))
 @end lisp
 
-@node Q4.0.12, Q4.1.1, Q4.0.11, Subsystems
-@unnumberedsubsec Q4.0.12: Customization of VM not covered in the manual, or here.
-
-@email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes:
+Note that you might want to make this a function, and put it to a hook.
+We leave that as an exercise for the reader.
 
-@quotation
-The meta-answer is to look into the file @file{vm-vars.el}, in the vm
-directory of the lisp library.
+@node Q3.2.2, Q3.2.3, Q3.2.1, Editing
+@unnumberedsubsec Q3.2.2: How do I insert today's date into a buffer?
 
-@file{vm-vars.el} contains, initializes and carefully describes, with
-examples of usage, the plethora of user options that @emph{fully}
-control VM's behavior.
+Like this:
 
-Enter vm-vars, @code{forward-search} for toolbar, find the variables
-that control the toolbar placement, appearance, existence, copy to your
-@file{init.el}/@file{.emacs} or @file{.vm} and modify according to the
-detailed instructions.
+@lisp
+(insert (current-time-string))
+@end lisp
 
-The above also applies to all the various features of VM: search for
-some keywords, maybe the first you conjure isn't appropriate, find the
-appropriate variables, copy and experiment.
-@end quotation
+@node Q3.2.3, Q3.2.4, Q3.2.2, Editing
+@unnumberedsubsec Q3.2.3: How do I get a single minibuffer frame?
 
-@node Q4.1.1, Q4.1.2, Q4.0.12, Subsystems
-@unnumberedsec 4.1: Web browsing with W3
-@unnumberedsubsec Q4.1.1: What is W3?
+@email{acs@@acm.org, Vin Shelton} writes:
 
-W3 is an advanced graphical browser written in Emacs lisp that runs on
-XEmacs.  It has full support for cascaded style sheets, and more...
+@lisp
+(setq initial-frame-plist '(minibuffer nil))
+(setq default-frame-plist '(minibuffer nil))
+(setq default-minibuffer-frame
+      (make-frame
+       '(minibuffer only
+                    width 86
+                    height 1
+                    menubar-visible-p nil
+                    default-toolbar-visible-p nil
+                    name "minibuffer"
+                    top -2
+                    left -2
+                    has-modeline-p nil)))
+(frame-notice-user-settings)
+@end lisp
 
-It has a home web page at
-@uref{http://www.cs.indiana.edu/elisp/w3/docs.html}.
+@strong{Please note:} The single minibuffer frame may not be to everyone's
+taste, and there any number of other XEmacs options settings that may
+make it difficult or inconvenient to use.
 
-@node Q4.1.2, Q4.1.3, Q4.1.1, Subsystems
-@unnumberedsubsec Q4.1.2: How do I run W3 from behind a firewall?
+@node Q3.2.4, Q3.2.5, Q3.2.3, Editing
+@unnumberedsubsec Q3.2.4: How can I enable auto-indent and/or Filladapt?
 
-There is a long, well-written, detailed section in the W3 manual that
-describes how to do this.  Look in the section entitled "Firewalls".
+Put the following line in your @file{init.el}:
 
-@node Q4.1.3, Q4.2.1, Q4.1.2, Subsystems
-@unnumberedsubsec Q4.1.3: Is it true that W3 supports style sheets and tables?
+@lisp
+(setq indent-line-function 'indent-relative-maybe)
+@end lisp
 
-Yes, and much more.  W3, as distributed with the latest XEmacs is a
-full-featured web browser.
+If you want to get fancy, try the @code{filladapt} package available
+standard with XEmacs.  Put this into your @file{init.el}:
 
-@node Q4.2.1, Q4.2.2, Q4.1.3, Subsystems
-@unnumberedsec 4.2: Reading Netnews and Mail with Gnus
-@unnumberedsubsec Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+@lisp
+(require 'filladapt)
+(setq-default filladapt-mode t)
+(add-hook 'c-mode-hook 'turn-off-filladapt-mode)
+@end lisp
 
-The Gnus numbering issues are not meant for mere mortals to know them.
-If you feel you @emph{must} enter the muddy waters of Gnus, visit the
-excellent FAQ, maintained by Justin Sheehy, at:
+This will enable Filladapt for all modes except C mode, where it doesn't
+work well.  To turn Filladapt on only in particular major modes, remove
+the @code{(setq-default ...)} line and use
+@code{turn-on-filladapt-mode}, like this:
 
-@example
-@uref{http://www.ccs.neu.edu/software/contrib/gnus/}
-@end example
+@lisp
+(add-hook 'text-mode-hook 'turn-on-filladapt-mode)
+@end lisp
 
-See also Gnus home page
-@example
-@uref{http://www.gnus.org/}
-@end example
+You can customize filling and adaptive filling with Customize.
+Select from the @code{Options} menu
+@code{Advanced (Customize)->Emacs->Editing->Fill->Fill...}
+or type @kbd{M-x customize @key{RET} fill @key{RET}}.
 
-@node Q4.2.2, Q4.2.3, Q4.2.1, Subsystems
-@unnumberedsubsec Q4.2.2: This question intentionally left blank.
+Note that well-behaving text-lookalike modes will run
+@code{text-mode-hook} by default (e.g. that's what Message does).  For
+the nasty ones, you'll have to provide the @code{add-hook}s yourself.
 
-Obsolete question, left blank to avoid renumbering.
+Please note that the @code{fa-extras} package is no longer useful.
 
-@node Q4.2.3, Q4.2.4, Q4.2.2, Subsystems
-@unnumberedsubsec Q4.2.3: How do I make Gnus stay within a single frame?
+@node Q3.2.5, Q3.3.1, Q3.2.4, Editing
+@unnumberedsubsec Q3.2.5: How can I get XEmacs to come up in text/auto-fill mode by default?
 
-The toolbar code to start Gnus opens the new frame---and it's a feature
-rather than a bug.  If you don't like it, but would still like to click
-on the seemly icon, use the following code:
+Try the following lisp in your @file{init.el}:
 
 @lisp
-(defun toolbar-news ()
-  (gnus))
+(setq default-major-mode 'text-mode)
+(add-hook 'text-mode-hook 'turn-on-auto-fill)
 @end lisp
 
-It will redefine the callback function of the icon to just call
-@code{gnus}, without all the fancy frame stuff.
+@strong{WARNING}: note that changing the value of
+@code{default-major-mode} from @code{fundamental-mode} can break a large
+amount of built-in code that expects newly created buffers to be in
+@code{fundamental-mode}.  (Changing from @code{fundamental-mode} to
+@code{text-mode} might not wreak too much havoc, but changing to
+something more exotic like a lisp-mode would break many Emacs packages).
 
-@node Q4.2.4, Q4.3.1, Q4.2.3, Subsystems
-@unnumberedsubsec Q4.2.4: How do I customize the From: line?
+Note that Emacs by default starts up in buffer @code{*scratch*} in
+@code{initial-major-mode}, which defaults to
+@code{lisp-interaction-mode}. Thus adding the following form to your
+Emacs init file will cause the initial @code{*scratch*} buffer to be put
+into auto-fill'ed @code{text-mode}:
 
-How do I change the @code{From:} line?  I have set gnus-user-from-line
-to
-@example
-Gail Gurman <gail.gurman@@sybase.com>
-@end example
-@noindent , but XEmacs Gnus doesn't use
-it. Instead it uses
-@example
-Gail Mara Gurman @email{gailg@@deall}
-@end example
-@noindent and then complains
-that it's incorrect. Also, as you perhaps can see, my Message-ID is
-screwy. How can I change that?
+@lisp
+(setq initial-major-mode
+      (lambda ()
+        (text-mode)
+        (turn-on-auto-fill)))
+@end lisp
 
-@email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes:
+Note that after your init file is loaded, if
+@code{inhibit-startup-message} is @code{nil} (the default) and the
+startup buffer is @code{*scratch*} then the startup message will be
+inserted into @code{*scratch*}; it will be removed after a timeout by
+erasing the entire @code{*scratch*} buffer.  Keep in mind this default
+usage of @code{*scratch*} if you desire any prior manipulation of
+@code{*scratch*} from within your Emacs init file. In particular,
+anything you insert into @code{*scratch*} from your init file will be
+later erased. Also, if you change the mode of the @code{*scratch*}
+buffer, be sure that this will not interfere with possible later
+insertion of the startup message (e.g. if you put @code{*scratch*} into
+a nonstandard mode that has automatic font lock rules, then the startup
+message might get fontified in a strange foreign manner, e.g. as code in
+some programming language).
 
-@quotation
-Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or
-@code{mail-host-address} to @samp{sybase.com}.
-@end quotation
+@unnumberedsec 3.3: Text Selections
 
-@node Q4.3.1, Q4.3.2, Q4.2.4, Subsystems
-@unnumberedsec 4.3: Other Mail & News
-@unnumberedsubsec Q4.3.1: How can I read and/or compose MIME messages?
-@c Changed June
+@node Q3.3.1, Q3.3.2, Q3.2.5, Editing
+@unnumberedsubsec Q3.3.1: How do I select a rectangular region?
 
-VM supports MIME natively.
+Just select the region normally, then use the rectangle commands (e.g.
+@code{kill-rectangle} on it.  The region does not highlight as a
+rectangle, but the commands work just fine.
 
-You probably want to use the Tools for MIME (tm).  @xref{Q4.3.2}, for
-details.
+To actually sweep out rectangular regions with the mouse you can use
+@code{mouse-track-do-rectangle} which is assigned to @kbd{M-button1}.
+Then use rectangle commands.
 
-@email{trey@@cs.berkeley.edu, Trey Jackson} has an Emacs & MIME web page at
-@iftex
-@*
-@end iftex
-@uref{http://bmrc.berkeley.edu/~trey/emacs/mime.html}.
+You can also do the following to change default behavior to sweep out
+rectangular regions:
 
+@lisp
+(setq mouse-track-rectangle-p t)
+@end lisp
 
-Another possibility is RMIME.  You may find RMIME at
-@iftex
-@*
-@end iftex
-@uref{http://www.cinti.net/~rmoody/rmime/index.html}.
+You can also change this with Customize.
+Select from the @code{Options} menu
+@code{Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...} or type
+@kbd{M-x customize @key{RET} mouse @key{RET}}.
 
 
-@node Q4.3.2, Q4.3.3, Q4.3.1, Subsystems
-@unnumberedsubsec Q4.3.2: What is TM and where do I get it?
+@example
+ mouse-track-do-rectangle: (event)
+   -- an interactive compiled Lisp function.
+ Like `mouse-track' but selects rectangles instead of regions.
+@end example
 
-TM stands for @dfn{Tools for MIME} and not Tiny MIME.  TM integrates
-with all major XEmacs packages like Gnus (all flavors), VM, MH-E, and
-mailcrypt.  It provides totally transparent and trouble-free MIME
-support.  When appropriate a message will be decoded in place in an
-XEmacs buffer.
+@node Q3.3.2, Q3.3.3, Q3.3.1, Editing
+@unnumberedsubsec Q3.3.2: How can I turn off or change highlighted selections?
 
-TM now comes as a package with XEmacs 19.16 and XEmacs 20.2.
+The @code{zmacs} mode allows for what some might call gratuitous
+highlighting for selected regions (either by setting mark or by using
+the mouse).  This is the default behavior.  To turn off, add the
+following line to your @file{init.el} file:
 
-TM was written by @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} and
-@email{shuhei-k@@jaist.ac.jp, KOBAYASHI
-Shuhei}.
+@lisp
+(setq zmacs-regions nil)
+@end lisp
 
-It is based on the work of @email{umerin@@mse.kyutech.ac.jp, UMEDA
-Masanobu}, the original writer of GNUS.
+You can also change this with Customize.  Select from the
+@code{Options} menu
+@code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs Regions}
+or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
 
-The following information is from the @file{README}:
+To change the face for selection, look at @code{Options->Advanced (Customize)}
+on the menubar.
 
-@dfn{tm} is a MIME package for GNU Emacs.
-tm has following functions:
+@node Q3.3.3, Q3.3.4, Q3.3.2, Editing
+@unnumberedsubsec Q3.3.3: How do I cause typing on an active region to remove it?
 
-@itemize @bullet
-@item MIME style multilingual header.
-@item MIME message viewer (mime/viewer-mode).
-@item MIME message composer (mime/editor-mode).
-@item MIME extenders for mh-e, GNUS, RMAIL and VM.
-@end itemize
+I want to change things so that if I select some text and start typing,
+the typed text replaces the selected text, similar to Motif.
 
-tm is available from following anonymous ftp sites:
-@itemize @bullet
-@comment @item @uref{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/mime/} (Japan).
-@comment @item @uref{ftp://ftp.nis.co.jp/pub/gnu/emacs-lisp/tm/} (Japan).
-@comment @c The host above is unknown.
-@comment @item @uref{ftp://ftp.nisiq.net/pub/gnu/emacs-lisp/tm/} (US).
-@comment @item @uref{ftp://ftp.miranova.com/pub/gnus/jaist.ac.jp/} (US).
-@item @uref{ftp://ftp.unicamp.br/pub/mail/mime/tm/} (Brasil).
-@item @uref{ftp://ftp.th-darmstadt.de/pub/editors/GNU-Emacs/lisp/mime/} (Germany).
-@item @uref{ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/} (Germany).
-@end itemize
+You want to use something called @dfn{pending delete}.  Pending delete
+is what happens when you select a region (with the mouse or keyboard)
+and you press a key to replace the selected region by the key you typed.
+Usually backspace kills the selected region.
 
-Don't let the installation procedure & instructions stop you from trying
-this package out---it's much simpler than it looks, and once installed,
-trivial to use.
+To get this behavior, ensure that you have the @file{pc} package
+installed, and add the following lines to your
+@file{init.el}:
 
-@email{youngs@@xemacs.org, Steve Youngs} writes:
+@lisp
+(cond
+ ((fboundp 'turn-on-pending-delete)
+  (turn-on-pending-delete))
+ ((fboundp 'pending-delete-on)
+  (pending-delete-on t)))
+@end lisp
 
-@quotation
-All the major Emacs Lisp based MUAs (Gnus, MH-E, and VM) all do their
-own thing when it comes to MIME so you won't need TM to get MIME support
-in these packages.
-@end quotation
+Note that this will work with both Backspace and Delete.  This code is a
+tad more complicated than it has to be for XEmacs in order to make it
+more portable.
 
-@node Q4.3.3, Q4.3.4, Q4.3.2, Subsystems
-@unnumberedsubsec Q4.3.3: Why isn't this @code{movemail} program working?
+@node Q3.3.4, Q3.3.5, Q3.3.3, Editing
+@unnumberedsubsec Q3.3.4: Can I turn off the highlight during isearch?
 
-Ben Wing @email{ben@@xemacs.org} writes:
+I do not like my text highlighted while I am doing isearch as I am not
+able to see what's underneath.  How do I turn it off?
 
-@quotation
-It wasn't chown'ed/chmod'd correctly.
-@end quotation
+Put the following in your @file{init.el}:
 
-@node Q4.3.4, Q4.3.5, Q4.3.3, Subsystems
-@unnumberedsubsec Q4.3.4: Movemail is also distributed by Netscape?  Can that cause problems?
+@lisp
+(setq isearch-highlight nil)
+@end lisp
 
-@email{steve@@xemacs.org, Steve Baur} writes:
+You can also change this with Customize. Type
+@kbd{M-x customize-variable @key{RET} isearch-highlight @key{RET}}.
 
-@quotation
-Yes.  Always use the movemail installed with your XEmacs.  Failure to do
-so can result in lost mail.
-@end quotation
+Note also that isearch-highlight affects query-replace and ispell.
+Instead of disabling isearch-highlight you may find that a better
+solution consists of customizing the @code{isearch} face.
 
-Please refer to @email{jwz@@jwz.org, Jamie Zawinski's} notes at
-@iftex
-@*
-@end iftex
-@uref{http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/movemail.html}.
-In particular, this document will show you how to make Netscape use the
-version of movemail configured for your system by the person who built
-XEmacs.
+@node Q3.3.5, Q3.3.6, Q3.3.4, Editing
+@unnumberedsubsec Q3.3.5: Why is killing so slow?
 
-@node Q4.3.5, Q4.4.1, Q4.3.4, Subsystems
-@unnumberedsubsec Q4.3.5: Where do I find pstogif (required by tm)?
+This actually is an X Windows question, although you'll notice it with
+keyboard operations as well as while using the GUI.  Basically, there
+are four ways to communicate interprogram via the X server:
 
-pstogif is part of the latex2html package.
+@table @strong
+@item Primary selection
+a transient selection that gets replaced every time a new selection is made
 
-@email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
+@item Secondary selection
+for "exchanging" with the primary selection
 
-latex2html is best found at the CTAN hosts and their mirrors
-in
-@iftex
-@*
-@end iftex
-@file{tex-archive/support/latex2html}.
+@item Cut buffers
+a clipboard internal to the X server (deprecated)
 
-CTAN hosts are:
+@item Clipboard selection
+a selection with a notification protocol that allows a separate app to
+manage the clipboard
+@end table
 
-@itemize @bullet
-@item @uref{ftp://ftp.tex.ac.uk/tex-archive/support/latex2html/}.
-@item @uref{ftp://ftp.dante.de/tex-archive/support/latex2html/}.
-@end itemize
+The cut buffers are deprecated because managing them is even more
+inefficient than the clipboard notification protocol.  The primary
+selection works fine for many users and applications, but is not very
+robust under intensive or sophisticated use.
 
-There is a good mirror at ftp.cdrom.com;
-@iftex
-@*
-@end iftex
-@uref{ftp://ftp.cdrom.com/pub/tex/ctan/support/latex2html/}.
+In Motif and MS Windows, a clipboard has become the primary means for
+managing cut and paste.  These means that "modern" applications tend to
+be oriented toward a true clipboard, rather than the primary selection.
+(On Windows, there is nothing equivalent to the primary selection.)
+It's not that XEmacs doesn't support the simple primary selection
+method, it's that more and more other applications don't.
 
-@node Q4.4.1, Q4.4.2, Q4.3.5, Subsystems
-@unnumberedsec 4.4: Sparcworks, EOS, and WorkShop
-@unnumberedsubsec Q4.4.1: What is SPARCworks, EOS, and WorkShop?
+So the slowdown occurs because XEmacs now engages in the clipboard
+notification protocol on @emph{every} kill.  This is especially slow on
+Motif.
 
-@email{turner@@lanl.gov, John Turner} writes:
+With most people running most clients and server on the same host, and
+many of the rest working over very fast communication, you may expect
+that the situation is not going to improve.
 
-@quotation
-SPARCworks is SunSoft's development environment, comprising compilers
-(C, C++, FORTRAN 77, Fortran 90, Ada, and Pascal), a debugger, and other
-tools such as TeamWare (for configuration management), MakeTool, etc.
-@end quotation
+There are a number of workarounds.  The most effective is to use a
+special command to do selection ownership only when you intend to paste
+to another application.  Useful commands are @code{kill-primary-selection}
+and @code{copy-primary-selection}.  These work only on text selected
+with the mouse (probably; experiment), and are bound by default to the
+@kbd{Cut} and @kbd{Copy}, respectively, buttons on the toolbar.
+@code{copy-primary-selection} is also bound to @kbd{C-Insert}.  You can
+yank the clipboard contents with @code{yank-primary-selection}, bound to
+the @kbd{Paste} toolbar button and @kbd{Sh-Insert}.
 
-See @uref{http://www.sun.com/software/Developer-products/}
-for more info.
+If you are communicating by cut and paste with applications that use the
+primary selection, then you can customize
+@code{interprogram-cut-function} to @code{nil}, restoring the XEmacs
+version 20 behavior.  How can you tell if a program will support this?
+Motifly-correct programs require the clipboard; you lose.  For others,
+only by trying it.  You also need to customize the complementary
+@code{interprogram-paste-function} to @code{nil}.  (Otherwise
+XEmacs-to-XEmacs pastes will not work correctly.)
 
-EOS stands for "Era on SPARCworks", but I don't know what Era stands
-for.
+You may get some relief on Motif by setting
+@code{x-selection-strict-motif-ownership} to nil, but this means you will
+only intermittently be able to paste XEmacs kills to Motif applications.
 
-EOS is the integration of XEmacs with the SPARCworks debugger.  It
-allows one to use an XEmacs frame to view code (complete with
-fontification, etc.), set breakpoints, print variables, etc., while
-using the SPARCworks debugger.  It works very well and I use it all the
-time.
+Thanks to Jeff Mincy and Glynn Clements for corrections.
 
-@email{cthomp@@xemacs.org, Chuck Thompson} writes:
+@node Q3.3.6, Q3.4.1, Q3.3.5, Editing
+@unnumberedsubsec Q3.3.6: Why does @kbd{M-w} take so long?
 
-@quotation
-Era stood for "Emacs Rewritten Again".  It was what we were calling the
-modified version of Lucid Emacs for Sun when I was dragged, er, allowed
-to work on this wonderful editor.
-@end quotation
+It actually doesn't.  It leaves the region visible for a second so that
+you can see what area is being yanked.  If you start working, though, it
+will immediately complete its operation.  In other words, it will only
+delay for a second if you let it.
 
-@email{martin@@xemacs.org, Martin Buchholz} writes:
+@unnumberedsec 3.4: Editing Source Code
 
-@quotation
-EOS is being replaced with a new graphical development environment
-called Sun WorkShop, which is currently (07/96) in Alpha Test.  For more
-details, check out
-@iftex
-@*
-@end iftex
-@uref{http://www.sun.com/software/Products/Developer-products}.
-@end quotation
+@node Q3.4.1, Q3.4.2, Q3.3.6, Editing
+@unnumberedsubsec Q3.4.1: I do not like cc-mode.  How do I use the old c-mode?
 
-@node Q4.4.2, Q4.5.1, Q4.4.1, Subsystems
-@unnumberedsubsec Q4.4.2: How do I start the Sun Workshop support in XEmacs 21?
+Well, first off, consider if you really want to do this.  cc-mode is
+much more powerful than the old c-mode.  If you're having trouble
+getting your old offsets to work, try using @code{c-set-offset} instead.
+You might also consider using the package @code{cc-compat}.
 
-Add the switch ---with-workshop to the configure command when building
-XEmacs and put the following in one of your startup files
-(e.g. site-start.el or .emacs):
+But, if you still insist, add the following lines to your @file{init.el}:
 
 @lisp
-(when (featurep 'tooltalk)
-  (load "tooltalk-macros")
-  (load "tooltalk-util")
-  (load "tooltalk-init"))
-(when (featurep 'sparcworks)
-  (load "sunpro-init")
-  (load "ring")
-  (load "comint")
-  (load "annotations")
-  (sunpro-startup))
+(fmakunbound 'c-mode)
+(makunbound 'c-mode-map)
+(fmakunbound 'c++-mode)
+(makunbound 'c++-mode-map)
+(makunbound 'c-style-alist)
+(load-library "old-c-mode")
+(load-library "old-c++-mode")
 @end lisp
 
-If you are not using the latest Workshop (5.0) you have to apply the
-following patch:
+This must be done before any other reference is made to either c-mode or
+c++-mode.
 
-@format
---- /opt/SUNWspro/lib/eserve.el.ORIG    Fri May 14 15:23:26 1999
-+++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999
-@@@@ -42,7 +42,7 @@@@
- (defvar running-xemacs nil "t if we're running XEmacs")
- (defvar running-emacs  nil "t if we're running GNU Emacs 19")
+@node Q3.4.2,  , Q3.4.1, Editing
+@unnumberedsubsec Q3.4.2: How do you make XEmacs indent CL if-clauses correctly?
 
--(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
-+(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
-     (setq running-xemacs t)
-     (setq running-emacs  t))
-@end format
+I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the
+same amount instead of indenting the 3rd clause differently from the
+first two.
 
+The package @code{cl-indent} that comes with XEmacs sets up this kind
+of indentation by default.  @code{cl-indent} also knows about many
+other CL-specific forms.  To use @code{cl-indent}, one can do this:
 
+@lisp
+(setq lisp-indent-function 'common-lisp-indent-function)
+@end lisp
 
-@node Q4.5.1, Q4.6.1, Q4.4.2, Subsystems
-@unnumberedsec 4.5: Energize
-@unnumberedsubsec Q4.5.1: What is/was Energize?
+One can also customize @file{cl-indent.el} so it mimics the default
+@code{if} indentation @code{then} indented more than the @code{else}.
+Here's how:
 
-@email{gray@@meteor.harlequin.com, David N Gray} writes:
-@quotation
-The files in @file{lisp/energize} are to enable Emacs to interface with
-the "Energize Programming System", a C and C++ development environment,
-which was a product of Lucid, Inc.  Tragically, Lucid went out of
-business in 1994, so although Energize is still a great system, if you
-don't already have it, there isn't any way to get it now.  (Unless you
-happen to be in Japan; INS Engineering may still be selling it there.
-Tartan bought the rights to sell it in the rest of the world, but never
-did so.)
-@end quotation
+@lisp
+(put 'if 'common-lisp-indent-function '(nil nil &body))
+@end lisp
 
-@node Q4.6.1, Q4.7.1, Q4.5.1, Subsystems
-@unnumberedsec 4.6: Infodock
-@unnumberedsubsec Q4.6.1: What is Infodock?
+@node Display, External Subsystems, Editing, Top
+@unnumbered 4 Display Functions
 
-@uref{http://sourceforge.net/projects/infodock/, InfoDock} is an
-integrated productivity toolset, mainly aimed at technical people,
-hosted at SourceForge.
+This is part 4 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to the display-related capabilities of XEmacs
+(fonts, colors, modeline, menubar, toolbar, scrollbar, etc.) and how
+to customize them.
 
-InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of
-the power of Emacs, but with an easier to use and more comprehensive
-menu-based user interface.  The bottom portion of this text describes
-how it differs from XEmacs and GNU Emacs from the Free Software
-Foundation.
+@menu
+4.0: Textual Fonts and Colors
+* Q4.0.1::    How do I specify a font?
+* Q4.0.2::    How do I set the text, menu and modeline fonts?
+* Q4.0.3::    How can I set color options from @file{init.el}?
+* Q4.0.4::    How can I set the colors when highlighting a region?
+* Q4.0.5::    How can I limit color map usage?
+* Q4.0.6::    My tty supports color, but XEmacs doesn't use them.
+* Q4.0.7::    Can I have pixmap backgrounds in XEmacs?
+* Q4.0.8::    How do I display non-ASCII characters?
+* Q4.0.9::    Font selections in don't get saved after @code{Save Options}.
+
+4.1: Syntax Highlighting (Font Lock)
+* Q4.1.1::    How can I do source code highlighting using font-lock?
+* Q4.1.2::    How do I get @samp{More} Syntax Highlighting on by default?
+
+4.2: The Modeline
+* Q4.2.1::    How can I make the modeline go away?
+* Q4.2.2::    How do you have XEmacs display the line number in the modeline?
+* Q4.2.3::    How do I get XEmacs to put the time of day on the modeline?
+* Q4.2.4::    How can I change the modeline color based on the mode used?
+
+4.3: The Cursor
+* Q4.3.1::    Is there a way to make the bar cursor thicker?
+* Q4.3.2::    Is there a way to get back the block cursor?
+* Q4.3.3::    Can I make the cursor blink?
+
+4.4: The Menubar
+* Q4.4.1::    How do I get rid of the menubar?
+* Q4.4.2::    How can I customize the menubar?
+* Q4.4.3::    How do I enable use of the keyboard (@kbd{Alt}) to access menu items?
+* Q4.4.4::    How do I control how many buffers are listed in the menu @code{Buffers List}?
+* Q4.4.5::    Resources like @code{Emacs*menubar*font} are not working?
+
+4.5: The Toolbar
+* Q4.5.1::    How do I get rid of the toolbar?
+* Q4.5.2::    How can I customize the toolbar?
+* Q4.5.3::    How can I bind a key to a function to toggle the toolbar?
+* Q4.5.4::    @samp{Can't instantiate image error...} in toolbar
+
+4.6: Scrollbars and Scrolling
+* Q4.6.1::    How can I disable the scrollbar?
+* Q4.6.2::    How can I change the scrollbar width?
+* Q4.6.3::    How can I use resources to change scrollbar colors?
+* Q4.6.4::    Moving the scrollbar can move the point; can I disable this?
+* Q4.6.5::    Scrolling one line at a time.
+* Q4.6.6::    How can I turn off automatic horizontal scrolling in specific modes?
+* Q4.6.7::    I find auto-show-mode disconcerting.  How do I turn it off?
+
+4.7: The Gutter Tabs, The Progress Bar, Widgets
+* Q4.7.1::    How can I disable the gutter tabs?
+* Q4.7.2::    How can I disable the progress bar?
+* Q4.7.3::    There are bugs in the gutter or widgets.
+* Q4.7.4::    How can I customize the gutter or gutter tabs?
+@end menu
 
-InfoDock is aimed at people who want a free, turn-key productivity
-environment.  Although InfoDock is customizable, it is not intended for
-people who like basic versions of Emacs which need to be customized
-extensively for local use; standard Emacs distributions are better for
-such uses.  InfoDock is for those people who want a complete,
-pre-customized environment in one package, which they need not touch
-more than once or twice a year to update to new revisions.
+@unnumberedsec 4.0: Textual Fonts and Colors
 
-InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX,
-and Intel Linux systems.  It is intended for use on a color display,
-although most features will work on monochrome monitors.  Simply unpack
-InfoDock according to the instructions in the ID-INSTALL file and you
-are ready to run.
+@node Q4.0.1, Q4.0.2, Display, Display
+@unnumberedsubsec Q4.0.1: How do I specify a font?
 
-The InfoDock Manual is concise, yet sufficient as a user guide for users
-who have never used an Emacs-type editor before.  For users who are
-already familiar with Emacs, it supplements the information in the GNU
-Emacs Manual.
+#### Update me.
 
-InfoDock menus are much more extensive and more mature than standard
-Emacs menus.  Each menu offers a @samp{Manual} item which displays
-documentation associated with the menu's functions.
+In 21.4 and above, you can use the @samp{Options} menu to change the font.
+You can also do it in your init file, e.g. like this (for MS Windows):
 
-@noindent
-Four types of menubars are provided:
-@enumerate
-@item
-An extensive menubar providing access to global InfoDock commands.
-@item
-Mode-specific menubars tailored to the current major mode.
-@item
-A simple menubar for basic editing to help novices get started with InfoDock.
-@item
-The standard XEmacs menubar.
-@end enumerate
+@display
+    (set-face-font 'default "Lucida Console:Regular:10")
+    (set-face-font 'modeline "MS Sans Serif:Regular:10")
+@end display
 
-Most modes also include mode-specific popup menus.  Additionally, region and
-rectangle popup menus are included.
+@node Q4.0.2, Q4.0.3, Q4.0.1, Display
+@unnumberedsubsec Q4.0.2: How do I set the text, menu and modeline fonts?
 
-@samp{Hyperbole}, the everyday information manager, is a core part of
-InfoDock.  This provides context-sensitive mouse keys, a rolodex-type
-contact manager, programmable hypertext buttons, and an autonumbered
-outliner with embedded hyperlink anchors.
+#### Update me.
 
-The @samp{OO-Browser}, a multi-language object-oriented code browser, is a
-standard part of InfoDock.
+Note that you should use @samp{Emacs.} and not @samp{Emacs*} when
+setting face values.
 
-InfoDock saves a more extensive set of user options than other Emacs
-versions.
+In @file{.Xresources}:
 
-InfoDock inserts a useful file header in many file types, showing the
-author, summary, and last modification time of each file.  A summary
-program can then be used to summarize all of the files in a directory,
-for easy MANIFEST file creation.
+@example
+Emacs.default.attributeFont:  -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
+Emacs*menubar*font:           fixed
+Emacs.modeline.attributeFont: fixed
+@end example
 
-Your working set of buffers is automatically saved and restored (if you
-answer yes to a prompt) between InfoDock sessions.
+This is confusing because @samp{default} and @samp{modeline} are face
+names, and can be found listed with all faces in the current mode by
+using @kbd{M-x set-face-font (enter) ?}.  They use the face-specific
+resource @samp{attributeFont}.
 
-Refined color choices for code highlighting are provided for both dark and
-light background display frames.
+On the other hand, @samp{menubar} is a normal X thing that uses the
+resource @samp{font}.  With Motif it @emph{may be} necessary to use
+@samp{fontList} @emph{instead of} @samp{font}.  In @emph{non-Motif}
+configurations with Mule it @emph{is} necessary to use @samp{fontSet}
+instead of @samp{font}.  (Sorry, there just is no simple recipe here.)
 
-The @kbd{C-z} key prefix performs frame-based commands which parallel the
-@kbd{C-x} key prefix for window-based commands.
-
-The Smart Menu system is included for producing command menus on dumb
-terminals.
+@node Q4.0.3, Q4.0.4, Q4.0.2, Display
+@unnumberedsubsec Q4.0.3: How can I set color options from @file{init.el}?
 
-Lisp libraries are better categorized according to function.
+How can I set the most commonly used color options from my
+@file{init.el} instead of from my @file{.Xresources}?
 
-Extensions and improvements to many areas of Emacs are included, such as:
-paragraph filling, mail reading with Rmail, shell handling, outlining, code
-highlighting and browsing, and man page browsing.
+Like this:
 
-InfoDock questions, answers and discussion should go to the mail list
-@iftex
-@*
-@end iftex
-@email{infodock@@infodock.com}.  Use
-@email{infodock-request@@infodock.com} to be added or removed from the
-list.  Always include your InfoDock version number when sending help
-requests.
+@lisp
+(set-face-background 'default      "bisque") ; frame background
+(set-face-foreground 'default      "black") ; normal text
+(set-face-background 'zmacs-region "red") ; When selecting w/
+                                        ; mouse
+(set-face-foreground 'zmacs-region "yellow")
+(set-face-font       'default      "*courier-bold-r*120-100-100*")
+(set-face-background 'highlight    "blue") ; Ie when selecting
+                                        ; buffers
+(set-face-foreground 'highlight    "yellow")
+(set-face-background 'modeline     "blue") ; Line at bottom
+                                        ; of buffer
+(set-face-foreground 'modeline     "white")
+(set-face-font       'modeline     "*bold-r-normal*140-100-100*")
+(set-face-background 'isearch      "yellow") ; When highlighting
+                                        ; while searching
+(set-face-foreground 'isearch      "red")
+(setq x-pointer-foreground-color   "black") ; Adds to bg color,
+                                        ; so keep black
+(setq x-pointer-background-color   "blue") ; This is color
+                                        ; you really
+                                        ; want ptr/crsr
+@end lisp
 
-InfoDock is available across the Internet via anonymous FTP.  To get
-it, first move to a directory into which you want the InfoDock archive
-files placed.  We will call this <DIST-DIR>.
+@node Q4.0.4, Q4.0.5, Q4.0.3, Display
+@unnumberedsubsec Q4.0.4: How can I set the colors when highlighting a region?
 
-@example
-   cd <DIST-DIR>
-@end example
+How can I set the background/foreground colors when highlighting a
+region?
 
-Ftp to ftp.xemacs.org  (Internet Host ID = 128.174.252.16):
+You can change the face @code{zmacs-region} either in your
+@file{.Xresources}:
 
 @example
-   prompt> ftp ftp.xemacs.org
+Emacs.zmacs-region.attributeForeground: firebrick
+Emacs.zmacs-region.attributeBackground: lightseagreen
 @end example
 
-Login as @samp{anonymous} with your own <user-id>@@<site-name> as a password.
+or in your @file{init.el}:
 
-@example
-   Name (ftp.xemacs.org): anonymous
-   331 Guest login ok, send your complete e-mail address as password.
-   Password: -<your-user-id>@@<your-domain>
-   230 Guest login ok, access restrictions apply.
-@end example
+@lisp
+(set-face-background 'zmacs-region "red")
+(set-face-foreground 'zmacs-region "yellow")
+@end lisp
 
-Move to the location of the InfoDock archives:
+@node Q4.0.5, Q4.0.6, Q4.0.4, Display
+@unnumberedsubsec Q4.0.5: How can I limit color map usage?
 
-@example
-   ftp> cd pub/infodock
-@end example
+I'm using Netscape (or another color grabber like XEmacs);
+is there any way to limit the number of available colors in the color map?
+
+Answer: No, but you can start Netscape before XEmacs, and it will use
+the closest available color if the colormap is full.  You can also limit
+the number of colors Netscape uses, using the flags -mono, -ncols <#> or
+-install (for mono, limiting to <#> colors, or for using a private color
+map).
 
-Set your transfer mode to binary:
+If you have the money, another solution would be to use a truecolor or
+direct color video.
 
-@example
-   ftp> bin
-   200 Type set to I.
-@end example
+@node Q4.0.6, Q4.0.7, Q4.0.5, Display
+@unnumberedsubsec Q4.0.6: My tty supports color, but XEmacs doesn't use them.
 
-Turn off prompting:
+XEmacs tries to automatically determine whether your tty supports color,
+but sometimes guesses wrong.  In that case, you can make XEmacs Do The
+Right Thing using this Lisp code:
 
-@example
-   ftp> prompt
-   Interactive mode off.
-@end example
+@lisp
+(if (eq 'tty (device-type))
+    (set-device-class nil 'color))
+@end lisp
 
-Retrieve the InfoDock archives that you want, either by using a
-@samp{get <file>} for each file you want or by using the following to
-get a complete distribution, including all binaries:
+@node Q4.0.7, Q4.0.8, Q4.0.6, Display
+@unnumberedsubsec Q4.0.7: Can I have pixmap backgrounds in XEmacs?
+@c New
+@email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes:
 
-@example
-   ftp> mget ID-INSTALL
-   ftp> mget id-*
-@end example
+@quotation
+There are several ways to do it.  For example, you could specify a
+default pixmap image to use in your @file{~/.Xresources}, e.g.,
 
-Close the FTP connection:
 
 @example
-   ftp> quit
-   221 Goodbye.
+  Emacs*EmacsFrame.default.attributeBackgroundPixmap: /path/to/image.xpm
 @end example
 
-Read the @file{ID-INSTALL} file which you just retrieved for
-step-by-step installation instructions.
-
-@node Q4.7.1, Q4.7.2, Q4.6.1, Subsystems
-@unnumberedsec 4.7: Other Unbundled Packages
-@unnumberedsubsec Q4.7.1: What is AUC TeX?  Where do you get it?
 
-AUC TeX is a package written by @email{abraham@@dina.kvl.dk, Per Abrahamsen}.
-Starting with XEmacs 19.16, AUC TeX is bundled with XEmacs.  The
-following information is from the @file{README} and website.
-
-AUC TeX is an extensible package that supports writing and formatting
-TeX files for most variants of GNU Emacs. Many different macro packages
-are supported, including AMS TeX, LaTeX, and TeXinfo.
-
-The most recent version is always available by ftp at
-@iftex
-@*
-@end iftex
-@uref{ftp://sunsite.dk/packages/auctex/auctex.tar.gz}.
-
-In case you don't have access to anonymous ftp, you can get it by an
-email request to @email{ftpmail@@decwrl.dec.com}.
+and then reload ~/.Xresources and restart XEmacs.  Alternatively,
+since each face can have its own pixmap background, a better way
+would be to set a face's pixmap within your XEmacs init file, e.g.,
 
-WWW users may want to check out the AUC TeX page at
-@iftex
-@*
-@end iftex
-@uref{http://sunsite.dk/auctex/}.
+@lisp
+  (set-face-background-pixmap 'default "/path/to/image.xpm")
+  (set-face-background-pixmap 'bold    "/path/to/another_image.xpm")
+@end lisp
 
-@node Q4.7.2, Q4.7.3, Q4.7.1, Subsystems
-@unnumberedsubsec Q4.7.2: Are there any Emacs Lisp Spreadsheets?
+and so on.  You can also do this interactively via @kbd{M-x edit-faces}.
 
-Yes.  Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at
-@iftex
-@*
-@end iftex
-@uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}.
+@end quotation
 
-@node Q4.7.3, Q4.7.4, Q4.7.2, Subsystems
-@unnumberedsubsec Q4.7.3: [This question intentionally left blank]
+@node Q4.0.8, Q4.0.9, Q4.0.7, Display
+@unnumberedsubsec Q4.0.8: How do I display non-ASCII characters?
+@c New
 
-@node Q4.7.4, Q4.7.5, Q4.7.3, Subsystems
-@unnumberedsubsec Q4.7.4: Problems installing AUC TeX.
+If you're using a Mule-enabled XEmacs, then display is automatic.  If
+you're not seeing the characters you expect, either (1) you don't have
+appropriate fonts available or (2) XEmacs did not correctly detect the
+coding system (@pxref{Recognize Coding, , , xemacs}).  In case (1),
+install fonts as is customary for your platform.  In case (2), you
+need to tell XEmacs explicitly what coding systems you're using.
+@ref{Specify Coding, , , xemacs}.
 
-@email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
+If your XEmacs is not Mule-enabled, and for some reason getting a
+Mule-enabled XEmacs seems like the wrong thing to do, all is not lost.
+You can arrange it by brute force.  In @file{event-Xt.c} (suppress the
+urge to look in this file---play Doom instead, because you'll survive
+longer), it is written:
 
 @quotation
-AUC TeX works fine on both stock Emacs and XEmacs has been doing so for
-a very very long time. This is mostly due to the work of
-@email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu}
-package.  Which leads to what is probably the problem...
+In a non-Mule world, a user can still have a multi-lingual editor, by
+doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all
+their Latin-2 buffers, etc.
 @end quotation
 
-Most problems with AUC TeX are one of two things:
-
-@itemize @bullet
-@item
-The TeX-lisp-directory in @file{tex-site.el} and the makefile don't
-match.
-
-Fix: make sure you configure AUC TeX properly @strong{before} installing.
-
-@item
-You have an old version of easymenu.el in your path.
-
-Fix: use @code{locate-library} and remove old versions to make sure it
-@strong{only} finds the one that came with XEmacs.
-@end itemize
-
-
-@node Q4.7.5, Q4.7.6, Q4.7.4, Subsystems
-@unnumberedsubsec Q4.7.5: Is there a reason for an Emacs package not to be included in XEmacs?
-
-The reason for an Emacs package not to be included in XEmacs is
-usually one or more of the following:
-
-@enumerate
-@item
-The package has not been ported to XEmacs.  This will typically happen
-when it uses GNU-Emacs-specific features, which make it fail under
-XEmacs.
-
-Porting a package to XEmacs can range from a trivial amount of change to
-a partial or full rewrite.  Fortunately, the authors of modern packages
-usually choose to support both Emacsen themselves.
-
-@item
-The package has been decided not to be appropriate for XEmacs.  It may
-have an equivalent or better replacement within XEmacs, in which case
-the developers may choose not to burden themselves with supporting an
-additional package.
-
-Each package bundled with XEmacs means more work for the maintainers,
-whether they want it or not.  If you are ready to take over the
-maintenance responsibilities for the package you port, be sure to say
-so---we will more likely include it.
-
-@item
-The package simply hasn't been noted by the XEmacs development.  If
-that's the case, the messages like yours are very useful for attracting
-our attention.
-
-@item
-The package was noted by the developers, but they simply haven't yet
-gotten around to including/porting it.  Wait for the next release or,
-even better, offer your help.  It will be gladly accepted and
-appreciated.
-@end enumerate
-
-@node Q4.7.6,  Q4.7.7, Q4.7.5, Subsystems
-@unnumberedsubsec Q4.7.5: Is there a MatLab mode?
-
-Yes, a matlab mode and other items are available at the
-@uref{ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons,
-MathWorks' emacs_add_ons ftp directory}.
+For the related problem of @emph{inputting} non-ASCII characters in a
+non-Mule XEmacs, @xref{Q3.0.6, How can you type in special characters
+in XEmacs?}.
 
-@node Q4.7.7,  , Q4.7.6, Subsystems
-@unnumberedsubsec Q4.7.7: Can I edit files on other hosts?
+@node Q4.0.9, Q4.1.1, Q4.0.8, Display
+@unnumberedsubsec Q4.0.9: Font selections in don't get saved after @code{Save Options}.
 
-Yes.  Of course XEmacs can use any network file system (such as NFS or
-Windows file sharing) you have available, and includes some
-optimizations and safety features appropriate to those environments.
+@email{mannj@@ll.mit.edu, John Mann} writes:
 
-It is also possible to transparently edit files via FTP, ssh, or rsh.  That
-is, XEmacs makes a local copy using the transport in the background, and
-automatically refreshes the remote original from that copy when you save
-it.  XEmacs also is capable of doing file system manipulations like
-creating and removing directories and files.  The FTP interface is
-provided by the standard @samp{efs} package @ref{Top, EFS, , efs}.  The
-ssh/rsh interface is provided by the optional @samp{tramp} package
-@ref{Top, TRAMP, , tramp}.
+@quotation
+You have to go to @samp{Options->Menubars} and unselect
+@samp{Frame-Local Font Menu}.  If this option is selected, font changes
+are only applied to the @emph{current} frame and do @emph{not} get saved
+when you save options.
+@end quotation
 
-@node Miscellaneous, MS Windows, Subsystems, Top
-@unnumbered 5 The Miscellaneous Stuff
+Also, set the following in your @file{init.el}:
 
-This is part 5 of the XEmacs Frequently Asked Questions list.  This
-section is devoted to anything that doesn't fit neatly into the other
-sections.
+@lisp
+(setq options-save-faces t)
+@end lisp
 
-@menu
-Major & Minor Modes:
-* Q5.0.1::      How can I do source code highlighting using font-lock?
-* Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
-* Q5.0.3::      How do I get @samp{More} Syntax Highlighting on by default?
-* Q5.0.4::      How can I enable auto-indent and/or Filladapt?
-* Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
-* Q5.0.6::      How do I start up a second shell buffer?
-* Q5.0.7::      Telnet from shell filters too much.
-* Q5.0.8::      Why does edt emulation not work?
-* Q5.0.9::      How can I emulate VI and use it as my default mode?
-* Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     [This question intentionally left blank]
-* Q5.0.12::     How do I disable gnuserv from opening a new frame?
-* Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
-* Q5.0.14::     Strange things are happening in Shell Mode.
-* Q5.0.15::     Where do I get the latest CC Mode?
-* Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
-* Q5.0.17::     How can I get two instances of info?
-* Q5.0.18::     [This question intentionally left blank]
-* Q5.0.19::     Is there something better than LaTeX mode?
-* Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
-
-Emacs Lisp Programming Techniques:
-* Q5.1.1::      The difference in key sequences between XEmacs and GNU Emacs?
-* Q5.1.2::      Can I generate "fake" keyboard events?
-* Q5.1.3::      Could you explain @code{read-kbd-macro} in more detail?
-* Q5.1.4::      What is the performance hit of @code{let}?
-* Q5.1.5::      What is the recommended use of @code{setq}?
-* Q5.1.6::      What is the typical misuse of @code{setq}?
-* Q5.1.7::      I like the @code{do} form of cl, does it slow things down?
-* Q5.1.8::      I like recursion, does it slow things down?
-* Q5.1.9::      How do I put a glyph as annotation in a buffer?
-* Q5.1.10::     @code{map-extents} won't traverse all of my extents!
-* Q5.1.11::     My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
-
-Sound:
-* Q5.2.1::      How do I turn off the sound?
-* Q5.2.2::      How do I get funky sounds instead of a boring beep?
-* Q5.2.3::      What's NAS, how do I get it?
-* Q5.2.4::      Sunsite sounds don't play.
-
-Miscellaneous:
-* Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
-* Q5.3.2::      [This question intentionally left blank]
-* Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
-* Q5.3.4::      Getting @kbd{M-x lpr} to work with postscript printer.
-* Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
-* Q5.3.6::      [This question intentionally left blank]
-* Q5.3.7::      Can I have the end of the buffer delimited in some way?
-* Q5.3.8::      How do I insert today's date into a buffer?
-* Q5.3.9::      Are only certain syntactic character classes available for abbrevs?
-* Q5.3.10::     How can I get those oh-so-neat X-Face lines?
-* Q5.3.11::     How do I add new Info directories?
-* Q5.3.12::     What do I need to change to make printing work?
-@end menu
+@unnumberedsec 4.1: Syntax Highlighting (Font Lock)
 
-@node Q5.0.1, Q5.0.2, Miscellaneous, Miscellaneous
-@unnumberedsec 5.0: Major & Minor Modes
-@unnumberedsubsec Q5.0.1: How can I do source code highlighting using font-lock?
+@node Q4.1.1, Q4.1.2, Q4.0.9, Display
+@unnumberedsubsec Q4.1.1: How can I do source code highlighting using font-lock?
 
 For most modes, font-lock is already set up and just needs to be turned
 on.  This can be done by adding the line:
@@ -5065,7 +5623,7 @@ on.  This can be done by adding the line:
 (require 'font-lock)
 @end lisp
 
-to your @file{init.el}/@file{.emacs}. (You can turn it on for the
+to your @file{init.el}. (You can turn it on for the
 current buffer and session only by @kbd{M-x font-lock-mode}.) See the
 file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs
 versions prior to 21.4) for more information.
@@ -5077,1101 +5635,718 @@ versions prior to 21.4) for more information.
 See also @code{Syntax Highlighting} from the @code{Options} menu.
 Remember to save options.
 
-@node Q5.0.2, Q5.0.3, Q5.0.1, Miscellaneous
-@unnumberedsubsec Q5.0.2: I do not like cc-mode.  How do I use the old c-mode?
-
-Well, first off, consider if you really want to do this.  cc-mode is
-much more powerful than the old c-mode.  If you're having trouble
-getting your old offsets to work, try using @code{c-set-offset} instead.
-You might also consider using the package @code{cc-compat}.
-
-But, if you still insist, add the following lines to your @file{init.el}/@file{.emacs}:
-
-@lisp
-(fmakunbound 'c-mode)
-(makunbound 'c-mode-map)
-(fmakunbound 'c++-mode)
-(makunbound 'c++-mode-map)
-(makunbound 'c-style-alist)
-(load-library "old-c-mode")
-(load-library "old-c++-mode")
-@end lisp
-
-This must be done before any other reference is made to either c-mode or
-c++-mode.
-
-@node Q5.0.3, Q5.0.4, Q5.0.2, Miscellaneous
-@unnumberedsubsec Q5.0.3: How do I get @samp{More} Syntax Highlighting on by default?
+@node Q4.1.2, Q4.2.1, Q4.1.1, Display
+@unnumberedsubsec Q4.1.2: How do I get @samp{More} Syntax Highlighting on by default?
 
-Use the following code in your @file{init.el}/@file{.emacs}:
+Use the following code in your @file{init.el}:
 
 @lisp
 (setq-default font-lock-maximum-decoration t)
 @end lisp
 
-@c In versions of XEmacs prior to 19.14, you had to use a kludgy solution
-@c like this:
-@c
-@c @lisp
-@c (setq c-font-lock-keywords c-font-lock-keywords-2
-@c       c++-font-lock-keywords c++-font-lock-keywords-2
-@c       lisp-font-lock-keywords lisp-font-lock-keywords-2)
-@c @end lisp
-@c
-@c It will work for C, C++ and Lisp.
-@c
 See also @code{Syntax Highlighting} from the @code{Options} menu.
 Remember to save options.
 
-@node Q5.0.4, Q5.0.5, Q5.0.3, Miscellaneous
-@unnumberedsubsec Q5.0.4: How can I enable auto-indent and/or Filladapt?
+@unnumberedsec 4.2: The Modeline
 
-Put the following line in your @file{init.el}/@file{.emacs}:
+@node Q4.2.1, Q4.2.2, Q4.1.2, Display
+@unnumberedsubsec Q4.2.1: How can I make the modeline go away?
 
 @lisp
-(setq indent-line-function 'indent-relative-maybe)
+(set-specifier has-modeline-p nil)
 @end lisp
 
-If you want to get fancy, try the @code{filladapt} package available
-standard with XEmacs.  Put this into your @file{init.el}/@file{.emacs}:
+@node Q4.2.2, Q4.2.3, Q4.2.1, Display
+@unnumberedsubsec Q4.2.2: How do you have XEmacs display the line number in the modeline?
+
+Add the following line to your @file{init.el} file to
+display the line number:
 
 @lisp
-(require 'filladapt)
-(setq-default filladapt-mode t)
-(add-hook 'c-mode-hook 'turn-off-filladapt-mode)
+(line-number-mode 1)
 @end lisp
 
-This will enable Filladapt for all modes except C mode, where it doesn't
-work well.  To turn Filladapt on only in particular major modes, remove
-the @code{(setq-default ...)} line and use
-@code{turn-on-filladapt-mode}, like this:
+Use the following to display the column number:
 
 @lisp
-(add-hook 'text-mode-hook 'turn-on-filladapt-mode)
+(column-number-mode 1)
 @end lisp
 
-You can customize filling and adaptive filling with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Editing->Fill->Fill...}
-or type @kbd{M-x customize @key{RET} fill @key{RET}}.
-
-Note that well-behaving text-lookalike modes will run
-@code{text-mode-hook} by default (e.g. that's what Message does).  For
-the nasty ones, you'll have to provide the @code{add-hook}s yourself.
+Or select from the @code{Options} menu
+@iftex
+@*
+@end iftex
+@code{Advanced (Customize)->Emacs->Editing->Basics->Line Number Mode}
+and/or
+@iftex
+@*
+@end iftex
+@code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode}
 
-Please note that the @code{fa-extras} package is no longer useful.
+Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
 
-@node Q5.0.5, Q5.0.6, Q5.0.4, Miscellaneous
-@unnumberedsubsec Q5.0.5: How can I get XEmacs to come up in text/auto-fill mode by default?
+@node Q4.2.3, Q4.2.4, Q4.2.2, Display
+@unnumberedsubsec Q4.2.3: How do I get XEmacs to put the time of day on the modeline?
 
-Try the following lisp in your @file{init.el}/@file{.emacs}:
+Add the following line to your @file{init.el} file to
+display the time:
 
 @lisp
-(setq default-major-mode 'text-mode)
-(setq text-mode-hook 'turn-on-auto-fill)
+(display-time)
 @end lisp
 
-@strong{WARNING}: note that changing the value of
-@code{default-major-mode} from @code{fundamental-mode} can break a large
-amount of built-in code that expects newly created buffers to be in
-@code{fundamental-mode}.  (Changing from @code{fundamental-mode} to
-@code{text-mode} might not wreak too much havoc, but changing to
-something more exotic like a lisp-mode would break many Emacs packages).
+See @code{Customize} from the @code{Options} menu for customization.
 
-Note that Emacs by default starts up in buffer @code{*scratch*} in
-@code{initial-major-mode}, which defaults to
-@code{lisp-interaction-mode}. Thus adding the following form to your
-Emacs init file will cause the initial @code{*scratch*} buffer to be put
-into auto-fill'ed @code{text-mode}:
+@node Q4.2.4, Q4.3.1, Q4.2.3, Display
+@unnumberedsubsec Q4.2.4: How can I change the modeline color based on the mode used?
+
+You can use something like the following:
 
 @lisp
-(setq initial-major-mode
-      (lambda ()
-        (text-mode)
-        (turn-on-auto-fill)))
+(add-hook 'lisp-mode-hook
+          (lambda ()
+            (set-face-background 'modeline "red" (current-buffer))))
 @end lisp
 
-Note that after your init file is loaded, if
-@code{inhibit-startup-message} is @code{nil} (the default) and the
-startup buffer is @code{*scratch*} then the startup message will be
-inserted into @code{*scratch*}; it will be removed after a timeout by
-erasing the entire @code{*scratch*} buffer.  Keep in mind this default
-usage of @code{*scratch*} if you desire any prior manipulation of
-@code{*scratch*} from within your Emacs init file. In particular,
-anything you insert into @code{*scratch*} from your init file will be
-later erased. Also, if you change the mode of the @code{*scratch*}
-buffer, be sure that this will not interfere with possible later
-insertion of the startup message (e.g. if you put @code{*scratch*} into
-a nonstandard mode that has automatic font lock rules, then the startup
-message might get fontified in a strange foreign manner, e.g. as code in
-some programming language).
+Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
+colors change from the default set in your @file{init.el}.
+The change will only be made in the buffer you just entered (which
+contains the Lisp file you are editing) and will not affect the modeline
+colors anywhere else.
 
-@node Q5.0.6, Q5.0.7, Q5.0.5, Miscellaneous
-@unnumberedsubsec Q5.0.6: How do I start up a second shell buffer?
+Notes:
 
-In the @code{*shell*} buffer:
+@itemize @bullet
 
-@lisp
-M-x rename-buffer @key{RET} *shell-1* @key{RET}
-M-x shell RET
-@end lisp
+@item The hook is the mode name plus @code{-hook}.  eg. c-mode-hook,
+c++-mode-hook, emacs-lisp-mode-hook (used for your
+@file{init.el} or a @file{xx.el} file),
+lisp-interaction-mode-hook (the @samp{*scratch*} buffer),
+text-mode-hook, etc.
 
-This will then start a second shell.  The key is that no buffer named
-@samp{*shell*} can exist.  It might be preferable to use @kbd{M-x
-rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x
-rename-buffer}.
+@item
+Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)},
+otherwise you will erase anything that anybody has already put on the
+hook.
 
-Alternately, you can set the variable @code{shell-multiple-shells}.
-If the value of this variable is non-nil, each time shell mode is invoked,
-a new shell is made
+@item
+You can also do @code{(set-face-font 'modeline @var{font})},
+eg. @code{(set-face-font 'modeline "*bold-r-normal*140-100-100*"
+(current-buffer))} if you wish the modeline font to vary based on the
+current mode.
+@end itemize
 
-@node Q5.0.7, Q5.0.8, Q5.0.6, Miscellaneous
-@unnumberedsubsec Q5.0.7: Telnet from shell filters too much
+There are additional modeline faces, @code{modeline-buffer-id},
+@code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which
+you may want to customize.
 
-I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke
-and use a telnet session within it.  Everything works fine except that
-now all @samp{^M}'s are filtered out by Emacs.  Fixes?
+@unnumberedsec 4.3: The Cursor
 
-Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather
-than doing rsh or telnet within the local shell buffer.  Starting with
-XEmacs-20.3 you can also use @kbd{M-x ssh} to open secure remote session
-if you have @code{ssh} installed.
+@node Q4.3.1, Q4.3.2, Q4.2.4, Display
+@unnumberedsubsec Q4.3.1: Is there a way to make the bar cursor thicker?
 
-@node Q5.0.8, Q5.0.9, Q5.0.7, Miscellaneous
-@unnumberedsubsec Q5.0.8: Why does edt emulation not work?
+I'd like to have the bar cursor a little thicker, as I tend to "lose" it
+often.
 
-We don't know, but you can use tpu-edt emulation instead, which works
-fine and is a little fancier than the standard edt emulation.  To do
-this, add the following line to your @file{init.el}/@file{.emacs}:
+For a 1 pixel bar cursor, use:
 
 @lisp
-(tpu-edt)
+(setq bar-cursor t)
 @end lisp
 
-If you don't want it to replace @kbd{C-h} with an edt-style help menu
-add this as well:
+For a 2 pixel bar cursor, use:
 
 @lisp
-(global-set-key [(control h)] 'help-for-help)
+(setq bar-cursor 'anything-else)
 @end lisp
 
-@node Q5.0.9, Q5.0.10, Q5.0.8, Miscellaneous
-@unnumberedsubsec Q5.0.9: How can I emulate VI and use it as my default mode?
+You can also change these with Customize.
+Select from the @code{Options} menu
+@code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
+@kbd{M-x customize @key{RET} display @key{RET}}.
+
+You can use a color to make it stand out better:
 
-Our recommended VI emulator is viper. To make viper-mode the default,
-add this to your @file{init.el}/@file{.emacs}:
+@example
+Emacs*cursorColor:      Red
+@end example
+
+@node Q4.3.2, Q4.3.3, Q4.3.1, Display
+@unnumberedsubsec Q4.3.2: Is there a way to get back the block cursor?
 
 @lisp
-(viper-mode)
+(setq bar-cursor nil)
 @end lisp
 
-@email{kifer@@CS.SunySB.EDU, Michael Kifer} writes:
-
-@quotation
-This should be added as close to the top of @file{init.el}/@file{.emacs} as you can get
-it, otherwise some minor modes may not get viper-ized.
-@end quotation
+You can also change this with Customize.
+Select from the @code{Options} menu
+@code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
+@kbd{M-x customize @key{RET} display @key{RET}}.
 
-@node Q5.0.10, Q5.0.11, Q5.0.9, Miscellaneous
-@unnumberedsubsec Q5.0.10: [This question intentionally left blank]
+@node Q4.3.3, Q4.4.1, Q4.3.2, Display
+@unnumberedsubsec Q4.3.3: Can I make the cursor blink?
 
-Obsolete question, left blank to avoid renumbering
+Yes, like this:
 
-@node Q5.0.11, Q5.0.12, Q5.0.10, Miscellaneous
-@unnumberedsubsec Q5.0.11: [This question intentionally left blank]
+@lisp
+(blink-cursor-mode)
+@end lisp
 
-Obsolete question, left blank to avoid renumbering
+This function toggles between a steady cursor and a blinking cursor.
+You may also set this mode from the menu bar by selecting
+@samp{Options->Display->Blinking Cursor}.  Remember to save options.
 
-@node Q5.0.12, Q5.0.13, Q5.0.11, Miscellaneous
-@unnumberedsubsec Q5.0.12: How do I disable gnuserv from opening a new frame?
+@unnumberedsec 4.4: The Menubar
 
-If you set the @code{gnuserv-frame} variable to the frame that should be
-used to display buffers that are pulled up, a new frame will not be
-created. For example, you could put
+@node Q4.4.1, Q4.4.2, Q4.3.3, Display
+@unnumberedsubsec Q4.4.1: How do I get rid of the menubar?
 
 @lisp
-(setq gnuserv-frame (selected-frame))
+(set-specifier menubar-visible-p nil)
 @end lisp
 
-early on in your @file{init.el}/@file{.emacs}, to ensure that the first frame created
-is the one used for your gnuserv buffers.
+@node Q4.4.2, Q4.4.3, Q4.4.1, Display
+@unnumberedsubsec Q4.4.2: How can I customize the menubar?
 
-There is an option to set the gnuserv target to the current frame.  See
-@code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target}
+For an extensive menubar, add this line to your @file{init.el}:
 
-Starting with XEmacs-20.3 you can also change this with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...}
-or type @kbd{M-x customize @key{RET} gnuserv @key{RET}}.
+@lisp
+(load "big-menubar")
+@end lisp
+
+If you'd like to write your own, this file provides as good a set of
+examples as any to start from.  The file is located in edit-utils
+package. 
+
+@node Q4.4.3, Q4.4.4, Q4.4.2, Display
+@unnumberedsubsec Q4.4.3: How do I enable use of the keyboard (@kbd{Alt}) to access menu items?
 
+#### Write me.
 
-@node Q5.0.13, Q5.0.14, Q5.0.12, Miscellaneous
-@unnumberedsubsec Q5.0.13: How do I start gnuserv so that each subsequent XEmacs is a client?
+@node Q4.4.4, Q4.4.5, Q4.4.3, Display
+@unnumberedsubsec Q4.4.4: How do I control how many buffers are listed in the menu @code{Buffers List}?
 
-Put the following in your @file{init.el}/@file{.emacs} file to start the server:
+Add the following to your @file{init.el} (suit to fit):
 
 @lisp
-(gnuserv-start)
+(setq buffers-menu-max-size 20)
 @end lisp
 
-Start your first XEmacs as usual.  After that, you can do:
+For no limit, use an argument of @samp{nil}.
+
+You can also change this with Customize.  Select from the
+@code{Options} menu
+@code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...}
+or type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}.
+
+@node Q4.4.5, Q4.5.1, Q4.4.4, Display
+@unnumberedsubsec Q4.4.5: Resources like @code{Emacs*menubar*font} are not working?
+
+I am trying to use a resource like @code{Emacs*menubar*font} to set the
+font of the menubar but it's not working.
+
+In Motif, the use of @samp{font} resources is obsoleted in order to
+support internationalization.  If you are using the real Motif menubar,
+this resource is not recognized at all; you have to say:
 
 @example
-gnuclient randomfilename
+Emacs*menubar*fontList: FONT
 @end example
 
-from the command line to get your existing XEmacs process to open a new
-frame and visit randomfilename in that window. When you're done editing
-randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the
-frame.
+If you are using the Lucid menubar, for backward compatibility with
+existing user configurations, the @samp{font} resource is recognized.
+Since this is not supported by Motif itself, the code is a kludge and
+the @samp{font} resource will be recognized only if the @samp{fontList}
+resource resource is unset.  This means that the resource
 
-See also man page of gnuclient.
+@example
+*fontList: FONT
+@end example
 
-@node Q5.0.14, Q5.0.15, Q5.0.13, Miscellaneous
-@unnumberedsubsec Q5.0.14: Strange things are happening in Shell Mode.
+will override
 
-Sometimes (i.e. it's not repeatable, and I can't work out why it
-happens) when I'm typing into shell mode, I hit return and only a
-portion of the command is given to the shell, and a blank prompt is
-returned.  If I hit return again, the rest of the previous command is
-given to the shell.
+@example
+Emacs*menubar*font: FONT
+@end example
 
-@email{martin@@xemacs.org, Martin Buchholz} writes:
+even though the latter is more specific.
 
-@quotation
-There is a known problem with interaction between @code{csh} and the
-@code{filec} option and XEmacs.  You should add the following to your
-@file{.cshrc}:
+In non-Motif configurations using @samp{--with-mule} and
+@samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet}
+resource @emph{instead of} the @code{font} resource.  The backward
+compatibility kludge was never implemented for non-Motif builds.
+Example:
 
 @example
-if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
+*fontSet: FONT
 @end example
-@end quotation
 
-@node Q5.0.15, Q5.0.16, Q5.0.14, Miscellaneous
-@unnumberedsubsec Q5.0.15: Where do I get the latest CC Mode?
+@unnumberedsec 4.5: The Toolbar
 
-@email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} writes:
+@node Q4.5.1, Q4.5.2, Q4.4.5, Display
+@unnumberedsubsec Q4.5.1: How do I get rid of the toolbar?
 
-@quotation
-This can be had from @uref{http://www.python.org/emacs/}.
-@end quotation
+#### Write me.
 
-@node Q5.0.16, Q5.0.17, Q5.0.15, Miscellaneous
-@unnumberedsubsec Q5.0.16: I find auto-show-mode disconcerting.  How do I turn it off?
+@node Q4.5.2, Q4.5.3, Q4.5.1, Display
+@unnumberedsubsec Q4.5.2: How can I customize the toolbar?
 
-@code{auto-show-mode} controls whether or not a horizontal scrollbar
-magically appears when a line is too long to be displayed.  This is
-enabled by default.  To turn it off, put the following in your
-@file{init.el}/@file{.emacs}:
+#### Write me.
 
-@lisp
-(setq auto-show-mode nil)
-(setq-default auto-show-mode nil)
-@end lisp
+@node Q4.5.3, Q4.5.4, Q4.5.2, Display
+@unnumberedsubsec Q4.5.3: How can I bind a key to a function to toggle the toolbar?
 
-@node Q5.0.17, Q5.0.18, Q5.0.16, Miscellaneous
-@unnumberedsubsec Q5.0.17: How can I get two instances of info?
+Try something like:
 
-Before 21.4, you can't.  The @code{info} package does not provide for
-multiple info buffers.  In 21.4, this should be fixed. #### how?
+@lisp
+(defun my-toggle-toolbar ()
+  (interactive)
+  (set-specifier default-toolbar-visible-p
+                 (not (specifier-instance default-toolbar-visible-p))))
+(global-set-key "\C-xT" 'my-toggle-toolbar)
+@end lisp
 
-@node Q5.0.18, Q5.0.19, Q5.0.17, Miscellaneous
-@unnumberedsubsec Q5.0.18: [This question intentionally left blank]
+@ignore
+@c Probably not relevant any more
+There are redisplay bugs in 19.14 that may make the preceding result in
+a messed-up display, especially for frames with multiple windows.  You
+may need to resize the frame before XEmacs completely realizes the
+toolbar is really gone.
+@end ignore
 
-@node Q5.0.19, Q5.0.20, Q5.0.18, Miscellaneous
-@unnumberedsubsec Q5.0.19: Is there something better than LaTeX mode?
+Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct
+code.
 
-@email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes:
+@node Q4.5.4, Q4.6.1, Q4.5.3, Display
+@unnumberedsubsec Q4.5.4: @samp{Can't instantiate image error...} in toolbar
 
-@quotation
-The standard TeX modes leave much to be desired, and are somewhat
-leniently maintained.  Serious TeX users use AUC TeX (@pxref{Q4.7.1}).
-@end quotation
+@email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes:
 
-@node Q5.0.20, Q5.1.1, Q5.0.19, Miscellaneous
-@unnumberedsubsec Q5.0.20: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+I just installed the XEmacs (20.4-2) RPMS that I downloaded from
+@uref{http://www.xemacs.org/}.  Everything works fine, except that when
+I place my mouse over the toolbar, it beeps and gives me this message:
 
-@email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
-@quotation
-Here is one of the solutions, we have this in a script called
-@file{etc/editclient.sh}.
 @example
- #!/bin/sh
- if gnuclient -batch -eval t >/dev/null 2>&1
- then
-   exec gnuclient $@{1+"$@@"@}
- else
-   xemacs -unmapped -f gnuserv-start &
-   until gnuclient -batch -eval t >/dev/null 2>&1
-   do
-      sleep 1
-   done
-   exec gnuclient $@{1+"$@@"@}
- fi
+ Can't instantiate image (probably cached):
+ [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
+ (16 16 <strange control characters> ...
 @end example
 
-Note that there is a known problem when running XEmacs and 'gnuclient
--nw' on the same TTY.
-@end quotation
+@email{kyle_jones@@wonderworks.com, Kyle Jones} writes:
+@quotation
+This is problem specific to some Chips and Technologies video
+chips, when running XFree86.  Putting
 
-@node Q5.1.1, Q5.1.2, Q5.0.20, Miscellaneous
-@unnumberedsec 5.1: Emacs Lisp Programming Techniques
-@unnumberedsubsec Q5.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
+@code{Option "sw_cursor"}
 
-@email{clerik@@naggum.no, Erik Naggum} writes;
-
-@quotation
-Emacs has a legacy of keyboards that produced characters with modifier
-bits, and therefore map a variety of input systems into this scheme even
-today.  XEmacs is instead optimized for X events.  This causes an
-incompatibility in the way key sequences are specified, but both Emacs
-and XEmacs will accept a key sequence as a vector of lists of modifiers
-that ends with a key, e.g., to bind @kbd{M-C-a}, you would say
-@code{[(meta control a)]} in both Emacsen.  XEmacs has an abbreviated
-form for a single key, just (meta control a).  Emacs has an abbreviated
-form for the Control and the Meta modifiers to string-characters (the
-ASCII characters), as in @samp{\M-\C-a}.  XEmacs users need to be aware
-that the abbreviated form works only for one-character key sequences,
-while Emacs users need to be aware that the string-character is rather
-limited.  Specifically, the string-character can accommodate only 256
-different values, 128 of which have the Meta modifier and 128 of which
-have not.  In each of these blocks, only 32 characters have the Control
-modifier.  Whereas @code{[(meta control A)]} differs from @code{[(meta
-control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A}
-do not.  Programmers are advised to use the full common form, both
-because it is more readable and less error-prone, and because it is
-supported by both Emacsen.
+in @file{XF86Config} gets rid of the problem.
 @end quotation
 
-Another (even safer) way to be sure of the key-sequences is to use the
-@code{read-kbd-macro} function, which takes a string like @samp{C-c
-<up>}, and converts it to the internal key representation of the Emacs
-you use.  The function is available both on XEmacs and GNU Emacs.
-
-@node Q5.1.2, Q5.1.3, Q5.1.1, Miscellaneous
-@unnumberedsubsec Q5.1.2: Can I generate "fake" keyboard events?
-
-I wonder if there is an interactive function that can generate
-@dfn{fake} keyboard events.  This way, I could simply map them inside
-XEmacs.
+@unnumberedsec 4.6: Scrollbars and Scrolling
 
-This seems to work:
+@node Q4.6.1, Q4.6.2, Q4.5.4, Display
+@unnumberedsubsec Q4.6.1: How can I disable the scrollbar?
 
-@lisp
-(defun cg--generate-char-event (ch)
-  "Generate an event, as if ch has been typed"
-  (dispatch-event (character-to-event ch)))
+To disable them for all frames, add the following line to
+your @file{.Xresources}:
 
-;;  Backspace and Delete stuff
-(global-set-key [backspace]
-  (lambda () (interactive) (cg--generate-char-event 127)))
-(global-set-key [unknown_keysym_0x4]
-  (lambda () (interactive) (cg--generate-char-event 4)))
-@end lisp
+@example
+Emacs.scrollBarWidth:  0
+@end example
 
-@node Q5.1.3, Q5.1.4, Q5.1.2, Miscellaneous
-@unnumberedsubsec Q5.1.3: Could you explain @code{read-kbd-macro} in more detail?
+Or select @samp{Options->Display->Scrollbars}.
+Remember to save options.
 
-The @code{read-kbd-macro} function returns the internal Emacs
-representation of a human-readable string (which is its argument).
-Thus:
+To turn the scrollbar off on a per-frame basis, use the following
+function:
 
 @lisp
-(read-kbd-macro "C-c C-a")
-@result{} [(control ?c) (control ?a)]
-
-(read-kbd-macro "C-c C-. <up>")
-@result{} [(control ?c) (control ?.) up]
+(set-specifier scrollbar-width 0 (selected-frame))
 @end lisp
 
-In GNU Emacs the same forms will be evaluated to what GNU Emacs
-understands internally---the sequences @code{"\C-x\C-c"} and @code{[3
-67108910 up]}, respectively.
-
-The exact @dfn{human-readable} syntax is defined in the docstring of
-@code{edmacro-mode}.  I'll repeat it here, for completeness.
-
-@quotation
-Format of keyboard macros during editing:
+You can actually turn the scrollbars on at any level you want by
+substituting for (selected-frame) in the above command.  For example, to
+turn the scrollbars off only in a single buffer:
 
-Text is divided into @dfn{words} separated by whitespace.  Except for
-the words described below, the characters of each word go directly as
-characters of the macro.  The whitespace that separates words is
-ignored.  Whitespace in the macro must be written explicitly, as in
-@kbd{foo @key{SPC} bar @key{RET}}.
+@lisp
+(set-specifier scrollbar-width 0 (current-buffer))
+@end lisp
 
-@itemize @bullet
-@item
-The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD},
-@kbd{ESC}, and @kbd{NUL} represent special control characters.  The
-words must be written in uppercase.
+@node Q4.6.2, Q4.6.3, Q4.6.1, Display
+@unnumberedsubsec Q4.6.2: How can I change the scrollbar width?
 
-@item
-A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or
-@code{<f1>}, represents a function key.  (Note that in the standard
-configuration, the function key @code{<return>} and the control key
-@key{RET} are synonymous.)  You can use angle brackets on the words
-@key{RET}, @key{SPC}, etc., but they are not required there.
+#### Write me.
 
-@item
-Keys can be written by their @sc{ascii} code, using a backslash followed
-by up to six octal digits.  This is the only way to represent keys with
-codes above \377.
+@node Q4.6.3, Q4.6.4, Q4.6.2, Display
+@unnumberedsubsec Q4.6.3: How can I use resources to change scrollbar colors?
 
-@item
-One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-}
-(shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may
-precede a character or key notation.  For function keys, the prefixes
-may go inside or outside of the brackets: @code{C-<down>} @equiv{}
-@code{<C-down>}.  The prefixes may be written in any order: @kbd{M-C-x}
-@equiv{} @kbd{C-M-x}.
+Here's a recap of how to use resources to change your scrollbar colors:
 
-Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except
-that the Meta prefix is allowed on a sequence of digits and optional
-minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}.
+@example
+! Motif scrollbars
 
-@item
-The @code{^} notation for control characters also works: @kbd{^M}
-@equiv{} @kbd{C-m}.
+Emacs*XmScrollBar.Background: skyblue
+Emacs*XmScrollBar.troughColor: lightgray
 
-@item
-Double angle brackets enclose command names: @code{<<next-line>>} is
-shorthand for @kbd{M-x next-line @key{RET}}.
+! Athena scrollbars
 
-@item
-Finally, @code{REM} or @code{;;} causes the rest of the line to be
-ignored as a comment.
-@end itemize
+Emacs*Scrollbar.Foreground: skyblue
+Emacs*Scrollbar.Background: lightgray
+@end example
 
-Any word may be prefixed by a multiplier in the form of a decimal number
-and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>},
-and @code{10*foo} @equiv{}
-@iftex
-@*
-@end iftex
-@code{foofoofoofoofoofoofoofoofoofoo}.
+Note the capitalization of @code{Scrollbar} for the Athena widget.
 
-Multiple text keys can normally be strung together to form a word, but
-you may need to add whitespace if the word would look like one of the
-above notations: @code{; ; ;} is a keyboard macro with three semicolons,
-but @code{;;;} is a comment.  Likewise, @code{\ 1 2 3} is four keys but
-@code{\123} is a single key written in octal, and @code{< right >} is
-seven keys but @code{<right>} is a single function key.  When in doubt,
-use whitespace.
-@end quotation
+@node Q4.6.4, Q4.6.5, Q4.6.3, Display
+@unnumberedsubsec Q4.6.4: Moving the scrollbar can move the point; can I disable this?
 
-@node Q5.1.4, Q5.1.5, Q5.1.3, Miscellaneous
-@unnumberedsubsec Q5.1.4: What is the performance hit of @code{let}?
+When I move the scrollbar in an XEmacs window, it moves the point as
+well, which should not be the default behavior.  Is this a bug or a
+feature?  Can I disable it?
 
-In most cases, not noticeable.  Besides, there's no avoiding
-@code{let}---you have to bind your local variables, after all.  Some
-pose a question whether to nest @code{let}s, or use one @code{let} per
-function.  I think because of clarity and maintenance (and possible
-future implementation), @code{let}-s should be used (nested) in a way to
-provide the clearest code.
+The current behavior is a feature, not a bug.  Point remains at the same
+buffer position as long as that position does not scroll off the screen.
+In that event, point will end up in either the upper-left or lower-left
+hand corner.
 
-@node Q5.1.5, Q5.1.6, Q5.1.4, Miscellaneous
-@unnumberedsubsec Q5.1.5: What is the recommended use of @code{setq}?
+This cannot be changed.
 
-@itemize @bullet
-@item Global variables
+@node Q4.6.5, Q4.6.6, Q4.6.4, Display
+@unnumberedsubsec Q4.6.5: Scrolling one line at a time.
 
-You will typically @code{defvar} your global variable to a default
-value, and use @code{setq} to set it later.
+Can the cursor keys scroll the screen a line at a time, rather than the
+default half page jump?  I tend it to find it disorienting.
 
-It is never a good practice to @code{setq} user variables (like
-@code{case-fold-search}, etc.), as it ignores the user's choice
-unconditionally.  Note that @code{defvar} doesn't change the value of a
-variable if it was bound previously.  If you wish to change a
-user-variable temporarily, use @code{let}:
+Use the following:
 
 @lisp
-(let ((case-fold-search nil))
-  ...                                   ; code with searches that must be case-sensitive
-  ...)
+(setq scroll-step 1)
 @end lisp
 
-You will notice the user-variables by their docstrings beginning with an
-asterisk (a convention).
+You can also change this with Customize.  Select from the
+@code{Options} menu
+@code{Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...}
+or type @kbd{M-x customize @key{RET} windows @key{RET}}.
 
-@item Local variables
+@node Q4.6.6, Q4.6.7, Q4.6.5, Display
+@unnumberedsubsec Q4.6.6: How can I turn off automatic horizontal scrolling in specific modes?
 
-Bind them with @code{let}, which will unbind them (or restore their
-previous value, if they were bound) after exiting from the @code{let}
-form.  Change the value of local variables with @code{setq} or whatever
-you like (e.g. @code{incf}, @code{setf} and such).  The @code{let} form
-can even return one of its local variables.
+Do @code{(setq truncate-lines t)} in the mode-hooks for any modes
+in which you want lines truncated.
 
-Typical usage:
+More precisely: If @code{truncate-lines} is nil, horizontal scrollbars
+will never appear.  Otherwise, they will appear only if the value of
+@code{scrollbar-height} for that buffer/window/etc. is non-zero.  If you
+do
 
 @lisp
-;; iterate through the elements of the list returned by
-;; `hairy-function-that-returns-list'
-(let ((l (hairy-function-that-returns-list)))
-  (while l
-    ... do something with (car l) ...
-    (setq l (cdr l))))
+(set-specifier scrollbar-height 0)
 @end lisp
 
-Another typical usage includes building a value simply to work with it.
+then horizontal scrollbars will not appear in truncated buffers unless
+the package specifically asked for them.
 
-@lisp
-;; Build the mode keymap out of the key-translation-alist
-(let ((inbox (file-truename (expand-file-name box)))
-      (i 0))
-  ... code dealing with inbox ...
-  inbox)
-@end lisp
+@node Q4.6.7, Q4.7.1, Q4.6.6, Display
+@unnumberedsubsec Q4.6.7: I find auto-show-mode disconcerting.  How do I turn it off?
 
-This piece of code uses the local variable @code{inbox}, which becomes
-unbound (or regains old value) after exiting the form.  The form also
-returns the value of @code{inbox}, which can be reused, for instance:
+@code{auto-show-mode} controls whether or not a horizontal scrollbar
+magically appears when a line is too long to be displayed.  This is
+enabled by default.  To turn it off, put the following in your
+@file{init.el}:
 
 @lisp
-(setq foo-processed-inbox
-      (let .....))
+(setq auto-show-mode nil)
+(setq-default auto-show-mode nil)
 @end lisp
-@end itemize
 
-@node Q5.1.6, Q5.1.7, Q5.1.5, Miscellaneous
-@unnumberedsubsec Q5.1.6: What is the typical misuse of @code{setq} ?
+@unnumberedsec 4.7: The Gutter Tabs, The Progress Bar, Widgets
 
-A typical misuse is probably @code{setq}ing a variable that was meant to
-be local.  Such a variable will remain bound forever, never to be
-garbage-collected.  For example, the code doing:
+@node Q4.7.1, Q4.7.2, Q4.6.7, Display
+@unnumberedsubsec Q4.7.1: How can I disable the gutter tabs?
 
-@lisp
-(defun my-function (whatever)
-  (setq a nil)
-  ... build a large list ...
-  ... and exit ...)
-@end lisp
+#### Write me.
 
-does a bad thing, as @code{a} will keep consuming memory, never to be
-unbound.  The correct thing is to do it like this:
+@node Q4.7.2, Q4.7.3, Q4.7.1, Display
+@unnumberedsubsec Q4.7.2: How can I disable the progress bar?
 
-@lisp
-(defun my-function (whatever)
-  (let (a)                              ; default initialization is to nil
-    ... build a large list ...
-    ... and exit, unbinding `a' in the process  ...)
-@end lisp
+#### Write me.
 
-Not only is this prettier syntactically, but it makes it possible for
-Emacs to garbage-collect the objects which @code{a} used to reference.
+@node Q4.7.3, Q4.7.4, Q4.7.2, Display
+@unnumberedsubsec Q4.7.3: There are bugs in the gutter or widgets.
 
-Note that even global variables should not be @code{setq}ed without
-@code{defvar}ing them first, because the byte-compiler issues warnings.
-The reason for the warning is the following:
+#### Write me.
 
-@lisp
-(defun flurgoze nil)                    ; ok, global internal variable
-...
+@node Q4.7.4,  , Q4.7.3, Display
+@unnumberedsubsec Q4.7.4: How can I customize the gutter or gutter tabs?
 
-(setq flurghoze t)                      ; ops!  a typo, but semantically correct.
-                                        ; however, the byte-compiler warns.
+#### Write me.
 
-While compiling toplevel forms:
-** assignment to free variable flurghoze
-@end lisp
+@node External Subsystems, Internet, Display, Top
+@unnumbered 5 Interfacing with the Operating System and External Devices
 
-@node Q5.1.7, Q5.1.8, Q5.1.6, Miscellaneous
-@unnumberedsubsec Q5.1.7: I like the @code{do} form of cl, does it slow things down?
+This is part 5 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to the various ways that XEmacs interfaces with the
+operating system, with other processes and with external devices such
+as speakers and the printer.
 
-It shouldn't.  Here is what Dave Gillespie has to say about cl.el
-performance:
+@menu
+5.0: X Window System and Resources
+* Q5.0.1::    Where is a list of X resources?
+* Q5.0.2::    How can I detect a color display?
+* Q5.0.3::    How can I get the icon to just say @samp{XEmacs}?
+* Q5.0.4::    How can I have the window title area display the full path?
+* Q5.0.5::    @samp{xemacs -name junk} doesn't work?
+* Q5.0.6::    @samp{-iconic} doesn't work.
+
+5.1: Microsoft Windows
+* Q5.1.1::    Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
+* Q5.1.2::    How do I get Windows Explorer to associate a file type with XEmacs?
+
+5.2: Printing
+* Q5.2.1::    What do I need to change to make printing work?
+* Q5.2.2::    How can I print WYSIWYG a font-locked buffer?
+* Q5.2.3::    Getting @kbd{M-x lpr} to work with postscript printer.
+* Q5.2.4::    Can you print under MS Windows?
+
+5.3: Sound
+* Q5.3.1::    How do I turn off the sound?
+* Q5.3.2::    How do I get funky sounds instead of a boring beep?
+* Q5.3.3::    What are NAS and ESD (EsounD)?
+* Q5.3.4::    Sunsite sounds don't play.
+
+5.4: Running an Interior Shell, Invoking Subprocesses
+* Q5.4.1::    What is an interior shell?
+* Q5.4.2::    How do I start up a second shell buffer?
+* Q5.4.3::    Telnet from shell filters too much
+* Q5.4.4::    Strange things are happening in Shell Mode.
+* Q5.4.5::    XEmacs complains "No such file or directory, diff"
+* Q5.4.6::    Cygwin error "fork_copy: linked dll/bss pass 0 failed"
+
+5.5: Multiple Device Support
+* Q5.5.1::    How do I open a frame on another screen of my multi-headed display?
+* Q5.5.2::    Can I really connect to a running XEmacs after calling up over a modem?  How?
+* Q5.5.3::    How do I disable gnuserv from opening a new frame?
+* Q5.5.4::    How do I start gnuserv so that each subsequent XEmacs is a client?
+* Q5.5.5::    Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+@end menu
 
-@quotation
-Many of the advanced features of this package, such as @code{defun*},
-@code{loop}, and @code{setf}, are implemented as Lisp macros.  In
-byte-compiled code, these complex notations will be expanded into
-equivalent Lisp code which is simple and efficient.  For example, the
-forms
+@unnumberedsec 5.0: X Window System and Resources
 
-@lisp
-(incf i n)
-(push x (car p))
-@end lisp
-
-are expanded at compile-time to the Lisp forms
-
-@lisp
-(setq i (+ i n))
-(setcar p (cons x (car p)))
-@end lisp
+@node Q5.0.1, Q5.0.2, External Subsystems, External Subsystems
+@unnumberedsubsec Q5.0.1: Where is a list of X resources?
 
-which are the most efficient ways of doing these respective operations
-in Lisp.  Thus, there is no performance penalty for using the more
-readable @code{incf} and @code{push} forms in your compiled code.
+Search through the @file{NEWS} file for @samp{X Resources}.  A fairly
+comprehensive list is given after it.
 
-@emph{Interpreted} code, on the other hand, must expand these macros
-every time they are executed.  For this reason it is strongly
-recommended that code making heavy use of macros be compiled.  (The
-features labelled @dfn{Special Form} instead of @dfn{Function} in this
-manual are macros.)  A loop using @code{incf} a hundred times will
-execute considerably faster if compiled, and will also garbage-collect
-less because the macro expansion will not have to be generated, used,
-and thrown away a hundred times.
+In addition, an @file{app-defaults} file @file{etc/Emacs.ad} is
+supplied, listing the defaults.  The file @file{etc/sample.Xresources}
+gives a different set of defaults that you might consider for
+installation in your @file{~/.Xresources} file.  It is nearly the same
+as @file{etc/Emacs.ad}, but a few entries are altered.  Be careful about
+installing the contents of this file into your @file{.Xresources} (or
+legacy @file{.Xdefaults}) file if you use GNU Emacs under X11 as well.
 
-You can find out how a macro expands by using the @code{cl-prettyexpand}
-function.
-@end quotation
+@node Q5.0.2, Q5.0.3, Q5.0.1, External Subsystems
+@unnumberedsubsec Q5.0.2: How can I detect a color display?
 
-@node Q5.1.8, Q5.1.9, Q5.1.7, Miscellaneous
-@unnumberedsubsec Q5.1.8: I like recursion, does it slow things down?
+You can test the return value of the function @code{(device-class)}, as
+in:
 
-Yes.  Emacs byte-compiler cannot do much to optimize recursion.  But
-think well whether this is a real concern in Emacs.  Much of the Emacs
-slowness comes from internal mechanisms such as redisplay, or from the
-fact that it is an interpreter.
+@lisp
+(when (eq (device-class) 'color)
+  (set-face-foreground  'font-lock-comment-face "Grey")
+  (set-face-foreground  'font-lock-string-face  "Red")
+  ....
+  )
+@end lisp
 
-Please try not to make your code much uglier to gain a very small speed
-gain.  It's not usually worth it.
+@node Q5.0.3, Q5.0.4, Q5.0.2, External Subsystems
+@unnumberedsubsec Q5.0.3: How can I get the icon to just say @samp{XEmacs}?
 
-@node Q5.1.9, Q5.1.10, Q5.1.8, Miscellaneous
-@unnumberedsubsec Q5.1.9: How do I put a glyph as annotation in a buffer?
+I'd like the icon to just say @samp{XEmacs}, and not include the name of
+the current file in it.
 
-Here is a solution that will insert the glyph annotation at the
-beginning of buffer:
+Add the following line to your @file{init.el}:
 
 @lisp
-(make-annotation (make-glyph '([FORMAT :file FILE]
-                               [string :data "fallback-text"]))
-                 (point-min)
-                 'text
-                 (current-buffer))
+(setq frame-icon-title-format "XEmacs")
 @end lisp
 
-Replace @samp{FORMAT} with an unquoted symbol representing the format of
-the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.)
-Instead of @samp{FILE}, use the image file name
-(e.g.
-@iftex
-@*
-@end iftex
-@file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}).
-
-You can turn this to a function (that optionally prompts you for a file
-name), and inserts the glyph at @code{(point)} instead of
-@code{(point-min)}.
-
-@node Q5.1.10, Q5.1.11, Q5.1.9, Miscellaneous
-@unnumberedsubsec Q5.1.10: @code{map-extents} won't traverse all of my extents!
+@node Q5.0.4, Q5.0.5, Q5.0.3, External Subsystems
+@unnumberedsubsec Q5.0.4: How can I have the window title area display the full path?
 
-I tried to use @code{map-extents} to do an operation on all the extents
-in a region.  However, it seems to quit after processing a random number
-of extents.  Is it buggy?
+I'd like to have the window title area display the full directory/name
+of the current buffer file and not just the name.
 
-No.  The documentation of @code{map-extents} states that it will iterate
-across the extents as long as @var{function} returns @code{nil}.
-Unexperienced programmers often forget to return @code{nil} explicitly,
-which results in buggy code.  For instance, the following code is
-supposed to delete all the extents in a buffer, and issue as many
-@samp{fubar!} messages.
+Add the following line to your @file{init.el}:
 
 @lisp
-(map-extents (lambda (ext ignore)
-               (delete-extent ext)
-               (message "fubar!")))
+(setq frame-title-format "%S: %f")
 @end lisp
 
-Instead, it will delete only the first extent, and stop right there --
-because @code{message} will return a non-nil value.  The correct code
-is:
+A more sophisticated title might be:
 
 @lisp
-(map-extents (lambda (ext ignore)
-               (delete-extent ext)
-               (message "fubar!")
-               nil))
+(setq frame-title-format
+      '("%S: " (buffer-file-name "%f"
+                                 (dired-directory dired-directory "%b"))))
 @end lisp
 
-@node Q5.1.11, Q5.2.1, Q5.1.10, Miscellaneous
-@unnumberedsubsec Q5.1.11: My elisp program is horribly slow.  Is there
-an easy way to find out where it spends time?
-@c New
+That is, use the file name, or the dired-directory, or the buffer name.
 
-@email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
-@quotation
-Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence},
-press a key (say @key{RET} in the Gnus Group buffer), and get the
-results using @kbd{M-x profile-results}.  It should give you an idea of
-where the time is being spent.
-@end quotation
+@node Q5.0.5, Q5.0.6, Q5.0.4, External Subsystems
+@unnumberedsubsec Q5.0.5: @samp{xemacs -name junk} doesn't work?
 
-@node Q5.2.1, Q5.2.2, Q5.1.11, Miscellaneous
-@unnumberedsubsec Q5.2.1: How do I turn off the sound?
+When I run @samp{xterm -name junk}, I get an xterm whose class name
+according to xprop, is @samp{junk}.  This is the way it's supposed to
+work, I think.  When I run @samp{xemacs -name junk} the class name is
+not set to @samp{junk}.  It's still @samp{emacs}.  What does
+@samp{xemacs -name} really do?  The reason I ask is that my window
+manager (fvwm) will make a window sticky and I use XEmacs to read my
+mail.  I want that XEmacs window to be sticky, without having to use the
+window manager's function to set the window sticky.  What gives?
 
-Add the following line to your @file{init.el}/@file{.emacs}:
+@samp{xemacs -name} sets the application name for the program (that is,
+the thing which normally comes from @samp{argv[0]}).  Using @samp{-name}
+is the same as making a copy of the executable with that new name.  The
+@code{WM_CLASS} property on each frame is set to the frame-name, and the
+application-class.  So, if you did @samp{xemacs -name FOO} and then
+created a frame named @var{BAR}, you'd get an X window with WM_CLASS =
+@code{( "BAR", "Emacs")}.  However, the resource hierarchy for this
+widget would be:
 
-@lisp
-(setq bell-volume 0)
-(setq sound-alist nil)
-@end lisp
+@example
+Name:    FOO   .shell             .container   .BAR
+Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
+@end example
 
-That will make your XEmacs totally silent---even the default ding sound
-(TTY beep on TTY-s) will be gone.
+instead of the default
 
-Starting with XEmacs 20.2 you can also change these with Customize.
-Select from the @code{Options} menu
-@code{Advanced (Customize)->Emacs->Environment->Sound->Sound...} or type
-@kbd{M-x customize @key{RET} sound @key{RET}}.
+@example
+Name:    xemacs.shell             .container   .emacs
+Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
+@end example
 
 
-@node Q5.2.2, Q5.2.3, Q5.2.1, Miscellaneous
-@unnumberedsubsec Q5.2.2: How do I get funky sounds instead of a boring beep?
+It is arguable that the first element of WM_CLASS should be set to the
+application-name instead of the frame-name, but I think that's less
+flexible, since it does not give you the ability to have multiple frames
+with different WM_CLASS properties.  Another possibility would be for
+the default frame name to come from the application name instead of
+simply being @samp{emacs}.  However, at this point, making that change
+would be troublesome: it would mean that many users would have to make
+yet another change to their resource files (since the default frame name
+would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever
+the executable happened to be named), so we'd rather avoid it.
 
-Make sure your XEmacs was compiled with sound support, and then put this
-in your @file{init.el}/@file{.emacs}:
+To make a frame with a particular name use:
 
 @lisp
-(load-default-sounds)
+(make-frame '((name . "the-name")))
 @end lisp
 
-@c The sound support in XEmacs 19.14 was greatly improved over previous
-@c versions.
-@c
-@node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous
-@unnumberedsubsec Q5.2.3: What's NAS, how do I get it?
-
-@xref{Q2.0.3}, for an explanation of the @dfn{Network Audio System}.
+@node Q5.0.6, Q5.1.1, Q5.0.5, External Subsystems
+@unnumberedsubsec Q5.0.6: @samp{-iconic} doesn't work.
 
-@node Q5.2.4, Q5.3.1, Q5.2.3, Miscellaneous
-@unnumberedsubsec Q5.2.4: Sunsite sounds don't play.
-
-I'm having some trouble with sounds I've downloaded from sunsite.  They
-play when I run them through @code{showaudio} or cat them directly to
-@file{/dev/audio}, but XEmacs refuses to play them.
+When I start up XEmacs using @samp{-iconic} it doesn't work right.
+Using @samp{-unmapped} on the command line, and setting the
+@code{initiallyUnmapped} X Resource don't seem to help much either...
 
-@email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
+@email{ben@@xemacs.org, Ben Wing} writes:
 
 @quotation
-[Many of] These files have an (erroneous) 24byte header that tells about
-the format that they have been recorded in. If you cat them to
-@file{/dev/audio}, the header will be ignored and the default behavior
-for /dev/audio will be used. This happens to be 8kHz uLaw. It is
-probably possible to fix the header by piping through @code{sox} and
-passing explicit parameters for specifying the sampling format; you then
-need to perform a 'null' conversion from SunAudio to SunAudio.
+Ugh, this stuff is such an incredible mess that I've about given up
+getting it to work.  The principal problem is numerous window-manager
+bugs...
 @end quotation
 
-@node Q5.3.1, Q5.3.2, Q5.2.4, Miscellaneous
-@unnumberedsec 5.3: Miscellaneous
-@unnumberedsubsec Q5.3.1: How do you make XEmacs indent CL if-clauses correctly?
-
-I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the
-same amount instead of indenting the 3rd clause differently from the
-first two.
+@unnumberedsec 5.1: Microsoft Windows
 
-One way is to add, to @file{init.el}/@file{.emacs}:
+@node Q5.1.1, Q5.1.2, Q5.0.6, External Subsystems
+@unnumberedsubsec Q5.1.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
 
-@lisp
-(put 'if 'lisp-indent-function nil)
-@end lisp
+In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*}
+symbols to @samp{w32-*}.  Does XEmacs do the same?
 
-However, note that the package @code{cl-indent} that comes with
-XEmacs sets up this kind of indentation by default.  @code{cl-indent}
-also knows about many other CL-specific forms.  To use @code{cl-indent},
-one can do this:
+We consider such a move counter-productive, thus we do not use the
+@samp{w32} prefix. (His rather questionable justification was that he
+did not consider Windows to be a "winning" platform.) However, the name
+@samp{Win32} is not particularly descriptive outside the Windows world,
+and using just @samp{windows-} would be too generic.  So we chose a
+compromise, the prefix @samp{mswindows-} for Windows-related variables
+and functions.
 
-@lisp
-(load "cl-indent")
-(setq lisp-indent-function (function common-lisp-indent-function))
-@end lisp
+Thus all the XEmacs variables and functions directly related to either
+the Windows GUI or OS are prefixed @samp{mswindows-} (except for a
+couple of debugging variables, prefixed @samp{debug-mswindows-}).  From
+an architectural perspective, however, we believe that this is mostly a
+non-issue because there should be a very small number of
+window-systems-specific variables anyway.  Whenever possible, we try to
+provide generic interfaces that apply to all window systems.
 
-One can also customize @file{cl-indent.el} so it mimics the default
-@code{if} indentation @code{then} indented more than the @code{else}.
-Here's how:
+@c not true:
+@c The user variables
+@c that share functionality with existing NT Emacs variables are be named
+@c with our convention, but we provide the GNU Emacs names as
+@c compatibility aliases.
 
-@lisp
-(put 'if 'common-lisp-indent-function '(nil nil &body))
-@end lisp
+@node Q5.1.2, Q5.2.1, Q5.1.1, External Subsystems
+@unnumberedsubsec Q5.1.2: How do I get Windows Explorer to associate a file type with XEmacs?
 
-Also, a new version (1.2) of @file{cl-indent.el} was posted to
-comp.emacs.xemacs on 12/9/94.  This version includes more documentation
-than previous versions.  This may prove useful if you need to customize
-any indent-functions.
+@unnumberedsubsubsec Associating a new file type with XEmacs.
 
-@node Q5.3.2, Q5.3.3, Q5.3.1, Miscellaneous
-@unnumberedsubsec Q5.3.2: [This question intentionally left blank]
+In Explorer select @samp{View->Options->File Types}, press @samp{[New
+Type...]} and fill in the dialog box, e.g.:
 
-Obsolete question, left blank to avoid renumbering.
+@example
+        Description of type:    Emacs Lisp source
+        Associated extension:   el
+        Content Type (MIME):    text/plain
+@end example
 
-@node Q5.3.3, Q5.3.4, Q5.3.2, Miscellaneous
-@unnumberedsubsec Q5.3.3: How can I print WYSIWYG a font-locked buffer?
+then press @samp{[New...]} and fill in the @samp{Action} dialog box as
+follows:
 
-Font-lock looks nice.  How can I print (WYSIWYG) the highlighted
-document?
+@example
+        Action:
+        Open
 
-The package @code{ps-print}, which is now included with XEmacs, provides
-the ability to do this.  The source code contains complete instructions
-on its use, in
-@file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el},
-being the default location of an installed ps-print package.
+        Application used to perform action:
+        D:\Full\path\for\xemacs.exe "%1"
 
-@node Q5.3.4, Q5.3.5, Q5.3.3, Miscellaneous
-@unnumberedsubsec Q5.3.4: Getting @kbd{M-x lpr} to work with postscript printer.
+        [x] Use DDE
 
-My printer is a Postscript printer and @code{lpr} only works for
-Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x
-lpr-buffer} to work?
+        DDE Message:
+        open("%1")
 
-Put something like this in your @file{init.el}/@file{.emacs}:
+        Application:
+        <leave blank>
 
-@lisp
-(setq lpr-command "a2ps")
-(setq lpr-switches '("-p" "-1"))
-@end lisp
+        DDE Application Not Running:
+        <leave blank>
 
-If you don't use a2ps to convert ASCII to postscript (why not, it's
-free?), replace with the command you do use.  Note also that some
-versions of a2ps require a @samp{-Pprinter} to ensure spooling.
+        Topic:
+        <leave blank>
+@end example
 
-@node Q5.3.5, Q5.3.6, Q5.3.4, Miscellaneous
-@unnumberedsubsec Q5.3.5: How do I specify the paths that XEmacs uses for finding files?
+@unnumberedsubsubsec Associating an existing file type with XEmacs.
 
-You can specify what paths to use by using a number of different flags
-when running configure.  See the section MAKE VARIABLES in the top-level
-file INSTALL in the XEmacs distribution for a listing of those flags.
+In Explorer select @samp{View->Options->File Types}.  Click on the file
+type in the list and press @samp{[Edit...]}.  If the file type already
+has an @samp{Open} action, double click on it and fill in the
+@samp{Action} dialog box as described above; otherwise create a new
+action.
 
-Most of the time, however, the simplest fix is: @strong{do not} specify
-paths as you might for GNU Emacs.  XEmacs can generally determine the
-necessary paths dynamically at run time.  The only path that generally
-needs to be specified is the root directory to install into.  That can
-be specified by passing the @code{--prefix} flag to configure.  For a
-description of the XEmacs install tree, please consult the @file{NEWS}
-file.
-
-@node Q5.3.6, Q5.3.7, Q5.3.5, Miscellaneous
-@unnumberedsubsec Q5.3.6: [This question intentionally left blank]
-
-Obsolete question, left blank to avoid renumbering.
-
-@node Q5.3.7, Q5.3.8, Q5.3.6, Miscellaneous
-@unnumberedsubsec Q5.3.7: Can I have the end of the buffer delimited in some way?
-
-Say, with: @samp{[END]}?
-
-Try this:
-
-@lisp
-(let ((ext (make-extent (point-min) (point-max))))
-  (set-extent-property ext 'start-closed t)
-  (set-extent-property ext 'end-closed t)
-  (set-extent-property ext 'detachable nil)
-  (set-extent-end-glyph ext (make-glyph [string :data "[END]"])))
-@end lisp
-
-Since this is XEmacs, you can specify an icon to be shown on
-window-system devices.  To do so, change the @code{make-glyph} call to
-something like this:
-
-@lisp
-(make-glyph '([xpm :file "~/something.xpm"]
-              [string :data "[END]"]))
-@end lisp
-
-You can inline the @sc{xpm} definition yourself by specifying
-@code{:data} instead of @code{:file}.  Here is such a full-featured
-version that works on both X and TTY devices:
-
-@lisp
-(let ((ext (make-extent (point-min) (point-max))))
-  (set-extent-property ext 'start-closed t)
-  (set-extent-property ext 'end-closed t)
-  (set-extent-property ext 'detachable nil)
-  (set-extent-end-glyph ext (make-glyph '([xpm :data "\
-/* XPM */
-static char* eye = @{
-\"20 11 7 2\",
-\"__ c None\"
-\"_` c #7f7f7f\",
-\"_a c #fefefe\",
-\"_b c #7f0000\",
-\"_c c #fefe00\",
-\"_d c #fe0000\",
-\"_e c #bfbfbf\",
-\"___________`_`_`___b_b_b_b_________`____\",
-\"_________`_`_`___b_c_c_c_b_b____________\",
-\"_____`_`_`_e___b_b_c_c_c___b___b_______`\",
-\"___`_`_e_a___b_b_d___b___b___b___b______\",
-\"_`_`_e_a_e___b_b_d_b___b___b___b___b____\",
-\"_`_`_a_e_a___b_b_d___b___b___b___b___b__\",
-\"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\",
-\"___`_`_e_a___b_b_b_d_c___b___b___d_b____\",
-\"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\",
-\"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\",
-\"___`_____`_`_`_`___b_b_b_b_b_b__________\",
-@} ;"]
-                                          [string :data "[END]"]))))
-@end lisp
-
-Note that you might want to make this a function, and put it to a hook.
-We leave that as an exercise for the reader.
-
-@node Q5.3.8, Q5.3.9, Q5.3.7, Miscellaneous
-@unnumberedsubsec Q5.3.8: How do I insert today's date into a buffer?
-
-Like this:
-
-@lisp
-(insert (current-time-string))
-@end lisp
-
-@node Q5.3.9, Q5.3.10, Q5.3.8, Miscellaneous
-@unnumberedsubsec Q5.3.9: Are only certain syntactic character classes available for abbrevs?
-
-@email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
-
-@quotation
-Yes, abbrevs only expands word-syntax strings. While XEmacs does not
-prevent you from defining (e.g. with @kbd{C-x a g} or @kbd{C-x a l})
-abbrevs that contain special characters, it will refuse to expand
-them. So you need to ensure, that the abbreviation contains letters and
-digits only. This means that @samp{xd}, @samp{d5}, and @samp{5d} are
-valid abbrevs, but @samp{&d}, and @samp{x d} are not.
-
-If this sounds confusing to you, (re-)read the online documentation for
-abbrevs (@kbd{C-h i m XEmacs @key{RET} m Abbrevs @key{RET}}), and then come back and
-read this question/answer again.
-@end quotation
-
-Starting with XEmacs 20.3 this restriction has been lifted.
-
-@node Q5.3.10, Q5.3.11, Q5.3.9, Miscellaneous
-@unnumberedsubsec Q5.3.10: How can I get those oh-so-neat X-Face lines?
-
-Firstly there is an ftp site which describes X-faces and has the
-associated tools mentioned below, at
-@uref{ftp://ftp.cs.indiana.edu:/pub/faces/}.
-
-Then the steps are
-
-@enumerate
-@item
-Create 48x48x1 bitmap with your favorite tool
-
-@item
-Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc.,
-and then compile the face.
-
-@item
-@example
-cat file.xbm | xbm2ikon |compface > file.face
-@end example
-
-@item
-Then be sure to quote things that are necessary for emacs strings:
-
-@example
-cat ./file.face | sed 's/\\/\\\\/g'
-@iftex
-\ @*
-@end iftex
-| sed 's/\"/\\\"/g' > ./file.face.quoted
-@end example
-
-@item
-Then set up emacs to include the file as a mail header - there were a
-couple of suggestions here---either something like:
-
-@lisp
-(setq  mail-default-headers
-       "X-Face:  @email{Ugly looking text string here}")
-@end lisp
-
-Or, alternatively, as:
-
-@lisp
-(defun mail-insert-x-face ()
-  (save-excursion
-    (goto-char (point-min))
-    (search-forward mail-header-separator)
-    (beginning-of-line)
-    (insert "X-Face:")
-    (insert-file-contents "~/.face")))
-
-(add-hook 'mail-setup-hook 'mail-insert-x-face)
-@end lisp
-@end enumerate
-
-However, 2 things might be wrong:
-
-Some versions of pbmtoicon produces some header lines that is not
-expected by the version of compface that I grabbed. So I found I had to
-include a @code{tail +3} in the pipeline like this:
-
-@example
-cat file.xbm | xbm2ikon | tail +3 |compface > file.face
-@end example
-
-Some people have also found that if one uses the @code{(insert-file)}
-method, one should NOT quote the face string using the sed script .
-
-It might also be helpful to use @email{stig@@hackvan.com, Stig's} script
-(included in the compface distribution at XEmacs.org) to do the
-conversion.
-@comment For convenience xbm2xface is available for anonymous FTP at
-@comment @uref{ftp://ftp.miranova.com/pub/xemacs/xbm2xface.pl}.
-
-Contributors for this item:
-
-Paul Emsley,
-Ricardo Marek,
-Amir J. Katz,
-Glen McCort,
-Heinz Uphoff,
-Peter Arius,
-Paul Harrison, and
-Vegard Vesterheim
-
-@node Q5.3.11, Q5.3.12, Q5.3.10, Miscellaneous
-@unnumberedsubsec Q5.3.11: How do I add new Info directories?
-
-You use something like:
-
-@lisp
-(setq Info-directory-list (cons
-                           (expand-file-name "~/info")
-                           Info-default-directory-list))
-@end lisp
-
-@email{davidm@@prism.kla.com, David Masterson} writes:
-
-@quotation
-Emacs Info and XEmacs Info do many things differently.  If you're trying to
-support a number of versions of Emacs, here are some notes to remember:
-
-@enumerate
-@item
-Emacs Info scans @code{Info-directory-list} from right-to-left while
-XEmacs Info reads it from left-to-right, so append to the @emph{correct}
-end of the list.
-
-@item
-Use @code{Info-default-directory-list} to initialize
-@code{Info-directory-list} @emph{if} it is available at startup, but not
-all Emacsen define it.
-
-@item
-Emacs Info looks for a standard @file{dir} file in each of the
-directories scanned from #1 and magically concatenates them together.
+If the file type has more than one action listed, you probably want to
+make the @samp{Open} action that you just edited the default by clicking on
+it and pressing @samp{Set Default}.
 
-@item
-XEmacs Info looks for a @file{localdir} file (which consists of just the
-menu entries from a @file{dir} file) in each of the directories scanned
-from #1 (except the first), does a simple concatenation of them, and
-magically attaches the resulting list to the end of the menu in the
-@file{dir} file in the first directory.
-@end enumerate
+Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types}
+using @samp{Control Panel->Folder Options->File Types}.
 
-Another alternative is to convert the documentation to HTML with
-texi2html and read it from a web browser like Lynx or W3.
-@end quotation
+@unnumberedsec 5.2: Printing
 
-@node Q5.3.12,  , Q5.3.11, Miscellaneous
-@unnumberedsubsec Q5.3.12: What do I need to change to make printing work?
+@node Q5.2.1, Q5.2.2, Q5.1.2, External Subsystems
+@unnumberedsubsec Q5.2.1: What do I need to change to make printing work?
 
 For regular printing there are two variables that can be customized.
 
@@ -6214,720 +6389,1848 @@ NOTE: It is an undocumented limitation in XEmacs that postscript
 printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a
 window system environment.  It cannot be used outside of X11.
 
-@node MS Windows, Current Events, Miscellaneous, Top
-@unnumbered 6 XEmacs on MS Windows
+@node Q5.2.2, Q5.2.3, Q5.2.1, External Subsystems
+@unnumberedsubsec Q5.2.2: How can I print WYSIWYG a font-locked buffer?
 
-This is part 6 of the XEmacs Frequently Asked Questions list, written by
-Hrvoje Niksic and others.  This section is devoted to the MS Windows
-port of XEmacs.
+Font-lock looks nice.  How can I print (WYSIWYG) the highlighted
+document?
 
-@menu
-General Info
-* Q6.0.1::      What is the status of the XEmacs port to Windows?
-* Q6.0.2::      What flavors of MS Windows are supported?  The list name implies NT only.
-* Q6.0.3::      Are binaries available?
-* Q6.0.4::      Can I build XEmacs on MS Windows with X support?  Do I need to?
-* Q6.0.5::      I'd like to help out.  What do I do?
-* Q6.0.6::      What are Cygwin and MinGW, and do I need them to run XEmacs?
-* Q6.0.7::      What exactly are all the different ways to build XEmacs under Windows?
-
-Building XEmacs on MS Windows:
-* Q6.1.1::      What compiler/libraries do I need to compile XEmacs?
-* Q6.1.2::      How do I compile the native port?
-* Q6.1.3::      What do I need for Cygwin?
-* Q6.1.4::      How do I compile under Cygwin?
-* Q6.1.5::      How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
-* Q6.1.6::      I decided to run with X.  Where do I get an X server?
-* Q6.1.7::      How do I compile with X support?
-
-Customization and User Interface:
-* Q6.2.1::      How does the port cope with differences in the Windows user interface?
-* Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
-* Q6.2.3::      Where do I put my @file{init.el}/@file{.emacs} file?
-* Q6.2.4::      How do I get Windows Explorer to associate a file type with XEmacs?
-* Q6.2.5::      Is it possible to print from XEmacs?
-
-Miscellaneous:
-* Q6.3.1::      Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
-* Q6.3.2::      What are the differences between the various MS Windows emacsen?
-* Q6.3.3::      XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
-* Q6.3.4::      What is the porting team doing at the moment?
-
-Troubleshooting:
-* Q6.4.1::      XEmacs won't start on Windows.
-* Q6.4.2::      Why do I get a blank toolbar on Windows 95?
-* Q6.4.3::      XEmacs complains "No such file or directory, diff"
+The package @code{ps-print}, which is now included with XEmacs, provides
+the ability to do this.  The source code contains complete instructions
+on its use, in
+@file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el},
+being the default location of an installed ps-print package.
 
-@end menu
+@node Q5.2.3, Q5.2.4, Q5.2.2, External Subsystems
+@unnumberedsubsec Q5.2.3: Getting @kbd{M-x lpr} to work with postscript printer.
 
-@node Q6.0.1, Q6.0.2, MS Windows, MS Windows
-@unnumberedsec 6.0: General Info
-@unnumberedsubsec Q6.0.1: What is the status of the XEmacs port to Windows?
+My printer is a Postscript printer and @code{lpr} only works for
+Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x
+lpr-buffer} to work?
 
-Is XEmacs really ported to MS Windows?  What is the status of the port?
+Put something like this in your @file{init.el}:
 
-Beginning with release 21.0, XEmacs has worked under MS Windows.  A
-group of dedicated developers actively maintains and improves the
-Windows-specific portions of the code.  The mailing list at
-@email{xemacs-nt@@xemacs.org} is dedicated to that effort (please use
-the -request address to subscribe). (Despite its name, XEmacs actually
-works on all versions of Windows.)
+@lisp
+(setq lpr-command "a2ps")
+(setq lpr-switches '("-p" "-1"))
+@end lisp
 
-As of May 2001, XEmacs on MS Windows is stable and full-featured, and
-has been so for a year or more -- in fact, some features, such as
-printing, actually work better on Windows than native Unix.  However,
-the internationalization (Mule) support does not work -- although this
-is being actively worked on.
+If you don't use a2ps to convert ASCII to postscript (why not, it's
+free?), replace with the command you do use.  Note also that some
+versions of a2ps require a @samp{-Pprinter} to ensure spooling.
 
+@node Q5.2.4, Q5.3.1, Q5.2.3, External Subsystems
+@unnumberedsubsec Q5.2.4: Can you print under MS Windows?
 
-@node Q6.0.2, Q6.0.3, Q6.0.1, MS Windows
-@unnumberedsubsec Q6.0.2: What flavors of MS Windows are supported?  The list name implies NT only.
+As of 21.4, printing works on Windows, using simply
+@samp{File->Print BUFFER...}, and can be configured with
+@samp{File->Page Setup...}.
 
-The list name is misleading, as XEmacs supports and has been compiled on
-Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
-XP, and all newer versions of Windows.  The MS Windows-specific code is
-based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
-MS-DOS.
+Prior to 21.4, there is no built-in support, but there are some clever
+hacks out there.  If you know how, please let us know and we'll put it
+here.
 
-XEmacs also supports the Cygwin and MinGW development and runtime
-environments, where it also uses native Windows code for graphical
-features.
+@unnumberedsec 5.3: Sound
 
+@node Q5.3.1, Q5.3.2, Q5.2.4, External Subsystems
+@unnumberedsubsec Q5.3.1: How do I turn off the sound?
 
-@node Q6.0.3, Q6.0.4, Q6.0.2, MS Windows
-@unnumberedsubsec Q6.0.3: Are binaries available?
+Add the following line to your @file{init.el}:
 
-Binaries are available at @uref{http://www.xemacs.org/Download/win32/}
-for the native and Cygwin MS Windows versions of 21.4, and the native
-version of 21.1.
+@lisp
+(setq bell-volume 0)
+(setq sound-alist nil)
+@end lisp
 
-The 21.4 binaries use a modified version of the Cygwin installer.  Run
-the provided @file{setup.exe}, and follow the instructions.
+That will make your XEmacs totally silent---even the default ding sound
+(TTY beep on TTY-s) will be gone.
 
+You can also change these with Customize.  Select from the
+@code{Options} menu @code{Advanced
+(Customize)->Emacs->Environment->Sound->Sound...} or type @kbd{M-x
+customize @key{RET} sound @key{RET}}.
 
-@node Q6.0.4, Q6.0.5, Q6.0.3, MS Windows
-@unnumberedsubsec Q6.0.4: Can I build XEmacs on MS Windows with X support?  Do I need to?
 
-Yes, you can, but no you do not need to.  In fact, we recommend that you
-use a native-GUI version unless you have a specific need for an X
-version.
+@node Q5.3.2, Q5.3.3, Q5.3.1, External Subsystems
+@unnumberedsubsec Q5.3.2: How do I get funky sounds instead of a boring beep?
 
-@node Q6.0.5, Q6.0.6, Q6.0.4, MS Windows
-@unnumberedsubsec Q6.0.5: I'd like to help out.  What do I do?
+Make sure your XEmacs was compiled with sound support, and then put this
+in your @file{init.el}:
 
-It depends on the knowledge and time you possess.  If you are a
-programmer, try to build XEmacs and see if you can improve it.
-Windows-specific improvements like integration with established
-Windows environments are especially sought after.
+@lisp
+(load-default-sounds)
+@end lisp
 
-Otherwise, you can still help by downloading the binaries, using
-XEmacs as your everyday editor and reporting bugs you find to the
-mailing list.
+@node Q5.3.3, Q5.3.4, Q5.3.2, External Subsystems
+@unnumberedsubsec Q5.3.3: What are NAS and ESD (EsounD)?
 
-Another area where we need help is the documentation: We need good
-documentation for building XEmacs and for using it.  This FAQ is a
-small step in that direction.
+@dfn{Network Audio System} (NAS) is a client-server sound library for X.
 
-@node Q6.0.6, Q6.0.7, Q6.0.5, MS Windows
-@unnumberedsubsec Q6.0.6: What are Cygwin and MinGW, and do I need them to run XEmacs?
+@uref{http://radscan.com/nas.html}.
 
-To answer the second part of the question: No, you, you don't need
-Cygwin or MinGW to build or to run XEmacs.  But if you have them and
-want to use them, XEmacs supports these environments.
+To build XEmacs with it, use the @file{configure} flag
+@samp{--with-sound=nas} (@samp{--enable-sound=nas} in 21.5 or later).
 
-(One important reason to support Cygwin is that it lets the MS Windows
-developers test out their code in a Unix environment without actually
-having to have a Unix machine around.  For this reason alone, Cygwin
-support is likely to remain supported for a long time in XEmacs.  Same
-goes for the X support under Cygwin, for the same reasons.  MinGW
-support, on the other hand, depends on volunteers to keep it up to date;
-but this is generally not hard.)
+@dfn{Enlightened Sound Daemon} (ESD or EsounD) is yet another sound system.
 
-Cygwin is a set of tools providing Unix-like API on top of Win32.
-It makes it easy to port large Unix programs without significant
-changes to their source code.  It is a development environment as well
-as a runtime environment.
+@uref{http://www.tux.org/~ricdude/EsounD.html}.
 
-When built with Cygwin, XEmacs supports all display types -- TTY, X &
-Win32 GUI, and can be built with support for all three simultaneously.
-If you build with Win32 GUI support then the Cygwin version uses the
-majority of the Windows-specific code, which is mostly related to
-display.  If you want to build with X support you need X libraries (and
-an X server to display XEmacs on); see @ref{Q6.1.4}.  TTY and Win32 GUI
-require no additional libraries beyond what comes standard with Cygwin.
+To build XEmacs with it, use the @file{configure} flag
+@samp{--with-sound=esd} (@samp{--enable-sound=esd} in 21.5 or later).
 
-The advantages of the Cygwin version are that it integrates well with
-the Cygwin environment for existing Cygwin users; uses configure so
-building with different features is very easy; and actively supports X &
-TTY.  Furthermore, the entire Cygwin environment and compiler are free,
-whereas Visual C++ costs money.
+You can specify support for both with a flag like
+@samp{--with-sound=nas,esd} (@samp{--enable-sound=nas,esd} in 21.5 or
+later).
 
-The disadvantage is that it requires the whole Cygwin environment,
-whereas the native port requires only a suitable MS Windows compiler.
-Also, it follows the Unix filesystem and process model very closely
-(some will undoubtedly view this as an advantage).
+@node Q5.3.4, Q5.4.1, Q5.3.3, External Subsystems
+@unnumberedsubsec Q5.3.4: Sunsite sounds don't play.
 
-See @uref{http://sources.redhat.com/cygwin/} for more information on
-Cygwin.
+I'm having some trouble with sounds I've downloaded from sunsite.  They
+play when I run them through @code{showaudio} or cat them directly to
+@file{/dev/audio}, but XEmacs refuses to play them.
 
-MinGW is a collection of header files and import libraries that allow
-one to use GCC under the Cygwin environment to compile and produce
-exactly the same native Win32 programs that you can using Visual C++.
-Programs compiled with MinGW make use of the standard Microsoft runtime
-library @file{MSVCRT.DLL}, present on all Windows systems, and look,
-feel, and act like a standard Visual-C-produced application. (The only
-difference is the compiler.) This means that, unlike a
-standardly-compiled Cygwin application, no extra runtime support
-(e.g. Cygwin's @file{cygwin1.dll}) is required.  This, along with the
-fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
-environment, for those die-hard Unix hackers out there), is the main
-advantage of MinGW.  It is also potentially faster than Cygwin because
-it has less overhead when calling Windows, but you lose the POSIX
-emulation layer, which makes Unix programs harder to port. (But this is
-irrelevant for XEmacs since it's already ported to Win32.)
+@email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
 
-See @uref{http://www.mingw.org/} for more information on MinGW.
+@quotation
+[Many of] These files have an (erroneous) 24byte header that tells about
+the format that they have been recorded in. If you cat them to
+@file{/dev/audio}, the header will be ignored and the default behavior
+for /dev/audio will be used. This happens to be 8kHz uLaw. It is
+probably possible to fix the header by piping through @code{sox} and
+passing explicit parameters for specifying the sampling format; you then
+need to perform a 'null' conversion from SunAudio to SunAudio.
+@end quotation
 
-@node Q6.0.7, Q6.1.1, Q6.0.6, MS Windows
-@unnumberedsubsec Q6.0.7: What exactly are all the different ways to build XEmacs under Windows?
+@unnumberedsec 5.4: Running an Interior Shell, Invoking Subprocesses
 
-XEmacs can be built in several ways in the MS Windows environment.
+@node Q5.4.1, Q5.4.2, Q5.3.4, External Subsystems
+@unnumberedsubsec Q5.4.1: What is an interior shell?
 
-The standard way is what we call the "native" port.  It uses the Win32
-API and has no connection with X whatsoever -- it does not require X
-libraries to build, nor does it require an X server to run.  The native
-port is the most reliable version and provides the best graphical
-support.  Almost all development is geared towards this version, and
-there is little reason not to use it.
+#### Write me.
 
-The second way to build is the Cygwin port.  It takes advantage of
-Cygnus emulation library under Win32.  @xref{Q6.0.6}, for more
-information.
+@node Q5.4.2, Q5.4.3, Q5.4.1, External Subsystems
+@unnumberedsubsec Q5.4.2: How do I start up a second shell buffer?
 
-A third way is the MinGW port.  It uses the Cygwin environment to build
-but does not require it at runtime.  @xref{Q6.0.6}, for more
-information.
+In the @code{*shell*} buffer:
 
-Finally, you might also be able to build the non-Cygwin, non-MinGW "X"
-port.  This was actually the first version of XEmacs that ran under MS
-Windows, and although the code is still in XEmacs, it's essentially
-orphaned and it's unlikely it will compile without a lot of work.  If
-you want an MS Windows versin of XEmacs that supports X, use the Cygwin
-version. (The X support there is actively maintained, so that Windows
-developers can test the X support in XEmacs.)
+@lisp
+M-x rename-buffer @key{RET} *shell-1* @key{RET}
+M-x shell RET
+@end lisp
 
+This will then start a second shell.  The key is that no buffer named
+@samp{*shell*} can exist.  It might be preferable to use @kbd{M-x
+rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x
+rename-buffer}.
 
-@node Q6.1.1, Q6.1.2, Q6.0.7, MS Windows
-@unnumberedsec 6.1: Building XEmacs on MS Windows
-@unnumberedsubsec Q6.1.1: What compiler/libraries do I need to compile XEmacs?
+Alternately, you can set the variable @code{shell-multiple-shells}.
+If the value of this variable is non-nil, each time shell mode is invoked,
+a new shell is made
 
-You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
-some beta testers currently trying to compile with VC.NET, aka version
-7.0, but we can't yet report complete success.) For the Cygwin and MinGW
-versions, you need the Cygwin environment, which comes with GCC, the
-compiler used for those versions.  @xref{Q6.0.6}, for more information
-on Cygwin and MinGW.
+@node Q5.4.3, Q5.4.4, Q5.4.2, External Subsystems
+@unnumberedsubsec Q5.4.3: Telnet from shell filters too much
 
-@node Q6.1.2, Q6.1.3, Q6.1.1, MS Windows
-@unnumberedsubsec Q6.1.2: How do I compile the native port?
+I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke
+and use a telnet session within it.  Everything works fine except that
+now all @samp{^M}'s are filtered out by Emacs.  Fixes?
 
-Please read the file @file{nt/README} in the XEmacs distribution, which
-contains the full description.
+Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather
+than doing rsh or telnet within the local shell buffer.  You can also
+use @kbd{M-x ssh} to open secure remote session if you have @code{ssh}
+installed.
 
-@node Q6.1.3, Q6.1.4, Q6.1.2, MS Windows
-@unnumberedsubsec Q6.1.3: What do I need for Cygwin?
+@node Q5.4.4, Q5.4.5, Q5.4.3, External Subsystems
+@unnumberedsubsec Q5.4.4: Strange things are happening in Shell Mode.
 
-You can find the Cygwin tools and compiler at:
+Sometimes (i.e. it's not repeatable, and I can't work out why it
+happens) when I'm typing into shell mode, I hit return and only a
+portion of the command is given to the shell, and a blank prompt is
+returned.  If I hit return again, the rest of the previous command is
+given to the shell.
 
-@uref{http://sources.redhat.com/cygwin/}
+@email{martin@@xemacs.org, Martin Buchholz} writes:
 
-Click on the @samp{Install now!} link, which will download a file
-@file{setup.exe}, which you can use to download everything else. (You
-will need to pick a mirror site; @samp{mirrors.rcn.net} is probably the
-best.) You should go ahead and install everything -- you'll get various
-ancillary libraries that XEmacs needs or likes, e.g. XPM, PNG, JPEG,
-TIFF, etc.
+@quotation
+There is a known problem with interaction between @code{csh} and the
+@code{filec} option and XEmacs.  You should add the following to your
+@file{.cshrc}:
 
-If you want to compile under X, you will also need the X libraries; see
-@ref{Q6.1.6}.
+@example
+if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
+@end example
+@end quotation
 
-If you want to compile without X, you will need the @file{xpm-nox}
-library, which must be specifically selected in the Cygwin netinstaller;
-it is not selected by default.  The package has had various names.
-Currently it is called @file{cygXpm-noX4.dll}.
+@node Q5.4.5, Q5.4.6, Q5.4.4, External Subsystems
+@unnumberedsubsec Q5.4.5: XEmacs complains "No such file or directory, diff"
 
+or "ispell" or other commands that seem related to whatever you just
+tried to do (M-x ediff or M-$, for example).
 
-@node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows
-@unnumberedsubsec Q6.1.4: How do I compile under Cygwin?
+There are a large number of common (in the sense that "everyone has
+these, they really do") Unix utilities that are not provided with
+XEmacs.  The GNU Project's implementations are available for Windows in
+the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also
+provides a complete Unix emulation environment (and thus makes ports of
+Unix utilities nearly trivial).  Another implementation is that from
+MinGW (@uref{http://www.mingw.org/msys.shtml}).  If you know of others,
+please let us know!
 
-Similar as on Unix; use the usual `configure' and `make' process.
-Some problems to watch out for:
+@node Q5.4.6, Q5.5.1, Q5.4.5, External Subsystems
+@unnumberedsubsec Q5.4.6: Cygwin error "fork_copy: linked dll/bss pass 0 failed"
 
-@itemize @bullet
-@item
-make sure HOME is set. This controls where you
-@file{init.el}/@file{.emacs} file comes from;
+If you are getting an error like
 
-@item
-CYGWIN needs to be set to tty for process support to work, e.g. CYGWIN=tty;
+@example
+17797832 [main] bash 3468 fork_copy: linked dll/bss pass 0 failed,
+0x675000..0x6756A0, done 0, windows pid 2708, Win 32 error 487
+bash: fork: resource temporarily unavailable
+@end example
 
-@item
-picking up some other grep or other UNIX-like tools can kill configure;
+when trying to run bash using @kbd{M-x shell}, then you need to rebase
+your Cygwin DLL's.  This is a known problem with Cygwin.  To fix:
 
+@enumerate
 @item
-static heap too small, adjust @file{src/sheap-adjust.h} to a more positive
-number;
-
+Download the @file{rebase} utility from Cygwin setup (it's under
+@samp{System}).
 @item
-(Unconfirmed) The Cygwin version doesn't understand
-@file{//machine/path} type paths so you will need to manually mount a
-directory of this form under a unix style directory for a build to work
-on the directory;
-
+Kill @strong{all} of your Cygwin processes, including all of your
+shells and all background processes.  Use @code{ps -a} to list all the
+processes you need to kill.
 @item
-If you're building @strong{WITHOUT} X11, don't forget to change symlinks
-@file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to
-the non-X versions of these libraries.  By default they point to the X
-versions.  So:
+From a DOS prompt, run @file{ash} (@strong{not} @file{bash},
+@file{tcsh} or @file{zsh}).  Do not try to be clever and @code{exec
+/bin/ash} from your last shell; it won't work.
+@item
+Type @code{/bin/rebaseall -v}.
+@end enumerate
+
+The problem should now be fixed -- at least, until you install another
+Cygwin package with DLL's, in which case you may have to repeat the
+procedure.
+
+@unnumberedsec 5.5: Multiple Device Support
+
+@node Q5.5.1, Q5.5.2, Q5.4.6, External Subsystems
+@unnumberedsubsec Q5.5.1: How do I open a frame on another screen of my multi-headed display?
+
+Use the command @kbd{M-x make-frame-on-display}.  This command is also
+on the File menu in the menubar.
+
+The command @code{make-frame-on-tty} also exists, which will establish a
+connection to any tty-like device.  Opening the TTY devices should be
+left to @code{gnuclient}, though.
+
+@node Q5.5.2, Q5.5.3, Q5.5.1, External Subsystems
+@unnumberedsubsec Q5.5.2: Can I really connect to a running XEmacs after calling up over a modem?  How?
+
+Yes.  Use @code{gnuclient -nw}.
+
+Also see @ref{Q5.5.3, How do I disable gnuserv from opening a new frame?}.
+
+@node Q5.5.3, Q5.5.4, Q5.5.2, External Subsystems
+@unnumberedsubsec Q5.5.3: How do I disable gnuserv from opening a new frame?
+
+If you set the @code{gnuserv-frame} variable to the frame that should be
+used to display buffers that are pulled up, a new frame will not be
+created. For example, you could put
+
+@lisp
+(setq gnuserv-frame (selected-frame))
+@end lisp
+
+early on in your @file{init.el}, to ensure that the first frame created
+is the one used for your gnuserv buffers.
+
+There is an option to set the gnuserv target to the current frame.  See
+@code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target}
+
+You can also change this with Customize.  Select from the
+@code{Options} menu @code{Advanced
+(Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...}  or type
+@kbd{M-x customize @key{RET} gnuserv @key{RET}}.
+
+
+@node Q5.5.4, Q5.5.5, Q5.5.3, External Subsystems
+@unnumberedsubsec Q5.5.4: How do I start gnuserv so that each subsequent XEmacs is a client?
+
+Put the following in your @file{init.el} file to start the server:
+
+@lisp
+(gnuserv-start)
+@end lisp
+
+Start your first XEmacs as usual.  After that, you can do:
 
 @example
-/usr/lib/libXpm.a     -> /usr/lib/libXpm-noX.a
-/usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
+gnuclient randomfilename
 @end example
 
-(This advice may now be obsolete because of the availability of the
-cygXpm-noX4.dll package from Cygwin.  Send confirmation to
-@email{faq@@xemacs.org}.)
+from the command line to get your existing XEmacs process to open a new
+frame and visit randomfilename in that window. When you're done editing
+randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the
+frame.
 
-@item
-Other problems are listed in the @file{PROBLEMS} file, in the top-level
-directory of the XEmacs sources.
+See also man page of gnuclient.
+
+@node Q5.5.5,  , Q5.5.4, External Subsystems
+@unnumberedsubsec Q5.5.5: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+
+@email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
+@quotation
+Here is one of the solutions, we have this in a script called
+@file{etc/editclient.sh}.
+@example
+ #!/bin/sh
+ if gnuclient -batch -eval t >/dev/null 2>&1
+ then
+   exec gnuclient $@{1+"$@@"@}
+ else
+   xemacs -unmapped -f gnuserv-start &
+   until gnuclient -batch -eval t >/dev/null 2>&1
+   do
+      sleep 1
+   done
+   exec gnuclient $@{1+"$@@"@}
+ fi
+@end example
+
+Note that there is a known problem when running XEmacs and 'gnuclient
+-nw' on the same TTY.
+@end quotation
+
+@node Internet, Advanced, External Subsystems, Top
+@unnumbered 6 Connecting to the Internet
+
+This is part 6 of the XEmacs Frequently Asked Questions list.  This
+section is devoted connecting to the Internet.
+
+@menu
+6.0: General Mail and News
+* Q6.0.1::    What are the various packages for reading mail?
+* Q6.0.2::    How can I send mail?
+* Q6.0.3::    How do I get my outgoing mail archived?
+* Q6.0.4::    How can I read and/or compose MIME messages?
+* Q6.0.5::    How do I customize the From line?
+* Q6.0.6::    How do I get my MUA to filter mail for me?
+* Q6.0.7::    Remote mail reading with an MUA.
+* Q6.0.8::    An MUA gets an error incorporating new mail.
+* Q6.0.9::    Why isn't @file{movemail} working?
+* Q6.0.10::   How do I make my MUA display graphical smilies?
+* Q6.0.11::   How can I get those oh-so-neat X-Face lines?
+
+6.1: Reading Mail with VM
+* Q6.1.1::    How do I set up VM to retrieve mail from a remote site using POP?
+* Q6.1.2::    How can I get VM to automatically check for new mail?
+* Q6.1.3::    I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
+* Q6.1.4::    Is there a mailing list or FAQ for VM?
+* Q6.1.5::    How do I make VM stay in a single frame?
+* Q6.1.6::    Customization of VM not covered in the manual, or here.
+
+6.2: Reading Netnews and Mail with Gnus
+* Q6.2.1::    GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+* Q6.2.2::    How do I make Gnus stay within a single frame?
+
+6.3: FTP Access
+* Q6.3.1::    Can I edit files on other hosts?
+* Q6.3.2::    What is EFS?
+
+6.4: Web Browsing with W3
+* Q6.4.1::    What is W3?
+* Q6.4.2::    How do I run W3 from behind a firewall?
+* Q6.4.3::    Is it true that W3 supports style sheets and tables?
+@end menu
+
+@unnumberedsec 6.0: General Mail and News
+
+@node Q6.0.1, Q6.0.2, Internet, Internet
+@unnumberedsubsec Q6.0.1: What are the various packages for reading mail?
+
+#### Write me.
+
+@node Q6.0.2, Q6.0.3, Q6.0.1, Internet
+@unnumberedsubsec Q6.0.2: How can I send mail?
+
+Under Unix and Mac OS X, the @samp{sendmail} package is normally used
+for this.
+#### Write me.
+
+Under Windows, you need to use @samp{smtpmail}, which communicates
+directly with the mail server, as there is no @file{sendmail} program
+running.  To get it working, use code like the following in your
+@file{init.el} file:
+
+@lisp
+  ;; Get mail working under Windows.
+  (setq message-send-mail-function 'smtpmail-send-it) ; for message/Gnus
+  (setq send-mail-function 'smtpmail-send-it) ; for C-x m, etc.
+  ;; the following ensures that mail problems can be debugged: it logs a trace
+  ;; of the SMTP conversation to *trace of SMTP session to <somewhere>*.
+  (setq smtpmail-debug-info t)
+  ;; Substitute your info here.
+  ;(setq user-mail-address "ben@@xemacs.org")
+  ;(setq user-full-name "Ben Wing")
+  ;(setq smtpmail-default-smtp-server "smtp.myserver.myisp.com")
+  ;; The following two aren't completely necessary but may help.
+  ;(setq smtpmail-local-domain "666.com")
+  ;(setq smtpmail-sendto-domain "666.com")
+  ;; If your SMTP server requires a username/password to authenticate, as
+  ;; many do nowadays, set them like this:
+  ;(setq smtpmail-auth-credentials  ; or use ~/.authinfo
+  ;    '(("smtp.myserver.myisp.com" 25 "USER@@SOMEWHERE" "PASSWORD")))
+
+  ;; Other possibilities for getting smtpmail to work:
+  ;;
+  ;;  If for some reason you need to authenticate using the STARTTLS protocol
+  ;;   (don't look into this unless you know what it is), use
+  ;;  (setq smtpmail-starttls-credentials
+  ;;      '(("YOUR SMTP HOST" 25 "~/.my_smtp_tls.key" "~/.my_smtp_tls.cert")))
+  ;;  Requires external program
+  ;;    ftp://ftp.opaopa.org/pub/elisp/starttls-*.tar.gz.
+  ;;  See http://www.ietf.org/rfc/rfc2246.txt,
+  ;;      http://www.ietf.org/rfc/rfc2487.txt
+@end lisp
+
+The lines you need to care about are those that set
+@code{user-mail-address}, @code{user-full-name},
+@code{smtpmail-default-smtp-server}, and
+@code{smtpmail-auth-credentials}.  You need to set these with,
+respectively, your email address, your full name, the SMTP server you
+use for outgoing mail, and the username and password you need to log
+in to your SMTP server. (If for some reason your SMTP server doesn't
+require logging in to send mail, don't uncomment this last line.)
+
+The other settings may be useful in specific cases, but you should know what
+you're doing before enabling them.
+
+@node Q6.0.3, Q6.0.4, Q6.0.2, Internet
+@unnumberedsubsec Q6.0.3: How do I get my outgoing mail archived?
+
+@lisp
+(setq mail-archive-file-name "~/outbox")
+@end lisp
+
+@node Q6.0.4, Q6.0.5, Q6.0.3, Internet
+@unnumberedsubsec Q6.0.4: How can I read and/or compose MIME messages?
+
+VM, MH-E and GNUS support MIME natively.  Other MUAs may or may not
+have MIME support; refer to their documentation and other resources,
+such as web pages and mailing lists.  Packages like SEMI/WEMI may be
+useful in connection with MUAs like mew and Wanderlust.
+
+@node Q6.0.5, Q6.0.6, Q6.0.4, Internet
+@unnumberedsubsec Q6.0.5: How do I customize the From line?
+
+How do I change the @samp{From:} line?  I have set gnus-user-from-line
+to
+@example
+Gail Gurman <gail.gurman@@sybase.com>
+@end example
+@noindent , but XEmacs Gnus doesn't use
+it. [This should apply to all MUA's. --ed] Instead it uses
+@example
+Gail Mara Gurman @email{gailg@@deall}
+@end example
+@noindent and then complains
+that it's incorrect. Also, as you perhaps can see, my Message-ID is
+screwy. How can I change that?
+
+@email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes:
+
+@quotation
+Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or
+@code{mail-host-address} to @samp{sybase.com}.
+@end quotation
+
+@node Q6.0.6, Q6.0.7, Q6.0.5, Internet
+@unnumberedsubsec Q6.0.6: How do I get my MUA to filter mail for me?
+
+One possibility is to use procmail to split your mail before it gets to
+the MUA.  I prefer this personally, since there are many strange and
+wonderful things one can do with procmail.  Procmail may be found at
+@uref{http://www.procmail.org/}.
+
+Also see the Mail Filtering FAQ at:
+@iftex
+@*
+@end iftex
+@uref{http://www.faqs.org/faqs/mail/filtering-faq/}.
+
+@node Q6.0.7, Q6.0.8, Q6.0.6, Internet
+@unnumberedsubsec Q6.0.7: Remote mail reading with an MUA.
+
+My mailbox lives at the office on a big honkin server.  My regular INBOX
+lives on my honkin desktop machine.  I now can PPP to the office from
+home which is far from honking...  I'd like to be able to read mail at
+home without storing it here and I'd like to use xemacs and the MUA at
+home...  Is there a recommended setup?
+
+@email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes:
+
+@quotation
+There are several ways to do this.
+
+@enumerate
+@item
+Set your display to your home machine and run dxpc or one of the other X
+compressors.
+
+@item
+NFS mount your desktop machine on your home machine and modify your pop
+command on your home machine to rsh to your desktop machine and actually
+do the pop get's.
+
+@item
+Run a POP server on your desktop machine as well and do a sort of two
+tiered POP get.
+@end enumerate
+@end quotation
+
+@email{wmperry@@monolith.spry.com, William Perry} adds:
+
+@quotation
+Or you could run a pop script periodically on your desktop machine, and
+just use ange-ftp or NFS to get to your mailbox.  I used to do this all
+the time back at IU.
+@end quotation
+
+@node Q6.0.8, Q6.0.9, Q6.0.7, Internet
+@unnumberedsubsec Q6.0.8: An MUA gets an error incorporating new mail.
+
+rmail and VM, and probably other MUA's as well, get new mail from
+your mailbox (called @file{/var/mail/$USER} or @file{/var/spool/mail/$USER}
+or something similar) using a program called @code{movemail}.
+This program interlocks with @code{/bin/mail} using the protocol
+defined by @code{/bin/mail}.
+
+There are various different protocols in general use, which you need to
+specify using the @samp{--mail-locking} option
+(@samp{--with-mail-locking} in 21.5 or later) to @file{configure}:
+
+@table @samp
+@item lockf
+POSIX file locking with @code{lockf()}
+@item flock
+BSD file locking with @code{flock()}
+@item dot
+To manipulate mail file @file{foo}, first create file @file{foo.lock}
+@item locking
+Use @code{locking()}, Microsoft's renamed @code{flock()}
+@item mmdf
+Use @code{lk_open()} and @code{lk_close()} as defined by the Multi-channel
+Memo Distribution Facility
+@item pop
+Retrieve mail using POP (the Post Office Protocol).  This is the
+default for Cygwin/MinGW.
+@end table
+
+@strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
+SYSTEM, YOU CAN LOSE MAIL!}
+
+Usually the value is correctly determined automatically:
+@file{configure} tries to detect the method in use, and defaults exist
+on systems for which this doesn't work.
+
+However, if you run into problems incorporating new mail, it may be
+because an incorrect method is being used.
+
+If your system uses the lock file protocol, and permissions are set
+so that ordinary users cannot write lock files in the mail spool
+directory, you may need to make @file{movemail} setgid to a
+suitable group such as @samp{mail}.  You can use these commands (as
+root):
+
+@example
+chgrp mail movemail
+chmod 2755 movemail
+@end example
+
+If you are using the @samp{pop} locking method, @file{movemail} must
+be setuid root.
+
+Installation normally copies movemail from the build directory to an
+installation directory which is usually under @file{/usr/local/lib}.
+The installed copy of @file{movemail} is usually in the directory
+@file{/usr/local/lib/xemacs-VERSION/TARGET} (for example,
+@file{/usr/local/lib/xemacs-21.4.15/i686-pc-cygwin}).  You must change
+the group and mode of the installed copy; changing the group and mode
+of the build directory copy is ineffective.
+
+@node Q6.0.9, Q6.0.10, Q6.0.8, Internet
+@unnumberedsubsec Q6.0.9: Why isn't @file{movemail} working?
+
+@xref{Q6.0.8}.
+
+Note also that older versions of Mozilla came with a @file{movemail}
+program that is @strong{not} compatible with XEmacs.  Do not use it.
+Always use the @file{movemail} installed with your XEmacs.  Failure to
+do so can result in lost mail.
+
+@node Q6.0.10, Q6.0.11, Q6.0.9, Internet
+@unnumberedsubsec Q6.0.10: How do I make my MUA display graphical smilies?
+For mh-e use the following:
+
+@lisp
+(add-hook 'mh-show-mode-hook '(lambda ()
+                                (smiley-region (point-min)
+                                               (point-max))))
+@end lisp
+
+@email{bill@@carpenter.ORG, WJCarpenter} writes:
+For VM use the following:
+@lisp
+       (autoload 'smiley-region "smiley" nil t)
+       (add-hook 'vm-select-message-hook
+                 '(lambda ()
+                    (smiley-region (point-min)
+                                   (point-max))))
+@end lisp
+
+For tm use the following:
+@lisp
+(autoload 'smiley-buffer "smiley" nil t)
+(add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
+@end lisp
+
+@node Q6.0.11, Q6.1.1, Q6.0.10, Internet
+@unnumberedsubsec Q6.0.11: How can I get those oh-so-neat X-Face lines?
+
+Firstly there is an ftp site which describes X-faces and has the
+associated tools mentioned below, at
+@uref{http://ftp.cs.indiana.edu/pub/faces/}.
+
+Then the steps are
+
+@enumerate
+@item
+Create 48x48x1 bitmap with your favorite tool
+
+@item
+Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc.,
+and then compile the face.
+
+@item
+@example
+cat file.xbm | xbm2ikon |compface > file.face
+@end example
+
+@item
+Then be sure to quote things that are necessary for emacs strings:
+
+@example
+cat ./file.face | sed 's/\\/\\\\/g'
+@iftex
+\ @*
+@end iftex
+| sed 's/\"/\\\"/g' > ./file.face.quoted
+@end example
+
+@item
+Then set up emacs to include the file as a mail header - there were a
+couple of suggestions here---either something like:
+
+@lisp
+(setq  mail-default-headers
+       "X-Face:  @email{Ugly looking text string here}")
+@end lisp
+
+Or, alternatively, as:
+
+@lisp
+(defun mail-insert-x-face ()
+  (save-excursion
+    (goto-char (point-min))
+    (search-forward mail-header-separator)
+    (beginning-of-line)
+    (insert "X-Face:")
+    (insert-file-contents "~/.face")))
+
+(add-hook 'mail-setup-hook 'mail-insert-x-face)
+@end lisp
+@end enumerate
+
+However, 2 things might be wrong:
+
+Some versions of pbmtoicon produces some header lines that is not
+expected by the version of compface that I grabbed. So I found I had to
+include a @code{tail +3} in the pipeline like this:
+
+@example
+cat file.xbm | xbm2ikon | tail +3 |compface > file.face
+@end example
+
+Some people have also found that if one uses the @code{(insert-file)}
+method, one should NOT quote the face string using the sed script .
+
+It might also be helpful to use @email{stig@@hackvan.com, Stig's} script
+xbm2face (included in the compface distribution at XEmacs.org) to do the
+conversion.
+
+Contributors for this item:
+
+Paul Emsley,
+Ricardo Marek,
+Amir J. Katz,
+Glen McCort,
+Heinz Uphoff,
+Peter Arius,
+Paul Harrison, and
+Vegard Vesterheim
+
+@unnumberedsec 6.1: Reading Mail with VM
+
+@node Q6.1.1, Q6.1.2, Q6.0.11, Internet
+@unnumberedsubsec Q6.1.1: How do I set up VM to retrieve mail from a remote site using POP?
+
+Use @code{vm-spool-files}, like this for example:
+
+@lisp
+(setq vm-spool-files '("/var/spool/mail/wing"
+                       "netcom23.netcom.com:110:pass:wing:MYPASS"))
+@end lisp
+
+Of course substitute your actual password for MYPASS.
+
+@node Q6.1.2, Q6.1.3, Q6.1.1, Internet
+@unnumberedsubsec Q6.1.2: How can I get VM to automatically check for new mail?
+
+@email{turner@@lanl.gov, John Turner} writes:
+
+@quotation
+Use the following:
+
+@lisp
+(setq vm-auto-get-new-mail 60)
+@end lisp
+@end quotation
+
+@node Q6.1.3, Q6.1.4, Q6.1.2, Internet
+@unnumberedsubsec Q6.1.3: I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
+
+Set @code{vm-reply-ignored-addresses} to a list, like
+
+@lisp
+(setq vm-reply-ignored-addresses
+      '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
+        "wing@@netcom.com" "wing@@xemacs.org"))
+@end lisp
+
+Note that each string is a regular expression.
+
+@node Q6.1.4, Q6.1.5, Q6.1.3, Internet
+@unnumberedsubsec Q6.1.4: Is there a mailing list or FAQ for VM?
+
+A FAQ for VM exists at @uref{http://www.wonderworks.com/vm/FAQ.html}.
+
+VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
+
+@node Q6.1.5, Q6.1.6, Q6.1.4, Internet
+@unnumberedsubsec Q6.1.5: How do I make VM stay in a single frame?
+
+John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes:
+
+@quotation
+@lisp
+                                        ; Don't use multiple frames
+(setq vm-frame-per-composition nil)
+(setq vm-frame-per-folder nil)
+(setq vm-frame-per-edit nil)
+(setq vm-frame-per-summary nil)
+@end lisp
+@end quotation
+
+@node Q6.1.6, Q6.2.1, Q6.1.5, Internet
+@unnumberedsubsec Q6.1.6: Customization of VM not covered in the manual, or here.
+
+@email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes:
+
+@quotation
+The meta-answer is to look into the file @file{vm-vars.el}, in the vm
+directory of the lisp library.
+
+@file{vm-vars.el} contains, initializes and carefully describes, with
+examples of usage, the plethora of user options that @emph{fully}
+control VM's behavior.
+
+Enter vm-vars, @code{forward-search} for toolbar, find the variables
+that control the toolbar placement, appearance, existence, copy to your
+@file{init.el} or @file{.vm} and modify according to the
+detailed instructions.
+
+The above also applies to all the various features of VM: search for
+some keywords, maybe the first you conjure isn't appropriate, find the
+appropriate variables, copy and experiment.
+@end quotation
+
+@unnumberedsec 6.2: Reading Netnews and Mail with Gnus
+
+@node Q6.2.1, Q6.2.2, Q6.1.6, Internet
+@unnumberedsubsec Q6.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+
+The Gnus numbering issues are not meant for mere mortals to know them.
+If you feel you @emph{must} enter the muddy waters of Gnus, visit the
+excellent FAQ, maintained by Justin Sheehy, at:
+
+@example
+@uref{http://my.gnus.org/FAQ/}
+@end example
+
+See also Gnus home page
+@example
+@uref{http://www.gnus.org/}
+@end example
+
+@node Q6.2.2, Q6.3.1, Q6.2.1, Internet
+@unnumberedsubsec Q6.2.2: How do I make Gnus stay within a single frame?
+
+The toolbar code to start Gnus opens the new frame---and it's a feature
+rather than a bug.  If you don't like it, but would still like to click
+on the seemly icon, use the following code:
+
+@lisp
+(defun toolbar-news ()
+  (gnus))
+@end lisp
+
+It will redefine the callback function of the icon to just call
+@code{gnus}, without all the fancy frame stuff.
+
+@unnumberedsec 6.3: FTP Access
+
+@node Q6.3.1, Q6.3.2, Q6.2.2, Internet
+@unnumberedsubsec Q6.3.1: Can I edit files on other hosts?
+
+Yes.  Of course XEmacs can use any network file system (such as NFS or
+Windows file sharing) you have available, and includes some
+optimizations and safety features appropriate to those environments.
+
+It is also possible to transparently edit files via FTP, ssh, or rsh.  That
+is, XEmacs makes a local copy using the transport in the background, and
+automatically refreshes the remote original from that copy when you save
+it.  XEmacs also is capable of doing file system manipulations like
+creating and removing directories and files.  The FTP interface is
+provided by the standard @samp{efs} package @ref{Top, EFS, , efs}.  The
+ssh/rsh interface is provided by the optional @samp{tramp} package
+@ref{Top, TRAMP, , tramp}.
+
+@node Q6.3.2, Q6.4.1, Q6.3.1, Internet
+@unnumberedsubsec Q6.3.2: What is EFS?
+
+#### Write me.
+
+@unnumberedsec 6.4: Web Browsing with W3
+
+@node Q6.4.1, Q6.4.2, Q6.3.2, Internet
+@unnumberedsubsec Q6.4.1: What is W3?
+
+W3 is an advanced graphical browser written in Emacs lisp that runs on
+XEmacs.  It has full support for cascaded style sheets, and more...
+
+It has a home web page at
+@uref{http://www.cs.indiana.edu/elisp/w3/docs.html}.
+
+@node Q6.4.2, Q6.4.3, Q6.4.1, Internet
+@unnumberedsubsec Q6.4.2: How do I run W3 from behind a firewall?
+
+There is a long, well-written, detailed section in the W3 manual that
+describes how to do this.  Look in the section entitled "Firewalls".
+
+@node Q6.4.3,  , Q6.4.2, Internet
+@unnumberedsubsec Q6.4.3: Is it true that W3 supports style sheets and tables?
+
+Yes, and much more.  W3, as distributed with the latest XEmacs is a
+full-featured web browser.
+
+@node Advanced, Other Packages, Internet, Top
+@unnumbered 7 Advanced Customization Using XEmacs Lisp
+
+This is part 7 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to advanced customization using XEmacs Lisp.
+
+@menu
+7.0: Emacs Lisp and @file{init.el}
+* Q7.0.1::    What version of Emacs am I running?
+* Q7.0.2::    How can I evaluate Emacs-Lisp expressions?
+* Q7.0.3::    @code{(setq tab-width 6)} behaves oddly.
+* Q7.0.4::    How can I add directories to the @code{load-path}?
+* Q7.0.5::    How to check if a lisp function is defined?
+* Q7.0.6::    Can I force the output of @code{(face-list)} to a buffer?
+
+7.1: Emacs Lisp Programming Techniques
+* Q7.1.1::    What is the difference in key sequences between XEmacs and GNU Emacs?
+* Q7.1.2::    Can I generate "fake" keyboard events?
+* Q7.1.3::    Could you explain @code{read-kbd-macro} in more detail?
+* Q7.1.4::    What is the performance hit of @code{let}?
+* Q7.1.5::    What is the recommended use of @code{setq}?
+* Q7.1.6::    What is the typical misuse of @code{setq}?
+* Q7.1.7::    I like the @code{do} form of cl, does it slow things down?
+* Q7.1.8::    I like recursion, does it slow things down?
+* Q7.1.9::    How do I put a glyph as annotation in a buffer?
+* Q7.1.10::   @code{map-extents} won't traverse all of my extents!
+* Q7.1.11::   My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
+
+7.2: Mathematics
+* Q7.2.1::    What are bignums, ratios, and bigfloats in Lisp?
+* Q7.2.2::    XEmacs segfaults when I use very big numbers!
+* Q7.2.3::    Bignums are really slow!
+* Q7.2.4::    Equal bignums don't compare as equal!  What gives?
+@end menu
+
+@unnumberedsec 7.0: Emacs Lisp and @file{init.el}
+
+@node Q7.0.1, Q7.0.2, Advanced, Advanced
+@unnumberedsubsec Q7.0.1: What version of Emacs am I running?
+
+How can @file{init.el} determine which of the family of
+Emacsen I am using?
+
+To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
+XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
+example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in
+XEmacs versions prior to 21.4).  There are other nifty things in there
+as well!
+
+For all new code, all you really need to do is:
+
+@lisp
+(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
+@end lisp
+
+@node Q7.0.2, Q7.0.3, Q7.0.1, Advanced
+@unnumberedsubsec Q7.0.2: How can I evaluate Emacs-Lisp expressions?
+
+I know I can evaluate Elisp expressions from @code{*scratch*} buffer
+with @kbd{C-j} after the expression.  How do I do it from another
+buffer?
+
+Press @kbd{M-:} (the default binding of @code{eval-expression}), and
+enter the expression to the minibuffer.
+
+@node Q7.0.3, Q7.0.4, Q7.0.2, Advanced
+@unnumberedsubsec Q7.0.3: @code{(setq tab-width 6)} behaves oddly.
+
+If you put @code{(setq tab-width 6)} in your
+@file{init.el} file it does not work!  Is there a reason
+for this?  If you do it at the EVAL prompt it works fine!! How strange.
+
+Use @code{setq-default} instead, since @code{tab-width} is
+all-buffer-local.
+
+@node Q7.0.4, Q7.0.5, Q7.0.3, Advanced
+@unnumberedsubsec Q7.0.4: How can I add directories to the @code{load-path}?
+
+Here are two ways to do that, one that puts your directories at the
+front of the load-path, the other at the end:
+
+@lisp
+;;; Add things at the beginning of the load-path, do not add
+;;; duplicate directories:
+(pushnew "bar" load-path :test 'equal)
+
+(pushnew "foo" load-path :test 'equal)
+
+;;; Add things at the end, unconditionally
+(setq load-path (nconc load-path '("foo" "bar")))
+@end lisp
+
+@email{keithh@@nortel.ca, keith (k.p.) hanlan} writes:
+
+@quotation
+To add directories using Unix shell metacharacters use
+@file{expand-file-name} like this:
+
+@lisp
+(push (expand-file-name "~keithh/.emacsdir") load-path)
+@end lisp
+@end quotation
+
+@node Q7.0.5, Q7.0.6, Q7.0.4, Advanced
+@unnumberedsubsec Q7.0.5: How to check if a lisp function is defined?
+
+Use the following elisp:
+
+@lisp
+(fboundp 'foo)
+@end lisp
+
+It's almost always a mistake to test @code{emacs-version} or any similar
+variables.
+
+Instead, use feature-tests, such as @code{featurep}, @code{boundp},
+@code{fboundp}, or even simple behavioral tests, eg.:
+
+@lisp
+(defvar foo-old-losing-code-p
+  (condition-case nil (progn (losing-code t) nil)
+    (wrong-number-of-arguments t)))
+@end lisp
+
+There is an incredible amount of broken code out there which could work
+much better more often in more places if it did the above instead of
+trying to divine its environment from the value of one variable.
+
+@node Q7.0.6, Q7.1.1, Q7.0.5, Advanced
+@unnumberedsubsec Q7.0.6: Can I force the output of @code{(face-list)} to a buffer?
+
+It would be good having it in a buffer, as the output of
+@code{(face-list)} is too wide to fit to a minibuffer.
+
+Evaluate the expression in the @samp{*scratch*} buffer with point after
+the rightmost paren and typing @kbd{C-j}.
+
+If the minibuffer smallness is the only problem you encounter, you can
+simply press @kbd{C-h l} to get the former minibuffer contents in a
+buffer.
+
+@unnumberedsec 7.1: Emacs Lisp Programming Techniques
+
+@node Q7.1.1, Q7.1.2, Q7.0.6, Advanced
+@unnumberedsubsec Q7.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
+
+@email{clerik@@naggum.no, Erik Naggum} writes;
+
+@quotation
+Emacs has a legacy of keyboards that produced characters with modifier
+bits, and therefore map a variety of input systems into this scheme even
+today.  XEmacs is instead optimized for X events.  This causes an
+incompatibility in the way key sequences are specified, but both Emacs
+and XEmacs will accept a key sequence as a vector of lists of modifiers
+that ends with a key, e.g., to bind @kbd{M-C-a}, you would say
+@code{[(meta control a)]} in both Emacsen.  XEmacs has an abbreviated
+form for a single key, just (meta control a).  Emacs has an abbreviated
+form for the Control and the Meta modifiers to string-characters (the
+ASCII characters), as in @samp{\M-\C-a}.  XEmacs users need to be aware
+that the abbreviated form works only for one-character key sequences,
+while Emacs users need to be aware that the string-character is rather
+limited.  Specifically, the string-character can accommodate only 256
+different values, 128 of which have the Meta modifier and 128 of which
+have not.  In each of these blocks, only 32 characters have the Control
+modifier.  Whereas @code{[(meta control A)]} differs from @code{[(meta
+control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A}
+do not.  Programmers are advised to use the full common form, both
+because it is more readable and less error-prone, and because it is
+supported by both Emacsen.
+@end quotation
+
+Another (even safer) way to be sure of the key-sequences is to use the
+@code{read-kbd-macro} function, which takes a string like @samp{C-c
+<up>}, and converts it to the internal key representation of the Emacs
+you use.  The function is available both on XEmacs and GNU Emacs.
+
+@node Q7.1.2, Q7.1.3, Q7.1.1, Advanced
+@unnumberedsubsec Q7.1.2: Can I generate "fake" keyboard events?
+
+I wonder if there is an interactive function that can generate
+@dfn{fake} keyboard events.  This way, I could simply map them inside
+XEmacs.
+
+This seems to work:
+
+@lisp
+(defun cg--generate-char-event (ch)
+  "Generate an event, as if ch has been typed"
+  (dispatch-event (character-to-event ch)))
+
+;;  Backspace and Delete stuff
+(global-set-key [backspace]
+  (lambda () (interactive) (cg--generate-char-event 127)))
+(global-set-key [unknown_keysym_0x4]
+  (lambda () (interactive) (cg--generate-char-event 4)))
+@end lisp
+
+@node Q7.1.3, Q7.1.4, Q7.1.2, Advanced
+@unnumberedsubsec Q7.1.3: Could you explain @code{read-kbd-macro} in more detail?
+
+The @code{read-kbd-macro} function returns the internal Emacs
+representation of a human-readable string (which is its argument).
+Thus:
+
+@lisp
+(read-kbd-macro "C-c C-a")
+@result{} [(control ?c) (control ?a)]
+
+(read-kbd-macro "C-c C-. <up>")
+@result{} [(control ?c) (control ?.) up]
+@end lisp
+
+In GNU Emacs the same forms will be evaluated to what GNU Emacs
+understands internally---the sequences @code{"\C-x\C-c"} and @code{[3
+67108910 up]}, respectively.
+
+The exact @dfn{human-readable} syntax is defined in the docstring of
+@code{edmacro-mode}.  I'll repeat it here, for completeness.
+
+@quotation
+Format of keyboard macros during editing:
+
+Text is divided into @dfn{words} separated by whitespace.  Except for
+the words described below, the characters of each word go directly as
+characters of the macro.  The whitespace that separates words is
+ignored.  Whitespace in the macro must be written explicitly, as in
+@kbd{foo @key{SPC} bar @key{RET}}.
+
+@itemize @bullet
+@item
+The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD},
+@kbd{ESC}, and @kbd{NUL} represent special control characters.  The
+words must be written in uppercase.
+
+@item
+A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or
+@code{<f1>}, represents a function key.  (Note that in the standard
+configuration, the function key @code{<return>} and the control key
+@key{RET} are synonymous.)  You can use angle brackets on the words
+@key{RET}, @key{SPC}, etc., but they are not required there.
+
+@item
+Keys can be written by their @sc{ascii} code, using a backslash followed
+by up to six octal digits.  This is the only way to represent keys with
+codes above \377.
+
+@item
+One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-}
+(shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may
+precede a character or key notation.  For function keys, the prefixes
+may go inside or outside of the brackets: @code{C-<down>} @equiv{}
+@code{<C-down>}.  The prefixes may be written in any order: @kbd{M-C-x}
+@equiv{} @kbd{C-M-x}.
+
+Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except
+that the Meta prefix is allowed on a sequence of digits and optional
+minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}.
+
+@item
+The @code{^} notation for control characters also works: @kbd{^M}
+@equiv{} @kbd{C-m}.
+
+@item
+Double angle brackets enclose command names: @code{<<next-line>>} is
+shorthand for @kbd{M-x next-line @key{RET}}.
+
+@item
+Finally, @code{REM} or @code{;;} causes the rest of the line to be
+ignored as a comment.
+@end itemize
+
+Any word may be prefixed by a multiplier in the form of a decimal number
+and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>},
+and @code{10*foo} @equiv{}
+@iftex
+@*
+@end iftex
+@code{foofoofoofoofoofoofoofoofoofoo}.
+
+Multiple text keys can normally be strung together to form a word, but
+you may need to add whitespace if the word would look like one of the
+above notations: @code{; ; ;} is a keyboard macro with three semicolons,
+but @code{;;;} is a comment.  Likewise, @code{\ 1 2 3} is four keys but
+@code{\123} is a single key written in octal, and @code{< right >} is
+seven keys but @code{<right>} is a single function key.  When in doubt,
+use whitespace.
+@end quotation
+
+@node Q7.1.4, Q7.1.5, Q7.1.3, Advanced
+@unnumberedsubsec Q7.1.4: What is the performance hit of @code{let}?
+
+In most cases, not noticeable.  Besides, there's no avoiding
+@code{let}---you have to bind your local variables, after all.  Some
+pose a question whether to nest @code{let}s, or use one @code{let} per
+function.  I think because of clarity and maintenance (and possible
+future implementation), @code{let}-s should be used (nested) in a way to
+provide the clearest code.
+
+@node Q7.1.5, Q7.1.6, Q7.1.4, Advanced
+@unnumberedsubsec Q7.1.5: What is the recommended use of @code{setq}?
+
+@itemize @bullet
+@item Global variables
+
+You will typically @code{defvar} your global variable to a default
+value, and use @code{setq} to set it later.
+
+It is never a good practice to @code{setq} user variables (like
+@code{case-fold-search}, etc.), as it ignores the user's choice
+unconditionally.  Note that @code{defvar} doesn't change the value of a
+variable if it was bound previously.  If you wish to change a
+user-variable temporarily, use @code{let}:
+
+@lisp
+(let ((case-fold-search nil))
+  ...                                   ; code with searches that must be case-sensitive
+  ...)
+@end lisp
+
+You will notice the user-variables by their docstrings beginning with an
+asterisk (a convention).
+
+@item Local variables
+
+Bind them with @code{let}, which will unbind them (or restore their
+previous value, if they were bound) after exiting from the @code{let}
+form.  Change the value of local variables with @code{setq} or whatever
+you like (e.g. @code{incf}, @code{setf} and such).  The @code{let} form
+can even return one of its local variables.
+
+Typical usage:
+
+@lisp
+;; iterate through the elements of the list returned by
+;; `hairy-function-that-returns-list'
+(let ((l (hairy-function-that-returns-list)))
+  (while l
+    ... do something with (car l) ...
+    (setq l (cdr l))))
+@end lisp
+
+Another typical usage includes building a value simply to work with it.
+
+@lisp
+;; Build the mode keymap out of the key-translation-alist
+(let ((inbox (file-truename (expand-file-name box)))
+      (i 0))
+  ... code dealing with inbox ...
+  inbox)
+@end lisp
+
+This piece of code uses the local variable @code{inbox}, which becomes
+unbound (or regains old value) after exiting the form.  The form also
+returns the value of @code{inbox}, which can be reused, for instance:
+
+@lisp
+(setq foo-processed-inbox
+      (let .....))
+@end lisp
+@end itemize
+
+@node Q7.1.6, Q7.1.7, Q7.1.5, Advanced
+@unnumberedsubsec Q7.1.6: What is the typical misuse of @code{setq}?
+
+A typical misuse is probably @code{setq}ing a variable that was meant to
+be local.  Such a variable will remain bound forever, never to be
+garbage-collected.  For example, the code doing:
+
+@lisp
+(defun my-function (whatever)
+  (setq a nil)
+  ... build a large list ...
+  ... and exit ...)
+@end lisp
+
+does a bad thing, as @code{a} will keep consuming memory, never to be
+unbound.  The correct thing is to do it like this:
+
+@lisp
+(defun my-function (whatever)
+  (let (a)                              ; default initialization is to nil
+    ... build a large list ...
+    ... and exit, unbinding `a' in the process  ...)
+@end lisp
+
+Not only is this prettier syntactically, but it makes it possible for
+Emacs to garbage-collect the objects which @code{a} used to reference.
+
+Note that even global variables should not be @code{setq}ed without
+@code{defvar}ing them first, because the byte-compiler issues warnings.
+The reason for the warning is the following:
+
+@lisp
+(defun flurgoze nil)                    ; ok, global internal variable
+...
+
+(setq flurghoze t)                      ; ops!  a typo, but semantically correct.
+                                        ; however, the byte-compiler warns.
+
+While compiling toplevel forms:
+** assignment to free variable flurghoze
+@end lisp
+
+@node Q7.1.7, Q7.1.8, Q7.1.6, Advanced
+@unnumberedsubsec Q7.1.7: I like the @code{do} form of cl, does it slow things down?
+
+It shouldn't.  Here is what Dave Gillespie has to say about cl.el
+performance:
+
+@quotation
+Many of the advanced features of this package, such as @code{defun*},
+@code{loop}, and @code{setf}, are implemented as Lisp macros.  In
+byte-compiled code, these complex notations will be expanded into
+equivalent Lisp code which is simple and efficient.  For example, the
+forms
+
+@lisp
+(incf i n)
+(push x (car p))
+@end lisp
+
+are expanded at compile-time to the Lisp forms
+
+@lisp
+(setq i (+ i n))
+(setcar p (cons x (car p)))
+@end lisp
+
+which are the most efficient ways of doing these respective operations
+in Lisp.  Thus, there is no performance penalty for using the more
+readable @code{incf} and @code{push} forms in your compiled code.
 
-@end itemize
+@emph{Interpreted} code, on the other hand, must expand these macros
+every time they are executed.  For this reason it is strongly
+recommended that code making heavy use of macros be compiled.  (The
+features labelled @dfn{Special Form} instead of @dfn{Function} in this
+manual are macros.)  A loop using @code{incf} a hundred times will
+execute considerably faster if compiled, and will also garbage-collect
+less because the macro expansion will not have to be generated, used,
+and thrown away a hundred times.
 
+You can find out how a macro expands by using the @code{cl-prettyexpand}
+function.
+@end quotation
 
-@node Q6.1.5, Q6.1.6, Q6.1.4, MS Windows
-@unnumberedsubsec Q6.1.5: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
+@node Q7.1.8, Q7.1.9, Q7.1.7, Advanced
+@unnumberedsubsec Q7.1.8: I like recursion, does it slow things down?
 
-Similar to the method for Unix.  Things to remember:
+Yes.  The Emacs byte-compiler cannot do much to optimize recursion.  But
+think well whether this is a real concern in Emacs.  Much of the Emacs
+slowness comes from internal mechanisms such as redisplay, or from the
+fact that it is an interpreter.
 
-@itemize @bullet
-@item
-Specify the target host on the command line for @file{./configure}, e.g.
-@samp{./configure i586-pc-mingw32}.
+Please try not to make your code much uglier to gain a very small speed
+gain.  It's not usually worth it.
 
-@item
-Be sure that your build directory is mounted such that it has the
-same path either as a cygwin path (@file{/build/xemacs}) or as a Windows
-path (@file{c:\build\xemacs}).
+@node Q7.1.9, Q7.1.10, Q7.1.8, Advanced
+@unnumberedsubsec Q7.1.9: How do I put a glyph as annotation in a buffer?
 
-@item
-Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng},
-@file{compface}, etc.
+Here is a solution that will insert the glyph annotation at the
+beginning of buffer:
 
-@item
-Specify the target location of the extra libs on the command line
-to @file{configure}, e.g.
-@samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}.
-@end itemize
+@lisp
+(make-annotation (make-glyph '([FORMAT :file FILE]
+                               [string :data "fallback-text"]))
+                 (point-min)
+                 'text
+                 (current-buffer))
+@end lisp
 
+Replace @samp{FORMAT} with an unquoted symbol representing the format of
+the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.)
+Instead of @samp{FILE}, use the image file name
+(e.g.
+@iftex
+@*
+@end iftex
+@file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}).
 
-@node Q6.1.6, Q6.1.7, Q6.1.5, MS Windows
-@unnumberedsubsec Q6.1.6: I decided to run with X.  Where do I get an X server?
+You can turn this to a function (that optionally prompts you for a file
+name), and inserts the glyph at @code{(point)} instead of
+@code{(point-min)}.
 
-As of May 2001, we are recommending that you use the port of XFree86 to
-Cygwin.  This has recently stabilized, and will undoubtedly soon make
-most other MS Windows X servers obsolete.  It is what the Windows
-developers use to test the MS Windows X support.
+@node Q7.1.10, Q7.1.11, Q7.1.9, Advanced
+@unnumberedsubsec Q7.1.10: @code{map-extents} won't traverse all of my extents!
 
-To install, go to @uref{http://xfree86.cygwin.com/}.  There is a
-detailed description on that site of exactly how to install it.  This
-installation also provides the libraries, include files, and other stuff
-needed for development; a large collection of internationalized fonts;
-the standard X utilities (xterm, twm, etc.) -- in a word, the works.
+I tried to use @code{map-extents} to do an operation on all the extents
+in a region.  However, it seems to quit after processing a random number
+of extents.  Is it buggy?
 
-NOTE: As of late May 2001, there is a bug in the file
-@file{startxwin.bat}, used to start X Windows.  It passes the option
-@samp{-engine -4} to the X server, which is bogus -- you need to edit
-the file and change it to @samp{-engine 4}.
+No.  The documentation of @code{map-extents} states that it will iterate
+across the extents as long as @var{function} returns @code{nil}.
+Unexperienced programmers often forget to return @code{nil} explicitly,
+which results in buggy code.  For instance, the following code is
+supposed to delete all the extents in a buffer, and issue as many
+@samp{fubar!} messages.
 
+@lisp
+(map-extents (lambda (ext ignore)
+               (delete-extent ext)
+               (message "fubar!")))
+@end lisp
 
-@node Q6.1.7, Q6.2.1, Q6.1.6, MS Windows
-@unnumberedsubsec Q6.1.7: How do I compile with X support?
+Instead, it will delete only the first extent, and stop right there --
+because @code{message} will return a non-nil value.  The correct code
+is:
 
-To compile under Cygwin, all you need to do is install XFree86
-(@pxref{Q6.1.6}).  Once installed, @file{configure} should automatically
-find the X libraries and compile with X support.
+@lisp
+(map-extents (lambda (ext ignore)
+               (delete-extent ext)
+               (message "fubar!")
+               nil))
+@end lisp
 
-As noted above, the non-Cygwin X support is basically orphaned, and
-probably won't work.  But if it want to try, it's described in
-@file{nt/README} in some detail.  Basically, you need to get X11
-libraries from ftp.x.org, and compile them.  If the precompiled versions
-are available somewhere, we don't know of it.
+@node Q7.1.11, Q7.2.1, Q7.1.10, Advanced
+@unnumberedsubsec Q7.1.11: My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
+@c New
 
+@email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
+@quotation
+Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence},
+press a key (say @key{RET} in the Gnus Group buffer), and get the
+results using @kbd{M-x profile-results}.  It should give you an idea of
+where the time is being spent.
+@end quotation
 
-@node Q6.2.1, Q6.2.2, Q6.1.7, MS Windows
-@unnumberedsec 6.2: Customization and User Interface
-@unnumberedsubsec Q6.2.1: How does the port cope with differences in the Windows user interface?
+@unnumberedsec 7.2: Mathematics
 
-The XEmacs (and Emacs in general) user interface is pretty different
-from what is expected of a typical MS Windows program.  How does the MS
-Windows port cope with it?
+@node Q7.2.1, Q7.2.2, Q7.1.11, Advanced
+@unnumberedsubsec Q7.2.1: What are bignums, ratios, and bigfloats in Lisp?
 
-As a general rule, we follow native MS Windows conventions as much as
-possible.  21.4 is a fairly complete Windows application, supporting
-native printing, system file dialog boxes, tool tips, etc.  In cases
-where there's a clear UI conflict, we currently use normal Unix XEmacs
-behavior by default, but make sure the MS Windows "look and feel" (mark
-via shift-arrow, self-inserting deletes region, Alt selects menu items,
-etc.) is easily configurable (respectively: using the variable
-@code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact
-the default in these versions], or the @file{pc-select} package; using
-the @file{pending-del} package; and setting the variable
-@code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above).
-In fact, if you use the sample @file{init.el} file as your init file,
-you will get all these behaviors automatically turned on.
+Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and
+later can use the capabilities of multiple-precision libraries that may
+be available for your platform.  The GNU Multiple Precision (GMP) and
+BSD Multiple Precision (MP) libraries are partially supported.  GMP
+gives you @dfn{bignums} (arbitrary precision integers), @dfn{ratios}
+(arbitrary precision fractions), and @dfn{bigfloats} (arbitrary
+precision floating point numbers).  GNU MP is better-supported by XEmacs
+at the time of writing (2004-04-06).  BSD MP support does not include
+ratios or bigfloats, and it throws errors that aren't understood.
 
-In future versions, some of these features might be turned on by
-default in the MS Windows environment.
+In most cases, bignum support should be transparent to users and Lisp
+programmers.  A bignum-enabled XEmacs will automatically convert from
+fixnums to bignums and back in pure integer arithmetic, and for GNU MP,
+from floats to bigfloats.  (Bigfloats must be explicitly coerced to
+other types, even if they are exactly representable by less precise
+types.)  The Lisp reader and printer have been enhanced to handle
+bignums, as have the mathematical functions.  Rationals (fixnums,
+bignums, and ratios) are printed using the @samp{%d}, @samp{%o},
+@samp{%x}, and @samp{%u} format conversions.  The read syntax for ratios
+is @samp{3/5}.
 
+User-visible changes in behavior include (in probable order of annoyance)
 
-@node Q6.2.2, Q6.2.3, Q6.2.1, MS Windows
-@unnumberedsubsec Q6.2.2: How do I change fonts in XEmacs on MS Windows?
+@itemize
+@item
+Arithmetic can cause a segfault, depending on your MP library
+@ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}.
 
-In 21.4 and above, you can use the "Options" menu to change the font.
-You can also do it in your init file, e.g. like this:
+@item
+Terminology is not Common-Lisp-conforming.  For example, ``integer'' for
+Emacs Lisp means what Common Lisp calls ``fixnum''.  This issue is being
+investigated, but the use of ``integer'' for fixnum is pervasive and may
+cause backward-compatibility and GNU-Emacs-compatibility problems.
 
-@display
-    (set-face-font 'default "Lucida Console:Regular:10")
-    (set-face-font 'modeline "MS Sans Serif:Regular:10")
-@end display
+@item
+Many operations that used to cause a range error now succeed, with
+intermediate results and return values coerced to bignums as needed.
 
+@item
+An atom with ratio read syntax now returns a number, not a symbol.
 
-@node Q6.2.3, Q6.2.4, Q6.2.2, MS Windows
-@unnumberedsubsec Q6.2.3: Where do I put my @file{init.el}/@file{.emacs} file?
+@item
+The @samp{%u} format conversion will now give an error if its argument
+is negative.  (Without MP, it prints a number which Lisp can't read.)
+@end itemize
 
-@file{init.el} is the name of the init file starting with 21.4, and is
-located in the subdirectory @file{.xemacs/} of your home directory.  In
-prior versions, the init file is called @file{.emacs} and is located in
-your home directory.  Your home directory under Windows is determined by
-the @samp{HOME} environment variable.  If this is not set, it defaults to
-@samp{C:\}.
+@emph{Surgeon General's Warning}: The automatic conversions cannot be
+disabled at runtime.  New functions have been added which produce
+ratios, so there should be few surprises with type conflicts, but they
+can't be ruled out.  ``Arbitrary'' precision means precisely what it
+says.  If you work with extremely large numbers, your machine may
+arbitrarily decide to hand you an unpleasant surprise rather than a
+bignum @ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}.
 
-To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
-select @samp{Control Panel->System->Advanced->Environment Variables...}
-under Windows NT/2000.
+To configure with GNU MP, add @samp{--use-number-lib=gmp}
+(@samp{--enable-bignum=gmp} in 21.5 or later) to your invocation of
+@file{configure}.  For BSD MP, use @samp{--use-number-lib=mp}
+(@samp{--enable-bignum=mp} for 21.5).
 
+If you would like to help with bignum support, especially on BSD MP,
+please subscribe to the @uref{http://www.xemacs.org/Lists/#xemacs-beta,
+XEmacs Beta mailing list}, and book up on @file{number-gmp.h} and
+@file{number-mp.h}.  Jerry has promised to write internals documentation
+eventually, but if your skills run more to analysis and documentation
+than to writing new code, feel free to fill in the gap!
 
-@node Q6.2.4, Q6.2.5, Q6.2.3, MS Windows
-@unnumberedsubsec Q6.2.4: How do I get Windows Explorer to associate a file type with XEmacs?
 
-@unnumberedsubsubsec Associating a new file type with XEmacs.
+@node Q7.2.2, Q7.2.3, Q7.2.1, Advanced
+@unnumberedsubsec Q7.2.2: XEmacs segfaults when I use very big numbers!
 
-In Explorer select @samp{View/Options/File Types}, press @samp{[New
-Type...]} and fill in the dialog box, e.g.:
+GMP by default allocates temporaries on the stack.  If you run out of
+stack space, you're dead; there is no way that we know of to reliably
+detect this condition, because @samp{alloca} is typically implemented to
+be @emph{fast} rather than robust.  If you just need a little more
+oomph, use a bigger stack (@emph{e.g.}, the @file{ulimit -s} command in
+bash(1)).  If you want robustness at the cost of speed, configure GMP
+with @samp{--disable-alloca} and rebuild the GMP library.
 
-@example
-        Description of type:    Emacs Lisp source
-        Associated extension:   el
-        Content Type (MIME):    text/plain
-@end example
+We do not know whether BSD MP uses @samp{alloca} or not.  Please send
+any information you have as a bug report (@kbd{M-x report-xemacs-bug
+@key{RET}}), which will give us platform information.  (We do know that
+BSD MP implementations vary across vendors, but how much, we do not know
+yet.)
 
-then press @samp{[New...]} and fill in the @samp{Action} dialog box as
-follows:
 
-@example
-        Action:
-        Open
+@node Q7.2.3, Q7.2.4, Q7.2.2, Advanced
+@unnumberedsubsec Q7.2.3: Bignums are really slow!
 
-        Application used to perform action:
-        D:\Full\path\for\xemacs.exe "%1"
+Many Linux distributions compile all their packages for the i386, and
+this is costly.  An optimized version can give you two or three orders
+of magnitude better performance for a Pentium III or IV.  (Yes, really.
+See @uref{http://www.swox.com/gmp/gmp-speed.html}.)
 
-        [x] Use DDE
 
-        DDE Message:
-        open("%1")
+@node Q7.2.4,  , Q7.2.3, Advanced
+@unnumberedsubsec Q7.2.4: Equal bignums don't compare as equal!  What gives?
 
-        Application:
-        <leave blank>
+Ah, Grasshopper, I see you are using @code{(eq x y)}.  The Bodhisattva
+CLTL2 warned of the illusion that equal numbers would be @samp{eq}!
+Meditate on the deeper truths of @samp{eql}, in which numbers of the same
+type which have equal values compare equal, and @samp{=}, which does any
+necessary type coercions before comparing for equality.
 
-        DDE Application Not Running:
-        <leave blank>
+Yeah, yeah, it has always worked for integer types, because fixnums and
+characters have an immediate representation.  Sorry about that;
+arbitrary precision obviously requires consing new objects because the
+objects are ``large'' and of variable size, and the definition of
+@samp{eq} does not permit different objects to compare as equal.
 
-        Topic:
-        <leave blank>
-@end example
+@node Other Packages, Current Events, Advanced, Top
+@unnumbered 8 Other External Packages
 
-@unnumberedsubsubsec Associating an existing file type with XEmacs.
+This is part 8 of the XEmacs Frequently Asked Questions list.  This
+section is devoted to miscellaneous external packages not covered
+elsewhere in XEmacs.
 
-In Explorer select @samp{View/Options/File Types}.  Click on the file
-type in the list and press @samp{[Edit...]}.  If the file type already
-has an @samp{Open} action, double click on it and fill in the
-@samp{Action} dialog box as described above; otherwise create a new
-action.
+@menu
+8.0: TeX
+* Q8.0.1::    Is there something better than LaTeX mode?
+* Q8.0.2::    What is AUCTeX?  Where do you get it?
+* Q8.0.3::    Problems installing AUCTeX.
+* Q8.0.4::    How do I turn off current chapter from AUCTeX modeline?
+
+8.1: Other Unbundled Packages
+* Q8.1.1::    Is there a reason for an Emacs package not to be included in XEmacs?
+* Q8.1.2::    Are there any Emacs Lisp Spreadsheets?
+* Q8.1.3::    Is there a MatLab mode?
+
+8.2: Environments Built Around XEmacs
+* Q8.2.1::    What are SPARCworks, EOS, and WorkShop?
+* Q8.2.2::    How do I start the Sun Workshop support in XEmacs 21?
+* Q8.2.3::    What is/was Energize?
+* Q8.2.4::    What is Infodock?
+@end menu
 
-If the file type has more than one action listed, you probably want to
-make the @samp{Open} action that you just edited the default by clicking on
-it and pressing @samp{Set Default}.
+@unnumberedsec 8.0: TeX
 
-Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types}
-using @samp{Control Panel->Folder Options->File Types}.
+@node Q8.0.1, Q8.0.2, Other Packages, Other Packages
+@unnumberedsubsec Q8.0.1: Is there something better than LaTeX mode?
 
+@email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes:
 
-@node Q6.2.5, Q6.3.1, Q6.2.4, MS Windows
-@unnumberedsubsec Q6.2.5: Is it possible to print from XEmacs?
+@quotation
+The standard TeX modes leave much to be desired, and are somewhat
+leniently maintained.  Serious TeX users use AUCTeX (@pxref{Q8.0.2,
+What is AUCTeX?  Where do you get it?}).
+@end quotation
 
-As of 21.4, printing works on Windows, using simply @samp{File->Print},
-and can be configured with @samp{File->Page Setup}.
+@node Q8.0.2, Q8.0.3, Q8.0.1, Other Packages
+@unnumberedsubsec Q8.0.2: What is AUCTeX?  Where do you get it?
+
+AUCTeX is a complex and sophisticated editing package dedicated to TeX
+and related text formatting languages, including LaTeX and Texinfo.
+It provides support for running TeX on a file or part of a file,
+include files, and of course shortcuts for entering common TeX macros,
+LaTeX environments, etc, and for fontlock.
+
+AUCTeX is a standard package provided by XEmacs.  You can get it as
+usual through the @kbd{M-x list-packages} interface.  It is also
+included in the (non-Mule) SUMO package.  The AUCTeX XEmacs package is
+maintained by Uwe Brauer <GET MAIL ADDRESS>.
+
+AUCTeX is extremely complicated, and its developers primarily 
+use GNU Emacs.  Not all features of the bleeding edge version 
+of AUCTeX are immediately ported to XEmacs; if you need 
+these, you may be better off getting the most recent versions 
+from the GNU AUCTeX project on @uref{http://savannah.gnu.org}.
+@node Q8.0.3, Q8.0.4, Q8.0.2, Other Packages
+@unnumberedsubsec Q8.0.3: Problems installing AUCTeX.
 
-Prior to 21.4, there is no built-in support, but there are some clever
-hacks out there.  If you know how, please let us know and we'll put it
-here.
+@email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
 
+@quotation
+AUCTeX works fine on both stock Emacs and XEmacs has been doing so for
+a very very long time. This is mostly due to the work of
+@email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu}
+package.  Which leads to what is probably the problem...
+@end quotation
 
-@node Q6.3.1, Q6.3.2, Q6.2.5, MS Windows
-@unnumberedsec 6.3: Miscellaneous
-@unnumberedsubsec Q6.3.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
+Most problems with AUCTeX are one of two things:
 
-In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*}
-symbols to @samp{w32-*}.  Does XEmacs do the same?
+@itemize @bullet
+@item
+The TeX-lisp-directory in @file{tex-site.el} and the makefile don't
+match.
 
-We consider such a move counter-productive, thus we do not use the
-@samp{w32} prefix. (His rather questionable justification was that he
-did not consider Windows to be a "winning" platform.) However, the name
-@samp{Win32} is not particularly descriptive outside the Windows world,
-and using just @samp{windows-} would be too generic.  So we chose a
-compromise, the prefix @samp{mswindows-} for Windows-related variables
-and functions.
+Fix: make sure you configure AUCTeX properly @strong{before} installing.
 
-Thus all the XEmacs variables and functions directly related to either
-the Windows GUI or OS are prefixed @samp{mswindows-} (except for a
-couple of debugging variables, prefixed @samp{debug-mswindows-}).  From
-an architectural perspective, however, we believe that this is mostly a
-non-issue because there should be a very small number of
-window-systems-specific variables anyway.  Whenever possible, we try to
-provide generic interfaces that apply to all window systems.
+@item
+You have an old version of easymenu.el in your path.
 
-@c not true:
-@c The user variables
-@c that share functionality with existing NT Emacs variables are be named
-@c with our convention, but we provide the GNU Emacs names as
-@c compatibility aliases.
+Fix: use @code{locate-library} and remove old versions to make sure it
+@strong{only} finds the one that came with XEmacs.
+@end itemize
 
+@node Q8.0.4, Q8.1.1, Q8.0.3, Other Packages
+@unnumberedsubsec Q8.0.4: How do I turn off current chapter from AUCTeX modeline?
 
-@node Q6.3.2, Q6.3.3, Q6.3.1, MS Windows
-@unnumberedsubsec Q6.3.2: What are the differences between the various MS Windows emacsen?
+With AUCTeX, fast typing is hard because the current chapter, section
+etc. are given in the modeline.  How can I turn this off?
 
-XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
-Could you briefly explain the differences between them?
+It's not AUCTeX, it comes from @code{func-menu} in @file{func-menu.el}.
 
-Here is a recount of various Emacs versions running on MS Windows:
+@c Add this code to your @file{init.el} to turn it off:
+@c
+@c @lisp
+@c (setq fume-display-in-modeline-p nil)
+@c @end lisp
+@c
+@c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX
+@c mode:
+@c
+@c @lisp
+@c (add-hook 'TeX-mode-hook
+@c           '(lambda () (setq fume-display-in-modeline-p nil)))
+@c @end lisp
+@c
+@email{dhughes@@origin-at.co.uk, David Hughes} writes:
 
-@itemize @bullet
+@quotation
+Try this; you'll still get the function name displayed in the modeline,
+but it won't attempt to keep track when you modify the file. To refresh
+when it gets out of synch, you simply need click on the @samp{Rescan
+Buffer} option in the function-menu.
 
-@item
-XEmacs
+@lisp
+(setq-default fume-auto-rescan-buffer-p nil)
+@end lisp
+@end quotation
 
-@itemize @minus
+@unnumberedsec 8.1: Other Unbundled Packages
 
-@item
-Beginning with XEmacs 19.12, XEmacs' architecture was redesigned
-in such a way to allow clean support of multiple window systems.  At
-this time the TTY support was added, making X and TTY the first two
-"window systems" supported by XEmacs.  The 19.12 design is the basis for
-the current native MS Windows code.
+@node Q8.1.1, Q8.1.2, Q8.0.4, Other Packages
+@unnumberedsubsec Q8.1.1: Is there a reason for an Emacs package not to be included in XEmacs?
 
-@item
-Some time during 1997, David Hobley (soon joined by Marc Paquette)
-imported some of the NT-specific portions of GNU Emacs, making XEmacs
-with X support compile under Windows NT, and creating the "X" port.
+The reason for an Emacs package not to be included in XEmacs is
+usually one or more of the following:
 
-@item
-Several months later, Jonathan Harris sent out initial patches to use
-the Win32 API, thus creating the native port.  Since then, various
-people have contributed, including Kirill M. Katsnelson (contributed
-support for menubars, subprocesses and network, as well as loads of
-other code), Andy Piper (ported XEmacs to Cygwin environment,
-contributed Windows unexec, Windows-specific glyphs and toolbars code,
-and more), Ben Wing (loads of improvements; primary MS Windows developer
-since 2000), Jeff Sparkes (contributed scrollbars support) and many
-others.
-@end itemize
+@enumerate
+@item
+The package has not been ported to XEmacs.  This will typically happen
+when it uses GNU-Emacs-specific features, which make it fail under
+XEmacs.
+
+Porting a package to XEmacs can range from a trivial amount of change to
+a partial or full rewrite.  Fortunately, the authors of modern packages
+usually choose to support both Emacsen themselves.
 
 @item
-NT Emacs
+The package has been decided not to be appropriate for XEmacs.  It may
+have an equivalent or better replacement within XEmacs, in which case
+the developers may choose not to burden themselves with supporting an
+additional package.
 
-@itemize @minus
+Each package bundled with XEmacs means more work for the maintainers,
+whether they want it or not.  If you are ready to take over the
+maintenance responsibilities for the package you port, be sure to say
+so---we will more likely include it.
 
 @item
-NT Emacs is a version of GNU Emacs modified to compile and run under MS
-Windows 95 and NT using the native Win32 API.  As such, it is close in
-spirit to the XEmacs "native" port.
+The package simply hasn't been noted by the XEmacs development.  If
+that's the case, the messages like yours are very useful for attracting
+our attention.
 
 @item
-NT Emacs has been written by Geoff Voelker, and more information can be
-found at
+The package was noted by the developers, but they simply haven't yet
+gotten around to including/porting it.  Wait for the next release or,
+even better, offer your help.  It will be gladly accepted and
+appreciated.
+@end enumerate
+
+@node Q8.1.2, Q8.1.3, Q8.1.1, Other Packages
+@unnumberedsubsec Q8.1.2: Are there any Emacs Lisp Spreadsheets?
+
+Yes.  Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at
 @iftex
 @*
 @end iftex
-@uref{http://www.gnu.org/software/emacs/windows/ntemacs.html}.
-@end itemize
+@uref{http://acs.ist.psu.edu/dismal/dismal.html}.
 
-@item
-Win-Emacs
+@node Q8.1.3, Q8.2.1, Q8.1.2, Other Packages
+@unnumberedsubsec Q8.1.3: Is there a MatLab mode?
 
-@itemize @minus
+Yes, a matlab mode and other items are available at the
+@uref{http://www.mathworks.com/matlabcentral/files/104/matlab.el}.
 
-@item
-Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
-compatibility libraries.  Win-Emacs was written by Ben Wing.  The MS
-Windows code never made it back to Lucid Emacs, and its creator (Pearl
-Software) has long since gone out of business.
-@end itemize
+@unnumberedsec 8.2: Environments Built Around XEmacs
 
-@item
-GNU Emacs for DOS
+@node Q8.2.1, Q8.2.2, Q8.1.3, Other Packages
+@unnumberedsubsec Q8.2.1: What are SPARCworks, EOS, and WorkShop?
 
-@itemize @minus
+SPARCworks was a development environment from Sun (circa 1993-1996)
+and consisted of compilers (C, C++, FORTRAN 77, Fortran 90, Ada, and
+Pascal), a debugger, and other tools such as TeamWare (for
+configuration management), MakeTool, etc.
 
-@item
-GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
-port of GCC).  Such an Emacs is heavily underfeatured, because it does
-not support long file names, lacks proper subprocesses support, and
-is far too big compared with typical DOS editors.
-@end itemize
+EOS is the integration of XEmacs with the SPARCworks debugger.  It
+allows one to use an XEmacs frame to view code (complete with
+fontification, etc.), set breakpoints, print variables, etc., while
+using the SPARCworks debugger.
 
-@item
-GNU Emacs compiled with Win32
+EOS stands for "Era on SPARCworks"; Era stood for "Emacs Rewritten
+Again" and was the name used by Sun for its modified version of Lucid
+Emacs (later XEmacs) in the early-mid 90's.  This is documented in
+more detail in the history section of the XEmacs About page.
 
-@itemize @minus
+EOS was replaced around 1996 with a newer graphical development
+environment called Sun WorkShop.  The current status of this is
+unknown.
 
-@item
-Starting with version 19.30, it has been possible to compile GNU Emacs
-under MS Windows using the DJGPP compiler and X libraries.  The result
-is very similar to GNU Emacs compiled under MS DOS, only it works
-somewhat better because it runs in 32-bit mode, makes use of all the
-system memory, supports long file names, etc.
-@end itemize
+@node Q8.2.2, Q8.2.3, Q8.2.1, Other Packages
+@unnumberedsubsec Q8.2.2: How do I start the Sun Workshop support in XEmacs 21?
 
-@end itemize
+Add the switch ---with-workshop to the configure command when building
+XEmacs and put the following in one of your startup files
+(e.g. site-start.el or .emacs):
 
+@lisp
+(when (featurep 'tooltalk)
+  (load "tooltalk-macros")
+  (load "tooltalk-util")
+  (load "tooltalk-init"))
+(when (featurep 'sparcworks)
+  (load "sunpro-init")
+  (load "ring")
+  (load "comint")
+  (load "annotations")
+  (sunpro-startup))
+@end lisp
 
-@node Q6.3.3, Q6.3.4, Q6.3.2, MS Windows
-@unnumberedsubsec Q6.3.3: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
+If you are not using the latest Workshop (5.0) you have to apply the
+following patch:
 
-Yes.
+@format
+--- /opt/SUNWspro/lib/eserve.el.ORIG    Fri May 14 15:23:26 1999
++++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999
+@@@@ -42,7 +42,7 @@@@
+ (defvar running-xemacs nil "t if we're running XEmacs")
+ (defvar running-emacs  nil "t if we're running GNU Emacs 19")
 
-The console was there because @file{temacs} (and in turn, @file{xemacs})
-was a console application, and Windows typically creates a new
-console for a console process unless the creating process requests that
-one isn't created.  This used to be fixed with @file{runemacs}, a small
-Windows application that existed merely to start @file{xemacs}, stating
-that it didn't want a console.
+-(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
++(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
+     (setq running-xemacs t)
+     (setq running-emacs  t))
+@end format
 
-XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
-application.  The explanation of what that means is included for
-educational value.
+@node Q8.2.3, Q8.2.4, Q8.2.2, Other Packages
+@unnumberedsubsec Q8.2.3: What is/was Energize?
 
-When building an application to be run in a Win32 environment, you must
-state which sub-system it is to run in.  Valid subsystems include
-"console" and "gui".  The subsystem you use affects the run time
-libraries linked into your application, the start up function that is
-run before control is handed over to your application, the entry point
-to your program, and how Windows normally invokes your program. (Console
-programs automatically get a console created for them at startup if
-their stdin/stdout don't point anywhere useful, which is the case when
-run from the GUI.  This is a stupid design, of course -- instead, the
-console should get created only when the first I/O actually occurs!
-GUI programs have an equally stupid design: When called from
-@file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to
-point nowhere useful, even though the command shell has its own
-stdin/stdout.  It's as if someone who had learned a bit about stdio but
-had no actual knowledge of interprocess communication designed the
-scheme; unfortunately, the whole process-communication aspect of the
-Win32 API is equally badly designed.) For example, the entry point for a
-console app is "main" (which is what you'd expect for a C/C++ program),
-but the entry point for a "gui" app is "WinMain".  This confuses and
-annoys a lot of programmers who've grown up on Unix systems, where the
-kernel doesn't really care whether your application is a gui program or
-not.
+The "Energize Programming System" was a C and C++ development environment
+sold by Lucid, Inc.  It was the reason why Lucid Emacs, now XEmacs, was
+created in the first place.  Unfortunately, Lucid went out of business in
+1994.  The rights to sell it in Japan were purchased by INS
+Engineering (which briefly employed Stig Hackvan aka Jonathan
+Stigelman to work on Japanese support for XEmacs, in late 1994 and
+early 1995) and Tartan bought the rights to sell it in the rest of the
+world.  However, INS is not selling Energize at this point and may or
+may not have ever done so; Tartan certainly never did.
 
-For reasons not altogether clear, and are lost in the mists of time and
-tradition, XEmacs on Win32 started out as a console application, and
-therefore a console was automatically created for it. (It may have been
-made a console application partly because a console is needed in some
-circumstances, especially under Win95, to interrupt, terminate, or send
-signals to a child process, and because of the bogosity mentioned above
-with GUI programs and the standard command shell.  Currently, XEmacs
-just creates and immediately hides a console when necessary, and
-works around the "no useful stdio" problem by creating its own console
-window as necessary to display messages in.)
+@node Q8.2.4,  , Q8.2.3, Other Packages
+@unnumberedsubsec Q8.2.4: What is Infodock?
+
+@uref{http://sourceforge.net/projects/infodock/, InfoDock} is an
+integrated productivity toolset, mainly aimed at technical people,
+hosted at SourceForge.
 
+InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of
+the power of Emacs, but with an easier to use and more comprehensive
+menu-based user interface.  The bottom portion of this text describes
+how it differs from XEmacs and GNU Emacs from the Free Software
+Foundation.
 
-@node Q6.3.4, Q6.4.1, Q6.3.3, MS Windows
-@unnumberedsubsec Q6.3.4: What is the porting team doing at the moment?
+InfoDock is aimed at people who want a free, turn-key productivity
+environment.  Although InfoDock is customizable, it is not intended for
+people who like basic versions of Emacs which need to be customized
+extensively for local use; standard Emacs distributions are better for
+such uses.  InfoDock is for those people who want a complete,
+pre-customized environment in one package, which they need not touch
+more than once or twice a year to update to new revisions.
 
-(as of June 2001)
+InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX,
+and Intel Linux systems.  It is intended for use on a color display,
+although most features will work on monochrome monitors.  Simply unpack
+InfoDock according to the instructions in the ID-INSTALL file and you
+are ready to run.
 
-The porting team is continuing work on the MS Windows-specific code.
-Major projects are the development of Mule (internationalization)
-support for Windows and the improvement of the widget support (better
-support for dialog boxes, buttons, edit fields, and similar UI
-elements).
+The InfoDock Manual is concise, yet sufficient as a user guide for users
+who have never used an Emacs-type editor before.  For users who are
+already familiar with Emacs, it supplements the information in the GNU
+Emacs Manual.
 
+InfoDock menus are much more extensive and more mature than standard
+Emacs menus.  Each menu offers a @samp{Manual} item which displays
+documentation associated with the menu's functions.
 
+@noindent
+Four types of menubars are provided:
+@enumerate
+@item
+An extensive menubar providing access to global InfoDock commands.
+@item
+Mode-specific menubars tailored to the current major mode.
+@item
+A simple menubar for basic editing to help novices get started with InfoDock.
+@item
+The standard XEmacs menubar.
+@end enumerate
 
-@node Q6.4.1, Q6.4.2, Q6.3.4, MS Windows
-@unnumberedsec 6.3: Troubleshooting
-@unnumberedsubsec Q6.4.1 XEmacs won't start on Windows.
+Most modes also include mode-specific popup menus.  Additionally, region and
+rectangle popup menus are included.
 
-XEmacs relies on a process called "dumping" to generate a working
-executable. Under MS-Windows this process effectively fixes the memory
-addresses of information in the executable. When XEmacs starts up it tries
-to reserve these memory addresses so that the dumping process can be
-reversed -- putting the information back at the correct addresses.
-Unfortunately some .DLLs (for instance the soundblaster driver) occupy
-memory addresses that can conflict with those needed by the dumped XEmacs
-executable. In this instance XEmacs will fail to start without any
-explanation. Note that this is extremely machine specific.
+@samp{Hyperbole}, the everyday information manager, is a core part of
+InfoDock.  This provides context-sensitive mouse keys, a rolodex-type
+contact manager, programmable hypertext buttons, and an autonumbered
+outliner with embedded hyperlink anchors.
 
-21.1.10 includes a fix for this that makes more intelligent guesses
-about which memory addresses will be free, and this should cure the
-problem for most people.  21.4 implements "portable dumping", which
-eliminates the problem altogether.  We recommend you use the 21.4
-binaries, but you can use the 21.1 binaries if you are very paranoid
-about stability.  @xref{Q6.0.3}.
+The @samp{OO-Browser}, a multi-language object-oriented code browser, is a
+standard part of InfoDock.
 
-@node Q6.4.2, Q6.4.3, Q6.4.1, MS Windows
-@unnumberedsubsec Q6.4.2 Why do I get a blank toolbar on Windows 95?
+InfoDock saves a more extensive set of user options than other Emacs
+versions.
 
-You need at least version 4.71 of the system file @file{comctl32.dll}.
-The updated version is supplied with Internet Explorer 4 and later but if
-you are avoiding IE you can also download it from the Microsoft web
-site.  Go into support and search for @file{comctl32.dll}.  The download
-is a self-installing executable.
+InfoDock inserts a useful file header in many file types, showing the
+author, summary, and last modification time of each file.  A summary
+program can then be used to summarize all of the files in a directory,
+for easy MANIFEST file creation.
 
-@node Q6.4.3, , Q6.4.2, MS Windows
-@unnumberedsubsec Q6.4.3 XEmacs complains "No such file or directory, diff"
+Your working set of buffers is automatically saved and restored (if you
+answer yes to a prompt) between InfoDock sessions.
 
-or "ispell" or other commands that seem related to whatever you just
-tried to do (M-x ediff or M-$, for example).
+Refined color choices for code highlighting are provided for both dark and
+light background display frames.
 
-There are a large number of common (in the sense that "everyone has
-these, they really do") Unix utilities that are not provided with
-XEmacs.  The GNU Project's implementations are available for Windows in
-the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also
-provides a complete Unix emulation environment (and thus makes ports of
-Unix utilities nearly trivial).  Another implementation is that from
-MinGW (@uref{http://www.mingw.org/msys.shtml}).  If you know of others,
-please let us know!
+The @kbd{C-z} key prefix performs frame-based commands which parallel the
+@kbd{C-x} key prefix for window-based commands.
 
+The Smart Menu system is included for producing command menus on dumb
+terminals.
 
+Lisp libraries are better categorized according to function.
 
-@node Current Events, Legacy Versions, MS Windows, Top
-@unnumbered 7 What the Future Holds
+Extensions and improvements to many areas of Emacs are included, such as:
+paragraph filling, mail reading with Rmail, shell handling, outlining, code
+highlighting and browsing, and man page browsing.
 
-This is part 7 of the XEmacs Frequently Asked Questions list.  This
+InfoDock questions, answers and discussion should go to the mail list
+@iftex
+@*
+@end iftex
+@email{infodock@@infodock.com}.  Use
+@email{infodock-request@@infodock.com} to be added or removed from the
+list.  Always include your InfoDock version number when sending help
+requests.
+
+@node Current Events, Legacy Versions, Other Packages, Top
+@unnumbered 9 What the Future Holds
+
+This is part 9 of the XEmacs Frequently Asked Questions list.  This
 section will change frequently, and (in theory) should contain any
 interesting items that have transpired recently. (But in practice it's
 not getting updated like this.)
@@ -6942,24 +8245,25 @@ menu.
 Information on older versions of XEmacs can be find in @file{ONEWS} in
 the same directory, or @file{OONEWS} for really old versions.
 
-
 @menu
-* Q7.0.1::      What new features will be in XEmacs soon?
-* Q7.0.2::      What's new in XEmacs 21.4?
-* Q7.0.3::      What's new in XEmacs 21.1?
-* Q7.0.4::      What's new in XEmacs 20.4?
-* Q7.0.5::      What's new in XEmacs 20.3?
-* Q7.0.6::      What's new in XEmacs 20.2?
+9.0: Changes
+* Q9.0.1::    What new features will be in XEmacs soon?
+* Q9.0.2::    What's new in XEmacs 21.4?
+* Q9.0.3::    What's new in XEmacs 21.1?
+* Q9.0.4::    What's new in XEmacs 20.4?
+* Q9.0.5::    What's new in XEmacs 20.3?
+* Q9.0.6::    What's new in XEmacs 20.2?
 @end menu
 
-@node Q7.0.1, Q7.0.2, Current Events, Current Events
-@unnumberedsec 7.0: Changes
-@unnumberedsubsec Q7.0.1: What new features will be in XEmacs soon?
+@unnumberedsec 9.0: Changes
 
-Not yet written.
+@node Q9.0.1, Q9.0.2, Current Events, Current Events
+@unnumberedsubsec Q9.0.1: What new features will be in XEmacs soon?
+
+#### Write me.
 
-@node Q7.0.2, Q7.0.3, Q7.0.1, Current Events
-@unnumberedsubsec Q7.0.2: What's new in XEmacs 21.4?
+@node Q9.0.2, Q9.0.3, Q9.0.1, Current Events
+@unnumberedsubsec Q9.0.2: What's new in XEmacs 21.4?
 
 21.4 was the "stable" version of the 21.2 series, which was considered
 "experimental" throughout its life; thus there were no "official"
@@ -7004,7 +8308,11 @@ XEmacs support for menu accelerators has been much improved.
 Default menubar improvements. (Default menubar has many new commands and
 better organization.  The font-menu is now available under MS Windows.)
 @item
-Dialog box improvements, including a real file dialog box. (XEmacs now has a proper file dialog box under MS Windows (and GTK)!  The old clunky file dialog box is improved.  Keyboard traversal now works correctly in MS Windows dialog boxes.  There is a Search dialog box available from Edit->Find...)
+Dialog box improvements, including a real file dialog box. (XEmacs now
+has a proper file dialog box under MS Windows (and GTK)!  The old
+clunky file dialog box is improved.  Keyboard traversal now works
+correctly in MS Windows dialog boxes.  There is a Search dialog box
+available from @samp{Edit->Find...})
 @item
 New buffer tabs.
 @item
@@ -7076,11 +8384,11 @@ Not yet written.
 @c @itemize @bullet
 @c @end itemize
 
-@node Q7.0.3, Q7.0.4, Q7.0.2, Current Events
-@unnumberedsubsec Q7.0.3: What's new in XEmacs 21.1?
+@node Q9.0.3, Q9.0.4, Q9.0.2, Current Events
+@unnumberedsubsec Q9.0.3: What's new in XEmacs 21.1?
 
 21.1 was the "stable" version of "experimental" 21.0 series.
-@xref{Q7.0.2}.
+@xref{Q9.0.2, What's new in XEmacs 21.4?}.
 
 The following lists summarizes the essential changes made in this
 version.  For a fuller list, see the @file{NEWS} in the @file{etc}
@@ -7092,9 +8400,10 @@ directory of the XEmacs distribution, or use @kbd{C-h n} or the
 @itemize @bullet
 
 @item
-XEmacs is now supported under Microsoft Windows 95/98 and Windows NT
-operating systems.  To discuss Windows-specific issues, subscribe to the
-mailing list at @email{xemacs-nt-request@@xemacs.org}.
+XEmacs is now supported under Microsoft Windows 95/98 and Windows
+NT/2000/XP operating systems.  To discuss Windows-specific issues,
+subscribe to the mailing list at
+@email{xemacs-winnt-request@@xemacs.org}.
 
 @item
 XEmacs has been unbundled into constituent installable packages.
@@ -7214,14 +8523,14 @@ longer on the load-path by default.
 
 @end itemize
 
-@node Q7.0.4, Q7.0.5, Q7.0.3, Current Events
-@unnumberedsubsec Q7.0.4: What's new in XEmacs 20.4?
+@node Q9.0.4, Q9.0.5, Q9.0.3, Current Events
+@unnumberedsubsec Q9.0.4: What's new in XEmacs 20.4?
 
 XEmacs 20.4 is a bugfix release with no user-visible changes.
 @c Filled in from NEWS file of 20.5-b33
 
-@node Q7.0.5, Q7.0.6, Q7.0.4, Current Events
-@unnumberedsubsec Q7.0.5: What's new in XEmacs 20.3?
+@node Q9.0.5, Q9.0.6, Q9.0.4, Current Events
+@unnumberedsubsec Q9.0.5: What's new in XEmacs 20.3?
 
 XEmacs 20.3 was released in November 1997. It contains many bugfixes,
 and a number of new features, including Autoconf 2 based configuration,
@@ -7240,8 +8549,8 @@ the default) is definitely faster than XEmacs 19.16.
 XEmacs 20.3 is the first non-beta v20 release, and will be the
 basis for all further development.
 
-@node Q7.0.6, , Q7.0.5, Current Events
-@unnumberedsubsec Q7.0.6: What's new in XEmacs 20.2?
+@node Q9.0.6,  , Q9.0.5, Current Events
+@unnumberedsubsec Q9.0.6: What's new in XEmacs 20.2?
 
 The biggest changes in 20.2 include integration of EFS (the next
 generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a
@@ -7256,25 +8565,26 @@ considered unstable.
 For older news, see the file @file{ONEWS} in the @file{etc} directory of
 the XEmacs distribution.
 
+@node Legacy Versions,  , Current Events, Top
+@unnumbered 10 New information about old XEmacsen
 
-
-@node Legacy Versions, , Current Events, Top
-@unnumbered 8 New information about old XEmacsen
-
-This is part 8 of the XEmacs Frequently Asked Questions list.  It will
+This is part 10 of the XEmacs Frequently Asked Questions list.  It will
 occasionally be updated to reflect new information about versions which
 are no longer being revised by the XEmacs Project.  The primary purpose
 is advice on compatibility of older XEmacsen with new packages and
 updated versions of packages, but bug fixes (which will not be applied
 to released XEmacsen, but users can apply themselves) are also accepted.
 
-
 @menu
-* Q8.0.1::      Gnus 5.10 won't display smileys in XEmacs 21.1.
+10.0: XEmacs 21.1
+* Q10.0.1::   Gnus 5.10 won't display smileys in XEmacs 21.1.
+* Q10.0.2::   XEmacs won't start on Windows in XEmacs 21.1.
 @end menu
 
-@node Q8.0.1, , , Legacy Versions
-@unnumberedsubsec Q8.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1.
+@unnumberedsec 10.0: XEmacs 21.1
+
+@node Q10.0.1, Q10.0.2, Legacy Versions, Legacy Versions
+@unnumberedsubsec Q10.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1.
 
 @email{eeide@@cs.utah.edu, Eric Eide} wrote:
 
@@ -7311,5 +8621,24 @@ The image-mode stuff is gone from format-alist in the 21.4
 branch, praise be.
 @end quotation
 
+@node Q10.0.2,  , Q10.0.1, Legacy Versions
+@unnumberedsubsec Q10.0.2: XEmacs won't start on Windows in XEmacs 21.1.
+
+XEmacs relies on a process called "dumping" to generate a working
+executable. Under MS-Windows this process effectively fixes the memory
+addresses of information in the executable. When XEmacs starts up it tries
+to reserve these memory addresses so that the dumping process can be
+reversed -- putting the information back at the correct addresses.
+Unfortunately some .DLLs (for instance the soundblaster driver) occupy
+memory addresses that can conflict with those needed by the dumped XEmacs
+executable. In this instance XEmacs will fail to start without any
+explanation. Note that this is extremely machine specific.
+
+21.1.10 includes a fix for this that makes more intelligent guesses
+about which memory addresses will be free, and this should cure the
+problem for most people.  21.4 implements "portable dumping", which
+eliminates the problem altogether.  We recommend you use the 21.4
+binaries, but you can use the 21.1 binaries if you are very paranoid
+about stability.  @xref{Q1.1.2, Are binaries available?}.
 
 @bye
index f02e55e..cad132a 100644 (file)
@@ -1,3 +1,7 @@
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
 2005-12-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
index 1c44af6..91ea3c7 100644 (file)
@@ -1,3 +1,27 @@
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs.iss: 21.4.19 version.  No registry fiddling, please.
+       Package root is now found automatically.
+
+2005-12-27  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs.iss: 21.4.19-pre1 version
+                     Remove registry key for EMACSPACKAGEPATH.
+                     Install by default to c:\Program Files\XEmacs.
+
+2005-12-17  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs.iss: Move packages out of version-specific location.
+                     Removed CRs.
+
+2005-12-15  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs.iss: Created for generating winoze setup kits.
+
 2005-12-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
index e69420d..db1ce6a 100644 (file)
@@ -1,3 +1,43 @@
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
+2006-01-20  Rick Rankin <rrankin1424-xemacs@yahoo.com>
+
+       * sysdir.h: Workaround missing d_ino field from 'struct dirent'.
+
+2005-12-24  Aidan Kehoe  <kehoea@parhasard.net>
+
+       * objects-gtk.c (MAX_FONT_COUNT): Increase MAX_FONT_COUNT from
+       5000 to INT_MAX.
+
+2005-12-05  Dr. Volker Zell  <Dr.Volker.Zell@oracle.com>
+
+       * database.c: Suppress compiler warning under Cygwin.
+       * database.c: Removed __FreeBSD__ check, should be handled by
+        HAVE_U_xxx_T defines.
+
+2005-12-18  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * console.c (stuff_buffered_input): Compile body only if
+       HAVE_TTY.
+
+2005-05-10  Aidan Kehoe  <kehoea@parhasard.net>
+
+       * callproc.c: #include sysdir.h, so that any appropriate Mule
+       magic happens with the chdir() call when calling a subprocess. 
+
+2005-12-06  Aidan Kehoe  <kehoea@parhasard.net>
+
+       * mule-ccl.c (POSSIBLE_LEADING_BYTE_P): Add.
+       * mule-ccl.c: Check that a character set exists before using it
+       to create a character. 
+
+2005-12-06  Vin Shelton  <acs@xemacs.org>
+
+       * objects-x.c (MAX_FONT_COUNT): Increase MAX_FONT_COUNT from 5000
+       to INT_MAX.
+
 2005-12-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
index 04f31cb..5c90e9e 100644 (file)
@@ -47,6 +47,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include "systime.h"
 #include "sysproc.h"
+#include "sysdir.h"
 #include "sysfile.h" /* Always include after sysproc.h */
 #include "sysdir.h"
 #include "syssignal.h" /* Always include before systty.h */
index 789a477..0840f8a 100644 (file)
@@ -882,7 +882,7 @@ void
 stuff_buffered_input (Lisp_Object stuffstring)
 {
 /* stuff_char works only in BSD, versions 4.2 and up.  */
-#if defined (BSD)
+#if defined (BSD) && defined(HAVE_TTY)
   if (!CONSOLEP (Vcontrolling_terminal) ||
       !CONSOLE_LIVE_P (XCONSOLE (Vcontrolling_terminal)))
     return;
@@ -908,7 +908,7 @@ stuff_buffered_input (Lisp_Object stuffstring)
       stuff_char (XCONSOLE (Vcontrolling_terminal), *kbd_fetch_ptr++);
     }
 # endif
-#endif /* BSD */
+#endif /* BSD && HAVE_TTY */
 }
 
 DEFUN ("suspend-console", Fsuspend_console, 0, 1, "", /*
index 33a8615..f179615 100644 (file)
@@ -43,9 +43,10 @@ Boston, MA 02111-1307, USA.  */
 /* glibc 2.1 doesn't have this problem with DB 2.x */
 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
 #ifdef HAVE_INTTYPES_H
+#ifndef __BIT_TYPES_DEFINED__
 #define __BIT_TYPES_DEFINED__
+#endif
 #include <inttypes.h>
-#ifndef __FreeBSD__
 #if !HAVE_U_INT8_T
 typedef uint8_t  u_int8_t;
 #endif
@@ -60,7 +61,6 @@ typedef uint32_t u_int32_t;
 typedef uint64_t u_int64_t;
 #endif
 #endif /* WE_DONT_NEED_QUADS */
-#endif /* !defined(__FreeBSD__) */
 #endif /* HAVE_INTTYPES_H */
 #endif /* !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1) */
 /* Berkeley DB wants __STDC__ to be defined; else if does `#define const' */
index 1091ef3..866f279 100644 (file)
@@ -833,6 +833,9 @@ static int stack_idx_of_map_multiple;
       }                                                        \
   } while (0)
 
+#define POSSIBLE_LEADING_BYTE_P(leading_byte) \
+  ((leading_byte > MIN_LEADING_BYTE) && \
+   (leading_byte - MIN_LEADING_BYTE) < NUM_LEADING_BYTES)
 
 /* Set C to the character code made from CHARSET and CODE.  This is
    like MAKE_CHAR but check the validity of CHARSET and CODE.  If they
@@ -1296,6 +1299,16 @@ ccl_driver (struct ccl_program *ccl,
                    reg[rrr] = i;
                    reg[RRR] = LEADING_BYTE_ASCII;
                  }
+               /* Previously, these next two elses were reversed in order,
+                  which should have worked fine, but is more fragile than
+                  this order. */
+               else if (LEADING_BYTE_CONTROL_1 == i)
+                 {
+                   if (src >= src_end)
+                     goto ccl_read_multibyte_character_suspend;
+                   reg[RRR] = i;
+                   reg[rrr] = (*src++ - 0xA0);
+                 }
                else if (i <= MAX_LEADING_BYTE_OFFICIAL_1)
                  {
                    if (src >= src_end)
@@ -1357,15 +1370,29 @@ ccl_driver (struct ccl_program *ccl,
 
            case CCL_WriteMultibyteChar2:
              i = reg[RRR]; /* charset */
-             if (i == LEADING_BYTE_ASCII || i == LEADING_BYTE_CONTROL_1)
+             if (i == LEADING_BYTE_ASCII) 
                i = reg[rrr] & 0xFF;
-             else if (XCHARSET_DIMENSION (CHARSET_BY_LEADING_BYTE (i)) == 1)
-               i = (((i - FIELD2_TO_OFFICIAL_LEADING_BYTE) << 7)
-                    | (reg[rrr] & 0x7F));
-             else if (i < MAX_LEADING_BYTE_OFFICIAL_2)
-               i = ((i - FIELD1_TO_OFFICIAL_LEADING_BYTE) << 14) | reg[rrr];
-             else
-               i = ((i - FIELD1_TO_PRIVATE_LEADING_BYTE) << 14) | reg[rrr];
+             else if (LEADING_BYTE_CONTROL_1 == i)
+               i = ((reg[rrr] & 0xFF) - 0xA0);
+             else if (POSSIBLE_LEADING_BYTE_P(i) &&
+                      !NILP(CHARSET_BY_LEADING_BYTE(i)))
+               {
+                 if (XCHARSET_DIMENSION (CHARSET_BY_LEADING_BYTE (i)) == 1)
+                   i = (((i - FIELD2_TO_OFFICIAL_LEADING_BYTE) << 7)
+                        | (reg[rrr] & 0x7F));
+                 else if (i < MAX_LEADING_BYTE_OFFICIAL_2)
+                   i = ((i - FIELD1_TO_OFFICIAL_LEADING_BYTE) << 14) 
+                     | reg[rrr];
+                 else
+                   i = ((i - FIELD1_TO_PRIVATE_LEADING_BYTE) << 14) | reg[rrr];
+               }
+             else 
+               {
+                 /* No charset we know about; use U+3012 GETA MARK */
+                 i = MAKE_CHAR
+                   (CHARSET_BY_LEADING_BYTE(LEADING_BYTE_JAPANESE_JISX0208),
+                    34, 46);
+               }
 
              CCL_WRITE_CHAR (i);
 
@@ -1424,7 +1451,6 @@ ccl_driver (struct ccl_program *ccl,
 
                for (;i < j;i++)
                  {
-
                    size = XVECTOR (Vcode_conversion_map_vector)->size;
                    point = XINT (ccl_prog[ic++]);
                    if (point >= size) continue;
index 72fde7c..64bd305 100644 (file)
@@ -481,7 +481,7 @@ vars_of_objects_gtk (void)
 #include <X11/Xatom.h>
 
 /* Unbounded, for sufficiently small values of infinity... */
-#define MAX_FONT_COUNT 5000
+#define MAX_FONT_COUNT INT_MAX
 
 #ifdef MULE
 /* find a font spec that matches font spec FONT and also matches
@@ -529,7 +529,7 @@ gtk_find_charset_font (Lisp_Object device, Lisp_Object font, Lisp_Object charset
 #endif /* MULE */
 
 /* Unbounded, for sufficiently small values of infinity... */
-#define MAX_FONT_COUNT 5000
+#define MAX_FONT_COUNT INT_MAX
 
 static int
 valid_font_name_p (Display *dpy, char *name)
index 2868f94..25a19c9 100644 (file)
@@ -681,7 +681,7 @@ truename_via_random_props (Display *dpy, XFontStruct *font)
 }
 
 /* Unbounded, for sufficiently small values of infinity... */
-#define MAX_FONT_COUNT 5000
+#define MAX_FONT_COUNT INT_MAX
 
 static Extbyte *
 truename_via_XListFonts (Display *dpy, Extbyte *font_name)
index 0139a8d..a123909 100644 (file)
@@ -59,7 +59,11 @@ Boston, MA 02111-1307, USA.  */
    Since applying strlen to the name always works, we'll just do that.  */
 #define NAMLEN(p) strlen (p->d_name)
 
-#define DIRENTRY_NONEMPTY(p) ((p)->d_ino)
+#ifdef __CYGWIN__
+# define DIRENTRY_NONEMPTY(p) ((p)->d_name[0] != '\0')
+#else
+# define DIRENTRY_NONEMPTY(p) ((p)->d_ino)
+#endif
 
 /* encapsulation: directory calls */
 
index 50fc29b..a473bb9 100644 (file)
@@ -1,3 +1,18 @@
+2006-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * XEmacs 21.4.19 is released
+
+2005-12-08  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * automated/syntax-tests.el (backward-up-list): New test.
+       Thanks to Zacjev Evgeny for report, Aidan Kehoe for reproduction.
+
+2005-05-10  Aidan Kehoe  <kehoea@parhasard.net>
+
+       * automated/mule-tests.el: Test that starting a process in a
+       non-Latin-1 directory preserves the current directory, which it
+       didn't, previous to 21.4.17
+
 2005-12-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.18 is released
index c3eaffb..ab90516 100644 (file)
@@ -320,6 +320,27 @@ the Assert macro checks for correctness."
        (Assert (equal (file-truename name1) name1)))
 
       (ignore-file-errors (delete-file name1) (delete-file name2))))
+  ;; Is a non-Latin-1 directory name preserved for call-process?
+  (when (and
+        ;; The bug should manifest itself on Windows, but I've no access
+        ;; to a Windows machine to verify that any test works.
+        (eq directory-sep-char ?/)
+        ;; file-name-coding-system on Darwin is _always_ UTF-8--the system
+        ;; enforces this--which coding system we don't have available in
+        ;; 21.4, outside of packages. I could jump through lots of hoops to
+        ;; have the test work anyway, but I'm not really into that right
+        ;; now.
+        (not (eq system-type 'darwin)))
+    (let ((process-coding-system-alist '((".*" . iso-8859-1)))
+         (file-name-coding-system 'iso-8859-1)
+         default-directory)
+      (make-directory (concat (temp-directory) "/\260\354"))
+      (setq file-name-coding-system 'euc-jp)
+      (setq default-directory (format "%s/%c/" (temp-directory)
+                                     (make-char 'japanese-jisx0208 48 108)))
+      (Assert (equal (shell-command-to-string "pwd") 
+                    (format "%s/\260\354\n" (temp-directory))))
+      (delete-directory default-directory)))
 
   ;; Add many more file operation tests here...
 
index 1ebb9f1..62e2978 100644 (file)
 
       ;; this last used to crash
       (parse-partial-sexp point (point-max)))))
+
+;; Test backward-up-list
+;; Known-Bug: report = Evgeny Zacjev ca 2005-12-01, confirm = Aidan Kehoe
+
+(with-temp-buffer
+  ;; We are now using the standard syntax table.  Thus there's no need to
+  ;; worry about a bogus syntax setting, eg, in a Gnus Article buffer the
+  ;; bug doesn't manifest.
+
+  ;; value of point to the immediate left of this character
+  ;;       0          1           2
+  ;;       1234 56789 012 34567 890 12 3456 7
+  (insert "a ( \"b (c\" (\"defg\") \")\") h\n")
+
+  ;; #### This test should check *every* position.
+  (flet ((backward-up-list-moves-point-from-to (start expected-end)
+          (goto-char start)
+          (backward-up-list 1)
+          (= (point) expected-end)))
+    (Known-Bug-Expect-Failure
+     ;; Evgeny's case
+     (Assert (backward-up-list-moves-point-from-to 16 12)))
+    (Assert (backward-up-list-moves-point-from-to 19 12))
+    (Assert (backward-up-list-moves-point-from-to 20 3))
+    (Known-Bug-Expect-Failure
+     (Assert (backward-up-list-moves-point-from-to 22 3)))
+    (Known-Bug-Expect-Failure
+     (Assert (backward-up-list-moves-point-from-to 23 3)))
+    (Assert (backward-up-list-moves-point-from-to 24 3))
+    ;; This is maybe a little tricky, since we don't expect the position
+    ;; check to happen -- so use an illegal expected position
+    ;; I don't think there's any other way for this to fail that way,
+    ;; barring hardware error....
+    (Check-Error-Message syntax-error
+                        "Unbalanced parentheses"
+                        (backward-up-list-moves-point-from-to 25 nil))
+    ;; special-case check that point didn't move
+    (Assert (= (point) 25))))
+
index db4a72e..59eea38 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=
 emacs_major_version=21
 emacs_minor_version=4
-emacs_beta_version=18
-xemacs_codename="Social Property"
+emacs_beta_version=19
+xemacs_codename="Constant Variable"
 emacs_kit_version=
 infodock_major_version=4
 infodock_minor_version=0