From 8cb6271e99e31df282456512ac223377e9a08527 Mon Sep 17 00:00:00 2001 From: tomo Date: Mon, 3 Sep 2007 14:05:37 +0000 Subject: [PATCH] Sync up with r21-4-20. --- ChangeLog | 26 +- configure | 901 ++--- configure.in | 19 +- info/xemacs-faq.info-1 | 7673 ----------------------------------------- info/xemacs-faq.info-2 | 814 ----- lisp/ChangeLog | 32 + lisp/auto-autoloads.el | 4 +- lisp/obsolete.el | 3 + netinstall/ChangeLog | 4 + nt/XEmacs.iss | 105 - nt/config.inc.samp | 3 +- src/ChangeLog | 105 +- src/buffer.c | 13 +- src/dumper.c | 4 +- src/fns.c | 124 +- src/redisplay-gtk.c | 4 +- src/redisplay-msw.c | 4 +- src/redisplay-output.c | 4 +- src/redisplay-tty.c | 4 +- src/redisplay-x.c | 4 +- src/regex.c | 6 +- src/scrollbar-gtk.c | 14 +- tests/automated/mule-tests.el | 3 +- 23 files changed, 742 insertions(+), 9131 deletions(-) delete mode 100644 info/xemacs-faq.info-1 delete mode 100644 info/xemacs-faq.info-2 delete mode 100644 nt/XEmacs.iss diff --git a/ChangeLog b/ChangeLog index cebfd34..b8e15ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -102,6 +102,26 @@ * configure.in: Add new option `--with-utf-2000'; define `UTF2000' if it is specified. +2006-12-09 Vin Shelton + + * XEmacs 21.4.20 is released + +2006-12-07 Vin Shelton + + * configure.in: Find relocated xpm library under cygwin. + Patch lifted from Rick Rankin's 21.5 version of the patch. + +2006-05-17 Stephen J. Turnbull + + * PROBLEMS: X11R7 loses x11/bitmaps/gray. + +2006-01-28 Vin Shelton + + * configure.in: Simplify cygwin include and nox/Xpm handling. + As of cygwin-1.5.19, 'gcc -print-file-name=libc.a' (effectively) + returns '/lib' instead of '/usr/lib', so we'll use + 'gcc -print-search-dirs' instead. + 2006-01-28 Vin Shelton * XEmacs 21.4.19 is released @@ -655,7 +675,7 @@ * Emacs.ad: Add charsets to *menubar*FontSet and *popup*FontSet. -2002-08-29 Ville Skyttä +2002-08-29 Ville Skyttä * Emacs.ad: Add *menubar*FontSet and *popup*FontSet entries, (self-)obtained from Red Hat. @@ -1298,7 +1318,7 @@ * XEmacs 21.2.38 is released. -2000-11-26 Björn Torkelsson +2000-11-26 Björn Torkelsson * configure.in: Only show message about DnD API if compiling with DnD @@ -2643,7 +2663,7 @@ * config.guess: Synched with latest FSF version. -1998-07-12 Björn Torkelsson +1998-07-12 Björn Torkelsson * Makefile.in: added LDFLAGS. diff --git a/configure b/configure index b3df073..ba3a32f 100755 --- a/configure +++ b/configure @@ -2735,9 +2735,9 @@ test "$extra_verbose" = "yes" && \ for var in libs_machine libs_system libs_termcap libs_standard objects_machine objects_system c_switch_machine c_switch_system ld_switch_machine ld_switch_system unexec ld_switch_shared ld lib_gcc ld_text_start_addr start_files ordinary_link have_terminfo mail_use_flock mail_use_lockf; do eval "echo \"$var = '\$$var'\""; done && echo "" case "$opsys" in mingw* | cygwin*) - cygwin_include=`eval "gcc -print-file-name=libc.a"` ; - cygwin_include=`eval "dirname $cygwin_include"` ; - cygwin_include="-I$cygwin_include/../include" ; + cygwin_include=`eval gcc -print-search-dirs | sed -ne s'/install: //p'` + cygwin_include=`eval "cd $cygwin_include/../../../..; pwd"` + cygwin_include="-I$cygwin_include/include" ; extra_includes="$cygwin_include/mingw $cygwin_include" ; case "$opsys" in mingw*) c_switch_system="$c_switch_system $extra_includes" && if test "$extra_verbose" = "yes"; then echo " Appending \"$extra_includes\" to \$c_switch_system"; fi ;; @@ -8439,15 +8439,16 @@ echo "configure:8439: checking for graphics libraries" >&5 libpath_xpm= incpath_xpm= + libname_xpm="-lXpm" case "$opsys" in cygwin*) - cygwin_top=`eval "gcc -print-file-name=libc.a"` ; - cygwin_top=`eval "dirname ${cygwin_top}"`; - cygwin_top="${cygwin_top}/.."; + cygwin_top=`eval gcc -print-search-dirs | sed -ne s'/install: //p'` + cygwin_top=`eval "cd $cygwin_top/../../../..; pwd"` case "$window_system" in x11) ;; msw) libpath_xpm="-L${cygwin_top}/lib/noX" incpath_xpm="-I${cygwin_top}/include/noX" + libname_xpm="-lXpm-noX" ;; gtk) ;; none) ;; @@ -8461,10 +8462,10 @@ echo "configure:8439: 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:8465: checking for Xpm - no older than 3.4f" >&5 - xe_check_libs=-lXpm +echo "configure:8466: checking for Xpm - no older than 3.4f" >&5 + xe_check_libs="$libname_xpm" cat > conftest.$ac_ext < @@ -8473,7 +8474,7 @@ echo "configure:8465: checking for Xpm - no older than 3.4f" >&5 XpmIncludeVersion != XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:8477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8478: \"$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 @@ -8514,20 +8515,20 @@ EOF } LDFLAGS=""$libpath_xpm" $LDFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi - libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi + libs_x=""$libname_xpm" $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$libname_xpm"\" 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:8521: checking for \"FOR_MSW\" xpm" >&5 - xe_check_libs=-lXpm +echo "configure:8522: checking for \"FOR_MSW\" xpm" >&5 + xe_check_libs="$libname_xpm" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* xpm_for_msw=no else @@ -8553,15 +8554,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:8557: checking for compface.h" >&5 +echo "configure:8558: 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:8565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8566: \"$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* @@ -8584,12 +8585,12 @@ fi } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8588: checking for UnGenFace in -lcompface" >&5 +echo "configure:8589: 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:8605: \"$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 @@ -8652,12 +8653,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:8656: checking for inflate in -lc" >&5 +echo "configure:8657: 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:8673: \"$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 @@ -8687,12 +8688,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:8691: checking for inflate in -lz" >&5 +echo "configure:8692: 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:8708: \"$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 @@ -8722,12 +8723,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:8726: checking for inflate in -lgz" >&5 +echo "configure:8727: 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:8743: \"$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 @@ -8768,15 +8769,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:8772: checking for jpeglib.h" >&5 +echo "configure:8773: 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:8780: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8781: \"$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* @@ -8799,12 +8800,12 @@ fi } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:8803: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:8804: 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:8820: \"$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 @@ -8851,10 +8852,10 @@ EOF png_problem="" test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:8855: checking for pow" >&5 +echo "configure:8856: checking for pow" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8882: \"$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 @@ -8898,15 +8899,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:8902: checking for png.h" >&5 +echo "configure:8903: 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:8910: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8911: \"$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* @@ -8929,12 +8930,12 @@ fi } test -z "$with_png" && { echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:8933: checking for png_read_image in -lpng" >&5 +echo "configure:8934: 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:8950: \"$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 @@ -8968,10 +8969,10 @@ fi } if test -z "$with_png"; then echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 -echo "configure:8972: checking for workable png version information" >&5 +echo "configure:8973: checking for workable png version information" >&5 xe_check_libs="-lpng -lz" cat > conftest.$ac_ext < int main(int c, char **v) { @@ -8979,7 +8980,7 @@ echo "configure:8972: 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:8983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8984: \"$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 @@ -9022,15 +9023,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:9026: checking for tiffio.h" >&5 +echo "configure:9027: 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:9034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9035: \"$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* @@ -9053,12 +9054,12 @@ fi } test -z "$with_tiff" && { echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:9057: checking for TIFFClientOpen in -ltiff" >&5 +echo "configure:9058: 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:9074: \"$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 @@ -9108,15 +9109,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:9112: checking for compface.h" >&5 +echo "configure:9113: 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:9120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9121: \"$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* @@ -9139,12 +9140,12 @@ fi } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:9143: checking for UnGenFace in -lcompface" >&5 +echo "configure:9144: 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:9160: \"$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 @@ -9194,12 +9195,12 @@ fi if test "$with_x11" = "yes"; then echo "checking for X11 graphics libraries" 1>&6 -echo "configure:9198: checking for X11 graphics libraries" >&5 +echo "configure:9199: checking for X11 graphics libraries" >&5 fi if test "$with_x11" = "yes"; then echo "checking for the Athena widgets" 1>&6 -echo "configure:9203: checking for the Athena widgets" >&5 +echo "configure:9204: checking for the Athena widgets" >&5 case "$with_athena" in "xaw" | "") athena_variant=Xaw athena_3d=no ;; @@ -9215,12 +9216,12 @@ echo "configure:9203: 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:9219: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 +echo "configure:9220: 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:9236: \"$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 @@ -9247,12 +9248,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:9251: checking for $athena_3d_function in -l$athena_variant" >&5 +echo "configure:9252: 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:9268: \"$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 @@ -9294,12 +9295,12 @@ fi else echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:9298: checking for $athena_3d_function in -l$athena_variant" >&5 +echo "configure:9299: 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:9315: \"$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 @@ -9328,12 +9329,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:9332: checking for $athena_3d_function in -lXaw" >&5 +echo "configure:9333: 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:9349: \"$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 @@ -9375,15 +9376,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:9379: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9380: 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:9387: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9388: \"$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* @@ -9403,15 +9404,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:9407: checking for X11/Xaw/XawInit.h" >&5 +echo "configure:9408: 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:9415: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9416: \"$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* @@ -9437,15 +9438,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:9441: checking for X11/$athena_variant/XawInit.h" >&5 +echo "configure:9442: 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:9449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9450: \"$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* @@ -9462,15 +9463,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:9466: checking for X11/$athena_variant/ThreeD.h" >&5 +echo "configure:9467: 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:9474: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9475: \"$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* @@ -9498,15 +9499,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:9502: checking for $athena_variant/XawInit.h" >&5 +echo "configure:9503: 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:9510: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9511: \"$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 +9524,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:9527: checking for $athena_variant/ThreeD.h" >&5 +echo "configure:9528: 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:9535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9536: \"$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* @@ -9560,15 +9561,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:9564: checking for X11/Xaw3d/XawInit.h" >&5 +echo "configure:9565: 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:9572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9573: \"$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* @@ -9585,15 +9586,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:9589: checking for X11/Xaw3d/ThreeD.h" >&5 +echo "configure:9590: 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:9597: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9598: \"$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* @@ -9625,15 +9626,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:9629: checking for Xaw3d/XawInit.h" >&5 +echo "configure:9630: 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:9637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9638: \"$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* @@ -9650,15 +9651,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:9654: checking for Xaw3d/ThreeD.h" >&5 +echo "configure:9655: 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:9662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9663: \"$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* @@ -9690,15 +9691,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:9694: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9695: 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:9702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9703: \"$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* @@ -9737,15 +9738,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:9741: checking for Xm/Xm.h" >&5 +echo "configure:9742: 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:9749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9750: \"$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* @@ -9762,12 +9763,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:9766: checking for XmStringFree in -lXm" >&5 +echo "configure:9767: 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:9783: \"$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 @@ -9807,9 +9808,9 @@ fi if test "$have_motif" = "yes"; then echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:9811: checking for Lesstif" >&5 +echo "configure:9812: checking for Lesstif" >&5 cat > conftest.$ac_ext < #ifdef LESSTIF_VERSION @@ -10257,15 +10258,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:10261: checking for concord.h" >&5 +echo "configure:10262: 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:10269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10270: \"$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* @@ -10293,15 +10294,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:10297: checking for concord.h" >&5 +echo "configure:10298: 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:10305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10306: \"$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* @@ -10352,7 +10353,7 @@ fi if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:10356: checking for Mule-related features" >&5 +echo "configure:10357: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -10366,15 +10367,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:10370: checking for chise.h" >&5 +echo "configure:10371: 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:10378: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10379: \"$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* @@ -10402,15 +10403,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:10406: checking for chise.h" >&5 +echo "configure:10407: 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:10414: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10415: \"$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* @@ -10489,15 +10490,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10493: checking for $ac_hdr" >&5 +echo "configure:10494: 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:10501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10502: \"$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* @@ -10528,12 +10529,12 @@ done echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:10532: checking for strerror in -lintl" >&5 +echo "configure:10533: 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:10549: \"$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 @@ -10598,18 +10599,18 @@ EOF fi echo "checking for Mule input methods" 1>&6 -echo "configure:10602: checking for Mule input methods" >&5 +echo "configure:10603: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:10605: checking for XIM" >&5 +echo "configure:10606: checking for XIM" >&5 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6 -echo "configure:10608: checking for XOpenIM in -lX11" >&5 +echo "configure:10609: 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:10625: \"$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 @@ -10644,12 +10645,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:10648: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10649: 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:10665: \"$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 @@ -10683,12 +10684,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:10687: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10688: 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:10704: \"$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 @@ -10764,15 +10765,15 @@ EOF if test "$with_xfs" = "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:10768: checking for XFontSet" >&5 +echo "configure:10769: checking for XFontSet" >&5 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:10771: checking for XmbDrawString in -lX11" >&5 +echo "configure:10772: 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:10788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10823,15 +10824,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:10827: checking for wnn/jllib.h" >&5 +echo "configure:10828: 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:10835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10836: \"$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* @@ -10854,15 +10855,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:10858: checking for wnn/commonhd.h" >&5 +echo "configure:10859: 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:10866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10867: \"$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* @@ -10887,10 +10888,10 @@ fi for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10891: checking for $ac_func" >&5 +echo "configure:10892: 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:10918: \"$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 @@ -10942,12 +10943,12 @@ done test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:10946: checking for crypt in -lcrypt" >&5 +echo "configure:10947: 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:10963: \"$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 +10994,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:10997: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:10998: 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:11014: \"$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 @@ -11027,12 +11028,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:11031: checking for jl_dic_list_e in -lwnn4" >&5 +echo "configure:11032: 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:11048: \"$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 @@ -11061,12 +11062,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:11065: checking for jl_dic_list_e in -lwnn6" >&5 +echo "configure:11066: 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:11082: \"$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 @@ -11095,12 +11096,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:11099: checking for dic_list_e in -lwnn6_fromsrc" >&5 +echo "configure:11100: 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:11116: \"$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 @@ -11159,12 +11160,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:11163: checking for jl_fi_dic_list in -l$libwnn" >&5 +echo "configure:11164: 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:11180: \"$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 @@ -11210,15 +11211,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:11214: checking for canna/jrkanji.h" >&5 +echo "configure:11215: 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:11222: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11223: \"$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* @@ -11245,15 +11246,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:11249: checking for canna/jrkanji.h" >&5 +echo "configure:11250: 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:11257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11258: \"$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* @@ -11281,15 +11282,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:11285: checking for canna/RK.h" >&5 +echo "configure:11286: 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:11293: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11294: \"$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* @@ -11312,12 +11313,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:11316: checking for RkBgnBun in -lRKC" >&5 +echo "configure:11317: 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:11333: \"$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 @@ -11351,12 +11352,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:11355: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:11356: 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:11372: \"$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 @@ -11416,12 +11417,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:11420: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:11421: 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:11437: \"$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 @@ -11519,10 +11520,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:11523: checking for $ac_func" >&5 +echo "configure:11524: 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:11550: \"$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 @@ -11586,10 +11587,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:11590: checking for $ac_func" >&5 +echo "configure:11591: 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:11617: \"$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 @@ -11641,10 +11642,10 @@ done echo $ac_n "checking for openpty""... $ac_c" 1>&6 -echo "configure:11645: checking for openpty" >&5 +echo "configure:11646: checking for openpty" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11672: \"$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 @@ -11686,12 +11687,12 @@ else echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:11690: checking for openpty in -lutil" >&5 +echo "configure:11691: 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:11707: \"$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 @@ -11737,15 +11738,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11741: checking for $ac_hdr" >&5 +echo "configure:11742: 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:11749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11750: \"$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* @@ -11781,15 +11782,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:11785: checking for $ac_hdr" >&5 +echo "configure:11786: 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:11793: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11794: \"$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 +11823,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:11826: checking for $ac_func" >&5 +echo "configure:11827: 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:11853: \"$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 @@ -11879,15 +11880,15 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11883: checking for $ac_hdr" >&5 +echo "configure:11884: 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:11891: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11892: \"$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* @@ -11924,10 +11925,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:11928: checking for $ac_func" >&5 +echo "configure:11929: 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:11955: \"$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 @@ -11983,15 +11984,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:11987: checking for $ac_hdr" >&5 +echo "configure:11988: 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:11995: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11996: \"$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* @@ -12027,12 +12028,12 @@ else echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:12031: checking for kstat_open in -lkstat" >&5 +echo "configure:12032: 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:12048: \"$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 @@ -12078,15 +12079,15 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:12082: checking for $ac_hdr" >&5 +echo "configure:12083: 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:12090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12091: \"$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* @@ -12118,12 +12119,12 @@ done echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:12122: checking for kvm_read in -lkvm" >&5 +echo "configure:12123: 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:12139: \"$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 @@ -12168,16 +12169,16 @@ fi fi echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:12172: checking whether netdb declares h_errno" >&5 +echo "configure:12173: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:12181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12182: \"$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 @@ -12197,16 +12198,16 @@ fi rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:12201: checking for sigsetjmp" >&5 +echo "configure:12202: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:12210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12211: \"$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 @@ -12226,11 +12227,11 @@ fi rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:12230: checking whether localtime caches TZ" >&5 +echo "configure:12231: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -12265,7 +12266,7 @@ main() exit (0); } EOF -if { (eval echo configure:12269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=no else @@ -12295,9 +12296,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:12299: checking whether gettimeofday accepts one or two arguments" >&5 +echo "configure:12300: 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:12323: \"$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 @@ -12340,19 +12341,19 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:12344: checking for inline" >&5 +echo "configure:12345: 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:12357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -12393,17 +12394,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:12397: checking for working alloca.h" >&5 +echo "configure:12398: 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:12407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12408: \"$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 @@ -12427,10 +12428,10 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:12431: checking for alloca" >&5 +echo "configure:12432: checking for alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12463: \"$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 @@ -12497,10 +12498,10 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:12501: checking whether alloca needs Cray hooks" >&5 +echo "configure:12502: 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:12528: checking for $ac_func" >&5 +echo "configure:12529: 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:12555: \"$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 @@ -12580,10 +12581,10 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:12584: checking stack direction for C alloca" >&5 +echo "configure:12585: 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:12607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=1 else @@ -12632,15 +12633,15 @@ fi ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:12636: checking for vfork.h" >&5 +echo "configure:12637: 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:12644: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12645: \"$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* @@ -12668,10 +12669,10 @@ else fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:12672: checking for working vfork" >&5 +echo "configure:12673: checking for working vfork" >&5 cat > conftest.$ac_ext < @@ -12766,7 +12767,7 @@ main() { } } EOF -if { (eval echo configure:12770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_vfork_works=yes else @@ -12792,10 +12793,10 @@ fi echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:12796: checking for working strcoll" >&5 +echo "configure:12797: checking for working strcoll" >&5 cat > conftest.$ac_ext < main () @@ -12805,7 +12806,7 @@ main () strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:12809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -12833,10 +12834,10 @@ fi for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:12837: checking for $ac_func" >&5 +echo "configure:12838: 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:12864: \"$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 @@ -12887,10 +12888,10 @@ fi done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:12891: checking whether getpgrp takes no argument" >&5 +echo "configure:12892: 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:12950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=yes else @@ -12972,10 +12973,10 @@ fi echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:12976: checking for working mmap" >&5 +echo "configure:12977: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext < #include @@ -13008,7 +13009,7 @@ int main (int argc, char *argv[]) return 1; } EOF -if { (eval echo configure:13012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:13013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=yes else @@ -13037,9 +13038,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:13041: checking for M_MMAP_THRESHOLD" >&5 +echo "configure:13042: checking for M_MMAP_THRESHOLD" >&5 cat > conftest.$ac_ext < int main() { @@ -13051,7 +13052,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:13055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:13056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* rel_alloc=no; echo "$ac_t""yes" 1>&6; else @@ -13076,15 +13077,15 @@ EOF ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:13080: checking for termios.h" >&5 +echo "configure:13081: 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:13088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13089: \"$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* @@ -13127,15 +13128,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:13131: checking for termio.h" >&5 +echo "configure:13132: 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:13139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13140: \"$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* @@ -13167,10 +13168,10 @@ fi echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:13171: checking for socket" >&5 +echo "configure:13172: checking for socket" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13198: \"$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 @@ -13208,15 +13209,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:13212: checking for netinet/in.h" >&5 +echo "configure:13213: 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:13220: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13221: \"$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* @@ -13233,15 +13234,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:13237: checking for arpa/inet.h" >&5 +echo "configure:13238: 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:13245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13246: \"$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* @@ -13266,9 +13267,9 @@ EOF } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:13270: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:13271: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext < @@ -13279,7 +13280,7 @@ int main() { static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:13283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13284: \"$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 @@ -13297,9 +13298,9 @@ else fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6 -echo "configure:13301: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:13302: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -13309,7 +13310,7 @@ int main() { static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:13313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13314: \"$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 @@ -13340,10 +13341,10 @@ fi echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:13344: checking for msgget" >&5 +echo "configure:13345: checking for msgget" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13371: \"$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 @@ -13381,15 +13382,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:13385: checking for sys/ipc.h" >&5 +echo "configure:13386: 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:13393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13394: \"$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* @@ -13406,15 +13407,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:13410: checking for sys/msg.h" >&5 +echo "configure:13411: 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:13418: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13419: \"$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* @@ -13452,15 +13453,15 @@ fi ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:13456: checking for dirent.h" >&5 +echo "configure:13457: 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:13464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13465: \"$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* @@ -13487,15 +13488,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:13491: checking for sys/dir.h" >&5 +echo "configure:13492: 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:13499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13500: \"$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* @@ -13528,15 +13529,15 @@ fi ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:13532: checking for nlist.h" >&5 +echo "configure:13533: 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:13540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13541: \"$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* @@ -13566,22 +13567,22 @@ fi echo "checking "for sound support"" 1>&6 -echo "configure:13570: checking "for sound support"" >&5 +echo "configure:13571: 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:13577: checking for multimedia/audio_device.h" >&5 +echo "configure:13578: 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:13585: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13586: \"$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* @@ -13637,12 +13638,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:13641: checking for ALopenport in -laudio" >&5 +echo "configure:13642: 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:13658: \"$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 @@ -13684,12 +13685,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:13688: checking for AOpenAudio in -lAlib" >&5 +echo "configure:13689: 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:13705: \"$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 @@ -13745,15 +13746,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:13749: checking for ${dir}/soundcard.h" >&5 +echo "configure:13750: 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:13757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13758: \"$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* @@ -13807,15 +13808,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:13811: checking for audio/audiolib.h" >&5 +echo "configure:13812: 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:13819: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13820: \"$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* @@ -13833,12 +13834,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:13837: checking for AuOpenServer in -laudio" >&5 +echo "configure:13838: 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:13854: \"$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 @@ -13888,7 +13889,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 @@ -13919,7 +13920,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:13923: checking for $ac_word" >&5 +echo "configure:13924: 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. @@ -13948,10 +13949,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:13952: checking for esd_play_stream" >&5 +echo "configure:13953: 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:13979: \"$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 @@ -14025,7 +14026,7 @@ test -z "$with_tty" && with_tty=yes if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:14029: checking for TTY-related features" >&5 +echo "configure:14030: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -14041,12 +14042,12 @@ EOF if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:14045: checking for tgetent in -lncurses" >&5 +echo "configure:14046: 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:14062: \"$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 @@ -14090,15 +14091,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:14094: checking for ncurses/curses.h" >&5 +echo "configure:14095: 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:14102: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14103: \"$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* @@ -14120,15 +14121,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:14124: checking for ncurses/term.h" >&5 +echo "configure:14125: 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:14132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14133: \"$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* @@ -14158,15 +14159,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:14162: checking for ncurses/curses.h" >&5 +echo "configure:14163: 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:14170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14171: \"$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* @@ -14201,12 +14202,12 @@ fi for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:14205: checking for tgetent in -l$lib" >&5 +echo "configure:14206: 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:14222: \"$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 @@ -14242,12 +14243,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:14246: checking for tgoto in -ltermcap" >&5 +echo "configure:14247: 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:14263: \"$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 @@ -14303,12 +14304,12 @@ fi else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:14307: checking for tgetent in -lcurses" >&5 +echo "configure:14308: 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:14324: \"$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 @@ -14337,12 +14338,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:14341: checking for tgetent in -ltermcap" >&5 +echo "configure:14342: 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:14358: \"$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 @@ -14402,15 +14403,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:14406: checking for gpm.h" >&5 +echo "configure:14407: 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:14414: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14415: \"$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* @@ -14428,12 +14429,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:14432: checking for Gpm_Open in -lgpm" >&5 +echo "configure:14433: 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:14449: \"$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 @@ -14503,20 +14504,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:14507: checking for database support" >&5 +echo "configure:14508: 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:14512: checking for ndbm.h" >&5 +echo "configure:14513: 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:14520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14521: \"$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* @@ -14546,12 +14547,12 @@ fi if test "$with_database_gdbm" != "no"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:14550: checking for dbm_open in -lgdbm" >&5 +echo "configure:14551: 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:14567: \"$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 @@ -14590,10 +14591,10 @@ fi if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:14594: checking for dbm_open" >&5 +echo "configure:14595: 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:14621: \"$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 @@ -14635,12 +14636,12 @@ else echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:14639: checking for dbm_open in -ldbm" >&5 +echo "configure:14640: 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:14656: \"$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 @@ -14691,10 +14692,10 @@ EOF echo $ac_n "checking for u_int8_t""... $ac_c" 1>&6 -echo "configure:14695: checking for u_int8_t" >&5 +echo "configure:14696: checking for u_int8_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14735,10 +14736,10 @@ EOF fi echo $ac_n "checking for u_int16_t""... $ac_c" 1>&6 -echo "configure:14739: checking for u_int16_t" >&5 +echo "configure:14740: checking for u_int16_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14779,10 +14780,10 @@ EOF fi echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6 -echo "configure:14783: checking for u_int32_t" >&5 +echo "configure:14784: checking for u_int32_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14823,10 +14824,10 @@ EOF fi echo $ac_n "checking for u_int64_t""... $ac_c" 1>&6 -echo "configure:14827: checking for u_int64_t" >&5 +echo "configure:14828: checking for u_int64_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14869,12 +14870,12 @@ fi if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:14873: checking for Berkeley db.h" >&5 +echo "configure:14874: checking for Berkeley db.h" >&5 for header in "db/db.h" "db.h"; do case "$opsys" in *freebsd*) cat > conftest.$ac_ext < @@ -14890,7 +14891,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -14901,7 +14902,7 @@ rm -f conftest* ;; *) cat > conftest.$ac_ext < @@ -14931,7 +14932,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -14949,9 +14950,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:14953: checking for Berkeley DB version" >&5 +echo "configure:14954: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -14963,7 +14964,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 @@ -14990,10 +14991,10 @@ fi rm -f conftest* echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:14994: checking for $dbfunc" >&5 +echo "configure:14995: checking for $dbfunc" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15021: \"$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 @@ -15035,12 +15036,12 @@ else echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:15039: checking for $dbfunc in -ldb" >&5 +echo "configure:15040: 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:15056: \"$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 @@ -15125,12 +15126,12 @@ fi if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:15129: checking for SOCKSinit in -lsocks" >&5 +echo "configure:15130: 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:15146: \"$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 @@ -15196,7 +15197,7 @@ fi if test "$with_modules" != "no"; then echo "checking for module support" 1>&6 -echo "configure:15200: checking for module support" >&5 +echo "configure:15201: checking for module support" >&5 if test "$with_msw" = "yes"; then have_dl=yes; @@ -15212,15 +15213,15 @@ EOF ;; *) ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:15216: checking for dlfcn.h" >&5 +echo "configure:15217: 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:15224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:15225: \"$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* @@ -15237,16 +15238,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:15241: checking for dlopen in -lc" >&5 +echo "configure:15242: checking for dlopen in -lc" >&5 cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:15250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -15255,18 +15256,18 @@ else rm -rf conftest* echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:15259: checking for dlopen in -ldl" >&5 +echo "configure:15260: 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:15270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -15295,12 +15296,12 @@ EOF else echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:15299: checking for shl_load in -ldld" >&5 +echo "configure:15300: 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:15316: \"$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 @@ -15338,12 +15339,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:15342: checking for dld_init in -ldld" >&5 +echo "configure:15343: 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:15359: \"$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 @@ -15401,7 +15402,7 @@ xehost=$canonical xealias=$internal_configuration echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:15405: checking how to build dynamic libraries for ${xehost}" >&5 +echo "configure:15406: checking how to build dynamic libraries for ${xehost}" >&5 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. case "$xehost" in *-*-linux-gnu*) ;; @@ -15429,9 +15430,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:15433: checking checking whether we are using GNU C" >&5 +echo "configure:15434: checking checking whether we are using GNU C" >&5 cat > conftest.$ac_ext <&6 -echo "configure:15457: checking how to produce PIC code" >&5 +echo "configure:15458: checking how to produce PIC code" >&5 wl= can_build_shared=yes @@ -15554,18 +15555,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:15558: checking if PIC flag ${dll_cflags} really works" >&5 +echo "configure:15559: 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:15570: \"$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 @@ -15596,7 +15597,7 @@ cc_produces_so=no xldf= xcldf= echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6 -echo "configure:15600: checking if C compiler can produce shared libraries" >&5 +echo "configure:15601: checking if C compiler can produce shared libraries" >&5 if test "$XEGCC" = yes -o "$__ICC" = yes; then xcldf="-shared" xldf="-shared" @@ -15647,14 +15648,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:15659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cc_produces_so=yes else @@ -15679,7 +15680,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:15683: checking for ld used by GCC" >&5 +echo "configure:15684: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -15705,7 +15706,7 @@ echo "configure:15683: checking for ld used by GCC" >&5 esac else echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:15709: checking for GNU ld" >&5 +echo "configure:15710: checking for GNU ld" >&5 fi if test -z "$LTLD"; then @@ -15743,7 +15744,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:15747: checking if the linker is GNU ld" >&5 +echo "configure:15748: 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 @@ -15771,7 +15772,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:15775: checking whether the linker supports shared libraries" >&5 +echo "configure:15776: checking whether the linker supports shared libraries" >&5 dll_ld=$CC dll_ldflags=$LDFLAGS ld_shlibs=yes @@ -15982,10 +15983,10 @@ EOF for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15986: checking for $ac_func" >&5 +echo "configure:15987: 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:16013: \"$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 @@ -16047,11 +16048,11 @@ done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:16056: \"$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 4642dcd..1ff5fbe 100644 --- a/configure.in +++ b/configure.in @@ -1899,9 +1899,9 @@ dnl We only cope with headers in mingw, not mingw32: no previous version of dnl XEmacs supported mingw and cygnus have made this incompatible change dnl so we just go with the flow. case "$opsys" in mingw* | cygwin*) - cygwin_include=`eval "gcc -print-file-name=libc.a"` ; - cygwin_include=`eval "dirname $cygwin_include"` ; - cygwin_include="-I$cygwin_include/../include" ; + cygwin_include=`eval gcc -print-search-dirs | sed -ne s'/install: //p'` + cygwin_include=`eval "cd $cygwin_include/../../../..; pwd"` + cygwin_include="-I$cygwin_include/include" ; extra_includes="$cygwin_include/mingw $cygwin_include" ; case "$opsys" in mingw*) XE_APPEND($extra_includes, c_switch_system) ;; @@ -3363,17 +3363,18 @@ if test "$window_system" != "none"; then dnl -- should only happen if CYGWIN && WITH_XPM && WITH_MSW && !WITH_X libpath_xpm= incpath_xpm= + libname_xpm="-lXpm" case "$opsys" in cygwin*) - cygwin_top=`eval "gcc -print-file-name=libc.a"` ; - cygwin_top=`eval "dirname ${cygwin_top}"`; - cygwin_top="${cygwin_top}/.."; + cygwin_top=`eval gcc -print-search-dirs | sed -ne s'/install: //p'` + cygwin_top=`eval "cd $cygwin_top/../../../..; pwd"` case "$window_system" in dnl use "standard" search pattern x11) ;; dnl hardcode "standard" non-X11 xpm lib/inc dirs msw) libpath_xpm="-L${cygwin_top}/lib/noX" incpath_xpm="-I${cygwin_top}/include/noX" + libname_xpm="-lXpm-noX" ;; dnl not supported on cygwin (yet?) gtk) ;; @@ -3392,7 +3393,7 @@ if test "$window_system" != "none"; then XE_PREPEND("$incpath_xpm", CFLAGS) XE_PREPEND("$libpath_xpm", LDFLAGS) AC_MSG_CHECKING(for Xpm - no older than 3.4f) - xe_check_libs=-lXpm + xe_check_libs="$libname_xpm" AC_TRY_RUN([#define XPM_NUMBERS #include int main(int c, char **v) { @@ -3427,10 +3428,10 @@ if test "$window_system" != "none"; then dnl #### but doesn't actually verify this assumption. AC_DEFINE(HAVE_XPM) XE_PREPEND("$libpath_xpm", LDFLAGS) - XE_PREPEND(-lXpm, libs_x) + XE_PREPEND("$libname_xpm", libs_x) XE_PREPEND("$incpath_xpm", CFLAGS) AC_MSG_CHECKING(for \"FOR_MSW\" xpm) - xe_check_libs=-lXpm + xe_check_libs="$libname_xpm" AC_TRY_LINK(, [XpmCreatePixmapFromData()], [xpm_for_msw=no], [xpm_for_msw=yes]) diff --git a/info/xemacs-faq.info-1 b/info/xemacs-faq.info-1 deleted file mode 100644 index 8bed6c0..0000000 --- a/info/xemacs-faq.info-1 +++ /dev/null @@ -1,7673 +0,0 @@ -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 deleted file mode 100644 index 78554cb..0000000 --- a/info/xemacs-faq.info-2 +++ /dev/null @@ -1,814 +0,0 @@ -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 da0862a..eb7d14b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1363,6 +1363,38 @@ * files.el (insert-file-contents-literally): Treat file as binary; call file-name-handlers. [sync with Emacs 20.3.10] +2006-12-09 Vin Shelton + + * XEmacs 21.4.20 is released + +2006-10-14 Jeff Miller + + * info.el (Info-find-emacs-command-nodes): fix regex for find command node. + +2006-11-14 Stephen J. Turnbull + + * info.el (Info-find-file-node, Info-insert-dir) + (Info-read-subfile, Info-insert-file-contents): Maintain invariant + `(equal buffer-file-truename (file-truename buffer-file-name))'. + Thanks to Nelson Ferreira for report + and discussion. + +2006-05-20 Ville Skyttä + + * obsolete.el (line-beginning-position): New, from 21.5.x. + (line-end-position): Ditto. + +2006-06-03 Adrian Aichner + + * package-get.el (package-get-download-sites): Welcome + nl.xemacs.org and Thanks! + * package-get.el (package-get-pre-release-download-sites): Ditto. + +2004-01-19 Martin Buchholz + + * font-lock.el: Add support for not-so recent changes in Java to + java-mode. + 2006-01-28 Vin Shelton * XEmacs 21.4.19 is released diff --git a/lisp/auto-autoloads.el b/lisp/auto-autoloads.el index d0afd32..4410de6 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") ("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-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") ("Netherlands (nl.xemacs.org)" "ftp.nl.xemacs.org" "pub/xemacs/ftp/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") ("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-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") ("Netherlands (nl.xemacs.org)" "ftp.nl.xemacs.org" "pub/xemacs/ftp/beta/experimental/packages") ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Portugal Pre-Releases (pt.xemacs.org)" "ftp.pt.xemacs.org" "pub/MIRRORS/ftp.xemacs.org/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/beta/experimental/packages") ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/beta/experimental/packages") ("Taiwan Pre-Releases (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/beta/experimental/packages") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/beta/experimental/packages") ("US Pre-Releases (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/beta/experimental/packages")) "*List of remote sites available for downloading \"Pre-Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site. SITE-NAME\nis the internet address of the download site. DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Pre-Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get) (defcustom package-get-site-release-download-sites nil "*List of remote sites available for downloading \"Site Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site. SITE-NAME\nis the internet address of the download site. DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Site Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get) diff --git a/lisp/obsolete.el b/lisp/obsolete.el index f0d54f5..2cb8043 100644 --- a/lisp/obsolete.el +++ b/lisp/obsolete.el @@ -269,6 +269,9 @@ set Info-directory-list.") (define-compatible-function-alias 'assq-delete-all 'remassq) ;GNU 21.1 +(define-compatible-function-alias 'line-beginning-position 'point-at-bol) +(define-compatible-function-alias 'line-end-position 'point-at-eol) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;; modeline (define-compatible-function-alias 'redraw-mode-line 'redraw-modeline) diff --git a/netinstall/ChangeLog b/netinstall/ChangeLog index cad132a..bed827a 100644 --- a/netinstall/ChangeLog +++ b/netinstall/ChangeLog @@ -1,3 +1,7 @@ +2006-12-09 Vin Shelton + + * XEmacs 21.4.20 is released + 2006-01-28 Vin Shelton * XEmacs 21.4.19 is released diff --git a/nt/XEmacs.iss b/nt/XEmacs.iss deleted file mode 100644 index 8862b66..0000000 --- a/nt/XEmacs.iss +++ /dev/null @@ -1,105 +0,0 @@ -; This script generates an installation kit for a Windows-native XEmacs, version 21.4. -; This script runs with Inno Setup version 5.1.6, see http://www.jrsoftware.org/ for more info. -; -; Version History -; 2006-01-26 Vin Shelton Don't append XEmacs binary directory to system path. -; 2006-01-21 Vin Shelton Append XEmacs binary directory to system path; this is not currently deleted on uninstall. -; Get built kit from C:\XEmacs-built. -; 2005-12-26 Vin Shelton Packages are now installed directly into {app}\xemacs-packages, etc. As of 21.4.19, the package root is found automatically, so EMACSPACKAGEPATH is no longer necessary. -; 2005-12-17 Vin Shelton Move packages out of the version-specific tree -; 2005-12-13 Vin Shelton Created. - -[Setup] -AppName=XEmacs -AppVersion={code:XEmacsVersion} -AppVerName=XEmacs {code:XEmacsVersion} -AppPublisher=The XEmacs Development Team -AppPublisherURL=http://www.xemacs.org -AppSupportURL=http://www.xemacs.org -AppUpdatesURL=http://www.xemacs.org -DefaultDirName={pf}\XEmacs -DefaultGroupName=XEmacs -AllowNoIcons=yes -OutputDir=. -OutputBaseFilename=XEmacs Setup 21.4.19 -Compression=lzma -SolidCompression=yes -InfoAfterFile=README - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked -Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -; Before you run this script, XEmacs-21.4 must be installed in C:\XEmacs-built\XEmacs-21.4.xx -; and any packages you want to include must be installed in C:\XEmacs-built\{xemacs,mule,site}-packages -Source: "C:\XEmacs-built\*"; Excludes: "C:\XEmacs-built\XEmacs-21.5*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[INI] -Filename: "{app}\xemacs.url"; Section: "InternetShortcut"; Key: "URL"; String: "http://www.xemacs.org" - -[Icons] -Name: "{group}\XEmacs"; Filename: "{app}\XEmacs-{code:XEmacsVersion}\i586-pc-win32\xemacs.exe" -Name: "{group}\{cm:ProgramOnTheWeb,XEmacs}"; Filename: "{app}\xemacs.url" -Name: "{group}\{cm:UninstallProgram,XEmacs}"; Filename: "{uninstallexe}" -Name: "{userdesktop}\XEmacs"; Filename: "{app}\XEmacs-{code:XEmacsVersion}\i586-pc-win32\xemacs.exe"; Tasks: desktopicon -Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\XEmacs"; Filename: "{app}\XEmacs-{code:XEmacsVersion}\i586-pc-win32\xemacs.exe"; Tasks: quicklaunchicon - -[Registry] -; Set a registry key to point to the packages so they can be shared between multiple installed versions of XEmacs -; This is no longer necessary as of version 21.4.19. -;Root: HKLM; Subkey: "Software\XEmacs\XEmacs"; ValueType: string; ValueName: "EMACSPACKAGEPATH"; ValueData: "{app}\Packages"; Flags: uninsdeletekey -; Don't fiddle with the system path -;Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}\XEmacs-{code:XEmacsVersion}\i586-pc-win32" - - -[Run] -Filename: "{app}\XEmacs-{code:XEmacsVersion}\i586-pc-win32\xemacs.exe"; Description: "{cm:LaunchProgram,XEmacs}"; Flags: nowait postinstall skipifsilent - -[UninstallDelete] -Type: files; Name: "{app}\xemacs.url" - -[Code] -function XEmacsVersion(Param: String): String; -begin - Result := '21.4.19'; -end; - -procedure CurStepChanged(CurStep: TSetupStep); -var - BinDir: String; - EtcDir: String; - InstallBase: String; - SiteStart: String; -begin - - // Create a site-start.el file to allow easy package downloading in the future and to add the binary directory to exec-path. - // E.g, here's what we're going to add to lisp\site-start.el: - // (setq package-get-package-index-file-location "C:\\Program Files\XEmacs\\XEmacs-21.4.98\\etc") - // ; Uncomment the next line to select the primary XEmacs package download site - // ;(setq package-get-remote '("ftp.xemacs.org" "pub/xemacs/packages")) - if CurStep = ssPostInstall then begin - - // Convert directory names to lisp format by doubling each backslash - InstallBase := WizardDirValue + '\XEmacs-' + XEmacsVersion(''); - StringChange(InstallBase, '\', '\\'); - EtcDir := InstallBase + '\\etc'; - //BinDir := InstallBase + '\\i586-pc-win32\\'; - - SiteStart := WizardDirValue + '\site-packages\lisp'; - CreateDir(SiteStart); - SiteStart := SiteStart + '\site-start.el'; - - SaveStringToFile(SiteStart, #13#10 + '(setq package-get-package-index-file-location "' + EtcDir + '")' + #13#10, True); - SaveStringToFile(SiteStart, '; Uncomment the next line to select the primary XEmacs package download site' + #13#10, True); - SaveStringToFile(SiteStart, ';(setq package-get-remote ' + Chr(39) + '("ftp.xemacs.org" "pub/xemacs/packages"))' + #13#10, True); - - //SaveStringToFile(SiteStart, '(pushnew "' + BinDir + '" exec-path)' + #13#10, True); - end; -end; - - diff --git a/nt/config.inc.samp b/nt/config.inc.samp index bd49704..397dac7 100644 --- a/nt/config.inc.samp +++ b/nt/config.inc.samp @@ -4,7 +4,8 @@ INSTALL_DIR=c:\Program Files\XEmacs\XEmacs-$(XEMACS_VERSION_STRING) -PACKAGE_PREFIX=c:\Program Files\XEmacs +# Set this if your packages are installed in an unusal place. +#PACKAGE_PREFIX=c:\Program Files\XEmacs ############################################################################ diff --git a/src/ChangeLog b/src/ChangeLog index 61b4aa5..2cef470 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -5897,6 +5897,107 @@ (Vcharset_thai_tis620): Likewise. (Vcharset_katakana_jisx0201): Likewise. +2006-12-09 Vin Shelton + + * XEmacs 21.4.20 is released + +2006-12-08 Nelson Ferreira + + * src/fns.c (XMALLOC_OR_ALLOCA,free_malloced_ptr,XMALLOC_UNBIND): + relocated the definitions to be used sooner in file. + (concat,plists_differ,mapcar1,Fmapconcat,Fmapcar): Use + XMALLOC_OR_ALLOCA macro instead of alloca to prevent stack + overflow. + +2006-11-29 Aidan Kehoe + + * sound.c (init_native_sound): + Only X11 and GTK devices can possibly not be on the console of the + associated machine. Fixes a crash when init_native_sound is called + on a msprinter device. + +2006-11-14 Stephen J. Turnbull + + * buffer.c (buffer-file-name): Document invariant. + (buffer-file-truename): Sync wording to buffer-file-name. + Thanks to Nelson Ferreira for report + and discussion. + +2006-11-19 Benson Margulies + + * fileio.c: Add code to use full Win32 API to check for write + access. Win32 has the general design policy that you aren't + supposed to ask this question, since security checks change + depending on asynchronous processes. Nonetheless, there is a way, + by acting as if we are a server doing interpretive access + control. + +2006-07-31 Aidan Kehoe + + * bytecode.c: Use xnew_array instead of alloca. + +2006-07-04 Vin Shelton + + * redisplay-msw.c: Fix tiny, but crucial typo. + +2006-06-22 Jerry James + + * EmacsShell-sub.c (ChangeManaged): + * device-x.c (x_IO_error_handler): Do not dereference d if it is + NULL. + * dgif_lib.c (DGifCloseFile): Do not dereference GifFile before + checking if it is NULL. Also fix a memory leak. + * dialog-x.c (dbox_selection_callback): Ensure f is non-NULL, then + dereference it, not the other way around. + * dumper.c (pdump_register_object): Fix off-by-one array bounds + overflow check. + * dumper.c (pdump_register_struct): Ditto. + * editfns.c (Ftemp_directory): Don't let a copy from (long) path + to (short) warnpath overflow warnpath. + * extents.c (detach_all_extents): Call extent_list_delete_all with + a non-NULL parameter only. + * glyphs-widget.c (widget_query_geometry): Guard against possibly + NULL width and height. + * input-method-xlib.c (XIM_SetGeometry): Do not dereference f or + xic before checking if they are NULL. + * keymap.c (where_is_recursive_mapper): Don't throw away the newly + allocated array. + * md5.c (Fmd5): Check whether Lstream_read encountered an error. + * nas.c (Err): Fix a memory leak. + * redisplay-gtk.c (gtk_output_display_block): Fix a Dynarr leak. + Don't create the buffer if there is nothing to do. + * redisplay-msw.c (mswindows_output_display_block): Ditto. + * redisplay-output.c (redisplay_output_layout): Ditto. + * redisplay-tty.c (tty_output_display_block): Ditto. + * redisplay-x.c (x_output_display_block): Ditto. + * scrollbar-gtk.c (gtk_free_scrollbar_instance): Do not + dereference instance->scrollbar_data if it is NULL. + * scrollbar-x.c (x_free_scrollbar_instance): Ditto. + * scrollbar-msw.c (mswindows_free_scrollbar_instance): Ditto, but + for sb->scrollbar_data. + * sound.c (init_native_sound): Avoid a buffer overflow by + allocating a buffer with the appropriate size. + +2006-05-08 Stephen J. Turnbull + + * EmacsShell-sub.c (RootGeometryManager): + Change garbage to useful messages under DEBUG_GEOMETRY_MANAGEMENT. + Based on a suggestion by Francois L'Archeveque. + +2006-03-21 Malcolm Purvis + + * regex.c: Bump INIT_FAILURE_ALLOC and re_max_failures to the + current values found in GNU Emacs. + +2006-03-17 Vin Shelton + + * dialog-msw.c (handle_directory_dialog_box): Don't declare + Q_title here. LOCAL_FILE_FORMAT_TO_TSTR requires an lvalue. + + * glyphs-msw.c (read_bitmap_data): change 'initialized' to + 'hex_initialized' because it conflicts with 'initialized' in + lisp.h. + 2006-01-28 Vin Shelton * XEmacs 21.4.19 is released @@ -6399,7 +6500,7 @@ * event-gtk.c: Recognise AltGr as a valid modifier. -2005-01-12 Ville Skyttä +2005-01-12 Ville Skyttä * console-x.h: #include X11/keysym.h before xintrinsic.h. @@ -6785,7 +6886,7 @@ * sysdll.c: configure sets HAVE_DLD_INIT, not HAVE_INIT_DLD. -2003-07-31 René Kyllingstad +2003-07-31 René Kyllingstad * event-msw.c (mswindows_enqueue_mouse_button_event): * event-msw.c (mswindows_wnd_proc): diff --git a/src/buffer.c b/src/buffer.c index 2487541..e7f8a4c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -2841,6 +2841,8 @@ It may not be a list of functions. DEFVAR_BUFFER_LOCAL ("buffer-file-name", filename /* Name of file visited in current buffer, or nil if not visiting a file. Each buffer has its own value of this variable. +Code that changes this variable must maintain the invariant +`(equal buffer-file-truename (file-truename buffer-file-name))'. */ ); #if 0 /* FSFmacs */ @@ -2853,12 +2855,11 @@ Each buffer has its own value of this variable. #endif /* FSFmacs */ DEFVAR_BUFFER_LOCAL ("buffer-file-truename", file_truename /* -The real name of the file visited in the current buffer, -or nil if not visiting a file. This is the result of passing -buffer-file-name to the `file-truename' function. Every buffer has -its own value of this variable. This variable is automatically -maintained by the functions that change the file name associated -with a buffer. +The real name of the file visited in the current buffer, or nil if not +visiting a file. This is the result of passing `buffer-file-name' to the +`file-truename' function. Every buffer has its own value of this variable. +Code that changes the file name associated with a buffer maintains the +invariant `(equal buffer-file-truename (file-truename buffer-file-name))'. */ ); DEFVAR_BUFFER_LOCAL ("buffer-auto-save-file-name", auto_save_file_name /* diff --git a/src/dumper.c b/src/dumper.c index e0b4ad8..4aa3e1b 100644 --- a/src/dumper.c +++ b/src/dumper.c @@ -570,7 +570,7 @@ pdump_register_object (Lisp_Object obj) if (imp->description) { int me = depth++; - if (me>65536) + if (me>=65536) { stderr_out ("Backtrace overflow, loop ?\n"); ABORT (); @@ -605,7 +605,7 @@ pdump_register_struct (const void *data, { int me = depth++; int i; - if (me>65536) + if (me>=65536) { stderr_out ("Backtrace overflow, loop ?\n"); ABORT (); diff --git a/src/fns.c b/src/fns.c index 266783b..9b38b1b 100644 --- a/src/fns.c +++ b/src/fns.c @@ -50,6 +50,42 @@ Boston, MA 02111-1307, USA. */ #include "lstream.h" #include "opaque.h" + + +static Lisp_Object free_malloced_ptr(Lisp_Object unwind_obj) +{ + void *ptr = (void *)get_opaque_ptr(unwind_obj); + xfree(ptr); + free_opaque_ptr(unwind_obj); + return Qnil; +} + +/* Don't use alloca for regions larger than this, lest we overflow + the stack. */ +#define MAX_ALLOCA 65536 + +/* We need to setup proper unwinding, because there is a number of + ways these functions can blow up, and we don't want to have memory + leaks in those cases. */ +#define XMALLOC_OR_ALLOCA(ptr, len, type) do { \ + size_t XOA_len = (len); \ + if (XOA_len > MAX_ALLOCA ) { \ + ptr = xnew_array (type, XOA_len); \ + record_unwind_protect (free_malloced_ptr, \ + make_opaque_ptr ((void *)ptr)); \ + } \ + else \ + ptr = alloca_array (type, XOA_len); \ +} while (0) + +#define XMALLOC_UNBIND(ptr, len, speccount) do { \ + if ((len) > MAX_ALLOCA) \ + unbind_to (speccount, Qnil); \ +} while (0) + + + + /* NOTE: This symbol is also used in lread.c */ #define FEATUREP_SYNTAX @@ -605,6 +641,8 @@ concat (int nargs, Lisp_Object *args, Bufbyte *string_result = 0; Bufbyte *string_result_ptr = 0; struct gcpro gcpro1; + int speccount = specpdl_depth(); + Charcount total_length; /* The modus operandi in Emacs is "caller gc-protects args". However, concat is called many times in Emacs on freshly @@ -622,7 +660,7 @@ concat (int nargs, Lisp_Object *args, the result in the returned string's `string-translatable' property. */ #endif if (target_type == c_string) - args_mse = alloca_array (struct merge_string_extents_struct, nargs); + XMALLOC_OR_ALLOCA(args_mse, nargs, struct merge_string_extents_struct); /* In append, the last arg isn't treated like the others */ if (last_special && nargs > 0) @@ -671,7 +709,7 @@ concat (int nargs, Lisp_Object *args, /* Charcount is a misnomer here as we might be dealing with the length of a vector or list, but emphasizes that we're not dealing with Bytecounts in strings */ - Charcount total_length; + /* Charcount total_length; */ for (argnum = 0, total_length = 0; argnum < nargs; argnum++) { @@ -687,8 +725,11 @@ concat (int nargs, Lisp_Object *args, { case c_cons: if (total_length == 0) + { /* In append, if all but last arg are nil, return last arg */ + XMALLOC_UNBIND(args_mse, nargs, speccount); RETURN_UNGCPRO (last_tail); + } val = Fmake_list (make_int (total_length), Qnil); break; case c_vector: @@ -708,7 +749,9 @@ concat (int nargs, Lisp_Object *args, realloc()ing in order to make the char fit properly. O(N^2) yuckage. */ val = Qnil; - string_result = (Bufbyte *) alloca (total_length * MAX_EMCHAR_LEN); + XMALLOC_OR_ALLOCA( string_result, + total_length * MAX_EMCHAR_LEN, + Bufbyte ); string_result_ptr = string_result; break; default: @@ -821,6 +864,8 @@ concat (int nargs, Lisp_Object *args, args_mse[argnum].entry_offset, 0, args_mse[argnum].entry_length); } + XMALLOC_UNBIND(string_result, total_length * MAX_EMCHAR_LEN, speccount); + XMALLOC_UNBIND(args_mse, nargs, speccount); } if (!NILP (prev)) @@ -1841,6 +1886,7 @@ plists_differ (Lisp_Object a, Lisp_Object b, int nil_means_not_present, Lisp_Object *keys, *vals; char *flags; Lisp_Object rest; + int speccount = specpdl_depth(); if (NILP (a) && NILP (b)) return 0; @@ -1852,9 +1898,9 @@ plists_differ (Lisp_Object a, Lisp_Object b, int nil_means_not_present, lb = XINT (Flength (b)); m = (la > lb ? la : lb); fill = 0; - keys = alloca_array (Lisp_Object, m); - vals = alloca_array (Lisp_Object, m); - flags = alloca_array (char, m); + XMALLOC_OR_ALLOCA(keys, m, Lisp_Object); + XMALLOC_OR_ALLOCA(vals, m, Lisp_Object); + XMALLOC_OR_ALLOCA(flags, m, char); /* First extract the pairs from A. */ for (rest = a; !NILP (rest); rest = XCDR (XCDR (rest))) @@ -1899,10 +1945,17 @@ plists_differ (Lisp_Object a, Lisp_Object b, int nil_means_not_present, if (flags [i] == 0) goto MISMATCH; + + XMALLOC_UNBIND(flags, m, speccount); + XMALLOC_UNBIND(vals, m, speccount); + XMALLOC_UNBIND(keys, m, speccount); /* Ok. */ return 0; MISMATCH: + XMALLOC_UNBIND(flags, m, speccount); + XMALLOC_UNBIND(vals, m, speccount); + XMALLOC_UNBIND(keys, m, speccount); return 1; } @@ -2996,8 +3049,12 @@ mapcar1 (size_t leni, Lisp_Object *vals, { /* The string data of `sequence' might be relocated during GC. */ Bytecount slen = XSTRING_LENGTH (sequence); - Bufbyte *p = alloca_array (Bufbyte, slen); - Bufbyte *end = p + slen; + Bufbyte *p = NULL; + Bufbyte *end = NULL; + int speccount = specpdl_depth(); + + XMALLOC_OR_ALLOCA(p, slen, Bufbyte); + end = p + slen; memcpy (p, XSTRING_DATA (sequence), slen); @@ -3008,6 +3065,7 @@ mapcar1 (size_t leni, Lisp_Object *vals, result = Ffuncall (2, args); if (vals) vals[gcpro1.nvars++] = result; } + XMALLOC_UNBIND(p, slen, speccount); } else if (BIT_VECTORP (sequence)) { @@ -3039,12 +3097,14 @@ may be a list, a vector, a bit vector, or a string. { EMACS_INT len = XINT (Flength (sequence)); Lisp_Object *args; + Lisp_Object result; EMACS_INT i; EMACS_INT nargs = len + len - 1; + int speccount = specpdl_depth(); if (len == 0) return build_string (""); - args = alloca_array (Lisp_Object, nargs); + XMALLOC_OR_ALLOCA(args, nargs, Lisp_Object); mapcar1 (len, args, function, sequence); @@ -3054,7 +3114,9 @@ may be a list, a vector, a bit vector, or a string. for (i = 1; i < nargs; i += 2) args[i] = separator; - return Fconcat (nargs, args); + result = Fconcat(nargs, args); + XMALLOC_UNBIND(args, nargs, speccount); + return result; } DEFUN ("mapcar", Fmapcar, 2, 2, 0, /* @@ -3065,11 +3127,17 @@ SEQUENCE may be a list, a vector, a bit vector, or a string. (function, sequence)) { size_t len = XINT (Flength (sequence)); - Lisp_Object *args = alloca_array (Lisp_Object, len); + Lisp_Object *args = NULL; + Lisp_Object result; + int speccount = specpdl_depth(); + + XMALLOC_OR_ALLOCA(args, len, Lisp_Object); mapcar1 (len, args, function, sequence); - return Flist (len, args); + result = Flist(len, args); + XMALLOC_UNBIND(args, len, speccount); + return result; } DEFUN ("mapvector", Fmapvector, 2, 2, 0, /* @@ -3572,38 +3640,6 @@ base64_decode_1 (Lstream *istream, Bufbyte *to, Charcount *ccptr) #undef ADVANCE_INPUT_IGNORE_NONBASE64 #undef STORE_BYTE -static Lisp_Object -free_malloced_ptr (Lisp_Object unwind_obj) -{ - void *ptr = (void *)get_opaque_ptr (unwind_obj); - xfree (ptr); - free_opaque_ptr (unwind_obj); - return Qnil; -} - -/* Don't use alloca for regions larger than this, lest we overflow - the stack. */ -#define MAX_ALLOCA 65536 - -/* We need to setup proper unwinding, because there is a number of - ways these functions can blow up, and we don't want to have memory - leaks in those cases. */ -#define XMALLOC_OR_ALLOCA(ptr, len, type) do { \ - size_t XOA_len = (len); \ - if (XOA_len > MAX_ALLOCA) \ - { \ - ptr = xnew_array (type, XOA_len); \ - record_unwind_protect (free_malloced_ptr, \ - make_opaque_ptr ((void *)ptr)); \ - } \ - else \ - ptr = alloca_array (type, XOA_len); \ -} while (0) - -#define XMALLOC_UNBIND(ptr, len, speccount) do { \ - if ((len) > MAX_ALLOCA) \ - unbind_to (speccount, Qnil); \ -} while (0) DEFUN ("base64-encode-region", Fbase64_encode_region, 2, 3, "r", /* Base64-encode the region between START and END. diff --git a/src/redisplay-gtk.c b/src/redisplay-gtk.c index 3e792de..7560803 100644 --- a/src/redisplay-gtk.c +++ b/src/redisplay-gtk.c @@ -294,7 +294,7 @@ gtk_output_display_block (struct window *w, struct display_line *dl, int block, int cursor_width, int cursor_height) { struct frame *f = XFRAME (w->frame); - Emchar_dynarr *buf = Dynarr_new (Emchar); + Emchar_dynarr *buf; Lisp_Object window; struct display_block *db = Dynarr_atp (dl->display_blocks, block); @@ -326,7 +326,7 @@ gtk_output_display_block (struct window *w, struct display_line *dl, int block, if (end < 0) end = Dynarr_length (rba); - Dynarr_reset (buf); + buf = Dynarr_new (Emchar); while (elt < end) { diff --git a/src/redisplay-msw.c b/src/redisplay-msw.c index e2a2552..5e7e9e5 100644 --- a/src/redisplay-msw.c +++ b/src/redisplay-msw.c @@ -1044,7 +1044,7 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b int cursor_width, int cursor_height) { struct frame *f = XFRAME (w->frame); - Emchar_dynarr *buf = Dynarr_new (Emchar); + Emchar_dynarr *buf; Lisp_Object window; struct display_block *db = Dynarr_atp (dl->display_blocks, block); @@ -1071,7 +1071,7 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b if (end < 0) end = Dynarr_length (rba); - Dynarr_reset (buf); + buf = Dynarr_new (Emchar); while (elt < end) { diff --git a/src/redisplay-output.c b/src/redisplay-output.c index 7b1c46f..f61e238 100644 --- a/src/redisplay-output.c +++ b/src/redisplay-output.c @@ -1317,7 +1317,7 @@ redisplay_output_layout (Lisp_Object domain, { Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance); Lisp_Object rest, window = DOMAIN_WINDOW (domain); - Charc_dynarr *buf = Dynarr_new (Charc); + Charc_dynarr *buf; struct window *w = XWINDOW (window); struct device *d = DOMAIN_XDEVICE (domain); int layout_height, layout_width; @@ -1334,6 +1334,8 @@ redisplay_output_layout (Lisp_Object domain, if (!redisplay_normalize_glyph_area (db, dga)) return; + buf = Dynarr_new (Charc); + /* Highly dodgy optimization. We want to only output the whole layout if we really have to. */ if (!IMAGE_INSTANCE_OPTIMIZE_OUTPUT (p) diff --git a/src/redisplay-tty.c b/src/redisplay-tty.c index e726bca..6dc7d63 100644 --- a/src/redisplay-tty.c +++ b/src/redisplay-tty.c @@ -196,7 +196,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block, int cursor_height) { struct frame *f = XFRAME (w->frame); - Charc_dynarr *buf = Dynarr_new (Charc); + Charc_dynarr *buf; struct display_block *db = Dynarr_atp (dl->display_blocks, block); rune_dynarr *rba = db->runes; @@ -222,7 +222,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block, if (end < 0) end = Dynarr_length (rba); - Dynarr_reset (buf); + buf = Dynarr_new (Charc); while (elt < end && Dynarr_atp (rba, elt)->xpos < start_pixpos) { diff --git a/src/redisplay-x.c b/src/redisplay-x.c index b6a89ba..f2acc68 100644 --- a/src/redisplay-x.c +++ b/src/redisplay-x.c @@ -327,7 +327,7 @@ x_output_display_block (struct window *w, struct display_line *dl, int block, int cursor_width, int cursor_height) { struct frame *f = XFRAME (w->frame); - Charc_dynarr *buf = Dynarr_new (Charc); + Charc_dynarr *buf; Lisp_Object window; struct display_block *db = Dynarr_atp (dl->display_blocks, block); @@ -354,7 +354,7 @@ x_output_display_block (struct window *w, struct display_line *dl, int block, if (end < 0) end = Dynarr_length (rba); - Dynarr_reset (buf); + buf = Dynarr_new (Charc); while (elt < end) { diff --git a/src/regex.c b/src/regex.c index c6f6f36..6f27ce8 100644 --- a/src/regex.c +++ b/src/regex.c @@ -1146,7 +1146,7 @@ static const char *re_error_msgid[] = when matching. If this number is exceeded, we allocate more space, so it is not a hard limit. */ #ifndef INIT_FAILURE_ALLOC -#define INIT_FAILURE_ALLOC 5 +#define INIT_FAILURE_ALLOC 20 #endif /* Roughly the maximum number of failure points on the stack. Would be @@ -1156,9 +1156,9 @@ static const char *re_error_msgid[] = #if defined (MATCH_MAY_ALLOCATE) || defined (REGEX_MALLOC) /* 4400 was enough to cause a crash on Alpha OSF/1, whose default stack limit is 2mb. */ -int re_max_failures = 20000; +int re_max_failures = 40000; #else -int re_max_failures = 2000; +int re_max_failures = 4000; #endif union fail_stack_elt diff --git a/src/scrollbar-gtk.c b/src/scrollbar-gtk.c index cf98b64..ca3d615 100644 --- a/src/scrollbar-gtk.c +++ b/src/scrollbar-gtk.c @@ -57,14 +57,16 @@ gtk_inhibit_scrollbar_slider_size_change (void) static void gtk_free_scrollbar_instance (struct scrollbar_instance *instance) { - if (SCROLLBAR_GTK_WIDGET (instance)) + if (instance->scrollbar_data) { - gtk_widget_hide_all (SCROLLBAR_GTK_WIDGET (instance)); - gtk_widget_destroy (SCROLLBAR_GTK_WIDGET (instance)); - } + if (SCROLLBAR_GTK_WIDGET (instance)) + { + gtk_widget_hide_all (SCROLLBAR_GTK_WIDGET (instance)); + gtk_widget_destroy (SCROLLBAR_GTK_WIDGET (instance)); + } - if (instance->scrollbar_data) - xfree (instance->scrollbar_data); + xfree (instance->scrollbar_data); + } } /* A device method. */ diff --git a/tests/automated/mule-tests.el b/tests/automated/mule-tests.el index ab90516..a89690b 100644 --- a/tests/automated/mule-tests.el +++ b/tests/automated/mule-tests.el @@ -301,8 +301,7 @@ the Assert macro checks for correctness." (name1 (make-temp-name prefix)) (name2 (make-temp-name prefix)) (file-name-coding-system 'iso-8859-2)) - ;; This is how you suppress output from `message', called by `write-region' - (flet ((append-message (&rest args) ())) + (Silence-Message (Assert (not (equal name1 name2))) ;; Kludge to handle Mac OS X which groks only UTF-8. (cond ((eq system-type 'darwin) -- 1.7.10.4