From: tomo Date: Tue, 30 May 2006 07:08:42 +0000 (+0000) Subject: XEmacs 21.4.19 (Constant Variable). X-Git-Tag: r21-4-19-chise-0_23-1~1 X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=commitdiff_plain;h=de7caee5f47b0888cb3895ce8c09d745f2fc35aa XEmacs 21.4.19 (Constant Variable). --- diff --git a/ChangeLog b/ChangeLog index e47efd0..ebbbab5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,39 @@ +2006-01-28 Vin Shelton + + * XEmacs 21.4.19 is released + +2006-01-28 Vin Shelton + + * etc/package-index.LATEST.gpg: Updated with latest package data. + +2005-12-18 Ilya N. Golubev + + 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 + + * etc/package-index.LATEST.gpg: Updated with latest package data. + +2005-12-04 Vin Shelton + + * 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ä + * etc/PACKAGES: Fix description of xetla. + 2005-12-03 Vin Shelton * XEmacs 21.4.18 is released @@ -20,7 +56,7 @@ 2005-03-12 Aidan Kehoe * configure.in (XE_COMPUTE_RUNPATH): Check XtRegisterDrawable - availability. + availability. 2005-04-11 Norbert Koch @@ -176,10 +212,10 @@ 2004-01-25 Steve Youngs * 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 @@ -275,7 +311,7 @@ 2003-07-03 Stephen J. Turnbull - * etc/README.HYPERBOLE: + * etc/README.HYPERBOLE: * etc/README.OO-BROWSER: Update. @@ -307,7 +343,7 @@ 2003-03-20 Stephen J. Turnbull - * configure.in (INTPTR_T_IN_CYGWIN_TYPES_H): + * configure.in (INTPTR_T_IN_CYGWIN_TYPES_H): Cygwin defines these types in . Detect and don't duplicate the definition. @@ -346,7 +382,7 @@ 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 @@ -356,7 +392,7 @@ 2003-01-27 Martin Buchholz - * 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: @@ -395,7 +431,7 @@ 2003-01-05 Rick Rankin - * 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 @@ -404,8 +440,8 @@ 2003-01-02 Stephen J. Turnbull - * 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. @@ -440,7 +476,7 @@ 2002-10-31 John Paul Wallington - * 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 @@ -471,7 +507,7 @@ 2002-10-23 Stephen J. Turnbull * 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 @@ -508,7 +544,7 @@ * 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 * PROBLEMS (Running, General): Missing charset in FontSet warnings. @@ -629,7 +665,7 @@ * configure.in: Detect MacOS/X "Darwin". Thanks to Greg Parker . - + 2002-03-30 Steve Youngs * etc/package-index.LATEST.pgp: Update to current reality. @@ -650,7 +686,7 @@ 2001-12-13 William M. Perry * configure.in (GTK): add -Wno-shadow. - + 2002-02-04 Stephen J. Turnbull * etc/BETA: Synch to 21.5. @@ -736,8 +772,8 @@ * 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 * configure.ac: new. Autoconf 2.5x guard. @@ -831,7 +867,7 @@ 2001-05-04 Martin Buchholz - * 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. @@ -937,14 +973,14 @@ * 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 - * etc/gnuserv.1 (UNIX_DOMAIN_SOCKETS: + * etc/gnuserv.1 (UNIX_DOMAIN_SOCKETS: * PROBLEMS (Problems with running XEmacs): Document TMPDIR lossage in gnuserv/gnuclient. diff --git a/configure b/configure index 78bdaf8..1fc9ae0 100755 --- 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 < +#include +#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 < +#include +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 < +#include +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 <&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 <&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 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 <&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 <&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 < @@ -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 <&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 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 <&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 <&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 <&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 <&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 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 <&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 <&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 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 <&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 < 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 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 <&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 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 <&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 <&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 <&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 <&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 <&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 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 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 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 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 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 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 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 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 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 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 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 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 <&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 < #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 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 <&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 @@ -10262,18 +10358,18 @@ fi 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 <&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 @@ -10308,12 +10404,12 @@ fi 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 <&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 @@ -10347,12 +10443,12 @@ fi 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 <&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 <&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 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* @@ -10518,15 +10614,15 @@ fi } 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 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* @@ -10551,10 +10647,10 @@ fi 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 <&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 <&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 @@ -10657,12 +10753,12 @@ fi 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 <&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 <&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 <&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 <&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 <&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 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* @@ -10909,15 +11005,15 @@ fi 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 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* @@ -10945,15 +11041,15 @@ fi 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 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* @@ -10976,12 +11072,12 @@ fi } 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 <&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 @@ -11015,12 +11111,12 @@ fi } 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 <&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 <&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 @@ -11183,10 +11279,10 @@ fi 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 <&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 @@ -11250,10 +11346,10 @@ fi 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 <&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 <&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 <&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 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 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 <&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 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 <&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 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 <&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 @@ -11742,15 +11838,15 @@ fi 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 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 <&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 @@ -11832,16 +11928,16 @@ fi 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 < 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 @@ -11861,16 +11957,16 @@ fi 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 < 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 @@ -11890,11 +11986,11 @@ fi 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 < #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 <&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 @@ -12004,19 +12100,19 @@ fi 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 <&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 < 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 <&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 <&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 <&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 <&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 @@ -12296,15 +12392,15 @@ fi 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 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 < @@ -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 @@ -12456,10 +12552,10 @@ fi 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 < 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 @@ -12497,10 +12593,10 @@ fi 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 <&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 @@ -12551,10 +12647,10 @@ fi 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 <&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 @@ -12636,10 +12732,10 @@ fi 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 < #include @@ -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 < 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 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 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* @@ -12831,10 +12927,10 @@ fi 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 <&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 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 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 < @@ -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 < @@ -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 @@ -13004,10 +13100,10 @@ fi 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 <&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 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 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* @@ -13116,15 +13212,15 @@ fi 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 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 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* @@ -13192,15 +13288,15 @@ fi 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 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* @@ -13230,22 +13326,22 @@ fi 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 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* @@ -13301,12 +13397,12 @@ fi 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 <&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 @@ -13348,12 +13444,12 @@ fi 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 <&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 @@ -13409,15 +13505,15 @@ fi 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 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* @@ -13471,15 +13567,15 @@ fi 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 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 <&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 @@ -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. @@ -13612,10 +13708,10 @@ fi 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 <&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 <&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 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* @@ -13784,15 +13880,15 @@ fi 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 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* @@ -13822,15 +13918,15 @@ fi 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 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* @@ -13865,12 +13961,12 @@ fi 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 <&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 @@ -13906,12 +14002,12 @@ fi 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 <&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 @@ -13967,12 +14063,12 @@ fi 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 <&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 <&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 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 <&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 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* @@ -14210,12 +14306,12 @@ fi 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 <&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 @@ -14254,10 +14350,10 @@ fi 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 <&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 <&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 < #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 < #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 < #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 < #if STDC_HEADERS @@ -14533,12 +14629,12 @@ fi 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 < @@ -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 < @@ -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 < #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 < #if DB_VERSION_MAJOR > 2 @@ -14654,10 +14750,10 @@ fi 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 <&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 <&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 @@ -14779,12 +14875,12 @@ fi 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 <&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 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 < 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 < 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 <&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 <&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 <&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 <&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 <&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 &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 <&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 <&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 diff --git a/configure.in b/configure.in index 0e645ae..a0f9f4d 100644 --- a/configure.in +++ b/configure.in @@ -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 +#include +#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 +#include +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 +#include +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) diff --git a/etc/NEWS b/etc/NEWS index 87866eb..d702208 100644 --- 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. + * 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: diff --git a/etc/OXYMORONS b/etc/OXYMORONS index 1e92bb5..0c8dcc9 100644 --- a/etc/OXYMORONS +++ b/etc/OXYMORONS @@ -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 diff --git a/etc/PACKAGES b/etc/PACKAGES index f6b687d..330952d 100644 --- a/etc/PACKAGES +++ b/etc/PACKAGES @@ -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. diff --git a/etc/package-index.LATEST.gpg b/etc/package-index.LATEST.gpg index 40ff6d3..0b4c618 100644 --- a/etc/package-index.LATEST.gpg +++ b/etc/package-index.LATEST.gpg @@ -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 " + 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 " + 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 " + 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 " + 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 " + 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 " + 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 " + 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 " 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 " 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 " 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 " 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 " 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 " 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 " + date "2005-12-19" + build-date "2005-12-19" + maintainer "Skip Montanaro " 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 " 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 " 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 " 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 " 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 " - 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 " + version "1.07" + author-version "1.45" + date "2004-06-16" + build-date "2004-06-16" + maintainer "Jerry James " 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 " - 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " + version "1.10" + author-version "/main/laptop/165" + date "2005-06-04" + build-date "2005-06-04" + maintainer "Adrian Aichner " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " + version "1.46" + author-version "11.55" + date "2005-02-12" + build-date "2005-12-08" + maintainer "Uwe Brauer " 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 " 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 " + date "2004-02-16" + build-date "2004-02-16" + maintainer "Uwe Brauer " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " + date "2005-11-14" + build-date "2005-11-14" + maintainer "Glynn Clements " 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 " 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 " 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 " 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 " 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 " + version "1.89" + author-version "5.10.7" + date "2006-01-04" + build-date "2006-01-04" + maintainer "Steve Youngs " 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 " 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 " 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 " + date "2005-03-14" + build-date "2005-03-14" + maintainer "XEmacs Beta " 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 " 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 " + version "1.48" + author-version "N/A" + date "2005-10-12" + build-date "2005-10-12" + maintainer "Steve Youngs " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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----- diff --git a/info/cl.info b/info/cl.info index 5c36018..8d66cd0 100644 --- a/info/cl.info +++ b/info/cl.info @@ -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.  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.  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.  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  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::.  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.  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.  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.  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.  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.  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.  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.  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::.  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  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.  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.  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.  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.  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::.  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  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.  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.  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*'.  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.  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."  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.  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  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.  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.  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.  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.  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.  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.  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:  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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  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.  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.  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'.  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.  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)'.  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  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.  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.  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.  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.  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.  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 ************** +[index] * 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)  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 ************** +[index] * 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)  Tag Table: Node: Top1164 -Node: Overview2716 -Node: Usage4995 -Node: Organization5645 -Node: Installation7468 -Node: Naming Conventions8621 -Node: Program Structure10748 -Node: Argument Lists11216 -Node: Time of Evaluation20999 -Node: Function Aliases26979 -Node: Predicates27563 -Node: Type Predicates27883 -Node: Equality Predicates32925 -Node: Control Structure35701 -Node: Assignment36505 -Node: Generalized Variables37746 -Node: Basic Setf39053 -Node: Modify Macros46305 -Node: Customizing Setf53514 -Node: Variable Bindings60803 -Node: Dynamic Bindings61384 -Node: Lexical Bindings62274 -Node: Function Bindings66378 -Node: Macro Bindings68765 -Node: Conditionals71688 -Node: Blocks and Exits74771 -Node: Iteration77827 -Node: Loop Facility83300 -Node: Loop Basics84227 -Node: Loop Examples86827 -Node: For Clauses89086 -Node: Iteration Clauses100963 -Node: Accumulation Clauses102804 -Node: Other Clauses105148 -Node: Multiple Values111217 -Node: Macros113110 -Node: Declarations116328 -Node: Symbols124814 -Node: Property Lists125095 -Node: Creating Symbols127286 -Node: Numbers129364 -Node: Predicates on Numbers129844 -Node: Numerical Functions130873 -Node: Random Numbers135100 -Node: Implementation Parameters137809 -Node: Sequences141381 -Node: Sequence Basics142054 -Node: Mapping over Sequences145632 -Node: Sequence Functions151486 -Node: Searching Sequences157661 -Node: Sorting Sequences160698 -Node: Lists163246 -Node: List Functions163671 -Node: Substitution of Expressions167934 -Node: Lists as Sets169820 -Node: Association Lists173882 -Node: Hash Tables175585 -Node: Structures175805 -Node: Assertions190588 -Node: Efficiency Concerns193511 -Node: Common Lisp Compatibility199838 -Node: Old CL Compatibility202994 -Node: Porting Common Lisp207377 -Node: Function Index218388 -Node: Variable Index229537 +Node: Overview2720 +Node: Usage5003 +Node: Organization5661 +Node: Installation7492 +Node: Naming Conventions8653 +Node: Program Structure10788 +Node: Argument Lists11260 +Node: Time of Evaluation21050 +Node: Function Aliases27041 +Node: Predicates27634 +Node: Type Predicates27958 +Node: Equality Predicates33011 +Node: Control Structure35797 +Node: Assignment36605 +Node: Generalized Variables37855 +Node: Basic Setf39170 +Node: Modify Macros46435 +Node: Customizing Setf53668 +Node: Variable Bindings60974 +Node: Dynamic Bindings61563 +Node: Lexical Bindings62466 +Node: Function Bindings66584 +Node: Macro Bindings68985 +Node: Conditionals71912 +Node: Blocks and Exits75009 +Node: Iteration78076 +Node: Loop Facility83564 +Node: Loop Basics84499 +Node: Loop Examples87112 +Node: For Clauses89383 +Node: Iteration Clauses101272 +Node: Accumulation Clauses103125 +Node: Other Clauses105481 +Node: Multiple Values111562 +Node: Macros113465 +Node: Declarations116690 +Node: Symbols125185 +Node: Property Lists125470 +Node: Creating Symbols127671 +Node: Numbers129760 +Node: Predicates on Numbers130244 +Node: Numerical Functions131286 +Node: Random Numbers135532 +Node: Implementation Parameters138253 +Node: Sequences141844 +Node: Sequence Basics142523 +Node: Mapping over Sequences146111 +Node: Sequence Functions151987 +Node: Searching Sequences158185 +Node: Sorting Sequences161237 +Node: Lists163798 +Node: List Functions164229 +Node: Substitution of Expressions168515 +Node: Lists as Sets170415 +Node: Association Lists174500 +Node: Hash Tables176218 +Node: Structures176444 +Node: Assertions191159 +Node: Efficiency Concerns194091 +Node: Common Lisp Compatibility200465 +Node: Old CL Compatibility203643 +Node: Porting Common Lisp208056 +Node: Function Index219079 +Node: Variable Index234539  End Tag Table diff --git a/info/custom.info b/info/custom.info index 62ed588..e5e5875 100644 --- a/info/custom.info +++ b/info/custom.info @@ -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."  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: Top204 Node: Declaring Groups1622 -Node: Declaring Variables2720 -Node: Declaring Faces5809 -Node: Usage for Package Authors7504 -Node: Utilities8280 -Node: The Init File9361 -Node: Wishlist10388 +Node: Declaring Variables2721 +Node: Declaring Faces5814 +Node: Usage for Package Authors7510 +Node: Utilities8286 +Node: The Init File9372 +Node: Wishlist10399  End Tag Table diff --git a/info/emodules.info b/info/emodules.info index ac1d26b..14137b7 100644 --- a/info/emodules.info +++ b/info/emodules.info @@ -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  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.  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  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 `'. This will include several other XEmacs internal header files, and will set up certain @@ -225,8 +225,8 @@ files included are:  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.  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.  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.  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.  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).  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.  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.  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.  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.  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  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.  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.  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 ***** +[index] * 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)  Tag Table: Node: Top1536 Node: Introduction2883 -Node: Anatomy of a Module7388 -Node: Required Header File8199 -Node: Required Functions10115 -Node: Required Variables12836 -Node: Loading other Modules15519 -Node: Using ellcc18432 -Node: Compile Mode20223 -Node: Initialization Mode21588 -Node: Link Mode26615 -Node: Other ellcc options27757 -Node: Environment Variables30333 -Node: Defining Functions32022 -Node: Using DEFUN34030 -Node: Declaring Functions35738 -Node: Defining Variables37078 -Node: Index39318 +Node: Anatomy of a Module7392 +Node: Required Header File8207 +Node: Required Functions10131 +Node: Required Variables12860 +Node: Loading other Modules15551 +Node: Using ellcc18472 +Node: Compile Mode20267 +Node: Initialization Mode21635 +Node: Link Mode26635 +Node: Other ellcc options27785 +Node: Environment Variables30369 +Node: Defining Functions32066 +Node: Using DEFUN34078 +Node: Declaring Functions35779 +Node: Defining Variables37127 +Node: Index39351  End Tag Table diff --git a/info/external-widget.info b/info/external-widget.info index e003b3a..81d6daa 100644 --- a/info/external-widget.info +++ b/info/external-widget.info @@ -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.  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.  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.  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.  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: Top232 Node: Using an External Client Widget699 -Node: External Client Widget Resource Settings2410 -Node: Motif-Specific Info About the External Client Widget5150 -Node: External Client Widget Internals5961 +Node: External Client Widget Resource Settings2414 +Node: Motif-Specific Info About the External Client Widget5158 +Node: External Client Widget Internals5973  End Tag Table diff --git a/info/info.info b/info/info.info index 47f47a4..7c40a00 100644 --- a/info/info.info +++ b/info/info.info @@ -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.  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.  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.  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 afterward.  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.  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.  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).  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 s.  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.  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.  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.  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.)  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'.  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.  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.  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!  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.  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.  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:  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: Top1067 Node: Getting Started1609 -Node: Help-Small-Screen2354 -Node: Help4100 -Node: Help-P5127 -Node: Help-^L5986 -Node: Help-M8861 -Node: Help-FOO14838 -Node: Help-Adv15574 -Node: Help-Cross18246 -Node: Help-Q18889 -Node: Advanced Info19513 -Node: Expert20488 -Node: Add22999 -Node: Menus26356 -Node: Cross-refs29227 -Node: Tags29926 -Node: Checking31225 -Node: Emacs Info Variables32175 -Node: Creating an Info File33161 +Node: Help-Small-Screen2358 +Node: Help4112 +Node: Help-P5147 +Node: Help-^L6014 +Node: Help-M8897 +Node: Help-FOO14882 +Node: Help-Adv15630 +Node: Help-Cross18310 +Node: Help-Q18965 +Node: Advanced Info19597 +Node: Expert20576 +Node: Add23095 +Node: Menus26460 +Node: Cross-refs29339 +Node: Tags30046 +Node: Checking31353 +Node: Emacs Info Variables32311 +Node: Creating an Info File33305  End Tag Table diff --git a/info/internals.info b/info/internals.info index 5ac1c97..98172aa 100644 --- a/info/internals.info +++ b/info/internals.info @@ -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.  Indirect: internals.info-1: 1789 -internals.info-2: 301402 +internals.info-2: 300999  Tag Table: (Indirect) Node: Top1789 Node: A History of Emacs7157 -Node: Through Version 188679 -Node: Lucid Emacs12097 -Node: GNU Emacs 1916138 -Node: GNU Emacs 2018317 -Node: XEmacs18741 -Node: XEmacs From the Outside25850 -Node: The Lisp Language27614 -Node: XEmacs From the Perspective of Building37154 -Node: XEmacs From the Inside43276 -Node: The XEmacs Object System (Abstractly Speaking)51650 -Node: How Lisp Objects Are Represented in C65733 -Node: Rules When Writing New C Code71819 -Node: A Reader's Guide to XEmacs Coding Conventions72715 -Node: General Coding Rules77555 -Node: Writing Lisp Primitives83378 -Node: Writing Good Comments94538 -Node: Adding Global Lisp Variables98074 -Node: Proper Use of Unsigned Types102002 -Node: Coding for Mule103249 -Node: Character-Related Data Types104225 -Node: Working With Character and Byte Positions107195 -Node: Conversion to and from External Data110957 -Node: General Guidelines for Writing Mule-Aware Code117095 -Node: An Example of Mule-Aware Code119780 -Node: Techniques for XEmacs Developers121758 -Node: Regression Testing XEmacs130591 -Node: A Summary of the Various XEmacs Modules135037 -Node: Low-Level Modules135885 -Node: Basic Lisp Modules143298 -Node: Modules for Standard Editing Operations149892 -Node: Editor-Level Control Flow Modules155780 -Node: Modules for the Basic Displayable Lisp Objects159291 -Node: Modules for other Display-Related Lisp Objects162244 -Node: Modules for the Redisplay Mechanism163919 -Node: Modules for Interfacing with the File System166291 -Node: Modules for Other Aspects of the Lisp Interpreter and Object System169989 -Node: Modules for Interfacing with the Operating System176696 -Node: Modules for Interfacing with X Windows184252 -Node: Modules for Internationalization187735 -Node: Modules for Regression Testing190413 -Node: Allocation of Objects in XEmacs Lisp191113 -Node: Introduction to Allocation191634 -Node: Garbage Collection195272 -Node: GCPROing196426 -Node: Garbage Collection - Step by Step203584 -Node: Invocation203976 -Node: garbage_collect_1206944 -Node: mark_object216423 -Node: gc_sweep218232 -Node: sweep_lcrecords_1223293 -Node: compact_string_chars224285 -Node: sweep_strings226462 -Node: sweep_bit_vectors_1227424 -Node: Integers and Characters228097 -Node: Allocation from Frob Blocks228846 -Node: lrecords230447 -Node: Low-level allocation242670 -Node: Cons246774 -Node: Vector247497 -Node: Bit Vector248072 -Node: Symbol248562 -Node: Marker248913 -Node: String249465 -Node: Compiled Function253074 -Node: Dumping253240 -Node: Overview255458 -Node: Data descriptions256009 -Node: Dumping phase258011 -Node: Object inventory258411 -Node: Address allocation261322 -Node: The header262708 -Node: Data dumping263150 -Node: Pointers dumping263808 -Node: Reloading phase265195 -Node: Remaining issues266731 -Node: Events and the Event Loop267689 -Node: Introduction to Events268139 -Node: Main Loop270051 -Node: Specifics of the Event Gathering Mechanism273623 -Node: Specifics About the Emacs Event286073 -Node: The Event Stream Callback Routines286328 -Node: Other Event Loop Functions286573 -Node: Converting Events287710 -Node: Dispatching Events; The Command Builder288316 -Node: Evaluation; Stack Frames; Bindings288548 -Node: Evaluation288890 -Node: Dynamic Binding; The specbinding Stack; Unwind-Protects295399 -Node: Simple Special Forms297783 -Node: Catch and Throw298563 -Node: Symbols and Variables301138 -Node: Introduction to Symbols301402 -Node: Obarrays302437 -Node: Symbol Values305967 -Node: Buffers and Textual Representation308252 -Node: Introduction to Buffers308910 -Node: The Text in a Buffer311570 -Node: Buffer Lists318716 -Node: Markers and Extents320664 -Node: Bufbytes and Emchars322926 -Node: The Buffer Object323138 -Node: MULE Character Sets and Encodings326613 -Node: Character Sets327672 -Node: Encodings331112 -Node: Japanese EUC (Extended Unix Code)332176 -Node: JIS7332987 -Node: Internal Mule Encodings334334 -Node: Internal String Encoding336162 -Node: Internal Character Encoding338273 -Node: CCL339994 -Node: The Lisp Reader and Compiler346747 -Node: Lstreams346957 -Node: Creating an Lstream347985 -Node: Lstream Types349192 -Node: Lstream Functions349445 -Node: Lstream Methods353011 -Node: Consoles; Devices; Frames; Windows356153 -Node: Introduction to Consoles; Devices; Frames; Windows356468 -Node: Point358955 -Node: Window Hierarchy360231 -Node: The Window Object364680 -Node: The Redisplay Mechanism368114 -Node: Critical Redisplay Sections368903 -Node: Line Start Cache369855 -Node: Redisplay Piece by Piece373088 -Node: Extents375122 -Node: Introduction to Extents375656 -Node: Extent Ordering376779 -Node: Format of the Extent Info378017 -Node: Zero-Length Extents379901 -Node: Mathematics of Extent Ordering381297 -Node: Extent Fragments386052 -Node: Faces387135 -Node: Glyphs387248 -Node: Specifiers393869 -Node: Menus393995 -Node: Subprocesses396250 -Node: Interface to the X Window System398233 -Node: Lucid Widget Library398511 -Node: Generic Widget Interface399799 -Node: Scrollbars403355 -Node: Menubars403498 -Node: Checkboxes and Radio Buttons403641 -Node: Progress Bars403827 -Node: Tab Controls403987 -Node: Index404108 +Node: Through Version 188683 +Node: Lucid Emacs12109 +Node: GNU Emacs 1916158 +Node: GNU Emacs 2018345 +Node: XEmacs18777 +Node: XEmacs From the Outside25894 +Node: The Lisp Language27662 +Node: XEmacs From the Perspective of Building37206 +Node: XEmacs From the Inside43332 +Node: The XEmacs Object System (Abstractly Speaking)51710 +Node: How Lisp Objects Are Represented in C65799 +Node: Rules When Writing New C Code71884 +Node: A Reader's Guide to XEmacs Coding Conventions72784 +Node: General Coding Rules77632 +Node: Writing Lisp Primitives83463 +Node: Writing Good Comments94611 +Node: Adding Global Lisp Variables98155 +Node: Proper Use of Unsigned Types102091 +Node: Coding for Mule103346 +Node: Character-Related Data Types104330 +Node: Working With Character and Byte Positions107312 +Node: Conversion to and from External Data111086 +Node: General Guidelines for Writing Mule-Aware Code117236 +Node: An Example of Mule-Aware Code119933 +Node: Techniques for XEmacs Developers121918 +Node: Regression Testing XEmacs130925 +Node: A Summary of the Various XEmacs Modules135355 +Node: Low-Level Modules136209 +Node: Basic Lisp Modules143632 +Node: Modules for Standard Editing Operations150236 +Node: Editor-Level Control Flow Modules156134 +Node: Modules for the Basic Displayable Lisp Objects159655 +Node: Modules for other Display-Related Lisp Objects162618 +Node: Modules for the Redisplay Mechanism164303 +Node: Modules for Interfacing with the File System166685 +Node: Modules for Other Aspects of the Lisp Interpreter and Object System170393 +Node: Modules for Interfacing with the Operating System178412 +Node: Modules for Interfacing with X Windows185980 +Node: Modules for Internationalization189475 +Node: Modules for Regression Testing192196 +Node: Allocation of Objects in XEmacs Lisp192926 +Node: Introduction to Allocation193453 +Node: Garbage Collection197101 +Node: GCPROing198265 +Node: Garbage Collection - Step by Step205433 +Node: Invocation205835 +Node: garbage_collect_1208817 +Node: mark_object218310 +Node: gc_sweep220133 +Node: sweep_lcrecords_1225208 +Node: compact_string_chars226214 +Node: sweep_strings228405 +Node: sweep_bit_vectors_1229381 +Node: Integers and Characters230068 +Node: Allocation from Frob Blocks230827 +Node: lrecords232438 +Node: Low-level allocation244671 +Node: Cons248785 +Node: Vector249518 +Node: Bit Vector250105 +Node: Symbol250607 +Node: Marker250970 +Node: String251534 +Node: Compiled Function255155 +Node: Dumping255333 +Node: Overview257567 +Node: Data descriptions258128 +Node: Dumping phase260140 +Node: Object inventory260550 +Node: Address allocation263475 +Node: The header264875 +Node: Data dumping265331 +Node: Pointers dumping266003 +Node: Reloading phase267404 +Node: Remaining issues269034 +Node: Events and the Event Loop270002 +Node: Introduction to Events270458 +Node: Main Loop272380 +Node: Specifics of the Event Gathering Mechanism275962 +Node: Specifics About the Emacs Event288423 +Node: The Event Stream Callback Routines288688 +Node: Other Event Loop Functions288943 +Node: Converting Events290090 +Node: Dispatching Events; The Command Builder290706 +Node: Evaluation; Stack Frames; Bindings290948 +Node: Evaluation291296 +Node: Dynamic Binding; The specbinding Stack; Unwind-Protects297815 +Node: Simple Special Forms300209 +Node: Catch and Throw300999 +Node: Symbols and Variables303584 +Node: Introduction to Symbols303854 +Node: Obarrays304899 +Node: Symbol Values308439 +Node: Buffers and Textual Representation310734 +Node: Introduction to Buffers311398 +Node: The Text in a Buffer314068 +Node: Buffer Lists321224 +Node: Markers and Extents323182 +Node: Bufbytes and Emchars325454 +Node: The Buffer Object325676 +Node: MULE Character Sets and Encodings329161 +Node: Character Sets330226 +Node: Encodings333676 +Node: Japanese EUC (Extended Unix Code)334750 +Node: JIS7335575 +Node: Internal Mule Encodings336926 +Node: Internal String Encoding338764 +Node: Internal Character Encoding340889 +Node: CCL342624 +Node: The Lisp Reader and Compiler349302 +Node: Lstreams349518 +Node: Creating an Lstream350552 +Node: Lstream Types351769 +Node: Lstream Functions352032 +Node: Lstream Methods355623 +Node: Consoles; Devices; Frames; Windows358783 +Node: Introduction to Consoles; Devices; Frames; Windows359104 +Node: Point361601 +Node: Window Hierarchy362887 +Node: The Window Object367346 +Node: The Redisplay Mechanism370790 +Node: Critical Redisplay Sections371585 +Node: Line Start Cache372547 +Node: Redisplay Piece by Piece375790 +Node: Extents377834 +Node: Introduction to Extents378374 +Node: Extent Ordering379507 +Node: Format of the Extent Info380755 +Node: Zero-Length Extents382649 +Node: Mathematics of Extent Ordering384055 +Node: Extent Fragments388820 +Node: Faces389913 +Node: Glyphs390032 +Node: Specifiers396699 +Node: Menus396831 +Node: Subprocesses399092 +Node: Interface to the X Window System401081 +Node: Lucid Widget Library401365 +Node: Generic Widget Interface402663 +Node: Scrollbars406223 +Node: Menubars406380 +Node: Checkboxes and Radio Buttons406537 +Node: Progress Bars406737 +Node: Tab Controls406911 +Node: Index407046  End Tag Table diff --git a/info/internals.info-1 b/info/internals.info-1 index 06a85c5..db7c956 100644 --- a/info/internals.info-1 +++ b/info/internals.info-1 @@ -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  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.)  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:  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.  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  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.)  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.  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.  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.  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.  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.  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.  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.  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.  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.  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_  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.  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 `' and `"lisp.h"'. It is the responsibility of the `.c' files that use it to do so. @@ -3013,8 +3016,8 @@ type named FOO:  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.  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.  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.  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.  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.  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).  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.  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.  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'.  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.  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 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.  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.  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.  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.  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.  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  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.  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').  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.  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  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.  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.  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.  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.  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,  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.  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.  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.  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.  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.)  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.  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.  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.  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  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".)  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.  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  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.  File: internals.info, Node: Compiled Function, Prev: String, Up: Allocation of Objects in XEmacs Lisp -Compiled Function -================= +11.15 Compiled Function +======================= Not yet documented.  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.  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:  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.  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.  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.  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).  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).  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.  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.  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'.  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).  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  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.  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()'.  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):  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 +====================================  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 +=======================================  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  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).  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.  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  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.  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:  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. - -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. - - -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:: - diff --git a/info/internals.info-2 b/info/internals.info-2 index 41bd915..7e4c44d 100644 --- a/info/internals.info-2 +++ b/info/internals.info-2 @@ -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.  +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. + + +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:: + + 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.  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.  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'.  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  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.)  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.).  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'.  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.  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.  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.  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.  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:  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").  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.  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  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.)  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.)  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.  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  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.  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.  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.  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  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.  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  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  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.  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  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.  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:  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:  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.  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.  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.  File: internals.info, Node: Extents, Next: Faces, Prev: The Redisplay Mechanism, Up: Top -Extents -******* +22 Extents +********** * Menu: @@ -1742,8 +1811,8 @@ Extents  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.)  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  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).  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.  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.  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.  File: internals.info, Node: Faces, Next: Glyphs, Prev: Extents, Up: Top -Faces -***** +23 Faces +******** Not yet documented.  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.  File: internals.info, Node: Specifiers, Next: Menus, Prev: Glyphs, Up: Top -Specifiers -********** +25 Specifiers +************* Not yet documented.  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.  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:  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.  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.  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  File: internals.info, Node: Scrollbars, Next: Menubars, Prev: Generic Widget Interface, Up: Lucid Widget Library -Scrollbars ----------- +28.1.2 Scrollbars +-----------------  File: internals.info, Node: Menubars, Next: Checkboxes and Radio Buttons, Prev: Scrollbars, Up: Lucid Widget Library -Menubars --------- +28.1.3 Menubars +---------------  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 +-----------------------------------  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 +--------------------  File: internals.info, Node: Tab Controls, Prev: Progress Bars, Up: Lucid Widget Library -Tab Controls ------------- +28.1.6 Tab Controls +-------------------  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 ***** +[index] * 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) diff --git a/info/lispref.info b/info/lispref.info index 774cfdb..42c4238 100644 --- a/info/lispref.info +++ b/info/lispref.info @@ -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.  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  Tag Table: (Indirect) Node: Top2366 -Node: Copying50069 -Node: Introduction69219 -Node: Caveats70801 -Node: Lisp History72477 -Node: Conventions73730 -Node: Some Terms74542 -Node: nil and t75260 -Node: Evaluation Notation76934 -Node: Printing Notation77845 -Node: Error Messages78715 -Node: Buffer Text Notation79153 -Node: Format of Descriptions80025 -Node: A Sample Function Description80876 -Node: A Sample Variable Description84859 -Node: Acknowledgements85764 -Node: Packaging87739 -Node: Package Overview89486 -Node: The User View91666 -Node: The Library Maintainer View98125 -Node: Infrastructure100037 -Node: Control Files103981 -Node: Obtaining106049 -Node: The Package Release Engineer View106563 -Node: Package Terminology107294 -Node: Building Packages110118 -Node: Makefile Targets111327 -Node: Local.rules File113188 -Node: Creating Packages120123 -Node: package-info.in120657 -Node: Makefile125512 -Node: Documenting Packages139309 -Node: Issues140602 -Node: Lisp Data Types140717 -Node: Printed Representation143266 -Node: Comments145305 -Node: Primitive Types146199 -Node: Programming Types147855 -Node: Integer Type149804 -Node: Floating Point Type150838 -Node: Character Type151454 -Node: Symbol Type159355 -Node: Sequence Type162047 -Node: Cons Cell Type163563 -Node: Dotted Pair Notation168044 -Node: Association List Type170162 -Node: Array Type171042 -Node: String Type172505 -Node: Vector Type175183 -Node: Bit Vector Type175952 -Node: Function Type176811 -Node: Macro Type177921 -Node: Primitive Function Type178615 -Node: Compiled-Function Type180138 -Node: Autoload Type180689 -Node: Char Table Type181700 -Node: Hash Table Type181871 -Node: Range Table Type183022 -Node: Weak List Type183872 -Node: Editing Types184019 -Node: Buffer Type185643 -Node: Marker Type187667 -Node: Extent Type188387 -Node: Window Type189652 -Node: Frame Type191060 -Node: Device Type191852 -Node: Console Type192675 -Node: Window Configuration Type193873 -Node: Event Type194568 -Node: Process Type194729 -Node: Stream Type195761 -Node: Keymap Type196881 -Node: Syntax Table Type197416 -Node: Display Table Type198435 -Node: Database Type198872 -Node: Charset Type199035 -Node: Coding System Type199196 -Node: ToolTalk Message Type199377 -Node: ToolTalk Pattern Type199573 -Node: Window-System Types199742 -Node: Face Type200885 -Node: Glyph Type201013 -Node: Specifier Type201166 -Node: Font Instance Type201336 -Node: Color Instance Type201523 -Node: Image Instance Type201717 -Node: Toolbar Button Type201912 -Node: Subwindow Type202102 -Node: X Resource Type202278 -Node: Type Predicates202428 -Node: Equality Predicates211554 -Node: Numbers216362 -Node: Integer Basics217814 -Node: Float Basics220160 -Node: Predicates on Numbers221899 -Node: Comparison of Numbers223529 -Node: Numeric Conversions227347 -Node: Arithmetic Operations228810 -Node: Rounding Operations234946 -Node: Bitwise Operations236056 -Node: Math Functions245099 -Node: Random Numbers247631 -Node: Strings and Characters249394 -Node: String Basics250844 -Node: Predicates for Strings253259 -Node: Creating Strings254019 -Node: Predicates for Characters259357 -Node: Character Codes260428 -Node: Text Comparison261848 -Node: String Conversion265293 -Node: Modifying Strings268960 -Node: String Properties269598 -Node: Formatting Strings270240 -Node: Character Case279855 -Node: Case Tables283406 -Node: Char Tables287373 -Node: Char Table Types288763 -Node: Working With Char Tables290345 -Node: Lists292362 -Node: Cons Cells293482 -Node: Lists as Boxes294815 -Node: List-related Predicates297454 -Node: List Elements299153 -Node: Building Lists304179 -Node: Modifying Lists310167 -Node: Setcar310976 -Node: Setcdr313404 -Node: Rearrangement315922 -Node: Sets And Lists321505 -Node: Association Lists325730 -Ref: Association Lists-Footnote-1335018 -Node: Property Lists335223 -Node: Working With Normal Plists336768 -Node: Working With Lax Plists339105 -Node: Converting Plists To/From Alists341382 -Node: Weak Lists342730 -Node: Sequences Arrays Vectors344890 -Node: Sequence Functions347523 -Node: Arrays351179 -Node: Array Functions354240 -Node: Vectors356770 -Node: Vector Functions358265 -Node: Bit Vectors360833 -Node: Bit Vector Functions361675 -Node: Symbols363971 -Node: Symbol Components365017 -Node: Definitions369197 -Node: Creating Symbols371419 -Node: Symbol Properties378450 -Node: Plists and Alists379974 -Node: Object Plists381720 -Node: Other Plists384477 -Node: Evaluation386273 -Node: Intro Eval387075 -Ref: Intro Eval-Footnote-1390425 -Node: Eval390560 -Node: Forms394976 -Node: Self-Evaluating Forms396133 -Node: Symbol Forms397643 -Node: Classifying Lists398557 -Node: Function Indirection399310 -Node: Function Forms402406 -Node: Macro Forms403400 -Node: Special Forms404997 -Node: Autoloading407303 -Node: Quoting407798 -Node: Control Structures409156 -Node: Sequencing410774 -Node: Conditionals413636 -Node: Combining Conditions417056 -Node: Iteration420323 -Node: Nonlocal Exits422099 -Node: Catch and Throw422797 -Node: Examples of Catch426633 -Node: Errors428649 -Node: Signaling Errors430135 -Node: Processing of Errors438879 -Node: Handling Errors441154 -Node: Error Symbols448390 -Node: Cleanups452343 -Node: Variables456118 -Node: Global Variables457885 -Node: Constant Variables458958 -Node: Local Variables459581 -Node: Void Variables464516 -Node: Defining Variables468029 -Node: Accessing Variables475190 -Node: Setting Variables476612 -Node: Variable Scoping481128 -Node: Scope482724 -Node: Extent484247 -Node: Impl of Scope485723 -Node: Using Scoping487683 -Node: Buffer-Local Variables489202 -Node: Intro to Buffer-Local490035 -Node: Creating Buffer-Local492575 -Node: Default Value498474 -Node: Variable Aliases501614 -Node: Functions503462 -Node: What Is a Function504553 -Node: Lambda Expressions508596 -Node: Lambda Components509503 -Node: Simple Lambda511328 -Node: Argument List512982 -Node: Function Documentation516707 -Node: Function Names518646 -Node: Defining Functions521216 -Node: Calling Functions524253 -Node: Mapping Functions528098 -Node: Anonymous Functions530795 -Node: Function Cells534037 -Node: Inline Functions538852 -Node: Related Topics540659 -Node: Macros541709 -Node: Simple Macro542990 -Node: Expansion543722 -Node: Compiling Macros546723 -Node: Defining Macros548556 -Node: Backquote549870 -Node: Problems with Macros552264 -Node: Argument Evaluation552955 -Node: Surprising Local Vars555867 -Node: Eval During Expansion557929 -Node: Repeated Expansion559619 -Node: Customization561532 -Node: Common Keywords561998 -Node: Group Definitions564839 -Node: Variable Definitions567029 -Node: Customization Types572016 -Node: Simple Types573448 -Node: Composite Types575602 -Node: Splicing into Lists580289 -Node: Type Keywords582121 -Node: Loading585639 -Node: How Programs Do Loading587311 -Node: Autoload596434 -Node: Repeated Loading602501 -Node: Named Features604611 -Node: Unloading611038 -Node: Hooks for Loading613191 -Node: Byte Compilation613908 -Node: Speed of Byte-Code615972 -Node: Compilation Functions617176 -Node: Compilation Options623946 -Node: Docs and Compilation633876 -Node: Dynamic Loading636541 -Node: Eval During Compile638917 -Node: Compiled-Function Objects640179 -Node: Disassembly644977 -Node: Different Behavior652255 -Node: Debugging653597 -Node: Debugger655006 -Node: Error Debugging656148 -Node: Infinite Loops658898 -Node: Function Debugging660139 -Node: Explicit Debug662936 -Node: Using Debugger663704 -Node: Debugger Commands665563 -Node: Invoking the Debugger669877 -Node: Internals of Debugger673789 -Node: Syntax Errors678673 -Node: Excess Open679918 -Node: Excess Close681790 -Node: Compilation Errors683208 -Node: Edebug684493 -Node: Using Edebug686598 -Node: Instrumenting689292 -Node: Edebug Execution Modes692778 -Node: Jumping695885 -Node: Edebug Misc698226 -Node: Breakpoints699612 -Node: Global Break Condition702415 -Node: Embedded Breakpoints703367 -Node: Trapping Errors704319 -Node: Edebug Views706392 -Node: Edebug Eval708355 -Node: Eval List709529 -Node: Reading in Edebug712911 -Node: Printing in Edebug713707 -Node: Tracing715419 -Node: Coverage Testing717304 -Node: The Outside Context719342 -Node: Checking Whether to Stop720288 -Node: Edebug Display Update720932 -Node: Edebug Recursive Edit722952 -Node: Instrumenting Macro Calls724604 -Node: Specification List727082 -Node: Backtracking736492 -Node: Debugging Backquote738427 -Node: Specification Examples742130 -Node: Edebug Options744194 -Node: Read and Print749530 -Node: Streams Intro750504 -Node: Input Streams752519 -Node: Input Functions757417 -Node: Output Streams759474 -Node: Output Functions763522 -Node: Output Variables767819 -Node: Minibuffers772620 -Node: Intro to Minibuffers773769 -Node: Text from Minibuffer775954 -Node: Object from Minibuffer781045 -Node: Minibuffer History785135 -Node: Completion788111 -Node: Basic Completion790083 -Node: Minibuffer Completion794963 -Node: Completion Commands798537 -Node: High-Level Completion803191 -Node: Reading File Names807937 -Node: Programmed Completion811626 -Node: Yes-or-No Queries814005 -Node: Multiple Queries819739 -Node: Reading a Password823803 -Node: Minibuffer Misc825143 -Node: Command Loop830020 -Node: Command Overview831361 -Node: Defining Commands834635 -Node: Using Interactive835380 -Node: Interactive Codes840150 -Node: Interactive Examples845939 -Node: Interactive Call847250 -Node: Command Loop Info852661 -Node: Events857637 -Node: Event Types859095 -Node: Event Contents861015 -Node: Event Predicates865489 -Node: Accessing Mouse Event Positions866804 -Node: Frame-Level Event Position Info867500 -Node: Window-Level Event Position Info868537 -Node: Event Text Position Info870298 -Node: Event Glyph Position Info872787 -Node: Event Toolbar Position Info874107 -Node: Other Event Position Info874778 -Node: Accessing Other Event Info875187 -Node: Working With Events876804 -Node: Converting Events882802 -Node: Reading Input886198 -Node: Key Sequence Input887197 -Node: Reading One Event889829 -Node: Dispatching an Event892650 -Node: Quoted Character Input893101 -Node: Peeking and Discarding894447 -Node: Waiting898349 -Node: Quitting900660 -Node: Prefix Command Arguments905065 -Node: Recursive Editing910149 -Node: Disabling Commands914940 -Node: Command History917005 -Node: Keyboard Macros918739 -Node: Keymaps920953 -Node: Keymap Terminology922527 -Node: Format of Keymaps925453 -Node: Creating Keymaps925861 -Node: Inheritance and Keymaps927938 -Node: Key Sequences930307 -Node: Prefix Keys935100 -Node: Active Keymaps938682 -Node: Key Lookup948050 -Node: Functions for Key Lookup953210 -Node: Changing Key Bindings958908 -Node: Key Binding Commands966067 -Node: Scanning Keymaps968129 -Node: Other Keymap Functions976695 -Node: Menus977317 -Node: Menu Format977909 -Node: Menubar Format986552 -Node: Menubar987174 -Node: Modifying Menus990287 -Node: Menu Filters995628 -Node: Pop-Up Menus997521 -Node: Menu Accelerators999849 -Node: Creating Menu Accelerators1000602 -Node: Keyboard Menu Traversal1001959 -Node: Menu Accelerator Functions1002684 -Node: Buffers Menu1005779 -Node: Dialog Boxes1007070 -Node: Dialog Box Format1007237 -Node: Dialog Box Functions1008659 -Node: Toolbar1009056 -Node: Toolbar Intro1009491 -Node: Creating Toolbar1011889 -Node: Toolbar Descriptor Format1012806 -Node: Specifying the Toolbar1017300 -Node: Other Toolbar Variables1020904 -Node: Gutter1025329 -Node: Gutter Intro1025915 -Node: Creating Gutter1027915 -Node: Gutter Descriptor Format1030802 -Node: Specifying a Gutter1035256 -Node: Other Gutter Variables1038788 -Node: Common Gutter Widgets1043172 -Node: Buffer Tabs1044161 -Node: Progress Bars1044299 -Node: Scrollbars1044441 -Node: Drag and Drop1044573 -Node: Supported Protocols1045646 -Node: OffiX DND1046146 -Node: CDE dt1047150 -Node: MSWindows OLE1047738 -Node: Loose ends1047906 -Node: Drop Interface1048295 -Node: Drag Interface1049315 -Node: Modes1049486 -Node: Major Modes1050434 -Node: Major Mode Conventions1053346 -Node: Example Major Modes1059298 -Node: Auto Major Mode1067329 -Node: Mode Help1074776 -Node: Derived Modes1075874 -Node: Minor Modes1078062 -Node: Minor Mode Conventions1079361 -Node: Keymaps and Minor Modes1082221 -Node: Modeline Format1083053 -Node: Modeline Data1084818 -Node: Modeline Variables1089968 -Node: %-Constructs1094681 -Node: Hooks1097665 -Node: Documentation1104422 -Node: Documentation Basics1105842 -Node: Accessing Documentation1108890 -Node: Keys in Documentation1115171 -Node: Describing Characters1118651 -Node: Help Functions1120997 -Node: Obsoleteness1127444 -Node: Files1130433 -Node: Visiting Files1132355 -Node: Visiting Functions1133857 -Node: Subroutines of Visiting1139013 -Node: Saving Buffers1141083 -Node: Reading from Files1147173 -Node: Writing to Files1149331 -Node: File Locks1152045 -Node: Information about Files1155109 -Node: Testing Accessibility1155867 -Node: Kinds of Files1159604 -Node: Truenames1161282 -Node: File Attributes1162281 -Node: Changing File Attributes1167417 -Node: File Names1172836 -Node: File Name Components1174405 -Node: Directory Names1176847 -Node: Relative File Names1180074 -Node: File Name Expansion1181040 -Node: Unique File Names1184791 -Node: File Name Completion1186403 -Node: User Name Completion1189668 -Node: Contents of Directories1191072 -Node: Create/Delete Dirs1194382 -Node: Magic File Names1195485 -Node: Partial Files1201130 -Node: Intro to Partial Files1201358 -Node: Creating a Partial File1202595 -Node: Detached Partial Files1203531 -Node: Format Conversion1204650 -Node: Files and MS-DOS1210145 -Node: Backups and Auto-Saving1212206 -Node: Backup Files1212878 -Node: Making Backups1214272 -Node: Rename or Copy1217021 -Node: Numbered Backups1219511 -Node: Backup Names1221743 -Node: Auto-Saving1225032 -Node: Reverting1233191 -Node: Buffers1236524 -Node: Buffer Basics1237937 -Node: Current Buffer1239983 -Node: Buffer Names1244684 -Node: Buffer File Name1247888 -Node: Buffer Modification1252004 -Node: Modification Time1254244 -Node: Read Only Buffers1257616 -Node: The Buffer List1260852 -Node: Creating Buffers1265666 -Node: Killing Buffers1267809 -Node: Indirect Buffers1271638 -Node: Windows1274209 -Node: Basic Windows1275684 -Node: Splitting Windows1278779 -Node: Deleting Windows1284102 -Node: Selecting Windows1288017 -Node: Cyclic Window Ordering1292237 -Node: Buffers and Windows1297389 -Node: Displaying Buffers1299164 -Node: Choosing Window1304500 -Node: Window Point1312415 -Node: Window Start1314482 -Node: Vertical Scrolling1319278 -Node: Horizontal Scrolling1325473 -Node: Size of Window1328999 -Node: Position of Window1333714 -Node: Resizing Windows1335964 -Node: Window Configurations1341399 -Node: Frames1344885 -Node: Creating Frames1347223 -Node: Frame Properties1348560 -Node: Property Access1349373 -Node: Initial Properties1350277 -Node: X Frame Properties1352760 -Node: Size and Position1357391 -Node: Frame Name1359386 -Node: Frame Titles1360297 -Node: Deleting Frames1362118 -Node: Finding All Frames1363089 -Node: Frames and Windows1366317 -Node: Minibuffers and Frames1369096 -Node: Input Focus1370011 -Node: Visibility of Frames1373113 -Node: Raising and Lowering1375100 -Node: Frame Configurations1377473 -Node: Frame Hooks1378527 -Node: Consoles and Devices1380329 -Node: Basic Console Functions1383069 -Node: Basic Device Functions1383492 -Node: Console Types and Device Classes1384338 -Node: Connecting to a Console or Device1386602 -Node: The Selected Console and Device1388786 -Node: Console and Device I/O1389812 -Node: Positions1390576 -Node: Point1391543 -Node: Motion1394630 -Node: Character Motion1395394 -Node: Word Motion1397629 -Node: Buffer End Motion1399016 -Node: Text Lines1400550 -Node: Screen Lines1405447 -Node: List Motion1409507 -Node: Skipping Characters1412987 -Node: Excursions1415203 -Node: Narrowing1418240 -Node: Markers1423568 -Node: Overview of Markers1424471 -Node: Predicates on Markers1429160 -Node: Creating Markers1430403 -Node: Information from Markers1434600 -Node: Changing Markers1435695 -Node: The Mark1437220 -Node: The Region1445721 -Node: Text1451433 -Node: Near Point1454129 -Node: Buffer Contents1458313 -Node: Comparing Text1459716 -Node: Insertion1461121 -Node: Commands for Insertion1465028 -Node: Deletion1467919 -Node: User-Level Deletion1471566 -Node: The Kill Ring1475723 -Node: Kill Ring Concepts1477894 -Node: Kill Functions1478945 -Node: Yank Commands1480865 -Node: Low-Level Kill Ring1482733 -Node: Internals of Kill Ring1485816 -Node: Undo1488593 -Node: Maintaining Undo1492927 -Node: Filling1495542 -Node: Margins1501533 -Node: Auto Filling1505556 -Node: Sorting1506734 -Node: Columns1516045 -Node: Indentation1519123 -Node: Primitive Indent1519899 -Node: Mode-Specific Indent1521221 -Node: Region Indent1523750 -Node: Relative Indent1526694 -Node: Indent Tabs1529073 -Node: Motion by Indent1530391 -Node: Case Changes1531167 -Node: Text Properties1534517 -Node: Examining Properties1536327 -Node: Changing Properties1538207 -Node: Property Search1541795 -Node: Special Properties1546511 -Node: Saving Properties1546789 -Node: Substitution1549928 -Node: Registers1553195 -Node: Transposition1555774 -Node: Change Hooks1556665 -Node: Transformations1558702 -Node: Searching and Matching1563802 -Node: String Search1564930 -Node: Regular Expressions1569908 -Node: Syntax of Regexps1571272 -Node: Regexp Example1585872 -Node: Regexp Search1588039 -Node: POSIX Regexps1594373 -Node: Search and Replace1596447 -Node: Match Data1599812 -Node: Simple Match Data1600939 -Node: Replacing Match1605201 -Node: Entire Match Data1607879 -Node: Saving Match Data1610114 -Node: Searching and Case1611499 -Node: Standard Regexps1613530 -Node: Syntax Tables1615725 -Node: Syntax Basics1616836 -Node: Syntax Descriptors1619812 -Node: Syntax Class Table1621659 -Node: Syntax Flags1627838 -Node: Syntax Table Functions1632234 -Node: Motion and Syntax1636529 -Node: Parsing Expressions1637978 -Node: Standard Syntax Tables1644073 -Node: Syntax Table Internals1644914 -Node: Abbrevs1645937 -Node: Abbrev Mode1647738 -Node: Abbrev Tables1648455 -Node: Defining Abbrevs1649991 -Node: Abbrev Files1651909 -Node: Abbrev Expansion1653689 -Node: Standard Abbrev Tables1658317 -Node: Extents1659473 -Node: Intro to Extents1660712 -Node: Creating and Modifying Extents1664701 -Node: Extent Endpoints1666282 -Node: Finding Extents1669542 -Node: Mapping Over Extents1673661 -Node: Extent Properties1679781 -Node: Detached Extents1690001 -Node: Extent Parents1691857 -Node: Duplicable Extents1693548 -Node: Extents and Events1696766 -Node: Atomic Extents1698724 -Node: Specifiers1699168 -Node: Introduction to Specifiers1701297 -Node: Simple Specifier Usage1705478 -Node: Specifiers In-Depth1711896 -Node: Specifier Instancing1718530 -Node: Specifier Types1721789 -Node: Adding Specifications1726860 -Node: Retrieving Specifications1738350 -Node: Specifier Tag Functions1742095 -Node: Specifier Instancing Functions1745326 -Node: Specifier Examples1750181 -Node: Creating Specifiers1757885 -Node: Specifier Validation Functions1762228 -Node: Other Specification Functions1764614 -Node: Faces and Window-System Objects1768496 -Node: Faces1768820 -Node: Merging Faces1770434 -Node: Basic Face Functions1772392 -Node: Face Properties1774537 -Node: Face Convenience Functions1784807 -Node: Other Face Display Functions1788027 -Node: Fonts1788839 -Node: Font Specifiers1789537 -Node: Font Instances1790722 -Node: Font Instance Names1791689 -Node: Font Instance Size1792530 -Node: Font Instance Characteristics1793816 -Node: Font Convenience Functions1794994 -Node: Colors1796284 -Node: Color Specifiers1796724 -Node: Color Instances1799084 -Node: Color Instance Properties1799825 -Node: Color Convenience Functions1800451 -Node: Glyphs1801504 -Node: Glyph Functions1803163 -Node: Creating Glyphs1803570 -Node: Glyph Properties1816210 -Node: Glyph Convenience Functions1825374 -Node: Glyph Dimensions1829318 -Node: Images1830398 -Node: Image Specifiers1830847 -Node: Image Instantiator Conversion1846336 -Node: Image Instances1847701 -Node: Image Instance Types1848449 -Node: Image Instance Functions1851211 -Node: Glyph Types1858268 -Node: Mouse Pointer1860037 -Node: Redisplay Glyphs1863037 -Node: Subwindows1864070 -Node: Glyph Examples1864333 -Node: Annotations1872589 -Node: Annotation Basics1873602 -Node: Annotation Primitives1877537 -Node: Annotation Properties1878876 -Node: Locating Annotations1881916 -Node: Margin Primitives1882753 -Node: Annotation Hooks1884644 -Node: Display1885301 -Node: Refresh Screen1886276 -Node: Truncation1888467 -Node: The Echo Area1890989 -Node: Warnings1897429 -Node: Invisible Text1901862 -Node: Selective Display1904573 -Node: Overlay Arrow1908696 -Node: Temporary Displays1910046 -Node: Blinking1914165 -Node: Usual Display1916346 -Node: Display Tables1918892 -Node: Display Table Format1919693 -Node: Active Display Table1921132 -Node: Character Descriptors1925124 -Node: Beeping1925878 -Node: Hash Tables1930643 -Node: Introduction to Hash Tables1931251 -Node: Working With Hash Tables1937807 -Node: Weak Hash Tables1938924 -Node: Range Tables1940938 -Node: Introduction to Range Tables1941624 -Node: Working With Range Tables1942070 -Node: Databases1943029 -Node: Connecting to a Database1943328 -Node: Working With a Database1944435 -Node: Other Database Functions1945309 -Node: Processes1945878 -Node: Subprocess Creation1948099 -Node: Synchronous Processes1951547 -Node: MS-DOS Subprocesses1958266 -Node: Asynchronous Processes1959337 -Node: Deleting Processes1963691 -Node: Process Information1965559 -Node: Input to Processes1969649 -Node: Signals to Processes1972341 -Node: Output from Processes1977153 -Node: Process Buffers1977962 -Node: Filter Functions1980838 -Node: Accepting Output1986426 -Node: Sentinels1987950 -Node: Process Window Size1991437 -Node: Transaction Queues1991786 -Node: Network1993481 -Node: System Interface1996112 -Node: Starting Up1997379 -Node: Start-up Summary1997970 -Node: Init File2001521 -Node: Terminal-Specific2003899 -Node: Command Line Arguments2007055 -Node: Getting Out2010541 -Node: Killing XEmacs2011107 -Node: Suspending XEmacs2012772 -Node: System Environment2016148 -Node: User Identification2022326 -Node: Time of Day2025855 -Node: Time Conversion2028639 -Node: Timers2033878 -Node: Terminal Input2036048 -Node: Input Modes2036548 -Node: Translating Input2039007 -Node: Recording Input2043169 -Node: Terminal Output2045269 -Node: Flow Control2048887 -Node: Batch Mode2052846 -Node: X-Windows2054224 -Node: X Selections2055093 -Node: X Server2057841 -Node: Resources2058289 -Node: Server Data2063598 -Node: Grabs2064802 -Node: X Miscellaneous2066382 -Node: ToolTalk Support2068767 -Node: XEmacs ToolTalk API Summary2068984 -Node: Sending Messages2070281 -Node: Example of Sending Messages2070532 -Node: Elisp Interface for Sending Messages2071591 -Node: Receiving Messages2078187 -Node: Example of Receiving Messages2078410 -Node: Elisp Interface for Receiving Messages2079243 -Node: LDAP Support2083100 -Node: Building XEmacs with LDAP support2083591 -Node: XEmacs LDAP API2084565 -Node: LDAP Variables2085614 -Node: The High-Level LDAP API2088214 -Node: The Low-Level LDAP API2091684 -Node: The LDAP Lisp Object2092512 -Node: Opening and Closing a LDAP Connection2093064 -Node: Low-level Operations on a LDAP Server2094879 -Node: LDAP Internationalization2097600 -Node: LDAP Internationalization Variables2098502 -Node: Encoder/Decoder Functions2100233 -Node: Syntax of Search Filters2101278 -Node: PostgreSQL Support2102572 -Node: Building XEmacs with PostgreSQL support2102964 -Node: XEmacs PostgreSQL libpq API2104308 -Node: libpq Lisp Variables2106184 -Node: libpq Lisp Symbols and DataTypes2109178 -Node: Synchronous Interface Functions2122435 -Node: Asynchronous Interface Functions2126939 -Node: Large Object Support2130441 -Node: Other libpq Functions2131068 -Node: Unimplemented libpq Functions2134105 -Node: XEmacs PostgreSQL libpq Examples2139424 -Node: Internationalization2145512 -Node: I18N Levels 1 and 22145855 -Node: I18N Level 32146558 -Node: Level 3 Basics2146839 -Node: Level 3 Primitives2147670 -Node: Dynamic Messaging2149276 -Node: Domain Specification2149736 -Node: Documentation String Extraction2151403 -Node: I18N Level 42152318 -Node: MULE2152507 -Node: Internationalization Terminology2153553 -Node: Charsets2165749 -Node: Charset Properties2166442 -Node: Basic Charset Functions2171154 -Node: Charset Property Functions2173335 -Node: Predefined Charsets2175550 -Node: MULE Characters2178467 -Node: Composite Characters2179342 -Node: Coding Systems2180606 -Node: Coding System Types2182743 -Node: ISO 20222186724 -Node: EOL Conversion2198995 -Node: Coding System Properties2200167 -Node: Basic Coding System Functions2204490 -Node: Coding System Property Functions2206524 -Node: Encoding and Decoding Text2207082 -Node: Detection of Textual Encoding2208218 -Node: Big5 and Shift-JIS Functions2209754 -Node: Predefined Coding Systems2210903 -Node: CCL2222995 -Node: CCL Syntax2226096 -Node: CCL Statements2227669 -Node: CCL Expressions2232299 -Node: Calling CCL2234835 -Node: CCL Examples2237837 -Node: Category Tables2237971 -Node: Tips2240327 -Node: Style Tips2240966 -Node: Compilation Tips2250841 -Node: Documentation Tips2252752 -Node: Comment Tips2258258 -Node: Library Headers2261259 -Node: Building XEmacs and Object Allocation2265227 -Node: Building XEmacs2266107 -Node: Pure Storage2272682 -Node: Garbage Collection2275322 -Node: Standard Errors2286163 -Node: Standard Buffer-Local Variables2290369 -Node: Standard Keymaps2293001 -Node: Standard Hooks2296733 -Node: Index2304231 +Node: Copying50785 +Node: Introduction69909 +Node: Caveats71495 +Node: Lisp History73179 +Node: Conventions74440 +Node: Some Terms75260 +Node: nil and t75990 +Node: Evaluation Notation77676 +Node: Printing Notation78599 +Node: Error Messages79481 +Node: Buffer Text Notation79931 +Node: Format of Descriptions80810 +Node: A Sample Function Description81673 +Node: A Sample Variable Description85674 +Node: Acknowledgements86596 +Node: Packaging88579 +Node: Package Overview90330 +Node: The User View92514 +Node: The Library Maintainer View98981 +Node: Infrastructure100901 +Node: Control Files104857 +Node: Obtaining106937 +Node: The Package Release Engineer View107463 +Node: Package Terminology108206 +Node: Building Packages111066 +Node: Makefile Targets112295 +Node: Local.rules File114172 +Node: Creating Packages121107 +Node: package-info.in121645 +Node: Makefile126504 +Node: Documenting Packages140268 +Node: Issues141561 +Node: Lisp Data Types141684 +Node: Printed Representation144237 +Node: Comments146286 +Node: Primitive Types147188 +Node: Programming Types148852 +Node: Integer Type150809 +Node: Floating Point Type151855 +Node: Character Type152483 +Node: Symbol Type160396 +Node: Sequence Type163100 +Node: Cons Cell Type164628 +Node: Dotted Pair Notation169121 +Node: Association List Type171255 +Node: Array Type172151 +Node: String Type173626 +Node: Vector Type176318 +Node: Bit Vector Type177099 +Node: Function Type177972 +Node: Macro Type179096 +Node: Primitive Function Type179804 +Node: Compiled-Function Type181341 +Node: Autoload Type181906 +Node: Char Table Type182931 +Node: Hash Table Type183116 +Node: Range Table Type184281 +Node: Weak List Type185145 +Node: Editing Types185306 +Node: Buffer Type186938 +Node: Marker Type188974 +Node: Extent Type189706 +Node: Window Type190983 +Node: Frame Type192403 +Node: Device Type193207 +Node: Console Type194042 +Node: Window Configuration Type195252 +Node: Event Type195959 +Node: Process Type196132 +Node: Stream Type197178 +Node: Keymap Type198312 +Node: Syntax Table Type198861 +Node: Display Table Type199894 +Node: Database Type200345 +Node: Charset Type200522 +Node: Coding System Type200697 +Node: ToolTalk Message Type200892 +Node: ToolTalk Pattern Type201102 +Node: Window-System Types201285 +Node: Face Type202436 +Node: Glyph Type202576 +Node: Specifier Type202741 +Node: Font Instance Type202923 +Node: Color Instance Type203122 +Node: Image Instance Type203328 +Node: Toolbar Button Type203535 +Node: Subwindow Type203737 +Node: X Resource Type203925 +Node: Type Predicates204087 +Node: Equality Predicates213222 +Node: Numbers217921 +Node: Integer Basics219377 +Node: Float Basics221733 +Node: Predicates on Numbers223481 +Node: Comparison of Numbers225124 +Node: Numeric Conversions228958 +Node: Arithmetic Operations230434 +Node: Rounding Operations236587 +Node: Bitwise Operations237709 +Node: Math Functions246666 +Node: Random Numbers249224 +Node: Strings and Characters250998 +Node: String Basics252454 +Node: Predicates for Strings254879 +Node: Creating Strings255651 +Node: Predicates for Characters261003 +Node: Character Codes262086 +Node: Text Comparison263520 +Node: String Conversion266981 +Node: Modifying Strings270662 +Node: String Properties271311 +Node: Formatting Strings271963 +Node: Character Case281556 +Node: Case Tables285082 +Node: Char Tables289070 +Node: Char Table Types290473 +Node: Working With Char Tables292074 +Node: Lists294115 +Node: Cons Cells295241 +Node: Lists as Boxes296584 +Node: List-related Predicates299233 +Node: List Elements300947 +Node: Building Lists306017 +Node: Modifying Lists312010 +Node: Setcar312829 +Node: Setcdr315262 +Node: Rearrangement317795 +Node: Sets And Lists323365 +Node: Association Lists327604 +Ref: Association Lists-Footnote-1336851 +Node: Property Lists337056 +Node: Working With Normal Plists338613 +Node: Working With Lax Plists340971 +Node: Converting Plists To/From Alists343269 +Node: Weak Lists344635 +Node: Sequences Arrays Vectors346812 +Node: Sequence Functions349451 +Node: Arrays353081 +Node: Array Functions356152 +Node: Vectors358636 +Node: Vector Functions360141 +Node: Bit Vectors362723 +Node: Bit Vector Functions363575 +Node: Symbols365886 +Node: Symbol Components366952 +Node: Definitions371142 +Node: Creating Symbols373387 +Node: Symbol Properties380425 +Node: Plists and Alists381959 +Node: Object Plists383719 +Node: Other Plists386496 +Node: Evaluation388310 +Node: Intro Eval389118 +Ref: Intro Eval-Footnote-1392491 +Node: Eval392626 +Node: Forms397059 +Node: Self-Evaluating Forms398226 +Node: Symbol Forms399750 +Node: Classifying Lists400678 +Node: Function Indirection401445 +Node: Function Forms404556 +Node: Macro Forms405564 +Node: Special Forms407175 +Node: Autoloading409495 +Node: Quoting410004 +Node: Control Structures411373 +Node: Sequencing412997 +Node: Conditionals415872 +Node: Combining Conditions419304 +Node: Iteration422584 +Node: Nonlocal Exits424371 +Node: Catch and Throw425079 +Node: Examples of Catch428931 +Node: Errors430951 +Node: Signaling Errors432451 +Node: Processing of Errors441173 +Node: Handling Errors443468 +Node: Error Symbols450693 +Node: Cleanups454665 +Node: Variables458455 +Node: Global Variables460241 +Node: Constant Variables461324 +Node: Local Variables461957 +Node: Void Variables466918 +Node: Defining Variables470423 +Node: Accessing Variables477597 +Node: Setting Variables479000 +Node: Variable Scoping483499 +Node: Scope485105 +Node: Extent486637 +Node: Impl of Scope488127 +Node: Using Scoping490101 +Node: Buffer-Local Variables491634 +Node: Intro to Buffer-Local492477 +Node: Creating Buffer-Local495031 +Node: Default Value500940 +Node: Variable Aliases504078 +Node: Functions and Commands505941 +Node: What Is a Function507077 +Node: Lambda Expressions511649 +Node: Lambda Components512579 +Node: Simple Lambda514418 +Node: Argument List516086 +Node: Function Documentation519825 +Node: Function Names521778 +Node: Defining Functions524371 +Node: Calling Functions527414 +Node: Mapping Functions531276 +Node: Anonymous Functions533948 +Node: Function Cells537214 +Node: Inline Functions542036 +Node: Related Topics543866 +Node: Macros544941 +Node: Simple Macro546241 +Node: Expansion546983 +Node: Compiling Macros549965 +Node: Defining Macros551808 +Node: Backquote553133 +Node: Problems with Macros555532 +Node: Argument Evaluation556233 +Node: Surprising Local Vars559149 +Node: Eval During Expansion561225 +Node: Repeated Expansion562929 +Node: Customization564851 +Node: Common Keywords565323 +Node: Group Definitions568174 +Node: Variable Definitions570375 +Node: Customization Types575373 +Node: Simple Types576815 +Node: Composite Types578983 +Node: Splicing into Lists583684 +Node: Type Keywords585530 +Node: Loading589062 +Node: How Programs Do Loading590740 +Node: Autoload599882 +Node: Repeated Loading605960 +Node: Named Features608070 +Node: Unloading614473 +Node: Hooks for Loading616638 +Node: Byte Compilation617366 +Node: Speed of Byte-Code619436 +Node: Compilation Functions620635 +Node: Compilation Options627394 +Node: Docs and Compilation637342 +Node: Dynamic Loading640018 +Node: Eval During Compile642406 +Node: Compiled-Function Objects643680 +Node: Disassembly648496 +Node: Different Behavior655605 +Node: Debugging656957 +Node: Debugger658372 +Node: Error Debugging659524 +Node: Infinite Loops662291 +Node: Function Debugging663547 +Node: Explicit Debug666340 +Node: Using Debugger667122 +Node: Debugger Commands668995 +Node: Invoking the Debugger673323 +Node: Internals of Debugger677235 +Node: Syntax Errors682119 +Node: Excess Open683374 +Node: Excess Close685260 +Node: Compilation Errors686692 +Node: Edebug687987 +Node: Using Edebug690102 +Node: Instrumenting692810 +Node: Edebug Execution Modes696310 +Node: Jumping699431 +Node: Edebug Misc701786 +Node: Breakpoints703186 +Node: Global Break Condition706003 +Node: Embedded Breakpoints706973 +Node: Trapping Errors707943 +Node: Edebug Views710030 +Node: Edebug Eval712007 +Node: Eval List713195 +Node: Reading in Edebug716593 +Node: Printing in Edebug717405 +Node: Tracing719133 +Node: Coverage Testing721034 +Node: The Outside Context723089 +Node: Checking Whether to Stop724051 +Node: Edebug Display Update724715 +Node: Edebug Recursive Edit726755 +Node: Instrumenting Macro Calls728427 +Node: Specification List730917 +Node: Backtracking740347 +Node: Debugging Backquote742302 +Node: Specification Examples746015 +Node: Edebug Options748084 +Node: Read and Print753452 +Node: Streams Intro754432 +Node: Input Streams756457 +Node: Input Functions761340 +Node: Output Streams763400 +Node: Output Functions767413 +Node: Output Variables771726 +Node: Minibuffers776535 +Node: Intro to Minibuffers777690 +Node: Text from Minibuffer779885 +Node: Object from Minibuffer784989 +Node: Minibuffer History789053 +Node: Completion792048 +Node: Basic Completion794030 +Node: Minibuffer Completion798907 +Node: Completion Commands802476 +Node: High-Level Completion807155 +Node: Reading File Names811858 +Node: Programmed Completion815513 +Node: Yes-or-No Queries817906 +Node: Multiple Queries823575 +Node: Reading a Password827650 +Node: Minibuffer Misc829003 +Node: Command Loop833908 +Node: Command Overview835255 +Node: Defining Commands838541 +Node: Using Interactive839296 +Node: Interactive Codes844084 +Node: Interactive Examples849887 +Node: Interactive Call851197 +Node: Command Loop Info856583 +Node: Events861576 +Node: Event Types863045 +Node: Event Contents864979 +Node: Event Predicates869468 +Node: Accessing Mouse Event Positions870808 +Node: Frame-Level Event Position Info871518 +Node: Window-Level Event Position Info872576 +Node: Event Text Position Info874359 +Node: Event Glyph Position Info876872 +Node: Event Toolbar Position Info878214 +Node: Other Event Position Info878905 +Node: Accessing Other Event Info879333 +Node: Working With Events880973 +Node: Converting Events886918 +Node: Reading Input890331 +Node: Key Sequence Input891340 +Node: Reading One Event893967 +Node: Dispatching an Event896806 +Node: Quoted Character Input897272 +Node: Peeking and Discarding898613 +Node: Waiting902535 +Node: Quitting904858 +Node: Prefix Command Arguments909276 +Node: Recursive Editing914321 +Node: Disabling Commands919129 +Node: Command History921209 +Node: Keyboard Macros922956 +Node: Keymaps925186 +Node: Keymap Terminology926766 +Node: Format of Keymaps929702 +Node: Creating Keymaps930121 +Node: Inheritance and Keymaps932203 +Node: Key Sequences934586 +Node: Prefix Keys939390 +Node: Active Keymaps942978 +Node: Key Lookup952359 +Node: Functions for Key Lookup957529 +Node: Changing Key Bindings963234 +Node: Key Binding Commands970358 +Node: Scanning Keymaps972436 +Node: Other Keymap Functions981020 +Node: Menus981656 +Node: Menu Format982254 +Node: Menubar Format990908 +Node: Menubar991540 +Node: Modifying Menus994671 +Node: Menu Filters1000031 +Node: Pop-Up Menus1001937 +Node: Menu Accelerators1004285 +Node: Creating Menu Accelerators1005048 +Node: Keyboard Menu Traversal1006419 +Node: Menu Accelerator Functions1007158 +Node: Buffers Menu1010272 +Node: Dialog Boxes1011577 +Node: Dialog Box Format1011750 +Node: Dialog Box Functions1013182 +Node: Toolbar1013590 +Node: Toolbar Intro1014031 +Node: Creating Toolbar1016439 +Node: Toolbar Descriptor Format1017367 +Node: Specifying the Toolbar1021873 +Node: Other Toolbar Variables1025495 +Node: Gutter1029943 +Node: Gutter Intro1030535 +Node: Creating Gutter1032545 +Node: Gutter Descriptor Format1035445 +Node: Specifying a Gutter1039911 +Node: Other Gutter Variables1043461 +Node: Common Gutter Widgets1047868 +Node: Buffer Tabs1048867 +Node: Progress Bars1049019 +Node: Scrollbars1049175 +Node: Drag and Drop1049313 +Node: Supported Protocols1050392 +Node: OffiX DND1050902 +Node: CDE dt1051920 +Node: MSWindows OLE1052522 +Node: Loose ends1052704 +Node: Drop Interface1053107 +Node: Drag Interface1054137 +Node: Modes1054318 +Node: Major Modes1055272 +Node: Major Mode Conventions1058749 +Node: Example Major Modes1065249 +Node: Auto Major Mode1073264 +Node: Mode Help1080737 +Node: Derived Modes1081851 +Node: Minor Modes1084156 +Node: Minor Mode Conventions1085465 +Node: Keymaps and Minor Modes1088339 +Node: Modeline Format1089185 +Node: Modeline Data1090961 +Node: Modeline Variables1096126 +Node: %-Constructs1100861 +Node: Hooks1103859 +Node: Documentation1112117 +Node: Documentation Basics1113543 +Node: Accessing Documentation1116601 +Node: Keys in Documentation1122868 +Node: Describing Characters1126339 +Node: Help Functions1128698 +Node: Obsoleteness1135155 +Node: Files1138317 +Node: Visiting Files1140245 +Node: Visiting Functions1141757 +Node: Subroutines of Visiting1146934 +Node: Saving Buffers1149020 +Node: Reading from Files1155130 +Node: Writing to Files1157299 +Node: File Locks1160025 +Node: Information about Files1163103 +Node: Testing Accessibility1163871 +Node: Kinds of Files1167629 +Node: Truenames1169324 +Node: File Attributes1170338 +Node: Changing File Attributes1175451 +Node: File Names1180868 +Node: File Name Components1182447 +Node: Directory Names1184907 +Node: Relative File Names1188152 +Node: File Name Expansion1189133 +Node: Unique File Names1192902 +Node: File Name Completion1194530 +Node: User Name Completion1197772 +Node: Contents of Directories1199193 +Node: Create/Delete Dirs1202516 +Node: Magic File Names1203633 +Node: Partial Files1209295 +Node: Intro to Partial Files1209535 +Node: Creating a Partial File1210788 +Node: Detached Partial Files1211741 +Node: Format Conversion1212876 +Node: Files and MS-DOS1218389 +Node: Backups and Auto-Saving1220468 +Node: Backup Files1221146 +Node: Making Backups1222550 +Node: Rename or Copy1225318 +Node: Numbered Backups1227825 +Node: Backup Names1230076 +Node: Auto-Saving1233373 +Node: Reverting1241559 +Node: Buffers1244907 +Node: Buffer Basics1246326 +Node: Current Buffer1248383 +Node: Buffer Names1253096 +Node: Buffer File Name1256304 +Node: Buffer Modification1260437 +Node: Modification Time1262691 +Node: Read Only Buffers1266078 +Node: The Buffer List1269328 +Node: Creating Buffers1274146 +Node: Killing Buffers1276301 +Node: Indirect Buffers1280127 +Node: Windows1282713 +Node: Basic Windows1284194 +Node: Splitting Windows1287300 +Node: Deleting Windows1292627 +Node: Selecting Windows1296556 +Node: Cyclic Window Ordering1300791 +Node: Buffers and Windows1305957 +Node: Displaying Buffers1307745 +Node: Choosing Window1313095 +Node: Window Point1321038 +Node: Window Start1323117 +Node: Vertical Scrolling1327899 +Node: Horizontal Scrolling1334104 +Node: Size of Window1337646 +Node: Position of Window1342380 +Node: Resizing Windows1344646 +Node: Window Configurations1350102 +Node: Frames1353604 +Node: Creating Frames1355949 +Node: Frame Properties1357297 +Node: Property Access1358120 +Node: Initial Properties1359042 +Node: X Frame Properties1361542 +Node: Size and Position1366187 +Node: Frame Name1368202 +Node: Frame Titles1369129 +Node: Deleting Frames1370963 +Node: Finding All Frames1371946 +Node: Frames and Windows1375189 +Node: Minibuffers and Frames1377985 +Node: Input Focus1378911 +Node: Visibility of Frames1382028 +Node: Raising and Lowering1384032 +Node: Frame Configurations1386423 +Node: Frame Hooks1387491 +Node: Consoles and Devices1389311 +Node: Basic Console Functions1392059 +Node: Basic Device Functions1392494 +Node: Console Types and Device Classes1393354 +Node: Connecting to a Console or Device1395634 +Node: The Selected Console and Device1397837 +Node: Console and Device I/O1398877 +Node: Positions1399655 +Node: Point1400628 +Node: Motion1403731 +Node: Character Motion1404505 +Node: Word Motion1406757 +Node: Buffer End Motion1408161 +Node: Text Lines1409711 +Node: Screen Lines1414636 +Node: List Motion1418713 +Node: Skipping Characters1422196 +Node: Excursions1424408 +Node: Narrowing1427460 +Node: Markers1432782 +Node: Overview of Markers1433691 +Node: Predicates on Markers1438365 +Node: Creating Markers1439623 +Node: Information from Markers1443715 +Node: Changing Markers1444812 +Node: The Mark1446349 +Node: The Region1454871 +Node: Text1460605 +Node: Near Point1463307 +Node: Buffer Contents1467499 +Node: Comparing Text1468894 +Node: Insertion1470310 +Node: Commands for Insertion1474212 +Node: Deletion1477118 +Node: User-Level Deletion1480780 +Node: The Kill Ring1484892 +Node: Kill Ring Concepts1487073 +Node: Kill Functions1488138 +Node: Yank Commands1490074 +Node: Low-Level Kill Ring1491958 +Node: Internals of Kill Ring1495060 +Node: Undo1497854 +Node: Maintaining Undo1502201 +Node: Filling1504833 +Node: Margins1510846 +Node: Auto Filling1514892 +Node: Sorting1516083 +Node: Columns1525414 +Node: Indentation1528506 +Node: Primitive Indent1529294 +Node: Mode-Specific Indent1530635 +Node: Region Indent1533185 +Node: Relative Indent1536149 +Node: Indent Tabs1538546 +Node: Motion by Indent1539882 +Node: Case Changes1540677 +Node: Text Properties1544025 +Node: Examining Properties1545890 +Node: Changing Properties1547790 +Node: Property Search1551398 +Node: Special Properties1556156 +Node: Saving Properties1556450 +Node: Fields1559622 +Node: Substitution1565314 +Node: Registers1568555 +Node: Transposition1571151 +Node: Change Hooks1572055 +Node: Transformations1574109 +Node: Searching and Matching1579196 +Node: String Search1580330 +Node: Regular Expressions1585282 +Node: Syntax of Regexps1586656 +Node: Regexp Example1602189 +Node: Regexp Search1604370 +Node: POSIX Regexps1610650 +Node: Search and Replace1612738 +Node: Match Data1616115 +Node: Simple Match Data1617252 +Node: Replacing Match1621501 +Node: Entire Match Data1624194 +Node: Saving Match Data1626445 +Node: Searching and Case1627845 +Node: Standard Regexps1629889 +Node: Syntax Tables1632098 +Node: Syntax Basics1633215 +Node: Syntax Descriptors1636202 +Node: Syntax Class Table1638059 +Node: Syntax Flags1644266 +Node: Syntax Table Functions1648676 +Node: Motion and Syntax1652927 +Node: Parsing Expressions1654389 +Node: Standard Syntax Tables1660499 +Node: Syntax Table Internals1661354 +Node: Abbrevs1662387 +Node: Abbrev Mode1664194 +Node: Abbrev Tables1664923 +Node: Defining Abbrevs1666474 +Node: Abbrev Files1668405 +Node: Abbrev Expansion1670200 +Node: Standard Abbrev Tables1674829 +Node: Extents1676001 +Node: Intro to Extents1677247 +Node: Creating and Modifying Extents1681246 +Node: Extent Endpoints1682841 +Node: Finding Extents1686115 +Node: Mapping Over Extents1690248 +Node: Extent Properties1696382 +Node: Detached Extents1706635 +Node: Extent Parents1708505 +Node: Duplicable Extents1710210 +Node: Extents and Events1713438 +Node: Atomic Extents1715411 +Node: Specifiers1715867 +Node: Introduction to Specifiers1718003 +Node: Simple Specifier Usage1722194 +Node: Specifiers In-Depth1728607 +Node: Specifier Instancing1735251 +Node: Specifier Types1738520 +Node: Adding Specifications1743611 +Node: Retrieving Specifications1755119 +Node: Specifier Tag Functions1758877 +Node: Specifier Instancing Functions1762126 +Node: Specifier Examples1766994 +Node: Creating Specifiers1774585 +Node: Specifier Validation Functions1778947 +Node: Other Specification Functions1781356 +Node: Faces and Window-System Objects1785264 +Node: Faces1785594 +Node: Merging Faces1787218 +Node: Basic Face Functions1789190 +Node: Face Properties1791353 +Node: Face Convenience Functions1801686 +Node: Other Face Display Functions1805445 +Node: Fonts1806274 +Node: Font Specifiers1806982 +Node: Font Instances1808183 +Node: Font Instance Names1809166 +Node: Font Instance Size1810024 +Node: Font Instance Characteristics1811327 +Node: Font Convenience Functions1812525 +Node: Colors1813832 +Node: Color Specifiers1814282 +Node: Color Instances1816659 +Node: Color Instance Properties1817415 +Node: Color Convenience Functions1818057 +Node: Glyphs1819126 +Node: Glyph Intro1820202 +Node: Images1823219 +Node: Image Specifiers1823582 +Node: Image Instantiator Conversion1833189 +Node: Image Instantiator Formats1834733 +Node: Image Instances1849205 +Node: Image Instance Types1849965 +Node: Image Instance Functions1852955 +Node: Using Glyphs1860449 +Node: Creating Glyphs1864588 +Node: Buffer Glyphs1869820 +Node: Redisplay Glyphs1871256 +Node: Frame Glyphs1873902 +Node: External Glyphs1876050 +Node: Native GUI Widgets1880930 +Node: Introduction to Widgets1881596 +Node: Lisp API to Native Widgets1882613 +Node: Layouts1884217 +Node: Primitive Widgets1887753 +Node: Subwindows1888460 +Node: Manipulating Glyphs1888723 +Node: Glyph Properties1889417 +Node: Glyph Convenience Functions1898751 +Node: Glyph Dimensions1902724 +Node: Glyph Types1903846 +Node: Glyph Examples1905636 +Node: Annotations1913901 +Node: Annotation Basics1914920 +Node: Annotation Primitives1918865 +Node: Annotation Properties1920217 +Node: Locating Annotations1923296 +Node: Margin Primitives1924147 +Node: Annotation Hooks1926054 +Node: Display1926721 +Node: Refresh Screen1927702 +Node: Truncation1929907 +Node: The Echo Area1932442 +Node: Warnings1938872 +Node: Invisible Text1943261 +Node: Selective Display1945983 +Node: Overlay Arrow1950078 +Node: Temporary Displays1951440 +Node: Blinking1955502 +Node: Usual Display1957698 +Node: Display Tables1960259 +Node: Display Table Format1961072 +Node: Active Display Table1962528 +Node: Character Descriptors1966537 +Node: Beeping1967307 +Node: Hash Tables1972093 +Node: Introduction to Hash Tables1972708 +Node: Working With Hash Tables1979282 +Node: Weak Hash Tables1980414 +Node: Range Tables1982438 +Node: Introduction to Range Tables1983131 +Node: Working With Range Tables1983589 +Node: Databases1984563 +Node: Connecting to a Database1984869 +Node: Working With a Database1985989 +Node: Other Database Functions1986877 +Node: Processes1987460 +Node: Subprocess Creation1989688 +Node: Synchronous Processes1993150 +Node: MS-DOS Subprocesses1999821 +Node: Asynchronous Processes2000904 +Node: Deleting Processes2005231 +Node: Process Information2007112 +Node: Input to Processes2011222 +Node: Signals to Processes2013907 +Node: Output from Processes2018736 +Node: Process Buffers2019555 +Node: Filter Functions2022449 +Node: Accepting Output2028053 +Node: Sentinels2029592 +Node: Process Window Size2033094 +Node: Transaction Queues2033456 +Node: Network2035166 +Node: System Interface2037810 +Node: Starting Up2039083 +Node: Start-up Summary2039684 +Node: Init File2043255 +Node: Terminal-Specific2045651 +Node: Command Line Arguments2048824 +Node: Getting Out2052329 +Node: Killing XEmacs2052905 +Node: Suspending XEmacs2054587 +Node: System Environment2057950 +Node: User Identification2064131 +Node: Time of Day2067678 +Node: Time Conversion2070475 +Node: Timers2075727 +Node: Terminal Input2077909 +Node: Input Modes2078419 +Node: Translating Input2080894 +Node: Recording Input2085062 +Node: Terminal Output2087180 +Node: Flow Control2090812 +Node: Batch Mode2094785 +Node: X-Windows2096177 +Node: X Selections2097052 +Node: X Server2099815 +Node: Resources2100273 +Node: Server Data2105600 +Node: Grabs2106821 +Node: X Miscellaneous2108419 +Node: ToolTalk Support2110821 +Node: XEmacs ToolTalk API Summary2111044 +Node: Sending Messages2112351 +Node: Example of Sending Messages2112612 +Node: Elisp Interface for Sending Messages2113675 +Node: Receiving Messages2120303 +Node: Example of Receiving Messages2120536 +Node: Elisp Interface for Receiving Messages2121373 +Node: LDAP Support2125262 +Node: Building XEmacs with LDAP support2125759 +Node: XEmacs LDAP API2126743 +Node: LDAP Variables2127802 +Node: The High-Level LDAP API2130421 +Node: The Low-Level LDAP API2133919 +Node: The LDAP Lisp Object2134761 +Node: Opening and Closing a LDAP Connection2135334 +Node: Low-level Operations on a LDAP Server2137169 +Node: LDAP Internationalization2139912 +Node: LDAP Internationalization Variables2140829 +Node: Encoder/Decoder Functions2142584 +Node: Syntax of Search Filters2143653 +Node: PostgreSQL Support2144957 +Node: Building XEmacs with PostgreSQL support2145355 +Node: XEmacs PostgreSQL libpq API2146709 +Node: libpq Lisp Variables2148595 +Node: libpq Lisp Symbols and DataTypes2151618 +Node: Synchronous Interface Functions2164913 +Node: Asynchronous Interface Functions2169436 +Node: Large Object Support2172967 +Node: Other libpq Functions2173610 +Node: Unimplemented libpq Functions2176667 +Node: XEmacs PostgreSQL libpq Examples2182029 +Node: Internationalization2188122 +Node: I18N Levels 1 and 22188471 +Node: I18N Level 32189184 +Node: Level 3 Basics2189475 +Node: Level 3 Primitives2190320 +Node: Dynamic Messaging2191945 +Node: Domain Specification2192419 +Node: Documentation String Extraction2194103 +Node: I18N Level 42195032 +Node: MULE2195231 +Node: Internationalization Terminology2196283 +Node: Charsets2208489 +Node: Charset Properties2209193 +Node: Basic Charset Functions2213919 +Node: Charset Property Functions2216121 +Node: Predefined Charsets2218363 +Node: MULE Characters2221294 +Node: Composite Characters2222184 +Node: Coding Systems2223462 +Node: Coding System Types2225610 +Node: ISO 20222229605 +Node: EOL Conversion2241871 +Node: Coding System Properties2243057 +Node: Basic Coding System Functions2247394 +Node: Coding System Property Functions2249450 +Node: Encoding and Decoding Text2250025 +Node: Detection of Textual Encoding2251177 +Node: Big5 and Shift-JIS Functions2252733 +Node: Predefined Coding Systems2253900 +Node: CCL2266006 +Node: CCL Syntax2269129 +Node: CCL Statements2270716 +Node: CCL Expressions2275360 +Node: Calling CCL2277910 +Node: CCL Example2280930 +Node: Four bits to ASCII2283432 +Node: URI Encoding constants2285024 +Node: Numeric to ASCII-hexadecimal conversion2286064 +Node: Characters to be preserved2287435 +Ref: Characters to be preserved-Footnote-12288972 +Node: The program to decode to internal format2289103 +Node: The program to encode from internal format2291816 +Node: The actual coding system2293507 +Node: Category Tables2294891 +Node: Tips2297264 +Node: Style Tips2297925 +Node: Compilation Tips2307808 +Node: Documentation Tips2309717 +Node: Comment Tips2315231 +Node: Library Headers2318240 +Node: Building XEmacs and Object Allocation2322201 +Node: Building XEmacs2323103 +Node: Pure Storage2329693 +Node: Garbage Collection2332344 +Node: Standard Errors2343191 +Node: Standard Buffer-Local Variables2347419 +Node: Standard Keymaps2350073 +Node: Standard Hooks2353827 +Node: Index2361347  End Tag Table diff --git a/info/lispref.info-1 b/info/lispref.info-1 index a035092..359bb9d 100644 --- a/info/lispref.info-1 +++ b/info/lispref.info-1 @@ -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.  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.  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  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.  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.  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.  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::.  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 `=='.  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.  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.  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.)  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.  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:  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'.  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.  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:  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.  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.  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.  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::.  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.  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.  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 - 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 - 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.  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:  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.  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.  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 @@ -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.  File: lispref.info, Node: Issues, Prev: Documenting Packages, Up: Packaging -Issues -====== +7.2 Issues +========== To be completed.  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.  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) => # @@ -3325,8 +3345,8 @@ not be evaluated later. *Note Input Functions::, for a description of  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.  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.  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.  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 `+'.)  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.  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.  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.  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'.  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:  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:  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.  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.  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.  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.  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.  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::.  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.  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.  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.  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.  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)  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.  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.  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)  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.  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.  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.  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::.  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.  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.  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.  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.  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.  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)  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.  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.  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.  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.  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::.  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)  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)  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)  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)  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)  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.  File: lispref.info, Node: Face Type, Next: Glyph Type, Up: Window-System Types -Face Type ---------- +8.6.1 Face Type +--------------- (not yet documented)  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)  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)  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)  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)  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)  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)  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)  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)  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'.  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).  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.  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.  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):  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',  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.  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.  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  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.  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".  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.  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.  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.  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.  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  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.  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.  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.  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::.  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.  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'.  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.  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 #." - + (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.  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.  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.  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  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.  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.  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.  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.  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.  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 diff --git a/info/lispref.info-2 b/info/lispref.info-2 index 6116d38..30caa62 100644 --- a/info/lispref.info-2 +++ b/info/lispref.info-2 @@ -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.  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.  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'.  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'.  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:  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.  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.  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.  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.  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  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.  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.  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.  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.  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.  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.  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:  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::.  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::.  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::):  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::.  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::):  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::.  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  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::.  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.  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.  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.  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.  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:  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'.  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.  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::).  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.  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:  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.  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.  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.  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.  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.  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.  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::.  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.  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::).  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:  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:  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.  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':  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.  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::).  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,  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.  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:  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.  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':  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.  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)))))  -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.  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.  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.  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.  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.  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.  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'.  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.  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.  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:  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.  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.  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'.  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.  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.  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.  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.  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.  -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.  -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  -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.  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.  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.  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.  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.  -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.  -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::.  -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'.  -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"  -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.  -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'. => # (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)) => # - + ;; 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.  -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.  -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::.  -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::.  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'.  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.  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::).  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'.  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:  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.  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.  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.  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.  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.  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.  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.  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.  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.  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  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.  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:  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.  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:  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.  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 diff --git a/info/lispref.info-3 b/info/lispref.info-3 index 9f2d6df..141d4e5 100644 --- a/info/lispref.info-3 +++ b/info/lispref.info-3 @@ -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.  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::.  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::.  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 `'. - - 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.  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.  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  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.  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) => # - + (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.  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) => # 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::).  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.  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.  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:  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.  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.  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  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.  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.  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::.  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  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.  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.  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::).  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.  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.)  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.  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.  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.  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.  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.  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.  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.  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.  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.  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  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.  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'.  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.  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.  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.  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  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.  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'  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.  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.  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.  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.)  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.  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.  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.  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.  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:  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.  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:  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.  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.  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.)  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:  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).  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:  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"))) => # (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'.  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'.  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 => # - + (print "More output for foo." m) => "More output for foo." - + ---------- Buffer: foo ---------- "This is t "More output for foo." he -!-output" ---------- Buffer: foo ---------- - + m => # @@ -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.  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'.  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  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.  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::).  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::.  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 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.  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.  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.  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.  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.  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.  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 '. => "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::.  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 . @@ -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 , `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.  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::.  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 to mean yes and @@ -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 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.  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.  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.  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'.  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.  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.  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.  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.  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  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':  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)  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. => [# # #] - - 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'. => # - - 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:  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.  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  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  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.  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.  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.  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.  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.  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.  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  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  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.  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) => # - + ;; 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)) => # - + ;; Create a key-press event of dubious fame. (make-event 'key-press '(key escape modifiers (meta alt control shift))) => # - + ;; 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)) => # - + ;; Create a similar button-release event. (make-event 'button-release `(button 1 modifiers (meta) x ,x y ,x)) => # - + ;; Create a mouse-motion event. (make-event 'motion '(x 20 y 30)) => # - + (event-properties (make-event 'motion '(x 20 y 30))) => (channel # 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.  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; and 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.  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.  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 ---------- - + => [# #] If an input character is an upper-case letter and has no key binding, @@ -7115,8 +7115,8 @@ perform case conversion in this way.  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) => # - - 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.  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  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 diff --git a/info/lispref.info-4 b/info/lispref.info-4 index 114aa7a..eee35b1 100644 --- a/info/lispref.info-4 +++ b/info/lispref.info-4 @@ -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.  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. -| # => # - - 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.  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.  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::.  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.  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.  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.  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.  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.).  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".  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.  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.  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))) => # - + (eq map (current-local-map)) => nil  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.  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.  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.  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) => # - - 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::.  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'.  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.  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' => # - + ;; 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.  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.  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.  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  File: lispref.info, Node: Menus, Next: Dialog Boxes, Prev: Keymaps, Up: Top -Menus -***** +27 Menus +******** * Menu: @@ -1958,8 +1958,8 @@ Menus  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:  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:  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.  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.  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.  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.  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.  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::.  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.  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.  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.  File: lispref.info, Node: Dialog Boxes, Next: Toolbar, Prev: Menus, Up: Top -Dialog Boxes -************ +28 Dialog Boxes +*************** * Menu: @@ -2704,8 +2704,8 @@ Dialog Boxes  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.  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.  File: lispref.info, Node: Toolbar, Next: Gutter, Prev: Dialog Boxes, Up: Top -Toolbar -******* +29 Toolbar +********** * Menu: @@ -2771,8 +2771,8 @@ Toolbar  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.  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  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.  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.  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.  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.  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.  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  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.  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.  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.  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.  File: lispref.info, Node: Buffer Tabs, Next: Progress Bars, Up: Common Gutter Widgets -Buffer Tabs ------------ +30.6.1 Buffer Tabs +------------------ Not documented yet.  File: lispref.info, Node: Progress Bars, Prev: Buffer Tabs, Up: Common Gutter Widgets -Progress Bars -------------- +30.6.2 Progress Bars +-------------------- Not documented yet.  File: lispref.info, Node: Scrollbars, Next: Drag and Drop, Prev: Gutter, Up: Top -Scrollbars -********** +31 Scrollbars +************* Not yet documented.  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).  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.  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/  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.  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.  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.  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.  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).  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::.  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.  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:  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.  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.  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.  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. +  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.  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.  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.)  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::.  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.  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.  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  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'.  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.  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  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.  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\ \\\\[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.  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.  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  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  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  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.  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") => # - - 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.  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.  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.  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  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.  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::.  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.  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.  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.  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.  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.  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'.  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.  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.  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:  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.  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/../'.  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.  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") - -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. - - -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'. - diff --git a/info/lispref.info-5 b/info/lispref.info-5 index 2543d27..6362445 100644 --- a/info/lispref.info-5 +++ b/info/lispref.info-5 @@ -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.  +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. + + +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'. + + 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.  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.  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  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.  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  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.  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 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 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.  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.  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.  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.  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  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.  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.  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.  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.  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.  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.  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.  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) => # - - 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  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")) => # (kill-buffer foo) @@ -1239,7 +1346,7 @@ also initially disables recording undo information; see *Note Undo::. foo => # - - 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::.  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::.  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.  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.  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.  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. => (# # # # #) - + ;; 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.  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::).  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  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") => # - - 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")) => # - - 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.  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.  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.  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-edges) ; Edges in order: => (0 0 80 50) ; left-top-right-bottom - + ;; Returns window created (setq w2 (split-window w 15)) => # @@ -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.  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.)  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) => # - - 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.  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))) => # - - 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.  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) => # - - 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.  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.  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.  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.  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.  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)  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:  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  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.  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.  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.  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.  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'.  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.  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.  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  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.  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'.)  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.  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'.  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.  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::.  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::.  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.  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  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'.  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'.  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.  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::.  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).  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.  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.  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.  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.  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  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.  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::.  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.  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::.  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.  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::.  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.  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.  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.  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:  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::.  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.  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.  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.  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)) => # - + ;; Set `m1' to point between the 99th and 100th characters ;; in the current buffer: (set-marker m1 100) => # - + ;; Now insert one character at the beginning of the buffer: (goto-char (point-min)) => 1 (insert "Q") => nil - + ;; `m1' is updated appropriately. m1 => # - + ;; 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) => # @@ -5540,54 +5648,54 @@ point to markers:  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.  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) => # - - 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. => # (point-max-marker) => # - + (narrow-to-region 100 200) => nil (point-min-marker) @@ -5627,7 +5735,7 @@ marker. (point-max-marker) => # - - 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)) => # - + (setq q (copy-marker p)) => # - + (eq p q) => nil - + (equal p q) => t - + (point) => 2139 - + (set-marker p 3000) => # - + (point) => 2139 - + (setq p (point-marker t)) => # - + (set-marker p 3000) => # - + (point) => 3000 - + (copy-marker 0) => # - + (copy-marker 20000) => #  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-buffer m) @@ -5720,8 +5828,8 @@ both point nowhere.  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) => # - - Function: move-marker marker position &optional buffer + -- Function: move-marker marker position &optional buffer This is another name for `set-marker'.  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. # ...) - - 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.  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::.)  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).  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.)  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.  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.  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.  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.  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'.  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.  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.  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.  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.  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.  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. - -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. - - -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. - diff --git a/info/lispref.info-6 b/info/lispref.info-6 index ed9d846..8889a4f 100644 --- a/info/lispref.info-6 +++ b/info/lispref.info-6 @@ -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.  +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. + + +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. + + 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'.  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.  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, indents to this column. This variable automatically becomes buffer-local when set in any fashion. @@ -331,8 +493,8 @@ Margins for Filling  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::.  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.  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.  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.  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.  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 key to indent properly for the language being edited. This section describes the mechanism of the 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 (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.  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.  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.  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 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.  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'.  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.  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.  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.)  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.  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.  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::.  -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.  +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. + + 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.  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.  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.  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.  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  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.  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.  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.  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.  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:  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  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.  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.  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.  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.)  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.  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. # #) - - 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.  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::).  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.  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.  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.  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.  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).  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.  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  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.  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.  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.  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:  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.  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.  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)'.  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.  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.  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.  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.  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.  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.  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::.  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.  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  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'.  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.  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.  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.)  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.  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.  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.  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.  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.  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  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)) # 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!)  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.  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.  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.  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  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  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.  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  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 => # - + ;; 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 => # - + ;; get the whole specification list (specifier-specs foo) => ((# (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) => ((# (nil . baz)) (# (nil . bar)) (global (nil))) - + (frame-value foo) => bar - + (frame-get-default foo) => nil @@ -6095,10 +6392,10 @@ down.  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  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.  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.  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  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.  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.  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::). - -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::. - - -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::. - - -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'. - - -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. - - -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). - - -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. - - -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). - diff --git a/info/lispref.info-7 b/info/lispref.info-7 index b3dfd60..49c7efc 100644 --- a/info/lispref.info-7 +++ b/info/lispref.info-7 @@ -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.  +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::. + + +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::. + + +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'. + + +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. + + +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). + + +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. + + +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). + + 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  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'.  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  File: lispref.info, Node: Colors, Prev: Fonts, Up: Faces and Window-System Objects -Colors -====== +49.3 Colors +=========== * Menu: @@ -151,13 +564,13 @@ Colors  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  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.  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  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  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.  -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.  -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'. + +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::. - -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::. + + +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. + + +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 `' 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). + + +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. + + +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'.  -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. - -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.)  -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.  -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'. + +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. + +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 `'] 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'. + +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'. + +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. + +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 + +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". + +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: + +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". + +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. + +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.  -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.  -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). - -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.  -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. + +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.  -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'.  -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.) - - -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. - - -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. - - -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:  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.  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.  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.  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.  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.  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.  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:  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.  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.  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.)  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.  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:  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'.  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.  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::.  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 ---------- 20 - + # - + ---------- 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.  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.  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.  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".  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:  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::.  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  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::.)  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  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'.  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  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  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'.  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  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  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  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'.  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.  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.  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.  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::.  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.  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.  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") => # - + (start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin") => #> - + ---------- 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::.  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.  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) => (# #) - - 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") => # - - 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.  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.  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'.  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.  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")) => # - - 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.  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.  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.  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: # had the event `killed' => # - - 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.  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.  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.  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::.  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.  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.  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:  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.  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.  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.  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.  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  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.  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.  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::).  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.  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  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.  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.  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.  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.  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  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 - -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::. - - -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. - - -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. - - -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. - - -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. - - -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". - - -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.) - - -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. - - -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 - - -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:: - - -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. - - -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:: - - -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)) - - -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_' 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. - - -File: lispref.info, Node: Receiving Messages, Prev: Sending Messages, Up: ToolTalk Support - -Receiving Messages -================== - -* Menu: - -* Example of Receiving Messages:: -* Elisp Interface for Receiving Messages:: - - -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)) - - -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. - - -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 - - -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 () - - * University of Michigan's LDAP 3.3 - () - - * LDAP SDK 1.0 from Netscape Corp. () - - 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. - - -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 - - -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'. - - -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. - - -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:: - diff --git a/info/lispref.info-8 b/info/lispref.info-8 index 74c0357..6615f42 100644 --- a/info/lispref.info-8 +++ b/info/lispref.info-8 @@ -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.  +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::. + + +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. + + +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. + + +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. + + +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. + + +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". + + +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.) + + +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. + + +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 + + +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:: + + +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. + + +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:: + + +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)) + + +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_' 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. + + +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:: + + +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)) + + +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. + + +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 + + +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. + + +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 + + +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'. + + +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. + + +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:: + + 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.  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.  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  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.  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.  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  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'.  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.  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 -(), 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.  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.  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.  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.  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;")) => # - - 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  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.  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  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  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.  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.  File: lispref.info, Node: Internationalization, Next: MULE, Prev: PostgreSQL Support, Up: Top -Internationalization -******************** +62 Internationalization +*********************** * Menu: @@ -1436,8 +2458,8 @@ Internationalization  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.  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  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.  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  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.  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")  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  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::.  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".  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.  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.  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::.  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  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.  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.  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.  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.  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.)  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.)  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:  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  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.  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.  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.  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  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  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.  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.  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.  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 ... ']'  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.  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.  -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.  -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:: . + + +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.") + + +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, +.") + + +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.") + + +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. + + +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. ") + + +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") + + +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.  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.  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.  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:  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.  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.  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.  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 ;; Maintainer: Eric S. Raymond ;; 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:  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.  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.  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.  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'.  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.  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.  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.  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. diff --git a/info/lispref.info-9 b/info/lispref.info-9 index 715274f..14b52bf 100644 Binary files a/info/lispref.info-9 and b/info/lispref.info-9 differ diff --git a/info/new-users-guide.info b/info/new-users-guide.info index dbebb64..d1bb4e4 100644 --- a/info/new-users-guide.info +++ b/info/new-users-guide.info @@ -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.  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  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 '. This will bring up an emacs window with `*scratch*' as @@ -231,8 +231,8 @@ the buffer.  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.  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.  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.  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:  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.  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 ' 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  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:  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 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 . Save @@ -603,8 +600,8 @@ Exit Emacs  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  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  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.  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.  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 key. The following abbreviations will be used for the  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:  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  File: new-users-guide.info, Node: Erase, Next: Numeric Argument, Prev: Cursor Position, Up: Edit -Erasing Text -============ +3.3 Erasing Text +================ `' If you press i.e. the "delete" key, it will delete the @@ -974,8 +971,8 @@ Erasing Text  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 key, the cursor will move ten lines downward. You -can also type: + After you press 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.  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.  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:  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.  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:  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  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 ): - If you hit without giving a function name, you will get documentation for that default function name, otherwise if you type a function name and hit , you will get documentation for @@ -1412,7 +1401,6 @@ Unix Manual... message in the echo area: Manual entry: (default ) - Now you can type any command, for example type `who' and press . You will get the man page for the Unix command `who' which lists who is on the system. @@ -1431,8 +1419,8 @@ Emacs News  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.  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.  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.  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.  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:  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:  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.  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  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.  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.  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:  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.  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.  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:  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:  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: , Emacs will prompt you for a buffer name. You will see a message in the echo area: Append to buffer: (default ) - 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.  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 ********************* +[index] * 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)  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 ************************** +[index] * 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)  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 ************** +[index] * 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)  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 ************* +[index] * 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)  @@ -2754,50 +2753,50 @@ Tag Table: Node: Top635 Node: Intro4610 Node: Entering7190 -Node: Enter8701 -Node: Frame9380 -Node: Exiting11046 -Node: Mode Line12243 -Node: Echo Area14387 -Node: Windows and Menus15739 -Node: XEmacs Window16189 -Node: Pull-down Menus19807 -Node: File menu20683 -Node: Edit menu23940 -Node: Options Menu26463 -Node: Buffers Menu31245 -Node: Help menu31628 -Node: Edit32123 -Node: Insert33714 -Node: Cursor Position35039 -Node: Erase37108 -Node: Numeric Argument38262 -Node: Undo39443 -Node: Customization Basics40203 -Node: Customizing key Bindings41472 -Node: Customizing Menus44964 -Node: Help50451 -Node: The Help Menu51136 -Node: Modes56100 -Node: Major Modes57013 -Node: Minor Modes60962 -Node: Files65056 -Node: File Names65775 -Node: Visiting67577 -Node: Saving Files69698 -Node: Other Customizations73076 -Node: Setting Variables75557 -Node: Init File78767 -Node: Select and Move84270 -Node: Selecting Text85221 -Node: Mouse86731 -Node: Region Operation88053 -Node: Moving Text89310 -Node: Accumulating text90547 -Node: Search and Replace92865 -Node: Key Index96730 -Node: Command Index100019 -Node: Variable Index104121 -Node: Concept Index104698 +Node: Enter8705 +Node: Frame9392 +Node: Exiting11066 +Node: Mode Line12271 +Node: Echo Area14423 +Node: Windows and Menus15783 +Node: XEmacs Window16237 +Node: Pull-down Menus19866 +Node: File menu20750 +Node: Edit menu24017 +Node: Options Menu26552 +Node: Buffers Menu31346 +Node: Help menu31741 +Node: Edit32248 +Node: Insert33843 +Node: Cursor Position35176 +Node: Erase37253 +Node: Numeric Argument38415 +Node: Undo39612 +Node: Customization Basics40380 +Node: Customizing key Bindings41653 +Node: Customizing Menus45155 +Node: Help50609 +Node: The Help Menu51298 +Node: Modes56217 +Node: Major Modes57134 +Node: Minor Modes61086 +Node: Files65190 +Node: File Names65913 +Node: Visiting67723 +Node: Saving Files69852 +Node: Other Customizations73238 +Node: Setting Variables75708 +Node: Init File78916 +Node: Select and Move84427 +Node: Selecting Text85382 +Node: Mouse86902 +Node: Region Operation88232 +Node: Moving Text89498 +Node: Accumulating text90743 +Node: Search and Replace93068 +Node: Key Index96940 +Node: Command Index101262 +Node: Variable Index106682 +Node: Concept Index107426  End Tag Table diff --git a/info/standards.info b/info/standards.info index 8574d8f..44a4643 100644 --- a/info/standards.info +++ b/info/standards.info @@ -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.  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'.  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.  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.  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.  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.  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.  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.  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.  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.  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:  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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':  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.  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.  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.  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.  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.  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:  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.  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.  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  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.  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.  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.  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.  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 -. 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.  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.  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.  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.  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 - + * 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:  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.  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:  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:  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.  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.  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.  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.  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.  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'.  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.  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.  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.  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.  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.  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.  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 ***** +[index] * 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)  Tag Table: Node: Top980 Node: Preface1582 -Node: Legal Issues3099 -Node: Reading Non-Free Code3559 -Node: Contributions5279 -Node: Trademarks7425 -Node: Design Advice8480 -Node: Source Language8983 -Node: Compatibility10987 -Node: Using Extensions12607 -Node: Standard C14175 -Node: Program Behavior16538 -Node: Semantics17453 -Node: Libraries22138 -Node: Errors23375 -Node: User Interfaces25148 -Node: Graphical Interfaces26745 -Node: Command-Line Interfaces27772 -Node: Option Table33254 -Node: Memory Usage48255 -Node: File Usage49272 -Node: Writing C50012 -Node: Formatting50850 -Node: Comments54905 -Node: Syntactic Conventions58199 -Node: Names61603 -Node: System Portability63788 -Node: CPU Portability66165 -Node: System Functions69413 -Node: Internationalization74612 -Node: Mmap77757 -Node: Documentation78459 -Node: GNU Manuals79560 -Node: Doc Strings and Manuals84609 -Node: Manual Structure Details86154 -Node: License for Manuals87564 -Node: Manual Credits88530 -Node: Printed Manuals88915 -Node: NEWS File89593 -Node: Change Logs90263 -Node: Change Log Concepts91009 -Node: Style of Change Logs92861 -Node: Simple Changes94904 -Node: Conditional Changes96136 -Node: Indicating the Part Changed97546 -Node: Man Pages98061 -Node: Reading other Manuals99677 -Node: Managing Releases100458 -Node: Configuration101210 -Node: Makefile Conventions108107 -Node: Makefile Basics108863 -Node: Utilities in Makefiles112025 -Node: Command Variables114158 -Node: Directory Variables117723 -Node: Standard Targets128605 -Ref: Standard Targets-Footnote-1139853 -Node: Install Command Categories139953 -Node: Releases144523 -Node: References148603 -Node: Index149994 +Node: Legal Issues3103 +Node: Reading Non-Free Code3567 +Node: Contributions5295 +Node: Trademarks7449 +Node: Design Advice8512 +Node: Source Language9019 +Node: Compatibility11031 +Node: Using Extensions12659 +Node: Standard C14235 +Node: Program Behavior16606 +Node: Semantics17525 +Node: Libraries22218 +Node: Errors23463 +Node: User Interfaces25244 +Node: Graphical Interfaces26849 +Node: Command-Line Interfaces27884 +Node: Option Table33374 +Node: Memory Usage48383 +Node: File Usage49408 +Node: Writing C50156 +Node: Formatting50998 +Node: Comments55061 +Node: Syntactic Conventions58363 +Node: Names61775 +Node: System Portability63968 +Node: CPU Portability66353 +Node: System Functions69609 +Node: Internationalization74806 +Node: Mmap77959 +Node: Documentation78669 +Node: GNU Manuals79774 +Node: Doc Strings and Manuals84831 +Node: Manual Structure Details86384 +Node: License for Manuals87802 +Node: Manual Credits88776 +Node: Printed Manuals89169 +Node: NEWS File89855 +Node: Change Logs90533 +Node: Change Log Concepts91287 +Node: Style of Change Logs93151 +Node: Simple Changes95186 +Node: Conditional Changes96430 +Node: Indicating the Part Changed97852 +Node: Man Pages98379 +Node: Reading other Manuals100003 +Node: Managing Releases100794 +Node: Configuration101550 +Node: Makefile Conventions108455 +Node: Makefile Basics109219 +Node: Utilities in Makefiles112393 +Node: Command Variables114538 +Node: Directory Variables118115 +Node: Standard Targets129009 +Ref: Standard Targets-Footnote-1140249 +Node: Install Command Categories140349 +Node: Releases144931 +Node: References149019 +Node: Index150414  End Tag Table diff --git a/info/term.info b/info/term.info index 326ec06..4cd3b6d 100644 --- a/info/term.info +++ b/info/term.info @@ -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  File: term.info, Node: term mode, Prev: Top, Up: Top -Term Mode -********* +1 Term Mode +*********** * Menu: @@ -47,8 +47,8 @@ shell and gud modes.  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.  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.)  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.  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.  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).  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.  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.  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.  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  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.  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  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  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 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:  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: Top201 Node: term mode367 -Node: Overview1190 -Node: Output from the inferior1937 -Node: subbuffer3514 -Node: altsubbuffer4834 -Node: Input to the inferior5856 -Node: Connecting to remote computers7377 -Node: Paging9279 -Node: Terminal escapes9945 -Node: Cursor motion10810 -Node: Erasing11470 -Node: Inserting and deleting12262 -Node: Scrolling12652 -Node: Command hook13098 -Node: Miscellaneous escapes14131 +Node: Overview1194 +Node: Output from the inferior1949 +Node: subbuffer3538 +Node: altsubbuffer4873 +Node: Input to the inferior5908 +Node: Connecting to remote computers7441 +Node: Paging9351 +Node: Terminal escapes10025 +Node: Cursor motion10898 +Node: Erasing11570 +Node: Inserting and deleting12374 +Node: Scrolling12776 +Node: Command hook13234 +Node: Miscellaneous escapes14279  End Tag Table diff --git a/info/termcap.info b/info/termcap.info index 8f5ec22..5bca270 100644 --- a/info/termcap.info +++ b/info/termcap.info @@ -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  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:  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:  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 '.\n"); - + success = tgetent (term_buffer, termtype); if (success < 0) fatal ("Could not access the termcap data base.\n"); @@ -226,8 +226,8 @@ terminal description.  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'.  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.  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.  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.  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::.  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.  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::).  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.  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.  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.  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".  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.  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".  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::).  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:  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:  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.  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.  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.  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.  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.  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::.  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.  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'.  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'.  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.  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::).  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.  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.  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.  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.  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.  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  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.  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.  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.  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.  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 *************************** +[index] * 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)  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 **************** +[index] * 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)  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 ************* +[index] * 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)  @@ -3536,48 +3539,48 @@ Tag Table: Node: Top959 Node: Introduction1604 Node: Library3328 -Node: Preparation4342 -Node: Find5538 -Node: Interrogate9082 -Node: Initialize14386 -Node: Padding16021 -Node: Why Pad16679 -Node: Describe Padding18320 -Node: Output Padding19792 -Node: Parameters23402 -Node: Encode Parameters25057 -Node: Using Parameters31159 -Node: tparam31745 -Node: tgoto33807 -Node: Data Base36359 -Node: Format37233 -Node: Capability Format39322 -Node: Naming42369 -Node: Inheriting46933 -Node: Capabilities49156 -Node: Basic51996 -Node: Screen Size55837 -Node: Cursor Motion57574 -Node: Wrapping67221 -Node: Scrolling70042 -Node: Windows75059 -Node: Clearing75790 -Node: Insdel Line77549 -Node: Insdel Char82452 -Node: Standout92433 -Node: Underlining101487 -Node: Cursor Visibility103903 -Node: Bell104648 -Node: Keypad105194 -Node: Meta Key109912 -Node: Initialization110863 -Node: Pad Specs113227 -Node: Status Line115277 -Node: Half-Line117158 -Node: Printer117957 -Node: Summary119633 -Node: Var Index129835 -Node: Cap Index130559 -Node: Index137750 +Node: Preparation4346 +Node: Find5550 +Node: Interrogate9087 +Node: Initialize14369 +Node: Padding16012 +Node: Why Pad16678 +Node: Describe Padding18331 +Node: Output Padding19815 +Node: Parameters23432 +Node: Encode Parameters25095 +Node: Using Parameters31209 +Node: tparam31807 +Node: tgoto33880 +Node: Data Base36448 +Node: Format37326 +Node: Capability Format39423 +Node: Naming42478 +Node: Inheriting47050 +Node: Capabilities49281 +Node: Basic52125 +Node: Screen Size55974 +Node: Cursor Motion57719 +Node: Wrapping67374 +Node: Scrolling70203 +Node: Windows75228 +Node: Clearing75967 +Node: Insdel Line77734 +Node: Insdel Char82645 +Node: Standout92634 +Node: Underlining101698 +Node: Cursor Visibility104124 +Node: Bell104879 +Node: Keypad105435 +Node: Meta Key110163 +Node: Initialization111124 +Node: Pad Specs113498 +Node: Status Line115558 +Node: Half-Line117449 +Node: Printer118258 +Node: Summary119944 +Node: Var Index130150 +Node: Cap Index131116 +Node: Index140964  End Tag Table diff --git a/info/texinfo.info b/info/texinfo.info index d17adb9..3231158 100644 --- a/info/texinfo.info +++ b/info/texinfo.info @@ -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.  Indirect: texinfo.info-1: 1484 -texinfo.info-2: 300413 +texinfo.info-2: 298772  Tag Table: (Indirect) Node: Top1484 Node: Copying23797 Node: Overview25800 -Node: Overview-Footnotes27227 -Ref: Overview-Footnote-127291 -Node: Using Texinfo27763 -Node: Info Files30250 -Node: Info Files-Footnotes34284 -Ref: Info Files-Footnote-134352 -Node: Printed Books34531 -Node: Printed Books-Footnotes37200 -Ref: Printed Books-Footnote-137274 -Node: Formatting Commands37484 -Node: Formatting Commands-Footnotes40309 -Ref: Formatting Commands-Footnote-140395 -Node: Conventions41011 -Node: Comments43571 -Node: Minimum44991 -Node: Six Parts47175 -Node: Short Sample48685 -Node: Acknowledgements52817 -Node: Texinfo Mode53650 -Node: Texinfo Mode Overview55021 -Node: Emacs Editing55797 -Node: Inserting57925 -Node: Showing the Structure62204 -Node: Updating Nodes and Menus64729 -Node: Updating Commands65800 -Node: Updating Requirements71861 -Node: Other Updating Commands74156 -Node: Info Formatting77422 -Node: Printing78678 -Node: Texinfo Mode Summary81021 -Node: Beginning a File85757 -Node: Four Parts86646 -Node: Sample Beginning88116 -Node: Header89734 -Node: First Line91084 -Node: Start of Header92071 -Node: setfilename92782 -Node: settitle94716 -Node: setchapternewpage96604 -Node: paragraphindent99363 -Node: End of Header100843 -Node: Info Summary and Permissions101680 -Node: Titlepage & Copyright Page102697 -Node: titlepage104301 -Node: titlepage-Footnotes106581 -Ref: titlepage-Footnote-1106647 -Node: titlefont center sp106921 -Node: title subtitle author108145 -Node: Copyright & Permissions110415 -Node: end titlepage112414 -Node: headings on off114118 -Node: The Top Node116161 -Node: Title of Top Node117314 -Node: Master Menu Parts118567 -Node: Software Copying Permissions120802 -Node: Ending a File121968 -Node: Printing Indices & Menus122814 -Node: Contents125120 -Node: File End127458 -Node: Structuring128129 -Node: Tree Structuring129784 -Node: Structuring Command Types131225 -Node: makeinfo top133550 -Node: chapter134081 -Node: unnumbered & appendix135103 -Node: majorheading & chapheading135940 -Node: section136759 -Node: unnumberedsec appendixsec heading137521 -Node: subsection138508 -Node: unnumberedsubsec appendixsubsec subheading139078 -Node: subsubsection140029 -Node: Raise/lower sections141577 -Node: Nodes143710 -Node: Two Paths144645 -Node: Node Menu Illustration145931 -Node: node149624 -Node: Node Names152318 -Node: Writing a Node153394 -Node: Node Line Tips155410 -Node: Node Line Requirements156202 -Node: First Node157801 -Node: makeinfo top command159238 -Node: Top Node Summary160415 -Node: makeinfo Pointer Creation161863 -Node: Menus163108 -Node: Menus-Footnotes164045 -Ref: Menus-Footnote-1164103 -Node: Menu Location164396 -Node: Writing a Menu166073 -Node: Menu Parts167037 -Node: Less Cluttered Menu Entry168193 -Node: Menu Example168816 -Node: Other Info Files170335 -Node: Cross References172201 -Node: References173156 -Node: Cross Reference Commands174903 -Node: Cross Reference Parts175960 -Node: xref178794 -Node: Reference Syntax179591 -Node: One Argument181245 -Node: Two Arguments182255 -Node: Three Arguments183368 -Node: Four and Five Arguments185757 -Node: Top Node Naming188167 -Node: ref189175 -Node: pxref190565 -Node: inforef192945 -Node: uref194236 -Node: Marking Text195233 -Node: Indicating195855 -Node: Useful Highlighting197758 -Node: code199148 -Node: kbd202184 -Node: key204052 -Node: samp205383 -Node: var206968 -Node: file208759 -Node: dfn209364 -Node: cite210272 -Node: url210724 -Node: email211286 -Node: Emphasis212096 -Node: emph & strong212994 -Node: Smallcaps213978 -Node: Fonts215301 -Node: Customized Highlighting216387 -Node: Customized Highlighting-Footnotes219200 -Ref: Customized Highlighting-Footnote-1219294 -Node: Quotations and Examples219420 -Node: Block Enclosing Commands221040 -Node: quotation223063 -Node: example224151 -Node: noindent226204 -Node: Lisp Example227666 -Node: Lisp Example-Footnotes228366 -Ref: Lisp Example-Footnote-1228438 -Node: smallexample & smalllisp228556 -Node: display230579 -Node: format231209 -Node: exdent231668 -Node: flushleft & flushright232746 -Node: cartouche234010 -Node: Lists and Tables234775 -Node: Introducing Lists235449 -Node: itemize237114 -Node: enumerate239258 -Node: Two-column Tables241757 -Node: table242444 -Node: ftable vtable244875 -Node: itemx245974 -Node: Multi-column Tables246983 -Node: Multitable Column Widths247652 -Node: Multitable Rows249104 -Node: Indices250883 -Node: Index Entries252031 -Node: Predefined Indices253162 -Node: Indexing Commands254157 -Node: Combining Indices258695 -Node: syncodeindex260056 -Node: synindex261716 -Node: New Indices262239 -Node: Insertions264062 -Node: Braces Atsigns265244 -Node: Inserting An Atsign265794 -Node: Inserting Braces266066 -Node: Inserting Space266427 -Node: Not Ending a Sentence266929 -Node: Ending a Sentence268281 -Node: Multiple Spaces269407 -Node: dmn270624 -Node: Inserting Accents271829 -Node: Dots Bullets273584 -Node: dots274404 -Node: bullet274926 -Node: TeX and copyright275321 -Node: tex275886 -Node: copyright symbol276301 -Node: pounds276559 -Node: minus276920 -Node: math277840 -Node: Glyphs278565 -Node: Glyphs Summary279676 -Node: result280302 -Node: expansion280785 -Node: Print Glyph281739 -Node: Error Glyph282614 -Node: Equivalence283445 -Node: Point Glyph284131 -Node: Images285686 -Node: Breaks287351 -Node: Break Commands288780 -Node: Line Breaks289621 -Node: - and hyphenation290637 -Node: w291885 -Node: sp292596 -Node: page293003 -Node: group293378 -Node: need295120 -Node: Definition Commands295848 -Node: Def Cmd Template297417 -Node: Optional Arguments300413 -Node: deffnx301999 -Node: Def Cmds in Detail302952 -Node: Functions Commands304060 -Node: Variables Commands307063 -Node: Typed Functions309147 -Node: Typed Variables312688 -Node: Abstract Objects314669 -Node: Data Types319893 -Node: Def Cmd Conventions321146 -Node: Sample Function Definition321707 -Node: Footnotes324590 -Node: Footnotes-Footnotes324976 -Ref: Footnotes-Footnote-1325042 -Node: Footnote Commands325322 -Node: Footnote Commands-Footnotes326817 -Ref: Footnote Commands-Footnote-1326899 -Node: Footnote Styles326935 -Node: Conditionals329519 -Node: Conditional Commands330328 -Node: Conditional Not Commands331821 -Node: Raw Formatter Commands332564 -Node: set clear value334392 -Node: ifset ifclear335191 -Node: value338369 -Node: value Example339779 -Node: Macros341355 -Node: Defining Macros342058 -Node: Invoking Macros343145 -Node: Format/Print Hardcopy344249 -Node: Use TeX346084 -Node: Format with tex/texindex346712 -Node: Format with texi2dvi350351 -Node: Print with lpr350940 -Node: Within Emacs351792 -Node: Texinfo Mode Printing352709 -Node: Compile-Command356117 -Node: Requirements Summary357003 -Node: Preparing for TeX358314 -Node: Overfull hboxes361101 -Node: smallbook362658 -Node: A4 Paper364174 -Node: Cropmarks and Magnification365397 -Node: Create an Info File367336 -Node: makeinfo advantages368637 -Node: Invoking makeinfo369553 -Node: makeinfo options370239 -Node: Pointer Validation375722 -Node: makeinfo in Emacs377064 -Node: texinfo-format commands379620 -Node: Batch Formatting380891 -Node: Tag and Split Files382105 -Node: Install an Info File385457 -Node: Directory file386273 -Node: New Info File388141 -Node: Other Info Directories389200 -Node: Installing Dir Entries392413 -Node: Invoking install-info394405 -Node: Command List396819 -Node: Tips434787 -Node: Sample Texinfo File446174 -Node: Sample Permissions448291 -Node: Inserting Permissions449332 -Node: ifinfo Permissions451638 -Node: Titlepage Permissions453257 -Node: Include Files454517 -Node: Using Include Files455602 -Node: texinfo-multiple-files-update457555 -Node: Include File Requirements459914 -Node: Sample Include File461157 -Node: Include Files Evolution462674 -Node: Headings464643 -Node: Headings Introduced465278 -Node: Heading Format467166 -Node: Heading Choice469616 -Node: Custom Headings470986 -Node: Catching Mistakes475312 -Node: makeinfo Preferred476599 -Node: Debugging with Info477504 -Node: Debugging with TeX480848 -Node: Using texinfo-show-structure485126 -Node: Using occur488223 -Node: Running Info-Validate489758 -Node: Using Info-validate490817 -Node: Unsplit492657 -Node: Tagifying493701 -Node: Splitting494551 -Node: Refilling Paragraphs496165 -Node: Refilling Paragraphs-Footnotes497817 -Ref: Refilling Paragraphs-Footnote-1497905 -Node: Command Syntax498068 -Node: Obtaining TeX501023 -Node: Command and Variable Index503134 -Node: Concept Index518984 +Node: Overview-Footnotes27231 +Ref: Overview-Footnote-127295 +Node: Using Texinfo27767 +Node: Info Files30254 +Node: Info Files-Footnotes34296 +Ref: Info Files-Footnote-134364 +Node: Printed Books34543 +Node: Printed Books-Footnotes37220 +Ref: Printed Books-Footnote-137294 +Node: Formatting Commands37504 +Node: Formatting Commands-Footnotes40337 +Ref: Formatting Commands-Footnote-140423 +Node: Conventions41039 +Node: Comments43607 +Node: Minimum45039 +Node: Six Parts47231 +Node: Short Sample48749 +Node: Acknowledgements52839 +Node: Texinfo Mode53680 +Node: Texinfo Mode Overview55055 +Node: Emacs Editing55831 +Node: Inserting57967 +Node: Showing the Structure62254 +Node: Updating Nodes and Menus64787 +Node: Updating Commands65866 +Node: Updating Requirements71927 +Node: Other Updating Commands74234 +Node: Info Formatting77512 +Node: Printing78776 +Node: Texinfo Mode Summary81127 +Node: Beginning a File85836 +Node: Four Parts86729 +Node: Sample Beginning88199 +Node: Header89760 +Node: First Line91118 +Node: Start of Header92117 +Node: setfilename92840 +Node: settitle94786 +Node: setchapternewpage96686 +Node: paragraphindent99457 +Node: End of Header100949 +Node: Info Summary and Permissions101798 +Node: Titlepage & Copyright Page102823 +Node: titlepage104435 +Node: titlepage-Footnotes106727 +Ref: titlepage-Footnote-1106793 +Node: titlefont center sp107067 +Node: title subtitle author108303 +Node: Copyright & Permissions110585 +Node: end titlepage112596 +Node: headings on off114312 +Node: The Top Node116367 +Node: Title of Top Node117528 +Node: Master Menu Parts118760 +Node: Software Copying Permissions120982 +Node: Ending a File122156 +Node: Printing Indices & Menus122996 +Node: Contents125290 +Node: File End127636 +Node: Structuring128315 +Node: Tree Structuring129974 +Node: Structuring Command Types131423 +Node: makeinfo top133751 +Node: chapter134290 +Node: unnumbered & appendix135320 +Node: majorheading & chapheading136165 +Node: section136992 +Node: unnumberedsec appendixsec heading137762 +Node: subsection138759 +Node: unnumberedsubsec appendixsubsec subheading139337 +Node: subsubsection140298 +Node: Raise/lower sections141856 +Node: Nodes143989 +Node: Two Paths144928 +Node: Node Menu Illustration146214 +Node: node149915 +Node: Node Names152617 +Node: Writing a Node153693 +Node: Node Line Tips155721 +Node: Node Line Requirements156525 +Node: First Node158136 +Node: makeinfo top command159585 +Node: Top Node Summary160774 +Node: makeinfo Pointer Creation162234 +Node: Menus163487 +Node: Menus-Footnotes164428 +Ref: Menus-Footnote-1164486 +Node: Menu Location164779 +Node: Writing a Menu166451 +Node: Menu Parts167418 +Node: Less Cluttered Menu Entry168582 +Node: Menu Example169213 +Node: Other Info Files170725 +Node: Cross References172599 +Node: References173558 +Node: Cross Reference Commands175305 +Node: Cross Reference Parts176370 +Node: xref179212 +Node: Reference Syntax180017 +Node: One Argument181671 +Node: Two Arguments182693 +Node: Three Arguments183818 +Node: Four and Five Arguments186219 +Node: Top Node Naming188641 +Node: ref189657 +Node: pxref191055 +Node: inforef193443 +Node: uref194742 +Node: Marking Text195747 +Node: Indicating196373 +Node: Useful Highlighting198284 +Node: code199674 +Node: kbd202722 +Node: key204603 +Node: samp205947 +Node: var207544 +Node: file209347 +Node: dfn209964 +Node: cite210884 +Node: url211348 +Node: email211922 +Node: Emphasis212747 +Node: emph & strong213653 +Node: Smallcaps214649 +Node: Fonts215984 +Node: Customized Highlighting217082 +Node: Customized Highlighting-Footnotes219907 +Ref: Customized Highlighting-Footnote-1220001 +Node: Quotations and Examples220127 +Node: Block Enclosing Commands221755 +Node: quotation223788 +Node: example224886 +Node: noindent226944 +Node: Lisp Example228400 +Node: Lisp Example-Footnotes229110 +Ref: Lisp Example-Footnote-1229182 +Node: smallexample & smalllisp229300 +Node: display231333 +Node: format231973 +Node: exdent232442 +Node: flushleft & flushright233530 +Node: cartouche234806 +Node: Lists and Tables235583 +Node: Introducing Lists236263 +Node: itemize237930 +Node: enumerate240066 +Node: Two-column Tables242560 +Node: table243257 +Node: ftable vtable245685 +Node: itemx246798 +Node: Multi-column Tables247821 +Node: Multitable Column Widths248500 +Node: Multitable Rows249966 +Node: Indices251759 +Node: Index Entries252913 +Node: Predefined Indices254054 +Node: Indexing Commands255059 +Node: Combining Indices259609 +Node: syncodeindex260980 +Node: synindex262656 +Node: New Indices263193 +Node: Insertions265021 +Node: Braces Atsigns266209 +Node: Inserting An Atsign266769 +Node: Inserting Braces267055 +Node: Inserting Space267430 +Node: Not Ending a Sentence267942 +Node: Ending a Sentence269308 +Node: Multiple Spaces270448 +Node: dmn271679 +Node: Inserting Accents272898 +Node: Dots Bullets274663 +Node: dots275493 +Node: bullet276029 +Node: TeX and copyright276438 +Node: tex277013 +Node: copyright symbol277442 +Node: pounds277714 +Node: minus278085 +Node: math279003 +Node: Glyphs279738 +Node: Glyphs Summary280859 +Node: result281485 +Node: expansion281982 +Node: Print Glyph282950 +Node: Error Glyph283839 +Node: Equivalence284684 +Node: Point Glyph285384 +Node: Images286948 +Node: Breaks288625 +Node: Break Commands290060 +Node: Line Breaks290901 +Node: - and hyphenation291927 +Node: w293184 +Node: sp293905 +Node: page294322 +Node: group294707 +Node: need296459 +Node: Definition Commands297197 +Node: Def Cmd Template298772 +Node: Optional Arguments301780 +Node: deffnx303377 +Node: Def Cmds in Detail304342 +Node: Functions Commands305460 +Node: Variables Commands308476 +Node: Typed Functions310574 +Node: Typed Variables314129 +Node: Abstract Objects316124 +Node: Data Types321362 +Node: Def Cmd Conventions322629 +Node: Sample Function Definition323200 +Node: Footnotes326054 +Node: Footnotes-Footnotes326446 +Ref: Footnotes-Footnote-1326512 +Node: Footnote Commands326792 +Node: Footnote Commands-Footnotes328297 +Ref: Footnote Commands-Footnote-1328379 +Node: Footnote Styles328415 +Node: Conditionals330990 +Node: Conditional Commands331805 +Node: Conditional Not Commands333298 +Node: Raw Formatter Commands334052 +Node: set clear value335890 +Node: ifset ifclear336699 +Node: value339877 +Node: value Example341301 +Node: Macros342891 +Node: Defining Macros343600 +Node: Invoking Macros344697 +Node: Format/Print Hardcopy345811 +Node: Use TeX347652 +Node: Format with tex/texindex348280 +Node: Format with texi2dvi351929 +Node: Print with lpr352528 +Node: Within Emacs353390 +Node: Texinfo Mode Printing354317 +Node: Compile-Command357730 +Node: Requirements Summary358626 +Node: Preparing for TeX359947 +Node: Overfull hboxes362744 +Node: smallbook364311 +Node: A4 Paper365839 +Node: Cropmarks and Magnification367074 +Node: Create an Info File369025 +Node: makeinfo advantages370332 +Node: Invoking makeinfo371248 +Node: makeinfo options371944 +Node: Pointer Validation377437 +Node: makeinfo in Emacs378789 +Node: texinfo-format commands381359 +Node: Batch Formatting382644 +Node: Tag and Split Files383868 +Node: Install an Info File387225 +Node: Directory file388047 +Node: New Info File389910 +Node: Other Info Directories390979 +Node: Installing Dir Entries394202 +Node: Invoking install-info396204 +Node: Command List398628 +Node: Tips436618 +Node: Sample Texinfo File447987 +Node: Sample Permissions450046 +Node: Inserting Permissions451109 +Node: ifinfo Permissions453423 +Node: Titlepage Permissions455025 +Node: Include Files456283 +Node: Using Include Files457390 +Node: texinfo-multiple-files-update459351 +Node: Include File Requirements461718 +Node: Sample Include File462969 +Node: Include Files Evolution464454 +Node: Headings466431 +Node: Headings Introduced467088 +Node: Heading Format468976 +Node: Heading Choice471434 +Node: Custom Headings472812 +Node: Catching Mistakes477148 +Node: makeinfo Preferred478457 +Node: Debugging with Info479362 +Node: Debugging with TeX482709 +Node: Using texinfo-show-structure486990 +Node: Using occur490095 +Node: Running Info-Validate491638 +Node: Using Info-validate492705 +Node: Unsplit494557 +Node: Tagifying495615 +Node: Splitting496477 +Node: Refilling Paragraphs498103 +Node: Refilling Paragraphs-Footnotes499777 +Ref: Refilling Paragraphs-Footnote-1499865 +Node: Command Syntax500028 +Node: Obtaining TeX503005 +Node: Command and Variable Index505128 +Node: Concept Index528865  End Tag Table diff --git a/info/texinfo.info-1 b/info/texinfo.info-1 index c45b639..8cd9c48 100644 --- a/info/texinfo.info-1 +++ b/info/texinfo.info-1 @@ -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.  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.  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.  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.  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.  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',  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.  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.  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:  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:  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.  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.  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.  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.  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.  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.)  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  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:  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.  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'.  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.  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.  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.  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:  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:  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.  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.).  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.  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.  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.  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.  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 *'.  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.  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.  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.)  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  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  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.  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.  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.  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.)  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.)  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.  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.)  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.  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.  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.  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::.)  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.  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.  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.  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.  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.)  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.  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.)  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.  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.  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  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.  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.  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.  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.  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.  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:  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:  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.  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.  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.)  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.  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.  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.  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.  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.  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.).  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.  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.  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.)  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.  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.  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.)  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.)  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.  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.  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.  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:  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  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.  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):  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.  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.  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:  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.)  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  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:  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.)  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  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.  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.)  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:  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 . Send suggestions to the same place .  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.  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.  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  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.  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  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.  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.)  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  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  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  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.  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.  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.  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.  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.  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  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.  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:  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:  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'.  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.)  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.  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.)  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.  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.  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  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.  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.  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::.  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::.)  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'.  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.  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.  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::).  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.  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.  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 @@  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 @}  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.  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".)  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.  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  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::.  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.  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.)  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) ....  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.)  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.  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.  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)'.  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.  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.)  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 `$'  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-->  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)'".  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.  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:  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:  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)'.  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'.  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'.  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.  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.  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:  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  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.  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.  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.  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).  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:: - -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'. - diff --git a/info/texinfo.info-2 b/info/texinfo.info-2 index cf8eff3..3f2fe6b 100644 --- a/info/texinfo.info-2 +++ b/info/texinfo.info-2 @@ -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.  +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'. + + 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'.  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  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.  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'.  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:  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++.  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  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.  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:  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.  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.  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.  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  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.  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.  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'.  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.)  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  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  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  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.  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::.)  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:  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:  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::.  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.  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):  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.)  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.  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.).  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.  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  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  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:  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.  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.  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.  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'.  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:  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.  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:  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  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::).  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.)  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::.  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.)  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'.  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.  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.  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).  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.  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_init (path) char *path; @@ -3892,8 +3973,8 @@ And Finally ...  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  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.  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.  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:  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:  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.  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  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.  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  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.  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.  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.  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.  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.  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.  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.  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').)  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: @par l.27 - + ? ---------- Buffer: *tex-shell* ---------- @@ -4854,8 +4935,8 @@ Texinfo.)  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.  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.  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.  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.  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.  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.  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.  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.  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.  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 `@'. +[index] * 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)  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 ************* +[index] * 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) diff --git a/info/widget.info b/info/widget.info index 9190fc7..298f536 100644 --- a/info/widget.info +++ b/info/widget.info @@ -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: `' - - 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: `' - - Command: widget-forward &optional count + -- Command: widget-forward &optional count Move point COUNT buttons or editing fields forward. `' - - Command: widget-backward &optional count + -- Command: widget-backward &optional count Move point COUNT buttons or editing fields backward.  @@ -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. and `C-' are bound to `widget-forward' and `widget-backward', respectively. `' 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.  @@ -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.  @@ -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.  @@ -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'.  @@ -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: Top211 Node: Introduction612 Node: User Interface4087 -Node: Programming Example8976 -Node: Setting Up the Buffer13123 -Node: Basic Types14837 -Node: link21042 -Node: url-link21553 -Node: info-link21862 -Node: push-button22150 -Node: editable-field22720 -Node: text24200 -Node: menu-choice24495 -Node: radio-button-choice25345 -Node: item26909 -Node: choice-item27294 -Node: toggle27789 -Node: checkbox28523 -Node: checklist28826 -Node: editable-list30267 -Node: group31447 -Node: Sexp Types31733 -Node: constants32043 -Node: generic33114 -Node: atoms33644 -Node: composite35588 -Node: Widget Properties38055 -Node: Defining New Widgets41117 -Node: Widget Browser49281 -Node: Widget Minor Mode50136 -Node: Utilities50690 -Node: Widget Wishlist51171 -Node: Widget Internals52892 +Node: Programming Example8943 +Node: Setting Up the Buffer13075 +Node: Basic Types14795 +Node: link21005 +Node: url-link21518 +Node: info-link21827 +Node: push-button22115 +Node: editable-field22687 +Node: text24167 +Node: menu-choice24462 +Node: radio-button-choice25312 +Node: item26877 +Node: choice-item27262 +Node: toggle27757 +Node: checkbox28491 +Node: checklist28794 +Node: editable-list30235 +Node: group31415 +Node: Sexp Types31701 +Node: constants32011 +Node: generic33085 +Node: atoms33616 +Node: composite35571 +Node: Widget Properties38044 +Node: Defining New Widgets41102 +Node: Widget Browser49277 +Node: Widget Minor Mode50135 +Node: Utilities50691 +Node: Widget Wishlist51174 +Node: Widget Internals52895  End Tag Table diff --git a/info/xemacs-faq.info b/info/xemacs-faq.info index d8c7476..d8338d7 100644 --- a/info/xemacs-faq.info +++ b/info/xemacs-faq.info @@ -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  -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. - - -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 -, who started it, after getting tired -of hearing JWZ complain about repeatedly having to answer questions. -Ben Wing and 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 version was converted to hypertext format, and edited by -Steven L. Baur . It was converted back to texinfo by -Hrvoje Niksic . The FAQ was then maintained by -Andreas Kaempf , 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 . 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? - - -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. - - -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. - - -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/' - - -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. - - - -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 - and . - - -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 which is available. It can be -subscribed to via the Mailman Web interface or by sending mail to to - 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 -address or the Web interface. Send a message with a subject of -`unsubscribe' to be removed. - - -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' - - -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'. - - -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. - - -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::. - - -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 -. 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'. - - -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 , did the -port of GNU Emacs to NeXTstep and expressed interest in doing the -XEmacs port, but never went any farther. - - -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 is working on it. - - -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'. - - -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 -. - - 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. - - -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 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. - - -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 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 :) - - -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 - - * Stephen Turnbull - - * Ben Wing - - * Hrvoje Niksic - - - The developers responsible for older releases were: - - * Steve Baur - - * Chuck Thompson - - * Jamie Zawinski - - * Richard Mlynarik - - 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. - - -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 - - * Hrvoje Niksic - - * Aki Vehtari - - - -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 - - * Georges Brun-Cottan - - * Richard Caley - - * Richard Cognot - - * Mark Daku - - * William G. Dubuque - - * Eric Eide - - * Alain Fauconnet - - * Chris Flatters - - * Evelyn Ginsparg - - * Marty Hall - - * Darrell Kindred - - * David Moore - - * Arup Mukherjee - - * Juergen Nickelsen - - * Kevin R. Powell - - * Justin Sheehy - - * Stig - - * Aki Vehtari - - -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. - - -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 - 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::. - - -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. - - -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. - - -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 -. - - -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 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 - ) - - -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 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 `russian.el' - which can be obtained from - - `http://www.math.uga.edu/~valery/russian.el'. - - Dima Barsky writes: - - There is another cyrillic mode for both GNU Emacs and XEmacs by - Dmitrii (Mitya) Manin at - `http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el'. - - Rebecca Ore writes: - - The fullest resource I found on Russian language use (in and out of - XEmacs) is `http://www.ibiblio.org/sergei/Software/Software.html' - - -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). - - -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. - - -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 '. - - -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. - - -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 . - - -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'. - - -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. - - -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. - - -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! - - -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. - - -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'. - - -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/'. - - -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 writes: - - Your ncurses configuration is messed up. Your /usr/lib/terminfo - is a bad pointer, perhaps to a CD-ROM that is not inserted. - - -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. - - -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. - - -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' - - -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 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 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. - - -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 - , 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. - - -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. - - -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 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. - - -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 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 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 - - -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_. - - -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 | 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. - - -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 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. - - -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 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. - - -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 . -_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 . 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'. - - -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. - - -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 - `/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. - - -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. - - -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. - - -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. - - -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 - - -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 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 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. - - -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. - - -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 - - -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 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 ... - - Kyle Jones 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. - - -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 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. - - -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 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 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 writes: - - I had a few problems with 10.10. Apparently, some of them were - solved by forcing a static link of libc (manually). - - -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 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 writes: - - On some (but _not_ all) machines a hung XEmacs can be revived by - `kill -FPE '. 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. - - -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. - - - -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. - - -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. - - -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 . - - -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. - - -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. - - -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] -------------------------------------------------- - - -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 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. - - -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 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 - - -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. - - -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::). - - -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? - - -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)) - - -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. - - -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. - - -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 writes: - - To add directories using Unix shell metacharacters use - `expand-file-name' like this: - - (push (expand-file-name "~keithh/.emacsdir") load-path) - - -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. - - -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. - - -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 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) - - -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 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. - - -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' - - -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. - - -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") - .... - ) - - -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] ------------------------------------------------- - - -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] ------------------------------------------------- - - -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") - - -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. - - -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"))) - - -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 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... - - -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 - - -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.) - - -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") - - -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. - - -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)) - - -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 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'. - - - -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::. - - -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) - - -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 editing-basics '. - - -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. - - -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 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) - - -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. - - -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. - - -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::. - - -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::). - - -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. - - -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 and -Wayne Newberry ) 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). - - -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::. - - -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 windows '. - - -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:'. - - -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 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- - 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::. - - -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. - - -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 editing-basics '. - - Also see *Note Q3.5.4::. - - -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 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. - - -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-' to forward-word: - - Sam Steingold 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-") 'forward-word) - - -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 display '. - - You can use a color to make it stand out better: - - Emacs*cursorColor: Red - - -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 display '. - - -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. - - -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) - - -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) - - -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. - - -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) - - -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). - - -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 -'. - - 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 mouse '. - - -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 mouse '. - - mouse-track-do-rectangle: (event) - -- an interactive compiled Lisp function. - Like `mouse-track' but selects rectangles instead of regions. - - -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. - - -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) - - -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. - - -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 buffers-menu '. - - -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 - - -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 for the correct code. - - -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)) - - -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. - - -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. - - -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. - - -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 editing-basics '. - - To change the face for selection, look at `Options->Customize' on -the menubar. - - -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. - - -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 isearch-highlight '. - - 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. - - -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::. - - -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 for assistance in deriving -this answer. - - -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. - - -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? - - -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. - - -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'. - - -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 writes: - - Use the following: - - (setq vm-auto-get-new-mail 60) - - -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. - - -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") - - -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. - - -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. - - -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. 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 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. - - -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. - - -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 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) - - -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 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) - - -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 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. - - -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'. - - -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". - - -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. - - -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/' - - -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. - - -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. - - -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 - , but XEmacs Gnus doesn't use it. Instead it uses - Gail Mara Gurman - 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 writes: - - Set `user-mail-address' to `gail.gurman@sybase.com' or - `mail-host-address' to `sybase.com'. - - -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 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'. - - -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 and -KOBAYASHI Shuhei . - - It is based on the work of UMEDA Masanobu -, 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 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. - - -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 writes: - - It wasn't chown'ed/chmod'd correctly. - - -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 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 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. - - -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 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/'. - - -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 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 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 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'. - - -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)) - - -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 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.) - - -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 -. Use 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 . - - cd - - Ftp to ftp.xemacs.org (Internet Host ID = 128.174.252.16): - - prompt> ftp ftp.xemacs.org - - Login as `anonymous' with your own @ as a -password. - - Name (ftp.xemacs.org): anonymous - 331 Guest login ok, send your complete e-mail address as password. - Password: -@ - 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 -' 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. - - -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 . -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 . - - WWW users may want to check out the AUC TeX page at -`http://sunsite.dk/auctex/'. - - -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/'. - - -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] ------------------------------------------------- - - -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 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 (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. - - -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. - - -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). - - -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. - - -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? - - -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. - - -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. - - -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. - - -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 - fill '. - - 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. - - -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). - - -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 *shell-1* - 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 - - -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. - - -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) - - -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 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. - - -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 - - -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 - - -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 gnuserv '. - - -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. - - -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 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 - - -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 writes: - - This can be had from `http://www.python.org/emacs/'. - - -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) - - -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? - - -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] -------------------------------------------------- - - -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 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::). - - -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 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. - - -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 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 ', -and converts it to the internal key representation of the Emacs you -use. The function is available both on XEmacs and GNU Emacs. - - -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))) - - -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-. ") - => [(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 bar '. - - * 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., `', `', or - `', represents a function key. (Note that in the standard - configuration, the function key `' and the control key - are synonymous.) You can use angle brackets on the - words , , 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-' - == `'. 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: `<>' - is shorthand for `M-x next-line '. - - * 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*' == ` ', 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 `' is a single function key. When in - doubt, use whitespace. - - -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. - - -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 .....)) - - -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 - - -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. - - -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. - - -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)'. - - -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)) - - -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 writes: - - Under XEmacs 20.4 and later you can use `M-x profile-key-sequence', - press a key (say 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. - - -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 sound '. - - -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) - - -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". - - -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 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. - - -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. - - -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. - - -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. - - -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. - - -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. - - -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. - - -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. - - -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)) - - -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 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 m Abbrevs - '), and then come back and read this question/answer again. - - Starting with XEmacs 20.3 this restriction has been lifted. - - -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: ") - - 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 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 - - -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 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. - - -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. - - -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" - - -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 - 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. - - -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. - - -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. - - -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. - - -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. - - -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. - - -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.) - - -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. - - -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. - - -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'. - - -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 - .) - - * Other problems are listed in the `PROBLEMS' file, in the top-level - directory of the XEmacs sources. - - - -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'. - - -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'. - - -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. - - -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. - - -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") - - -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. - - -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: - - - DDE Application Not Running: - - - Topic: - - -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'. - - -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. - - -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. - - -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. - - - -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.) - - -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). - - -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::. - - -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. - - -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! - - -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? - - -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. - - -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. - - -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 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. - - - -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. - - -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. - - -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. - - -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. - - -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 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 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  Tag Table: +(Indirect) Node: Top205 -Node: Introduction18020 -Node: Q1.0.121577 -Node: Q1.0.222578 -Node: Q1.0.323120 -Node: Q1.0.423379 -Node: Q1.0.524768 -Node: Q1.0.625454 -Node: Q1.0.726556 -Node: Q1.0.826801 -Node: Q1.0.927013 -Node: Q1.0.1027295 -Node: Q1.0.1127624 -Node: Q1.0.1228345 -Node: Q1.0.1328710 -Node: Q1.0.1428956 -Node: Q1.1.129464 -Node: Q1.1.230503 -Node: Q1.1.330893 -Node: Q1.2.131841 -Node: Q1.2.232988 -Node: Q1.2.333419 -Node: Q1.3.134500 -Node: Q1.3.235308 -Node: Q1.3.335910 -Node: Q1.3.436488 -Node: Q1.3.537281 -Node: Q1.3.641962 -Node: Q1.3.744512 -Node: Q1.3.845433 -Node: Q1.3.946426 -Node: Q1.4.147561 -Node: Q1.4.249309 -Node: Q1.4.349677 -Node: Q1.4.450093 -Node: Q1.4.551630 -Node: Q1.4.651931 -Node: Installation52921 -Node: Q2.0.155609 -Node: Q2.0.256406 -Node: Q2.0.357925 -Node: Q2.0.459220 -Node: Q2.0.559809 -Node: Q2.0.660154 -Node: Q2.0.760762 -Node: Q2.0.861140 -Node: Q2.0.962714 -Node: Q2.0.1064325 -Node: Q2.0.1165166 -Node: Q2.0.1266104 -Node: Q2.0.1367625 -Node: Q2.0.1468099 -Node: Q2.0.1569143 -Node: Q2.0.1669816 -Node: Q2.1.170643 -Node: Q2.1.274829 -Node: Q2.1.376056 -Node: Q2.1.477350 -Node: Q2.1.578146 -Node: Q2.1.678507 -Node: Q2.1.778980 -Node: Q2.1.879330 -Node: Q2.1.980861 -Node: Q2.1.1081299 -Node: Q2.1.1182053 -Node: Q2.1.1282916 -Node: Q2.1.1383868 -Node: Q2.1.1484896 -Node: Q2.1.1586004 -Node: Q2.1.1693822 -Node: Q2.1.1794513 -Node: Q2.1.1895107 -Node: Q2.1.1995496 -Node: Q2.1.2096032 -Node: Q2.1.2196411 -Node: Q2.1.2296604 -Node: Q2.1.2397898 -Node: Q2.1.2498563 -Node: Q2.1.2599020 -Node: Customization99636 -Node: Q3.0.1104582 -Node: Q3.0.2105375 -Node: Q3.0.3105807 -Node: Q3.0.4106231 -Node: Q3.0.5107061 -Node: Q3.0.6107839 -Node: Q3.0.7108416 -Node: Q3.0.8108996 -Node: Q3.0.9109951 -Node: Q3.1.1110509 -Node: Q3.1.2111297 -Node: Q3.1.3111725 -Node: Q3.1.4111914 -Node: Q3.1.5112103 -Node: Q3.1.6112494 -Node: Q3.1.7113210 -Node: Q3.1.8115431 -Node: Q3.2.1115970 -Node: Q3.2.2117651 -Node: Q3.2.3118631 -Node: Q3.2.4119241 -Node: Q3.2.5119943 -Node: Q3.2.6120407 -Node: Q3.2.7121329 -Node: Q3.3.1122567 -Node: Q3.3.2122826 -Node: Q3.3.3123486 -Node: Q3.3.4123874 -Node: Q3.3.5124665 -Node: Q3.4.1126143 -Node: Q3.4.2126717 -Node: Q3.5.1127113 -Node: Q3.5.2128559 -Node: Q3.5.3128984 -Node: Q3.5.4129819 -Node: Q3.5.5130422 -Node: Q3.5.6131570 -Node: Q3.5.7132551 -Node: Q3.5.8134055 -Node: Q3.5.9134297 -Node: Q3.5.10135089 -Node: Q3.5.11135722 -Node: Q3.6.1136272 -Node: Q3.6.2137025 -Node: Q3.6.3137464 -Node: Q3.7.1137880 -Node: Q3.7.2138765 -Node: Q3.7.3139421 -Node: Q3.7.4139840 -Node: Q3.7.5140180 -Node: Q3.7.6140645 -Node: Q3.7.7141379 -Node: Q3.7.8142406 -Node: Q3.8.1142822 -Node: Q3.8.2143118 -Node: Q3.8.3143539 -Node: Q3.8.4144163 -Node: Q3.8.5145422 -Node: Q3.9.1146204 -Node: Q3.9.2147001 -Node: Q3.9.3147596 -Node: Q3.9.4148255 -Node: Q3.10.1148965 -Node: Q3.10.2149801 -Node: Q3.10.3150813 -Node: Q3.10.4151548 -Node: Q3.10.5151932 -Node: Q3.10.6152997 -Node: Subsystems156030 -Node: Q4.0.1158563 -Node: Q4.0.2159085 -Node: Q4.0.3159640 -Node: Q4.0.4159958 -Node: Q4.0.5160197 -Node: Q4.0.6160428 -Node: Q4.0.7161013 -Node: Q4.0.8161331 -Node: Q4.0.9162555 -Node: Q4.0.10164590 -Node: Q4.0.11165076 -Node: Q4.0.12165951 -Node: Q4.1.1166931 -Node: Q4.1.2167331 -Node: Q4.1.3167655 -Node: Q4.2.1167961 -Node: Q4.2.2168587 -Node: Q4.2.3168824 -Node: Q4.2.4169365 -Node: Q4.3.1170015 -Node: Q4.3.2170596 -Node: Q4.3.3172297 -Node: Q4.3.4172566 -Node: Q4.3.5173240 -Node: Q4.4.1173865 -Node: Q4.4.2175348 -Node: Q4.5.1176549 -Node: Q4.6.1177316 -Node: Q4.7.1182430 -Node: Q4.7.2183374 -Node: Q4.7.3183668 -Node: Q4.7.4183854 -Node: Q4.7.5184735 -Node: Q4.7.6186373 -Node: Q4.7.7186674 -Node: Miscellaneous187543 -Node: Q5.0.1190959 -Node: Q5.0.2191691 -Node: Q5.0.3192552 -Node: Q5.0.4192960 -Node: Q5.0.5194248 -Node: Q5.0.6196235 -Node: Q5.0.7196889 -Node: Q5.0.8197491 -Node: Q5.0.9198017 -Node: Q5.0.10198548 -Node: Q5.0.11198793 -Node: Q5.0.12199039 -Node: Q5.0.13199963 -Node: Q5.0.14200654 -Node: Q5.0.15201416 -Node: Q5.0.16201710 -Node: Q5.0.17202229 -Node: Q5.0.18202546 -Node: Q5.0.19202740 -Node: Q5.0.20203161 -Node: Q5.1.1204074 -Node: Q5.1.2206140 -Node: Q5.1.3206873 -Node: Q5.1.4210265 -Node: Q5.1.5210797 -Node: Q5.1.6212921 -Node: Q5.1.7214404 -Node: Q5.1.8215994 -Node: Q5.1.9216543 -Node: Q5.1.10217425 -Node: Q5.1.11218553 -Node: Q5.2.1219098 -Node: Q5.2.2219686 -Node: Q5.2.3220027 -Node: Q5.2.4220259 -Node: Q5.3.1221167 -Node: Q5.3.2222395 -Node: Q5.3.3222637 -Node: Q5.3.4223196 -Node: Q5.3.5223870 -Node: Q5.3.6224736 -Node: Q5.3.7224978 -Node: Q5.3.8227165 -Node: Q5.3.9227409 -Node: Q5.3.10228359 -Node: Q5.3.11230440 -Node: Q5.3.12232028 -Node: MS Windows233299 -Node: Q6.0.1235483 -Node: Q6.0.2236476 -Node: Q6.0.3237171 -Node: Q6.0.4237606 -Node: Q6.0.5237987 -Node: Q6.0.6238724 -Node: Q6.0.7242055 -Node: Q6.1.1243528 -Node: Q6.1.2244186 -Node: Q6.1.3244457 -Node: Q6.1.4245391 -Node: Q6.1.5246864 -Node: Q6.1.6247698 -Node: Q6.1.7248739 -Node: Q6.2.1249404 -Node: Q6.2.2250867 -Node: Q6.2.3251315 -Node: Q6.2.4252017 -Node: Q6.2.5253732 -Node: Q6.3.1254177 -Node: Q6.3.2255440 -Node: Q6.3.3258620 -Node: Q6.3.4261583 -Node: Q6.4.1262081 -Node: Q6.4.2263284 -Node: Q6.4.3263785 -Node: Current Events264594 -Node: Q7.0.1265739 -Node: Q7.0.2265984 -Node: Q7.0.3270859 -Node: Q7.0.4276626 -Node: Q7.0.5276851 -Node: Q7.0.6277933 -Node: Legacy Versions278623 -Node: Q8.0.1279281 +Node: Introduction18047 +Node: Q1.0.123078 +Node: Q1.0.224055 +Node: Q1.0.324774 +Node: Q1.0.424986 +Node: Q1.0.525267 +Node: Q1.0.631317 +Node: Q1.1.132501 +Node: Q1.1.233187 +Node: Q1.1.334033 +Node: Q1.1.434737 +Node: Q1.2.135334 +Node: Q1.2.235679 +Node: Q1.2.338247 +Node: Q1.2.439654 +Node: Q1.2.540037 +Node: Q1.2.643359 +Node: Q1.2.746457 +Node: Q1.2.847845 +Node: Q1.2.948581 +Node: Q1.2.1049104 +Node: Q1.2.1149363 +Node: Q1.2.1249728 +Node: Q1.3.150100 +Node: Q1.3.251760 +Node: Q1.3.352446 +Node: Q1.3.452787 +Node: Q1.3.553215 +Node: Q1.3.654752 +Node: Q1.3.755053 +Node: Q1.3.856058 +Node: Q1.4.156594 +Node: Q1.4.257696 +Node: Q1.4.362221 +Node: Q1.4.462466 +Node: Q1.4.562777 +Node: Q1.5.164416 +Node: Q1.5.265429 +Node: Q1.5.365819 +Node: Q1.5.467307 +Node: Q1.5.573179 +Node: Q1.6.175050 +Node: Q1.6.275487 +Node: Q1.6.383356 +Node: Q1.6.484547 +Node: Q1.6.585852 +Node: Q1.6.687997 +Node: Q1.7.192831 +Node: Q1.7.293598 +Node: Q1.7.3101712 +Node: Q1.7.4102187 +Node: Q1.8.1102867 +Node: Q1.8.2103624 +Node: Q1.8.3104256 +Node: Q1.8.4104984 +Node: Q1.8.5105777 +Node: Q1.8.6110458 +Node: Q1.8.7113008 +Node: Q1.8.8113929 +Node: Q1.8.9115117 +Node: Installation116237 +Node: Q2.0.1119241 +Node: Q2.0.2119863 +Node: Q2.0.3120510 +Node: Q2.0.4121375 +Node: Q2.0.5122133 +Node: Q2.1.1123705 +Node: Q2.1.2126885 +Node: Q2.1.3128199 +Node: Q2.1.4130455 +Node: Q2.1.5131097 +Node: Q2.1.6131866 +Node: Q2.1.7134136 +Node: Q2.2.1134935 +Node: Q2.2.2135783 +Node: Q2.3.1137402 +Node: Q2.3.2138927 +Node: Q2.3.3139541 +Node: Q2.3.4139814 +Node: Q2.3.5140723 +Node: Q2.3.6142171 +Node: Q2.3.7143115 +Node: Q2.3.8143864 +Node: Q2.4.1144762 +Node: Q2.4.2146210 +Node: Q2.4.3151918 +Node: Q2.4.4152793 +Node: Q2.4.5163084 +Node: Q2.4.6164441 +Node: Q2.4.7165759 +Node: Q2.4.8167972 +Node: Q2.4.9169144 +Node: Q2.4.10170199 +Node: Q2.4.11171245 +Node: Q2.4.12171712 +Node: Q2.5.1172446 +Node: Q2.5.2172808 +Node: Q2.5.3173827 +Node: Q2.5.4174277 +Node: Q2.5.5175073 +Node: Q2.5.6175818 +Node: Editing178768 +Node: Q3.0.1181003 +Node: Q3.0.2181189 +Node: Q3.0.3182628 +Node: Q3.0.4183501 +Node: Q3.0.5184063 +Node: Q3.0.6185038 +Node: Q3.0.7186574 +Node: Q3.0.8187197 +Node: Q3.0.9187737 +Node: Q3.0.10188083 +Node: Q3.0.11188598 +Node: Q3.1.1189139 +Node: Q3.1.2189954 +Node: Q3.1.3190604 +Node: Q3.1.4191017 +Node: Q3.1.5191351 +Node: Q3.2.1192100 +Node: Q3.2.2194281 +Node: Q3.2.3194519 +Node: Q3.2.4195468 +Node: Q3.2.5196732 +Node: Q3.3.1198752 +Node: Q3.3.2199748 +Node: Q3.3.3200506 +Node: Q3.3.4201549 +Node: Q3.3.5202238 +Node: Q3.3.6205276 +Node: Q3.4.1205737 +Node: Q3.4.2206583 +Node: Display207382 +Node: Q4.0.1210335 +Node: Q4.0.2210774 +Node: Q4.0.3211768 +Node: Q4.0.4213359 +Node: Q4.0.5213954 +Node: Q4.0.6214650 +Node: Q4.0.7215108 +Node: Q4.0.8216024 +Node: Q4.0.9217305 +Node: Q4.1.1217939 +Node: Q4.1.2218598 +Node: Q4.2.1219028 +Node: Q4.2.2219244 +Node: Q4.2.3219889 +Node: Q4.2.4220262 +Node: Q4.3.1221745 +Node: Q4.3.2222433 +Node: Q4.3.3222841 +Node: Q4.4.1223273 +Node: Q4.4.2223484 +Node: Q4.4.3223886 +Node: Q4.4.4224135 +Node: Q4.4.5224719 +Node: Q4.5.1226007 +Node: Q4.5.2226190 +Node: Q4.5.3226373 +Node: Q4.5.4226912 +Node: Q4.6.1227826 +Node: Q4.6.2228561 +Node: Q4.6.3228754 +Node: Q4.6.4229324 +Node: Q4.6.5229977 +Node: Q4.6.6230511 +Node: Q4.6.7231214 +Node: Q4.7.1231810 +Node: Q4.7.2231997 +Node: Q4.7.3232186 +Node: Q4.7.4232385 +Node: External Subsystems232581 +Node: Q5.0.1234951 +Node: Q5.0.2235691 +Node: Q5.0.3236125 +Node: Q5.0.4236513 +Node: Q5.0.5237226 +Node: Q5.0.6239453 +Node: Q5.1.1240045 +Node: Q5.1.2241278 +Node: Q5.2.1243005 +Node: Q5.2.2244293 +Node: Q5.2.3244858 +Node: Q5.2.4245529 +Node: Q5.3.1246009 +Node: Q5.3.2246568 +Node: Q5.3.3246906 +Node: Q5.3.4247659 +Node: Q5.4.1248682 +Node: Q5.4.2248865 +Node: Q5.4.3249525 +Node: Q5.4.4250107 +Node: Q5.4.5250870 +Node: Q5.4.6251705 +Node: Q5.5.1252945 +Node: Q5.5.2253466 +Node: Q5.5.3253842 +Node: Q5.5.4254734 +Node: Q5.5.5255417 +Node: Internet256317 +Node: Q6.0.1258198 +Node: Q6.0.2258414 +Node: Q6.0.3261008 +Node: Q6.0.4261237 +Node: Q6.0.5261692 +Node: Q6.0.6262380 +Node: Q6.0.7262895 +Node: Q6.0.8264130 +Node: Q6.0.9266423 +Node: Q6.0.10266831 +Node: Q6.0.11267695 +Node: Q6.1.1269823 +Node: Q6.1.2270287 +Node: Q6.1.3270603 +Node: Q6.1.4271186 +Node: Q6.1.5271502 +Node: Q6.1.6271982 +Node: Q6.2.1273028 +Node: Q6.2.2273549 +Node: Q6.3.1274121 +Node: Q6.3.2275003 +Node: Q6.4.1275200 +Node: Q6.4.2275544 +Node: Q6.4.3275866 +Node: Advanced276155 +Node: Q7.0.1277909 +Node: Q7.0.2278572 +Node: Q7.0.3278999 +Node: Q7.0.4279409 +Node: Q7.0.5280224 +Node: Q7.0.6280997 +Node: Q7.1.1281648 +Node: Q7.1.2283629 +Node: Q7.1.3284352 +Node: Q7.1.4287734 +Node: Q7.1.5288261 +Node: Q7.1.6290380 +Node: Q7.1.7291846 +Node: Q7.1.8293431 +Node: Q7.1.9293979 +Node: Q7.1.10294856 +Node: Q7.1.11295979 +Node: Q7.2.1296596 +Node: Q7.2.2299980 +Node: Q7.2.3300911 +Node: Q7.2.4301324 +Node: Other Packages302172 +Node: Q8.0.1303172 +Node: Q8.0.2303633 +Node: Q8.0.3304690 +Node: Q8.0.4305570 +Node: Q8.1.1306419 +Node: Q8.1.2308061 +Node: Q8.1.3308362 +Node: Q8.2.1308714 +Node: Q8.2.2309783 +Node: Q8.2.3310987 +Node: Q8.2.4311745 +Node: Current Events315563 +Node: Q9.0.1316740 +Node: Q9.0.2316956 +Node: Q9.0.3321833 +Node: Q9.0.4327637 +Node: Q9.0.5327862 +Node: Q9.0.6328944 +Node: Legacy Versions329634 +Node: Q10.0.1330408 +Node: Q10.0.2331355  End Tag Table diff --git a/info/xemacs-faq.info-1 b/info/xemacs-faq.info-1 index 1e6f304..8bed6c0 100644 --- a/info/xemacs-faq.info-1 +++ b/info/xemacs-faq.info-1 @@ -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.  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 , who started it, after getting tired of hearing JWZ complain about repeatedly having to answer questions. -Ben Wing and 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. +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 Steven L. Baur . It was converted back to texinfo by Hrvoje Niksic . The FAQ was then maintained by -Andreas Kaempf , who passed it on to ChristianNyb/o. +Andreas Kaempf , who passed it on to ChristianNyb/o, +and then to Sandra Wambold . + + The current version of the FAQ has been heavily redone by Ben Wing +. If you notice any errors or items which should be added or amended to -this FAQ please send email to Sandra Wambold . Include +this FAQ please send email to . 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? +====================  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.  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.  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'.  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.  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 - and . +CODING +------ - -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 with `subscribe' in the body of -the message. Send to the list at . 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 - -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 - -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 - -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 - -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 - -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 . It's available at -`http://homepage.mac.com/pjarvis/xemacs.html'. + - Extents: initial implementation, someone at Lucid; rewrite, + 1994, Ben Wing - -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 , 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) - -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 is working on it. + - Faces: first implementation, Jamie Zawinski; second, chuck; + third, Ben Wing - -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 . +Device subsystems + - X Windows: Jamie Zawinksi, Ben Wing, others - -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 . + - 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 - -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 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 +------- - -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 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) - -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 + - Steve Youngs currently produces the beta releases (???). - * Steven Turnbull + - Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns + maintaining the packages. - * Ben Wing + - Vin Shelton maintains the stable releases. - * Hrvoje Niksic + - Testing - #### Norbert, Adrian, ??? + Portraits and email of some of the major developers: - The developers responsible for older releases were: + * Andy Piper - * Steve Baur + * Ben Wing * Chuck Thompson - * Jamie Zawinski + * Hrvoje Niksic - * Richard Mlynarik + * Jamie Zawinski - Steve Baur was the primary maintainer for 19.15 through 21.0. + * Martin Buchholz - 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 - 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 + * Steve Baur - 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.  -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 +. + + Previous contributors to the FAQ include * SL Baur * Hrvoje Niksic - * Aki Vehtari - - - -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 * Georges Brun-Cottan @@ -817,190 +829,420 @@ crash some time ago. * Aki Vehtari +1.1: Getting XEmacs +=================== +  -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/').  -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 - 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.  -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/'.  -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 +=============================================  -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 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. + + +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.  -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 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? ------------------------------------------------ + +File: xemacs-faq.info, Node: Q1.2.4, Next: Q1.2.5, Prev: Q1.2.3, Up: Introduction - MORIOKA Tomohiko 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. + +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. + +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 - )  -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? ---------------------------------- + +File: xemacs-faq.info, Node: Q1.2.8, Next: Q1.2.9, Prev: Q1.2.7, Up: Introduction - Ilya Zakharevich 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 `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 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 + (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 at - `http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el'. + +File: xemacs-faq.info, Node: Q1.2.9, Next: Q1.2.10, Prev: Q1.2.8, Up: Introduction - Rebecca Ore 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.) + + +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 was at one point working +on it.  -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 , did the +port of GNU Emacs to NeXTstep and expressed interest in doing the +XEmacs port, but never went any farther. + + +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 +==================== + + +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 '.  -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.  -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. + + +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 .  -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'.  -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.  -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.  -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 +================= + + +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 which is available. It can be +subscribed to via the Mailman Web interface or by sending mail to to + 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 +address or the Web interface. Send a message with a subject of +`unsubscribe' to be removed. + + +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). + + +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' + + +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? + + +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 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 +=========================== + + +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 +. + + 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. + + +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 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. + + +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 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 :) + + +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 + `', to make it easier in case someone picked a different + directory. + + * Package source is in `/package-src'. + + * Installed packages go under `/xemacs-packages', and + `/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 `', e.g.: + + * `/working' (the workspace you're actively working + on, periodically synched up with the latest trunk) + + * `/stable' (for making changes to the stable version + of XEmacs, which sits on a branch) + + * `/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). + + * `/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.). + + * `/latest-stable/' (equivalent to + `/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. + + * `/xemacsweb' is a workspace for working on the XEmacs + web site. + + * `/in-patches' for patches received from email and saved + to files. + + * `/out-patches' for locally-generated patches to be sent + to . Less useful now that the patcher + util has been developed. + + * `/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. + + * `/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. + + +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) +==================================== + + +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'. + + +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 , 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. + + +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.) + + +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. + + +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.) + + +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 and +. + +1.7: External Packages +====================== + + +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. + + +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. + + +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_. + + +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 +========================= + + +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. + + +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 + 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. + + +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. + + +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. + + +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 +. + + +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 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 + ) + + +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 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 `russian.el' + which can be obtained from + + `http://www.math.uga.edu/~valery/russian.el'. + + Dima Barsky writes: + + There is another cyrillic mode for both GNU Emacs and XEmacs by + Dmitrii (Mitya) Manin at + `http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el'. + + Rebecca Ore writes: + + The fullest resource I found on Russian language use (in and out of + XEmacs) is `http://www.ibiblio.org/sergei/Software/Software.html' + + +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). + + +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. + + +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) +===========================  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. + + +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. + + +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. + + +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. + + +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 +========================= + + +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 | 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 ' + + 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. + + +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 + + +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 + + +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. + + +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. + + +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/'. + + +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 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) +================================================================ + + +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 + + +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 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 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) +================================================== + + +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.) + + +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. + + +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. + + +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'. + + +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 + .) + + * Other problems are listed in the `PROBLEMS' file, in the top-level + directory of the XEmacs sources. + + + +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'. + + +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. + + +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 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 +============================ + + +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 +. You can also post to the newsgroup +comp.emacs.xemacs (or equivalentlt, send to the mailing list +), 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," + + +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 +. _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'. + + +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. + + +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. + + + +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. + + +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. + + +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.) + + +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.) + + +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. + + +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.) + + +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 . + + +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 +============================= + + +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. + + +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. + + +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. + + +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. + + +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 + + +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.) + + +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 +================= + + +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. + + +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. + + +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 and +Wayne Newberry ) 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). + + +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) + + +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:'. + + +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 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- + 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. + + +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 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. + + +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-' to forward-word: + + Sam Steingold 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-") 'forward-word) + + +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 + + +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) + + +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 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 +============== + + +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) + + +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) + + +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. + + +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) + + +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 +'. + + 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 mouse '. + +3.2: Buffers, Text Editing +========================== + + +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. + + +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)) + + +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 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. + + +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 + fill '. + + 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. + + +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 +==================== + + +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 mouse '. + + mouse-track-do-rectangle: (event) + -- an interactive compiled Lisp function. + Like `mouse-track' but selects rectangles instead of regions. + + +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 editing-basics '. + + To change the face for selection, look at `Options->Advanced +(Customize)' on the menubar. + + +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. + + +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 isearch-highlight '. + + 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. + + +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. + + +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 +======================== + + +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. + + +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)) + + +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 +============================= + + +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") + + +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.) + + +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 + + +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") + + +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. + + +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)) + + +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 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'. + + + +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. + + +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 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) +==================================== + + +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. + + +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 +================= + + +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) + + +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 editing-basics '. + + +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. + + +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 +=============== + + +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 display '. + + You can use a color to make it stand out better: + + Emacs*cursorColor: Red + + +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 display '. + + +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 +================ + + +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) + + +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. + + +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. + + +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 buffers-menu '. + + +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 +================ + + +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. + + +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. + + +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 for the correct code. + + +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 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 ... + + Kyle Jones 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 +============================= + + +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)) + + +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. + + +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. + + +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. + + +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 windows '. + + +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. + + +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 +=============================================== + + +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. + + +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. + + +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. + + +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. + + +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 +================================== + + +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. + + +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") + .... + ) + + +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") + + +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. + + +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"))) + + +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 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 +====================== + + +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. + + +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: + + + DDE Application Not Running: + + + Topic: + + +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 +============= + + +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. + + +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. + + +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. + + +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 +========== + + +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 sound '. + + +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) + + +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). + + +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 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 +===================================================== + + +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. + + +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 *shell-1* + 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 + + +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. + + +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 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 + + +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! + + +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 +============================ + + +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. + + +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. + + +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 gnuserv '. + + +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. + + +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 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. + + +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 +========================== + + +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. + + +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 *. + (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. + + +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") + + +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. + + +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 + , but XEmacs Gnus doesn't use it. [This should apply to all MUA's. +-ed] Instead it uses + Gail Mara Gurman + 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 writes: + + Set `user-mail-address' to `gail.gurman@sybase.com' or + `mail-host-address' to `sybase.com'. + + +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/'. + + +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. 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 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. + + +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. + + +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. + + +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 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) + + +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: ") + + 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 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 +=========================  -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. + +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 writes: + + Use the following: + + (setq vm-auto-get-new-mail 60) + + +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. + + +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. + + +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 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) + + +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 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 +======================================= + + +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/' + + +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 +=============== + + +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. + + +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 +========================= + + +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'. + + +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". + + +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. + + +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' +============================= + + +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)) + + +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. + + +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. + + +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 writes: + + To add directories using Unix shell metacharacters use + `expand-file-name' like this: + + (push (expand-file-name "~keithh/.emacsdir") load-path) + + +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. + + +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 +====================================== + + +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 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 ', +and converts it to the internal key representation of the Emacs you +use. The function is available both on XEmacs and GNU Emacs. + + +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))) + + +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-. ") + => [(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 bar '. + + * 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., `', `', or + `', represents a function key. (Note that in the standard + configuration, the function key `' and the control key + are synonymous.) You can use angle brackets on the + words , , 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-' + == `'. 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: `<>' + is shorthand for `M-x next-line '. + + * 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*' == ` ', 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 `' is a single function key. When in + doubt, use whitespace. + + +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. + + +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 .....)) + + +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 + + +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. + + +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. + + +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)'. + + +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)) + + +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 writes: + + Under XEmacs 20.4 and later you can use `M-x profile-key-sequence', + press a key (say 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 +================ + + +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 , 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! diff --git a/info/xemacs-faq.info-2 b/info/xemacs-faq.info-2 index 256d1ad..78554cb 100644 --- a/info/xemacs-faq.info-2 +++ b/info/xemacs-faq.info-2 @@ -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  -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/'. - - -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 writes: - - Your ncurses configuration is messed up. Your /usr/lib/terminfo - is a bad pointer, perhaps to a CD-ROM that is not inserted. - - -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 '), +which will give us platform information. (We do know that BSD MP +implementations vary across vendors, but how much, we do not know yet.)  -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'.)  -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.  -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 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 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. - - -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 - , 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 +========  -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 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.).  -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 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 . - 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'.  -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 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 writes: - Nat Makarevitch 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 (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 - - -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.  -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 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 | 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 +=============================  -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 . -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.  -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'.  -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 - `/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. - - -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 +=====================================  -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. - - -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.  -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 - - -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 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 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? +------------------------------------------------------------- - -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))  -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.  -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 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 ... + 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 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. - -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 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. - -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 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 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 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 +. Use to be +added or removed from the list. Always include your InfoDock version +number when sending help requests.  -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 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 writes: - - On some (but _not_ all) machines a hung XEmacs can be revived by - `kill -FPE '. 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. - - -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. - - - -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. - - -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. - - -File: xemacs-faq.info, Node: Q2.1.18, Next: Q2.1.19, Prev: Q2.1.17, Up: Installation - -Q2.1.18: removed ----------------- - - -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. - - -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 +============  -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? ------------------------------------------------- - -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 ------------------------------------------------------------------- + +File: xemacs-faq.info, Node: Q9.0.2, Next: Q9.0.3, Prev: Q9.0.1, Up: Current Events - David Moore 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.) - -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 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. - -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.) - -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. - -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. - -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. - -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'. - -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.  -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 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 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. + + + +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.  -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.  -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.  -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 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) - - -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 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 +=================  -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 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 :-(. - -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 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: - -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.  -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. +------------------------------------------------------ - -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] ------------------------------------------------- diff --git a/info/xemacs.info b/info/xemacs.info index 50b49e1..d65b592 100644 --- a/info/xemacs.info +++ b/info/xemacs.info @@ -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.  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  Tag Table: (Indirect) Node: Top1350 -Node: License22903 -Node: Distrib36178 -Node: Intro37836 -Node: Frame40704 -Node: Point44750 -Node: Echo Area46715 -Node: Mode Line49089 -Node: GUI Components53517 -Node: Menubar Basics54795 -Node: Scrollbar Basics56708 -Node: Mode Line Basics57599 -Node: Toolbar Basics58428 -Node: Gutter Basics59092 -Node: Inhibiting61491 -Node: Customizing63859 -Node: XEmacs under X64105 -Node: XEmacs under MS Windows67391 -Node: Keystrokes67803 -Node: Intro to Keystrokes68647 -Node: Representing Keystrokes70747 -Node: Key Sequences72105 -Node: String Key Sequences75443 -Node: Meta Key75823 -Node: Super and Hyper Keys77294 -Node: Character Representation83536 -Node: Commands84553 -Node: Pull-down Menus87398 -Node: File Menu90744 -Node: Edit Menu94563 -Node: Apps Menu96943 -Node: Options Menu97430 -Node: Buffers Menu101445 -Node: Tools Menu101749 -Node: Help Menu102237 -Node: Menu Customization102635 -Node: Entering Emacs106863 -Node: Exiting109756 -Node: Command Switches114226 -Node: Startup Paths124238 -Node: Basic131556 -Node: Inserting Text132957 -Node: Moving Point135950 -Node: Erasing139553 -Node: Basic Files140858 -Node: Basic Help142777 -Node: Blank Lines143369 -Node: Continuation Lines144942 -Node: Position Info146606 -Node: Arguments150019 -Node: Undo154115 -Node: Minibuffer157059 -Node: Minibuffer File159666 -Node: Minibuffer Edit161468 -Node: Completion164406 -Node: Completion Example166334 -Node: Completion Commands167426 -Node: Strict Completion170399 -Node: Completion Options172177 -Node: Minibuffer History173682 -Node: Repetition176863 -Node: M-x179705 -Node: Help184797 -Node: Help Summary186204 -Node: Key Help188990 -Node: Name Help189946 -Node: Apropos192587 -Node: Library Keywords195706 -Node: Help Mode198024 -Node: Misc Help198518 -Node: Mark201663 -Node: Setting Mark203511 -Node: Using Region206630 -Node: Marking Objects207364 -Node: Mark Ring209199 -Node: Mouse Selection210912 -Node: Additional Mouse Operations212916 -Node: Killing217117 -Node: Yanking222750 -Node: Kill Ring223550 -Node: Appending Kills225149 -Node: Earlier Kills227183 -Node: Using X Selections229793 -Node: X Clipboard Selection231040 -Node: X Selection Commands233214 -Node: X Cut Buffers234300 -Node: Active Regions235656 -Node: Accumulating Text240233 -Node: Rectangles243303 -Node: Registers246818 -Node: RegPos248270 -Node: RegText249423 -Node: RegRect250526 -Node: RegConfig251402 -Node: RegNumbers252339 -Node: RegFiles253054 -Node: Bookmarks253709 -Node: Display257078 -Node: Scrolling258570 -Node: Horizontal Scrolling262710 -Node: Selective Display263902 -Node: Display Vars265118 -Node: Search267793 -Node: Incremental Search268983 -Node: Non-Incremental Search277906 -Node: Word Search279345 -Node: Regexp Search280960 -Node: Regexps283327 -Node: Search Case297322 -Node: Replace298100 -Node: Unconditional Replace299045 -Node: Regexp Replace300180 -Node: Replacement and Case301112 -Node: Query Replace302089 -Node: Other Repeating Search305339 -Node: Fixit306590 -Node: Kill Errors307167 -Node: Transpose308500 -Node: Fixing Case310904 -Node: Spelling311550 -Node: Files313011 -Node: File Names314969 -Node: Visiting319961 -Node: Saving326793 -Node: Backup331713 -Node: Backup Names333105 -Node: Backup Deletion334585 -Node: Backup Copying335732 -Node: Interlocking337435 -Node: Reverting341560 -Node: Auto Save343579 -Node: Auto Save Files344542 -Node: Auto Save Control346380 -Node: Recover348215 -Node: Version Control349367 -Node: Concepts of VC351402 -Node: Editing with VC353009 -Node: Variables for Check-in/out358262 -Node: Log Entries360158 -Node: Change Logs and VC361335 -Node: Old Versions364599 -Node: VC Status366602 -Node: Renaming and VC368313 -Node: Snapshots368988 -Node: Making Snapshots369486 -Node: Snapshot Caveats370776 -Node: Version Headers372582 -Node: ListDir375278 -Node: Comparing Files377324 -Node: Dired378854 -Node: Dired Enter379522 -Node: Dired Edit380344 -Node: Dired Deletion382089 -Node: Dired Immed385309 -Node: Misc File Ops386582 -Node: Buffers389068 -Node: Select Buffer391222 -Node: List Buffers393017 -Node: Misc Buffer394775 -Node: Kill Buffer396418 -Node: Several Buffers397545 -Node: Windows401409 -Node: Basic Window402117 -Node: Split Window403833 -Node: Other Window405966 -Node: Pop Up Window408397 -Node: Change Window409899 -Node: Mule412807 -Node: Mule Intro414126 -Node: Language Environments417956 -Node: Input Methods420217 -Node: Select Input Method423934 -Node: Mule and Fonts426089 -Node: Coding Systems428626 -Node: Recognize Coding432930 -Node: Specify Coding436253 -Node: Major Modes441315 -Node: Choosing Modes443530 -Node: Indentation445917 -Node: Indentation Commands448012 -Node: Tab Stops450738 -Node: Just Spaces452584 -Node: Text453396 -Node: Text Mode455376 -Node: Nroff Mode457453 -Node: TeX Mode459093 -Node: TeX Editing461342 -Node: TeX Print464773 -Node: Outline Mode467989 -Node: Outline Format469467 -Node: Outline Motion472264 -Node: Outline Visibility473814 -Node: Words476732 -Node: Sentences479676 -Node: Paragraphs481869 -Node: Pages484154 -Node: Filling486751 -Node: Auto Fill487319 -Node: Fill Commands489463 -Node: Fill Prefix491628 -Node: Case493813 -Node: Programs495838 -Node: Program Modes498385 -Node: Lists500614 -Node: Defuns506451 -Node: Grinding509101 -Node: Basic Indent509726 -Node: Multi-line Indent511747 -Node: Lisp Indent513360 -Node: C Indent516807 -Node: Matching522044 -Node: Comments523563 -Node: Balanced Editing530006 -Node: Lisp Completion531020 -Node: Documentation532032 -Node: Change Log533268 -Node: Tags535843 -Node: Tag Syntax537602 -Node: Create Tags Table542299 -Node: Etags Regexps546357 -Node: Select Tags Table551013 -Node: Find Tag554783 -Node: Tags Search557744 -Node: List Tags561197 -Node: Fortran562226 -Node: Fortran Motion563299 -Node: Fortran Indent564116 -Node: ForIndent Commands564797 -Node: ForIndent Num565942 -Node: ForIndent Conv567212 -Node: ForIndent Vars567985 -Node: Fortran Comments569150 -Node: Fortran Columns572745 -Node: Fortran Abbrev574168 -Node: Asm Mode575074 -Node: Running575623 -Node: Compilation576589 -Node: Lisp Modes581436 -Node: Lisp Libraries582706 -Node: Loading583257 -Node: Compiling Libraries587717 -Node: Mocklisp590605 -Node: Lisp Eval591279 -Node: Lisp Debug594513 -Node: Lisp Interaction599878 -Node: External Lisp601230 -Node: Packages603302 -Node: Package Terminology604172 -Node: Installing Packages605770 -Node: Automatically608470 -Node: Manually613151 -Node: Sumo614518 -Node: Which Packages615419 -Node: Removing Packages616227 -Node: Building Packages616911 -Node: Local.rules File618019 -Node: Available Packages618515 -Node: Abbrevs626515 -Node: Defining Abbrevs628711 -Node: Expanding Abbrevs631158 -Node: Editing Abbrevs633858 -Node: Saving Abbrevs635731 -Node: Dynamic Abbrevs637683 -Node: Picture638982 -Node: Basic Picture641412 -Node: Insert in Picture643694 -Node: Tabs in Picture645113 -Node: Rectangles in Picture646631 -Node: Sending Mail648536 -Node: Mail Format650244 -Node: Mail Headers651591 -Node: Mail Mode657996 -Node: Reading Mail661606 -Node: Calendar/Diary663308 -Node: Calendar Motion664979 -Node: Calendar Unit Motion665859 -Node: Move to Beginning or End668179 -Node: Specified Dates669309 -Node: Scroll Calendar670194 -Node: Mark and Region671983 -Node: General Calendar673886 -Node: LaTeX Calendar675494 -Node: Holidays677505 -Node: Sunrise/Sunset680604 -Node: Lunar Phases683640 -Node: Other Calendars685022 -Node: Calendar Systems686506 -Node: To Other Calendar689614 -Node: From Other Calendar691602 -Node: Mayan Calendar693903 -Node: Diary697095 -Node: Diary Commands698841 -Node: Format of Diary File702161 -Node: Date Formats705028 -Node: Adding to Diary707599 -Node: Special Diary Entries709227 -Node: Calendar Customization714563 -Node: Calendar Customizing715422 -Node: Holiday Customizing718654 -Node: Date Display Format725137 -Node: Time Display Format726093 -Node: Daylight Savings727228 -Node: Diary Customizing730413 -Node: Hebrew/Islamic Entries735031 -Node: Fancy Diary Display738368 -Node: Included Diary Files740281 -Node: Sexp Diary Entries741259 -Node: Appt Customizing746346 -Node: Sorting747389 -Node: Shell752192 -Node: Single Shell753482 -Node: Interactive Shell755094 -Node: Shell Mode758856 -Node: Terminal emulator761344 -Node: Term Mode763650 -Node: Paging in Term764561 -Node: Narrowing765356 -Node: Hardcopy767302 -Node: Recursive Edit768271 -Node: Dissociated Press771255 -Node: CONX773815 -Node: Amusements774836 -Node: Emulation775313 -Node: Customization777169 -Node: Minor Modes778982 -Node: Variables780611 -Node: Examining782564 -Node: Easy Customization784025 -Node: Customization Groups785073 -Node: Changing an Option788012 -Node: Face Customization794279 -Node: Specific Customization796170 -Node: Edit Options798774 -Node: Locals800358 -Node: File Variables803537 -Node: Keyboard Macros808085 -Node: Basic Kbd Macro810253 -Node: Save Kbd Macro812181 -Node: Kbd Macro Query813836 -Node: Key Bindings815775 -Node: Keymaps816646 -Node: Rebinding820499 -Node: Interactive Rebinding821196 -Node: Programmatic Rebinding823385 -Node: Key Bindings Using Strings826189 -Node: Disabling827813 -Node: Syntax829589 -Node: Syntax Entry830467 -Node: Syntax Change834635 -Node: Init File836801 -Node: Init Syntax838262 -Node: Init Examples840610 -Node: Terminal Init844797 -Node: Audible Bell846531 -Node: Faces849959 -Node: Frame Components855959 -Node: X Resources856401 -Node: Geometry Resources858059 -Node: Iconic Resources860504 -Node: Resource List860973 -Node: Face Resources867477 -Node: Widgets871151 -Node: Menubar Resources872087 -Node: Quitting873598 -Node: Lossage876576 -Node: Stuck Recursive877217 -Node: Screen Garbled877920 -Node: Text Garbled879051 -Node: Unasked-for Search879687 -Node: Emergency Escape880469 -Node: Total Frustration882245 -Node: Bugs882873 -Node: Glossary892425 -Node: Manifesto924079 -Node: Key Index947534 -Node: Command Index973461 -Node: Variable Index1016047 -Node: Concept Index1032238 +Node: License22916 +Node: Distrib36163 +Node: Intro37821 +Node: Frame40689 +Node: Point44739 +Node: Echo Area46712 +Node: Mode Line49094 +Node: GUI Components53530 +Node: Menubar Basics54816 +Node: Scrollbar Basics56737 +Node: Mode Line Basics57636 +Node: Toolbar Basics58473 +Node: Gutter Basics59145 +Node: Inhibiting61552 +Node: Customizing63930 +Node: XEmacs under X64186 +Node: XEmacs under MS Windows67482 +Node: Keystrokes67904 +Node: Intro to Keystrokes68752 +Node: Representing Keystrokes70860 +Node: Key Sequences72230 +Node: String Key Sequences75580 +Node: Meta Key75972 +Node: Super and Hyper Keys77455 +Node: Character Representation83709 +Node: Commands84734 +Node: Pull-down Menus87587 +Node: File Menu90958 +Node: Edit Menu94789 +Node: Apps Menu97181 +Node: Options Menu97680 +Node: Buffers Menu101707 +Node: Tools Menu102023 +Node: Help Menu102523 +Node: Menu Customization102933 +Node: Entering Emacs107173 +Node: Exiting110070 +Node: Command Switches114548 +Node: Startup Paths124604 +Node: Basic131972 +Node: Inserting Text133377 +Node: Moving Point136378 +Node: Erasing139989 +Node: Basic Files141302 +Node: Basic Help143229 +Node: Blank Lines143829 +Node: Continuation Lines145410 +Node: Position Info147082 +Node: Arguments150503 +Node: Undo154609 +Node: Minibuffer157557 +Node: Minibuffer File160168 +Node: Minibuffer Edit161978 +Node: Completion164924 +Node: Completion Example166860 +Node: Completion Commands167964 +Node: Strict Completion170949 +Node: Completion Options172739 +Node: Minibuffer History174256 +Node: Repetition177445 +Node: M-x180295 +Node: Help185391 +Node: Help Summary186802 +Node: Key Help189596 +Node: Name Help190560 +Node: Apropos193209 +Node: Library Keywords196336 +Node: Help Mode198662 +Node: Misc Help199164 +Node: Mark202422 +Node: Setting Mark204282 +Node: Using Region207413 +Node: Marking Objects208159 +Node: Mark Ring210006 +Node: Mouse Selection211731 +Node: Additional Mouse Operations213743 +Node: Killing217952 +Node: Yanking223629 +Node: Kill Ring224437 +Node: Appending Kills226048 +Node: Earlier Kills228094 +Node: Using X Selections230716 +Node: X Clipboard Selection231971 +Node: X Selection Commands234157 +Node: X Cut Buffers235255 +Node: Active Regions236623 +Node: Accumulating Text241212 +Node: Rectangles244290 +Node: Registers247813 +Node: RegPos249271 +Node: RegText250434 +Node: RegRect251547 +Node: RegConfig252433 +Node: RegNumbers253380 +Node: RegFiles254105 +Node: Bookmarks254770 +Node: Display258149 +Node: Scrolling259647 +Node: Horizontal Scrolling263797 +Node: Selective Display264999 +Node: Display Vars266225 +Node: Search268910 +Node: Incremental Search270106 +Node: Non-Incremental Search279053 +Node: Word Search280502 +Node: Regexp Search282127 +Node: Regexps284504 +Node: Search Case298509 +Node: Replace299297 +Node: Unconditional Replace300252 +Node: Regexp Replace301401 +Node: Replacement and Case302347 +Node: Query Replace303338 +Node: Other Repeating Search306602 +Node: Fixit307863 +Node: Kill Errors308446 +Node: Transpose309789 +Node: Fixing Case312203 +Node: Spelling312859 +Node: Files314330 +Node: File Names316294 +Node: Visiting321296 +Node: Saving328138 +Node: Backup333068 +Node: Backup Names334474 +Node: Backup Deletion335972 +Node: Backup Copying337137 +Node: Interlocking338858 +Node: Reverting342997 +Node: Auto Save345026 +Node: Auto Save Files345999 +Node: Auto Save Control347851 +Node: Recover349700 +Node: Version Control350866 +Node: Concepts of VC352911 +Node: Editing with VC354532 +Node: Variables for Check-in/out359799 +Node: Log Entries361709 +Node: Change Logs and VC362900 +Node: Old Versions366153 +Node: VC Status368170 +Node: Renaming and VC369895 +Node: Snapshots370584 +Node: Making Snapshots371096 +Node: Snapshot Caveats372404 +Node: Version Headers374228 +Node: ListDir376940 +Node: Comparing Files378996 +Node: Dired380536 +Node: Dired Enter381214 +Node: Dired Edit382050 +Node: Dired Deletion383809 +Node: Dired Immed387043 +Node: Misc File Ops388330 +Node: Buffers390828 +Node: Select Buffer392988 +Node: List Buffers394793 +Node: Misc Buffer396561 +Node: Kill Buffer398214 +Node: Several Buffers399351 +Node: Windows403225 +Node: Basic Window403939 +Node: Split Window405665 +Node: Other Window407808 +Node: Pop Up Window410249 +Node: Change Window411761 +Node: Mule414679 +Node: Mule Intro416004 +Node: Language Environments419844 +Node: Input Methods422115 +Node: Select Input Method425842 +Node: Mule and Fonts428007 +Node: Coding Systems430554 +Node: Recognize Coding434868 +Node: Specify Coding438201 +Node: Major Modes443273 +Node: Choosing Modes445588 +Node: Mode Hooks448004 +Node: Indentation449606 +Node: Indentation Commands451707 +Node: Tab Stops454443 +Node: Just Spaces456299 +Node: Text457121 +Node: Text Mode459107 +Node: Nroff Mode461194 +Node: TeX Mode462848 +Node: TeX Editing465111 +Node: TeX Print468560 +Node: Outline Mode471794 +Node: Outline Format473286 +Node: Outline Motion476061 +Node: Outline Visibility477629 +Node: Words480565 +Node: Sentences483519 +Node: Paragraphs485722 +Node: Pages488017 +Node: Filling490624 +Node: Auto Fill491202 +Node: Fill Commands493360 +Node: Fill Prefix495539 +Node: Case497738 +Node: Programs499773 +Node: Program Modes502472 +Node: Lists505715 +Node: Defuns511189 +Node: Grinding513849 +Node: Basic Indent514428 +Node: Multi-line Indent516463 +Node: Lisp Indent518090 +Node: Matching521533 +Node: Comments523062 +Node: Balanced Editing529543 +Node: Lisp Completion530567 +Node: Documentation531589 +Node: Change Log532835 +Node: Tags535402 +Node: Tag Syntax537173 +Node: Create Tags Table541886 +Node: Etags Regexps545960 +Node: Select Tags Table550632 +Node: Find Tag554418 +Node: Tags Search557395 +Node: List Tags560864 +Node: CC Mode561909 +Node: Older Modes563589 +Node: Customizing CC Mode564907 +Node: Fortran567847 +Node: Fortran Motion568935 +Node: Fortran Indent569768 +Node: ForIndent Commands570465 +Node: ForIndent Num571630 +Node: ForIndent Conv572920 +Node: ForIndent Vars573713 +Node: Fortran Comments574898 +Node: Fortran Columns578509 +Node: Fortran Abbrev579948 +Node: Asm Mode580870 +Node: Running581431 +Node: Compilation582403 +Node: Lisp Modes587260 +Node: Lisp Libraries588540 +Node: Loading589101 +Node: Compiling Libraries593575 +Node: Mocklisp596479 +Node: Lisp Eval597167 +Node: Lisp Debug600411 +Node: Lisp Interaction605786 +Node: External Lisp607148 +Node: Packages609230 +Node: Package Terminology610110 +Node: Installing Packages611764 +Node: Automatically614506 +Node: Manually619177 +Node: Sumo620524 +Node: Which Packages621425 +Node: Removing Packages622233 +Node: Building Packages622917 +Node: Local.rules File624053 +Node: Available Packages624549 +Node: Abbrevs632581 +Node: Defining Abbrevs634783 +Node: Expanding Abbrevs637240 +Node: Editing Abbrevs639950 +Node: Saving Abbrevs641833 +Node: Dynamic Abbrevs643795 +Node: Picture645104 +Node: Basic Picture647540 +Node: Insert in Picture649832 +Node: Tabs in Picture651261 +Node: Rectangles in Picture652789 +Node: Sending Mail654704 +Node: Mail Format656418 +Node: Mail Headers657775 +Node: Mail Mode664190 +Node: Reading Mail667810 +Node: Calendar/Diary669518 +Node: Calendar Motion671199 +Node: Calendar Unit Motion672093 +Node: Move to Beginning or End674431 +Node: Specified Dates675589 +Node: Scroll Calendar676492 +Node: Mark and Region678295 +Node: General Calendar680212 +Node: LaTeX Calendar681834 +Node: Holidays683855 +Node: Sunrise/Sunset686968 +Node: Lunar Phases690018 +Node: Other Calendars691414 +Node: Calendar Systems692912 +Node: To Other Calendar696030 +Node: From Other Calendar698050 +Node: Mayan Calendar700361 +Node: Diary703567 +Node: Diary Commands705327 +Node: Format of Diary File708661 +Node: Date Formats711542 +Node: Adding to Diary714127 +Node: Special Diary Entries715769 +Node: Calendar Customization721119 +Node: Calendar Customizing721992 +Node: Holiday Customizing725242 +Node: Date Display Format731743 +Node: Time Display Format732716 +Node: Daylight Savings733869 +Node: Diary Customizing737072 +Node: Hebrew/Islamic Entries741708 +Node: Fancy Diary Display745063 +Node: Included Diary Files746994 +Node: Sexp Diary Entries747990 +Node: Appt Customizing753097 +Node: Sorting754160 +Node: Shell758973 +Node: Single Shell760273 +Node: Interactive Shell761899 +Node: Shell Mode765675 +Node: Terminal emulator768177 +Node: Term Mode770497 +Node: Paging in Term771422 +Node: Narrowing772231 +Node: Hardcopy774187 +Node: Recursive Edit775166 +Node: Dissociated Press778162 +Node: CONX780734 +Node: Amusements781767 +Node: Emulation782256 +Node: Customization784124 +Node: Minor Modes785943 +Node: Variables787582 +Node: Examining789545 +Node: Easy Customization791017 +Node: Customization Groups792079 +Node: Changing an Option795016 +Node: Face Customization801301 +Node: Specific Customization803210 +Node: Edit Options805832 +Node: Locals807430 +Node: File Variables810623 +Node: Keyboard Macros815185 +Node: Basic Kbd Macro817363 +Node: Save Kbd Macro819305 +Node: Kbd Macro Query820974 +Node: Key Bindings822927 +Node: Keymaps823810 +Node: Rebinding827677 +Node: Interactive Rebinding828388 +Node: Programmatic Rebinding830595 +Node: Key Bindings Using Strings833397 +Node: Disabling835039 +Node: Syntax836829 +Node: Syntax Entry837717 +Node: Syntax Change841899 +Node: Init File844079 +Node: Init Syntax845550 +Node: Init Examples847912 +Node: Terminal Init852113 +Node: Audible Bell853861 +Node: Faces857301 +Node: Frame Components863325 +Node: X Resources863777 +Node: Geometry Resources865451 +Node: Iconic Resources867919 +Node: Resource List868404 +Node: Face Resources874924 +Node: Widgets878620 +Node: Menubar Resources879572 +Node: Quitting881099 +Node: Lossage884089 +Node: Stuck Recursive884742 +Node: Screen Garbled885461 +Node: Text Garbled886608 +Node: Unasked-for Search887260 +Node: Emergency Escape888058 +Node: Total Frustration889850 +Node: Bugs890494 +Node: Glossary900090 +Node: Manifesto931744 +Node: Key Index955199 +Node: Command Index991671 +Node: Variable Index1053867 +Node: Concept Index1076231  End Tag Table diff --git a/info/xemacs.info-1 b/info/xemacs.info-1 index 16c530e..c1c7f7c 100644 --- a/info/xemacs.info-1 +++ b/info/xemacs.info-1 @@ -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.  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.  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'.  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:  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.  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.  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'.)  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.  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.  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.  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  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'.  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.  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:  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.  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  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.  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 `+'.  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.  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:  File: xemacs.info, Node: Meta Key, Next: Super and Hyper Keys, Prev: String Key Sequences, Up: Keystrokes -Assignment of the Key ----------------------------- +2.1.4 Assignment of the Key +---------------------------------- Not all terminals have the complete set of modifiers. Terminals that have a key allow you to type Meta characters by just holding @@ -1710,8 +1707,8 @@ the `meta-flag' variable is irrelevant.  File: xemacs.info, Node: Super and Hyper Keys, Next: Character Representation, Prev: Meta Key, Up: Keystrokes -Assignment of the and Keys ------------------------------------------- +2.1.5 Assignment of the and Keys +------------------------------------------------ Most keyboards do not, by default, have or modifier keys. Under X, you can simulate the or key if you want @@ -1842,8 +1839,8 @@ previously-unassigned modifier bit.  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::.  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::.  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.  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  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  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.  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  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.  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.  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.  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  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 ' at the shell. XEmacs clears the screen and then displays an initial advisory message @@ -2460,8 +2457,8 @@ file.  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::).  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.  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 `', 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.  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'.  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 to other commands.  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).  File: xemacs.info, Node: Erasing, Next: Basic Files, Prev: Moving Point, Up: Basic -Erasing Text -============ +4.3 Erasing Text +================ `' 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  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.  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 , which is an alias for `C-h'). Type @@ -3312,8 +3308,8 @@ twice to get a description of all the help facilities. *Note Help::.  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.  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 , the line will grow to occupy two (or more) lines on the screen, @@ -3384,8 +3380,8 @@ is displayed.  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  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 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.  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.  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:  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.  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.  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 .  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 ', the looks for alternatives (in this case, command names) that start @@ -3836,8 +3831,8 @@ because in the minibuffer it is bound to the command  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:  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 can work in completing minibuffers, depending on how the argument will be used. @@ -3953,8 +3948,8 @@ Other Window::).  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'.  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.  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  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.  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 and or .  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  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.  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.  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  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:  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.  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 ' 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.  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'.  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.  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:  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.  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.  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.  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.  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 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 ' and `M-k' (*note Sentences::).  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.  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.  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.  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.  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.  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:  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  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.  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.  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.  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.  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.  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.  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.  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::.  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'.  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.  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.)  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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 '; similarly for  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.  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.  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. - -File: xemacs.info, Node: Unconditional Replace, Next: Regexp Replace, Prev: Replace, Up: Replace - -Unconditional Replacement -------------------------- - -`M-x replace-string STRING NEWSTRING ' - Replace every occurrence of STRING with NEWSTRING. - -`M-x replace-regexp REGEXP NEWSTRING ' - 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-' moves back there. - - A numeric argument restricts replacement to matches that are -surrounded by word boundaries. - - -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 c[ad]+r \&-safe - -would replace (for example) `cadr' with `cadr-safe' and `cddr' with -`cddr-safe'. - - M-x replace-regexp \(c[ad]+r\)-safe \1 - -would perform exactly the opposite replacements. To include a `\' in -the text to replace with, you must give `\\'. - diff --git a/info/xemacs.info-2 b/info/xemacs.info-2 index 42f4f80..838b6e5 100644 --- a/info/xemacs.info-2 +++ b/info/xemacs.info-2 @@ -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.  -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 STRING NEWSTRING ' + Replace every occurrence of STRING with NEWSTRING. + +`M-x replace-regexp REGEXP NEWSTRING ' + 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-' moves back there. + + A numeric argument restricts replacement to matches that are +surrounded by word boundaries. + + +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 c[ad]+r \&-safe + +would replace (for example) `cadr' with `cadr-safe' and `cddr' with +`cddr-safe'. + + M-x replace-regexp \(c[ad]+r\)-safe \1 + +would perform exactly the opposite replacements. To include a `\' in +the text to replace with, you must give `\\'. + + +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.  File: xemacs.info, Node: Query Replace, Prev: Replacement and Case, Up: Replace -Query Replace -------------- +12.7.4 Query Replace +-------------------- `M-% STRING NEWSTRING ' `M-x query-replace STRING NEWSTRING ' @@ -141,8 +194,8 @@ Repetition.  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.  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.  File: xemacs.info, Node: Kill Errors, Next: Transpose, Prev: Fixit, Up: Fixit -Killing Your Mistakes -===================== +13.1 Killing Your Mistakes +========================== `' Delete last character (`delete-backward-char'). @@ -227,8 +280,8 @@ less thought to kill the whole word and start over.  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).  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::.  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.  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.  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.  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  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.  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.  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::.  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.  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.  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.  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;  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.  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.  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.  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 FILE '. @@ -1102,8 +1155,8 @@ to make new changes, turn auto-saving back on with `M-x auto-save-mode'.  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.  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::.  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.  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.  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  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'.  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 ' Examine version VERSION of the visited file, in a buffer of its @@ -1492,8 +1545,8 @@ Files::, for more information about `M-x diff'.  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.  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.  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.  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.  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.  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:  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  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.  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.  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'.  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.  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.  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.  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'.  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::.  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 ' Select or create a buffer named BUFFER (`switch-to-buffer'). @@ -2104,8 +2157,8 @@ visiting a file to switch buffers. *Note Visiting::.  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.  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::.  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'.  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.  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.  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.  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'  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.  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.  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  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").  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.  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.  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).  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.  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.  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.  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  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.  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  -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.  +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'. + + File: xemacs.info, Node: Indentation, Next: Text, Prev: Major Modes, Up: Top -Indentation -*********** +19 Indentation +************** `' 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  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 '. @@ -3407,8 +3496,8 @@ indentation point is applicable even then, `tab-to-tab-stop' is run  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-to-tab-stop'. This command inserts indentation before point, @@ -3449,8 +3538,8 @@ Vars::, for more information on that.  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.  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.  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.  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'.  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.  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.  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.  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.  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.  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.  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.  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::.  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::.  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.  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.  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.  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::.  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.  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.  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.  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.  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 '. 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 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 is bound to `c-indent-line'. is -normally defined to do followed by ; thus it, too, indents -in a mode-specific fashion. +language and updates the current line's indentation accordingly. +is normally defined to do followed by ; 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 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. -  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.  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.  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.  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 +----------------------------------------- `' Adjust indentation of current line. @@ -4843,8 +4945,8 @@ information on this behavior.  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 to every line whose first character is between point and mark.  -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.  -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 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, - just inserts a tab character in the buffer. Normally, this -variable is `nil', and 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. - - 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.  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-' (`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-', 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.  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 after it.  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.  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.  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.  -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.  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.  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.  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.  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'.  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.  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'.  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.  -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. + + +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. + + +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. + + +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.  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.  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.  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 +...................................... `' Indent the current line (`fortran-indent-line'). @@ -6130,8 +6214,8 @@ lines.  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.  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.  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.  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.  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.  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.  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.  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.  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':  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  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::).  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'.  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.  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". - -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. - - -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'. - diff --git a/info/xemacs.info-3 b/info/xemacs.info-3 index a55d70b..6bac026 100644 --- a/info/xemacs.info-3 +++ b/info/xemacs.info-3 @@ -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.  +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. + + +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'. + + 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.  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::.  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 - for details. +`http://cvs.xemacs.org/' for details.  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  @@ -489,11 +668,11 @@ Building Packages: ================== Currently, source packages are only available via anonymous CVS. See - 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.  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::.  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.  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 (, comma, etc.). Most @@ -1100,8 +1279,8 @@ not enabled.  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.  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.  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.  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'.  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::).  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'  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-' (`picture-tab-search'). @@ -1397,8 +1576,8 @@ is more convenient in the cases where it is sufficient.  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.  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.  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.  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.  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'.  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.  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.  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.  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,  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.  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.  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.  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.  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.)  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).  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.  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::.  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  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.  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.  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  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.  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.  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::).  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  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').  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.  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.  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.  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.  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.  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:  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:  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.  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.  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.  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.  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.  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.  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:  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:  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::.  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*'.  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.  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.  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:  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.  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'.  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.  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::.  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'.  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.  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.  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'.  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.  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  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::.  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 breaks lines between words as @@ -4618,8 +4797,8 @@ mode'. *Note Abbrevs::, for full information.  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::).  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.  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.)  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.  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.  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]'.  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.  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:  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:  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.  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.  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.  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.  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::.  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.  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.  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.  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 KEY CMD ' Defines KEY globally to run CMD. @@ -5609,8 +5788,8 @@ old definition to have the new definition instead.  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 (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 ;;; 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:  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:  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.  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.  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.  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.  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'.  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  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:  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.  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.  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.  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.  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:  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.  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.  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:  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)'.  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'.  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.  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::.  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.  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::.  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.  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::.  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.  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.  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 . This lets the doctor know you are finished. - -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 ', -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 ` A B C 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-' 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-' 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. - diff --git a/info/xemacs.info-4 b/info/xemacs.info-4 index af09a71..89486d1 100644 --- a/info/xemacs.info-4 +++ b/info/xemacs.info-4 @@ -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.  +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 ', +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 ` A B C 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-' 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-' 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. + + 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 ********************* +[index] * 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 C: Coding Systems. -* C-x =: Position Info. + (line 12) +* C-x < (Calendar mode): Scroll Calendar. (line 28) +* C-x 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)  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 ************************** +[index] * 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)  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 ************** +[index] * 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)  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 ************* +[index] * 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) diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index cf05781..3675816 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,7 @@ +2006-01-28 Vin Shelton + + * XEmacs 21.4.19 is released + 2005-12-03 Vin Shelton * XEmacs 21.4.18 is released diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f913b9e..2d65942 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,48 @@ +2006-01-28 Vin Shelton + + * XEmacs 21.4.19 is released + +2006-01-03 Aidan Kehoe + + * 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 + + * 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 + + * 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 + + * 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ä + + * 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 * XEmacs 21.4.18 is released diff --git a/lisp/auto-autoloads.el b/lisp/auto-autoloads.el index 88caef1..d0afd32 100644 --- a/lisp/auto-autoloads.el +++ b/lisp/auto-autoloads.el @@ -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) diff --git a/lisp/easymenu.el b/lisp/easymenu.el index 93c9d58..6052fac 100644 --- a/lisp/easymenu.el +++ b/lisp/easymenu.el @@ -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 ;; 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. diff --git a/lisp/find-paths.el b/lisp/find-paths.el index 494ed16..bad05a9 100644 --- a/lisp/find-paths.el +++ b/lisp/find-paths.el @@ -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 diff --git a/lisp/font.el b/lisp/font.el index 02bfd9c..b0e002f 100644 --- a/lisp/font.el +++ b/lisp/font.el @@ -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/" diff --git a/lisp/minibuf.el b/lisp/minibuf.el index 7e4c7c9..8177a3e 100644 --- a/lisp/minibuf.el +++ b/lisp/minibuf.el @@ -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/" diff --git a/lisp/package-get.el b/lisp/package-get.el index 4580677..33d5802 100644 --- a/lisp/package-get.el +++ b/lisp/package-get.el @@ -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" diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 9fa21ce..259cf54 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,7 @@ +2006-01-28 Vin Shelton + + * XEmacs 21.4.19 is released + 2005-12-03 Vin Shelton * XEmacs 21.4.18 is released diff --git a/man/ChangeLog b/man/ChangeLog index bafcc7b..d6c5abe 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,4 +1,16 @@ -2005-12-03 Vin Shelton +2006-01-28 Vin Shelton + + * XEmacs 21.4.19 is released + +2005-12-07 Vin Shelton + + * xemacs-faq.texi (Q1.0.5): Updated the dates of my contributions. + +2005-12-06 Vin Shelton + + * xemacs-faq.texi: copied from 21.5. + +2005-12-03 Vin Shelton * 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 +2005-02-06 Vin Shelton * XEmacs 21.4.17 is released @@ -78,7 +90,7 @@ * lispref/help.texi: Document 3rd arg to `make-obsolete'. -2004-12-05 Vin Shelton +2004-12-05 Vin Shelton * XEmacs 21.4.16 is released @@ -133,7 +145,7 @@ run-hook-with-args-until-failure, and run-hook-with-args-until-success. -2004-02-02 Vin Shelton +2004-02-02 Vin Shelton * XEmacs 21.4.15 is released @@ -274,7 +286,7 @@ * 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 +2003-09-03 Vin Shelton * XEmacs 21.4.14 is released diff --git a/man/xemacs-faq.texi b/man/xemacs-faq.texi index af2fa57..1c2ea47 100644 --- a/man/xemacs-faq.texi +++ b/man/xemacs-faq.texi @@ -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 @author Ben Wing +@author Tony Rossini @author Chuck Thompson @author Steve Baur @author Andreas Kaempf @@ -26,6 +26,108 @@ @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.