From: tomo Date: Tue, 30 May 2006 10:54:32 +0000 (+0000) Subject: Sync up with r21-4-19. X-Git-Tag: r21-4-19-chise-0_23-1^20 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=a44bbbfd0a7d2ff5a023d0448d65fe338384a7fc;p=chise%2Fxemacs-chise.git.1 Sync up with r21-4-19. --- diff --git a/ChangeLog b/ChangeLog index 6c806d1..cebfd34 100644 --- a/ChangeLog +++ b/ChangeLog @@ -102,6 +102,42 @@ * configure.in: Add new option `--with-utf-2000'; define `UTF2000' if it is specified. +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 @@ -124,7 +160,7 @@ 2005-03-12 Aidan Kehoe * configure.in (XE_COMPUTE_RUNPATH): Check XtRegisterDrawable - availability. + availability. 2005-04-11 Norbert Koch @@ -280,10 +316,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 @@ -379,7 +415,7 @@ 2003-07-03 Stephen J. Turnbull - * etc/README.HYPERBOLE: + * etc/README.HYPERBOLE: * etc/README.OO-BROWSER: Update. @@ -411,7 +447,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. @@ -450,7 +486,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 @@ -460,7 +496,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: @@ -499,7 +535,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 @@ -508,8 +544,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. @@ -544,7 +580,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 @@ -575,7 +611,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 @@ -612,7 +648,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. @@ -733,7 +769,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. @@ -754,7 +790,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. @@ -840,8 +876,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. @@ -935,7 +971,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. @@ -1041,14 +1077,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 84a4d60..b3df073 100755 --- a/configure +++ b/configure @@ -4517,6 +4517,7 @@ cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4525,7 +4526,7 @@ main() exit(0); } EOF -if { (eval echo configure:4529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -4553,12 +4554,13 @@ if test "$ac_cv_sizeof_short" = 0; then exit 1 fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:4557: checking size of int" >&5 +echo "configure:4558: checking size of int" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4567,7 +4569,7 @@ main() exit(0); } EOF -if { (eval echo configure:4571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else @@ -4589,12 +4591,13 @@ EOF echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:4593: checking size of long" >&5 +echo "configure:4595: checking size of long" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4603,7 +4606,7 @@ main() exit(0); } EOF -if { (eval echo configure:4607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else @@ -4625,12 +4628,13 @@ EOF echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:4629: checking size of long long" >&5 +echo "configure:4632: checking size of long long" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4639,7 +4643,7 @@ main() exit(0); } EOF -if { (eval echo configure:4643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long_long=`cat conftestval` else @@ -4661,12 +4665,13 @@ EOF echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:4665: checking size of void *" >&5 +echo "configure:4669: checking size of void *" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4675,7 +4680,7 @@ main() exit(0); } EOF -if { (eval echo configure:4679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_void_p=`cat conftestval` else @@ -4699,7 +4704,7 @@ EOF case $opsys in cygwin* ) cat > conftest.$ac_ext < EOF @@ -4724,7 +4729,7 @@ rm -f conftest* esac echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:4728: checking for long file names" >&5 +echo "configure:4733: checking for long file names" >&5 ac_cv_sys_long_file_names=yes # Test for long file names in all the places we know might matter: @@ -4770,10 +4775,10 @@ fi echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4774: checking for sin" >&5 +echo "configure:4779: checking for sin" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -4814,12 +4819,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 -echo "configure:4818: checking for sin in -lm" >&5 +echo "configure:4823: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` xe_check_libs=" -lm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4839: \"$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 @@ -4874,14 +4879,14 @@ EOF cat > conftest.$ac_ext < int main() { return atanh(1.0) + asinh(1.0) + acosh(1.0); ; return 0; } EOF -if { (eval echo configure:4885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_INVERSE_HYPERBOLIC @@ -4898,14 +4903,14 @@ fi rm -f conftest* echo "checking type of mail spool file locking" 1>&6 -echo "configure:4902: checking type of mail spool file locking" >&5 +echo "configure:4907: checking type of mail spool file locking" >&5 for ac_func in lockf flock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4906: checking for $ac_func" >&5 +echo "configure:4911: 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:4937: \"$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 @@ -5010,12 +5015,12 @@ test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \ case "$opsys" in decosf*) echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:5014: checking for cma_open in -lpthreads" >&5 +echo "configure:5019: checking for cma_open in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lpthreads " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5035: \"$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 @@ -5063,7 +5068,7 @@ esac echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:5067: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:5072: checking whether the -xildoff compiler flag is required" >&5 if ${CC-cc} '-###' -xildon no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then echo "$ac_t""no" 1>&6; @@ -5075,7 +5080,7 @@ fi if test "$opsys" = "sol2"; then if test "$os_release" -ge 506; then echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6 -echo "configure:5079: checking for \"-z ignore\" linker flag" >&5 +echo "configure:5084: checking for \"-z ignore\" linker flag" >&5 case "`ld -h 2>&1`" in *-z\ ignore\|record* ) echo "$ac_t""yes" 1>&6 ld_switch_site="-z ignore $ld_switch_site" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-z ignore\" to \$ld_switch_site"; fi ;; @@ -5086,7 +5091,7 @@ fi echo "checking "for specified window system"" 1>&6 -echo "configure:5090: checking "for specified window system"" >&5 +echo "configure:5095: checking "for specified window system"" >&5 GNOME_CONFIG=no @@ -5094,7 +5099,7 @@ GTK_CONFIG=no if test "$with_gnome" != "no"; then echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6 -echo "configure:5098: checking for GNOME configuration script" >&5 +echo "configure:5103: checking for GNOME configuration script" >&5 for possible in gnome-config do possible_version=`${possible} --version 2> /dev/null` @@ -5125,7 +5130,7 @@ fi if test "$with_gtk" != "no";then echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6 -echo "configure:5129: checking for GTK configuration script" >&5 +echo "configure:5134: checking for GTK configuration script" >&5 for possible in gtk12-config gtk14-config gtk-config do possible_version=`${possible} --version 2> /dev/null` @@ -5147,18 +5152,18 @@ fi if test "${GTK_CONFIG}" != "no"; then echo $ac_n "checking gtk version""... $ac_c" 1>&6 -echo "configure:5151: checking gtk version" >&5 +echo "configure:5156: checking gtk version" >&5 GTK_VERSION=`${GTK_CONFIG} --version` echo "$ac_t""${GTK_VERSION}" 1>&6 echo $ac_n "checking gtk libs""... $ac_c" 1>&6 -echo "configure:5156: checking gtk libs" >&5 +echo "configure:5161: checking gtk libs" >&5 GTK_LIBS=`${GTK_CONFIG} --libs` libs_gtk="$libs_gtk ${GTK_LIBS}" && if test "$extra_verbose" = "yes"; then echo " Appending \"${GTK_LIBS}\" to \$libs_gtk"; fi echo "$ac_t""${GTK_LIBS}" 1>&6 echo $ac_n "checking gtk cflags""... $ac_c" 1>&6 -echo "configure:5162: checking gtk cflags" >&5 +echo "configure:5167: checking gtk cflags" >&5 GTK_CFLAGS=`${GTK_CONFIG} --cflags` if test "$GCC" = "yes"; then GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow" @@ -5168,19 +5173,19 @@ echo "configure:5162: checking gtk cflags" >&5 echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6 -echo "configure:5172: checking for main in -lgdk_imlib" >&5 +echo "configure:5177: checking for main in -lgdk_imlib" >&5 ac_lib_var=`echo gdk_imlib'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdk_imlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5189: \"$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 @@ -5202,12 +5207,12 @@ fi echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6 -echo "configure:5206: checking for Imlib_init in -lImlib" >&5 +echo "configure:5211: checking for Imlib_init in -lImlib" >&5 ac_lib_var=`echo Imlib'_'Imlib_init | sed 'y%./+-%__p_%'` xe_check_libs=" -lImlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5227: \"$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 @@ -5241,10 +5246,10 @@ fi for ac_func in gdk_imlib_init do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5245: checking for $ac_func" >&5 +echo "configure:5250: 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:5276: \"$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 @@ -5346,15 +5351,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5350: checking for $ac_hdr" >&5 +echo "configure:5355: 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:5358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5363: \"$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* @@ -5385,19 +5390,19 @@ done echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6 -echo "configure:5389: checking for main in -lxml" >&5 +echo "configure:5394: checking for main in -lxml" >&5 ac_lib_var=`echo xml'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lxml " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5406: \"$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 @@ -5419,19 +5424,19 @@ fi echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6 -echo "configure:5423: checking for main in -lglade" >&5 +echo "configure:5428: checking for main in -lglade" >&5 ac_lib_var=`echo glade'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lglade " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5440: \"$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 @@ -5453,19 +5458,19 @@ fi echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6 -echo "configure:5457: checking for main in -lglade-gnome" >&5 +echo "configure:5462: checking for main in -lglade-gnome" >&5 ac_lib_var=`echo glade-gnome'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lglade-gnome " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5474: \"$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 @@ -5486,7 +5491,7 @@ fi cat > conftest.$ac_ext < EOF @@ -5545,7 +5550,7 @@ if test "$with_x11" != "no"; then # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:5549: checking for X" >&5 +echo "configure:5554: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -5605,12 +5610,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5619: \"$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* @@ -5679,14 +5684,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -5795,17 +5800,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:5799: checking whether -R must be followed by a space" >&5 +echo "configure:5804: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -5821,14 +5826,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -5864,12 +5869,12 @@ ac_cv_lib_dnet_dnet_ntoa=no else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:5868: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:5873: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` xe_check_libs=" -ldnet " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5889: \"$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 @@ -5904,12 +5909,12 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:5908: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:5913: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` xe_check_libs=" -ldnet_stub " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5929: \"$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 @@ -5949,10 +5954,10 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:5953: checking for gethostbyname" >&5 +echo "configure:5958: checking for gethostbyname" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -5996,12 +6001,12 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:6000: checking for gethostbyname in -lnsl" >&5 +echo "configure:6005: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` xe_check_libs=" -lnsl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6021: \"$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 @@ -6042,10 +6047,10 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:6046: checking for connect" >&5 +echo "configure:6051: checking for connect" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -6091,12 +6096,12 @@ fi xe_msg_checking="for connect in -lsocket" test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6095: checking "$xe_msg_checking"" >&5 +echo "configure:6100: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` xe_check_libs=" -lsocket $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6116: \"$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 @@ -6131,10 +6136,10 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:6135: checking for remove" >&5 +echo "configure:6140: checking for remove" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -6178,12 +6183,12 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:6182: checking for remove in -lposix" >&5 +echo "configure:6187: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` xe_check_libs=" -lposix " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6203: \"$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 @@ -6218,10 +6223,10 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:6222: checking for shmat" >&5 +echo "configure:6227: checking for shmat" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -6265,12 +6270,12 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:6269: checking for shmat in -lipc" >&5 +echo "configure:6274: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` xe_check_libs=" -lipc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6290: \"$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 @@ -6317,12 +6322,12 @@ fi xe_msg_checking="for IceConnectionNumber in -lICE" test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6321: checking "$xe_msg_checking"" >&5 +echo "configure:6326: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` xe_check_libs=" -lICE $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6342: \"$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 @@ -6379,15 +6384,15 @@ EOF ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:6383: checking for Xm/Xm.h" >&5 +echo "configure:6388: 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:6391: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6396: \"$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* @@ -6404,12 +6409,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:6408: checking for XmStringFree in -lXm" >&5 +echo "configure:6413: 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:6429: \"$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 @@ -6572,7 +6577,7 @@ EOF echo "checking for X defines extracted by xmkmf" 1>&6 -echo "configure:6576: checking for X defines extracted by xmkmf" >&5 +echo "configure:6581: checking for X defines extracted by xmkmf" >&5 rm -fr conftestdir if mkdir conftestdir; then cd conftestdir @@ -6621,15 +6626,15 @@ EOF ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:6625: checking for X11/Intrinsic.h" >&5 +echo "configure:6630: checking for X11/Intrinsic.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6633: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6638: \"$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* @@ -6653,12 +6658,12 @@ fi echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:6657: checking for XOpenDisplay in -lX11" >&5 +echo "configure:6662: checking for XOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenDisplay | 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:6678: \"$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 @@ -6694,12 +6699,12 @@ fi xe_msg_checking="for XGetFontProperty in -lX11" test -n "-b i486-linuxaout" && xe_msg_checking="$xe_msg_checking using extra libs -b i486-linuxaout" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6698: checking "$xe_msg_checking"" >&5 +echo "configure:6703: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 -b i486-linuxaout" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6719: \"$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 @@ -6737,12 +6742,12 @@ fi echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:6741: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:6746: checking for XShapeSelectInput in -lXext" >&5 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'` xe_check_libs=" -lXext " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6762: \"$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 @@ -6776,12 +6781,12 @@ fi echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:6780: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:6785: checking for XtOpenDisplay in -lXt" >&5 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lXt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6801: \"$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 @@ -6815,14 +6820,14 @@ fi echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:6819: checking the version of X11 being used" >&5 +echo "configure:6824: checking the version of X11 being used" >&5 cat > conftest.$ac_ext < int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; } EOF -if { (eval echo configure:6826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:6831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest foobar; x11_release=$? else @@ -6853,10 +6858,10 @@ EOF for ac_func in XConvertCase XtRegisterDrawable do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6857: checking for $ac_func" >&5 +echo "configure:6862: 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:6888: \"$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 @@ -6911,15 +6916,15 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6915: checking for $ac_hdr" >&5 +echo "configure:6920: 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:6923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6928: \"$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* @@ -6952,10 +6957,10 @@ done for ac_func in XRegisterIMInstantiateCallback do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6956: checking for $ac_func" >&5 +echo "configure:6961: 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:6987: \"$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 @@ -7006,9 +7011,9 @@ fi done echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6 -echo "configure:7010: checking for standard XRegisterIMInstantiateCallback prototype" >&5 +echo "configure:7015: checking for standard XRegisterIMInstantiateCallback prototype" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7029: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -7041,12 +7046,12 @@ rm -f conftest* test -z "$with_xmu" && { echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6 -echo "configure:7045: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 +echo "configure:7050: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'` xe_check_libs=" -lXmu " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7066: \"$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 @@ -7096,19 +7101,19 @@ EOF echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:7100: checking for main in -lXbsd" >&5 +echo "configure:7105: checking for main in -lXbsd" >&5 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lXbsd " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7117: \"$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 @@ -7132,7 +7137,7 @@ fi if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then if test "$GCC" = "yes"; then echo $ac_n "checking for name of AIX gcc threads option""... $ac_c" 1>&6 -echo "configure:7136: checking for name of AIX gcc threads option" >&5 +echo "configure:7141: checking for name of AIX gcc threads option" >&5 case `$CC -v --help 2>&1` in *-mthreads*) aix_threads=-mthreads ;; *) aix_threads=-pthread ;; @@ -7146,12 +7151,13 @@ echo "configure:7136: checking for name of AIX gcc threads option" >&5 xe_save_CC="$CC" CC="${CC}_r" echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:7150: checking size of short" >&5 +echo "configure:7155: checking size of short" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -7160,7 +7166,7 @@ main() exit(0); } EOF -if { (eval echo configure:7164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -7189,22 +7195,22 @@ EOF fi if test "$with_msw" != "no"; then echo "checking for MS-Windows" 1>&6 -echo "configure:7193: checking for MS-Windows" >&5 +echo "configure:7199: checking for MS-Windows" >&5 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6 -echo "configure:7196: checking for main in -lgdi32" >&5 +echo "configure:7202: checking for main in -lgdi32" >&5 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdi32 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7214: \"$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 @@ -7277,12 +7283,12 @@ EOF fi fi cat > conftest.$ac_ext < int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; } EOF -if { (eval echo configure:7286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then need_event_unixoid=yes; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MSG_SELECT @@ -7346,15 +7352,15 @@ fi if test "$with_x11" = "yes"; then ac_safe=`echo "X11/extensions/shape.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/shape.h""... $ac_c" 1>&6 -echo "configure:7350: checking for X11/extensions/shape.h" >&5 +echo "configure:7356: checking for X11/extensions/shape.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7364: \"$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* @@ -7406,7 +7412,7 @@ case "$x_libraries" in *X11R4* ) esac echo "checking for WM_COMMAND option" 1>&6 -echo "configure:7410: checking for WM_COMMAND option" >&5; +echo "configure:7416: checking for WM_COMMAND option" >&5; if test "$with_wmcommand" != "no"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_WMCOMMAND @@ -7421,15 +7427,15 @@ fi test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no test -z "$with_xauth" && { ac_safe=`echo "X11/Xauth.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xauth.h""... $ac_c" 1>&6 -echo "configure:7425: checking for X11/Xauth.h" >&5 +echo "configure:7431: checking for X11/Xauth.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7439: \"$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* @@ -7452,12 +7458,12 @@ fi } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:7456: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:7462: checking for XauGetAuthByAddr in -lXau" >&5 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'` xe_check_libs=" -lXau " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7478: \"$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 @@ -7513,15 +7519,15 @@ if test "$with_tooltalk" != "no" ; then for dir in "" "Tt/" "desktop/" ; do ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6 -echo "configure:7517: checking for ${dir}tt_c.h" >&5 +echo "configure:7523: checking for ${dir}tt_c.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7531: \"$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* @@ -7557,12 +7563,12 @@ if test "$with_tooltalk" != "no" ; then xe_msg_checking="for tt_message_create in -ltt" test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7561: checking "$xe_msg_checking"" >&5 +echo "configure:7567: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'` xe_check_libs=" -ltt $extra_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7583: \"$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 @@ -7630,15 +7636,15 @@ fi test -z "$with_cde" && { ac_safe=`echo "Dt/Dt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Dt/Dt.h""... $ac_c" 1>&6 -echo "configure:7634: checking for Dt/Dt.h" >&5 +echo "configure:7640: checking for Dt/Dt.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7642: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7648: \"$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* @@ -7661,12 +7667,12 @@ fi } test -z "$with_cde" && { echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:7665: checking for DtDndDragStart in -lDtSvc" >&5 +echo "configure:7671: checking for DtDndDragStart in -lDtSvc" >&5 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'` xe_check_libs=" -lDtSvc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7687: \"$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 @@ -7750,7 +7756,7 @@ fi if test "$with_dragndrop" != "no" ; then echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6 -echo "configure:7754: checking if drag and drop API is needed" >&5 +echo "configure:7760: checking if drag and drop API is needed" >&5 if test -n "$dragndrop_proto" ; then with_dragndrop=yes echo "$ac_t""yes (${dragndrop_proto} )" 1>&6 @@ -7770,18 +7776,18 @@ EOF fi echo "checking for LDAP" 1>&6 -echo "configure:7774: checking for LDAP" >&5 +echo "configure:7780: checking for LDAP" >&5 test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ldap.h""... $ac_c" 1>&6 -echo "configure:7777: checking for ldap.h" >&5 +echo "configure:7783: checking for ldap.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7791: \"$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* @@ -7804,15 +7810,15 @@ fi } test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for lber.h""... $ac_c" 1>&6 -echo "configure:7808: checking for lber.h" >&5 +echo "configure:7814: checking for lber.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7816: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7822: \"$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* @@ -7837,10 +7843,10 @@ if test no != "$with_ldap";then if test . != "${ldap_libs+.}";then ldap_libs= echo $ac_n "checking for ldap_open""... $ac_c" 1>&6 -echo "configure:7841: checking for ldap_open" >&5 +echo "configure:7847: 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:7873: \"$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 @@ -7883,12 +7889,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for ldap_open in -lldap""... $ac_c" 1>&6 -echo "configure:7887: checking for ldap_open in -lldap" >&5 +echo "configure:7893: checking for ldap_open in -lldap" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7909: \"$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 @@ -7921,12 +7927,12 @@ ldap_needs_lber=yes ldap_other_libs=-llber xe_msg_checking="for ldap_open in -lldap" test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7925: checking "$xe_msg_checking"" >&5 +echo "configure:7931: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7947: \"$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 @@ -7959,12 +7965,12 @@ ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb" xe_msg_checking="for ldap_open in -lldap" test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7963: checking "$xe_msg_checking"" >&5 +echo "configure:7969: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7985: \"$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 @@ -7997,12 +8003,12 @@ ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes" xe_msg_checking="for ldap_open in -lldap" test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:8001: checking "$xe_msg_checking"" >&5 +echo "configure:8007: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8023: \"$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 @@ -8043,6 +8049,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:8055: 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:8072: \"$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:8086: 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:8100: \"$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:8116: 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:8130: \"$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 @@ -8060,10 +8162,10 @@ fi else save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS" echo $ac_n "checking for ldap_open""... $ac_c" 1>&6 -echo "configure:8064: checking for ldap_open" >&5 +echo "configure:8166: 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:8192: \"$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 @@ -8126,10 +8228,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:8130: checking for $ac_func" >&5 +echo "configure:8232: 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:8258: \"$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 @@ -8183,20 +8285,20 @@ fi if test "$with_postgresql" != "no"; then echo "checking for PostgreSQL" 1>&6 -echo "configure:8187: checking for PostgreSQL" >&5 +echo "configure:8289: 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:8192: checking for ${header_dir}libpq-fe.h" >&5 +echo "configure:8294: 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:8200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8302: \"$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* @@ -8220,12 +8322,12 @@ fi test -n "$libpq_fe_h_file" && { echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6 -echo "configure:8224: checking for PQconnectdb in -lpq" >&5 +echo "configure:8326: 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:8342: \"$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 @@ -8269,12 +8371,12 @@ EOF echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6 -echo "configure:8273: checking for PQconnectStart in -lpq" >&5 +echo "configure:8375: 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:8391: \"$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 @@ -8333,7 +8435,7 @@ fi if test "$window_system" != "none"; then echo "checking for graphics libraries" 1>&6 -echo "configure:8337: checking for graphics libraries" >&5 +echo "configure:8439: checking for graphics libraries" >&5 libpath_xpm= incpath_xpm= @@ -8359,10 +8461,10 @@ echo "configure:8337: 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:8363: checking for Xpm - no older than 3.4f" >&5 +echo "configure:8465: checking for Xpm - no older than 3.4f" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext < @@ -8371,7 +8473,7 @@ echo "configure:8363: checking for Xpm - no older than 3.4f" >&5 XpmIncludeVersion != XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:8375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8477: \"$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 @@ -8415,17 +8517,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:8419: checking for \"FOR_MSW\" xpm" >&5 +echo "configure:8521: 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:8531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* xpm_for_msw=no else @@ -8451,15 +8553,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:8455: checking for compface.h" >&5 +echo "configure:8557: 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:8463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8565: \"$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* @@ -8482,12 +8584,12 @@ fi } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8486: checking for UnGenFace in -lcompface" >&5 +echo "configure:8588: 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:8604: \"$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 @@ -8550,12 +8652,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:8554: checking for inflate in -lc" >&5 +echo "configure:8656: 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:8672: \"$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 @@ -8585,12 +8687,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:8589: checking for inflate in -lz" >&5 +echo "configure:8691: 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:8707: \"$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 @@ -8620,12 +8722,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:8624: checking for inflate in -lgz" >&5 +echo "configure:8726: 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:8742: \"$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 @@ -8666,15 +8768,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:8670: checking for jpeglib.h" >&5 +echo "configure:8772: 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:8678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8780: \"$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* @@ -8697,12 +8799,12 @@ fi } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:8701: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:8803: 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:8819: \"$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 @@ -8749,10 +8851,10 @@ EOF png_problem="" test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:8753: checking for pow" >&5 +echo "configure:8855: checking for pow" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8881: \"$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 @@ -8796,15 +8898,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:8800: checking for png.h" >&5 +echo "configure:8902: 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:8808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8910: \"$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* @@ -8827,12 +8929,12 @@ fi } test -z "$with_png" && { echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:8831: checking for png_read_image in -lpng" >&5 +echo "configure:8933: 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:8949: \"$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 @@ -8866,10 +8968,10 @@ fi } if test -z "$with_png"; then echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 -echo "configure:8870: checking for workable png version information" >&5 +echo "configure:8972: checking for workable png version information" >&5 xe_check_libs="-lpng -lz" cat > conftest.$ac_ext < int main(int c, char **v) { @@ -8877,7 +8979,7 @@ echo "configure:8870: 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:8881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8983: \"$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 @@ -8920,15 +9022,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:8924: checking for tiffio.h" >&5 +echo "configure:9026: 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:8932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9034: \"$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* @@ -8951,12 +9053,12 @@ fi } test -z "$with_tiff" && { echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:8955: checking for TIFFClientOpen in -ltiff" >&5 +echo "configure:9057: 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:9073: \"$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 @@ -9006,15 +9108,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:9010: checking for compface.h" >&5 +echo "configure:9112: 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:9018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9120: \"$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* @@ -9037,12 +9139,12 @@ fi } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:9041: checking for UnGenFace in -lcompface" >&5 +echo "configure:9143: 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:9159: \"$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 @@ -9092,12 +9194,12 @@ fi if test "$with_x11" = "yes"; then echo "checking for X11 graphics libraries" 1>&6 -echo "configure:9096: checking for X11 graphics libraries" >&5 +echo "configure:9198: checking for X11 graphics libraries" >&5 fi if test "$with_x11" = "yes"; then echo "checking for the Athena widgets" 1>&6 -echo "configure:9101: checking for the Athena widgets" >&5 +echo "configure:9203: checking for the Athena widgets" >&5 case "$with_athena" in "xaw" | "") athena_variant=Xaw athena_3d=no ;; @@ -9113,12 +9215,12 @@ echo "configure:9101: 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:9117: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 +echo "configure:9219: 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:9235: \"$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 @@ -9145,12 +9247,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:9149: checking for $athena_3d_function in -l$athena_variant" >&5 +echo "configure:9251: 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:9267: \"$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 @@ -9192,12 +9294,12 @@ fi else echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:9196: checking for $athena_3d_function in -l$athena_variant" >&5 +echo "configure:9298: 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:9314: \"$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 @@ -9226,12 +9328,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:9230: checking for $athena_3d_function in -lXaw" >&5 +echo "configure:9332: 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:9348: \"$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 @@ -9273,15 +9375,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:9277: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9379: 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:9285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9387: \"$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* @@ -9301,15 +9403,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:9305: checking for X11/Xaw/XawInit.h" >&5 +echo "configure:9407: 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:9313: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9415: \"$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* @@ -9335,15 +9437,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:9339: checking for X11/$athena_variant/XawInit.h" >&5 +echo "configure:9441: 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:9347: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9449: \"$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* @@ -9360,15 +9462,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:9364: checking for X11/$athena_variant/ThreeD.h" >&5 +echo "configure:9466: 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:9372: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9474: \"$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* @@ -9396,15 +9498,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:9400: checking for $athena_variant/XawInit.h" >&5 +echo "configure:9502: 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:9408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9510: \"$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* @@ -9421,15 +9523,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:9425: checking for $athena_variant/ThreeD.h" >&5 +echo "configure:9527: 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:9433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9535: \"$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* @@ -9458,15 +9560,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:9462: checking for X11/Xaw3d/XawInit.h" >&5 +echo "configure:9564: 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:9470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9572: \"$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* @@ -9483,15 +9585,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:9487: checking for X11/Xaw3d/ThreeD.h" >&5 +echo "configure:9589: 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:9495: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9597: \"$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* @@ -9523,15 +9625,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:9527: checking for Xaw3d/XawInit.h" >&5 +echo "configure:9629: 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:9535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9637: \"$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* @@ -9548,15 +9650,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:9552: checking for Xaw3d/ThreeD.h" >&5 +echo "configure:9654: 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:9560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9662: \"$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* @@ -9588,15 +9690,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:9592: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9694: 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:9600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9702: \"$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* @@ -9635,15 +9737,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:9639: checking for Xm/Xm.h" >&5 +echo "configure:9741: 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:9647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9749: \"$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* @@ -9660,12 +9762,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:9664: checking for XmStringFree in -lXm" >&5 +echo "configure:9766: 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:9782: \"$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 @@ -9705,9 +9807,9 @@ fi if test "$have_motif" = "yes"; then echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:9709: checking for Lesstif" >&5 +echo "configure:9811: checking for Lesstif" >&5 cat > conftest.$ac_ext < #ifdef LESSTIF_VERSION @@ -10155,15 +10257,15 @@ concord_includes_found=no if test "$with_concord" != "no"; then ac_safe=`echo "concord.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for concord.h""... $ac_c" 1>&6 -echo "configure:10159: checking for concord.h" >&5 +echo "configure:10261: checking for concord.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10167: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10269: \"$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* @@ -10191,15 +10293,15 @@ if test "$concord_includes_found" = "no" -a "$with_concord" != "no" -a \ c_switch_site="$c_switch_site -I/usr/local/concord/include" ac_safe=`echo "concord.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for concord.h""... $ac_c" 1>&6 -echo "configure:10195: checking for concord.h" >&5 +echo "configure:10297: checking for concord.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10305: \"$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* @@ -10250,7 +10352,7 @@ fi if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:10254: checking for Mule-related features" >&5 +echo "configure:10356: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -10264,15 +10366,15 @@ EOF if test "$with_chise" != "no"; then ac_safe=`echo "chise.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for chise.h""... $ac_c" 1>&6 -echo "configure:10268: checking for chise.h" >&5 +echo "configure:10370: checking for chise.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10276: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10378: \"$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* @@ -10300,15 +10402,15 @@ fi c_switch_site="$c_switch_site -I/usr/local/chise/include" ac_safe=`echo "chise.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for chise.h""... $ac_c" 1>&6 -echo "configure:10304: checking for chise.h" >&5 +echo "configure:10406: checking for chise.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10312: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10414: \"$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* @@ -10387,15 +10489,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10391: checking for $ac_hdr" >&5 +echo "configure:10493: 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:10399: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10501: \"$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* @@ -10426,12 +10528,12 @@ done echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:10430: checking for strerror in -lintl" >&5 +echo "configure:10532: 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:10548: \"$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 @@ -10496,18 +10598,18 @@ EOF fi echo "checking for Mule input methods" 1>&6 -echo "configure:10500: checking for Mule input methods" >&5 +echo "configure:10602: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:10503: checking for XIM" >&5 +echo "configure:10605: checking for XIM" >&5 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6 -echo "configure:10506: checking for XOpenIM in -lX11" >&5 +echo "configure:10608: 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:10624: \"$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 @@ -10542,12 +10644,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:10546: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10648: 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:10664: \"$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 @@ -10581,12 +10683,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:10585: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10687: 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:10703: \"$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 @@ -10662,15 +10764,15 @@ EOF if test "$with_xfs" = "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:10666: checking for XFontSet" >&5 +echo "configure:10768: checking for XFontSet" >&5 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:10669: checking for XmbDrawString in -lX11" >&5 +echo "configure:10771: 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:10787: \"$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 @@ -10721,15 +10823,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:10725: checking for wnn/jllib.h" >&5 +echo "configure:10827: 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:10733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10835: \"$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* @@ -10752,15 +10854,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:10756: checking for wnn/commonhd.h" >&5 +echo "configure:10858: 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:10764: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10866: \"$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* @@ -10785,10 +10887,10 @@ fi for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10789: checking for $ac_func" >&5 +echo "configure:10891: 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:10917: \"$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 @@ -10840,12 +10942,12 @@ done test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:10844: checking for crypt in -lcrypt" >&5 +echo "configure:10946: 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:10962: \"$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 @@ -10891,12 +10993,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:10895: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:10997: 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:11013: \"$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 @@ -10925,12 +11027,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:10929: checking for jl_dic_list_e in -lwnn4" >&5 +echo "configure:11031: 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:11047: \"$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 @@ -10959,12 +11061,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:10963: checking for jl_dic_list_e in -lwnn6" >&5 +echo "configure:11065: 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:11081: \"$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 @@ -10993,12 +11095,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:10997: checking for dic_list_e in -lwnn6_fromsrc" >&5 +echo "configure:11099: 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:11115: \"$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 @@ -11057,12 +11159,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:11061: checking for jl_fi_dic_list in -l$libwnn" >&5 +echo "configure:11163: 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:11179: \"$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 @@ -11108,15 +11210,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:11112: checking for canna/jrkanji.h" >&5 +echo "configure:11214: 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:11120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11222: \"$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* @@ -11143,15 +11245,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:11147: checking for canna/jrkanji.h" >&5 +echo "configure:11249: 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:11155: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11257: \"$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* @@ -11179,15 +11281,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:11183: checking for canna/RK.h" >&5 +echo "configure:11285: 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:11191: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11293: \"$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* @@ -11210,12 +11312,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:11214: checking for RkBgnBun in -lRKC" >&5 +echo "configure:11316: 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:11332: \"$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 @@ -11249,12 +11351,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:11253: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:11355: 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:11371: \"$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 @@ -11314,12 +11416,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:11318: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:11420: 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:11436: \"$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 @@ -11417,10 +11519,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:11421: checking for $ac_func" >&5 +echo "configure:11523: 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:11549: \"$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 @@ -11484,10 +11586,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:11488: checking for $ac_func" >&5 +echo "configure:11590: 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:11616: \"$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 @@ -11539,10 +11641,10 @@ done echo $ac_n "checking for openpty""... $ac_c" 1>&6 -echo "configure:11543: checking for openpty" >&5 +echo "configure:11645: checking for openpty" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11671: \"$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 @@ -11584,12 +11686,12 @@ else echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:11588: checking for openpty in -lutil" >&5 +echo "configure:11690: 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:11706: \"$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 @@ -11635,15 +11737,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11639: checking for $ac_hdr" >&5 +echo "configure:11741: 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:11647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11749: \"$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* @@ -11679,15 +11781,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:11683: checking for $ac_hdr" >&5 +echo "configure:11785: 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:11691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11793: \"$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* @@ -11720,10 +11822,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:11724: checking for $ac_func" >&5 +echo "configure:11826: 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:11852: \"$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 @@ -11777,15 +11879,15 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11781: checking for $ac_hdr" >&5 +echo "configure:11883: 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:11789: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11891: \"$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* @@ -11822,10 +11924,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:11826: checking for $ac_func" >&5 +echo "configure:11928: 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:11954: \"$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 @@ -11881,15 +11983,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:11885: checking for $ac_hdr" >&5 +echo "configure:11987: 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:11893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11995: \"$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* @@ -11925,12 +12027,12 @@ else echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:11929: checking for kstat_open in -lkstat" >&5 +echo "configure:12031: 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:12047: \"$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 @@ -11976,15 +12078,15 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11980: checking for $ac_hdr" >&5 +echo "configure:12082: 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:11988: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12090: \"$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* @@ -12016,12 +12118,12 @@ done echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:12020: checking for kvm_read in -lkvm" >&5 +echo "configure:12122: 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:12138: \"$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 @@ -12066,16 +12168,16 @@ fi fi echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:12070: checking whether netdb declares h_errno" >&5 +echo "configure:12172: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:12079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12181: \"$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 @@ -12095,16 +12197,16 @@ fi rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:12099: checking for sigsetjmp" >&5 +echo "configure:12201: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:12108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12210: \"$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 @@ -12124,11 +12226,11 @@ fi rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:12128: checking whether localtime caches TZ" >&5 +echo "configure:12230: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -12163,7 +12265,7 @@ main() exit (0); } EOF -if { (eval echo configure:12167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=no else @@ -12193,9 +12295,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:12197: checking whether gettimeofday accepts one or two arguments" >&5 +echo "configure:12299: 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:12322: \"$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 @@ -12238,19 +12340,19 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:12242: checking for inline" >&5 +echo "configure:12344: 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:12356: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -12291,17 +12393,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:12295: checking for working alloca.h" >&5 +echo "configure:12397: 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:12305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12407: \"$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 @@ -12325,10 +12427,10 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:12329: checking for alloca" >&5 +echo "configure:12431: checking for alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12462: \"$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 @@ -12395,10 +12497,10 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:12399: checking whether alloca needs Cray hooks" >&5 +echo "configure:12501: 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:12426: checking for $ac_func" >&5 +echo "configure:12528: 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:12554: \"$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 @@ -12478,10 +12580,10 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:12482: checking stack direction for C alloca" >&5 +echo "configure:12584: 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:12606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=1 else @@ -12530,15 +12632,15 @@ fi ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:12534: checking for vfork.h" >&5 +echo "configure:12636: 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:12542: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12644: \"$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* @@ -12566,10 +12668,10 @@ else fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:12570: checking for working vfork" >&5 +echo "configure:12672: checking for working vfork" >&5 cat > conftest.$ac_ext < @@ -12664,7 +12766,7 @@ main() { } } EOF -if { (eval echo configure:12668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_vfork_works=yes else @@ -12690,10 +12792,10 @@ fi echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:12694: checking for working strcoll" >&5 +echo "configure:12796: checking for working strcoll" >&5 cat > conftest.$ac_ext < main () @@ -12703,7 +12805,7 @@ main () strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:12707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -12731,10 +12833,10 @@ fi for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:12735: checking for $ac_func" >&5 +echo "configure:12837: 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:12863: \"$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 @@ -12785,10 +12887,10 @@ fi done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:12789: checking whether getpgrp takes no argument" >&5 +echo "configure:12891: 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:12949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=yes else @@ -12870,10 +12972,10 @@ fi echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:12874: checking for working mmap" >&5 +echo "configure:12976: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext < #include @@ -12906,7 +13008,7 @@ int main (int argc, char *argv[]) return 1; } EOF -if { (eval echo configure:12910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:13012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=yes else @@ -12935,9 +13037,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:12939: checking for M_MMAP_THRESHOLD" >&5 +echo "configure:13041: checking for M_MMAP_THRESHOLD" >&5 cat > conftest.$ac_ext < int main() { @@ -12949,7 +13051,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:12953: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:13055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* rel_alloc=no; echo "$ac_t""yes" 1>&6; else @@ -12974,15 +13076,15 @@ EOF ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:12978: checking for termios.h" >&5 +echo "configure:13080: 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:12986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13088: \"$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* @@ -13025,15 +13127,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:13029: checking for termio.h" >&5 +echo "configure:13131: 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:13037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13139: \"$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* @@ -13065,10 +13167,10 @@ fi echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:13069: checking for socket" >&5 +echo "configure:13171: checking for socket" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13197: \"$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 @@ -13106,15 +13208,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:13110: checking for netinet/in.h" >&5 +echo "configure:13212: 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:13118: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13220: \"$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* @@ -13131,15 +13233,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:13135: checking for arpa/inet.h" >&5 +echo "configure:13237: 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:13143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13245: \"$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* @@ -13164,9 +13266,9 @@ EOF } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:13168: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:13270: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext < @@ -13177,7 +13279,7 @@ int main() { static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:13181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13283: \"$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 @@ -13195,9 +13297,9 @@ else fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6 -echo "configure:13199: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:13301: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -13207,7 +13309,7 @@ int main() { static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:13211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13313: \"$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 @@ -13238,10 +13340,10 @@ fi echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:13242: checking for msgget" >&5 +echo "configure:13344: checking for msgget" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13370: \"$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 @@ -13279,15 +13381,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:13283: checking for sys/ipc.h" >&5 +echo "configure:13385: 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:13291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13393: \"$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* @@ -13304,15 +13406,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:13308: checking for sys/msg.h" >&5 +echo "configure:13410: 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:13316: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13418: \"$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* @@ -13350,15 +13452,15 @@ fi ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:13354: checking for dirent.h" >&5 +echo "configure:13456: 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:13362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13464: \"$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* @@ -13385,15 +13487,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:13389: checking for sys/dir.h" >&5 +echo "configure:13491: 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:13397: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13499: \"$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* @@ -13426,15 +13528,15 @@ fi ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:13430: checking for nlist.h" >&5 +echo "configure:13532: 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:13438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13540: \"$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* @@ -13464,22 +13566,22 @@ fi echo "checking "for sound support"" 1>&6 -echo "configure:13468: checking "for sound support"" >&5 +echo "configure:13570: 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:13475: checking for multimedia/audio_device.h" >&5 +echo "configure:13577: 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:13483: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13585: \"$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* @@ -13535,12 +13637,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:13539: checking for ALopenport in -laudio" >&5 +echo "configure:13641: 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:13657: \"$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 @@ -13582,12 +13684,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:13586: checking for AOpenAudio in -lAlib" >&5 +echo "configure:13688: 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:13704: \"$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 @@ -13643,15 +13745,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:13647: checking for ${dir}/soundcard.h" >&5 +echo "configure:13749: 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:13655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13757: \"$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* @@ -13705,15 +13807,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:13709: checking for audio/audiolib.h" >&5 +echo "configure:13811: 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:13717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13819: \"$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* @@ -13731,12 +13833,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:13735: checking for AuOpenServer in -laudio" >&5 +echo "configure:13837: 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:13853: \"$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 @@ -13786,7 +13888,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 @@ -13817,7 +13919,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:13821: checking for $ac_word" >&5 +echo "configure:13923: 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. @@ -13846,10 +13948,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:13850: checking for esd_play_stream" >&5 +echo "configure:13952: 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:13978: \"$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 @@ -13923,7 +14025,7 @@ test -z "$with_tty" && with_tty=yes if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:13927: checking for TTY-related features" >&5 +echo "configure:14029: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -13939,12 +14041,12 @@ EOF if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:13943: checking for tgetent in -lncurses" >&5 +echo "configure:14045: 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:14061: \"$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 @@ -13988,15 +14090,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:13992: checking for ncurses/curses.h" >&5 +echo "configure:14094: 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:14000: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14102: \"$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* @@ -14018,15 +14120,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:14022: checking for ncurses/term.h" >&5 +echo "configure:14124: 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:14030: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14132: \"$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* @@ -14056,15 +14158,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:14060: checking for ncurses/curses.h" >&5 +echo "configure:14162: 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:14068: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14170: \"$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* @@ -14099,12 +14201,12 @@ fi for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:14103: checking for tgetent in -l$lib" >&5 +echo "configure:14205: 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:14221: \"$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 @@ -14140,12 +14242,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:14144: checking for tgoto in -ltermcap" >&5 +echo "configure:14246: 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:14262: \"$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 @@ -14201,12 +14303,12 @@ fi else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:14205: checking for tgetent in -lcurses" >&5 +echo "configure:14307: 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:14323: \"$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 @@ -14235,12 +14337,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:14239: checking for tgetent in -ltermcap" >&5 +echo "configure:14341: 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:14357: \"$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 @@ -14300,15 +14402,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:14304: checking for gpm.h" >&5 +echo "configure:14406: 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:14312: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14414: \"$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* @@ -14326,12 +14428,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:14330: checking for Gpm_Open in -lgpm" >&5 +echo "configure:14432: 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:14448: \"$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 @@ -14401,20 +14503,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:14405: checking for database support" >&5 +echo "configure:14507: 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:14410: checking for ndbm.h" >&5 +echo "configure:14512: 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:14418: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14520: \"$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* @@ -14444,12 +14546,12 @@ fi if test "$with_database_gdbm" != "no"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:14448: checking for dbm_open in -lgdbm" >&5 +echo "configure:14550: 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:14566: \"$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 @@ -14488,10 +14590,10 @@ fi if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:14492: checking for dbm_open" >&5 +echo "configure:14594: 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:14620: \"$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 @@ -14533,12 +14635,12 @@ else echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:14537: checking for dbm_open in -ldbm" >&5 +echo "configure:14639: 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:14655: \"$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 @@ -14589,10 +14691,10 @@ EOF echo $ac_n "checking for u_int8_t""... $ac_c" 1>&6 -echo "configure:14593: checking for u_int8_t" >&5 +echo "configure:14695: checking for u_int8_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14633,10 +14735,10 @@ EOF fi echo $ac_n "checking for u_int16_t""... $ac_c" 1>&6 -echo "configure:14637: checking for u_int16_t" >&5 +echo "configure:14739: checking for u_int16_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14677,10 +14779,10 @@ EOF fi echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6 -echo "configure:14681: checking for u_int32_t" >&5 +echo "configure:14783: checking for u_int32_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14721,10 +14823,10 @@ EOF fi echo $ac_n "checking for u_int64_t""... $ac_c" 1>&6 -echo "configure:14725: checking for u_int64_t" >&5 +echo "configure:14827: checking for u_int64_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14767,12 +14869,12 @@ fi if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:14771: checking for Berkeley db.h" >&5 +echo "configure:14873: checking for Berkeley db.h" >&5 for header in "db/db.h" "db.h"; do case "$opsys" in *freebsd*) cat > conftest.$ac_ext < @@ -14788,7 +14890,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -14799,7 +14901,7 @@ rm -f conftest* ;; *) cat > conftest.$ac_ext < @@ -14829,7 +14931,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -14847,9 +14949,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:14851: checking for Berkeley DB version" >&5 +echo "configure:14953: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -14861,7 +14963,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 @@ -14888,10 +14990,10 @@ fi rm -f conftest* echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:14892: checking for $dbfunc" >&5 +echo "configure:14994: checking for $dbfunc" >&5 cat > conftest.$ac_ext <&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* eval "ac_cv_func_$dbfunc=yes" else @@ -14933,12 +15035,12 @@ else echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:14937: checking for $dbfunc in -ldb" >&5 +echo "configure:15039: 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:15055: \"$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 @@ -15023,12 +15125,12 @@ fi if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:15027: checking for SOCKSinit in -lsocks" >&5 +echo "configure:15129: 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:15145: \"$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 @@ -15094,7 +15196,7 @@ fi if test "$with_modules" != "no"; then echo "checking for module support" 1>&6 -echo "configure:15098: checking for module support" >&5 +echo "configure:15200: checking for module support" >&5 if test "$with_msw" = "yes"; then have_dl=yes; @@ -15110,15 +15212,15 @@ EOF ;; *) ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:15114: checking for dlfcn.h" >&5 +echo "configure:15216: 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:15122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:15224: \"$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* @@ -15135,16 +15237,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:15139: checking for dlopen in -lc" >&5 +echo "configure:15241: checking for dlopen in -lc" >&5 cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:15148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -15153,18 +15255,18 @@ else rm -rf conftest* echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:15157: checking for dlopen in -ldl" >&5 +echo "configure:15259: 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:15168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -15193,12 +15295,12 @@ EOF else echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:15197: checking for shl_load in -ldld" >&5 +echo "configure:15299: 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:15315: \"$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 @@ -15236,12 +15338,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:15240: checking for dld_init in -ldld" >&5 +echo "configure:15342: 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:15358: \"$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 @@ -15299,7 +15401,7 @@ xehost=$canonical xealias=$internal_configuration echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:15303: checking how to build dynamic libraries for ${xehost}" >&5 +echo "configure:15405: checking how to build dynamic libraries for ${xehost}" >&5 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. case "$xehost" in *-*-linux-gnu*) ;; @@ -15327,9 +15429,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:15331: checking checking whether we are using GNU C" >&5 +echo "configure:15433: checking checking whether we are using GNU C" >&5 cat > conftest.$ac_ext <&6 -echo "configure:15355: checking how to produce PIC code" >&5 +echo "configure:15457: checking how to produce PIC code" >&5 wl= can_build_shared=yes @@ -15452,18 +15554,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:15456: checking if PIC flag ${dll_cflags} really works" >&5 +echo "configure:15558: 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:15569: \"$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 @@ -15494,7 +15596,7 @@ cc_produces_so=no xldf= xcldf= echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6 -echo "configure:15498: checking if C compiler can produce shared libraries" >&5 +echo "configure:15600: checking if C compiler can produce shared libraries" >&5 if test "$XEGCC" = yes -o "$__ICC" = yes; then xcldf="-shared" xldf="-shared" @@ -15545,14 +15647,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:15658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cc_produces_so=yes else @@ -15577,7 +15679,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:15581: checking for ld used by GCC" >&5 +echo "configure:15683: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -15603,7 +15705,7 @@ echo "configure:15581: checking for ld used by GCC" >&5 esac else echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:15607: checking for GNU ld" >&5 +echo "configure:15709: checking for GNU ld" >&5 fi if test -z "$LTLD"; then @@ -15641,7 +15743,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:15645: checking if the linker is GNU ld" >&5 +echo "configure:15747: 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 @@ -15669,7 +15771,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:15673: checking whether the linker supports shared libraries" >&5 +echo "configure:15775: checking whether the linker supports shared libraries" >&5 dll_ld=$CC dll_ldflags=$LDFLAGS ld_shlibs=yes @@ -15880,10 +15982,10 @@ EOF for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15884: checking for $ac_func" >&5 +echo "configure:15986: 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:16012: \"$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 @@ -15945,11 +16047,11 @@ done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:16055: \"$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 c1446af..4642dcd 100644 --- a/configure.in +++ b/configure.in @@ -3219,6 +3219,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 @@ -3240,6 +3241,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/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/info/xemacs-faq.info-1 b/info/xemacs-faq.info-1 new file mode 100644 index 0000000..8bed6c0 --- /dev/null +++ b/info/xemacs-faq.info-1 @@ -0,0 +1,7673 @@ +This is ../info/xemacs-faq.info, produced by makeinfo version 4.8 from +xemacs-faq.texi. + +INFO-DIR-SECTION XEmacs Editor +START-INFO-DIR-ENTRY +* FAQ: (xemacs-faq). XEmacs FAQ. +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 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 --- + +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 + +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 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, +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 . Include +`XEmacs FAQ' on the Subject: line. + +* Menu: + +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 + +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 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 + +Q1.0.2: What is the current version of XEmacs? +---------------------------------------------- + +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 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: How do you pronounce 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: 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: Who wrote XEmacs? +------------------------- + +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. + +CODING +------ + +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. + + Primary XEmacs-specific subsystems and their authors: + +Objects + - Conversion from 26-bit to 28-bit pointers and integers, + lrecords, lcrecords: Richard Mlynarik, 1994 + + - Conversion to 32-bit pointers and 31-bit integers: Kyle + Jones, Martin Buchholz + + - Portable dumper, object descriptions: Olivier Galibert + + - KKCC (new garbage collector), ephemerons, weak boxes: Michael + Sperber and students + + - Random object work (object equal and hash methods, weak + lists, lcrecord lists, bit vectors, dynarr, blocktype, + opaque, string resizing): Ben Wing + + - Profiling: Ben Wing + + - Some byte-compilation and hash-table improvements: Martin + Buchholz + + - Bignum: Jerry James + +Internationalization/Mule + - mostly Ben Wing; many ideas for future work, Stephen Turnbull + +I/O + - Basic event/event-stream implementation: Jamie Zawinski + + - Most event work since 1994: Ben Wing + + - Asynchronous stuff (async timeouts, signals, quit-checking): + Ben Wing + + - Process method abstraction, Windows process work: Kirill + Katsnelson + + - Misc-user events, async timeouts, most quit-checking and + signal code, most other work since 1994: Ben Wing + + - Lstreams: Ben Wing + +Display + - Redisplay mechanism: implementation, Chuck Thompson; + additional work, lots of people + + - Glyphs: mostly Ben Wing + + - Specifiers: Ben Wing + + - Extents: initial implementation, someone at Lucid; rewrite, + 1994, Ben Wing + + - Widgets: Andy Piper + + - JPEG/PNG/TIFF image converters: Ben Wing, William Perry, + Jareth Hein, others (see comment in `glyphs-eimage.c') + + - Menus: Jamie Zawinski, someone at Lucid (Lucid menus) + + - Scrollbars: Chuck Thompson, ??? (Lucid scrollbar) + + - Multi-device/device-independence work (console/device/etc + methods): Ben Wing, prototype by chuck thompson + + - Faces: first implementation, Jamie Zawinski; second, chuck; + third, Ben Wing + + - Fonts/colors: first implementation, Jamie Zawinski; further + work, Ben Wing + + - Toolbars: implementation, chuck, much interface work, Ben Wing + + - Gutters, tabs: andy piper + +Device subsystems + - X Windows: Jamie Zawinksi, Ben Wing, others + + - GTK: William Perry, Malcolm Purvis + + - MS Windows: initial implementation, Jonathan Harris; some + more work, Andy Piper, Ben Wing + + - TTY: Chuck Thompson, Ben Wing + + - Cygwin: Andy Piper + +Misc + - Configure: initial porting from fsf, Chuck Thompson; + conversion to autoconf 2, much rewriting, Martin Buchholz + + - Most initialization-related code: Ben Wing + + - Internals manual, much of Lisp manual: Ben Wing + + - FSF synching: initial sync with FSF 19, Richard Mlynarik, + further work, Ben Wing + +SUPPORT +------- + +Currently, support duties are handled by many different people. + + Release managers have been + + - 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) + + - Vin Shelton (Mar 1997 - Jan 2001, May 2003 - present, 19.16, + 21.1.3 - 21.1.14, 21.4.13 - present) + + - Steve Youngs (July 2002 - September 2003, 21.5.8 - 21.5.16) + + - 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) + + - Steve Baur (early 1997 - December 1998, February 1999 - November + 1999, 19.15 - 21.2.5, 21.2.9 - 21.2.20) + + - Andy Piper (December 1998, 21.2.6) + + - Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14) + + - Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10) + + The recent overlapping dates are intentional, since two or three +trees are maintained simultaneously at any point. + + Other major support work: + + - Adrian Aichner wrote and maintains the web site. + + - 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. + + - Steve Youngs currently produces the beta releases (???). + + - Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns + maintaining the packages. + + - Vin Shelton maintains the stable releases. + + - Testing - #### Norbert, Adrian, ??? + + Portraits and email of some of the major developers: + + * Andy Piper + + * Ben Wing + + * Chuck Thompson + + * Hrvoje Niksic + + * Jamie Zawinski + + * Martin Buchholz + + * Richard Mlynarik + + * Stephen Turnbull + + * Steve Baur + + 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.0.6, Next: Q1.1.1, Prev: Q1.0.5, Up: Introduction + +Q1.0.6: Who wrote the FAQ? +-------------------------- + +The current version of this FAQ was created by Ben Wing +. + + Previous contributors to the FAQ include + + * SL Baur + + * Hrvoje Niksic + + * 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 + +1.1: Getting XEmacs +=================== + + +File: xemacs-faq.info, Node: Q1.1.1, Next: Q1.1.2, Prev: Q1.0.6, Up: Introduction + +Q1.1.1: Where can I find XEmacs? +-------------------------------- + +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. + + 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.1.2, Next: Q1.1.3, Prev: Q1.1.1, Up: Introduction + +Q1.1.2: Are binaries available? +------------------------------- + +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. + + 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.1.3, Next: Q1.1.4, Prev: Q1.1.2, Up: Introduction + +Q1.1.3: How do I get the bleeding-edge sources? +----------------------------------------------- + +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.1.4, Next: Q1.2.1, Prev: Q1.1.3, Up: Introduction + +Q1.1.4: 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'. + +1.2: Versions for Different Operating Systems +============================================= + + +File: xemacs-faq.info, Node: Q1.2.1, Next: Q1.2.2, Prev: Q1.1.4, Up: Introduction + +Q1.2.1: 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: 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. + + 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.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). + + +File: xemacs-faq.info, Node: Q1.2.4, Next: Q1.2.5, Prev: Q1.2.3, Up: Introduction + +Q1.2.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: 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. + + +File: xemacs-faq.info, Node: Q1.2.6, Next: Q1.2.7, Prev: Q1.2.5, Up: Introduction + +Q1.2.6: 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 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. + + + +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. + + +File: xemacs-faq.info, Node: Q1.2.8, Next: Q1.2.9, Prev: Q1.2.7, Up: Introduction + +Q1.2.8: Is there a port of XEmacs to the Macintosh? +--------------------------------------------------- + +Yes. + + XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it +certainly will not feel very much like a Mac application as it has no +Mac-specific code in it. + + There is also a port of XEmacs 19.14 that works on all recent +versions of MacOS, from 8.1 through MacOS X, by 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'. + + +File: xemacs-faq.info, Node: Q1.2.9, Next: Q1.2.10, Prev: Q1.2.8, Up: Introduction + +Q1.2.9: Is there a port of XEmacs to MS-DOS? +-------------------------------------------- + +No. We have never supported running on MS-DOS or Windows 3.1, and in +fact have long since deleted all MS-DOS-related code. We're not +particularly interested in patches for these platforms, as they would +introduce huge amounts of code clutter due to the woefully +underfeatured nature of these systems. (See GNU Emacs for a port to +MS-DOS.) + + +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.2.11, Next: Q1.2.12, Prev: Q1.2.10, Up: Introduction + +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. + +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 +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.3.2, Next: Q1.3.3, Prev: Q1.3.1, Up: Introduction + +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. + + 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.3.3, Next: Q1.3.4, Prev: Q1.3.2, Up: Introduction + +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 +`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.3.5, Next: Q1.3.6, Prev: Q1.3.4, Up: Introduction + +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 +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.3.6, Next: Q1.3.7, Prev: Q1.3.5, Up: Introduction + +Q1.3.6: 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.3.7, Next: Q1.3.8, Prev: Q1.3.6, Up: Introduction + +Q1.3.7: 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: Q1.3.8, Next: Q1.4.1, Prev: Q1.3.7, Up: Introduction + +Q1.3.8: What is `Custom'? +------------------------- + +`Custom' is a system for customizing XEmacs options. + + 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'. + + 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 + +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: + + 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 +xbm2face (included in the compface distribution at XEmacs.org) to do the +conversion. + + Contributors for this item: + + Paul Emsley, Ricardo Marek, Amir J. Katz, Glen McCort, Heinz Uphoff, +Peter Arius, Paul Harrison, and Vegard Vesterheim + +6.1: Reading Mail with VM +========================= + + +File: xemacs-faq.info, Node: Q6.1.1, Next: Q6.1.2, Prev: Q6.0.11, Up: Internet + +Q6.1.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: 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: + + ;;; 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: 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 new file mode 100644 index 0000000..78554cb --- /dev/null +++ b/info/xemacs-faq.info-2 @@ -0,0 +1,814 @@ +This is ../info/xemacs-faq.info, produced by makeinfo version 4.8 from +xemacs-faq.texi. + +INFO-DIR-SECTION XEmacs Editor +START-INFO-DIR-ENTRY +* FAQ: (xemacs-faq). XEmacs FAQ. +END-INFO-DIR-ENTRY + + +File: xemacs-faq.info, Node: Q7.2.2, Next: Q7.2.3, Prev: Q7.2.1, Up: Advanced + +Q7.2.2: XEmacs segfaults when I use very big numbers! +----------------------------------------------------- + +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. + + 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: Q7.2.3, Next: Q7.2.4, Prev: Q7.2.2, Up: Advanced + +Q7.2.3: Bignums are really slow! +-------------------------------- + +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: Q7.2.4, Prev: Q7.2.3, Up: Advanced + +Q7.2.4: Equal bignums don't compare as equal! What gives? +---------------------------------------------------------- + +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. + + 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: Other Packages, Next: Current Events, Prev: Advanced, Up: Top + +8 Other External Packages +************************* + +This is part 8 of the XEmacs Frequently Asked Questions list. This +section is devoted to miscellaneous external packages not covered +elsewhere in XEmacs. + +* Menu: + +8.0: TeX +* Q8.0.1:: Is there something better than LaTeX mode? +* Q8.0.2:: What is AUCTeX? Where do you get it? +* Q8.0.3:: Problems installing AUCTeX. +* Q8.0.4:: How do I turn off current chapter from AUCTeX modeline? + +8.1: Other Unbundled Packages +* Q8.1.1:: Is there a reason for an Emacs package not to be included in XEmacs? +* Q8.1.2:: Are there any Emacs Lisp Spreadsheets? +* Q8.1.3:: Is there a MatLab mode? + +8.2: Environments Built Around XEmacs +* Q8.2.1:: What are SPARCworks, EOS, and WorkShop? +* Q8.2.2:: How do I start the Sun Workshop support in XEmacs 21? +* Q8.2.3:: What is/was Energize? +* Q8.2.4:: What is Infodock? + +8.0: TeX +======== + + +File: xemacs-faq.info, Node: Q8.0.1, Next: Q8.0.2, Prev: Other Packages, Up: Other Packages + +Q8.0.1: 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 AUCTeX (*note What is + AUCTeX? Where do you get it?: Q8.0.2.). + + +File: xemacs-faq.info, Node: Q8.0.2, Next: Q8.0.3, Prev: Q8.0.1, Up: Other Packages + +Q8.0.2: What is AUCTeX? Where do you get it? +--------------------------------------------- + +AUCTeX is a complex and sophisticated editing package dedicated to TeX +and related text formatting languages, including LaTeX and Texinfo. It +provides support for running TeX on a file or part of a file, include +files, and of course shortcuts for entering common TeX macros, LaTeX +environments, etc, and for fontlock. + + AUCTeX is a standard package provided by XEmacs. You can get it as +usual through the `M-x list-packages' interface. It is also included +in the (non-Mule) SUMO package. The AUCTeX XEmacs package is +maintained by Uwe Brauer . + + 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: Q8.0.3, Next: Q8.0.4, Prev: Q8.0.2, Up: Other Packages + +Q8.0.3: Problems installing AUCTeX. +----------------------------------- + +Jan Vroonhof 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... + + Most problems with AUCTeX are one of two things: + + * The TeX-lisp-directory in `tex-site.el' and the makefile don't + match. + + Fix: make sure you configure AUCTeX 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: Q8.0.4, Next: Q8.1.1, Prev: Q8.0.3, Up: Other Packages + +Q8.0.4: How do I turn off current chapter from AUCTeX modeline? +--------------------------------------------------------------- + +With AUCTeX, fast typing is hard because the current chapter, section +etc. are given in the modeline. How can I turn this off? + + It's not AUCTeX, 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) + +8.1: Other Unbundled Packages +============================= + + +File: xemacs-faq.info, Node: Q8.1.1, Next: Q8.1.2, Prev: Q8.0.4, Up: Other Packages + +Q8.1.1: 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: Q8.1.2, Next: Q8.1.3, Prev: Q8.1.1, Up: Other Packages + +Q8.1.2: Are there any Emacs Lisp Spreadsheets? +---------------------------------------------- + +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: Q8.1.3, Next: Q8.2.1, Prev: Q8.1.2, Up: Other Packages + +Q8.1.3: Is there a MatLab mode? +------------------------------- + +Yes, a matlab mode and other items are available at the +`http://www.mathworks.com/matlabcentral/files/104/matlab.el'. + +8.2: Environments Built Around XEmacs +===================================== + + +File: xemacs-faq.info, Node: Q8.2.1, Next: Q8.2.2, Prev: Q8.1.3, Up: Other Packages + +Q8.2.1: What are SPARCworks, EOS, and WorkShop? +----------------------------------------------- + +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. + + 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. + + 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. + + 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: Q8.2.2, Next: Q8.2.3, Prev: Q8.2.1, Up: Other Packages + +Q8.2.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: Q8.2.3, Next: Q8.2.4, Prev: Q8.2.2, Up: Other Packages + +Q8.2.3: What is/was Energize? +----------------------------- + +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: Q8.2.4, Prev: Q8.2.3, Up: Other Packages + +Q8.2.4: 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. + + +File: xemacs-faq.info, Node: Current Events, Next: Legacy Versions, Prev: Other Packages, Up: Top + +9 What the Future Holds +*********************** + +This is part 9 of the XEmacs Frequently Asked Questions list. This +section will change frequently, and (in theory) should contain any +interesting items that have transpired recently. (But in practice it's +not getting updated like this.) + + 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: + +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? + +9.0: Changes +============ + + +File: xemacs-faq.info, Node: Q9.0.1, Next: Q9.0.2, Prev: Current Events, Up: Current Events + +Q9.0.1: What new features will be in XEmacs soon? +------------------------------------------------- + +#### Write me. + + +File: xemacs-faq.info, Node: Q9.0.2, Next: Q9.0.3, Prev: Q9.0.1, Up: Current Events + +Q9.0.2: What's new in XEmacs 21.4? +---------------------------------- + +21.4 was the "stable" version of the 21.2 series, which was considered +"experimental" throughout its life; thus there were no "official" +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: Q9.0.3, Next: Q9.0.4, Prev: Q9.0.2, Up: Current Events + +Q9.0.3: What's new in XEmacs 21.1? +---------------------------------- + +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? +---------------------------------- + +XEmacs 20.4 is a bugfix release with no user-visible changes. + + +File: xemacs-faq.info, Node: Q9.0.5, Next: Q9.0.6, Prev: Q9.0.4, Up: Current Events + +Q9.0.5: What's new in XEmacs 20.3? +---------------------------------- + +XEmacs 20.3 was released in November 1997. It contains many bugfixes, +and a number of new features, including Autoconf 2 based configuration, +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: Q9.0.6, Prev: Q9.0.5, Up: Current Events + +Q9.0.6: What's new in XEmacs 20.2? +---------------------------------- + +The biggest changes in 20.2 include integration of EFS (the next +generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a +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 + +10 New information about old XEmacsen +************************************* + +This is part 10 of the XEmacs Frequently Asked Questions list. It will +occasionally be updated to reflect new information about versions which +are no longer being revised by the XEmacs Project. The primary purpose +is advice on compatibility of older XEmacsen with new packages and +updated versions of packages, but bug fixes (which will not be applied +to released XEmacsen, but users can apply themselves) are also accepted. + +* Menu: + +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. + +10.0: XEmacs 21.1 +================= + + +File: xemacs-faq.info, Node: Q10.0.1, Next: Q10.0.2, Prev: Legacy Versions, Up: Legacy Versions + +Q10.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. + + +File: xemacs-faq.info, Node: Q10.0.2, Prev: Q10.0.1, Up: Legacy Versions + +Q10.0.2: XEmacs won't start on Windows in XEmacs 21.1. +------------------------------------------------------ + +XEmacs relies on a process called "dumping" to generate a working +executable. Under MS-Windows this process effectively fixes the memory +addresses of information in the executable. When XEmacs starts up it +tries to reserve these memory addresses so that the dumping process can +be reversed - putting the information back at the correct addresses. +Unfortunately some .DLLs (for instance the soundblaster driver) occupy +memory addresses that can conflict with those needed by the dumped +XEmacs executable. In this instance XEmacs will fail to start without +any explanation. Note that this is extremely machine specific. + + 21.1.10 includes a fix for this that makes more intelligent guesses +about which memory addresses will be free, and this should cure the +problem for most people. 21.4 implements "portable dumping", which +eliminates the problem altogether. We recommend you use the 21.4 +binaries, but you can use the 21.1 binaries if you are very paranoid +about stability. *Note Are binaries available?: Q1.1.2. + + diff --git a/lisp/ChangeLog b/lisp/ChangeLog index aca6f6f..d57a7fa 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1357,6 +1357,51 @@ * files.el (insert-file-contents-literally): Treat file as binary; call file-name-handlers. [sync with Emacs 20.3.10] +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 @@ -1412,7 +1457,7 @@ fixing false temporary load-path shadows reported after package installation and simplifying code. -2005-10-18 Ville Skyttä +2005-10-18 Ville Skyttä * package-get.el (package-get-download-sites): Sync mirrors list with the XEmacs website. @@ -1459,7 +1504,7 @@ * simple.el (shifted-motion-keys-select-region): Fix statement about unshifted-motion-keys-deselect-region. -2004-12-15 Ville Skyttä +2004-12-15 Ville Skyttä * bytecomp-runtime.el (make-obsolete): Add 3rd argument (no-op for now) for GNU Emacs compatibility. @@ -2039,7 +2084,7 @@ * isearch-mode.el (isearch-mode-map): GR (and C1) is printable. -2003-01-06 Ville Skyttä +2003-01-06 Ville Skyttä * menubar-items.el (default-menubar): Use browse-url-mozilla instead of browse-url-gnome-moz for Mozilla. @@ -2048,13 +2093,13 @@ * XEmacs 21.4.11 "Native Windows TTY Support" is released. -2002-12-27 Ville Skyttä +2002-12-27 Ville Skyttä * files.el (auto-mode-alist): Remove redundant entries for modes that live in packages. (interpreter-mode-alist): Ditto. -2002-03-17 Ville Skyttä +2002-03-17 Ville Skyttä * menubar-items.el (default-menubar): Sync with current browse-url-xemacs.el. @@ -2078,7 +2123,7 @@ (font-lock-fontify-keywords-region): Supply the argument to font-lock-compile-keywords. -2002-09-22 Ville Skyttä +2002-09-22 Ville Skyttä * package-get.el (package-get-download-sites): Bring sites list up to date, prefer xx.xemacs.org addresses. @@ -2098,7 +2143,7 @@ * gutter-items.el (set-progress-feedback-instantiator): Fix bad merge. -2002-09-02 Ville Skyttä +2002-09-02 Ville Skyttä * bytecomp-runtime.el (make-obsolete): Docstring argument nit. (make-obsolete-variable): Ditto. @@ -2130,7 +2175,7 @@ * XEmacs 21.4.9 "Informed Management" is released. -2002-06-22 Ville Skyttä +2002-06-22 Ville Skyttä * subr.el (add-to-list): Sync with GNU Emacs 21.2, adding the "&optional append" argument. @@ -2150,7 +2195,7 @@ * simple.el (join-line): New alias for `delete-indentation'. -2002-08-02 Ville Skyttä +2002-08-02 Ville Skyttä * font-lock.el: Some faces and doc typo fixes from GNU Emacs. (font-lock-doc-face): New alias to font-lock-doc-string-face. @@ -2229,7 +2274,7 @@ * find-paths.el (paths-find-architecture-directory): Search in `system-configuration'/`base', not `base'`system-configuration'. -2002-06-23 Ville Skyttä +2002-06-23 Ville Skyttä * info.el (Info-index): Add missing \ in [ t]. @@ -2399,7 +2444,7 @@ * startup.el (normal-top-level): Prevent migration code from trashing .emacs on an error in loading the init files. -2002-03-14 Ville Skyttä +2002-03-14 Ville Skyttä * files.el (auto-mode-alist): GNUmakefile is a Makefile, "system default" Xdefaults and friends get xrdb-mode. @@ -2442,7 +2487,7 @@ 2002-02-03 Adrian Aichner * printer.el (generic-print-region): Pass correct arguments to - lpr-region. Thanks to Nevin Kapur and Björn + lpr-region. Thanks to Nevin Kapur and Björn Torkelsson . 2002-01-09 John Paul Wallington 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/netinstall/ChangeLog b/netinstall/ChangeLog index f02e55e..cad132a 100644 --- a/netinstall/ChangeLog +++ b/netinstall/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/src/ChangeLog b/src/ChangeLog index af44b67..16c029e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -5870,6 +5870,46 @@ (Vcharset_thai_tis620): Likewise. (Vcharset_katakana_jisx0201): Likewise. +2006-01-28 Vin Shelton + + * XEmacs 21.4.19 is released + +2006-01-20 Rick Rankin + + * sysdir.h: Workaround missing d_ino field from 'struct dirent'. + +2005-12-24 Aidan Kehoe + + * objects-gtk.c (MAX_FONT_COUNT): Increase MAX_FONT_COUNT from + 5000 to INT_MAX. + +2005-12-05 Dr. Volker Zell + + * database.c: Suppress compiler warning under Cygwin. + * database.c: Removed __FreeBSD__ check, should be handled by + HAVE_U_xxx_T defines. + +2005-12-18 Malcolm Purvis + + * console.c (stuff_buffered_input): Compile body only if + HAVE_TTY. + +2005-05-10 Aidan Kehoe + + * callproc.c: #include sysdir.h, so that any appropriate Mule + magic happens with the chdir() call when calling a subprocess. + +2005-12-06 Aidan Kehoe + + * mule-ccl.c (POSSIBLE_LEADING_BYTE_P): Add. + * mule-ccl.c: Check that a character set exists before using it + to create a character. + +2005-12-06 Vin Shelton + + * objects-x.c (MAX_FONT_COUNT): Increase MAX_FONT_COUNT from 5000 + to INT_MAX. + 2005-12-03 Vin Shelton * XEmacs 21.4.18 is released diff --git a/src/database.c b/src/database.c index 47f4f70..2edbee4 100644 --- a/src/database.c +++ b/src/database.c @@ -43,9 +43,10 @@ Boston, MA 02111-1307, USA. */ /* glibc 2.1 doesn't have this problem with DB 2.x */ #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1) #ifdef HAVE_INTTYPES_H +#ifndef __BIT_TYPES_DEFINED__ #define __BIT_TYPES_DEFINED__ +#endif #include -#ifndef __FreeBSD__ #if !HAVE_U_INT8_T typedef uint8_t u_int8_t; #endif @@ -60,7 +61,6 @@ typedef uint32_t u_int32_t; typedef uint64_t u_int64_t; #endif #endif /* WE_DONT_NEED_QUADS */ -#endif /* !defined(__FreeBSD__) */ #endif /* HAVE_INTTYPES_H */ #endif /* !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1) */ /* Berkeley DB wants __STDC__ to be defined; else if does `#define const' */ diff --git a/src/mule-ccl.c b/src/mule-ccl.c index 83309a4..fccab69 100644 --- a/src/mule-ccl.c +++ b/src/mule-ccl.c @@ -833,6 +833,9 @@ static int stack_idx_of_map_multiple; } \ } while (0) +#define POSSIBLE_LEADING_BYTE_P(leading_byte) \ + ((leading_byte > MIN_LEADING_BYTE) && \ + (leading_byte - MIN_LEADING_BYTE) < NUM_LEADING_BYTES) /* Set C to the character code made from CHARSET and CODE. This is like MAKE_CHAR but check the validity of CHARSET and CODE. If they @@ -1297,6 +1300,16 @@ ccl_driver (struct ccl_program *ccl, reg[rrr] = i; reg[RRR] = LEADING_BYTE_ASCII; } + /* Previously, these next two elses were reversed in order, + which should have worked fine, but is more fragile than + this order. */ + else if (LEADING_BYTE_CONTROL_1 == i) + { + if (src >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = i; + reg[rrr] = (*src++ - 0xA0); + } else if (i <= MAX_LEADING_BYTE_OFFICIAL_1) { if (src >= src_end) @@ -1360,15 +1373,29 @@ ccl_driver (struct ccl_program *ccl, #ifndef UTF2000 case CCL_WriteMultibyteChar2: i = reg[RRR]; /* charset */ - if (i == LEADING_BYTE_ASCII || i == LEADING_BYTE_CONTROL_1) + if (i == LEADING_BYTE_ASCII) i = reg[rrr] & 0xFF; - else if (XCHARSET_DIMENSION (CHARSET_BY_LEADING_BYTE (i)) == 1) - i = (((i - FIELD2_TO_OFFICIAL_LEADING_BYTE) << 7) - | (reg[rrr] & 0x7F)); - else if (i < MAX_LEADING_BYTE_OFFICIAL_2) - i = ((i - FIELD1_TO_OFFICIAL_LEADING_BYTE) << 14) | reg[rrr]; - else - i = ((i - FIELD1_TO_PRIVATE_LEADING_BYTE) << 14) | reg[rrr]; + else if (LEADING_BYTE_CONTROL_1 == i) + i = ((reg[rrr] & 0xFF) - 0xA0); + else if (POSSIBLE_LEADING_BYTE_P(i) && + !NILP(CHARSET_BY_LEADING_BYTE(i))) + { + if (XCHARSET_DIMENSION (CHARSET_BY_LEADING_BYTE (i)) == 1) + i = (((i - FIELD2_TO_OFFICIAL_LEADING_BYTE) << 7) + | (reg[rrr] & 0x7F)); + else if (i < MAX_LEADING_BYTE_OFFICIAL_2) + i = ((i - FIELD1_TO_OFFICIAL_LEADING_BYTE) << 14) + | reg[rrr]; + else + i = ((i - FIELD1_TO_PRIVATE_LEADING_BYTE) << 14) | reg[rrr]; + } + else + { + /* No charset we know about; use U+3012 GETA MARK */ + i = MAKE_CHAR + (CHARSET_BY_LEADING_BYTE(LEADING_BYTE_JAPANESE_JISX0208), + 34, 46); + } CCL_WRITE_CHAR (i); @@ -1428,7 +1455,6 @@ ccl_driver (struct ccl_program *ccl, for (;i < j;i++) { - size = XVECTOR (Vcode_conversion_map_vector)->size; point = XINT (ccl_prog[ic++]); if (point >= size) continue; diff --git a/src/objects-gtk.c b/src/objects-gtk.c index 72fde7c..64bd305 100644 --- a/src/objects-gtk.c +++ b/src/objects-gtk.c @@ -481,7 +481,7 @@ vars_of_objects_gtk (void) #include /* Unbounded, for sufficiently small values of infinity... */ -#define MAX_FONT_COUNT 5000 +#define MAX_FONT_COUNT INT_MAX #ifdef MULE /* find a font spec that matches font spec FONT and also matches @@ -529,7 +529,7 @@ gtk_find_charset_font (Lisp_Object device, Lisp_Object font, Lisp_Object charset #endif /* MULE */ /* Unbounded, for sufficiently small values of infinity... */ -#define MAX_FONT_COUNT 5000 +#define MAX_FONT_COUNT INT_MAX static int valid_font_name_p (Display *dpy, char *name) diff --git a/tests/automated/mule-tests.el b/tests/automated/mule-tests.el index c3eaffb..ab90516 100644 --- a/tests/automated/mule-tests.el +++ b/tests/automated/mule-tests.el @@ -320,6 +320,27 @@ the Assert macro checks for correctness." (Assert (equal (file-truename name1) name1))) (ignore-file-errors (delete-file name1) (delete-file name2)))) + ;; Is a non-Latin-1 directory name preserved for call-process? + (when (and + ;; The bug should manifest itself on Windows, but I've no access + ;; to a Windows machine to verify that any test works. + (eq directory-sep-char ?/) + ;; file-name-coding-system on Darwin is _always_ UTF-8--the system + ;; enforces this--which coding system we don't have available in + ;; 21.4, outside of packages. I could jump through lots of hoops to + ;; have the test work anyway, but I'm not really into that right + ;; now. + (not (eq system-type 'darwin))) + (let ((process-coding-system-alist '((".*" . iso-8859-1))) + (file-name-coding-system 'iso-8859-1) + default-directory) + (make-directory (concat (temp-directory) "/\260\354")) + (setq file-name-coding-system 'euc-jp) + (setq default-directory (format "%s/%c/" (temp-directory) + (make-char 'japanese-jisx0208 48 108))) + (Assert (equal (shell-command-to-string "pwd") + (format "%s/\260\354\n" (temp-directory)))) + (delete-directory default-directory))) ;; Add many more file operation tests here... diff --git a/tests/automated/syntax-tests.el b/tests/automated/syntax-tests.el index 1ebb9f1..62e2978 100644 --- a/tests/automated/syntax-tests.el +++ b/tests/automated/syntax-tests.el @@ -155,3 +155,42 @@ ;; this last used to crash (parse-partial-sexp point (point-max))))) + +;; Test backward-up-list +;; Known-Bug: report = Evgeny Zacjev ca 2005-12-01, confirm = Aidan Kehoe + +(with-temp-buffer + ;; We are now using the standard syntax table. Thus there's no need to + ;; worry about a bogus syntax setting, eg, in a Gnus Article buffer the + ;; bug doesn't manifest. + + ;; value of point to the immediate left of this character + ;; 0 1 2 + ;; 1234 56789 012 34567 890 12 3456 7 + (insert "a ( \"b (c\" (\"defg\") \")\") h\n") + + ;; #### This test should check *every* position. + (flet ((backward-up-list-moves-point-from-to (start expected-end) + (goto-char start) + (backward-up-list 1) + (= (point) expected-end))) + (Known-Bug-Expect-Failure + ;; Evgeny's case + (Assert (backward-up-list-moves-point-from-to 16 12))) + (Assert (backward-up-list-moves-point-from-to 19 12)) + (Assert (backward-up-list-moves-point-from-to 20 3)) + (Known-Bug-Expect-Failure + (Assert (backward-up-list-moves-point-from-to 22 3))) + (Known-Bug-Expect-Failure + (Assert (backward-up-list-moves-point-from-to 23 3))) + (Assert (backward-up-list-moves-point-from-to 24 3)) + ;; This is maybe a little tricky, since we don't expect the position + ;; check to happen -- so use an illegal expected position + ;; I don't think there's any other way for this to fail that way, + ;; barring hardware error.... + (Check-Error-Message syntax-error + "Unbalanced parentheses" + (backward-up-list-moves-point-from-to 25 nil)) + ;; special-case check that point didn't move + (Assert (= (point) 25)))) +