From: tomo Date: Tue, 23 May 2006 15:02:25 +0000 (+0000) Subject: XEmacs 21.4.18 (Social Property). X-Git-Tag: r21-4-18-chise-0_23-1~1 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=0298dde5c47a900f2542bc7ec6c9dafc92ce3015;p=chise%2Fxemacs-chise.git XEmacs 21.4.18 (Social Property). --- diff --git a/ChangeLog b/ChangeLog index 36309bb..e47efd0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,60 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + +2005-12-01 Vin Shelton + + * etc/TUTORIAL.cs: copied from 21.5. + * etc/TUTORIAL.sl: copied from 21.5. + +2005-11-29 Ilya Golubev + + * configure.in: Merge revision 1.19 change: fix ldap libraries + configuration lossage when `-lldap -llber' links and but `-lldap' + does not; allow `ldap_libs' to be empty or overridden by builder. + The lossage was introduced in upstream revision 1.151.2.31 + (2005/01/31 02:54:47 vins) by (extremely hasty and unwise) merge + of revision 1.232 change. + * etc/NEWS: Document it. + +2005-03-12 Aidan Kehoe + + * configure.in (XE_COMPUTE_RUNPATH): Check XtRegisterDrawable + availability. + +2005-04-11 Norbert Koch + + * etc/PACKAGES: etc/PACKAGES: Announce re-builder, xetla. + +2005-11-15 Dr. Volker Zell + + * configure.in: Avoid using Motif also for cygwin + +2005-11-15 Dr. Volker Zell + + * configure.in: Check for u_int*_t typedefs and use them in + Berkeley DB detection. + +2005-04-11 Norbert Koch + + * etc/PACKAGES: etc/PACKAGES: Announce re-builder, xetla. + +2005-03-23 Vin Shelton + + * configure.in: Remove -fno-gnu-linker option from Solaris + dynodump builds; it doesn't do anything. + + Don't use 'head -1' - it's deprecated by coreutils-5.3.0 on some + platforms. + +2005-02-19 Norbert Koch + + * etc/PACKAGES: Announce latin-euro-standards, update mule-base. + +2005-02-12 Vin Shelton + + * etc/OXYMORONS: New list. + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/configure b/configure index e5e0e03..78bdaf8 100755 --- a/configure +++ b/configure @@ -2986,7 +2986,6 @@ EOF *86* ) dynodump_arch=i386 ;; powerpc ) dynodump_arch=ppc ;; esac - test "$GCC" = "yes" && ld_switch_site="$ld_switch_site -fno-gnu-linker" && if test "$extra_verbose" = "yes"; then echo " Appending \"-fno-gnu-linker\" to \$ld_switch_site"; fi fi @@ -3003,12 +3002,12 @@ if test "$unexec" = "unexaix.o"; then done echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6 -echo "configure:3007: checking for terminateAndUnload in -lC" >&5 +echo "configure:3006: checking for terminateAndUnload in -lC" >&5 ac_lib_var=`echo C'_'terminateAndUnload | 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:3022: \"$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 @@ -3127,7 +3126,7 @@ fi if test "$add_runtime_path" = "yes"; then echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6 -echo "configure:3131: checking "for runtime libraries flag"" >&5 +echo "configure:3130: checking "for runtime libraries flag"" >&5 case "$opsys" in sol2 ) dash_r="-R" ;; decosf* | linux* | irix*) dash_r="-rpath " ;; @@ -3149,14 +3148,14 @@ if test "$GCC" = "yes"; then done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* dash_r="$try_dash_r" else @@ -3257,10 +3256,10 @@ else fi after_morecore_hook_exists=yes echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6 -echo "configure:3261: checking for malloc_set_state" >&5 +echo "configure:3260: checking for malloc_set_state" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_malloc_set_state=yes" else @@ -3303,16 +3302,16 @@ doug_lea_malloc=no fi echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6 -echo "configure:3307: checking whether __after_morecore_hook exists" >&5 +echo "configure:3306: checking whether __after_morecore_hook exists" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -3368,7 +3367,7 @@ fi # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3372: checking for $ac_word" >&5 +echo "configure:3371: checking for $ac_word" >&5 if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -3423,7 +3422,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:3427: checking for a BSD compatible install" >&5 +echo "configure:3426: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" @@ -3477,7 +3476,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3481: checking for $ac_word" >&5 +echo "configure:3480: checking for $ac_word" >&5 if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. @@ -3509,15 +3508,15 @@ for ac_hdr in a.out.h elf.h cygwin/version.h fcntl.h inttypes.h libg do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3513: checking for $ac_hdr" >&5 +echo "configure:3512: 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:3521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3520: \"$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* @@ -3547,10 +3546,10 @@ fi done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:3551: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3550: checking for sys/wait.h that is POSIX.1 compatible" >&5 cat > conftest.$ac_ext < #include @@ -3566,7 +3565,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:3570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -3590,10 +3589,10 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3594: checking for ANSI C header files" >&5 +echo "configure:3593: checking for ANSI C header files" >&5 cat > conftest.$ac_ext < #include @@ -3601,7 +3600,7 @@ cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3605: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3604: \"$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* @@ -3618,7 +3617,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3636,7 +3635,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3654,7 +3653,7 @@ fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3665,7 +3664,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:3669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:3668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -3691,10 +3690,10 @@ EOF fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3695: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3694: checking whether time.h and sys/time.h may both be included" >&5 cat > conftest.$ac_ext < #include @@ -3703,7 +3702,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3727,10 +3726,10 @@ EOF fi echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:3731: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:3730: checking for sys_siglist declaration in signal.h or unistd.h" >&5 cat > conftest.$ac_ext < #include @@ -3742,7 +3741,7 @@ int main() { char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:3746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -3768,9 +3767,9 @@ fi echo $ac_n "checking for utime""... $ac_c" 1>&6 -echo "configure:3772: checking for utime" >&5 +echo "configure:3771: checking for utime" >&5 cat > conftest.$ac_ext < #include @@ -3778,7 +3777,7 @@ int main() { struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x); ; return 0; } EOF -if { (eval echo configure:3782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3781: \"$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 @@ -3797,10 +3796,10 @@ else for ac_func in utimes do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3801: checking for $ac_func" >&5 +echo "configure:3800: 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:3826: \"$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 @@ -3855,10 +3854,10 @@ rm -f conftest* echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3859: checking return type of signal handlers" >&5 +echo "configure:3858: checking return type of signal handlers" >&5 cat > conftest.$ac_ext < #include @@ -3875,7 +3874,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:3879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3878: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3897,10 +3896,10 @@ EOF echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3901: checking for size_t" >&5 +echo "configure:3900: checking for size_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3931,10 +3930,10 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3935: checking for pid_t" >&5 +echo "configure:3934: checking for pid_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3965,10 +3964,10 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3969: checking for uid_t in sys/types.h" >&5 +echo "configure:3968: checking for uid_t in sys/types.h" >&5 cat > conftest.$ac_ext < EOF @@ -4004,10 +4003,10 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:4008: checking for mode_t" >&5 +echo "configure:4007: checking for mode_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4038,10 +4037,10 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:4042: checking for off_t" >&5 +echo "configure:4041: checking for off_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4072,10 +4071,10 @@ EOF fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:4076: checking for ssize_t" >&5 +echo "configure:4075: checking for ssize_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4107,9 +4106,9 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:4111: checking for socklen_t" >&5 +echo "configure:4110: checking for socklen_t" >&5 cat > conftest.$ac_ext < #include @@ -4119,7 +4118,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -4128,7 +4127,7 @@ else rm -rf conftest* cat > conftest.$ac_ext < #include @@ -4138,7 +4137,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""size_t" 1>&6 @@ -4170,9 +4169,9 @@ fi rm -f conftest* echo $ac_n "checking for struct timeval""... $ac_c" 1>&6 -echo "configure:4174: checking for struct timeval" >&5 +echo "configure:4173: checking for struct timeval" >&5 cat > conftest.$ac_ext < @@ -4188,7 +4187,7 @@ int main() { static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } EOF -if { (eval echo configure:4192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 HAVE_TIMEVAL=yes @@ -4210,10 +4209,10 @@ fi rm -f conftest* echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:4214: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:4213: checking whether struct tm is in sys/time.h or time.h" >&5 cat > conftest.$ac_ext < #include @@ -4221,7 +4220,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:4225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -4245,10 +4244,10 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:4249: checking for tm_zone in struct tm" >&5 +echo "configure:4248: checking for tm_zone in struct tm" >&5 cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -4256,7 +4255,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:4260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -4279,10 +4278,10 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:4283: checking for tzname" >&5 +echo "configure:4282: checking for tzname" >&5 cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -4292,7 +4291,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:4296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -4318,10 +4317,10 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:4322: checking for working const" >&5 +echo "configure:4321: checking for working const" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -4395,7 +4394,7 @@ fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:4399: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:4398: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` cat > conftestmake <<\EOF @@ -4420,12 +4419,12 @@ fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4424: checking whether byte ordering is bigendian" >&5 +echo "configure:4423: checking whether byte ordering is bigendian" >&5 ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4436,11 +4435,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4440: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4451,7 +4450,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4468,7 +4467,7 @@ fi rm -f conftest* if test $ac_cv_c_bigendian = unknown; then cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_bigendian=no else @@ -4508,10 +4507,10 @@ fi echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:4512: checking size of short" >&5 +echo "configure:4511: checking size of short" >&5 cat > conftest.$ac_ext < main() @@ -4522,7 +4521,7 @@ main() exit(0); } EOF -if { (eval echo configure:4526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -4550,10 +4549,10 @@ if test "$ac_cv_sizeof_short" = 0; then exit 1 fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:4554: checking size of int" >&5 +echo "configure:4553: checking size of int" >&5 cat > conftest.$ac_ext < main() @@ -4564,7 +4563,7 @@ main() exit(0); } EOF -if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else @@ -4586,10 +4585,10 @@ EOF echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:4590: checking size of long" >&5 +echo "configure:4589: checking size of long" >&5 cat > conftest.$ac_ext < main() @@ -4600,7 +4599,7 @@ main() exit(0); } EOF -if { (eval echo configure:4604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else @@ -4622,10 +4621,10 @@ EOF echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:4626: checking size of long long" >&5 +echo "configure:4625: checking size of long long" >&5 cat > conftest.$ac_ext < main() @@ -4636,7 +4635,7 @@ main() exit(0); } EOF -if { (eval echo configure:4640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long_long=`cat conftestval` else @@ -4658,10 +4657,10 @@ EOF echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:4662: checking size of void *" >&5 +echo "configure:4661: checking size of void *" >&5 cat > conftest.$ac_ext < main() @@ -4672,7 +4671,7 @@ main() exit(0); } EOF -if { (eval echo configure:4676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_void_p=`cat conftestval` else @@ -4696,7 +4695,7 @@ EOF case $opsys in cygwin* ) cat > conftest.$ac_ext < EOF @@ -4721,7 +4720,7 @@ rm -f conftest* esac echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:4725: checking for long file names" >&5 +echo "configure:4724: checking for long file names" >&5 ac_cv_sys_long_file_names=yes # Test for long file names in all the places we know might matter: @@ -4767,10 +4766,10 @@ fi echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4771: checking for sin" >&5 +echo "configure:4770: checking for sin" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -4811,12 +4810,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 -echo "configure:4815: checking for sin in -lm" >&5 +echo "configure:4814: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` xe_check_libs=" -lm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4830: \"$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 @@ -4871,14 +4870,14 @@ EOF cat > conftest.$ac_ext < int main() { return atanh(1.0) + asinh(1.0) + acosh(1.0); ; return 0; } EOF -if { (eval echo configure:4882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_INVERSE_HYPERBOLIC @@ -4895,14 +4894,14 @@ fi rm -f conftest* echo "checking type of mail spool file locking" 1>&6 -echo "configure:4899: checking type of mail spool file locking" >&5 +echo "configure:4898: checking type of mail spool file locking" >&5 for ac_func in lockf flock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4903: checking for $ac_func" >&5 +echo "configure:4902: 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:4928: \"$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 @@ -5007,12 +5006,12 @@ test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \ case "$opsys" in decosf*) echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:5011: checking for cma_open in -lpthreads" >&5 +echo "configure:5010: checking for cma_open in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lpthreads " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5026: \"$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 @@ -5060,7 +5059,7 @@ esac echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:5064: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:5063: checking whether the -xildoff compiler flag is required" >&5 if ${CC-cc} '-###' -xildon no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then echo "$ac_t""no" 1>&6; @@ -5072,7 +5071,7 @@ fi if test "$opsys" = "sol2"; then if test "$os_release" -ge 506; then echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6 -echo "configure:5076: checking for \"-z ignore\" linker flag" >&5 +echo "configure:5075: checking for \"-z ignore\" linker flag" >&5 case "`ld -h 2>&1`" in *-z\ ignore\|record* ) echo "$ac_t""yes" 1>&6 ld_switch_site="-z ignore $ld_switch_site" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-z ignore\" to \$ld_switch_site"; fi ;; @@ -5083,7 +5082,7 @@ fi echo "checking "for specified window system"" 1>&6 -echo "configure:5087: checking "for specified window system"" >&5 +echo "configure:5086: checking "for specified window system"" >&5 GNOME_CONFIG=no @@ -5091,7 +5090,7 @@ GTK_CONFIG=no if test "$with_gnome" != "no"; then echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6 -echo "configure:5095: checking for GNOME configuration script" >&5 +echo "configure:5094: checking for GNOME configuration script" >&5 for possible in gnome-config do possible_version=`${possible} --version 2> /dev/null` @@ -5122,7 +5121,7 @@ fi if test "$with_gtk" != "no";then echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6 -echo "configure:5126: checking for GTK configuration script" >&5 +echo "configure:5125: checking for GTK configuration script" >&5 for possible in gtk12-config gtk14-config gtk-config do possible_version=`${possible} --version 2> /dev/null` @@ -5144,18 +5143,18 @@ fi if test "${GTK_CONFIG}" != "no"; then echo $ac_n "checking gtk version""... $ac_c" 1>&6 -echo "configure:5148: checking gtk version" >&5 +echo "configure:5147: checking gtk version" >&5 GTK_VERSION=`${GTK_CONFIG} --version` echo "$ac_t""${GTK_VERSION}" 1>&6 echo $ac_n "checking gtk libs""... $ac_c" 1>&6 -echo "configure:5153: checking gtk libs" >&5 +echo "configure:5152: checking gtk libs" >&5 GTK_LIBS=`${GTK_CONFIG} --libs` libs_gtk="$libs_gtk ${GTK_LIBS}" && if test "$extra_verbose" = "yes"; then echo " Appending \"${GTK_LIBS}\" to \$libs_gtk"; fi echo "$ac_t""${GTK_LIBS}" 1>&6 echo $ac_n "checking gtk cflags""... $ac_c" 1>&6 -echo "configure:5159: checking gtk cflags" >&5 +echo "configure:5158: checking gtk cflags" >&5 GTK_CFLAGS=`${GTK_CONFIG} --cflags` if test "$GCC" = "yes"; then GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow" @@ -5165,19 +5164,19 @@ echo "configure:5159: checking gtk cflags" >&5 echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6 -echo "configure:5169: checking for main in -lgdk_imlib" >&5 +echo "configure:5168: checking for main in -lgdk_imlib" >&5 ac_lib_var=`echo gdk_imlib'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdk_imlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5180: \"$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 @@ -5199,12 +5198,12 @@ fi echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6 -echo "configure:5203: checking for Imlib_init in -lImlib" >&5 +echo "configure:5202: checking for Imlib_init in -lImlib" >&5 ac_lib_var=`echo Imlib'_'Imlib_init | sed 'y%./+-%__p_%'` xe_check_libs=" -lImlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5218: \"$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 @@ -5238,10 +5237,10 @@ fi for ac_func in gdk_imlib_init do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5242: checking for $ac_func" >&5 +echo "configure:5241: 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:5267: \"$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 @@ -5343,15 +5342,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5347: checking for $ac_hdr" >&5 +echo "configure:5346: 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:5355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5354: \"$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* @@ -5382,19 +5381,19 @@ done echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6 -echo "configure:5386: checking for main in -lxml" >&5 +echo "configure:5385: checking for main in -lxml" >&5 ac_lib_var=`echo xml'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lxml " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5397: \"$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 @@ -5416,19 +5415,19 @@ fi echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6 -echo "configure:5420: checking for main in -lglade" >&5 +echo "configure:5419: checking for main in -lglade" >&5 ac_lib_var=`echo glade'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lglade " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5431: \"$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 @@ -5450,19 +5449,19 @@ fi echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6 -echo "configure:5454: checking for main in -lglade-gnome" >&5 +echo "configure:5453: checking for main in -lglade-gnome" >&5 ac_lib_var=`echo glade-gnome'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lglade-gnome " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5465: \"$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 @@ -5483,7 +5482,7 @@ fi cat > conftest.$ac_ext < EOF @@ -5542,7 +5541,7 @@ if test "$with_x11" != "no"; then # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:5546: checking for X" >&5 +echo "configure:5545: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -5602,12 +5601,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5611: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5610: \"$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* @@ -5676,14 +5675,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -5792,17 +5791,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:5796: checking whether -R must be followed by a space" >&5 +echo "configure:5795: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -5818,14 +5817,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -5861,12 +5860,12 @@ ac_cv_lib_dnet_dnet_ntoa=no else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:5865: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:5864: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` xe_check_libs=" -ldnet " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5880: \"$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 @@ -5901,12 +5900,12 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:5905: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:5904: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` xe_check_libs=" -ldnet_stub " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5920: \"$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 @@ -5946,10 +5945,10 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:5950: checking for gethostbyname" >&5 +echo "configure:5949: checking for gethostbyname" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -5993,12 +5992,12 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:5997: checking for gethostbyname in -lnsl" >&5 +echo "configure:5996: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` xe_check_libs=" -lnsl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6012: \"$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 @@ -6039,10 +6038,10 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:6043: checking for connect" >&5 +echo "configure:6042: checking for connect" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -6088,12 +6087,12 @@ fi xe_msg_checking="for connect in -lsocket" test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6092: checking "$xe_msg_checking"" >&5 +echo "configure:6091: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` xe_check_libs=" -lsocket $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6107: \"$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 @@ -6128,10 +6127,10 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:6132: checking for remove" >&5 +echo "configure:6131: checking for remove" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -6175,12 +6174,12 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:6179: checking for remove in -lposix" >&5 +echo "configure:6178: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` xe_check_libs=" -lposix " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6194: \"$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 @@ -6215,10 +6214,10 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:6219: checking for shmat" >&5 +echo "configure:6218: checking for shmat" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -6262,12 +6261,12 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:6266: checking for shmat in -lipc" >&5 +echo "configure:6265: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` xe_check_libs=" -lipc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6281: \"$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 @@ -6314,12 +6313,12 @@ fi xe_msg_checking="for IceConnectionNumber in -lICE" test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6318: checking "$xe_msg_checking"" >&5 +echo "configure:6317: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` xe_check_libs=" -lICE $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6333: \"$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 @@ -6376,15 +6375,15 @@ EOF ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:6380: checking for Xm/Xm.h" >&5 +echo "configure:6379: 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:6388: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6387: \"$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* @@ -6401,12 +6400,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:6405: checking for XmStringFree in -lXm" >&5 +echo "configure:6404: 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:6420: \"$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 @@ -6569,7 +6568,7 @@ EOF echo "checking for X defines extracted by xmkmf" 1>&6 -echo "configure:6573: checking for X defines extracted by xmkmf" >&5 +echo "configure:6572: checking for X defines extracted by xmkmf" >&5 rm -fr conftestdir if mkdir conftestdir; then cd conftestdir @@ -6618,15 +6617,15 @@ EOF ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:6622: checking for X11/Intrinsic.h" >&5 +echo "configure:6621: checking for X11/Intrinsic.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6629: \"$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* @@ -6650,12 +6649,12 @@ fi echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:6654: checking for XOpenDisplay in -lX11" >&5 +echo "configure:6653: checking for XOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6669: \"$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 @@ -6691,12 +6690,12 @@ fi xe_msg_checking="for XGetFontProperty in -lX11" test -n "-b i486-linuxaout" && xe_msg_checking="$xe_msg_checking using extra libs -b i486-linuxaout" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6695: checking "$xe_msg_checking"" >&5 +echo "configure:6694: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 -b i486-linuxaout" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6710: \"$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 @@ -6734,12 +6733,12 @@ fi echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:6738: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:6737: checking for XShapeSelectInput in -lXext" >&5 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'` xe_check_libs=" -lXext " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6753: \"$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 @@ -6773,12 +6772,12 @@ fi echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:6777: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:6776: checking for XtOpenDisplay in -lXt" >&5 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lXt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6792: \"$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 @@ -6812,14 +6811,14 @@ fi echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:6816: checking the version of X11 being used" >&5 +echo "configure:6815: checking the version of X11 being used" >&5 cat > conftest.$ac_ext < int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; } EOF -if { (eval echo configure:6823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:6822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest foobar; x11_release=$? else @@ -6847,13 +6846,13 @@ EOF esac fi - for ac_func in XConvertCase + for ac_func in XConvertCase XtRegisterDrawable do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6854: checking for $ac_func" >&5 +echo "configure:6853: 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:6879: \"$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 @@ -6908,15 +6907,15 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6912: checking for $ac_hdr" >&5 +echo "configure:6911: 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:6920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6919: \"$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* @@ -6949,10 +6948,10 @@ done for ac_func in XRegisterIMInstantiateCallback do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6953: checking for $ac_func" >&5 +echo "configure:6952: 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:6978: \"$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 @@ -7003,9 +7002,9 @@ fi done echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6 -echo "configure:7007: checking for standard XRegisterIMInstantiateCallback prototype" >&5 +echo "configure:7006: checking for standard XRegisterIMInstantiateCallback prototype" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -7038,12 +7037,12 @@ rm -f conftest* test -z "$with_xmu" && { echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6 -echo "configure:7042: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 +echo "configure:7041: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'` xe_check_libs=" -lXmu " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7057: \"$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 @@ -7093,19 +7092,19 @@ EOF echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:7097: checking for main in -lXbsd" >&5 +echo "configure:7096: checking for main in -lXbsd" >&5 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lXbsd " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7108: \"$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 @@ -7129,7 +7128,7 @@ fi if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then if test "$GCC" = "yes"; then echo $ac_n "checking for name of AIX gcc threads option""... $ac_c" 1>&6 -echo "configure:7133: checking for name of AIX gcc threads option" >&5 +echo "configure:7132: checking for name of AIX gcc threads option" >&5 case `$CC -v --help 2>&1` in *-mthreads*) aix_threads=-mthreads ;; *) aix_threads=-pthread ;; @@ -7143,10 +7142,10 @@ echo "configure:7133: checking for name of AIX gcc threads option" >&5 xe_save_CC="$CC" CC="${CC}_r" echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:7147: checking size of short" >&5 +echo "configure:7146: checking size of short" >&5 cat > conftest.$ac_ext < main() @@ -7157,7 +7156,7 @@ main() exit(0); } EOF -if { (eval echo configure:7161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -7186,22 +7185,22 @@ EOF fi if test "$with_msw" != "no"; then echo "checking for MS-Windows" 1>&6 -echo "configure:7190: checking for MS-Windows" >&5 +echo "configure:7189: checking for MS-Windows" >&5 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6 -echo "configure:7193: checking for main in -lgdi32" >&5 +echo "configure:7192: checking for main in -lgdi32" >&5 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdi32 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7204: \"$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 @@ -7274,12 +7273,12 @@ EOF fi fi cat > conftest.$ac_ext < int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; } EOF -if { (eval echo configure:7283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then need_event_unixoid=yes; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MSG_SELECT @@ -7343,15 +7342,15 @@ fi if test "$with_x11" = "yes"; then ac_safe=`echo "X11/extensions/shape.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/shape.h""... $ac_c" 1>&6 -echo "configure:7347: checking for X11/extensions/shape.h" >&5 +echo "configure:7346: checking for X11/extensions/shape.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7354: \"$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* @@ -7403,7 +7402,7 @@ case "$x_libraries" in *X11R4* ) esac echo "checking for WM_COMMAND option" 1>&6 -echo "configure:7407: checking for WM_COMMAND option" >&5; +echo "configure:7406: checking for WM_COMMAND option" >&5; if test "$with_wmcommand" != "no"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_WMCOMMAND @@ -7418,15 +7417,15 @@ fi test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no test -z "$with_xauth" && { ac_safe=`echo "X11/Xauth.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xauth.h""... $ac_c" 1>&6 -echo "configure:7422: checking for X11/Xauth.h" >&5 +echo "configure:7421: checking for X11/Xauth.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7430: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7429: \"$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* @@ -7449,12 +7448,12 @@ fi } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:7453: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:7452: checking for XauGetAuthByAddr in -lXau" >&5 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'` xe_check_libs=" -lXau " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7468: \"$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 @@ -7510,15 +7509,15 @@ if test "$with_tooltalk" != "no" ; then for dir in "" "Tt/" "desktop/" ; do ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6 -echo "configure:7514: checking for ${dir}tt_c.h" >&5 +echo "configure:7513: checking for ${dir}tt_c.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7521: \"$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* @@ -7554,12 +7553,12 @@ if test "$with_tooltalk" != "no" ; then xe_msg_checking="for tt_message_create in -ltt" test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7558: checking "$xe_msg_checking"" >&5 +echo "configure:7557: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'` xe_check_libs=" -ltt $extra_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7573: \"$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 @@ -7627,15 +7626,15 @@ fi test -z "$with_cde" && { ac_safe=`echo "Dt/Dt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Dt/Dt.h""... $ac_c" 1>&6 -echo "configure:7631: checking for Dt/Dt.h" >&5 +echo "configure:7630: checking for Dt/Dt.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7639: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7638: \"$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* @@ -7658,12 +7657,12 @@ fi } test -z "$with_cde" && { echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:7662: checking for DtDndDragStart in -lDtSvc" >&5 +echo "configure:7661: checking for DtDndDragStart in -lDtSvc" >&5 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'` xe_check_libs=" -lDtSvc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7677: \"$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 @@ -7747,7 +7746,7 @@ fi if test "$with_dragndrop" != "no" ; then echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6 -echo "configure:7751: checking if drag and drop API is needed" >&5 +echo "configure:7750: checking if drag and drop API is needed" >&5 if test -n "$dragndrop_proto" ; then with_dragndrop=yes echo "$ac_t""yes (${dragndrop_proto} )" 1>&6 @@ -7767,18 +7766,18 @@ EOF fi echo "checking for LDAP" 1>&6 -echo "configure:7771: checking for LDAP" >&5 +echo "configure:7770: checking for LDAP" >&5 test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ldap.h""... $ac_c" 1>&6 -echo "configure:7774: checking for ldap.h" >&5 +echo "configure:7773: checking for ldap.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7781: \"$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* @@ -7801,15 +7800,15 @@ fi } test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for lber.h""... $ac_c" 1>&6 -echo "configure:7805: checking for lber.h" >&5 +echo "configure:7804: checking for lber.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7812: \"$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* @@ -7830,26 +7829,73 @@ else with_ldap=no fi } -if test "$with_ldap" != "no"; then - -echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6 -echo "configure:7837: checking for ldap_search in -lldap" >&5 -ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'` +if test no != "$with_ldap";then + if test . != "${ldap_libs+.}";then + ldap_libs= + echo $ac_n "checking for ldap_open""... $ac_c" 1>&6 +echo "configure:7837: checking for ldap_open" >&5 + +cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ldap_open(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_ldap_open) || defined (__stub___ldap_open) +choke me +#else +ldap_open(); +#endif + +; return 0; } +EOF +if { (eval echo configure:7863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_ldap_open=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_ldap_open=no" +fi +rm -f conftest* + +if eval "test \"`echo '$ac_cv_func_'ldap_open`\" = yes"; then + echo "$ac_t""yes" 1>&6 + with_ldap=yes + test yes = "$extra_verbose" && + echo "Setting ldap_libs to $ldap_libs" +else + echo "$ac_t""no" 1>&6 + +echo $ac_n "checking for ldap_open in -lldap""... $ac_c" 1>&6 +echo "configure:7883: checking for ldap_open in -lldap" >&5 +ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7899: \"$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 @@ -7866,19 +7912,17 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then with_ldap=yes else echo "$ac_t""no" 1>&6 -fi - - - test "$with_ldap" != "yes" && { +ldap_needs_lber=yes ldap_other_libs=-llber + xe_msg_checking="for ldap_open in -lldap" -test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber" +test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7877: checking "$xe_msg_checking"" >&5 +echo "configure:7921: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` -xe_check_libs=" -lldap -llber" +xe_check_libs=" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7937: \"$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 @@ -7903,22 +7947,20 @@ xe_check_libs="" if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - with_ldap=yes with_ldap_lber=yes + with_ldap=yes else echo "$ac_t""no" 1>&6 -fi - - } - test "$with_ldap" != "yes" && { +ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb" + xe_msg_checking="for ldap_open in -lldap" -test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb" +test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7917: checking "$xe_msg_checking"" >&5 +echo "configure:7959: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` -xe_check_libs=" -lldap -llber -lkrb" +xe_check_libs=" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7975: \"$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 @@ -7943,22 +7985,20 @@ xe_check_libs="" if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes + with_ldap=yes else echo "$ac_t""no" 1>&6 -fi - - } - test "$with_ldap" != "yes" && { +ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes" + xe_msg_checking="for ldap_open in -lldap" -test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes" +test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7957: checking "$xe_msg_checking"" >&5 +echo "configure:7997: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` -xe_check_libs=" -lldap -llber -lkrb -ldes" +xe_check_libs=" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8013: \"$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 @@ -7983,50 +8023,88 @@ xe_check_libs="" if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes with_ldap_des=yes + with_ldap=yes else echo "$ac_t""no" 1>&6 +with_ldap=no fi - } - test "$with_ldap_lber" != "yes" && { -echo $ac_n "checking for ber_pvt_opt_on in -llber""... $ac_c" 1>&6 -echo "configure:7995: checking for ber_pvt_opt_on in -llber" >&5 -ac_lib_var=`echo lber'_'ber_pvt_opt_on | sed 'y%./+-%__p_%'` -xe_check_libs=" -llber " +fi + + +fi + + +fi + + + if test yes = "$with_ldap";then + if test yes = "$ldap_needs_des";then + ldap_libs="-ldes $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ldes\" to \$ldap_libs"; fi + fi + if test yes = "$ldap_needs_krb";then + ldap_libs="-lkrb $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lkrb\" to \$ldap_libs"; fi + fi + if test yes = "$ldap_needs_lber";then + ldap_libs="-llber $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-llber\" to \$ldap_libs"; fi + fi + ldap_libs="-lldap $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lldap\" to \$ldap_libs"; fi + fi +fi + + else + save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS" + echo $ac_n "checking for ldap_open""... $ac_c" 1>&6 +echo "configure:8060: checking for ldap_open" >&5 + cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char ber_pvt_opt_on(); +char ldap_open(); int main() { -ber_pvt_opt_on() + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_ldap_open) || defined (__stub___ldap_open) +choke me +#else +ldap_open(); +#endif + ; return 0; } EOF -if { (eval echo configure:8011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8086: \"$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" + eval "ac_cv_func_ldap_open=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_func_ldap_open=no" fi rm -f conftest* -xe_check_libs="" -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then +if eval "test \"`echo '$ac_cv_func_'ldap_open`\" = yes"; then echo "$ac_t""yes" 1>&6 - with_ldap_lber=yes + with_ldap=yes + test yes = "$extra_verbose" && + echo "Setting ldap_libs to $ldap_libs" else echo "$ac_t""no" 1>&6 + with_ldap=no fi - } + LIBS="$save_LIBS" + fi fi if test "$with_ldap" = "yes"; then { test "$extra_verbose" = "yes" && cat << \EOF @@ -8040,23 +8118,14 @@ EOF extra_objs="$extra_objs eldap.o" && if test "$extra_verbose" = "yes"; then echo " xemacs will be linked with \"eldap.o\"" fi - if test "$with_ldap_des" = "yes" ; then - LIBS="-ldes $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ldes\" to \$LIBS"; fi - fi - if test "$with_ldap_krb" = "yes" ; then - LIBS="-lkrb $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lkrb\" to \$LIBS"; fi - fi - if test "$with_ldap_lber" = "yes" ; then - LIBS="-llber $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-llber\" to \$LIBS"; fi - fi - LIBS="-lldap $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lldap\" to \$LIBS"; fi + LIBS="$ldap_libs $LIBS" for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8057: checking for $ac_func" >&5 +echo "configure:8126: 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:8152: \"$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 @@ -8110,20 +8179,20 @@ fi if test "$with_postgresql" != "no"; then echo "checking for PostgreSQL" 1>&6 -echo "configure:8114: checking for PostgreSQL" >&5 +echo "configure:8183: checking for PostgreSQL" >&5 for header_dir in "" "pgsql/" "postgresql/"; do ac_safe=`echo "${header_dir}libpq-fe.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${header_dir}libpq-fe.h""... $ac_c" 1>&6 -echo "configure:8119: checking for ${header_dir}libpq-fe.h" >&5 +echo "configure:8188: checking for ${header_dir}libpq-fe.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8127: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8196: \"$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* @@ -8147,12 +8216,12 @@ fi test -n "$libpq_fe_h_file" && { echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6 -echo "configure:8151: checking for PQconnectdb in -lpq" >&5 +echo "configure:8220: checking for PQconnectdb in -lpq" >&5 ac_lib_var=`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'` xe_check_libs=" -lpq " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8236: \"$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 @@ -8196,12 +8265,12 @@ EOF echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6 -echo "configure:8200: checking for PQconnectStart in -lpq" >&5 +echo "configure:8269: checking for PQconnectStart in -lpq" >&5 ac_lib_var=`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'` xe_check_libs=" -lpq " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8285: \"$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 @@ -8260,7 +8329,7 @@ fi if test "$window_system" != "none"; then echo "checking for graphics libraries" 1>&6 -echo "configure:8264: checking for graphics libraries" >&5 +echo "configure:8333: checking for graphics libraries" >&5 libpath_xpm= incpath_xpm= @@ -8286,10 +8355,10 @@ echo "configure:8264: 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:8290: checking for Xpm - no older than 3.4f" >&5 +echo "configure:8359: checking for Xpm - no older than 3.4f" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext < @@ -8298,7 +8367,7 @@ echo "configure:8290: checking for Xpm - no older than 3.4f" >&5 XpmIncludeVersion != XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:8302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8371: \"$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 @@ -8342,17 +8411,17 @@ EOF libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi CFLAGS=""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6 -echo "configure:8346: checking for \"FOR_MSW\" xpm" >&5 +echo "configure:8415: checking for \"FOR_MSW\" xpm" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* xpm_for_msw=no else @@ -8378,15 +8447,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:8382: checking for compface.h" >&5 +echo "configure:8451: 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:8390: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8459: \"$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* @@ -8409,12 +8478,12 @@ fi } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8413: checking for UnGenFace in -lcompface" >&5 +echo "configure:8482: 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:8498: \"$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 @@ -8477,12 +8546,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:8481: checking for inflate in -lc" >&5 +echo "configure:8550: 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:8566: \"$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 @@ -8512,12 +8581,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:8516: checking for inflate in -lz" >&5 +echo "configure:8585: 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:8601: \"$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 @@ -8547,12 +8616,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:8551: checking for inflate in -lgz" >&5 +echo "configure:8620: 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:8636: \"$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 @@ -8593,15 +8662,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:8597: checking for jpeglib.h" >&5 +echo "configure:8666: 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:8605: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8674: \"$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* @@ -8624,12 +8693,12 @@ fi } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:8628: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:8697: 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:8713: \"$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 @@ -8676,10 +8745,10 @@ EOF png_problem="" test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:8680: checking for pow" >&5 +echo "configure:8749: checking for pow" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8775: \"$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 @@ -8723,15 +8792,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:8727: checking for png.h" >&5 +echo "configure:8796: 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:8735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8804: \"$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* @@ -8754,12 +8823,12 @@ fi } test -z "$with_png" && { echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:8758: checking for png_read_image in -lpng" >&5 +echo "configure:8827: 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:8843: \"$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 @@ -8793,10 +8862,10 @@ fi } if test -z "$with_png"; then echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 -echo "configure:8797: checking for workable png version information" >&5 +echo "configure:8866: checking for workable png version information" >&5 xe_check_libs="-lpng -lz" cat > conftest.$ac_ext < int main(int c, char **v) { @@ -8804,7 +8873,7 @@ echo "configure:8797: 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:8808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8877: \"$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 @@ -8847,15 +8916,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:8851: checking for tiffio.h" >&5 +echo "configure:8920: 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:8859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8928: \"$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* @@ -8878,12 +8947,12 @@ fi } test -z "$with_tiff" && { echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:8882: checking for TIFFClientOpen in -ltiff" >&5 +echo "configure:8951: 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:8967: \"$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 @@ -8933,15 +9002,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:8937: checking for compface.h" >&5 +echo "configure:9006: 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:8945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9014: \"$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* @@ -8964,12 +9033,12 @@ fi } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8968: checking for UnGenFace in -lcompface" >&5 +echo "configure:9037: 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:9053: \"$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 @@ -9019,12 +9088,12 @@ fi if test "$with_x11" = "yes"; then echo "checking for X11 graphics libraries" 1>&6 -echo "configure:9023: checking for X11 graphics libraries" >&5 +echo "configure:9092: checking for X11 graphics libraries" >&5 fi if test "$with_x11" = "yes"; then echo "checking for the Athena widgets" 1>&6 -echo "configure:9028: checking for the Athena widgets" >&5 +echo "configure:9097: checking for the Athena widgets" >&5 case "$with_athena" in "xaw" | "") athena_variant=Xaw athena_3d=no ;; @@ -9040,12 +9109,12 @@ echo "configure:9028: 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:9044: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 +echo "configure:9113: 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:9129: \"$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 @@ -9072,12 +9141,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:9076: checking for $athena_3d_function in -l$athena_variant" >&5 +echo "configure:9145: 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:9161: \"$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 @@ -9119,12 +9188,12 @@ fi else echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:9123: checking for $athena_3d_function in -l$athena_variant" >&5 +echo "configure:9192: 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:9208: \"$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 @@ -9153,12 +9222,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:9157: checking for $athena_3d_function in -lXaw" >&5 +echo "configure:9226: 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:9242: \"$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 @@ -9200,15 +9269,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:9204: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9273: 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:9212: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9281: \"$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* @@ -9228,15 +9297,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:9232: checking for X11/Xaw/XawInit.h" >&5 +echo "configure:9301: 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:9240: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9309: \"$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* @@ -9262,15 +9331,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:9266: checking for X11/$athena_variant/XawInit.h" >&5 +echo "configure:9335: 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:9274: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9343: \"$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* @@ -9287,15 +9356,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:9291: checking for X11/$athena_variant/ThreeD.h" >&5 +echo "configure:9360: 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:9299: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9368: \"$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* @@ -9323,15 +9392,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:9327: checking for $athena_variant/XawInit.h" >&5 +echo "configure:9396: 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:9335: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9404: \"$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* @@ -9348,15 +9417,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:9352: checking for $athena_variant/ThreeD.h" >&5 +echo "configure:9421: 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:9360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9429: \"$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* @@ -9385,15 +9454,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:9389: checking for X11/Xaw3d/XawInit.h" >&5 +echo "configure:9458: 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:9397: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9466: \"$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* @@ -9410,15 +9479,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:9414: checking for X11/Xaw3d/ThreeD.h" >&5 +echo "configure:9483: 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:9422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9491: \"$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* @@ -9450,15 +9519,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:9454: checking for Xaw3d/XawInit.h" >&5 +echo "configure:9523: 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:9462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9531: \"$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* @@ -9475,15 +9544,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:9479: checking for Xaw3d/ThreeD.h" >&5 +echo "configure:9548: 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:9487: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9556: \"$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* @@ -9515,15 +9584,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:9519: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9588: 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:9527: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9596: \"$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* @@ -9562,15 +9631,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:9566: checking for Xm/Xm.h" >&5 +echo "configure:9635: 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:9574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9643: \"$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* @@ -9587,12 +9656,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:9591: checking for XmStringFree in -lXm" >&5 +echo "configure:9660: 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:9676: \"$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 @@ -9632,9 +9701,9 @@ fi if test "$have_motif" = "yes"; then echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:9636: checking for Lesstif" >&5 +echo "configure:9705: checking for Lesstif" >&5 cat > conftest.$ac_ext < #ifdef LESSTIF_VERSION @@ -9658,7 +9727,7 @@ rm -f conftest* fi case "$opsys" in - *linux* ) lucid_prefers_motif="no" ;; + *linux* | cygwin* ) lucid_prefers_motif="no" ;; * ) lucid_prefers_motif="yes" ;; esac @@ -10080,7 +10149,7 @@ fi if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:10084: checking for Mule-related features" >&5 +echo "configure:10153: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -10105,15 +10174,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10109: checking for $ac_hdr" >&5 +echo "configure:10178: 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:10117: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10186: \"$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* @@ -10144,12 +10213,12 @@ done echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:10148: checking for strerror in -lintl" >&5 +echo "configure:10217: 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:10233: \"$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 @@ -10193,18 +10262,18 @@ fi echo "checking for Mule input methods" 1>&6 -echo "configure:10197: checking for Mule input methods" >&5 +echo "configure:10266: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:10200: checking for XIM" >&5 +echo "configure:10269: checking for XIM" >&5 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6 -echo "configure:10203: checking for XOpenIM in -lX11" >&5 +echo "configure:10272: 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:10288: \"$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 @@ -10239,12 +10308,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:10243: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10312: 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:10328: \"$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 @@ -10278,12 +10347,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:10282: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10351: 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:10367: \"$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 @@ -10359,15 +10428,15 @@ EOF if test "$with_xfs" = "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:10363: checking for XFontSet" >&5 +echo "configure:10432: checking for XFontSet" >&5 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:10366: checking for XmbDrawString in -lX11" >&5 +echo "configure:10435: 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:10451: \"$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 @@ -10418,15 +10487,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:10422: checking for wnn/jllib.h" >&5 +echo "configure:10491: 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:10430: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10499: \"$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* @@ -10449,15 +10518,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:10453: checking for wnn/commonhd.h" >&5 +echo "configure:10522: 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:10461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10530: \"$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* @@ -10482,10 +10551,10 @@ fi for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10486: checking for $ac_func" >&5 +echo "configure:10555: 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:10581: \"$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 @@ -10537,12 +10606,12 @@ done test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:10541: checking for crypt in -lcrypt" >&5 +echo "configure:10610: 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:10626: \"$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 @@ -10588,12 +10657,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:10592: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:10661: 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:10677: \"$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 @@ -10622,12 +10691,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:10626: checking for jl_dic_list_e in -lwnn4" >&5 +echo "configure:10695: 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:10711: \"$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 @@ -10656,12 +10725,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:10660: checking for jl_dic_list_e in -lwnn6" >&5 +echo "configure:10729: 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:10745: \"$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 @@ -10690,12 +10759,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:10694: checking for dic_list_e in -lwnn6_fromsrc" >&5 +echo "configure:10763: 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:10779: \"$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 @@ -10754,12 +10823,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:10758: checking for jl_fi_dic_list in -l$libwnn" >&5 +echo "configure:10827: 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:10843: \"$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 @@ -10805,15 +10874,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:10809: checking for canna/jrkanji.h" >&5 +echo "configure:10878: 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:10817: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10886: \"$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* @@ -10840,15 +10909,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:10844: checking for canna/jrkanji.h" >&5 +echo "configure:10913: 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:10852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10921: \"$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* @@ -10876,15 +10945,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:10880: checking for canna/RK.h" >&5 +echo "configure:10949: 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:10888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10957: \"$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* @@ -10907,12 +10976,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:10911: checking for RkBgnBun in -lRKC" >&5 +echo "configure:10980: 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:10996: \"$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 @@ -10946,12 +11015,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:10950: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:11019: 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:11035: \"$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 @@ -11011,12 +11080,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:11015: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:11084: 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:11100: \"$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 @@ -11114,10 +11183,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:11118: checking for $ac_func" >&5 +echo "configure:11187: 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:11213: \"$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 @@ -11181,10 +11250,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:11185: checking for $ac_func" >&5 +echo "configure:11254: 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:11280: \"$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 @@ -11236,10 +11305,10 @@ done echo $ac_n "checking for openpty""... $ac_c" 1>&6 -echo "configure:11240: checking for openpty" >&5 +echo "configure:11309: checking for openpty" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11335: \"$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 @@ -11281,12 +11350,12 @@ else echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:11285: checking for openpty in -lutil" >&5 +echo "configure:11354: 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:11370: \"$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 @@ -11332,15 +11401,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11336: checking for $ac_hdr" >&5 +echo "configure:11405: 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:11344: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11413: \"$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* @@ -11376,15 +11445,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:11380: checking for $ac_hdr" >&5 +echo "configure:11449: 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:11388: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11457: \"$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* @@ -11417,10 +11486,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:11421: checking for $ac_func" >&5 +echo "configure:11490: 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:11516: \"$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 @@ -11474,15 +11543,15 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11478: checking for $ac_hdr" >&5 +echo "configure:11547: 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:11486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11555: \"$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* @@ -11519,10 +11588,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:11523: checking for $ac_func" >&5 +echo "configure:11592: 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:11618: \"$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 @@ -11578,15 +11647,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:11582: checking for $ac_hdr" >&5 +echo "configure:11651: 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:11590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11659: \"$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* @@ -11622,12 +11691,12 @@ else echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:11626: checking for kstat_open in -lkstat" >&5 +echo "configure:11695: 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:11711: \"$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 @@ -11673,15 +11742,15 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11677: checking for $ac_hdr" >&5 +echo "configure:11746: 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:11685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11754: \"$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* @@ -11713,12 +11782,12 @@ done echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:11717: checking for kvm_read in -lkvm" >&5 +echo "configure:11786: 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:11802: \"$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 @@ -11763,16 +11832,16 @@ fi fi echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:11767: checking whether netdb declares h_errno" >&5 +echo "configure:11836: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:11776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11845: \"$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 @@ -11792,16 +11861,16 @@ fi rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:11796: checking for sigsetjmp" >&5 +echo "configure:11865: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:11805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11874: \"$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 @@ -11821,11 +11890,11 @@ fi rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:11825: checking whether localtime caches TZ" >&5 +echo "configure:11894: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -11860,7 +11929,7 @@ main() exit (0); } EOF -if { (eval echo configure:11864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:11933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=no else @@ -11890,9 +11959,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:11894: checking whether gettimeofday accepts one or two arguments" >&5 +echo "configure:11963: 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:11986: \"$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 @@ -11935,19 +12004,19 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:11939: checking for inline" >&5 +echo "configure:12008: 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:12020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -11988,17 +12057,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:11992: checking for working alloca.h" >&5 +echo "configure:12061: 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:12002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12071: \"$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 @@ -12022,10 +12091,10 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:12026: checking for alloca" >&5 +echo "configure:12095: checking for alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12126: \"$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 @@ -12092,10 +12161,10 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:12096: checking whether alloca needs Cray hooks" >&5 +echo "configure:12165: 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:12123: checking for $ac_func" >&5 +echo "configure:12192: 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:12218: \"$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 @@ -12175,10 +12244,10 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:12179: checking stack direction for C alloca" >&5 +echo "configure:12248: 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:12270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=1 else @@ -12227,15 +12296,15 @@ fi ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:12231: checking for vfork.h" >&5 +echo "configure:12300: 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:12239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12308: \"$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* @@ -12263,10 +12332,10 @@ else fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:12267: checking for working vfork" >&5 +echo "configure:12336: checking for working vfork" >&5 cat > conftest.$ac_ext < @@ -12361,7 +12430,7 @@ main() { } } EOF -if { (eval echo configure:12365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_vfork_works=yes else @@ -12387,10 +12456,10 @@ fi echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:12391: checking for working strcoll" >&5 +echo "configure:12460: checking for working strcoll" >&5 cat > conftest.$ac_ext < main () @@ -12400,7 +12469,7 @@ main () strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:12404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -12428,10 +12497,10 @@ fi for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:12432: checking for $ac_func" >&5 +echo "configure:12501: 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:12527: \"$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 @@ -12482,10 +12551,10 @@ fi done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:12486: checking whether getpgrp takes no argument" >&5 +echo "configure:12555: 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:12613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=yes else @@ -12567,10 +12636,10 @@ fi echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:12571: checking for working mmap" >&5 +echo "configure:12640: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext < #include @@ -12603,7 +12672,7 @@ int main (int argc, char *argv[]) return 1; } EOF -if { (eval echo configure:12607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=yes else @@ -12632,9 +12701,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:12636: checking for M_MMAP_THRESHOLD" >&5 +echo "configure:12705: checking for M_MMAP_THRESHOLD" >&5 cat > conftest.$ac_ext < int main() { @@ -12646,7 +12715,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:12650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* rel_alloc=no; echo "$ac_t""yes" 1>&6; else @@ -12671,15 +12740,15 @@ EOF ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:12675: checking for termios.h" >&5 +echo "configure:12744: 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:12683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12752: \"$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* @@ -12722,15 +12791,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:12726: checking for termio.h" >&5 +echo "configure:12795: 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:12734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12803: \"$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* @@ -12762,10 +12831,10 @@ fi echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:12766: checking for socket" >&5 +echo "configure:12835: checking for socket" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12861: \"$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 @@ -12803,15 +12872,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:12807: checking for netinet/in.h" >&5 +echo "configure:12876: 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:12815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12884: \"$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* @@ -12828,15 +12897,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:12832: checking for arpa/inet.h" >&5 +echo "configure:12901: 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:12840: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12909: \"$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* @@ -12861,9 +12930,9 @@ EOF } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:12865: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:12934: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext < @@ -12874,7 +12943,7 @@ int main() { static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:12878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12947: \"$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 @@ -12892,9 +12961,9 @@ else fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6 -echo "configure:12896: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:12965: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -12904,7 +12973,7 @@ int main() { static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:12908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12977: \"$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 @@ -12935,10 +13004,10 @@ fi echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:12939: checking for msgget" >&5 +echo "configure:13008: checking for msgget" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13034: \"$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 @@ -12976,15 +13045,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:12980: checking for sys/ipc.h" >&5 +echo "configure:13049: 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:12988: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13057: \"$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* @@ -13001,15 +13070,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:13005: checking for sys/msg.h" >&5 +echo "configure:13074: 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:13013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13082: \"$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* @@ -13047,15 +13116,15 @@ fi ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:13051: checking for dirent.h" >&5 +echo "configure:13120: 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:13059: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13128: \"$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* @@ -13082,15 +13151,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:13086: checking for sys/dir.h" >&5 +echo "configure:13155: 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:13094: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13163: \"$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* @@ -13123,15 +13192,15 @@ fi ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:13127: checking for nlist.h" >&5 +echo "configure:13196: 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:13135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13204: \"$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* @@ -13161,22 +13230,22 @@ fi echo "checking "for sound support"" 1>&6 -echo "configure:13165: checking "for sound support"" >&5 +echo "configure:13234: 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:13172: checking for multimedia/audio_device.h" >&5 +echo "configure:13241: 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:13180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13249: \"$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* @@ -13232,12 +13301,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:13236: checking for ALopenport in -laudio" >&5 +echo "configure:13305: 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:13321: \"$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 @@ -13279,12 +13348,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:13283: checking for AOpenAudio in -lAlib" >&5 +echo "configure:13352: 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:13368: \"$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 @@ -13340,15 +13409,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:13344: checking for ${dir}/soundcard.h" >&5 +echo "configure:13413: 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:13352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13421: \"$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* @@ -13402,15 +13471,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:13406: checking for audio/audiolib.h" >&5 +echo "configure:13475: 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:13414: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13483: \"$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* @@ -13428,12 +13497,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:13432: checking for AuOpenServer in -laudio" >&5 +echo "configure:13501: 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:13517: \"$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 @@ -13483,7 +13552,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 @@ -13514,7 +13583,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:13518: checking for $ac_word" >&5 +echo "configure:13587: 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. @@ -13543,10 +13612,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:13547: checking for esd_play_stream" >&5 +echo "configure:13616: 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:13642: \"$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 @@ -13620,7 +13689,7 @@ test -z "$with_tty" && with_tty=yes if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:13624: checking for TTY-related features" >&5 +echo "configure:13693: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -13636,12 +13705,12 @@ EOF if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:13640: checking for tgetent in -lncurses" >&5 +echo "configure:13709: 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:13725: \"$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 @@ -13685,15 +13754,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:13689: checking for ncurses/curses.h" >&5 +echo "configure:13758: 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:13697: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13766: \"$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* @@ -13715,15 +13784,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:13719: checking for ncurses/term.h" >&5 +echo "configure:13788: 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:13727: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13796: \"$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* @@ -13753,15 +13822,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:13757: checking for ncurses/curses.h" >&5 +echo "configure:13826: 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:13765: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13834: \"$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* @@ -13796,12 +13865,12 @@ fi for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:13800: checking for tgetent in -l$lib" >&5 +echo "configure:13869: 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:13885: \"$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 @@ -13837,12 +13906,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:13841: checking for tgoto in -ltermcap" >&5 +echo "configure:13910: 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:13926: \"$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 @@ -13898,12 +13967,12 @@ fi else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:13902: checking for tgetent in -lcurses" >&5 +echo "configure:13971: 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:13987: \"$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 @@ -13932,12 +14001,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:13936: checking for tgetent in -ltermcap" >&5 +echo "configure:14005: 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:14021: \"$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 @@ -13997,15 +14066,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:14001: checking for gpm.h" >&5 +echo "configure:14070: 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:14009: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14078: \"$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* @@ -14023,12 +14092,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:14027: checking for Gpm_Open in -lgpm" >&5 +echo "configure:14096: 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:14112: \"$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 @@ -14098,20 +14167,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:14102: checking for database support" >&5 +echo "configure:14171: 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:14107: checking for ndbm.h" >&5 +echo "configure:14176: 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:14115: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14184: \"$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* @@ -14141,12 +14210,12 @@ fi if test "$with_database_gdbm" != "no"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:14145: checking for dbm_open in -lgdbm" >&5 +echo "configure:14214: 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:14230: \"$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 @@ -14185,10 +14254,10 @@ fi if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:14189: checking for dbm_open" >&5 +echo "configure:14258: 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:14284: \"$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 @@ -14230,12 +14299,12 @@ else echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:14234: checking for dbm_open in -ldbm" >&5 +echo "configure:14303: 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:14319: \"$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 @@ -14285,14 +14354,191 @@ EOF } +echo $ac_n "checking for u_int8_t""... $ac_c" 1>&6 +echo "configure:14359: checking for u_int8_t" >&5 + +cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])u_int8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int8_t=yes +else + rm -rf conftest* + ac_cv_type_u_int8_t=no +fi +rm -f conftest* + +echo "$ac_t""$ac_cv_type_u_int8_t" 1>&6 +if test $ac_cv_type_u_int8_t = no; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining u_int8_t = uint8_t +EOF +cat >> confdefs.h <<\EOF +#define u_int8_t uint8_t +EOF +} + +fi + +if test $ac_cv_type_u_int8_t = yes; then +{ test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_U_INT8_T = 1 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_U_INT8_T 1 +EOF +} + +fi +echo $ac_n "checking for u_int16_t""... $ac_c" 1>&6 +echo "configure:14403: checking for u_int16_t" >&5 + +cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])u_int16_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int16_t=yes +else + rm -rf conftest* + ac_cv_type_u_int16_t=no +fi +rm -f conftest* + +echo "$ac_t""$ac_cv_type_u_int16_t" 1>&6 +if test $ac_cv_type_u_int16_t = no; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining u_int16_t = uint16_t +EOF +cat >> confdefs.h <<\EOF +#define u_int16_t uint16_t +EOF +} + +fi + +if test $ac_cv_type_u_int16_t = yes; then +{ test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_U_INT16_T = 1 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_U_INT16_T 1 +EOF +} + +fi +echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6 +echo "configure:14447: checking for u_int32_t" >&5 + +cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int32_t=yes +else + rm -rf conftest* + ac_cv_type_u_int32_t=no +fi +rm -f conftest* + +echo "$ac_t""$ac_cv_type_u_int32_t" 1>&6 +if test $ac_cv_type_u_int32_t = no; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining u_int32_t = uint32_t +EOF +cat >> confdefs.h <<\EOF +#define u_int32_t uint32_t +EOF +} + +fi + +if test $ac_cv_type_u_int32_t = yes; then +{ test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_U_INT32_T = 1 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_U_INT32_T 1 +EOF +} + +fi +echo $ac_n "checking for u_int64_t""... $ac_c" 1>&6 +echo "configure:14491: checking for u_int64_t" >&5 + +cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])u_int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int64_t=yes +else + rm -rf conftest* + ac_cv_type_u_int64_t=no +fi +rm -f conftest* + +echo "$ac_t""$ac_cv_type_u_int64_t" 1>&6 +if test $ac_cv_type_u_int64_t = no; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining u_int64_t = uint64_t +EOF +cat >> confdefs.h <<\EOF +#define u_int64_t uint64_t +EOF +} + +fi + +if test $ac_cv_type_u_int64_t = yes; then +{ test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_U_INT64_T = 1 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_U_INT64_T 1 +EOF +} + +fi + if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:14291: checking for Berkeley db.h" >&5 +echo "configure:14537: checking for Berkeley db.h" >&5 for header in "db/db.h" "db.h"; do case "$opsys" in *freebsd*) cat > conftest.$ac_ext < @@ -14308,7 +14554,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -14319,7 +14565,7 @@ rm -f conftest* ;; *) cat > conftest.$ac_ext < @@ -14327,21 +14573,29 @@ rm -f conftest* #ifdef HAVE_INTTYPES_H #define __BIT_TYPES_DEFINED__ #include +#if !HAVE_U_INT8_T typedef uint8_t u_int8_t; +#endif +#if !HAVE_U_INT16_T typedef uint16_t u_int16_t; +#endif +#if !HAVE_U_INT32_T typedef uint32_t u_int32_t; +#endif #ifdef WE_DONT_NEED_QUADS +#if !HAVE_U_INT64_T typedef uint64_t u_int64_t; #endif #endif #endif +#endif #include <$header> int main() { ; return 0; } EOF -if { (eval echo configure:14345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -14359,9 +14613,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:14363: checking for Berkeley DB version" >&5 +echo "configure:14617: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -14373,7 +14627,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 @@ -14400,10 +14654,10 @@ fi rm -f conftest* echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:14404: checking for $dbfunc" >&5 +echo "configure:14658: checking for $dbfunc" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14684: \"$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 @@ -14445,12 +14699,12 @@ else echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:14449: checking for $dbfunc in -ldb" >&5 +echo "configure:14703: 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:14719: \"$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 @@ -14525,12 +14779,12 @@ fi if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:14529: checking for SOCKSinit in -lsocks" >&5 +echo "configure:14783: 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:14799: \"$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 @@ -14596,7 +14850,7 @@ fi if test "$with_modules" != "no"; then echo "checking for module support" 1>&6 -echo "configure:14600: checking for module support" >&5 +echo "configure:14854: checking for module support" >&5 if test "$with_msw" = "yes"; then have_dl=yes; @@ -14612,15 +14866,15 @@ EOF ;; *) ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:14616: checking for dlfcn.h" >&5 +echo "configure:14870: 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:14624: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14878: \"$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* @@ -14637,16 +14891,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:14641: checking for dlopen in -lc" >&5 +echo "configure:14895: checking for dlopen in -lc" >&5 cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:14650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -14655,18 +14909,18 @@ else rm -rf conftest* echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:14659: checking for dlopen in -ldl" >&5 +echo "configure:14913: 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:14670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -14695,12 +14949,12 @@ EOF else echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:14699: checking for shl_load in -ldld" >&5 +echo "configure:14953: 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:14969: \"$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 @@ -14738,12 +14992,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:14742: checking for dld_init in -ldld" >&5 +echo "configure:14996: 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:15012: \"$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 @@ -14801,7 +15055,7 @@ xehost=$canonical xealias=$internal_configuration echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:14805: checking how to build dynamic libraries for ${xehost}" >&5 +echo "configure:15059: checking how to build dynamic libraries for ${xehost}" >&5 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. case "$xehost" in *-*-linux-gnu*) ;; @@ -14829,9 +15083,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:14833: checking checking whether we are using GNU C" >&5 +echo "configure:15087: checking checking whether we are using GNU C" >&5 cat > conftest.$ac_ext <&6 -echo "configure:14857: checking how to produce PIC code" >&5 +echo "configure:15111: checking how to produce PIC code" >&5 wl= can_build_shared=yes @@ -14954,18 +15208,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:14958: checking if PIC flag ${dll_cflags} really works" >&5 +echo "configure:15212: 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:15223: \"$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 @@ -14996,7 +15250,7 @@ cc_produces_so=no xldf= xcldf= echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6 -echo "configure:15000: checking if C compiler can produce shared libraries" >&5 +echo "configure:15254: checking if C compiler can produce shared libraries" >&5 if test "$XEGCC" = yes -o "$__ICC" = yes; then xcldf="-shared" xldf="-shared" @@ -15047,14 +15301,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:15312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cc_produces_so=yes else @@ -15079,7 +15333,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:15083: checking for ld used by GCC" >&5 +echo "configure:15337: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -15105,7 +15359,7 @@ echo "configure:15083: checking for ld used by GCC" >&5 esac else echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:15109: checking for GNU ld" >&5 +echo "configure:15363: checking for GNU ld" >&5 fi if test -z "$LTLD"; then @@ -15143,7 +15397,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:15147: checking if the linker is GNU ld" >&5 +echo "configure:15401: 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 @@ -15171,7 +15425,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:15175: checking whether the linker supports shared libraries" >&5 +echo "configure:15429: checking whether the linker supports shared libraries" >&5 dll_ld=$CC dll_ldflags=$LDFLAGS ld_shlibs=yes @@ -15382,10 +15636,10 @@ EOF for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15386: checking for $ac_func" >&5 +echo "configure:15640: 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:15666: \"$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 @@ -15447,11 +15701,11 @@ done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:15709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -16092,8 +16346,8 @@ fi echo " Compiler: $CC $CFLAGS" case "$CC" in - gcc*) echo " Compiler version: `$CC --version | head -1`" - echo " Compiler specs file: `$CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | head -1`" + gcc*) echo " Compiler version: `$CC --version | sed 1q`" + echo " Compiler specs file: `$CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | sed 1q`" ;; *) case "$canonical" in *-*-aix* ) @@ -16120,7 +16374,7 @@ case "$CC" in ;; *-*-solaris*) - ccvers=`$CC -V 2>&1 | head -1` + ccvers=`$CC -V 2>&1 | sed 1q` if test ! -z "$ccvers" ; then echo " Compiler version: $ccvers" fi diff --git a/configure.in b/configure.in index 449f47c..0e645ae 100644 --- a/configure.in +++ b/configure.in @@ -2090,8 +2090,6 @@ else *86* ) dynodump_arch=i386 ;; powerpc ) dynodump_arch=ppc ;; esac - dnl Dynodump requires the system linker - test "$GCC" = "yes" && XE_APPEND(-fno-gnu-linker, ld_switch_site) fi dnl Feed s&m crud to src/Makefile @@ -2913,7 +2911,7 @@ dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above. esac fi - AC_CHECK_FUNCS(XConvertCase) + AC_CHECK_FUNCS(XConvertCase XtRegisterDrawable) AC_CHECK_HEADERS(X11/Xlocale.h) @@ -3208,33 +3206,63 @@ dnl Autodetect LDAP AC_CHECKING(for LDAP) test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) } test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) } -if test "$with_ldap" != "no"; then - AC_CHECK_LIB(ldap, ldap_search, with_ldap=yes) - dnl Check for other libraries we need to link with to get the main routines. - test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes], , -llber) } - test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes], , -llber -lkrb) } - test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes with_ldap_des=yes], , -llber -lkrb -ldes) } - dnl Recently, we need -lber even though the main routines are elsewhere, - dnl because otherwise be get link errors w.r.t. ber_pvt_opt_on. So just - dnl check for that (it's a variable not a fun but that doesn't seem to - dnl matter in these checks) and stick in -lber if so. Can't hurt (even to - dnl stick it in always shouldn't hurt, I don't think) ... #### Someone who - dnl #### understands LDAP needs to fix this properly. - test "$with_ldap_lber" != "yes" && { AC_CHECK_LIB(lber, ber_pvt_opt_on, with_ldap_lber=yes) } +if test no != "$with_ldap";then + if test . != "${ldap_libs+.}";then + ldap_libs= + AC_CHECK_FUNC(ldap_open,dnl Allow it to be in generic "$LIBS" + [with_ldap=yes + test yes = "$extra_verbose" && + echo "Setting ldap_libs to $ldap_libs"],dnl + [AC_CHECK_LIB(ldap, ldap_open,dnl + [with_ldap=yes],dnl + [ldap_needs_lber=yes ldap_other_libs=-llber +dnl This requires `AC_CACHE_VAL' (which is called by `AC_CHECK_LIB') +dnl to be redefined to ignore cached (shell variable) value, as it is +dnl done above, because the same variable is used in all +dnl `AC_CHECK_LIB' expansions in macro invocation below. Worse, if it +dnl is not done, there is no portable way to compensate for this +dnl locally since `unset' command is not supported by all shells. The +dnl other solution would be changing `AC_CHECK_LIB' so that cache +dnl variable name depends on the macro OTHER-LIBRARIES argument. + AC_CHECK_LIB(ldap, ldap_open,dnl + [with_ldap=yes],dnl + [ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb" + AC_CHECK_LIB(ldap, ldap_open,dnl + [with_ldap=yes],dnl + [ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes" + AC_CHECK_LIB(ldap, ldap_open,dnl + [with_ldap=yes],dnl + [with_ldap=no],dnl + $ldap_other_libs)],dnl + $ldap_other_libs)],dnl + $ldap_other_libs)]) + if test yes = "$with_ldap";then + if test yes = "$ldap_needs_des";then + XE_PREPEND(-ldes, ldap_libs) + fi + if test yes = "$ldap_needs_krb";then + XE_PREPEND(-lkrb, ldap_libs) + fi + if test yes = "$ldap_needs_lber";then + XE_PREPEND(-llber, ldap_libs) + fi + XE_PREPEND(-lldap, ldap_libs) + fi]) + else +dnl Allow builder to override "$ldap_libs". + save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS" + AC_CHECK_FUNC(ldap_open,dnl + [with_ldap=yes + test yes = "$extra_verbose" && + echo "Setting ldap_libs to $ldap_libs"],dnl + [with_ldap=no]) + LIBS="$save_LIBS" + fi fi if test "$with_ldap" = "yes"; then AC_DEFINE(HAVE_LDAP) XE_ADD_OBJS(eldap.o) - if test "$with_ldap_des" = "yes" ; then - XE_PREPEND(-ldes, LIBS) - fi - if test "$with_ldap_krb" = "yes" ; then - XE_PREPEND(-lkrb, LIBS) - fi - if test "$with_ldap_lber" = "yes" ; then - XE_PREPEND(-llber, LIBS) - fi - XE_PREPEND(-lldap, LIBS) + LIBS="$ldap_libs $LIBS" AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result) fi @@ -3594,7 +3622,7 @@ dnl Not all toolkits support all widgets dnl Avoid using Motif :-( case "$opsys" in - *linux* ) lucid_prefers_motif="no" ;; + *linux* | cygwin* ) lucid_prefers_motif="no" ;; * ) lucid_prefers_motif="yes" ;; esac @@ -4456,6 +4484,24 @@ test "$with_database_gdbm" = "yes" -o \ "$with_database_dbm" = "yes" && \ AC_DEFINE(HAVE_DBM) +dnl Check for u_int*_t typedefs. +AC_CHECK_TYPE(u_int8_t, uint8_t) +if test $ac_cv_type_u_int8_t = yes; then +AC_DEFINE(HAVE_U_INT8_T,1) +fi +AC_CHECK_TYPE(u_int16_t, uint16_t) +if test $ac_cv_type_u_int16_t = yes; then +AC_DEFINE(HAVE_U_INT16_T,1) +fi +AC_CHECK_TYPE(u_int32_t, uint32_t) +if test $ac_cv_type_u_int32_t = yes; then +AC_DEFINE(HAVE_U_INT32_T,1) +fi +AC_CHECK_TYPE(u_int64_t, uint64_t) +if test $ac_cv_type_u_int64_t = yes; then +AC_DEFINE(HAVE_U_INT64_T,1) +fi + dnl Check for Berkeley DB. if test "$with_database_berkdb" != "no"; then AC_MSG_CHECKING(for Berkeley db.h) @@ -4480,14 +4526,22 @@ if test "$with_database_berkdb" != "no"; then #ifdef HAVE_INTTYPES_H #define __BIT_TYPES_DEFINED__ #include +#if !HAVE_U_INT8_T typedef uint8_t u_int8_t; +#endif +#if !HAVE_U_INT16_T typedef uint16_t u_int16_t; +#endif +#if !HAVE_U_INT32_T typedef uint32_t u_int32_t; +#endif #ifdef WE_DONT_NEED_QUADS +#if !HAVE_U_INT64_T typedef uint64_t u_int64_t; #endif #endif #endif +#endif #include <$header> ],[], db_h_file="$header"; break) ;; @@ -5031,8 +5085,8 @@ echo " Compiler: $CC $CFLAGS" dnl Let's save some helpful-for-debugging info like compiler and libc versions.. dnl First, see if it's gcc - the same check works everyplace... case "$CC" in - gcc*) echo " Compiler version: `$CC --version | head -1`" - echo " Compiler specs file: `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | head -1`" + gcc*) echo " Compiler version: `$CC --version | sed 1q`" + echo " Compiler specs file: `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | sed 1q`" ;; dnl non-gcc machine-specific magic - contributions welcome *) case "$canonical" in @@ -5063,7 +5117,7 @@ dnl non-gcc machine-specific magic - contributions welcome ;; *-*-solaris*) - ccvers=`$CC -V 2>&1 | head -1` + ccvers=`$CC -V 2>&1 | sed 1q` if test ! -z "$ccvers" ; then echo " Compiler version: $ccvers" fi diff --git a/etc/NEWS b/etc/NEWS index 99800a4..87866eb 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -117,6 +117,7 @@ consulted for a more detailed list of changes. - In Perl, the --globals option tags global variables. - Python now supported. - New file extensions recognized: .ss, .pdb, .psw. + -- Fixed ldap libraries configuration. ** The delete key now deletes forward by default. @@ -599,6 +600,11 @@ def and class at the beginning of a line are tags. .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is for PSWrap. +** Fixed ldap libraries configuration. + +It used to fail when `-lldap' requires `-llber'. Introduced in +upstream `configure.in' revision 1.151.2.31 (2005/01/31 02:54:47 +0). + * Lisp and internal changes in XEmacs 21.4 ========================================== diff --git a/etc/OXYMORONS b/etc/OXYMORONS index 6005b5c..1e92bb5 100644 --- a/etc/OXYMORONS +++ b/etc/OXYMORONS @@ -14,11 +14,6 @@ two months, and for the success of the GTK merge. Without the prospect of such a big win, I could not have justified trying to coordinate a release myself. -The rest of the codenames are in alphabetical order. - -N.B. I expect that the Stable Release Maintainer will choose a new -theme for the releases following the promotion of 21.4 from "gamma" to -"stable". So 15 or so should be enough.... 21.4.0: Solid Vapor 21.4.1: Copyleft @@ -38,14 +33,14 @@ theme for the releases following the promotion of 21.4 from "gamma" to 21.4.15: Security Through Obscurity 21.4.16: Corporate Culture 21.4.17: Jumbo Shrimp -21.4.18: Social Property -21.4.19: Stable Release Maintainer -21.4.20: Standard C -21.4.21: Successful IPO -21.4.22: Sufficiently Smart Compiler -21.4.23: The Gift Economy +21.4.18: Constant Variable +21.4.19: Double Solitaire +21.4.20: Educational Television +21.4.21: Instant Classic +21.4.22: Moral Majority +21.4.23: Standard C 21.4.24: Too Much Mozart -21.4.25: UTF-8 BOM +21.4.25: Working Vacation + -N.B. Only incredibly redeeming suggestions can be accepted now. diff --git a/etc/PACKAGES b/etc/PACKAGES index e1720e1..f6b687d 100644 --- a/etc/PACKAGES +++ b/etc/PACKAGES @@ -234,6 +234,9 @@ Deprecated collection of DTDs for psgml. *** python-modes Python support. +*** re-builder +Interactive development tool for regular expressions. + *** reftex Emacs support for LaTeX cross-references, citations. @@ -341,6 +344,9 @@ XEmacs Lisp developer support. This package contains utilities for supporting Lisp development. It is a single-file package so it may be tailored. +*** xetla +(setq mm-coding-system-priorities '(iso-8859-1 iso-8859-15 utf-8)) + *** xlib Emacs interface to X server. @@ -370,6 +376,9 @@ MULE: Lisp Interface to EDICT, Kanji Dictionary. *** egg-its MULE: Wnn (4.2 and 6) support. SJ3 support. +*** latin-euro-standards +MULE: Support for the Latin{7,8,9,10} character sets & coding systems. + *** latin-unity MULE: find single ISO 8859 character set to encode a buffer. @@ -383,7 +392,7 @@ MULE: Localized menubars and localized splash screens. MULE: Dictionary support. *** mule-base -MULE: Basic Mule support, required for building with Mule. +MULE: Basic Mule support. *** mule-ucs MULE: Extended coding systems (including Unicode) for XEmacs. diff --git a/etc/TUTORIAL.cs b/etc/TUTORIAL.cs new file mode 100644 index 0000000..163c3e5 --- /dev/null +++ b/etc/TUTORIAL.cs @@ -0,0 +1,1043 @@ +Copyright (c) 1985 Free Software Foundation, Inc; podmínky viz na konci. +Do èe¹tiny pøelo¾il Milan Zamazal . + +Máte pøed sebou tutoriál k Emacsu. + +Pøíkazy Emacsu obecnì vyu¾ívají klávesu CONTROL (obèas oznaèovanou CTRL nebo +CTL) nebo klávesu META (obèas oznaèovanou EDIT nebo ALT). Abychom tyto názvy +nemuseli stále psát v plném znìní, budeme pou¾ívat následující zkratky: + + C- znamená pøidr¾et klávesu CONTROL a stisknout znak . + Tedy C-f znamená: pøidr¾te klávesu CONTROL a stisknìte f. + M- znamená pøidr¾et klávesu META, EDIT nebo ALT a stisknout . + Pokud ¾ádnou z kláves META, EDIT ani ALT nemáte, tak místo toho + stisknìte a pus»te klávesu ESC a poté . Klávesu ESC budeme + znaèit . + +Dùle¾itá poznámka: práci s Emacsem ukonèíte stiskem C-x C-c (dva znaky). +Znaky ">>" na levém okraji znaèí místa, kde si máte vyzkou¹et pøíkaz. +Napøíklad: +<> +>> Nyní stisknìte C-v (view next screen) pro posun na dal¹í obrazovku. + (Smìle do toho, proveïte to pøidr¾ením klávesy CONTROL a stiskem v.) + Od této chvíle byste toto mìli provádìt kdykoliv doètete zobrazenou + obrazovku. + +V¹imnìte si, ¾e pøi posuvu obrazovek v¾dy zùstávají zobrazeny dva øádky +z pøedchozí obrazovky; to poskytuje urèitou návaznost pøi postupném +ètení textu. + +První vìc, kterou potøebujete vìdìt, je jak se v textu pohybovat +z jednoho místa na druhé. U¾ víte, jak se posunout o jednu obrazovku +vpøed, pomocí C-v. K pøechodu o obrazovku zpìt pou¾ijte M-v +(pøidr¾te klávesu META a stisknìte v nebo stisknìte v, jestli¾e +nemáte ¾ádnou z kláves META, EDIT nebo ALT). + +>> Zkuste stisknout M-v a pak C-v, nìkolikrát to zopakujte. + + +* SHRNUTÍ +--------- + +K prohlí¾ení obrazovkových stránek jsou u¾iteèné následující pøíkazy: + + C-v Posun o obrazovku vpøed + M-v Posun o obrazovku zpìt + C-l Smazání obrazovky a znovuzobrazení celého textu, + pøitom se text pod kurzorem pøesune ke støedu obrazovky. + (Jedná se o CONTROL-L a ne CONTROL-1.) + +>> Najdìte kurzor a zapamatujte si, jaký text je kolem nìj. + Pak stisknìte C-l. + Najdìte kurzor znovu a v¹imnìte si, ¾e je kolem nìj tentý¾ text. + + +* ZÁKLADNÍ OVLÁDÁNÍ KURZORU +--------------------------- + +Pohyb mezi obrazovkami je u¾iteèný, ale jak se pøemístíte na konkrétní +místo v textu na obrazovce? + +Je toho mo¾no dosáhnout nìkolika zpùsoby. Nejzákladnìj¹ím zpùsobem je +pou¾ití pøíkazù C-p, C-b, C-f a C-n. Ka¾dý z tìchto pøíkazù pøesune +kurzor na obrazovce o jeden øádek nebo sloupec v daném smìru. +Zde je tabulka znázoròující smìr posuvu kurzoru vyvolaný tìmito ètyømi +pøíkazy: + + Pøedchozí øádek, C-p + : + : + Dozadu, C-b .... Momentální pozice kurzoru .... Dopøedu, C-f + : + : + Následující øádek, C-n + +>> Pøesuòte kurzor na prostøední øádek tohoto diagramu pomocí + C-n nebo C-p. Potom stisknìte C-l, abyste na obrazovce vidìli celý + diagram vycentrován. + +Pravdìpodobnì se vám budou tyto pøíkazy snadno pamatovat podle +poèáteèních písmen anglických názvù: P jako previous (pøedchozí), +N jako next (následující), B jako backward (zpìt), F jako forward (vpøed). +Jsou to základní pøíkazy pro pohyb kurzoru a budete je pou¾ívat +neustále, tak¾e by bylo velmi vhodné, kdybyste se je teï nauèili. + +>> Proveïte nìkolikrát C-n, abyste kurzor pøesunuli na tento øádek. + +>> Posuòte kurzor dovnitø øádku pomocí nìkolika C-f a pak nahoru stiskem C-p. + Pozorujte, co C-p dìlá, kdy¾ je kurzor uprostøed øádku. + +Ka¾dý øádek textu konèí znakem nového øádku, který jej oddìluje od øádku +následujícího. Znakem nového øádku by mìl být ukonèen i poslední øádek +souboru (pøesto¾e to Emacs nevy¾aduje). + +>> Vyzkou¹ejte C-b na zaèátku øádku. Kurzor by se mìl pøesunout na konec + pøedchozího øádku, nebo» jej tím pøesunete pøes znak nového øádku. + +C-f funguje analogicky jako C-b, tj. na konci øádku dojde k pøesunu na +dal¹í øádek. + +>> Proveïte nìkolik C-b, tak¾e uvidíte, kde se nachází kurzor. + Pak provádìjte C-f, abyste se vrátili na konec øádku. + Pak proveïte je¹tì jednou C-f, abyste se pøesunuli na následující + øádek. + +Kdy¾ kurzorem pøejdete pøes horní nebo dolní okraj obrazovky, posune se +text za pøíslu¹ným okrajem na obrazovku. Tato vlastnost se nazývá +"scrollování". Umo¾òuje pøemístit kurzor na libovolné místo v textu, +ani¾ by kurzor opustil obrazovku. + +>> Zkuste posunout kurzor pod dolní okraj obrazovky pomocí C-n a pozorujte, + co se stane. + +Jestli¾e je posun po znacích pøíli¹ pomalý, mù¾ete se pohybovat po +slovech. M-f (META-f) provádí posun o slovo vpøed a M-b provádí posun +o slovo zpìt. + +>> Stisknìte nìkolikrát M-f a M-b. + +Pokud se kurzor nachází uprostøed slova, M-f provede pøesun na konec +tohoto slova. Nachází-li se kurzor v mezeøe mezi slovy, M-f provede +pøesun na konec následujícího slova. M-b pracuje analogicky v opaèném +smìru. + +>> Stisknìte nìkolikrát M-f a M-b prolo¾enì s C-f a C-b, abyste vidìli + výsledky pøíkazù M-f a M-b provádìných z rùzných míst uvnitø slov a + mezi nimi. + +V¹imnìte si analogie mezi C-f a C-b na jedné stranì a M-f a M-b na +stranì druhé. Znaky s klávesou META jsou velmi èasto vyu¾ívány pro operace +vztahující se k entitám definovaným jazykem (slova, vìty, odstavce), +zatímco znaky s klávesou CONTROL pracují na základních prvcích +nezávislých na tom, co zrovna editujete (znaky, øádky, apod.). + +Tato analogie platí také pro øádky a vìty: C-a a C-e provádí pøesun +na zaèátek a konec øádku, M-a a M-e provádí pøesun na zaèátek a konec +vìty. + +>> Zkuste nìkolikrát C-a a poté nìkolikrát C-e. + Zkuste nìkolikrát M-a a poté nìkolikrát M-e. + +V¹imnìte si, ¾e opakované C-a nedìlá nic, zatímco opakované M-a v¾dy +provádí posun o dal¹í vìtu. Principu analogie to sice pøíli¹ +neodpovídá, ale pøesto je toto chování mo¾no pova¾ovat za pøirozené. + +Pozice kurzoru v textu se také nazývá "bod" ("point"). Abychom to +parafrázovali, kurzor je vidìt na obrazovce v místì, kde je bod umístìn +v textu. + +Zde je pøehled jednoduchých operací pro pohyb kurzoru vèetnì pøíkazù pro +pohyb mezi slovy a vìtami: + + C-f Pøesun o znak vpøed + C-b Pøesun o znak zpìt + + M-f Pøesun o slovo vpøed + M-b Pøesun o slovo zpìt + + C-n Pøesun na následující øádek + C-p Pøesun na pøedchozí øádek + + C-a Pøesun na zaèátek øádku + C-e Pøesun na konec øádku + + M-a Pøesun zpìt na zaèátek vìty + M-e Pøesun vpøed na konec vìty + +>> Vyzkou¹ejte si teï nìkolikrát v¹echny tyto pøíkazy pro procvièení. + Jsou to nejpou¾ívanìj¹í pøíkazy. + +Dal¹í dva dùle¾ité pøíkazy pro pohyb kurzoru jsou M-< (META men¹í-ne¾), +který provede pøesun na zaèátek celého textu, a M-> (META vìt¹í-ne¾), +který provede pøesun na konec celého textu. + +Na vìt¹inì terminálù je "<" nad èárkou, tak¾e pro vyvolání tohoto znaku +musíte pou¾ít klávesu Shift. Na tìchto terminálech je tedy nutno pou¾ít +klávesu Shift i v pøípadì pøíkazu M-<; bez klávesy Shift byste provedli +M-èárka. + +>> Zkuste teï M-< pro pøesun na zaèátek tutoriálu. + Pou¾ijte pak opakovanì C-v, abyste se opìt vrátili sem. + +>> Zkuste teï M-> pro pøesun na konec tutoriálu. + Pou¾ijte pak opakovanì M-v, abyste se opìt vrátili sem. + +Kurzor mù¾ete pøesouvat také pomocí kurzorových kláves (klávesy +se ¹ipkami), pokud je vá¹ terminál má. My v¹ak doporuèujeme nauèit se +C-b, C-f, C-n a C-p, a to ze tøí dùvodù. Za prvé, tyto klávesy fungují +na v¹ech typech terminálù. Za druhé, jakmile jednou získáte cvik +v pou¾ívání Emacsu, zjistíte, ¾e pou¾ívání tìchto CTRL znakù je +rychlej¹í ne¾ pou¾ívání kurzorových kláves (proto¾e nemusíte pøesouvat +ruku z psací pozice). Za tøetí, zvyknete-li si pou¾ívat tyto CTRL-znak +pøíkazy, snadno se nauèíte pou¾ívat jiné pokroèilé pøíkazy pro pohyb +kurzoru. + +Vìt¹ina pøíkazù Emacsu akceptuje numerický argument; ten pro vìt¹inu +pøíkazù slou¾í jako opakovaè. Poèet opakování pøíkazu zadáte +prostøednictvím stisku C-u následovaného stiskem pøíslu¹ných èíslic pøed +vyvoláním pøíkazu. Máte-li META (nebo EDIT èi ALT) klávesu, existuje +alternativní mo¾nost zadání numerického argumentu: pøidr¾te klávesu META +a stisknìte pøíslu¹né èíslice. Doporuèujeme nauèit se C-u metodu, +proto¾e ta funguje na jakémkoliv terminálu. + +Napøíklad C-u 8 C-f provede pøesun o osm znakù vpøed. + +Vìt¹ina pøíkazù pou¾ívá numerický argument jako opakovaè. Jisté +výjimeèné pøíkazy jej pou¾ívají jiným zpùsobem. Mezi tyto výjimky patøí +C-v a M-v. Dostanou-li numerický argument, posunou obrazovku nahoru +nebo dolù o odpovídající poèet øádkù místo obrazovek. Napøíklad +C-u 4 C-v posune obrazovku o 4 øádky. + +>> Zkuste teï stisknout C-u 8 C-v. + +To by mìlo posunout obrazovku o 8 øádkù nahoru. Pokud byste ji chtìli +posunout zpìt dolù, mù¾ete dát argument pøíkazu M-v. + +Pou¾íváte-li X Window, mìli byste mít na levé stranì emacsového okna +vysokou obdélníkovou oblast, nazývanou scrollbar. Mù¾ete pak text +posouvat klikáním my¹í na scrollbar. + +>> Zkuste stisknout prostøední tlaèítko na vrcholu zvýraznìné oblasti + uvnitø scrollbaru. To by mìlo text posunout na pozici danou tím, jak + vysoko nebo nízko jste kliknuli. + +>> Zkuste pøi stisknutém prostøedním tlaèítku posouvat my¹í nahoru a + dolù. Uvidíte, jak se text posouvá nahoru a dolù podle toho, jak + posouváte my¹í. + + +* KDY® EMACS NEREAGUJE +---------------------- + +Jestli¾e Emacs pøestane reagovat na va¹e pøíkazy, mù¾ete probíhající +èinnost bezpeènì zastavit pomocí C-g. Pomocí C-g mù¾ete zastavit +pøíkaz, jeho¾ provádìní trvá pøíli¹ dlouho. + +C-g mù¾ete pou¾ít také pro odstranìní numerického argumentu pøíkazu, +který nechcete dokonèit. + +>> Stisknìte C-u 100 pro vytvoøení numerického argumentu 100 a pak + stisknìte C-g. Nyní stisknìte C-f. Mìl by být proveden posun + o právì jeden znak, proto¾e jste argument zru¹ili prostøednictvím + C-g. + +Pokud jste omylem stiskli , mù¾ete se jej zbavit pomocí C-g. + + +* DEAKTIVOVANÉ PØÍKAZY +---------------------- + +Nìkteré pøíkazy Emacsu jsou "deaktivované" ("disabled"), aby je +zaèínající u¾ivatelé nemohli vyvolat náhodnì. + +Pokud vyvoláte nìkterý z deaktivovaných pøíkazù, Emacs zobrazí hlá¹ení +oznamující, který pøíkaz to byl, s dotazem, zda chcete tento pøíkaz +provést. + +Pokud opravdu chcete pøíkaz vyzkou¹et, stisknìte mezerník jako odpovìï +na tuto otázku. Obyèejnì, jestli¾e nechcete deaktivovaný pøíkaz +provést, odpovìzte na tuto otázku pomocí "n". + +>> Stisknìte : (co¾ je deaktivovaný pøíkaz), + pak na otázku odpovìzte n. + + +* OKNA +------ + +Emacs mù¾e mít nìkolik oken (windows), z nich¾ ka¾dé zobrazuje svùj +vlastní text. Jak více oken pou¾ívat, objasníme pozdìji. Nyní chceme +objasnit, jak se zbavit nadbyteèných oken a vrátit se do základní +jednookenní editace. Je to jednoduché: + + C-x 1 Jedno okno (tj. zru¹ení v¹ech ostatních oken) + +Tedy vlo¾ení CONTROL-x následované èíslicí 1. C-x 1 roz¹íøí okno +obsahující kurzor pøes celou obrazovku. Zru¹í to v¹echna ostatní okna. + +>> Stisknìte C-h k C-f. + Pozorujte, jak se aktuální okno zmen¹í a objeví se nové okno za + úèelem zobrazení dokumentace k pøíkazu C-f. + +>> Stisknìte C-x 1 a pozorujte, jak okno s dokumentací zmizí. + + +* VKLÁDÁNÍ A MAZÁNÍ +------------------- + +Chcete-li vlo¾it text, prostì jej napi¹te. Znaky, které vidíte, +jako A, 7, *, atd., jsou Emacsem chápány jako text a vkládány okam¾itì. +Pro vlo¾ení znaku nového øádku stisknìte (klávesu Enter). + +Poslední znak, který jste napsali, mù¾ete smazat stiskem . + je klávesa, která mù¾e být na klávesnici oznaèena "Del". +V nìkterých pøípadech jako slou¾í klávesa "Backspace", av¹ak ne +v¾dy! + +Obecnìji, ma¾e znak bezprostøednì pøed momentální pozicí +kurzoru. + +>> Proveïte to teï -- napi¹te nìkolik znakù a pak je sma¾te nìkolika + stisky . Nebojte se zmìn v tomto souboru; originální + tutoriál se nezmìní. Toto je va¹e osobní kopie. + +Kdy¾ se øádek textu zvìt¹í natolik, ¾e pøesáhne jeden øádek obrazovky, +je zobrazen na více øádcích obrazovky. Øádek textu, který pokraèuje na +dal¹ím øádku obrazovky, je indikován zpìtným lomítkem ("\") na pravém +okraji obrazovky. + +>> Vkládejte text, a¾ dosáhnete pravého okraje, a pokraèujte ve vkládání. + Objeví se vám pokraèovací øádek. + +>> Pou¾ijte pro smazání textu, a¾ se øádek textu opìt vejde na + jeden øádek obrazovky. Pokraèovací øádek zmizí. + +Znak nového øádku mù¾ete smazat jako kterýkoliv jiný znak. Smazání +znaku nového øádku mezi dvìma øádky zpùsobí jejich spojení do jediného +øádku. Je-li výsledný øádek pøíli¹ dlouhý na to, aby se ve¹el na ¹íøku +obrazovky, bude zobrazen pokraèovacím øádkem. + +>> Pøesuòte kurzor na zaèátek øádku a stisknìte . To tento + øádek spojí s øádkem pøedchozím. + +>> Stisknìte pro znovuvlo¾ení smazaného znaku nového øádku. + +Vzpomeòte si, ¾e vìt¹ina pøíkazù Emacsu mù¾e dostat poèet opakování; +vèetnì textových znakù. Opakování textových znakù je vlo¾í nìkolikrát. + +>> Vyzkou¹ejte si to teï -- stisknìte C-u 8 * pro vlo¾ení ********. + +Teï u¾ znáte nejzákladnìj¹í zpùsoby, jak nìco v Emacsu napsat a jak +opravovat chyby. Mù¾ete ov¹em také mazat po slovech nebo po øádcích. +Zde je shrnutí operací pro mazání textu: + + Smazání znaku bezprostøednì pøed kurzorem + C-d Smazání znaku následujícího za kurzorem + + M- Zru¹ení slova bezprostøednì pøed kurzorem + M-d Zru¹ení slova následujícího za kurzorem + + C-k Zru¹ení textu od pozice kurzoru do konce øádku + M-k Zru¹ení textu do konce aktuální vìty + +V¹imnìte si, ¾e a C-d, resp. M- a M-d, roz¹iøují +paralelu zapoèatou C-f a M-f (pravda, opravdu není CONTROL +znak, ale netrapme se tím). C-k a M-k jsou jako C-e a M-e ve smyslu +vztahu øádkù k vìtám. + +Libovolnou èást bufferu mù¾ete té¾ zru¹it následující metodou. +Pøesuòte se na jeden konec této èásti a stisknìte C-@ nebo C-SPC +(libovolnou z tìchto kombinací). (SPC oznaèuje mezerník.) Pøesuòte +se na druhý konec této èásti a stisknìte C-w. Text mezi tìmito +pozicemi bude zru¹en. + +>> Pøesuòte kurzor na písmeno L na zaèátku pøedchozího odstavce. +>> Stisknìte C-SPC. Emacs by mìl ve spodním øádku obrazovky + zobrazit zprávu "Mark set". +>> Pøesuòte kurzor na písmeno c ve slovì "konec" na druhém øádku + odstavce. +>> Stisknìte C-w. Text zaèínající písmenem L a konèící pøed písmenem + c bude zru¹en. + +Uvìdomte si, ¾e rozdíl mezi "ru¹ením" ("killing") a "mazáním" +("deleting") je ten, ¾e "zru¹ené" vìci mohou být zpìt vhozeny, zatímco +"smazané" nikoliv. Obecnì pøíkazy, které mohou smazat vìt¹í mno¾ství +textu, ukládají text, zatímco pøíkazy, které ma¾ou jediný znak nebo +pouze prázdné øádky a mezery, mazaný text neukládají. + +>> Pøesuòte kurzor na zaèátek neprázdného øádku. + Pak stisknìte C-k pro zru¹ení textu na tomto øádku. +>> Stisknìte C-k podruhé. Uvidíte, ¾e to zru¹í znak nového øádku, který + je za tímto øádkem. + +V¹imnìte si, ¾e jedno C-k zru¹í obsah øádku a druhé C-k zru¹í øádek +samotný a posune v¹echny dal¹í øádky nahoru. C-k zpracovává numerický +argument speciálnì: zru¹í odpovídající poèet øádkù VÈETNÌ jejich +obsahu. To u¾ není opakování. C-u 2 C-k zru¹í dva øádky a jejich +obsah; dvojitý stisk C-k by toto obvykle neudìlal. + +Vracení textu zpìt se nazývá "vhazování" ("yanking"). (Pøedstavte +si opìtovné vhazování, vracení døíve odstranìného textu zpátky.) +Zru¹ený text mù¾ete vhodit buï na stejné místo, kde byl zru¹en, +nebo na jiné místo v bufferu, nebo dokonce i do jiného souboru. +Text mù¾ete vhodit i vícekrát, vytváøíte tak jeho dal¹í kopie. + +Pøíkazem pro vhazování je C-y. Tento pøíkaz vlo¾í poslední smazaný +text na pozici, na které se nachází kurzor. + +>> Zkuste to; stisknìte C-y pro vhození textu zpìt. + +Stisknete-li nìkolikrát C-k po sobì, v¹echen smazaný text je ulo¾en +spoleènì tak, aby bylo mo¾né vhodit zpìt v¹echny øádky najednou. + +>> Stisknìte nìkolikrát C-k. + +Nyní obnovte poslednì zru¹ený text: + +>> Stisknìte C-y. Pak posuòte kurzor o nìkolik øádkù ní¾e a stisknìte + C-y znova. Nyní vidíte, jak lze text kopírovat. + +Co kdy¾ máte nìjaký text, který byste rádi vhodili zpìt a pak zru¹íte +nìco jiného? C-y by vlo¾ilo poslední zru¹ený text. Av¹ak pøedchozí +text není ztracen. Mù¾ete jej získat zpìt pou¾itím pøíkazu M-y. Poté, +co provedete C-y pro získání posledního zru¹eného textu, stisk M-y +vymìní tento vhozený text za pøedchozí zru¹ený text. Dal¹ími a +dal¹ími stisky M-y dostáváte pøedcházející a pøedcházející zru¹ené +texty. Kdy¾ dosáhnete textu, který hledáte, nemusíte s ním pro jeho +uchování nic dal¹ího provádìt. Jednodu¹e vhozený text ponechejte, kde +je, a pokraèujte v editaci. + +Pokud opakujete M-y dostateènì dlouho, dostanete se zpátky k výchozímu +bodu (poslednì zru¹enému textu). + +>> Zru¹te øádek, pøesuòte kurzor nìkam jinam a zru¹te jiný øádek. + Pak proveïte C-y pro vrácení druhého zru¹eného øádku. + Pak proveïte M-y a vhozený øádek bude nahrazen prvním zru¹eným øádkem. + Opakujte M-y a pozorujte, co dostáváte. Pokraèujte v tom, dokud se + znovu neobjeví druhý zru¹ený øádek a pak nìkolik dal¹ích. + Chcete-li, mù¾ete zkusit pøedat M-y kladné a záporné argumenty. + + +* UNDO +------ + +Jestli¾e provedete v textu zmìnu a pak zjistíte, ¾e to byl omyl, mù¾ete +zmìnu vrátit pøíkazem undo, C-x u. + +C-x u obvykle vrátí zmìny provedené jedním pøíkazem; pokud C-x u +zopakujete nìkolikrát za sebou, ka¾dé opakování vrátí jeden dal¹í +pøíkaz. + +Jsou ale dvì výjimky: pøíkazy, které nemìní text, se nepoèítají (to +zahrnuje pøíkazy pro pohyb kurzoru a scrollování) a znaky vkládající +samy sebe jsou obvykle zpracovávány ve skupinách a¾ po 20. (To je kvùli +tomu, aby se zredukoval poèet C-x u nutných pro vrácení vkládaného +textu.) + +>> Zru¹te tento øádek pomocí C-k, stisknìte pak C-x u a øádek by se mìl + znovu objevit. + +Alternativní undo pøíkaz je C-_; pracuje stejnì jako C-x u, je v¹ak +ménì pracné jej aplikovat nìkolikrát za sebou. Nevýhodou C-_ je, ¾e +na nìkterých klávesnicích není zøejmé, jak jej vyvolat. To je dùvod, +proè nabízíme i C-x u. Na nìkterých terminálech mù¾ete C-_ vyvolat +stiskem / pøi stisknutém CTRL. + +Numerický argument pro C-_ a C-x u funguje jako poèet opakování. + +Pomocí pøíkazu undo mù¾ete vrátit zru¹ený stejnì jako smazaný text. +Rozdíl mezi mazáním a ru¹ením textu ovlivòuje mo¾nost vhození tohoto +textu pomocí C-y, neovlivòuje mo¾nosti pøíkazu undo. + + +* SOUBORY +--------- + +Aby text, který editujete, zùstal trvale uchován, musíte jej ulo¾it do +souboru. Jinak by byl po ukonèení Emacsu ztracen. Svoji editaci +spojíte se souborem "vyhledáním" ("finding") souboru. (Také se to +nazývá "nav¹tívení" ("visiting") souboru.) + +Vyhledání souboru znamená, ¾e vidíte jeho obsah v Emacsu. V mnoha +ohledech je to, jako byste editovali pøímo ten soubor. Nicménì zmìny, +které prostøednictvím Emacsu èiníte, se nestanou trvalými, dokud tyto +zmìny do souboru "neulo¾íte" ("save"). Tím se zamezí nechtìnému ponechání +èásteènì zmìnìného souboru v systému. Dokonce i kdy¾ soubor ulo¾íte, +Emacs uchová pùvodní soubor pod zmìnìným názvem pro pøípad, ¾e byste +zjistili, ¾e va¹e úpravy byly chybné. + +Kdy¾ se podíváte do dolní èásti obrazovky, uvidíte øádek, který zaèíná a +konèí pomlèkami a na zaèátku má "2J:-- TUTORIAL.cs" nebo nìco podobného. +Tato èást obrazovky obvykle obsahuje jméno souboru, který je právì +nav¹tíven. Zrovna teï máte nav¹tíven soubor nazvaný "TUTORIAL.cs", +který je va¹í osobní èmárací kopií tutoriálu Emacsu. Kdy¾ v Emacsu +vyhledáte soubor, jeho jméno se objeví pøesnì na tom místì. + +Pøíkazy pro vyhledávání a ukládání souborù se na rozdíl od ostatních +pøíkazù, které jste se zatím nauèili, skládají ze dvou znakù. Oba +zaèínají znakem CONTROL-x. Existuje celá øada pøíkazù zaèínajících na +CONTROL-x; mnoho z nich pracuje se soubory, buffery a podobnými vìcmi. +Tyto pøíkazy jsou dlouhé dva, tøi nebo ètyøi znaky. + +Dal¹í vìcí ohlednì pøíkazu pro vyhledání souboru je to, ¾e musíte øíct, +které jméno souboru chcete. Øíkáme, ¾e pøíkaz "ète argument +z terminálu" (v tomto pøípadì je argumentem jméno souboru). Poté co +vyvoláte pøíkaz + + C-x C-f Vyhledání souboru + +Emacs se vás zeptá na jméno souboru. Jméno souboru, které pí¹ete, se +objevuje ve spodním øádku obrazovky, který se v této situaci nazývá +minibuffer. Pro editaci jména souboru mù¾ete pou¾ívat obvyklé editaèní +pøíkazy Emacsu. + +Zadávání jména souboru (obecnì kterýkoliv vstup z minibufferu) mù¾ete +zru¹it pøíkazem C-g. + +>> Stisknìte C-x C-f a pak C-g. To minibuffer zru¹í a takté¾ to zru¹í + pøíkaz C-x C-f, který minibuffer pou¾il. Tak¾e nevyhledáte ¾ádný + soubor. + +Po napsání jména souboru stisknìte . +Pøíkaz C-x C-f pak zaène pracovat a vyhledá soubor, který jste zvolili. +Po skonèení pøíkazu C-x C-f minibuffer zmizí. + +Po malé chvilce se obsah souboru objeví na obrazovce a mù¾ete jej +editovat. Kdy¾ chcete zmìny trvale ulo¾it, pou¾ijte pøíkaz + + C-x C-s Ulo¾ení souboru + +To zkopíruje text z Emacsu do souboru. Kdy¾ to provedete poprvé, Emacs +pøejmenuje pùvodní soubor na soubor s novým jménem, aby nebyl ztracen. +Nové jméno je vytvoøeno pøidáním "~" na konec pùvodního jména souboru. + +Kdy¾ je ukládání dokonèeno, Emacs zobrazí jméno zapsaného souboru. +Mìli byste ukládat rozumnì èasto, abyste neztratili pøíli¹ mnoho práce +v pøípadì pádu systému. + +>> Stisknìte C-x C-s pro ulo¾ení va¹í kopie tutoriálu. + Mìlo by to zobrazit "Wrote ...TUTORIAL.cs" ve spodním øádku obrazovky. + +POZNÁMKA: Na nìkterých systémech zpùsobí stisk C-x C-s ztuhnutí +obrazovky a nevidíte ¾ádný dal¹í výstup z Emacsu. To znamená, ¾e +"vlastnost" operaèního systému zvaná "flow control" zachycuje C-s a +nepropustí jej k Emacsu. Pro odtuhnutí obrazovky stisknìte C-q. Pak +v sekci "Spontaneous Entry to Incremental Search" v manuálu Emacsu +vyhledejte radu, jak se vypoøádat s touto "vlastností". + +Existující soubor mù¾ete vyhledat, abyste jej mohli prohlí¾et nebo +editovat. Mù¾ete také vyhledat soubor, který je¹tì neexistuje. To je +zpùsob, jakým lze vytvoøit soubor v Emacsu: vyhledejte soubor, který +bude na zaèátku prázdný a pak zaènìte vkládat text urèený pro tento +soubor. Kdy¾ po¾ádáte o ulo¾ení, Emacs skuteènì vytvoøí soubor +s textem, který jste vlo¾ili. Od té chvíle se pak mù¾ete cítit, jako +kdybyste editovali ji¾ existující soubor. + + +* BUFFERY +--------- + +Jestli¾e vyhledáte pomocí C-x C-f druhý soubor, první soubor v Emacsu +zùstává. Mù¾ete se do nìj zpìt pøepnout jeho opìtovným vyhledáním +pomocí C-x C-f. Tímto zpùsobem mù¾ete do Emacsu dostat pomìrnì hodnì +souborù. + +>> Vytvoøte soubor pojmenovaný "foo" stiskem C-x C-f foo . + Potom vlo¾te nìjaký text, zeditujte jej a ulo¾te "foo" stiskem C-x C-s. + Nakonec stisknìte C-x C-f TUTORIAL.cs , èím¾ se vrátíte zpìt do + tutoriálu. + +Emacs ukládá text ka¾dého souboru do objektu nazývaného "buffer". +Vyhledání souboru vytvoøí v Emacsu nový buffer. Chcete-li vidìt seznam +bufferù, které momentálnì existují ve va¹em procesu Emacs, stisknìte: + + C-x C-b Seznam bufferù + +>> Zkuste teï C-x C-b. + +Podívejte se, ¾e ka¾dý buffer má v seznamu jméno a mù¾e tam mít také jméno +souboru, jeho¾ text obsahuje. Nìkteré buffery neodpovídají souborùm. +Napøíklad buffer pojmenovaný "*Buffer List*" nemá ¾ádný soubor. Je to +buffer, který obsahuje seznam bufferù vytvoøený pomocí C-x C-b. +JAKÝKOLIV text, který vidíte v emacsovém oknì, je v¾dy souèástí +nìjakého bufferu. + +>> Stisknìte C-x 1, abyste se zbavili seznamu bufferù. + +Pokud provedete zmìny textu jednoho souboru a pak vyhledáte jiný soubor, +nezpùsobí to ulo¾ení prvního souboru. Jeho zmìny zùstávají v Emacsu +uchovány v jemu odpovídajícím bufferu. Vytvoøení a editace druhého +souboru nemá ¾ádný vliv na buffer prvního souboru. To je velmi +u¾iteèné, ale také to znamená, ¾e potøebujete vhodný zpùsob, jak ulo¾it +buffer prvního souboru. Nutnost pøepnout se zpátky pomocí C-x C-f, aby +jej bylo mo¾no ulo¾it prostøednictvím C-x C-s, by byla nemístnì +obtì¾ující. Tak¾e máme + + C-x s Ulo¾ení nìkterých bufferù + +C-x s se vás zeptá na ka¾dý buffer, který obsahuje zmìny, které jste +neulo¾ili. Pro ka¾dý takový buffer se vás zeptá, zda jej má ulo¾it. + +>> Vlo¾te øádek textu a pak stisknìte C-x s. + Mìli byste být dotázáni, zda má být ulo¾en buffer nazvaný TUTORIAL.cs. + Odpovìzte na tuto otázku ano (yes) stiskem "y". + + +* ROZ©IØOVÁNÍ SADY PØÍKAZÙ +-------------------------- + +Existuje mnohem, mnohem více pøíkazù Emacsu, ne¾ které by vùbec mohly +být rozmístìny na v¹echny CONTROL a META znaky. Emacs tento problém +obchází prostøednictvím X (eXtend) pøíkazu. Ten vzniká dvìma zpùsoby: + + C-x Znakový eXtend. Následován jedním znakem. + M-x Pojmenovaný pøíkaz eXtend. Následován dlouhým názvem. + +To jsou pøíkazy, které jsou obecnì u¾iteèné, av¹ak ménì èasto pou¾ívané +ne¾ ty, které jste se ji¾ nauèili. U¾ jste vidìli dva z nich: souborové +pøíkazy C-x C-f pro vyhledání a C-x C-s pro ulo¾ení. Jiný pøíklad je +pøíkaz pro ukonèení Emacsu -- tj. pøíkaz C-x C-c. (Nemìjte obavy +o ztrátu zmìn, které jste provedli; C-x C-c nabídne ulo¾ení ka¾dého +zmìnìného souboru, ne¾ Emacs ukonèí.) + +C-z je pøíkaz na *doèasné* opu¹tìní Emacsu -- mù¾ete se po nìm do +spu¹tìného Emacsu vrátit. + +Na systémech, které to umo¾òují, C-z Emacs "pozastaví"; tzn. vrátí vás +do shellu, av¹ak Emacs neukonèí. V nejbì¾nìj¹ích shellech se mù¾ete do +Emacsu vrátit pøíkazem `fg' nebo pomocí `%emacs'. + +Na systémech, které pozastavování procesù nemají implementováno, C-z +vytvoøí subshell bì¾ící pod Emacsem, aby vám dal ¹anci spustit jiné +programy a pak se do Emacsu vrátit; neprovede tedy pravé opu¹tìní +Emacsu. V tom pøípadì je obvyklou cestou návratu ze subshellu do Emacsu +shellovský pøíkaz `exit'. + +Chvíle pro pou¾ití C-x C-c nastane, kdy¾ se chystáte odhlásit ze +systému. Správné je to také pøi ukonèování Emacsu vyvolaného po¹tovním +programem a rùznými jinými utilitami, proto¾e ty nemusí vìdìt, jak si +poradit s pozastavením Emacsu. Nicménì za normálních okolností, pokud +se nechystáte odlogovat, je lépe Emacs pozastavit pomocí C-z ne¾ jej +ukonèit. + +Existuje mnoho C-x pøíkazù. Zde je seznam tìch, které jste se ji¾ nauèili: + + C-x C-f Vyhledání souboru + C-x C-s Ulo¾ení soubor + C-x C-b Seznam bufferù + C-x C-c Ukonèení Emacsu + C-x u Undo + +Pojmenované eXtended pøíkazy jsou pøíkazy, které jsou pou¾ívány je¹tì +ménì, nebo pøíkazy, které jsou pou¾ívány jenom v jistých módech. +Pøíkladem je pøíkaz replace-string, který globálnì nahradí jeden øetìzec +jiným. Kdy¾ stisknete M-x, vypí¹e se na spodním øádku obrazovky prompt +M-x a vy byste mìli zadat jméno pøíkazu; v tomto pøípadì +"replace-string". Jednodu¹e napi¹te "repl s" a Emacs název doplní. +Dokonèete zadávání jména pøíkazu pomocí . + +Pøíkaz replace-string vy¾aduje dva argumenty -- øetìzec, který má být +nahrazen, a øetìzec, který jej má nahradit. Ka¾dý argument musíte +ukonèit pomocí . + +>> Pøesuòte kurzor na prázdný øádek dva øádky pod tímto. + Pak napi¹te M-x repl szmìnilmodifikoval. + + V¹imnìte si, jak se tento øádek zmìnil: nahradili jste slovo + z-m-ì-n-i-l slovem "modifikoval", kdekoliv se za aktuální pozicí + kurzoru vyskytlo. + + +* AUTOMATICKÉ UKLÁDÁNÍ +---------------------- + +Jestli¾e jste provedli zmìny v souboru, ale nemáte je je¹tì ulo¾eny, +mohou být v pøípadì pádu systému ztraceny. Aby vás Emacs od toho +uchránil, periodicky zapisuje "auto save" soubor pro ka¾dý soubor, který +editujete. Jméno auto save souboru má na zaèátku a na konci #; +napøíklad jestli¾e se vá¹ soubor jmenuje "hello.c", jeho auto save +soubor se jmenuje "#hello.c#". Kdy¾ soubor ulo¾íte normálním zpùsobem, +Emacs auto save soubor sma¾e. + +Jestli¾e dojde k pádu systému, mù¾ete svoji editaci obnovit z auto-save +souboru, a to normálním vyhledáním souboru (toho, který jste editovali, +ne auto save souboru) a následnou aplikací M-x recover file. +Na ¾ádost o potvrzení odpovìzte zadáním yes pro pokraèování a +obnovení auto-save dat. + + +* ECHO OBLAST +------------- + +Kdy¾ Emacs vidí, ¾e pí¹ete pøíkazy pomalu, ukazuje vám je ve spodní +èásti obrazovky v oblasti nazývané "echo oblast". Echo oblast obsahuje +dolní øádek obrazovky. + + +* STAVOVÝ ØÁDEK +--------------- + +Øádek bezprostøednì nad echo oblastí se nazývá "stavový øádek" ("mode line"). +Stavový øádek øíká nìco jako: + +2J:** TUTORIAL.cs (Fundamental)--L670--58%---------------- + +Tento øádek podává u¾iteènou informaci o stavu Emacsu a textu, který +editujete. + +U¾ víte, co znamená jméno souboru -- je to soubor, který jste vyhledali. +-NN%-- oznaèuje va¹i aktuální pozici v textu; øíká, ¾e NN procent textu +je nad horním okrajem obrazovky. Je-li zaèátek souboru na obrazovce, je +zde --Top-- a ne --00%--. Je-li konec textu na obrazovce, je zde +--Bot--. Jestli¾e se díváte na tak malý text, ¾e se celý vejde na +obrazovku, stavový øádek øíká --All--. + +Hvìzdièky poblí¾ zaèátku znamenají, ¾e jste text zmìnili. Tìsnì po +vyhledání nebo ulo¾ení souboru v této èásti stavového øádku nejsou ¾ádné +hvìzdièky, pouze pomlèky. + +Èást stavového øádku v závorkách øíká, v jakých editaèních módech se +nacházíte. Implicitní mód je Fundamental, co¾ je ten, který momentálnì +pou¾íváte. Je pøíkladem hlavního módu ("major mode"). + +Emacs má celou øadu hlavních módù. Nìkteré z nich jsou urèeny pro +editaci rùzných programovacích jazykù a/nebo textù jako tøeba Lisp mód, +Text mód, atd. V libovolném okam¾iku je aktivní právì jeden hlavní mód a +jeho jméno lze nalézt ve stavovém øádku na místì, kde je teï +"Fundamental". + +Ka¾dý hlavní mód mìní chování nìkterých pøíkazù. Napøíklad existují +pøíkazy pro vytváøení komentáøù v programu, a proto¾e ka¾dý programovací +programovací jazyk má jinou pøedstavu o tom, jak má komentáø vypadat, +musí ka¾dý hlavní mód vkládat komentáøe jinak. Ka¾dý hlavní mód je +vlastnì jméno extended pøíkazu, kterým se do tohoto módu mù¾ete +pøepnout. Napøíklad M-x fundamental-mode je pøíkaz pro pøepnutí se do +Fundamental módu. + +Chystáte-li se editovat èeský text, jako tøeba tento soubor, +pravdìpodobnì byste mìli pou¾ít Text mód. +>> Napi¹te M-x text-mode. + +Nebojte se, ¾ádný z pøíkazù, které jste se nauèili, chování Emacsu nijak +významnì nezmìní. Mù¾ete si ale v¹imnout, ¾e M-f a M-b nyní pracují +s apostrofy jako se souèástmi slov. Pøedtím, ve Fundamental módu, M-f a +M-b pracovaly s apostrofy coby oddìlovaèi slov. + +Hlavní módy obvykle dìlají men¹í zmìny, jako byla tato: pøíkazy vìt¹inou +dìlají "toté¾", ale v ka¾dém hlavním módu pracují tro¹ku jinak. + +Dokumentaci k aktuálnímu hlavnímu módu si mù¾ete zobrazit stiskem C-h m. + +>> Jednou nebo nìkolikrát pou¾ijte C-u C-v, abyste tento øádek dostali + k vrcholu obrazovky. +>> Stisknìte C-h m, abyste vidìli, jak se Text mód li¹í od Fundamental + módu. +>> Stisknìte C-x 1 pro odstranìní dokumentace z obrazovky. + +Hlavní módy se nazývají hlavní proto, ¾e také existují vedlej¹í módy +(minor modes). Vedlej¹í módy nejsou alternativou k hlavním módùm, nýbr¾ +jejich malé modifikace. Ka¾dý vedlej¹í mód mù¾e být zapnut nebo vypnut +sám o sobì nezávisle na v¹ech ostatních vedlej¹ích módech a nezávisle na +hlavním módu. Tak¾e nemusíte pou¾ívat ¾ádný vedlej¹í mód nebo mù¾ete +pou¾ívat jeden vedlej¹í mód nebo libovolnou kombinaci nìkolika +vedlej¹ích módù. + +Jedním z velmi u¾iteèných vedlej¹ích módù, zejména pro editaci èeských +textù, je Auto Fill mód. Kdy¾ je tento mód zapnut, Emacs zalomí øádek +mezi dvìma slovy, kdykoliv vkládáte text a øádek se stane pøíli¹ +dlouhým. + +Auto Fill mód mù¾ete zapnout provedením M-x auto-fill-mode. +Je-li tento mód zapnut, mù¾ete jej vypnout provedením M-x +auto-fill-mode. Je-li mód vypnut, tento pøíkaz jej zapíná, +a je-li mód zapnut, tak jej tento pøíkaz vypíná. Øíkáme, ¾e tento +pøíkaz pøepíná ("toggles") tento mód. + +>> Napi¹te teï M-x auto-fill-mode. Pak vkládejte "asdf " stále + dokola tak dlouho, a¾ uvidíte, jak se vkládaný øádek rozdìlí na dva + øádky. Do textu musíte vkládat mezery proto, ¾e Auto Fill mód + zalamuje øádky pouze v mezerách. + +Okraj je obvykle nastaven na 70 znakù, ale mù¾ete to zmìnit pøíkazem +C-x f. Hodnotu okraje, kterou si pøejete, byste mìli pøedat jako +numerický argument. + +>> Napi¹te C-x f s argumentem 20. (C-u 2 0 C-x f). + Pak pi¹te nìjaký text a pozorujte, jak Emacs vyplòuje øádky po + 20 znacích. Pak nastavte okraj zpátky na 70 opìtovným pou¾itím + C-x f. + +Jestli¾e provedete zmìny uprostøed odstavce, Auto Fill mód jej +nepøeformátuje. +Pro pøeformátování odstavce stisknìte M-q (META-q) s kurzorem uvnitø +odstavce. + +>> Pøesuòte kurzor do pøedchozího odstavce a stisknìte M-q. + + +* VYHLEDÁVÁNÍ +------------- + +Emacs umí v textu vyhledávat øetìzce (tj. skupiny spojených znakù nebo +slov) smìrem vpøed nebo vzad. Hledání øetìzce je pøíkaz pøesunující +kurzor; pøesune kurzor na nejbli¾¹í místo, kde se tento øetìzec nachází. + +Vyhledávací pøíkaz Emacsu se li¹í od vyhledávacích pøíkazù vìt¹iny +editorù v tom smyslu, ¾e je "inkrementální". To znamená, ¾e vyhledávání +se provádí u¾ v okam¾iku, kdy zadáváte vyhledávací øetìzec. + +Pøíkaz pro zahájení hledání vpøed je C-s a pro hledání vzad C-r. +ALE POZOR! Nezkou¹ejte to je¹tì. + +Kdy¾ stisknete C-s, uvidíte v echo oblasti prompt "I-search". To vám +øíká, ¾e Emacs se nachází ve stavu, který se nazývá inkrementální hledání, +a èeká, a¾ mu zadáte, co chcete hledat. hledání ukonèí. + +>> Nyní zahajte hledání stiskem C-s. POMALU, písmeno po písmenu, pi¹te + slovo 'kurzor'. Po ka¾dém písmenu si v¹imnìte, co se dìje s kurzorem. + Teï jste vyhledali "kurzor" poprvé. +>> Stisknìte C-s znovu, abyste nalezli dal¹í výskyt "kurzor". +>> Nyní ètyøikrát stisknìte a pozorujte, jak se kurzor + pøesunuje. +>> Stisknìte pro ukonèení hledání. + +Vidìli jste, co se stalo? Emacs se v inkrementálním hledání pokou¹í +pøejít na dal¹í výskyt øetìzce, který jste dosud napsali. Chcete-li +pøejít na dal¹í výskyt 'kurzor', jednodu¹e stisknìte C-s znovu. +Jestli¾e u¾ ¾ádný takový výskyt není, Emacs pípne a øekne vám, ¾e +hledání momentálnì "selhává", C-g hledání ukonèí. + +POZNÁMKA: Na nìkterých systémech stisk C-s zpùsobí ztuhnutí +obrazovky a nevidíte ¾ádný dal¹í výstup z Emacsu. To znamená, ¾e +"vlastnost" operaèního systému zvaná "flow control" zachycuje C-s a +nepropustí jej k Emacsu. Pro odtuhnutí obrazovky stisknìte C-q. Pak +v sekci "Spontaneous Entry to Incremental Search" v manuálu Emacsu +vyhledejte radu, jak se vypoøádat s touto "vlastností". + +Jestli¾e uprostøed inkrementálního hledání stisknete , uvidíte, +¾e poslední znak v hledaném øetìzci zmizí a hledání se vrací na poslední +místo hledání. Pøedpokládejme napøíklad, ¾e jste napsali "c", abyste +na¹li první výskyt "k". Jestli¾e nyní stisknete "u", kurzor se pøesune na +první výskyt "ku". Teï stisknìte . To vyma¾e "u" z hledaného +øetìzce a kurzor se pøesune zpìt na první výskyt "k". + +Jestli¾e uprostøed hledání stisknete CONTROL nebo META znak (s nìkolika +výjimkami -- znaky, které jsou speciální v hledání, jako C-s a C-r), +hledání se ukonèí. + +C-s zahajuje hledání, které hledá jakýkoliv výskyt hledaného øetìzce ZA +aktuální pozicí kurzoru. Chcete-li nìco hledat v pøedcházejícím textu, +stisknìte C-r místo C-s. V¹e, co jsme øekli o C-s, platí také o C-r +kromì toho, ¾e smìr hledání je opaèný. + + +* VÍCE OKEN +----------- + +Jednou z pìkných vlastností Emacsu je to, ¾e mù¾e na obrazovce zobrazit +více oken souèasnì. + +>> Pøesuòte kurzor na tento øádek a stisknìte C-u 0 C-l. + +>> Teï stisknìte C-x 2, co¾ rozdìlí obrazovku na dvì okna. + Obì okna zobrazují tento tutoriál. Kurzor zùstává navrchu okna. + +>> Tisknìte C-M-v pro scrollování spodního okna. + (Nemáte-li skuteènou klávesu META, stisknìte ESC C-v.) + +>> Stisknìte C-x o ("o" jako "other") pro pøesun kurzoru do dolního okna. + +>> Pou¾ijte C-v a M-v ve spodním oknì pro jeho scrollování. + Pokraèujte ve ètení tìchto instrukcí v horním oknì. + +>> Znovu stisknìte C-x o pro pøesun kurzoru zpìt do horního okna. + Kurzor v horním oknì je pøesnì na místì, kde byl pùvodnì. + +Mù¾ete dále pou¾ívat C-x o pro pøepínání mezi okny. Ka¾dé okno má svoji +vlastní pozici kurzoru, ale jenom jedno okno kurzor skuteènì zobrazuje. +V¹echny obvyklé editaèní pøíkazy platí pro okno, ve kterém se nachází +kurzor. Toto okno nazýváme "aktivní okno" ("selected window"). + +Pøíkaz C-M-v je velmi u¾iteèný, jestli¾e v jednom oknì editujete text a +druhé okno pou¾íváte pouze pro pøehled. Mù¾ete kurzor nechávat stále +v oknì, kde editujete, a postupovat po druhém oknì pomocí C-M-v. + +C-M-v je pøíkladem CONTROL-META znaku. Máte-li skuteènou META klávesu, +mù¾ete vyvolat C-M-v pøidr¾ením obou kláves CTRL a META pøi stisku v. +Nezále¾í na tom, zda je prvnì stisknuta CTRL nebo META, proto¾e obì tyto +klávesy fungují jako modifikátory kláves, které tisknete. + +Pokud nemáte skuteènou META klávesu, mù¾ete místo ní pou¾ít ESC, na +poøadí zále¾í: musíte stisknout ESC a následnì CTRL-v; CTRL-ESC v by +nefungovalo. To proto, ¾e ESC je samostatný znak, nikoliv modifikátor. + +>> Stisknìte C-x 1 (v horním oknì), abyste se zbavili dolního okna. + +(Kdybyste C-x 1 stiskli v dolním oknì, odstranilo by to horní okno. +Chápejte tento pøíkaz jako "ponechej právì jedno okno -- to, ve kterém +zrovna jsem".) + +Nemusíte v obou oknech zobrazovat tentý¾ buffer. Jestli¾e pou¾ijete +C-x C-f pro vyhledání souboru v jednom z oken, druhé okno se nezmìní. +Mù¾ete vyhledávat soubory v obou oknech nezávisle. + +Zde je dal¹í zpùsob, jak vyu¾ít dvì okna ke zobrazení dvou rùzných vìcí: + +>> Stisknìte C-x 4 C-f následované jménem nìkterého z va¹ich souborù. + Dokonèete to pomocí . Vidíte zadaný soubor v dolním oknì. + Pøesunul se tam i kurzor. + +>> Stisknìte C-x o pro pøesun zpìt do horního okna a C-x 1 pro smazání + dolního okna. + + +* REKURZIVNÍ EDITAÈNÍ ÚROVNÌ +---------------------------- + +Obèas se dostanete do nìèeho, co se nazývá "rekurzivní editaèní úroveò" +("recursive editing level"). To je indikováno hranatými závorkami ve +stavovém øádku obklopujícími závorky okolo jména hlavního módu. +Napøíklad mù¾ete vidìt [(Fundamental)] místo (Fundamental). + +Abyste se dostali z rekurzivní editaèní úrovnì, stisknìte ESC ESC ESC. +To je obecný "vyskakovací" pøíkaz. Mù¾ete jej pou¾ít té¾ pro odstranìní +nìkterých oken a vyskoèení z minibufferu. + +>> Stisknìte M-x, abyste se dostali do minibufferu; pak stisknìte + ESC ESC ESC, abyste se z nìj dostali ven. + +Z rekurzivní editaèní úrovnì nemù¾ete vyskoèit pomocí C-g. To proto, ¾e +C-g je vyu¾íváno pro ru¹ení pøíkazù a argumentù UVNITØ rekurzivní +editaèní vrstvy. + + +* ZÍSKÁNÍ DAL©Í NÁPOVÌDY +------------------------ + +V tomto tutoriálu jsme se pokusili poskytnout vám dostatek informací, +abyste mohli zaèít Emacs pou¾ívat. V Emacsu je toho tolik, ¾e by bylo +nemo¾né to zde v¹echno objasnit. Nicménì se o Emacsu mù¾ete nauèit +více, proto¾e má mnoho u¾iteèných vlastností. Emacs nabízí pøíkazy pro +ètení dokumentace svých pøíkazù. V¹echny tyto "help" pøíkazy +zaèínají znakem CONTROL-h, který se nazývá "help znak". + +Pro pou¾ití vlastností nápovìdy stisknìte znak C-h a pak znak øíkající, +jaký druh nápovìdy ¾ádáte. Jste-li OPRAVDU ztraceni, stisknìte C-h ? a +Emacs vám sdìlí, jaké druhy nápovìdy vám mù¾e poskytnout. Jestli¾e +jste stiskli C-h a pak jste se rozhodli, ¾e ¾ádnou nápovìdu nechcete, +jednodu¹e to zru¹te stiskem C-g. + +(Na nìkterých poèítaèích je význam znaku C-h zmìnìn. To by opravdu +nemìlo být obecným nastavením pro v¹echny u¾ivatele, tak¾e máte právo +stì¾ovat si systémovému administrátorovi. Do té doby, jestli¾e C-h +nezobrazuje hlá¹ení o nápovìdì v dolní èásti obrazovky, zkuste místo +toho pou¾ívat klávesu F1 nebo M-x help RET.) + +Nejzákladnìj¹í help pøíkaz je C-h c. Stisknìte C-h, znak c a klávesový +pøíkaz; Emacs pak zobrazí velmi struèný popis pøíkazu. + +>> Stisknìte C-h c C-p. + Hlá¹ení by mìlo vypadat asi takto + + C-p runs the command previous-line + +To vám sdìluje "jméno funkce". Jména funkcí jsou pou¾ívána zejména pro +konfiguraci a roz¹iøování Emacsu. Ale proto¾e jména funkcí jsou volena +tak, aby naznaèovala, co odpovídající pøíkaz dìlá, mohou slou¾it také +jako velmi struèná dokumentace -- dostateèná k tomu, aby vám pøipomenula +pøíkazy, které jste se ji¾ nauèili. + +Víceznakové pøíkazy jako C-x C-s a (pokud nemáte META, EDIT ani ALT +klávesu) v jsou po C-h c povoleny také. + +K získání více informací o pøíkazu místo C-h c pou¾ijte C-h k. + +>> Stisknìte C-h k C-p. + +To zobrazí dokumentaci k funkci a její jméno v emacsovém oknì. A¾ +výstup pøeètete, stisknìte C-x 1, abyste se textu nápovìdy zbavili. +Nemusíte to dìlat hned. Mù¾ete chvíli editovat a nahlí¾et do textu +nápovìdy a teprve pak stisknout C-x 1. + +Zde jsou dal¹í u¾iteèné C-h volby: + + C-h f Popis funkce. Zadáváte jméno funkce. + +>> Zkuste napsat C-h f previous-line. + To vypí¹e ve¹keré informace, které Emacs má o funkci implementující + pøíkaz C-p. + +Podobný pøíkaz C-h v zobrazí dokumentaci promìnné, její¾ hodnotu +mù¾ete nastavit a zmìnit tím chování Emacsu. Jméno promìnné zadáte, a¾ +se na nì Emacs zeptá. + + C-h a Pøíkazové apropos. Zadejte klíèové slovo a Emacs vypí¹e + v¹echny pøíkazy, jejich¾ jména obsahují toto klíèové + slovo. V¹echny tyto pøíkazy mohou být vyvolány pomocí + META-x. Pro nìkteré pøíkazy pøíkazové apropos vypí¹e + také jedno nebo dvouznakové sekvence, které provádìjí + tentý¾ pøíkaz. + +>> Napi¹te C-h a file. + +To zobrazí v druhém oknì seznam v¹ech M-x pøíkazù obsahujících "file" ve +svém názvu. Znakové pøíkazy jako C-x C-f uvidíte vypsané vedle +odpovídajících jmen pøíkazù jako find-file. + +>> Stisknìte C-M-v pro posun okna s nápovìdou. Proveïte to nìkolikrát. + +>> Stisknìte C-x 1 pro smazání okna s nápovìdou. + + C-h i Ètení on-line manuálù (té¾ Info). Tento pøíkaz + vás pøepne do speciálního bufferu s názvem `*info*', + ve kterém mù¾ete èíst on-line manuály pro balíky + nainstalované na va¹em systému. Pokud stisknete + m emacs mù¾ete si napøíklad pøeèíst manuál + k Emacsu. Pokud jste dosud nikdy nepou¾ívali Info, + stisknìte ? a Emacs vám pøedstaví hlavní mo¾nosti + módu pro Info. A¾ si tyto mo¾nosti prostudujete, + mìli byste pou¾ívat Info manuál Emacsu jako svoji + primární dokumentaci. + + +* ZÁVÌR +------- + +Nezapomeòte, Emacs ukonèíte provedením pøíkazu C-x C-c. Pro doèasný +odskok do shellu, ze kterého se do Emacsu mù¾ete opìt vrátit, +pou¾ijte C-z. + +Zámìrem tohoto tutoriálu je být srozumitelný v¹em novým u¾ivatelùm, tak¾e +narazíte-li na nìco nejasného, tak neusedejte a neklaïte to za vinu sobì +-- stì¾ujte si! + + +KOPÍROVÁNÍ +---------- + +Tento tutoriál vychází z dlouhé øady emacsových tutoriálù zahájené +tutoriálem napsaným Stuartem Cracraftem pro pùvodní Emacs. + +Tato verze tutoriálu je, podobnì jako GNU Emacs, chránìna copyrightem a +je ¹íøena se svolením distribuovat kopie za jistých podmínek: + +Copyright (c) 1985, 1996 Free Software Foundation + + Ka¾dému je zaruèeno právo vytváøet a distribuovat pøesné kopie tohoto + dokumentu tak, jak jej obdr¾el, na jakémkoliv médiu, s tím, ¾e bude + zachována tato poznámka o autorství a poznámka o svolení a ¾e + distributor zaruèuje pøíjemci právo na dal¹í redistribuci povolenou + touto poznámkou. + + Je zaruèeno právo distribuovat modifikované verze tohoto dokumentu + nebo jeho èástí pod vý¹e uvedenými podmínkami za pøedpokladu, ¾e + obsahuje jasné poznámky uvádìjící, kdo provedl poslední modifikace. + +Podmínky pro kopírování Emacsu samotného jsou slo¾itìj¹í, av¹ak ve +stejném duchu. Pøeètìte si prosím soubor COPYING a pak pøedávejte kopie +GNU Emacsu svým pøátelùm. Pomáhejte potírat softwarovou obstrukci +("vlastnictví") pou¾íváním, psaním a sdílením free softwaru! + +;;; Local Variables: +;;; coding: iso-latin-2 +;;; End: diff --git a/etc/TUTORIAL.sl b/etc/TUTORIAL.sl new file mode 100644 index 0000000..8d41225 --- /dev/null +++ b/etc/TUTORIAL.sl @@ -0,0 +1,1031 @@ +Copyright (c) 1985,96,97 Free Software Foundation, Inc; See end for conditions. +Emacs. Prvo berilo. + +Ukazi v Emacsu v splo¹nem vkljuèujejo tipki CONTROL (vèasih oznaèeni +CTRL ali CTL) in META (vèasih oznaèena EDIT ali ALT). Namesto, da bi ju +vedno izpisali s celim imenom, bomo uporabili naslednji okraj¹avi: + + C- pomeni, da moramo dr¾ati pritisnjeno tipko CONTROL, ko + vtipkamo znak . Oznaka C-f tako pomeni: dr¾imo + pritisnjeno tipko CONTROL in pritisnemo tipko f. + M- pomeni, da moramo dr¾ati pritisnjeno tipko META, EDIT ali ALT, + ko vtipkamo znak . Èe na tipkovnici ni tipk META, EDIT + ali ALT, pritisnemo tipko ESC, jo spustimo in zatem + pritisnemo tipko . Tipko ESC bomo oznaèevali z . + +Pomembno: Emacs zapustimo z ukazom C-x C-c (dva znaka). +V uèbeniku so vaje, s katerimi preskusite nove ukaze. Oznaèujeta jih +znaka ,>>` ob levem robu. Primer: +<> +>> Vtipkajte zdaj ukaz C-v (View next screen, Prika¾i naslednji zaslon), + da se premaknete na naslednji zaslon (kar poskusite, pritisnite + hkrati kontrolno tipko in V). Od zdaj naprej boste morali to + napraviti sami vsakiè, ko pridete do konca zaslona. + +Ste opazili, da sta se dve vrstici s prej¹njega zaslona ponovili? Ta +kontinuiteta olaj¹a branje pri skakanju s strani na stran. + +Prva stvar, ki si jo morate zapomniti, je, kako se premikate po +datoteki. Zdaj ¾e veste, da se premaknete za cel zaslon naprej z +ukazom C-v. Za cel zaslon nazaj pa se premaknete z ukazom M-v +(pritisnite tipko META in jo dr¾ite ter pritisnite tipko v, ali pa +pritisnite in spustite ter zatem pritisnite tipko v, èe tipke +META, EDIT ali ALT na va¹i tipkovnici ni). + +>> Nekajkrat pritisnite M-v in C-v, da vidite, kako ukaza delujeta. + + +* POVZETEK +---------- + +Za pregled celega zaslona besedila so uporabni naslednji ukazi: + + C-v Premik se za cel zaslon naprej + M-v Premik se za cel zaslon nazaj + C-l Cel zaslon premaknemo tako, da je zdaj po vertikali + centriran okoli besedila, kjer se nahaja kazalèek (znak v + C-l je èrka L, ne ¹tevka 1) + +>> Poi¹èite kazalèek na zaslonu in si zapomnite besedilo okoli njega. + Vtipkajte C-l. + Ponovno poi¹èite kazalèek. Besedilo okoli njega je ostalo isto. + + +* PREMIKANJE KAZALÈKA +--------------------- + +Premiki za celo stran naprej in nazaj so sicer uporabni, ampak kako pa +pridemo do izbranega mesta na zaslonu? + +Naèinov je veè. Najosnovnej¹i je uporaba ukazov C-p, C-b, C-f in +C-n. Ti po vrsti premaknejo kazalèek v prej¹njo vrstico, znak nazaj, +znak naprej, in v naslednjo vrstico. Grafièno prikazano: + + prej¹nja vrstica, C-p + : + : + nazaj, C-b .... trenutni polo¾aj kazalèka .... naprej, C-f + : + : + naslednja vrstica, C-n + +>> S pritiski na C-n ali C-p premaknite kazalèek v sredinsko vrstico + na diagramu zgoraj. Zatem pritisnite C-l. S tem diagram postavite na + sredino zaslona. + +V angle¹èini ima izbor tipk nazoren pomen. P kot ,previous` (prej¹nji), +N kot ,next` (naslednji), B kot ,backward` (nazaj) in F kot ,forward` +(naprej). To so osnovni ukazi za premikanje kazalèka in uporabljali jih +boste VES ÈAS. Èim prej se jih nauèite, tem bolje. + +>> Nekajkrat pritisnite C-n, da pride kazalèek do te vrstice. + +>> Z nekaj C-f se pomaknite na desno na sredo vrstice, nato pa nekajkrat + pritisnite C-p. Opazujte, kaj se dogaja s kazalèkom na sredini + vrstice. + +Vsaka vrstice v besedilu je zakljuèena z znakom za novo vrstico +(angl. Newline). Ta loèuje vrstico v besedilu od naslednje. Tudi +zadnja vrstica v datoteki mora biti zaljuèena z znakom za novo vrstico +(èeprav tega Emacs ne zahteva). + +>> Poskusite ukaz C-b, ko je kazalèek na zaèetku vrstice. Kazalèek se + mora premakniti na konec prej¹nje vrstice. To je zato, ker se je + ravnokar premaknil prek znaka za konec vrstice. + +Ukaz C-f premika kazalèek prek znaka za novo vrstico enako kot C-b. + +>> Poskusite ¹e nekajkrat pritisniti C-b, da dobite obèutek za + premikanje kazalèka. Potem nekajkrat poskusite C-f, da pridete do konca + vrstice. ©e enkrat pritisnite C-f, da skoèite v naslednjo vrstico. + +Ko s kazalèkom dose¾ete zgornji ali spodnji rob zaslona, se besedilo +toliko premakne, da kazalèek ostane na zaslonu. V angle¹èini se temu +pravi ,,scrolling``. To omogoèa, da lahko premaknemo kazalèek na +katerokoli mesto v besedilu, a vseeno ostanemo na zaslonu. + +>> Poskusite kazalèek pripeljati s C-n èisto do dna zaslona in si oglejte, + kaj se zgodi. + +Èe se vam zdi premikanje po en znak prepoèasno, se lahko premikate za +celo besedo. M-f (Meta-f) premakne kazalèek za eno besedo naprej, M-b +pa za besedo nazaj. + +>> Poskusite nekajkrat M-f in M-b. + +Èe je kazalèek sredi besede, ga M-f prestavi na konec besede. Èe je v +belini med besedami, ga M-f premakne na konec naslednje besede. M-b +deluje podobno, a v nasprotni smeri. + +>> Nekajkrat poskusite M-f in M-b, vmes pa ¹e nekaj C-f in + C-b. Opazujte uèinke M-f in M-b, ko je kazalèek sredi besede ali + med besedami. + +Ste opazili paralelo med C-f in C-b na eni strani ter M-f in M-b na +drugi? V Emacsu se dostikrat ukazi Meta nana¹ajo na operacije nad +enotami jezika (besede, stavki, odstavki), medtem ko se ukazi Control +nana¹ajo na operacije, neodvisne od zvrsti besedila (znaki, vrstice +ipd.). + +Podobna zveza je tudi med vrsticami in stavki: ukaza C-a in C-e +premakneta kazalèek na zaèetek oz. konec vrstice, M-a in M-e pa na +zaèetek oz. konec stavka. + +>> Poskusite nekaj ukazov C-a, potem pa nekaj ukazov C-e. + Poskusite nekaj ukazov M-a, potem pa nekaj ukazov M-e. + +Ste opazili, da ponovljeni C-a ne napravijo niè, ponovljeni M-a pa se +premikajo naprej? Èeprav se ne obna¹ata enako, pa je vendar obna¹anje +enega in drugega po svoje naravno. + +Polo¾aju kazalèka na zaslonu pravimo tudi ,,point``, toèka. +Parafrazirano: kazalèek ka¾e na zaslonu, kje je toèka v besedilu. + +Povzetek preprostih ukazov za premikanje kazalèka, vkljuèno s premiki +po besedo in stavek: + + C-f Premik za znak naprej + C-b Premik za znak nazaj + + M-f Premik za besedo naprej + M-b Premik za besedo nazaj + + C-n Premik v naslednjo vrstico + C-p Premik v prej¹njo vrstico + + C-a Premik na zaèetek vrstice + C-e Premik na konec vrstice + + M-a Premik na zaèetek stavka + M-e Premik na konec stavka + +>> Za vajo nekajkrat poskusite vsakega od teh ukazov. + To so najpogosteje uporabljani ukazi. + +©e dva pomembna ukaza za premikanje kazalèka sta M-< (Meta-manj¹i od), +ki ga premakne na zaèetek datoteke, in M-> (Meta-veèji od), ki ga +premakne na konec datoteke. + +Na ameri¹kih tipkovnicah najdete znak < nad vejico in morate +pritisniti tipko Shift, da pridete do njega. Z ukazom M-< je enako - +prav tako morate pritisniti tipko Shift, sicer moste izvedli drug +ukaz, Meta-vejica. Na na¹ih tipkovnicah sta oba znaka na isti tipko, +in za ukaz M-> morate pritisniti ¹e tipko Shift. + +>> Poskusite zdaj M-<, skok na zaèetek tega uèbenika. + Potem se vrnite nazaj z zaporednimi C-v. + +>> Poskusite zdaj M->, skok na konec tega uèbenika. + Potem se vrnite nazaj z zaporednimi M-v. + +Èe ima va¹a tipkovnica kurzorske tipke, lahko premikate kazalèek po +zaslonu tudi z njimi. Vseeno priporoèamo, da se privadite ukazov C-b, +C-f, C-n in C-p, in to iz treh razlogov. Prviè, delujejo na èisto vseh +terminalih. Drugiè, z nekaj prakse v Emacsu boste opazili, da je +tipkanje ukazov s Control hitrej¹e od tipkanja s kurzorskimi tipkami, ker +ni treba ves èas premikati desnice s tipkovnice na kurzorske tipke in +nazaj. In tretjiè, ko se enkrat navadite teh ukazov s Control, se boste +enostavneje nauèili tudi bolj zapletenih ukazov za premikanje kazalèka. + +Veèini ukazov v Emacsu lahko podamo ¹tevilèni argument; najveèkrat ta +pove, kolikokrat zapovrstjo naj se ukaz izvede. Veèkratno ponovitev +ukaza izvedemo tako, da najprej vtipkamo C-u, zatem ¹tevilo, +kolikokrat naj se ukaz ponovi, in nazadnje ¾eljeni ukaz. Èe ima va¹a +tipkovnica tipko META (ali EDIT ali ALT), lahko izpustite ukaz C-u in +namesto tega vtipkate ¹tevilo ponovitev, medtem ko dr¾ite pritisnjeno +tipko META. Druga metoda je sicer kraj¹a, priporoèamo pa prvo, ker +deluje na vseh terminalih. Tak¹en ¹tevilèni argument je ,,prefiksni`` +argument, ker vnesemo argument pred ukazom, na katerega se nana¹a. + +Primer: C-u 8 C-f premakne kazalèek za osem znakov naprej. + +>> Poskusite s primernim argumentom za ¹tevilo ponovitev ukaza + C-n ali C-p priti èim bli¾e tej vrstici v enem samem skoku. + +Veèina ukazov, ne pa vsi, uporablja ¹tevilèni argument kot ¹tevilo +ponovitev ukaza. Nekateri ukazi (nobeden od tistih, ki smo si jih +ogledali do zdaj) ga uporabljajo kot stikalo: s podanim prefiksnim +argumentom napravi ukaz nekaj drugega kot obièajno. + +Ukaza C-v in M-v sta tudi izjemi, a drugaèni. Èe jima podamo argument, +premakneta zaslon za navedeno ¹tevilo vrstic, ne pa zaslonov. Ukaz C-u +4 C-v, na primer, premakne zaslon navzgor za 4 vrstice. + +>> Poskusite zdaj C-u 8 C-v + +To bi moralo zaslon premakniti navzgor za osem vrstic. Èe bi ga radi +premaknili nazaj, poskusite M-v z istim argumentom. + +Èe uporabljate X Windows, imate verjetno ob levem robu Emacsovega +okna navpièno pravokotno ploskev, imenovano drsnik. Pogled na +besedilo lahko premikate tudi tako, da z mi¹ko kliknete na drsnik. + +>> Postavite kazalec na vrh oznaèenega obmoèja na drsniku in pritisnite + srednji gumb na mi¹ki. To bi moralo premakniti besedilo na mesto, + doloèeno s tem, kako visoko ali nizko na drsnik ste kliknili. + +>> Medtem ko dr¾ite srednji gumb pritisnjen, premikajte mi¹ko gor in + dol. Vidite, kako se premika besedilo v Emacsovem oknu, ko + premikate mi¹ko? + + +* ÈE SE EMACS OBESI +------------------- + +Èe se Emacs preneha odzivati na va¹e ukaze, ga lahko varno prekinete z +ukazom C-g. Z njim lahko prekinete ukaze, za katere bi trajalo +predolgo, da bi se izvedli. + +Isti ukaz, C-g, lahko uporabite tudi, da preklièete ¹tevilèni +argument, ali pa zaèetek ukaza, ki ga ne ¾elite izvesti. + +>> Vtipkajte C-u 100, s èimer ste izbrali ¹tevilèni argument 100, + zatem pa vtipkajte C-g. Vtipkajte zdaj C-f. Kazalèek se je + premaknil le za en znak, ker ste ¹tevilèni argument vmes preklicali + s C-g. + +Tudi èe ste po nesreèi vtipkali , se ga lahko znebite s C-g. + + +* ONEMOGOÈENI UKAZI +------------------- + +Nekaj ukazov v Emacsu je namenoma ,,onemogoèenih``, da bi jih +zaèetniki ne izvedli po nesreèi. + +Èe vtipkate tak onemogoèen ukaz, se bo na zaslonu pojavilo novo okno z +obvestilom, kateri ukaz ste sku¹ali izvesti, in vas vpra¹alo, èe ga +res ¾elite izvesti. + +Èe v resnici ¾elite poskusiti ukaz, pritisnite preslednico kot odgovor +na vpra¹anje. Normalno verjetno ukaza ne ¾elite izvesti, zato na +vpra¹anje odgovorite z ,n`. + +>> Vtipkajte : (ki je onemogoèen ukaz), zatem odgovorite n. + + +* OKNA +------ + +Emacs lahko prika¾e veè oken in v vsakem svoje besedilo. Kasneje bomo +razlo¾ili, kako uporabljamo veè oken hkrati. Zaenkrat bomo povedali +le, kako se znebite dodatnih oken, ki jih lahko odpre vgrajena pomoè ali +pa izpis kak¹nega drugega programa. Preprosto je: + + C-x 1 Eno okno (torej, zaprimo vsa ostala). + +To je Ctrl-x, ki mu sledi ¹tevka 1. Ukaz C-x 1 raztegne èez cel +zaslon okno, v katerem se nahaja kazalèek, ostala pa zapre. + +>> Premaknite kazalèek do te vrstice in vtipkajte C-u 0 C-l +>> Vtipkajte Ctrl-h k Ctrl-f. + Vidite, kako se je to okno skrèilo in odstopilo prostor oknu, + ki pojasnjuje ukaz Ctrl-f? + +>> Vtipkajte C-x 1 in spodnje okno se bo zaprlo. + +Za razliko od ukazov, ki smo se jih nauèili do zdaj, je ta ukaz +sestavljen iz dveh znakov. Zaène se z znakom Control-x. Cela vrsta +ukazov se zaène enako, in mnogi od njih zadevajo delo z datotekami, +delovnimi podroèji in podobnim. Vsem tem ukazom je skupno, da se +zaènejo s Control-x, ki mu sledi ¹e en, dva ali trije znaki. + + +* VRIVANJE IN BRISANJE +---------------------- + +Èe ¾elite v obstojeèe besedilo vriniti novo, preprosto premaknite +kazalèek na ¾eljeno mesto in zaènite tipkati. Znake, ki jih lahko +vidite, na primer A, 7, * in podobno, razume Emacs kot del besedila in +jih takoj vrine. S pritiskom na Return (ali Enter) vrinete znak za +skok v novo vrstico. + +Zadnji vtipkani znak lahko izbri¹ete s pritiskom na tipko . Na +nekaterih tipkovnicah je oznaèena z . Ponekod (ne pa povsod!) +slu¾i za brisanje tipka . + +Splo¹no pobri¹e znak neposredno pred trenutnim polo¾ajem +kazalèka. + +>> Vtipkajte zdaj nekaj znakov in jih zatem s tipko pobri¹ite. + Niè naj vas ne skrbi, èe se je ta vrstica spremenila. Izvirnika + tega uèbenika ne boste pokvarili -- tole je samo va¹a osebna kopija. + +Ko vrstica postane predolga za zaslon, se ,,nadaljuje`` v naslednji +vrstici na zaslonu. Obrnjena po¹evnica (znak ,\`) ob desnem robu +oznaèuje vrstico, ki se nadaljuje v naslednji zaslonski vrstici. + +>> Zdaj zaènite tipkati besedilo, dokler ne dose¾ete desnega roba, in + ¹e naprej. Opazili boste, da se pojavi znak za nadaljevanje. + +>> S tipko pobri¹ite toliko znakov, da vrstica ne sega + veè èez ¹irino zaslona. Znak za nadaljevanje v naslednji + vrstici je izginil. + +Znak za novo vrstico lahko pobri¹emo enako kot vsak drug znak. S tem, +ko pobri¹emo znak za novo vrstico, zdru¾imo vrstici v eno samo. Èe bo +nova vrstica predolga, da bi cela pri¹la na zaslon, bo razdeljena v +veè zaslonskih vrstic. + +>> Premaknite kazalèek na zaèetek vrstice in pritisnite . To + zdru¾i vrstico s prej¹njo. + +>> Pritisnite . S tem ste ponovno vrinili znak za skok v novo + vrstico, ki ste ga malo prej zbrisali. + +Spomnimo se, da lahko za veèino ukazov v Emacsu doloèimo, naj se +izvedejo veèkrat zaporedoma; to vkljuèuje tudi vnos teksta. Ponovitev +obièajnega znaka ga veèkrat vrine v besedilo. + +>> Poskusite zdaj tole: da vnesete osem zvezdic, vtipkajte C-u 8 * + +Zdaj ste se nauèili najpreprostej¹i naèin, da v Emacsu nekaj natipkate +in popravite. Bri¹ete lahko tudi besede ali vrstice. Tu je povzetek +ukazov za brisanje: + + pobri¹e znak tik pred kazalèkom (levo od + oznake za kazalèek) + C-d pobri¹e znak tik za kazalèkom (,pod` oznako + za kazalèek) + + M- pobri¹e besedo tik pred kazalèkom + M-d pobri¹e besedo tik za kazalèkom + + C-k zavr¾e besedilo desno od kazalèka do konca vrstice + M-k zavr¾e besedilo od polo¾aja kazalèka do konca stavka + +Èrka ,d` je iz angle¹ke besede ,delete` (pobrisati), èrka ,k` pa iz +besede ,kill` (pobiti). Ste opazili, da in C-d na eni, ter +M- in M-d na drugi strani nadaljujeta paralelo, ki sta jo zaèela +C-f in M-f ( pravzaprav ni kontrolni znak, kar pa naj nas ne +moti). C-k in M-k sta v enakem sorodu s C-e in M-e: prvi deluje na +vrstice, drugi na stavke. + +Kadarkoli pobri¹ete kaj veè kot en sam znak naenkrat, si Emacs za vsak +primer zapomni, kaj ste zavrgli, in lahko zavr¾eno vrnete (angl. +,,yank`` -- potegniti). Besedilo, ki smo ga zavrgli, lahko vrinemo +nazaj na isto mesto ali kam drugam. Lahko ga vrinemo tudi veèkrat, in +tako napravimo veè kopij. Ukaz za vraèanje zavr¾enega besedila je C-y. + +Razlika med tem, èe zavr¾ete cel odstavek besedila (angl. ,,kill``, +pobiti) ali pa èe pobri¹ete znak (angl. ,,delete``), je ta, da lahko +prvega vrnete nazaj z ukazom C-y, drugega pa ne. Na splo¹no ukazi, ki +lahko povzroèijo veliko ¹kode (pobri¹ejo veliko besedila), shranijo +pobrisano besedilo; tisti, ki pobri¹ejo samo posamezni znak, ali samo +prazne vrstice in presledke, pa ne. + +>> Postavite kazalèek na zaèetek neprazne vrstice. Pritisnite C-k, da + pobri¹ete vsebino vrstice. +>> ©e enkrat pritisnite C-k. To pobri¹e ¹e znak za novo vrstico. + +Ste opazili, da prvi C-k pobri¹e vsebino vrstice, naslednji C-k pa ¹e +vrstici samo, s èimer se vse besedilo pod biv¹o vrstico premakne za +eno vrstico navzgor? Ukaz C-k obravnava ¹tevilèni argument malo +drugaèe: pobri¹e toliko in toliko vrstic z vsebinami vred. To ni zgolj +ponovitev. C-u 2 C-k pobri¹e dve polni vrstici besedila, kar je nekaj +drugega, kot èe dvakrat vtipkate C-k. + +Besedilo, ki ste ga prej pobrisali, je shranjeno, in ga lahko povrnete +tja, kjer je trenutno kazalèek, z ukazom C-y. + +>> Poskusite z ukazom C-y povrniti pobrisano besedilo. + +Ukaz C-y si predstavljajte, kot da potegnete nazaj nekaj, kar vam je +nekdo odnesel. Èe ste uporabili veè zaporednih ukazov C-k, je vse +pobrisano besedilo shranjeno skupaj, in en sam C-y bo vrnil vse tako +pobrisane vrstice. + +>> Poskusite, nekajkrat vtipkajte C-k. + +Zdaj pa vrnimo pobrisano besedilo: + +>> Vtipkajte C-y. Zdaj pa premaknite kazalèek za nekaj vrstic navzdol + in ¹e enkrat vtipkajte C-y. Vidite zdaj, kako se kopira dele + besedila? + +Kaj pa, èe ste pobrisali nekaj besedila, ki bi ga radi vrnili, vendar +ste za iskanim odlomkom pobrisali ¹e nekaj? C-y vrne samo nazadnje +pobrisan odlomek. Vendar tudi prej¹nje besedilo ni izgubljeno. Do +njega lahko pridete z ukazom M-y. Ko ste vrnili nazadnje zbrisano +besedilo s C-y, pritisnite M-y, ki ga zamenja s predzanje pobrisanim +besedilom. Vsak naslednji M-y prika¾e ¹e eno prej. Ko ste konèno +pri¹li do iskanega besedila, ni treba napraviti niè posebnega, da bi +ga obdr¾ali. Preprosto nadaljujte z urejanjem, in vrnjeno besedilo bo +ostalo, kamor ste ga odlo¾ili. + +Èe pritisnete M-y dovolj velikokrat, se boste vrnili na zaèete, torej +spet na zadnje pobrisano besedilo. + +>> Pobri¹ite vrstico, premaknite se nekam drugam, in pobri¹ite ¹e + eno vrstico. + Z ukazom C-y dobite nazaj to drugo vrstico. + Z ukazom M-y pa jo zamenjate s prvo vrstico. + Ponovite ukaz M-y ¹e nekajkrat in si oglejte, kaj dobite na + zaslon. Ponavljajte ga, dokler se ne prika¾e ponovno nazadnje + pobrisana vrstica, in ¹e naprej. Èe ¾elite, lahko tudi ukazu + M-y podate pozitivno ali negativno ¹tevilo ponovitev. + + +* PREKLIC UKAZA (UNDO) +---------------------- + +Èe ste besedilo spremenili, a ste se kasneje premislili, lahko +besedilo vrnete v prvotno stanje z ukazom Undo, C-x u. Normalno vrne +C-x u zadnjo spremembo besedila; èe ukaz ponovimo, preklièemo ¹e +predzadnjo spremembo, in vsaka nadaljnja ponovitev se¾e ¹e eno +spremembo globlje v zgodovino. + +Emacs hrani bolj ali manj celotno zgodovino na¹ih ukazov, z dvema +izjemama: ukazov, ki niso napravili nobene spremembe v besedilu +(npr. premik kazalèka), ne shranjuje, in zaporedje do 20 vrinjenih +znakov shrani kot en sam ukaz. Slednje prihrani nekaj ukazov C-x u, ki +bi jih morali vtipkati. + +>> Pobri¹ite to vrstico z ukazom C-k, potem jo priklièite nazaj s C-x u. + +C-_ je alternativni ukaz za preklic zadnjega ukaza. Deluje enako kot +s C-x u, ga je pa la¾je odtipkati, èe morate ukaz ponoviti veèkrat +zaporedoma. Te¾ava z ukazom C-_ je, da na nekaterih tipkovnicah ni +povsem oèitno, kako ga vtipkati, zato je podvojen ¹e kot C-x u. Na +nekaterih terminalih moramo na primer vtipkati /, medtem ko dr¾imo +pritisnjeno tipko CONTROL. + +Èe podamo ukazu C-_ ali C-x u numerièni argument, je to enako, kot èe +bi ukaz roèno ponovili tolikokrat, kot pravi argument. + + +* DATOTEKE +---------- + +Da bi bile spremembe v besedilu trajne, morate besedilo shraniti v +datoteko. V nasprotnem primeru jih boste za vedno izgubili tisti hip, +ko boste zapustili Emacs. Besedilo postavimo v datoteko tako, da +na disku ,,poi¹èemo`` (angl. find) datoteko, preden zaènemo tipkati +(pravimo tudi, da ,,obi¹èemo`` datoteko). + +Poiskati datoteko pomeni, da v Emacsu vidimo vsebino datoteke. To je +bolj ali manj tako, kot da z Emacsom urejamo datoteko samo. Vendar pa +spremembe ne postanejo trajne, dokler datoteke ne shranimo +(angl. save) na disk. Tako imamo mo¾nost, da se izognemo temu, da bi +nam na pol spremenjene datoteke le¾ale po disku, kadar tega ne +¾elimo. Ker pa Emacs ohrani izvorno datoteko pod spremenjenim imenom, +lahko prvotno datoteko priklièemo nazaj celo ¹e potem, ko smo datoteko +¾e shranili na disk. + +V predzadnji vrstici na dnu zaslona vidite vrstico, ki se zaène in +konèa z vezaji, in vsebuje niz znakov ,,--:-- TUTORIAL``. Ta del +zaslona navadno vsebuje ime datoteke, ki smo jo obiskali. Zdajle je to +,,TUTORIAL``, va¹a delovna kopija uèbenika Emacsa. Ko boste poiskali +kak¹no drugo datoteko, bo na tem mestu pisalo njeno ime. + +Posebnost ukaza za iskanje datoteke je, da moramo povedati, katero +datoteko i¹èemo. Pravimo, da ukaz ,,prebere argument s terminala`` (v +tem primeru je argument ime datoteke). Ko vtipkate ukaz + + C-x C-f (poi¹èi datoteko) + +vas Emacs povpra¹a po imenu datoteke. Kar vtipkate, se sproti vidi v +vrstici na dnu zaslona. Temu delovnemu podroèju pravimo pogovorni +vmesnik (minibuffer), kadar se uporablja za tovrstni vnos. Znotraj +pogovornega vmesnika lahko uporabljate obièajne ukaze za urejanje, èe +ste se na primer pri tipkanju zmotili. + +Sredi tipkanja imena datoteke (ali katerega koli drugega opravila v +pogovornem vmesniku) lahko ukaz preklièete s C-g. + +>> Vtipkajte C-x C-f, zatem pa ¹e C-g. Zadnji ukaz od treh je + zaprl pogovorni vmesnik in tudi preklical ukaz C-x C-f, ki je + uporabljal pogovorni vmesnik. Konec z iskanjem datoteke. + +Ko ste dokonèali ime, ga vnesete s pritiskom na . S tem se +po¾ene ukaz C-x C-f in poi¹èe iskano datoteko. Pogovorni vmesnik +izgine, ko je ukaz izveden. + +Trenutek kasneje se vsebina datoteke pojavi na zaslonu. Zdaj lahko +dopolnjujete, urejate ali kako drugaèe spreminjate vsebino. Ko ¾elite, +da ostanejo spremembe trajne, izvedete ukaz: + + C-x C-s (shrani datoteko) + +Besedilo se s tem shrani iz pomnilnika raèunalnika na datoteko na +disk. Ko prviè izvedete ta ukaz, se izvorna datoteka preimenuje, tako +da ni izgubljena. Najdete jo pod novim imenom, ki se od starega +razlikuje po tem, da ima na koncu pripet znak ,,~``. + +Ko je Emacs shranil datoteko, izpi¹e njeno ime. Shranjujte raje +pogosteje kot ne, da v primeru, èe gre z raèunalnikom kaj narobe, ne +izgubite veliko. + +>> Vtipkajte C-x C-s, s èimer boste shranili svojo kopijo tega + uèbenika. Emacs bo v vrstici na dnu zaslona izpisal ,,Wrote + ...TUTORIAL``. + +Opozorilo: na nekaterih sistemih bo ukaz C-x C-s zamrznil zaslon, in +tako ne boste videli, da Emacs ¹e kaj izpi¹e. To je znak, da je +operacijski sistem prestregel znak C-s in ga interpretiral kot znak za +prekinitev toka podatkov, namesto da bi ga posredoval Emacsu. Zaslon +,,odmrznete`` z ukazom C-q. Èe je va¹ sistem eden takih, si za nasvet, +kako re¹iti to nev¹eènost, oglejte razdelek ,,Spontaneous Entry to +Incremental Search`` v priroèniku za Emacs. + +Poi¹èete lahko lahko ¾e obstojeèo datoteko, da si jo ogledate ali +popravite, ali pa tudi datoteko, ki ¹e ne obstaja. To je naèin, kako z +Emacsom ustvarimo novo datoteko: poi¹èite datoteko z izbranim imenom, +ki bo sprva prazna, in zaènite pisati. Ko jo boste prviè shranili, bo +Emacs ustvaril datoteko z vne¹enim besedilom. Od tod dalje delate na +¾e obstojeèi datoteki. + + +* DELOVNA PODROÈJA +------------------ + +Tudi èe ste z ukazom C-x C-f poiskali in odprli drugo datoteko, prva +ostane v Emacsu. Nanjo se vrnete tako, da jo ¹e enkrat ,,poi¹èete`` z +ukazom C-x C-f. Tako imate lahko v Emacsu hkrati kar precej datotek. + +>> Ustvarite datoteko z imenom ,,foo`` tako, da vtipkate C-x C-f + foo . Natipkajte nekaj besedila, ga po potrebi popravite, in + shranite v datoteko ,,foo`` z ukazom C-x C-s. Ko ste konèali, se + vrnite v uèbenik z ukazom C-x C-f TUTORIAL . + +Emacs hrani besedilo vsake datoteke v takoimenovanem ,,delovnem +podroèju`` (angl. buffer). Ko poi¹èemo datoteko, Emacs ustvari zanjo +novo delovno podroèje. Vsa obstojeèa delovna podroèja v Emacsu vidimo +z ukazom: + + C-x C-b Seznam delovnih podroèij. + +>> Poskusite C-x C-b zdaj. + +Vidite, da ima vsako delovno podroèje svoje ime, pri nekaterih pa pi¹e +tudi ime datoteke, katere vsebina se hrani v njem. Druga delovna +podroèja pa ne pripadajo nobeni datoteki. Podroèje ,,*Buffer List*``, +na primer, je ¾e eno takih. To delovno podroèje smo ustvarili +ravnokar, ko smo pognali ukaz C-x C-b. VSAKO besedilo, ki ga vidite v +katerem od Emacsovih oken, je vedno del kak¹nega delovnega podroèja. + +>> Z ukazom C-x 1 se znebite seznama delovnih podroèij. + +Èe ste spreminjali besedilo ene datoteke, potem pa poiskali drugo, to +ne shrani spremeb v prvo datoteko. Te ostanejo znotraj Emacsa, na +delovnem podroèju, ki pripada prvi datoteki. Ustvarjenje ali +spreminjanje delovnega podroèja druge datoteke nima nobenega vpliva na +podroèje prve. To je zelo uporabno, pomeni pa tudi, da potrebujemo +udobno pot, da shranimo delovno podroèje prve datoteke. Nerodno bi +bilo preklapljanje na prvo podroèje s C-x C-f, da bi shranili s C-x +C-s. Namesto tega imamo: + + C-x s Shrani nekatera delovna podroèja + +Ukaz C-x poi¹èe delovna podroèja, katerih vsebina je bila spremenjena, +odkar je bila zadnjiè shranjena na datoteko. Za vsako tako delovno +podroèje C-x s vpra¹a, èe ga ¾elite shraniti. + + +* RAZ©IRJEN NABOR UKAZOV +------------------------ + +©e mnogo, mnogo je ukazov Emacsa, ki bi zaslu¾ili, da jih obesimo na +razne kontrolne in meta znake. Emacs se temu izogne z ukazom X (iz angl. +eXtend - raz¹iriti), ki uvede ukaz iz raz¹irjenega nabora. Dveh vrst je: + + C-x Znakovna raz¹iritev (angl. Character eXtend). + Sledi mu en sam znak. + M-x Raz¹iritev s poimenovanim ukazom. Sledi mu dolgo ime + ukaza. + +Tudi ti ukazi so na splo¹no uporabni, ne uporabljamo pa jih tako +pogosto kot tiste, ki ste se jih ¾e nauèili. Dva ukaza iz raz¹irjenega +nabora ¾e poznamo: C-x C-f, s katerim poi¹èemo datoteko, in C-x C-s, s +katerim datoteko shranimo. ©e en primer je ukaz, s katerim Emacsu +povemo, da ¾elimo konèati z delom iz iziti iz Emacsa. Ta ukaz je C-x +C-c (ne skrbite: preden konèa, Emacs ponudi, da shrani vse spremenjene +datoteke). + +Z ukazom C-z Emacs zapustimo samo *zaèasno*, tako da lahko ob vrnitvi +nadaljujemo z delom, kjer smo ostali. + +Na sistemih, ki to dopu¹èajo, ukaz C-z izide iz Emacsa v ukazno +lupino, a ga ne konèa - èe uporabljate ukazno lupino C, se lahko +vrnete z ukazom ,fg` ali splo¹neje z ukazom ,,%emacs``. + +Drugod ukaz C-z po¾ene sekundarno ukazno lupino, tako da lahko +po¾enete kak¹en drug program in se kasneje vrnete v Emacs. V tem +primeru pravzaprav Emacsa ne zapustimo. Ukaz ,,exit`` v ukazni lupini +je navadno naèin, da zapremo sekundarno lupino in se vrnemo v Emacs. + +Ukaz C-x C-c uporabimo, èe se nameravamo odjaviti s sistema. To je +tudi pravilen naèin za izhod iz Emacsa, èe je tega pognal program za +delo s po¹to ali kak drug program, saj ta verjetno ne ve, kaj +napraviti z zaèasno prekinjenim Emacsom. V vseh ostalih primerih pa, +èe se ne nameravate odjaviti s sistema, uporabite C-z, in se vrnite v +Emacs, ko bi radi spet urejali besedilo. + +Ukazov C-x je veliko. Zaenkrat smo spoznali naslednje: + + C-x C-f Poi¹èi datoteko. + C-x C-s Shrani datoteko. + C-x C-b Seznam delovnih podroèij. + C-x C-c Konèaj Emacs. + C-x u Preklic zadnjega ukaza. + +Poimenovani raz¹irjeni ukazi so ukazi, ki se uporabljajo ¹e bolj +poredko, ali pa se uporabljajo samo v nekaterih naèinih dela. Eden +takih je na primer ukaz replace-string, ki po vsem besedilu zamenja en +niz znakov z drugim. Ko vtipkate M-x, se to izpi¹e v pogovornem +vmesniku na dnu zaslona, Emacs pa èaka, da vtipkate ime ukaza, ki ga +¾elite priklicati; v tem primeru je to ,,replace-string``. Vtipkajte +samo ,,repl s`` in Emacs bo dopolnil ime. Ukaz vnesete s +pritiskom na . + +Ukaz replace-string potrebuje dva argumenta -- niz, ki ga ¾elite +zamenjati, in niz, s katerim bi radi zamenjali prvega. Vsakega posebej +vnesete in zakljuèite s pritiskom na tipko Return. + +>> Premaknite kazalèek na prazno vrstico dve vrstici pod to, zatem + vtipkajte M-x repl szamenjalaspremenila. + + Opazite, kako se je ta vrstica zamenjala? Vse besede + z-a-m-e-n-j-a-l-a od tod do konca besedila ste nadomestili z besedo + ,,spremenila``. + + +* AVTOMATIÈNO SHRANJEVANJE +-------------------------- + +Spremembe v datoteki, ki jih ¹e niste shranili na disk, so izgubljene, +èe medtem denimo zmanjka elektrike. Da bi vas zavaroval pred tem, +Emacs periodièno avtomatièno shrani vse datoteke, ki jih +urejate. Avtomatièno shranjena datoteka se od izvorne razlikuje po +znaku ,#` na zaèetku in koncu imena: èe se je va¹a datoteka imenovala +,,hello.c``, se avtomatièno shranjena datoteka imenuje +,,#hello.c#``. Ko normalno shranite datoteko, avtomatièno shranjena +datoteka ni veè potrebna, in Emacs jo pobri¹e. + +Èe res pride do izgube podatkov v pomnilniku, lahko povrnete avtomatièno +shranjeno besedilo tako, da normalno poi¹èete datoteko (pravo ime +datoteke, ne ime avtomatièno shranjene datoteke), zatem pa vtipkate M-x +recover file. Ko vas vpra¹a za potrditev, vtipkajte yes +za nadaljevanje in povrnitev avtomatièno shranjenenih podatkov. + + +* ODZIVNO PODROÈJE +------------------ + +Kadar Emacs opazi, da poèasi vtipkavate ukaz, odpre v zadnji vrstici +na dnu zaslona odzivno podroèje in v njem sproti prikazuje natipkano. + + +* STATUSNA VRSTICA +------------------ + +Vrstica nad odzivnim podroèjem je statusna vrstica. Ta ka¾e verjetno +nekaj podobnega kot: + +--:** TUTORIAL (Fundamental)--58%---------------------- + +V njej so izpisani pomembni podatki o stanju Emacsa in besedilu, ki ga +urejate. + +Zdaj ¾e veste, kaj pomeni ime datoteke -- to je datoteka, ki ste jo +poiskali. Oznaka --NN%-- pomeni, da je nad vrhom zaslona ¹e NN +odstotkov celotne datoteke. Èe je zaèetek datoteke na zaslonu, bo +namesto --00%-- pisalo --Top--. Podobno bo pisalo --Bot--, èe je +zadnja vrstica datoteke na zaslonu. Èe je datoteka, ki jo ogledujete, +tako kratka, da gre vsa na en zaslon, pa bo pisalo --All--. + +Zvezdice na zaèetku vrstice pomenijo, da ste datoteko ¾e spreminjali. +Tik po tem, ko ste odprli ali shranili datoteko, ni nobenih zvezdic, +so samo èrtice. + +Del statusne vrstice znotraj oklepajev vam pove, v kak¹nem naèinu dela +Emacs. Privzeti naèin je osnovni naèin (Fundamental), v katerem ste +sedaj. Fundamental je eden od glavnih naèinov (angl. major +mode). Emacs pozna veliko razliènih glavnih naèinov. Nekateri od njih +so namenjeni pisanju programov, kot na primer Lisp, ali pisanju +besedil, kot npr. Text. Naenkrat je lahko aktiven le en glavni naèin, +njegovo ime pa je vedno izpisano v statusni vrstici, kjer zdaj pi¹e +Fundamental. + +Glavni naèini lahko spremenijo pomen nekaterim ukazom. Obstajajo, +denimo, ukazi za pisanje komentarjev v programu, in ker ima vsak +programski jezik svoje predstave o tem, kako mora komentar izgledati, +mora vsak glavni naèin vnesti komentarje drugaèe. Ker je vsak glavni +naèin ime raz¹irjenega ukaza, lahko tako tudi izbiramo glavni +naèin. Na primer, M-x fundamental-mode vas postavi v naèin +Fundamental. + +Èe nameravate popravljati slovensko (ali angle¹ko) besedilo, kot je na +primer tole, boste verjetno izbrali tekstovni naèin (Text). +>> Vtipkajte M-x text mode. + +Ne skrbite, noben od ukazov, ki ste se jih nauèili, se s tem ne +spremeni kaj dosti. Lahko pa opazite, da Emacs zdaj jemlje opu¹èaje za +dele besed, ko se premikate z M-f ali M-b. V osnovnem naèinu jih je +obravnaval kot meje med besedami. + +Glavni naèini navadno poèenjajo majhne spremembe, kot je ta: veèina +ukazov ,,opravi isti posel``, vendar pa to poènejo na razlièen naèin. + +Dokumentacijo o trenutno aktivnem glavnem naèinu dobite z ukazom C-h m. + +>> Uporabite C-u C-v enkrat ali veèkrat, toliko, da bo ta vrstica blizu + vrha zaslona. +>> Vtipkajte C-h m, da vidite, v èem se tekstovni naèin (Text) razlikuje + od osnovnega (Fundamental). +>> Vtipkajte C-x 1, da umaknete dokumentacijo z zaslona. + +Glavnim naèinom pravimo glavni naèini zato, ker obstajajo tudi +podnaèini (angl. minor modes). Podnaèini ne nadome¹èajo glavnih +naèinom, ampak le spreminjajo njihovo obna¹anje. Podnaèine lahko +aktiviramo ali deaktiviramo neodvisno od glavnega naèina in neodvisno +od ostalih podnaèinov. Tako lahko ne uporabljate nobenega podnaèina, +en podnaèin, ali kombinacijo veèih podnaèinov. + +Podnaèin, ki je zelo uporaben, posebno za pisanje besedil, je Auto +Fill. Ko je vklopljen, Emacs med pisanjem avtomatièno deli vrstice na +presledkih med besedami, tako da vrstice niso predolge. + +Vklopite ga lahko z ukazom M-x auto fill mode. Ko je +vklopljen, ga lahko izklopite z istim ukazom, M-x +auto fill mode. Z istim ukazom torej preklapljamo +(angl. toggle) med vklopljenim in izklopljenim stanjem. + +>> Vtipkajte zdaj M-x auto fill mode. Potem zaènite tipkati "asdf asdkl + sdjf sdjkf"... dokler ne opazite, da je Emacs razbil vrstico na dve. + Med tipkanjem mora biti dovolj presledkov, saj Auto Fill prelamlja + vrstice samo na presledkih. + +©irina besedila je navadno postavljena na 70 znakov, kar pa lahko +spremenite z ukazom C-x f. Novo ¹irino morate podati kot ¹tevilèni +argument. + +>> Vtipkajte C-x f in argument 20. (C-u 2 0 C-x f). Zatem vtipkajte + nekaj besedila in poglejte, èe bo Emacs res delil vrstice pri 20 + znakih. Potem z ukazom C-x f postavite mejo nazaj na 70. + +Auto Fill deluje le, kadar pi¹ete novo besedilo, ne pa, +kadar popravljate ¾e napisan odstavek. +Tak odstavek lahko poravnate tako, da kazalèek premaknete nekam +znotraj odstavka in uka¾ete M-q (Meta-q). + +>> Premaknite kazalèek v prej¹nji odstavek in izvedite M-q. + + +* ISKANJE +--------- + +Emacs lahko v besedilu poi¹èe niz znakov (zaporedje znakov ali besed), +naprej ali nazaj po besedilu. Iskanje spada v skupino ukazov za +premikanje kazalèka, saj premakne kazalèek na kraj v besedilu, kjer je +na¹el iskani niz. + +Iskanje v Emacsu je morda nekoliko drugaèno od tistega, ki ste ga +navajeni, in sicer je ,,inkrementalno``. To pomeni, da se iskanje +odvija hkrati s tem, ko tipkate iskani niz. + +Ukaza za iskanje sta C-s za iskanje naprej po datoteki in C-r za +iskanje nazaj po datoteki. POÈAKAJTE! Ne preizku¹ajte jih ¹e ta hip! + +Ko boste natipkali C-s, boste opazili niz ,,I-search`` kot pozivnik +v pogovornem vmesniku. To vam pove, da je Emacs v inkrementalnem iskanju +in vas èaka, da zaènete tipkati, kar i¹èete. zakljuèi iskanje. + +>> Pritisnite zdaj C-s. POÈASI, èrko za èrko, vtipkajte besedo + ,,kazalèek``. Za vsako vtipkano èrko se ustavite in si oglejte, kaj + se je zgodilo s kazalèkom. +>> ©e enkrat pritisnite C-s, da poi¹èete naslednji ,,kazalèek``. +>> ©estkrat pritisnite in opazujte, kako se premika kazalèek. +>> Konèajte iskanje s tipko . + +Ste videli, kaj se je zgodilo? Emacs pri inkrementalnem iskanju sku¹a +poiskati niz, ki ste ga natipkali do tistega hipa. Da poi¹èete +naslednje mesto, kjer se pojavi ,,kazalèek``, samo ¹e enkrat +pritisnete C-s. Èe takega mesta ni, Emacs èivkne in vam sporoèi, da +iskanje ni uspelo. Tudi C-g prekine iskanje. + +OPOZORILO: Na nekaterih sistemih bo s pritiskom na C-s ekran +zmrznil. To je znak, da je operacijski sistem prestregel znak C-s in +ga interpretiral kot znak za prekinitev toka podatkov, namesto da bi +ga posredoval programu Emacs. Ekran ,,odtajate`` s pritiskom na +C-q. Potem si oglejte razdelek ,,Spontaneous Entry to Incremental +Search`` v priroèniku za nasvet, kako se spopasti s to nev¹eènostjo. + +Èe sredi inkrementalnega iskanja pritisnete , boste opazili, +da to pobri¹e zadnji znak v iskanem nizu, kazalèek pa se premakne +nazaj na mesto v besedilu, kjer je na¹el kraj¹i niz. Na primer, +predpostavimo, da ste do zdaj natipkali ,,ka`` in je kazalèek na +mestu, kjer se prviè pojavi ,,ka``. Èe zdaj pritisnete , boste +s tem v pogovornem vmesniku izbrisali ,a`, hkrati pa se bo kazalèek +postavil na mesto, kjer je prviè na¹el ,k`, preden ste natipkali ¹e +,a`. + +Èe sredi iskanja vtipkate katerikoli kontrolni znaki ali metaznak +(razen tistih, ki imajo poseben pomen pri iskanju, to sta C-s in C-r), +se iskanje prekine. + +C-s zaène iskati na mestu v datoteki, kjer trenutno stoji kazalèek, in +i¹èe do konca datoteke. Èe bi radi iskali proti zaèetku datoteke, +namesto C-s vtipkamo C-r. Vse, kar smo povedali o ukazu C-s, velja +tudi za C-r, le smer iskanja je obrnjena. + + +* VEÈ OKEN NA ZASLONU +--------------------- + +Ena simpatiènih lastnosti Emacsa je, da zna hkrati prikazati veè oken +na ekranu, tudi èe ne delamo v grafiènem naèinu. + +>> Premaknite kazalèek v to vrstico in vtipkajte C-u 0 C-l. +>> Zdaj vtipkajte C-x 2, da razdelite zaslon na dve okni. + V obeh oknih imate odprt ta priroènik. Kazalèek je ostal v zgornjem + oknu. +>> Pritisnite C-M-v za listanje v spodnjem oknu. + (Èe nimate tipke Meta, tipkajte ESC C-v). +>> Vtipkajte C-x o (o kot ,,other``, drugi), da preselite kazalèek v + spodnje okno. +>> S C-v in M-v se v spodnjem oknu premikate po vsebini datoteke. + Zgornje okno ¹e vedno ka¾e ta navodila. +>> Ponovni C-x o vas vrne v zgornje okno. Kazalèek se je vrnil na + mesto, kjer je bil, preden smo skoèili v spodnje okno. + +Z ukazom C-x o lahko preklapljamo med okni. Vsako okno si zapomni, kje +v oknu je ostal kazalèek, samo trenutno aktivno okno pa kazalèek tudi +v resnici prika¾e. Vsi obièajni ukazi za urejanje, ki smo se jih +nauèili, veljajo za aktivno okno. + +Ukaz C-M-v je zelo uporaben, kadar urejamo besedilo v enem oknu, +drugega pa uporabljamo samo za pomoè. Kazalèek ostaja ves èas v oknu, +v katerem urejamo, po vsebini spodnjega okna pa se vseeno lahko +premikamo, ne da bi morali venomer skakati iz enega okna v drugega. + +C-M-v je primer znaka CONTROL-META. Èe imate v resnici tipko Meta (na +PC navadno levi Alt), lahko vtipkate C-M-v tako, da dr¾ite pritisnjeni +tako CONTROL kot META, medtem ko vtipkate v. Ni pomembno, katero od +tipk, CONTROL ali META, pritisnete prvo, saj obe delujeta ¹ele, ko +pritisnete znak, ki sledi (v zgornjem primeru ,v`). + +Nasprotno pa je vrstni red pritiskanja pomemben, èe nimate tipke META +in namesto nje uporabljate ESC. V tem primeru morate najprej +pritisniti ESC, potem pa Control-v. Obratna kombinacija, Control-ESC v ne +deluje. To je zato, ker je ESC znak sam po sebi, ne pa modifikator, +kot sta CONTROL in META. + +>> V zgornjem oknu vtipkajte C-x 1, da se znebite spodnjega okna. + +(Èe bi vtipkali C-x 1 v spodnjem oknu, bi se znebili +zgornjega. Razmi¹ljajte o tem ukazu kot ,,Obdr¾i samo eno okno, in +sicer tisto, v katerem sem zdaj.``) + +Seveda ni nujno, da obe okni ka¾eta isto delovno podroèje. Èe v enem +oknu izvedete C-x C-f in poi¹èete novo datoteko, se vsebina drugega +okna ne spremeni. V vsakem oknu lahko neodvisno obdelujete drugo +datoteko. + +Pa ¹e ena pot, kako v dveh oknih prika¾ete dve razlièni datoteki: + +>> Vtipkajte C-x 4 C-f, in na pozivnik vtipkajte ime ene va¹ih + datotek. Konèajte z . Odpre se ¹e eno okno in izbrana + datoteka se pojavi v drugem oknu. Tudi kazalèek se preseli v drugo + okno. + +>> Vtipkajte C-x o, da se vrnete nazaj v zgornje okno, in C-x 1, da + zaprete spodnje okno. + + +* REKURZIVNI NIVOJI UREJANJA +---------------------------- + +Vèasih boste pri¹li v nekaj, èemur se pravi ,,rekurzivni nivo +urejanja``. To se vidi po tem, da v statusni vrstici oglati oklepaji +oklepajo ime glavnega naèina. V osnovnem naèinu bi, na primer, videli +[(Fundamental)] namesto (Fundamental). + +Iz rekurzivnega nivoja urejanja se re¹ite, èe vtipkate ESC ESC ESC. To +zaporedje je vsenamenski ukaz ,,pojdi ven``. Uporabite ga lahko tudi +za ukinjanje odveènih oken, ali vrnitev iz pogovornega vmesnika. + +>> Pritisnite M-x, da odprete pogovorni vmesnik, zatem pa vtipkajte + ESC ESC ESC, da pridete ven iz njega. + +Z ukazom C-g ne morete iz rekurzivnega nivoja urejanja, ker C-g +preklièe ukaze ali argumente ZNOTRAJ rekurzivnega nivoja. + + +* DODATNA POMOÈ +--------------- + +V tem uvodu smo posku¹ali zbrati dovolj informacij, da lahko zaènete +Emacs uporabljati. Emacs ponuja toliko, da bi bilo nemogoèe vse to +zbrati tukaj. Verjetno pa bi se vseeno radi nauèili kaj o ¹tevilnih +koristnih mo¾nostih, ki jih ¹e ne poznate. Emacs ima ¾e vgrajene +veliko dokumentacije, do katere lahko pridete s pritiskom na CTRL-h (h +kot ,,help``, pomoè). + +Za pomoè pritisnete C-h, potem pa vtipkate znak, ki pove, kak¹no pomoè +¾elite. Èe ste poplnoma izgubljeni, vtipkajte C-h ? in Emacs vam bo +povedal, kak¹na pomoè je sploh na voljo. Èe ste vtipkali C-h, pa ste +si premislili, lahko ukaz preklièete s C-g. + +(Ponekod se znak C-h preslika v kaj drugega. To ni dobro, in v takem +primeru se prito¾ite sistemskemu vzdr¾evalcu. Medtem pa, èe C-h ne +prika¾e sporoèila o pomoèi na dnu zaslona, namesto tega poskusite +pritisniti tipko F1 ali pa vtipkajte M-x help .) + +Najosnovnej¹i tip pomoèi prika¾e C-h c. Pritisnite C-h, tipko c, zatem +pa ukazni znak ali zaporedje ukaznih znakov, in Emacs bo izpisal +kratek opis ukaza. + +>> Vtipkajte C-h c Control-p. + Izpi¹e se nekaj takega kot + + C-p runs the command previous-line + +Ukaz je izpisal ime funkcije, ki izvede ukaz. Imena funkcij +uporabljamo, kadar pi¹emo prilagoditve in raz¹iritve Emacsa. Ker pa so +navadno imena funkcij izbrana tako, da kaj povedo o tem, kaj funkcija +poène, bo verjetno to tudi dovolj za kratko osve¾itev, èe ste se z +ukazom ¾e kdaj sreèali. + +Ukazu C-h lahko sledi tudi zaporedje znakov, kot na primer C-x C-s, +ali, èe nimate tipke META, v. + +Za veè informacij o ukazu vtipkajte C-h k namesto C-h c. + +>> Vtipkajte C-h k Control-p. + +To odpre novo okno in v njem prika¾e dokumentacijo o funkciji, obenem +z njenim imenom. Ko ste opravili, vtipkajte C-x 1, da se znebite okna +z pomoèjo. Tega seveda ni potrebno napraviti takoj, ampak lahko +urejate, medtem ko imate odprto okno s pomoèjo, in ga zaprete, ko ste +konèali. + +Sledi ¹e nekaj uporabnih mo¾nosti, ki jih ponuja pomoè: + + C-h f Opi¹i funkcijo. Kot argument morate podati ime + funkcije. + +>> Poskusite C-h f previous-line. + To izpi¹e vse podatke, ki jih ima Emacs o funkciji, ki izvede ukaz C-p. + + C-h a Apropos. Vtipkajte kljuèno besedo in Emacs bo izpisal + vse ukaze, ki vsebujejo to kljuèno besedo. Vse te + ukaze lahko priklièete z Meta-x. Pri nekaterih ukazih + bo Apropos izpisal tudi eno ali dvoznakovno + zaporedje, s katerim dose¾ete isti uèinek. + +>> Vtipkajte C-h a file. + +To odpre novo okno, v katerem so vsa dolga imena ukazov, ki vsebujejo +,,file`` v imenu. Izvedete jih lahko z M-x. Pri nekaterih se izpi¹e +tudi kratek ukaz, npr. C-x C-f ali C-x C-w pri ukazih find-file in +write-file. + +>> Pritisnite C-M-v, da se sprehajate po oknu s pomoèjo. Poskusite + nekajkrat. + +>> Vtipkajte C-x 1, da zaprete okno s pomoèjo. + + +* ZAKLJUÈEK +----------- + +Zapomnite si, da Emacs zapustite z ukazom C-x C-c. Èe bi radi samo +zaèasno skoèili v ukazno lupino in se kasneje vrnili v Emacs, pa +storite to z ukazom C-z. + +Ta uèbenik je napisan z namenom, da bi bil razumljiv vsem novincem v +Emacsu. Èe se vam kaj ne zdi jasno napisano, ne valite krivde nase - +prito¾ite se! + + +RAZMNO®EVANJE IN RAZ©IRJANJE +---------------------------- + +Angle¹ki izvirnik tega uvoda v Emacs je naslednik dolge vrste tovrstnih +besedil, zaèen¹i s tistim, ki ga je Stuart Cracraft napisal za izvorni +Emacs. V sloven¹èino ga je prevedel Primo¾ Peterlin. + +To besedilo, kot sam GNU Emacs, je avtorsko delo, in njegovo +razmno¾evanje in raz¹irjanje je dovoljeno pod naslednjimi pogoji: + +Copyright (c) 1985, 1996, 1997 Free Software Foundation + + Dovoljeno je izdelovati in raz¹irjati neokrnjene kopije tega spisa + v kakr¹nikoli obliki pod pogojem, da je ohranjena navedba o + avtorstvu in to dovoljenje, ter da distributer dovoljuje prejemniku + nadaljnje raz¹irjanje pod pogoji, navedenimi v tem dovoljenju. + + Pod pogoji iz prej¹njega odstavka je dovoljeno raz¹irjati + spremenjene verzije tega spisa ali njegovih delov, èe je jasno + oznaèeno, kdo je nazadnje vnesel spremembe. + +Pogoji za razmno¾evanje in raz¹irjanje samega Emacsa so malo drugaèni, +a v istem duhu. Prosimo, preberite datoteko COPYING in potem dajte +kopijo programa GNU Emacs svojim prijateljem. Pomagajte zatreti +obstrukcionizem (,,lastni¹tvo``) v programju tako, da uporabljate, +pi¹ete in delite prosto programje! + +;;; Local Variables: +;;; coding: iso-latin-2 +;;; End: diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index bd5d443..cf05781 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,12 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + +2005-09-18 Mike Alexander + + * installexe.sh: Don't add an exe extention to a file that already + has one. Patch from Rick Rankin. + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/lib-src/installexe.sh b/lib-src/installexe.sh index d971b09..1698125 100644 --- a/lib-src/installexe.sh +++ b/lib-src/installexe.sh @@ -5,11 +5,16 @@ shift tstr="" -while [ $# -gt 0 ] +while [[ $# -gt 0 ]] do - if [ -f $1.exe ] + if [[ -f $1.exe ]] then - tstr="$tstr$1.exe $2.exe" + if [[ "$2" == *.exe ]] + then + tstr="$tstr$1 $2" + else + tstr="$tstr$1.exe $2.exe" + fi shift 2 else tstr="$tstr$1 " diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 170a5d5..f913b9e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,91 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + +2005-10-28 Adrian Aichner + + * package-get.el (package-get-download-sites): Update reflecting + latest http://www.xemacs.org/Releases/ information generated by + xemacs-builds/adrian/website/package-get-2-download-sites.el. + * package-get.el (package-get-pre-release-download-sites): Ditto. + +2005-02-28 Simon Josefsson + + * about.el (xemacs-hackers): Add jas. + (about-other-current-hackers): Likewise. + (about-url-alist): Add URL for jas. + (about-personal-info): Document jas. + (about-hacker-contribution): Describe jas contributions. + +2005-03-25 Ralf Angeli + + * easymenu.el (easy-menu-remove): As described in + E1D4Nn5-0001lq-EU@neutrino.iwi.uni-sb.de; don't strip everything + except the "Command" menu from mode-popup-menu. + +2005-03-25 Ralf Angeli + + * font.el (font-spatial-to-canonical): Correct calculation of + return value for pixel-based input value. + +2002-05-13 Adrian Aichner + + * code-process.el (call-process): Process-related docstring + improvements spurred by Norbert Koch. + * code-process.el (call-process-region): Ditto. + * code-process.el (start-process): Ditto. + +2005-10-09 Adrian Aichner + + * finder.el (finder-find-library): Return filename actually + searched for. + +2005-10-10 Steve Youngs + + * help.el (view-emacs-news): Use `expand-file-name' instead of + `locate-data-file' as the latter will find any "NEWS" files that + might exist in packages _before_ the one in core. + +2005-06-06 Adrian Aichner + + * package-get.el (package-get-init-package): + package-get-init-package buglet (21.4.17) by Jeff Mincy + fixing false temporary load-path shadows reported + after package installation and simplifying code. + +2005-10-18 Ville Skyttä + + * package-get.el (package-get-download-sites): Sync mirrors list + with the XEmacs website. + (package-get-pre-release-download-sites): Ditto. + +2005-04-06 Stephen J. Turnbull + + * derived.el (derived-mode-merge-syntax-tables): + Revert my 21.5-only patch of 2003-07-18 which slipped in + through Jerry James's patch of 2004-06-07. + +2005-02-23 Adrian Aichner + + * cmdloop.el (keyboard-quit): Remove workaround for + `region-active-p' not making sure active region is in current + buffer now that it does. + * minibuf.el (minibuffer-keyboard-quit): Ditto. + * simple.el (region-active-p): `region-active-p' to only return t + when active region is in current buffer. + +2005-02-21 Norbert Koch + + * package-ui.el (pui-list-packages): MF21.5, adapt to longer + package names, quell a byte-compiler warning, doc fix. + +2005-02-16 Aidan Kehoe + + * buffer.el (pop-to-buffer): + * window-xemacs.el (display-buffer): + Document use of `same-window-buffer-names,' `same-window-regexps' + by pop-to-buffer and display-buffer. + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/lisp/about.el b/lisp/about.el index 3d1d5af..e6e7d58 100644 --- a/lisp/about.el +++ b/lisp/about.el @@ -1,6 +1,6 @@ ;;; about.el --- the About The Authors page (shameless self promotion). -;; Copyright (c) 1997 Free Software Foundation, Inc. +;; Copyright (c) 1997, 2005 Free Software Foundation, Inc. ;; Copyright (C) 2001 Ben Wing. ;; Keywords: extensions @@ -123,6 +123,7 @@ (hobley "David hobley" "hobley@xemacs.org") (jan "Jan Vroonhof" "jan@xemacs.org") (jareth "Jareth Hein" "jareth@xemacs.org") + (jas "Simon Josefsson" "simon@xemacs.org") (jason "Jason R. Mastaler" "jason@xemacs.org") (jens "Jens Lautenbacher" "jens@xemacs.org") (jmiller "Jeff Miller" "jmiller@xemacs.org") @@ -178,7 +179,7 @@ (defvar about-once-and-future-hackers '(ajc baw bw chr cthomp darrylo devin dkindred dmoore eb hbs hmuller - hobley jens juhp jwz kyle marcpa mcook mly ograf pelegri pez + hobley jas jens juhp jwz kyle marcpa mcook mly ograf pelegri pez rickc rose rossini slb stig stigb thiessel vladimir)) ;; The CAR of alist elements is a valid argument to `about-url-link'. @@ -201,6 +202,7 @@ (dv . "http://www.lrde.epita.fr/~didier/") (fabrice . "http://www.ese-metz.fr/~popineau/") (fptex . "http://www.fptex.org/") + (jas . "http://josefsson.org/") (jason . "http://www.mastaler.com/") (juhp . "http://www.01.246.ne.jp/~juhp/") (jwz . "http://www.jwz.org/") @@ -1059,6 +1061,25 @@ portable, implements a language, includes a non-trivial bit of graphics and a garbage collector, but is multithreaded to boot! Unfortunately his XEmacs time is directly limited by the amount of traffic on the M40.\n")) + (jas + (widget-insert "\ + +Simon lives in Stockholm where he has discovered that computers +can be a powerful procrastinating tool. Combined with a +frustrating desire to see computers simply work, he spends most +of his time complaining. Occasionally he rises up to the task +and produces something that others may complain about, which +brings him increased satisfaction with every bug report. Today +he is pretending to be a network security guy, with a preference +for standardization issues, while secretly longing to start a +cafe or becoming a theoretical computer scientist. His personal +interest is literature, and to some extent traveling, but will +try anything for fun, such as juggling, skiing, wine, and +long-distance biking. + +See: ") + (about-url-link 'jas nil "Visit Simon's homepage") + (widget-insert ".\n")) (jareth (widget-insert "\ Jareth Hein is a mountain boy who abandoned his home state of Colorado @@ -1609,6 +1630,14 @@ of the XEmacs custom subsystem and gnuserv.\n")) (widget-insert "\ Owner of cvs.xemacs.org, the machine that holds the XEmacs CVS repository, and author of some of the graphics code in XEmacs.\n")) + (jas + (widget-insert "\ +Wrote and/or integrated several packages for Gnus, such as +support for IMAP, Sieve, format=flowed, GnuTLS, S/MIME, and PGP. +Irregularly synchronizes lisp code between Emacs and XEmacs. He +maintains the mail-lib, sieve, sasl, pgg and ecrypto XEmacs +packages. Operates the secondary DNS and mail server for +xemacs.org.\n")) (jason (widget-insert "\ Beta tester, manager of the various XEmacs mailing lists and binary diff --git a/lisp/auto-autoloads.el b/lisp/auto-autoloads.el index 670a8c8..88caef1 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") ("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 (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/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") ("Germany (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/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 (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages") ("Slovakia (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages") ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ("US (ibiblio.org)" "ibiblio.org" "pub/packages/editors/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") ("US (utk.edu)" "ftp.sunsite.utk.edu" "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") ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/packages") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") ("Taiwan (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/packages") ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ("US (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/packages") ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages") ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site. SITE-NAME\nis the internet address of the download site. DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get) -(defcustom package-get-pre-release-download-sites '(("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/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/experimentsl/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 (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/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") ("Germany Pre-Releases (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/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 (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Saudi Arabia Pre-Releases (sa.xemacs.org)" "ftp.sa.xemacs.org" "pub/mirrors/ftp.xemacs.org/xemacs/xemacs-21.5/experimental/packages") ("Slovakia Pre-Releases (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/beta/experimental/packages") ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/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") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (ibiblio.org)" "ibiblio.org" "pub/packages/editors/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") ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu" "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") ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/beta/experimental/packages") ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/beta/experimental/packages") ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/beta/experimental/packages") ("Taiwan Pre-Releases (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/beta/experimental/packages") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/beta/experimental/packages") ("US Pre-Releases (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/beta/experimental/packages")) "*List of remote sites available for downloading \"Pre-Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site. SITE-NAME\nis the internet address of the download site. DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Pre-Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get) (defcustom package-get-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/buffer.el b/lisp/buffer.el index 983a55e..057583b 100644 --- a/lisp/buffer.el +++ b/lisp/buffer.el @@ -71,7 +71,12 @@ If optional second arg NOT-THIS-WINDOW-P is non-nil, insist on finding another window even if BUFNAME is already visible in the selected window. If optional third arg is non-nil, it is the frame to pop to this buffer on. -If `focus-follows-mouse' is non-nil, keyboard focus is left unchanged." +If `focus-follows-mouse' is non-nil, keyboard focus is left unchanged. + +Buffers with names that are members of the `same-window-buffer-names' +list, or that match an element of the `same-window-regexps' list are +treated specially by this function--they are always selected in the +same window rather than in a different one." ;; #ifdef I18N3 ;; #### Doc string should indicate that the buffer name will get ;; translated. diff --git a/lisp/cmdloop.el b/lisp/cmdloop.el index 9e9a56a..6d972de 100644 --- a/lisp/cmdloop.el +++ b/lisp/cmdloop.el @@ -70,8 +70,7 @@ If this character is typed at top-level, this simply beeps. If `zmacs-regions' is true, and the zmacs region is active in this buffer, then this key deactivates the region without beeping or signalling." (interactive) - (if (and (region-active-p) - (eq (current-buffer) (zmacs-region-buffer))) + (if (region-active-p) ;; pseudo-zmacs compatibility: don't beep if this ^G is simply ;; deactivating the region. If it is inactive, beep. nil diff --git a/lisp/code-process.el b/lisp/code-process.el index 1b493d5..1d9208a 100644 --- a/lisp/code-process.el +++ b/lisp/code-process.el @@ -50,6 +50,8 @@ or a cons of coding systems which are used as above.") The program's input comes from file INFILE (nil means `/dev/null'). Insert output in BUFFER before point; t means current buffer; nil for BUFFER means discard it; 0 means discard and don't wait. +If BUFFER is a string, then find or create a buffer with that name, +then insert the output in that buffer, before point. BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case, REAL-BUFFER says what to do with standard output, as above, while STDERR-FILE says what to do with standard error in the child. @@ -100,6 +102,8 @@ Delete the text if fourth arg DELETEP is non-nil. Insert output in BUFFER before point; t means current buffer; nil for BUFFER means discard it; 0 means discard and don't wait. +If BUFFER is a string, then find or create a buffer with that name, +then insert the output in that buffer, before point. BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case, REAL-BUFFER says what to do with standard output, as above, while STDERR-FILE says what to do with standard error in the child. @@ -158,10 +162,10 @@ found, they default to `nil' for both input and output." Args are NAME BUFFER PROGRAM &rest PROGRAM-ARGS NAME is name for process. It is modified if necessary to make it unique. BUFFER is the buffer or (buffer-name) to associate with the process. - Process output goes at end of that buffer, unless you specify - an output stream or filter function to handle the output. - BUFFER may be also nil, meaning that this process is not associated - with any buffer +Process output goes at end of that buffer, unless you specify +an output stream or filter function to handle the output. +BUFFER may also be nil, meaning that this process is not associated +with any buffer. Third arg is program file name. It is searched for as in the shell. Remaining arguments are strings to give program as arguments. diff --git a/lisp/derived.el b/lisp/derived.el index 9f3dfc7..3ca8e03 100644 --- a/lisp/derived.el +++ b/lisp/derived.el @@ -421,20 +421,12 @@ Where the new table already has an entry, nothing is copied from the old one." ;; check for inheritance. (map-char-table #'(lambda (key value) - (let ((newval (get-range-char-table key new 'multi))) - (cond ((eq newval 'multi) ; OK, dive into the class hierarchy - (map-char-table - #'(lambda (key1 value1) - (when (eq ?@ (char-syntax-from-code - (get-range-char-table key new ?@))) - (put-char-table key1 value new)) - nil) - new - key)) - ((eq ?@ (char-syntax-from-code newval)) ;; class at once - (put-char-table key value new)))) - nil) - old)) + (if (eq ?@ (char-syntax-from-code value)) + (map-char-table #'(lambda (key1 value1) + (put-char-table key1 value1 new)) + old + key))) + new)) ;; Merge an old abbrev table into a new one. ;; This function requires internal knowledge of how abbrev tables work, diff --git a/lisp/easymenu.el b/lisp/easymenu.el index 6673789..93c9d58 100644 --- a/lisp/easymenu.el +++ b/lisp/easymenu.el @@ -203,7 +203,7 @@ is a list of menu items, as above." "Remove MENU from the current menu bar." (when (featurep 'menubar) (setq easy-menu-all-popups (delq menu easy-menu-all-popups) - mode-popup-menu (if (< (length easy-menu-all-popups) 1) + mode-popup-menu (if (> (length easy-menu-all-popups) 1) (cons (easy-menu-title) (reverse easy-menu-all-popups)) (let ((same-as-menu diff --git a/lisp/finder.el b/lisp/finder.el index cbed603..6124ce8 100644 --- a/lisp/finder.el +++ b/lisp/finder.el @@ -287,7 +287,7 @@ arguments compiles from `load-path'." found) (while (and dirs (not found)) (if (file-exists-p (expand-file-name (concat file ".el") (car dirs))) - (setq found (expand-file-name file (car dirs))) + (setq found (expand-file-name (concat file ".el") (car dirs))) (if (file-exists-p (expand-file-name file (car dirs))) (setq found (expand-file-name file (car dirs))))) (setq dirs (cdr dirs))) diff --git a/lisp/font.el b/lisp/font.el index 6b27b64..02bfd9c 100644 --- a/lisp/font.el +++ b/lisp/font.el @@ -310,8 +310,8 @@ Canonical sizes are in points. If SPEC is null, nil is returned. If SPEC is a number, it is interpreted as the desired point size and returned unchanged. Otherwise SPEC must be a string consisting of a number and an optional type. The type may be the strings \"px\", \"pix\", or \"pixel\" (pixels), \"pt\" or -\"point\" (points), \"pa\" or \"pica\" (picas), \"in\" or \"inch\" (inches), \"cm\" -(centimeters), or \"mm\" (millimeters). +\"point\" (points), \"pa\" or \"pica\" (picas), \"in\" or \"inch\" (inches), +\"cm\" (centimeters), or \"mm\" (millimeters). 1 in = 2.54 cm = 6 pa = 25.4 mm = 72 pt. Pixel size is device-dependent." (cond @@ -350,7 +350,7 @@ The type may be the strings \"px\", \"pix\", or \"pixel\" (pixels), \"pt\" or (setq num (string-to-number spec)) (cond ((member type '("pixel" "px" "pix")) - (setq retval (* num (/ pix-width mm-width) (/ 25.4 72.0)))) + (setq retval (* num (/ mm-width pix-width) (/ 72.0 25.4)))) ((member type '("point" "pt")) (setq retval num)) ((member type '("pica" "pa")) diff --git a/lisp/help.el b/lisp/help.el index 2ef37f9..1ac1780 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -736,7 +736,7 @@ of the key sequence that ran this command." (defun view-emacs-news () "Display info on recent changes to XEmacs." (interactive) - (Help-find-file (locate-data-file "NEWS"))) + (Help-find-file (expand-file-name "NEWS" data-directory))) (defun xemacs-www-page () "Go to the XEmacs World Wide Web page." diff --git a/lisp/minibuf.el b/lisp/minibuf.el index d6dc4c4..7e4c7c9 100644 --- a/lisp/minibuf.el +++ b/lisp/minibuf.el @@ -271,8 +271,7 @@ in `substitute-in-file-name'." If `zmacs-regions' is true, and the zmacs region is active in this buffer, then this key deactivates the region without beeping." (interactive) - (if (and (region-active-p) - (eq (current-buffer) (zmacs-region-buffer))) + (if (region-active-p) ;; pseudo-zmacs compatibility: don't beep if this ^G is simply ;; deactivating the region. If it is inactive, beep. nil diff --git a/lisp/package-get.el b/lisp/package-get.el index c0d29a4..4580677 100644 --- a/lisp/package-get.el +++ b/lisp/package-get.el @@ -204,6 +204,7 @@ directory." ("US (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/packages") ;; In alphabetical order of Country, our mirrors... + ("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") @@ -211,7 +212,7 @@ directory." ("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 (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/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") @@ -219,31 +220,32 @@ directory." ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages") - ("Germany (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages") + ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") + ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/packages") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") - ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") - ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") - ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") +; ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") +; ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") +; ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") - ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages") - ("Slovakia (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages") - ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages") + ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/packages") +; ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("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)" "ibiblio.org" "pub/packages/editors/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") - ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages") +; ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages") ) "*List of remote sites available for downloading packages. List format is '(site-description site-name directory-on-site). @@ -260,23 +262,27 @@ variable actually used to specify package download sites." (defcustom package-get-pre-release-download-sites '( ;; Main XEmacs Site (ftp.xemacs.org) - ("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" + ("US Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ;; In alphabetical order of Country, our mirrors... + ("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/experimentsl/packages") + "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 (ualberta.ca)" "sunsite.ualberta.ca" - "pub/Mirror/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" @@ -291,10 +297,12 @@ variable actually used to specify package download sites." "pub/computing/xemacs/beta/experimental/packages") ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages") - ("Germany Pre-Releases (tu-darmstadt.de)" "ftp.tu-darmstadt.de" - "pub/editors/xemacs/beta/experimental/packages") + ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org" + "pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") + ("Ireland Pre-Releases (heanet.ie)" "ftp.heanet.ie" + "mirrors/ftp.xemacs.org/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" @@ -303,41 +311,43 @@ variable actually used to specify package download sites." "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 (jaist.ac.jp)" "ftp.jaist.ac.jp" - "pub/GNU/xemacs/beta/experimental/packages") - ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org" - "pub/GNU/xemacs/beta/experimental/packages") +; ("Japan Pre-Releases (jaist.ac.jp)" "ftp.jaist.ac.jp" +; "pub/GNU/xemacs/beta/experimental/packages") +; ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org" +; "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") - ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") + ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" + "pub/tools/emacs/xemacs/beta/experimental/packages") + ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" + "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" - "pub/xemacs/beta/experimental/packages") - ("Saudi Arabia Pre-Releases (sa.xemacs.org)" "ftp.sa.xemacs.org" - "pub/mirrors/ftp.xemacs.org/xemacs/xemacs-21.5/experimental/packages") - ("Slovakia Pre-Releases (sk.xemacs.org)" "ftp.sk.xemacs.org" - "pub/mirrors/xemacs/beta/experimental/packages") - ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" - "mirrorsites/ftp.xemacs.org/beta/experimental/packages") + "pub/emacs/xemacs/beta/experimental/packages") +; ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" +; "mirrorsites/ftp.xemacs.org/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)" "ibiblio.org" - "pub/packages/editors/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") - ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu" - "pub/xemacs/beta/experimental/packages")) +; ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu" +; "pub/xemacs/beta/experimental/packages") +) "*List of remote sites available for downloading \"Pre-Release\" packages. List format is '(site-description site-name directory-on-site). SITE-DESCRIPTION is a textual description of the site. SITE-NAME @@ -844,14 +854,7 @@ Return `t' upon complete success, `nil' if any errors occurred." (progn ;; Add lispdir to load-path if it doesn't already exist. ;; NOTE: this does not take symlinks, etc., into account. - (if (let ((dirs load-path)) - (catch 'done - (while dirs - (if (string-equal (car dirs) lispdir) - (throw 'done nil)) - (setq dirs (cdr dirs))) - t)) - (setq load-path (cons lispdir load-path))) + (add-to-list 'load-path (file-name-as-directory lispdir)) (if (not (package-get-load-package-file lispdir "auto-autoloads")) (package-get-load-package-file lispdir "_pkg")) t) diff --git a/lisp/package-ui.el b/lisp/package-ui.el index 9e4eee4..f8ed19a 100644 --- a/lisp/package-ui.el +++ b/lisp/package-ui.el @@ -509,14 +509,15 @@ Designed to be called interactively (from a keypress)." (defun pui-display-maintainer (&optional no-error event) "Display a package's maintainer in the minibuffer." (interactive) - (let (extent pkg-sym info maintainer) + (let (extent ;pkg-sym + info maintainer) (save-excursion (beginning-of-line) (if (setq extent (extent-at (point) (current-buffer) 'pui)) (progn - (setq pkg-sym (extent-property extent 'pui-package) - info (extent-property extent 'pui-info) - maintainer (package-get-info-prop info 'maintainer)) + (setq ;pkg-sym (extent-property extent 'pui-package) + info (extent-property extent 'pui-info) + maintainer (package-get-info-prop info 'maintainer)) (message (format "Maintainer: %s" maintainer))) (if no-error (clear-message nil) @@ -564,7 +565,7 @@ Useful keys: `\\[pui-toggle-package-delete-key]' to select/unselect the current package for removal. `\\[pui-add-required-packages]' to add any packages required by those selected. `\\[pui-install-selected-packages]' to install/delete selected packages. - `\\[pui-display-info]' to display additional information about the package in the modeline. + `\\[pui-display-info]' to display additional information about the package in the minibuffer. `\\[pui-display-maintainer]' to display the package's maintainer in the minibuffer `\\[pui-list-packages]' to refresh the package list. `\\[pui-toggle-verbosity-redisplay]' to toggle between a verbose and non-verbose display. @@ -606,11 +607,11 @@ Warning: No download sites specified. Package index may be out of date. ")) (if pui-list-verbose - (insert " Latest Installed - Package name Vers. Vers. Description + (insert " Latest Installed + Package name Vers. Vers. Description ") - (insert " Latest - Package name Vers. Description + (insert " Latest + Package name Vers. Description ")) (insert sep-string) (setq start (point)) @@ -639,13 +640,13 @@ Warning: No download sites specified. Package index may be out of date. ((numberp current-vers) (setq current-vers (format "%.2f" current-vers)))) (insert - (format "%s %-15s %-5.2f %-5s %s\n" + (format "%s %-20s %-5.2f %-5s %s\n" (car disp) pkg-sym (if (stringp version) (string-to-number version) version) current-vers desc))) - (insert (format "%s %-15s %-5s %s\n" + (insert (format "%s %-20s %-5s %s\n" (car disp) pkg-sym version desc))) (save-excursion diff --git a/lisp/simple.el b/lisp/simple.el index c20c4f8..b0666a1 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3898,7 +3898,7 @@ This correctly caters to the user's setting of `zmacs-regions'." ;; XEmacs (defun region-active-p () - "Return non-nil if the region is active. + "Return non-nil if the region is active in the current buffer. If `zmacs-regions' is true, this is equivalent to `region-exists-p'. Otherwise, this function always returns false. @@ -3908,7 +3908,8 @@ want grayed out when the region is not active. Instead, use this: [ ... ... :active (region-exists-p)] Which correctly caters to the user's setting of `zmacs-regions'." - (and zmacs-regions zmacs-region-extent)) + (and zmacs-regions zmacs-region-extent + (eq (current-buffer) (zmacs-region-buffer)))) (defvar zmacs-activate-region-hook nil "Function or functions called when the region becomes active; diff --git a/lisp/window-xemacs.el b/lisp/window-xemacs.el index 502c6dc..4af7720 100644 --- a/lisp/window-xemacs.el +++ b/lisp/window-xemacs.el @@ -376,6 +376,10 @@ OVERRIDE-FRAME was specified. If `pop-up-frames' is non-nil, make a new frame if no window shows BUFFER. +If the buffer name is a member of the `same-window-buffer-names' list, +or matches one of the `same-window-regexps' expressions, display the +buffer in the currently selected window. + Returns the window displaying BUFFER." (interactive "BDisplay buffer:\nP") diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 0e8b92c..9fa21ce 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,13 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + +2005-03-07 Stephen J. Turnbull + + * lwlib-Xlw.c (build_tabs_in_widget): Correctly disable geometry + negotiation for tab children. + (xlw_create_tab_control): Don't set nonexistent resizable resource. + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/lwlib/lwlib-Xlw.c b/lwlib/lwlib-Xlw.c index 150e168..1e909b6 100644 --- a/lwlib/lwlib-Xlw.c +++ b/lwlib/lwlib-Xlw.c @@ -324,13 +324,21 @@ xlw_update_scrollbar (widget_instance *instance, Widget widget, #ifdef LWLIB_TABS_LUCID /* tab control - lwlib is such an incredible hairy crock. I just cannot believe + [[ lwlib is such an incredible hairy crock. I just cannot believe it! There are random dependencies between functions, there is a total lack of genericity, even though it initially appears to be generic. It should all be junked and begun again. Building tabs are an example - in theory we should be able to reuse a lot of the general stuff because we want to put labels of whatever toolkit we - are using in the tab. Instead we have to hack it by hand. */ + are using in the tab. Instead we have to hack it by hand. ]] + While lwlib is a hairy crock, whoever wrote that seems to misunderstand + Falk's tab control widget. The tab control widget has *two* kinds of + children: *widgets*, which all occupy a *single* pane below the row of + tabs---this is where the labels created in build_tabs_in_widget go, and + *gadgets*, the tabs themselves, which do *not* draw themselves, but + rather are drawn by the control. In fact, in XEmacs the true widget + children are *never* visible! So this case is not a problem in the + design of lwlib, but rather of Falk's widget. -- sjt */ static void xlw_tab_control_callback (Widget w, XtPointer client_data, XtPointer call_data) { @@ -380,9 +388,8 @@ xlw_create_tab_control (widget_instance *instance) widget_value* val = instance->info->val; XtSetArg (al [ac], XtNsensitive, val->enabled); ac++; - XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++; + XtSetArg (al [ac], XtNmappedWhenManaged, False); ac++; XtSetArg (al [ac], XtNorientation, XtorientHorizontal); ac++; - XtSetArg (al [ac], XtNresizable, False); ac++; /* add any args the user supplied for creation time */ lw_add_value_args_to_args (val, al, &ac); @@ -401,15 +408,22 @@ static void build_tabs_in_widget (widget_instance* instance, Widget widget, widget_value* val) { widget_value* cur = val; + Arg al[1]; + + /* Children are always invisible, don't permit resizing. */ + XtSetArg (al[0], XtNresizable, False); + for (cur = val; cur; cur = cur->next) { if (cur->value) { + Widget w; #ifdef LWLIB_WIDGETS_MOTIF - xm_create_label (widget, cur); + w = xm_create_label (widget, cur); #else - xaw_create_label (widget, cur); + w = xaw_create_label (widget, cur); #endif + XtSetValues (w, al, 1); } cur->change = NO_CHANGE; } diff --git a/man/ChangeLog b/man/ChangeLog index 481b609..bafcc7b 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,41 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + +2005-12-03 Adrian Aichner + + * custom.texi (Declaring Variables): Typo fixes. + +2005-01-19 Aidan Kehoe + + * lispref/mule.texi (CCL Example): Detail an implementation of the + web's URL encoding as a CCL coding system example. + +2005-03-26 Aidan Kehoe + + * lispref/mule.texi (CCL Example): + char-int -> char-to-int, and hex 41 is decimal 65, both problems + with my previous patch pointed out by Stephen. + * lispref/mule.texi (The actual coding system): + Give information on the make-coding-system call, and where the + actual package can be found. + +2005-02-23 Aidan Kehoe + + * lispref/searching.texi (Syntax of Regexps): + Mention the \c and \C regular expression constructs; cross + reference to the Category Table documentation. + +2005-02-22 Stephen J. Turnbull + + * lispref/glyphs.texi: Complete reorganization, some content updated. + * lispref/lispref.texi (Top): Update menu to match. + * lispref/extents.texi (Extent Properties): Update xref. + * lispref/faces.texi (Face Properties): Background pixmaps can be + used on GTK and MS Windows. + (Face Convenience Functions): Cross-reference glyph interface. + Background pixmap is an image specifier, not a glyph. + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/man/custom.texi b/man/custom.texi index a3960a8..fc3a9e4 100644 --- a/man/custom.texi +++ b/man/custom.texi @@ -165,13 +165,13 @@ specified default value, @code{saved-value} for a value saved by the user, and @code{variable-documentation} for the documentation string. Use @code{custom-add-option} to specify that a specific function is -useful as an member of a hook. +useful as a member of a hook. @defun custom-add-option symbol option To the variable @var{symbol} add @var{option}. If @var{symbol} is a hook variable, @var{option} should be a hook -member. For other types variables, the effect is undefined." +member. For other types of variables, the effect is undefined." @end defun @node Declaring Faces, Usage for Package Authors, Declaring Variables, Top diff --git a/man/lispref/extents.texi b/man/lispref/extents.texi index ac56b6a..968b835 100644 --- a/man/lispref/extents.texi +++ b/man/lispref/extents.texi @@ -555,7 +555,7 @@ priority over faces later in the list. @xref{Extents and Events}. the extent. This takes precedence over the @code{text-pointer-glyph} and @code{nontext-pointer-glyph} variables. If for any reason this glyph is an invalid pointer, the standard glyphs will be used as -fallbacks. @xref{Mouse Pointer}. +fallbacks. @xref{External Glyphs}. @item detachable (Boolean) Whether this extent becomes detached when all of the text it diff --git a/man/lispref/faces.texi b/man/lispref/faces.texi index 4837ae7..f6d3faa 100644 --- a/man/lispref/faces.texi +++ b/man/lispref/faces.texi @@ -164,7 +164,7 @@ The display table of the face. @item background-pixmap The pixmap displayed in the background of the face. Only used by faces -on X devices. +on GUI devices, currently X11, GTK, and Microsoft Windows. @item underline Underline all text covered by this face. @@ -373,6 +373,14 @@ returned by @code{make-glyph} (@pxref{Glyphs}). The argument may also be a list of the form @code{(@var{width} @var{height} @var{data})} where @var{width} and @var{height} are the size in pixels, and @var{data} is a string, containing the raw bits of the bitmap. + +Similarly to how the glyph's image specifier works @xref{Creating +Glyphs}, you don't create your own image specifier, but rather add +specifications to the existing one. Note that the image instance that is +generated in order to actually display the background pixmap is of type +@code{mono-pixmap}, meaning that it's a two-color image and the +foreground and background of the image get filled in with the +corresponding colors from the face. (#### Is this still true?) @end deffn @deffn Command set-face-font face font &optional locale tag-set how-to-add @@ -393,7 +401,7 @@ specifier of face @var{face}. @end defun @defun face-background-pixmap face &optional locale tag-set exact-p -This function return the background-pixmap glyph object of face +This function returns the background-pixmap image specifier of face @var{face}. @end defun diff --git a/man/lispref/glyphs.texi b/man/lispref/glyphs.texi index 79575a8..b0b4855 100644 --- a/man/lispref/glyphs.texi +++ b/man/lispref/glyphs.texi @@ -1,740 +1,626 @@ @c -*-texinfo-*- @c This is part of the XEmacs Lisp Reference Manual. @c Copyright (C) 1995, 1996 Ben Wing. +@c Copyright (C) 2004 Free Software Foundation, Inc. @c See the file lispref.texi for copying conditions. @setfilename ../../info/glyphs.info @node Glyphs, Annotations, Faces and Window-System Objects, top @chapter Glyphs @cindex glyphs - A @dfn{glyph} is an object that is used for pixmaps, widgets and + A @dfn{glyph} is an object that is used for pixmaps, widgets, and images of all sorts, as well as for things that ``act'' like pixmaps, such as non-textual strings (@dfn{annotations}) displayed in a buffer or in the margins. It is used in begin-glyphs and end-glyphs attached to extents, marginal and textual annotations, overlay arrows (@code{overlay-arrow-*} variables), toolbar buttons, mouse pointers, frame icons, truncation and continuation markers, and the -like. (Basically, any place there is an image or something that acts -like an image, there will be a glyph object representing it.) - - The actual image that is displayed (as opposed to its position or -clipping) is defined by an @dfn{image specifier} object contained -within the glyph. The separation between an image specifier object -and a glyph object is made because the glyph includes other properties -than just the actual image: e.g. the face it is displayed in (for text -images), the alignment of the image (when it is in a buffer), etc. +like. Basically, any place there is an image or something that acts +like an image, there will be a glyph object representing it. @defun glyphp object This function returns @code{t} if @var{object} is a glyph. @end defun @menu -* Glyph Functions:: Functions for working with glyphs. -* Images:: Graphical images displayed in a frame. -* Glyph Types:: Each glyph has a particular type. -* Mouse Pointer:: Controlling the mouse pointer. -* Redisplay Glyphs:: Glyphs controlling various redisplay functions. -* Subwindows:: Inserting an externally-controlled subwindow - into a buffer. -* Glyph Examples:: Examples of how to work with glyphs. +* Glyph Intro:: Glyphs are abstract image specifications. +* Images:: Specifying the appearance of glyphs. +* Using Glyphs:: Creating and displaying glyphs. +* Manipulating Glyphs:: Getting and setting glyph properties. +* Glyph Examples:: Examples of how to work with glyphs. @end menu -@node Glyph Functions -@section Glyph Functions + +@node Glyph Intro +@section Glyph Introduction + + In XEmacs, ``glyph'' does @strong{not} refer to a single unit of textual +display (the XEmacs term for that is @dfn{rune}, and runes are confined +to the internal implementation of redisplay), but rather is an +object encapsulating a graphical element, such as an image or widget (an +active GUI element such as a button or text entry field; X11 calls this a +@dfn{widget}, while MS Windows uses the term @dfn{control}). +This graphical element could appear in a buffer, a margin, a gutter, or +a toolbar, or even externally to XEmacs as a mouse pointer or an icon, +for example. + + On the other hand, by contrast with GNU Emacs 21, an XEmacs glyph is +not ``just'' an image. The actual image that is displayed (as opposed +to its position or clipping) is defined by an ``image specifier'' object +contained within the glyph. The separation between an image specifier +object and a glyph object is made because the glyph includes other +properties than just the actual image: e.g. the face it is displayed in, +the alignment of the image, @emph{etc}. Also, an image specifier is +used in at least one place in XEmacs in lieu of a glyph, namely the +backing pixmap of a face. + + An image specifier is used because glyphs often have locale-specific +semantics. The most important example is semantics determined by the +display device: you can't usefully display a JPEG on stdout, or a color +image on a monochrome display. But because the image property is a +specifier in XEmacs, you can specify that a given glyph appear as a +monochrome image on monochrome displays, a color image on color +displays, and as a string on TTYs. (Specifying a string for the +@code{tty} device locale would give behavior like the @code{ALT} +attribute of an @code{IMG} element in HTML.) Another is semantics +determined by the buffer or mode. (Unfortunately, currently there are +no compelling examples of this for glyphs.) + + All this means that only one global glyph needs to exist for a +particular purpose (e.g. the icon used to represent an iconified frame, +the mouse pointer used over particular areas of a frame, etc.). Often +you need not (and should not!) create your own glyph, but rather modify +an existing one. + + In working with glyphs it is important to keep in mind the distinction +between a locale and a domain. A @dfn{locale} is specified by the +programmer, and is an abstract link between a specification (for a +glyph, its visual appearance) and a displayable object. The displayable +object may be a buffer or a window, or an object containing buffers or +windows such as frame, device, or console. A @dfn{domain} is an actual +display context, which must be concrete enough to enable XEmacs to +identify the device type. (Buffers may be displayed in windows on +different devices, even simultaneously, so a buffer cannot be a domain. +Similarly, the global locale cannot be a domain.) @ref{Specifiers}, for +more information about specifier locales and domains. + + +@node Images +@section Images @menu -* Creating Glyphs:: Creating new glyphs. -* Glyph Properties:: Accessing and modifying a glyph's properties. -* Glyph Convenience Functions:: - Convenience functions for accessing particular - properties of a glyph. -* Glyph Dimensions:: Determining the height, width, etc. of a glyph. +* Image Specifiers:: Specifying an image's appearance. +* Image Instantiator Conversion:: Lazy realization of graphics. +* Image Instantiator Formats:: A catalog of image descriptors. +* Image Instances:: Classes of graphical objects. @end menu -@node Creating Glyphs -@subsection Creating Glyphs -@defun make-glyph &optional spec-list type -This function creates a new glyph object of type @var{type}. +@node Image Specifiers +@subsection Image Specifiers +@cindex image specifiers -@var{spec-list} is used to initialize the glyph's image. It is -typically an image instantiator (a string or a vector; @ref{Image -Specifiers}), but can also be a list of such instantiators (each one in -turn is tried until an image is successfully produced), a cons of a -locale (frame, buffer, etc.) and an instantiator, a list of such conses, -or any other form accepted by @code{canonicalize-spec-list}. -@xref{Specifiers}, for more information about specifiers. - -@var{type} specifies the type of the glyph, which specifies in which -contexts the glyph can be used, and controls the allowable image types -into which the glyph's image can be instantiated. @var{type} should be -one of @code{buffer} (used for glyphs in an extent, the modeline, the -toolbar, or elsewhere in a buffer), @code{pointer} (used for the -mouse-pointer), or @code{icon} (used for a frame's icon), and defaults -to @code{buffer}. @xref{Glyph Types}. - -A glyph in XEmacs does @strong{NOT} refer to a single unit of textual -display (the XEmacs term for this is @dfn{rune}), but rather is an -object encapsulating a graphical element, such as an image or widget (an -element such as a button or text field; @dfn{widget} is the term for -this under X Windows, and it's called a @dfn{control} under MS Windows). -This graphical element could appear in a buffer, a margin, a gutter, or -a toolbar, or as a mouse pointer or an icon, for example. + An image specifier is a description of the actual graphical +realization of a glyph. For example, a typical image description is +@emph{the file system path to a PNG file}. Since redisplay doesn't know +about files, and in any case the image may need to be manipulated +(@emph{e.g.}, a face's background pixmap must be clipped and tiled), the +PNG file must be converted internally to a window system bitmap or +pixmap object. We describe this process by writing that when XEmacs +displays the image, it @dfn{instantiates} the @dfn{image instantiator} +into an @dfn{image instance}. Image instances are an internal object +type (similar to font instances and color instances), describing how the +image appears in a particular domain. On the other hand, image +instantiators, which are just descriptions of how the image should +appear, are represented using Lisp strings or vectors. + +Furthermore the graphical realization will vary, and for some devices +may not even be a bitmapped graphic. These variations may be controlled +by the program by specifying different @dfn{image instantiators} in +different locales. This is implemented with an @dfn{image specifier}, +a specifier whose specifications are image instantiators. + +Image specifiers are rarely if ever found by themselves. However, an +image specifier results from calling @code{glyph-image} on a glyph, or +retrieving the @code{background-pixmap} property of a face, and you can +check if some random object is an image specifier. -Creating a glyph using @code{make-glyph} does not specify @emph{where} -the glyph will be used, but it does specify @emph{what} the glyph will -look like. In particular, @var{spec-list} is used to specify this, and it's -used to initialize the glyph's @code{image} property, which is an image -specifier. (Note that @dfn{image} as used in the context of a glyph's -@code{image} property or in the terms @dfn{image specifier}, @dfn{image -instantiator}, or @dfn{image instance} does not refer to what people -normally think of as an image (which in XEmacs is called a -@dfn{pixmap}), but to any graphical element---a pixmap, a widget, or -even a block of text, when used in the places that call for a glyph.) -The format of the @var{spec-list} is typically an image instantiator (a string -or a vector; @ref{Image Specifiers}), but can also be a list of such -instantiators (each one in turn is tried until an image is successfully -produced), a cons of a locale (frame, buffer, etc.) and an -instantiator, a list of such conses, or any other form accepted by -@code{canonicalize-spec-list}. @xref{Specifiers}, for more information -about specifiers. - -If you're not familiar with specifiers, you should be in order to -understand how glyphs work. The clearest introduction to specifiers -is in the Lispref manual, available under Info. (Choose -Help->Info->Info Contents on the menubar or type C-h i.) You can -also see @code{make-specifier} for a capsule summary. What's important to -keep in mind is that a specifier lets you set a different value for -any particular buffer, window, frame, device, or console. This allows -for a great deal of flexibility; in particular, only one global glyph -needs to exist for a particular purpose (e.g. the icon used to represent -an iconified frame, the mouse pointer used over particular areas of a -frame, etc.), and in these cases you do not create your own glyph, but -rather modify the existing one. +@defun image-specifier-p object +This function returns non-@code{nil} if @var{object} is an image specifier. +@end defun -As well as using @var{spec-list} to initialize the glyph, you can set -specifications using @code{set-glyph-image}. Note that, due to a -possibly questionable historical design decision, a glyph itself is not -actually a specifier, but rather is an object containing an image -specifier (as well as other, seldom-used properties). Therefore, you -cannot set or access specifications for the glyph's image by directly -using @code{set-specifier}, @code{specifier-instance} or the like on the -glyph; instead use them on @code{(glyph-image @var{glyph})} or use the -convenience functions @code{set-glyph-image}, -@code{glyph-image-instance}, and @code{glyph-image}. +@defun make-image-specifier spec-list +This function creates a new image specifier object and initializes it +according to @var{spec-list}. @xref{Specifiers}. +@end defun -Once you have created a glyph, you specify where it will be used as -follows: +This function exists mainly for completeness. In practice, you rarely, +if ever, need to actually create an image specifier. Instead, they are +implicitly created by the initialization of glyphs and faces, and the +specifier member of these objects cannot be changed after +initialization; you may only set the specifications it contains. -@itemize @bullet -@item -To insert a glyph into a buffer, create an extent in the buffer and then -use @code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set -a glyph to be displayed at the corresponding edge of the extent. (It is -common to create zero-width extents for this purpose.) +Image instantiators come in many formats: @code{xbm}, @code{xpm}, +@code{gif}, @code{jpeg}, etc. These denote the format of the data +describing the image. The resulting image instances also come in many +types---@code{mono-pixmap}, @code{color-pixmap}, @code{text}, +@code{pointer}, etc. This refers to the behavior of the image and the +sorts of places it can appear. (For example, a color-pixmap image has +fixed colors specified for it, while a mono-pixmap image comes in two +unspecified shades ``foreground'' and ``background'' that are determined +from the face of the glyph or surrounding text; a text image appears as +a string of text and has an unspecified foreground, background, and +font; a pointer image behaves like a mono-pixmap image but can only be +used as a mouse pointer [mono-pixmap images cannot be used as mouse +pointers]; etc.) -@item -To insert a glyph into the left or right margin of a buffer, first -make sure the margin is visible by setting a value for the specifiers -@code{left-margin-width} or @code{right-margin-width}. (Not strictly necessary -when using margin glyphs with layout policy @code{whitespace}.) Then follow -the same procedure above for inserting a glyph in a buffer, and then -set a non-default layout policy for the glyph using -@code{set-extent-begin-glyph-layout} or @code{set-extent-end-glyph-layout}. -Alternatively, use the high-level annotations API (see -@code{make-annotation}). (In point of fact, you can also use the annotations -API for glyphs in a buffer, by setting a layout policy of @code{text}.) +It is important to keep the distinction between image instantiator +format and image instance type in mind. Typically, a given image +instantiator format can result in many different image instance types. +For example, @code{xpm} can be instanced as @code{color-pixmap}, +@code{mono-pixmap}, or @code{pointer}; whereas @code{cursor-font} can be +instanced only as @code{pointer}. On the other hand, a particular image +instance type can be generated by many different image instantiator +formats (e.g. @code{color-pixmap} can be generated by @code{xpm}, +@code{gif}, @code{jpeg}, etc.). -@item -To insert a glyph into the modeline, just put the glyph directly as one -of the modeline elements. (Unfortunately you can't currently put a begin -glyph or end glyph on one of the modeline extents---they're ignored.) + @xref{Image Instances}, for a more detailed discussion of image +instance types. -@item -To insert a glyph into a toolbar, specify it as part of a toolbar -instantiator (typically set on the specifier @code{default-toolbar}). -See @code{default-toolbar} for more information. (Note that it is -standard practice to use a symbol in place of the glyph list in the -toolbar instantiator; the symbol is evalled to get the glyph list. This -facilitates both creating the toolbar instantiator and modifying -individual glyphs in a toolbar later on. For example, you can change -the way that the Mail toolbar button looks by modifying the value of the -variable @code{toolbar-mail-icon} (in general, @code{toolbar-*-icon}) -and then calling @code{(set-specifier-dirty-flag default-toolbar)}. -(#### Unfortunately this doesn't quite work the way it should; the -change will appear in new frames, but not existing ones. + An image instantiator should be a string or a vector of the form -@item -To insert a glyph into a gutter, create or modify a gutter instantiator -(typically set on the specifier @code{default-gutter}). Gutter -instantiators consist of strings or lists of strings, so to insert a -glyph, create an extent over the string, and use -@code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set a -glyph to be displayed at the corresponding edge of the extent, just like -for glyphs in a buffer. +@example + @code{[@var{format} @var{:keyword} @var{value} ...]} +@end example -@item -To use a glyph as the icon for a frame, you do not actually create a new -glyph; rather, you change the specifications for the existing glyph -@code{frame-icon-glyph}. (Remember that, because of the specifier nature -of glyphs, you can set different values for any particular buffer or -frame.) +i.e. a format symbol followed by zero or more alternating keyword-value +pairs. -@item -To use a glyph as the mouse pointer, in general you do not create a new -glyph, but rather you change the specifications of various existing -glyphs, such as @code{text-pointer-glyph} for the pointer used over -text, @code{modeline-pointer-glyph} for the pointer used over the -modeline, etc. Do an apropos over @code{*-pointer-glyph} to find all of -them. (Note also that you can temporarily set the mouse pointer to some -specific shape by using @code{set-frame-pointer}, which takes an image -instance, as obtained from calling @code{glyph-image-instance} on a glyph -of type @code{pointer} -- either one of the above-mentioned variables or -one you created yourself. (See below for what it means to create a -glyph of type @code{pointer}.) This pointer will last only until the -next mouse motion event is processed or certain other things happen, -such as creating or deleting a window. (In fact, the above-mentioned -pointer glyph variables are implemented as part of the default handler -for mouse motion events. If you want to customize this behavior, take a -look at @code{mode-motion-hook}, or @code{mouse-motion-handler} if you -really want to get low-level.) +The form of an instantiator can be checked with +@code{valid-instantiator-p} with a @var{TYPE} of @code{image}, +@ref{Specifier Validation Functions}. -@item -To use a glyph to control the shape of miscellaneous redisplay effects -such as the truncation and continuation markers, set the appropriate -existing glyph variables, as for icons and pointers above. See -@code{continuation-glyph}, @code{control-arrow-glyph}, -@code{hscroll-glyph}, @code{invisible-text-glyph}, -@code{octal-escape-glyph}, and @code{truncation-glyph}. See also -@code{overlay-arrow-string}, an odd redisplay leftover which can be set -to a glyph you created, and will cause the glyph to be displayed on top -of the text position specified in the marker stored in -@code{overlay-arrow-position}. +For a complete list of the format symbols and their usage, +@ref{Image Instantiator Formats}. -@item -To use a glyph in a display table (i.e. to control the appearance of any -individual character), create the appropriate character glyphs and then -set a specification for the specifier @code{current-display-table}, -which controls the appearance of characters. You can also set an -overriding display table for use with text displayed in a particular -face; see @code{set-face-display-table} and @code{make-display-table}. -#### Note: Display tables do not currently support general Mule -characters. They will be overhauled at some point to support this -and to provide other features required under Mule. +If the instantiator is a string, it will be converted into a vector by +looking it up according to the specs in the +@code{console-type-image-conversion-list} for the console type of the +domain (usually a window; sometimes a frame or device) over which the +image is being instantiated. -@item -To use a glyph as the background pixmap of a face: Note that the -background pixmap of a face is actually an image specifier -- probably -the only place in XEmacs where an image specifier occurs outside of a -glyph. Similarly to how the glyph's image specifier works, you don't -create your own image specifier, but rather add specifications to the -existing one (using @code{set-face-background-pixmap}). Note that the -image instance that is generated in order to actually display the -background pixmap is of type @code{mono-pixmap}, meaning that it's a -two-color image and the foreground and background of the image get -filled in with the corresponding colors from the face. -@end itemize +If the instantiator specifies data from a file, the data will be read in +at the time that the instantiator is added to the image specifier (which +may be well before the image is actually displayed), and the +instantiator will be converted into one of the inline-data forms, with +the filename retained using a @code{:file} keyword. This implies that +the file must exist when the instantiator is added to the image, but +does not need to exist at any other time (e.g. it may safely be a +temporary file). -It is extremely rare that you will ever have to specify a value for -@var{type}, which should be one of @code{buffer} (used for glyphs in an -extent, the modeline, the toolbar, or elsewhere in a buffer), -@code{pointer} (used for the mouse-pointer), or @code{icon} (used for a -frame's icon), and defaults to @code{buffer}. The only cases where it -needs to be specified is when creating icon or pointer glyphs, and in -both cases the necessary glyphs have already been created at startup and -are accessed through the appropriate variables, -e.g. @code{text-pointer-glyph} (or in general, @code{*-pointer-glyph}) -and @code{frame-icon-glyph}. @xref{Glyph Types}. -@end defun +The available keywords are given below. Note that some keywords are +generally available (for example, the @code{:data} keyword may be used +with any format except @code{nothing}), while others are only available +for one format (@code{resource-id} is unique to the +@code{mswindows-resource} format). -@defun make-glyph-internal &optional type -This function creates a new, uninitialized glyph of type @var{type}. -@end defun +@table @code +@item :data +Inline image data. If available for a given format, it may be specified +directly by the program, or it may be a cache of file data previously +read. When present, it is used to instantiate the image in preference +to the file named by the @code{:file} property. -@defun make-pointer-glyph &optional spec-list +The format of inline data is image-format-specific. For example, in +pixmap formats, the value should be a string, which is interpreted as an +octet-stream representing a bitmap or pixmap. But for text formats, +it's string containing the text to be displayed, and for resource +formats, it's a string containing the name of the resource. -Return a new @code{pointer-glyph} object with the specification list -@var{spec-list}. This function is equivalent to calling -@code{make-glyph} with a @var{type} of @code{pointer}. +@item :file +Data contained in a file. The value is the name of this file. If both +@code{:data} and @code{:file} are specified, the image is created from +what is specified in @code{:data} and the string in @code{:file} becomes +the value of the @code{image-instance-file-name} function when applied +to the resulting image-instance. Note that there is nothing to stop a +program from changing either the @code{:file} or the @code{:data} +property, and there is no way to detect such mischief. This means that +the data will @emph{not} be automatically reread if you change the +@code{file} property; you must force it by removing the @code{:data} +property. +@c #### If there are ways to do this in-place, describe them. +(One way to do this is replacing the whole specification with a new +vector.) This keyword is not valid for instantiator formats +@code{nothing}, @code{string}, @code{formatted-string}, +@code{cursor-font}, @code{font}, and @code{autodetect}. -It is extremely unlikely that you will ever need to create a pointer -glyph. Instead, you probably want to be calling @code{set-glyph-image} -on an existing glyph, e.g. @code{text-pointer-glyph}. -@end defun +@item :mask-data +Inline data for @code{xbm} and @code{xface}. This specifies a mask to +be used with the bitmap. Pixels which are not set in the mask will not +be written to the imaging device. The format is a list of width, +height, and bits, as for @code{:data}. -@defun make-icon-glyph &optional spec-list +@item :mask-file +For @code{xbm} and @code{xface}. This specifies a file containing the +mask data. If neither a mask file nor inline mask data is given for an +XBM image, and the XBM image comes from a file, XEmacs will look for a +mask file with the same name as the image file but with @samp{Mask} or +@samp{msk} appended. For example, if you specify the XBM file +@file{left_ptr} [usually located in @file{/usr/include/X11/bitmaps}], +the associated mask file @file{left_ptrmsk} will automatically be picked +up. -Return a new @code{pointer-glyph} object with the specification list -@var{spec-list}. This function is equivalent to calling -@code{make-glyph} with a @var{type} of @code{icon}. +@item :resource-id +Only for @code{mswindows-resource}. This must be either an integer +(which directly specifies a resource number) or a string. See the +description of @code{mswindows-resource} for valid strings. @xref{Image +Instantiator Formats}. -It is extremely unlikely that you will ever need to create a pointer -glyph. Instead, you probably want to be calling @code{set-glyph-image} -on an existing glyph, e.g. @code{text-pointer-glyph}. -@end defun +@item :foreground +@itemx :background +For @code{xbm}, @code{xface}, @code{cursor-font}, and @code{font}. +These keywords allow you to explicitly specify foreground and background +colors. The value should be anything acceptable to +@code{make-color-instance}. This will cause an external format that +would by default be instantiated as a @code{mono-pixmap} to instead be +instantiated as a two-color color-pixmap. This can be used to override +the colors specified by a glyph's face, for example. If the image is +instantiated as a pointer, they specify its foreground and/or +background, instead of the defaults of black and white. -@node Glyph Properties -@subsection Glyph Properties +@item :hotspot-x +@itemx :hotspot-y +For @code{xbm} and @code{xface}. These keywords specify a hotspot if +the image is instantiated as a @code{pointer}. Note that if the XBM +image file specifies a hotspot, it will automatically be picked up if no +explicit hotspot is given. -Each glyph has a list of properties, which control all of the aspects of -the glyph's appearance. The following symbols have predefined meanings: +@item :color-symbols +Only for @code{xpm}. This specifies an alist that maps strings that +specify symbolic color names to the actual color to be used for that +symbolic color (in the form of a string or a color-specifier object). +If this is not specified, the contents of @code{xpm-color-symbols} are +used to generate the alist. -@table @code -@item image -The image used to display the glyph. +@item :resource-type +Only for @code{mswindows-resource}. This must be a symbol, either +@code{cursor}, @code{icon}, or @code{bitmap}, specifying the type of +resource to be retrieved. -@item baseline -Percent above baseline that glyph is to be displayed. Only for glyphs -displayed inside of a buffer. +@item :face +For @code{inherit} and the widget formats. This specifies the face to +inherit from. For widgets this specifies the face to use for display. +It defaults to gui-element-face. + +@item :selected +@itemx :active +@itemx :suffix +@itemx :keys +@itemx :style +@itemx :filter +@itemx :config +@itemx :included +@itemx :key-sequence +@itemx :accelerator +@itemx :label +@itemx :callback +These keywords, accepted as menu item specs, are also accepted by images +instantiated as @code{widget}. For their semantics, @ref{Menu Format}. +@end table -@item contrib-p -Whether the glyph contributes to the height of the line it's on. -Only for glyphs displayed inside of a buffer. -@item face -Face of this glyph (@emph{not} a specifier). -@end table +@node Image Instantiator Conversion +@subsection Image Instantiator Conversion +@cindex image instantiator conversion +@cindex conversion of image instantiators -@defun set-glyph-property glyph property value &optional locale tag-set how-to-add -This function changes a property of a @var{glyph}. +Conversion is applied to image instantiators at the time they are added +to an image specifier or at the time they are passed to +@code{make-image-instance}. -For built-in properties, the actual value of the property is a specifier -and you cannot change this; but you can change the specifications within -the specifier, and that is what this function will do. For user-defined -properties, you can use this function to either change the actual value -of the property or, if this value is a specifier, change the -specifications within it. +@defun set-console-type-image-conversion-list console-type list +This function sets the image-conversion-list for consoles of the given +@var{console-type}. The image-conversion-list specifies how image +instantiators that are strings should be interpreted. Each element of +the list should be a list of two elements (a regular expression string +and a vector) or a list of three elements (the preceding two plus an +integer index into the vector). The string is converted to the vector +associated with the first matching regular expression. If a vector +index is specified, the string itself is substituted into that position +in the vector. -If @var{property} is a built-in property, the specifications to be added -to this property can be supplied in many different ways: +Note: The conversion above is applied when the image instantiator is +added to an image specifier, not when the specifier is actually +instantiated. Therefore, changing the image-conversion-list only affects +newly-added instantiators. Existing instantiators in glyphs and image +specifiers will not be affected. +@end defun -@itemize @bullet -@item -If @var{value} is a simple instantiator (e.g. a string naming a pixmap -filename) or a list of instantiators, then the instantiator(s) will be -added as a specification of the property for the given @var{locale} -(which defaults to @code{global} if omitted). +@defun console-type-image-conversion-list console-type +This function returns the image-conversion-list for consoles of the given +@var{console-type}. +@end defun -@item -If @var{value} is a list of specifications (each of which is a cons of a -locale and a list of instantiators), then @var{locale} must be -@code{nil} (it does not make sense to explicitly specify a locale in -this case), and specifications will be added as given. -@item -If @var{value} is a specifier (as would be returned by -@code{glyph-property} if no @var{locale} argument is given), then some -or all of the specifications in the specifier will be added to the -property. In this case, the function is really equivalent to -@code{copy-specifier} and @var{locale} has the same semantics (if it is -a particular locale, the specification for the locale will be copied; if -a locale type, specifications for all locales of that type will be -copied; if @code{nil} or @code{all}, then all specifications will be -copied). -@end itemize +@node Image Instantiator Formats +@subsection Image Instantiator Formats +@cindex image instantiator formats -@var{how-to-add} should be either @code{nil} or one of the symbols -@code{prepend}, @code{append}, @code{remove-tag-set-prepend}, -@code{remove-tag-set-append}, @code{remove-locale}, -@code{remove-locale-type}, or @code{remove-all}. See -@code{copy-specifier} and @code{add-spec-to-specifier} for a description -of what each of these means. Most of the time, you do not need to worry -about this argument; the default behavior usually is fine. +The @dfn{format} field of an image instantiator should be a symbol +denoting a valid format. Which formats are valid will depend on the +features (such as image decoding libraries) available, on platform +support (MS Windows resource IDs make no sense on other platforms), and +on the locale. -In general, it is OK to pass an instance object (e.g. as returned by -@code{glyph-property-instance}) as an instantiator in place of an actual -instantiator. In such a case, the instantiator used to create that -instance object will be used (for example, if you set a font-instance -object as the value of the @code{font} property, then the font name used -to create that object will be used instead). If some cases, however, -doing this conversion does not make sense, and this will be noted in the -documentation for particular types of instance objects. +@defun valid-image-instantiator-format-p format &optional locale +This function returns non-@code{nil} if @var{format} is a valid image +instantiator format. -If @var{property} is not a built-in property, then this function will -simply set its value if @var{locale} is @code{nil}. However, if -@var{locale} is given, then this function will attempt to add -@var{value} as the instantiator for the given @var{locale}, using -@code{add-spec-to-specifier}. If the value of the property is not a -specifier, it will automatically be converted into a @code{generic} -specifier. +If @var{locale} is non-@code{nil} then the format is checked in that locale. +If @var{locale} is @code{nil} the current console is used. + +Note that the return value for many formats listed above depends on +whether XEmacs was compiled with support for that format. @end defun -@defun glyph-property glyph property &optional locale -This function returns @var{glyph}'s value of the given @var{property}. +@defun image-instantiator-format-list +This function returns a list of valid image-instantiator formats. +@end defun -If @var{locale} is omitted, the @var{glyph}'s actual value for -@var{property} will be returned. For built-in properties, this will be -a specifier object of a type appropriate to the property (e.g. a font or -color specifier). For other properties, this could be anything. +Here is a table of image-instantiator formats, giving the keywords that +are usable with each, and the kinds of instances that may result. -If @var{locale} is supplied, then instead of returning the actual value, -the specification(s) for the given locale or locale type will be -returned. This will only work if the actual value of @var{property} is -a specifier (this will always be the case for built-in properties, but -may or may not apply to user-defined properties). If the actual value -of @var{property} is not a specifier, this value will simply be returned -regardless of @var{locale}. +@table @code +@item nothing +Don't display anything; no keywords are valid for this format. Can only be +instanced as @code{nothing}. -The return value will be a list of instantiators (e.g. vectors -specifying pixmap data), or a list of specifications, each of which is a -cons of a locale and a list of instantiators. Specifically, if -@var{locale} is a particular locale (a buffer, window, frame, device, or -@code{global}), a list of instantiators for that locale will be -returned. Otherwise, if @var{locale} is a locale type (one of the -symbols @code{buffer}, @code{window}, @code{frame}, or @code{device}), -the specifications for all locales of that type will be returned. -Finally, if @var{locale} is @code{all}, the specifications for all -locales of all types will be returned. +@item string +Display this image as a text string. Can only be instanced +as @code{text}, although support for instancing as @code{mono-pixmap} +should be added. The valid keyword is @code{:data}. The value should +be a string, and it is interpreted as a string of characters. -The specifications in a specifier determine what the value of -@var{property} will be in a particular @dfn{domain} or set of -circumstances, which is typically a particular Emacs window along with -the buffer it contains and the frame and device it lies within. The -value is derived from the instantiator associated with the most specific -locale (in the order buffer, window, frame, device, and @code{global}) -that matches the domain in question. In other words, given a domain -(i.e. an Emacs window, usually), the specifier for @var{property} will -first be searched for a specification whose locale is the buffer -contained within that window; then for a specification whose locale is -the window itself; then for a specification whose locale is the frame -that the window is contained within; etc. The first instantiator that -is valid for the domain (usually this means that the instantiator is -recognized by the device [i.e. the X server or TTY device] that the -domain is on). The function @code{glyph-property-instance} actually does -all this, and is used to determine how to display the glyph. -@end defun +@item formatted-string +Display this image as a text string with replaceable fields, +similar to a modeline format string. The valid keyword is @code{:data}. +The value should be a string, and it is interpreted as a string of +characters containing format sequences. -@defun glyph-property-instance glyph property &optional domain default no-fallback -This function returns the instance of @var{glyph}'s @var{property} in the -specified @var{domain}. +Not currently implemented. -Under most circumstances, @var{domain} will be a particular window, and -the returned instance describes how the specified property actually is -displayed for that window and the particular buffer in it. Note that -this may not be the same as how the property appears when the buffer is -displayed in a different window or frame, or how the property appears in -the same window if you switch to another buffer in that window; and in -those cases, the returned instance would be different. +@item xbm +An X bitmap; available only if X support was compiled into this XEmacs. + +If used in a buffer glyph, icon glyph, or face background pixmap, it +will be instantiated as @code{mono-pixmap} unless the @code{:foreground} +or @code{:background} keywords are present. In the latter case it will +be instantiated as @code{color-pixmap} with the two specified colors. +@c #### Check this. +(Probably if @code{:foreground} or @code{:background} is omitted, it +defaults to black or white respectively.) If used in a pointer glyph, +it will be instantiated as an @code{pointer}. + +The valid keywords and their values are +@table @code +@item :data +A list containing the height and width of the bitmap as integers, and +a string interpreted as a bit vector according to the X11 standard XBM +bitmap format, in that order. +@item :file +The name of a file containing standard XBM-format data. If it contains +a hotspot specification, it will be parsed and used if the hotspot is +not explicitly specified. +@item :mask-data +A list containing the height and width of the bitmap as integers, and +a string interpreted as a bit vector according to the X11 standard XBM +bitmap format, in that order. This bitmap is interpreted as the +clipping region for the bitmap contained in the @code{:data} property. +@item :mask-file +The name of a file containing standard XBM-format data. Interpreted as +the clipping region for the bitmap contained in the @code{:data} property. +@item :foreground +@itemx :background +These keywords allow you to explicitly specify foreground and background +colors. The values should be acceptable to @code{make-color-instance}. +@item :hotspot-x +@itemx :hotspot-y +Integers denoting the hotspot (mouse pointer position), with (0,0) at +the top left corner. If given, these override any specification in the +XBM file. +@end table -The returned instance is an image-instance object, and you can query it -using the appropriate image instance functions. For example, you could use -@code{image-instance-depth} to find out the depth (number of color -planes) of a pixmap displayed in a particular window. The results might -be different from the results you would get for another window (perhaps -the user specified a different image for the frame that window is on; or -perhaps the same image was specified but the window is on a different X -server, and that X server has different color capabilities from this -one). +@item xpm +An XPM pixmap; only available if XPM support was compiled into this XEmacs. -@var{domain} defaults to the selected window if omitted. +Can be instanced as @code{color-pixmap}, @code{mono-pixmap}, or +@code{pointer}. -@var{domain} can be a frame or device, instead of a window. The value -returned for such a domain is used in special circumstances when a -more specific domain does not apply; for example, a frame value might be -used for coloring a toolbar, which is conceptually attached to a frame -rather than a particular window. The value is also useful in -determining what the value would be for a particular window within the -frame or device, if it is not overridden by a more specific -specification. +XPM is an add-on library for X that was designed to rectify the +shortcomings of the XBM format. Many icons and labels used in the +XEmacs GUI are still distributed in XPM format (although we are moving +to standardize on the PNG format). It is therefore highly desirable +that XPM be available in your XEmacs. -If @var{property} does not name a built-in property, its value will -simply be returned unless it is a specifier object, in which case it -will be instanced using @code{specifier-instance}. +Most implementations of X include the XPM library as a standard part. +If your vendor does not, it is highly recommended that you download it +and install it. You can get it from the XEmacs FTP site and mirrors, as +well as from most sites that distribute X11. -Optional arguments @var{default} and @var{no-fallback} are the same as -in @code{specifier-instance}. @xref{Specifiers}. -@end defun +The valid keywords and their values are +@table @code +@item :data +A string interpreted as the contents of a standard XPM file. +@item :file +The name of a file containing standard XPM-format data. If it contains +a hotspot specification, it will be parsed and used if the hotspot is +not explicitly specified. +@c #### Does XPM provide for a hotspot? +@item :hotspot-x +@itemx :hotspot-y +Integers denoting the hotspot (mouse pointer position), with (0,0) at +the top left corner. If given, these override any specification in the +XBM file. +@c #### Check this. +(This may not be true. The original documentation doesn't mention them +in connection with XPM, but a pointer needs a hotspot.) +@item :color-symbols +An alist that maps the one- or two-character strings that specify +symbolic color names in the XPM file to the actual color to be used for +that symbolic color (in the form of a string acceptable as a color +instantiator, @ref{Color Specifiers}, or a color-specifier object). +If this is not specified, the contents of @code{xpm-color-symbols} are +used to generate the alist. +@end table -@defun remove-glyph-property glyph property &optional locale tag-set exact-p -This function removes a property from a glyph. For built-in properties, -this is analogous to @code{remove-specifier}. @xref{Specifiers, -remove-specifier-p}, for the meaning of the @var{locale}, @var{tag-set}, -and @var{exact-p} arguments. -@end defun +@item xface +An X-Face bitmap, used to encode people's faces in e-mail messages; +only available if X-Face support was compiled into this XEmacs. -@node Glyph Convenience Functions -@subsection Glyph Convenience Functions +Will be instanced as @code{mono-pixmap}, @code{color-pixmap}, or +@code{pointer}, depending on the target instance type and the presence +of color keywords. - The following functions are provided for working with specific -properties of a glyph. Note that these are exactly like calling -the general functions described above and passing in the -appropriate value for @var{property}. +The valid keywords and their values are +@table @code +@item :data +A list containing the height and width of the bitmap as integers, and +a string interpreted as a bit vector according to the X11 standard XBM +bitmap format, in that order. +@item :file +The name of a file containing standard XBM-format data. If it contains +a hotspot specification, it will be parsed and used if the hotspot is +not explicitly specified. +@item :mask-data +A list containing the height and width of the bitmap as integers, and +a string interpreted as a bit vector according to the X11 standard XBM +bitmap format, in that order. This bitmap is interpreted as the +clipping region for the bitmap contained in the @code{:data} property. +@item :mask-file +The name of a file containing standard XBM-format data. Interpreted as +the clipping region for the bitmap contained in the @code{:data} property. +@item :foreground +@itemx :background +These keywords allow you to explicitly specify foreground and background +colors. The values should be acceptable to @code{make-color-instance}. +@item :hotspot-x +@itemx :hotspot-y +Integers denoting the hotspot (mouse pointer position), with (0,0) at +the top left corner. If given, these override any specification in the +XBM file. +@end table - Remember that if you want to determine the ``value'' of a -specific glyph property, you probably want to use the @code{*-instance} -functions. For example, to determine whether a glyph contributes -to its line height, use @code{glyph-contrib-p-instance}, not -@code{glyph-contrib-p}. (The latter will return a boolean specifier -or a list of specifications, and you probably aren't concerned with -these.) +@item gif +@itemx jpeg +@itemx png +@itemx tiff +These are GIF87- or GIF89-format, JPEG-format, PNG/GIF24-format, and +TIFF-format images, respectively. They are available only if +appropriate decoding support was built into XEmacs. XEmacs includes GIF +decoding functions as a standard part of it, so if you have X support, +you will normally have GIF support, unless you explicitly disable it at +configure time. If you have development support (both the libraries and +the relevant C header files) available when XEmacs is built, the JPEG, +PNG, and TIFF libraries will automatically be detected (in the ``usual +places'') and linked into the build. + +Note that PNG is the standard format for images distributed with XEmacs, +so it is highly recommended that PNG support be built in. + +All of these instantiators will be instanced as @code{color-pixmap}. + +The valid keywords and their values are +@table @code +@item :data +A string interpreted as the contents of a file containing data in the +appropriate standard format. +@item :file +The name of a file containing standard-format data. +@end table -@defun glyph-image glyph &optional locale -This function is equivalent to calling @code{glyph-property} with -a property of @code{image}. The return value will be an image -specifier if @var{locale} is @code{nil} or omitted; otherwise, -it will be a specification or list of specifications. -@end defun +@item cursor-font +Most window systems provide a set of standard cursors, which in X11 is +called a cursor font. Can only be instanced as @code{pointer}. This +should probably be fixed. + +The valid keyword is @code{:data}. Its value should be a string +containing one of the standard cursor-font names, such as @samp{watch} +or @samp{right_ptr} under X. More specifically, in the X Window System +it may be any of the standard cursor names from appendix B of the Xlib +manual, provided in the file @file{} by most +distributions, minus the @samp{XC_} prefix. For MS Windows, use +@code{mswindows-resource} instantiator format, not @code{cursor-font}. +Other window systems may have different lists. -@defun set-glyph-image glyph spec &optional locale tag-set how-to-add -This function is equivalent to calling @code{set-glyph-property} with -a property of @code{image}. -@end defun +@item font +A glyph from a font; i.e. the name of a font, and glyph index into it +of the form @samp{@var{font} fontname index [[mask-font] mask-index]}. +Only if X support was compiled into this XEmacs. Currently can only be +instanced as @code{pointer}. This should probably be fixed. +@c #### The above description is not very helpful, so it's not obvious +@c how to instantiate a font image. -@defun glyph-image-instance glyph &optional domain default no-fallback -This function returns the instance of @var{glyph}'s image in the given -@var{domain}, and is equivalent to calling -@code{glyph-property-instance} with a property of @code{image}. The -return value will be an image instance. +@item mswindows-resource +An MS Windows pointer resource. Specifies a resource to retrieve +directly from the system (an OEM resource) or from a file, particularly +an executable file. Can be instanced as @code{pointer} or +@code{color-pixmap}. -Normally @var{domain} will be a window or @code{nil} (meaning the -selected window), and an instance object describing how the image -appears in that particular window and buffer will be returned. -@end defun +The valid keywords and their values are -@defun glyph-contrib-p glyph &optional locale -This function is equivalent to calling @code{glyph-property} with -a property of @code{contrib-p}. The return value will be a boolean -specifier if @var{locale} is @code{nil} or omitted; otherwise, -it will be a specification or list of specifications. -@end defun +@table @code +@item :resource-type +A string naming the type (@code{cursor}, @code{bitmap}, or @code{icon}) +of the resource. Required. +@item :file +A string containing the name of the file containing the resource (often +an executable). If a system resource, @code{:file} should be omitted. +@item :resource-id +A string containing the name of a resource. Required if @code{:file} +is not specified. -@defun set-glyph-contrib-p glyph spec &optional locale tag-set how-to-add -This function is equivalent to calling @code{set-glyph-property} with -a property of @code{contrib-p}. -@end defun +This must be either an integer (which directly specifies a resource +number) or a string. Valid strings are -@defun glyph-contrib-p-instance glyph &optional domain default no-fallback -This function returns whether the glyph contributes to its line height -in the given @var{domain}, and is equivalent to calling -@code{glyph-property-instance} with a property of @code{contrib-p}. The -return value will be either @code{nil} or @code{t}. (Normally @var{domain} -will be a window or @code{nil}, meaning the selected window.) -@end defun +For bitmaps: -@defun glyph-baseline glyph &optional locale -This function is equivalent to calling @code{glyph-property} with a -property of @code{baseline}. The return value will be a specifier if -@var{locale} is @code{nil} or omitted; otherwise, it will be a -specification or list of specifications. -@end defun +"close", "uparrow", "dnarrow", "rgarrow", "lfarrow", +"reduce", "zoom", "restore", "reduced", "zoomd", +"restored", "uparrowd", "dnarrowd", "rgarrowd", "lfarrowd", +"mnarrow", "combo", "uparrowi", "dnarrowi", "rgarrowi", +"lfarrowi", "size", "btsize", "check", "checkboxes", and +"btncorners". -@defun set-glyph-baseline glyph spec &optional locale tag-set how-to-add -This function is equivalent to calling @code{set-glyph-property} with -a property of @code{baseline}. -@end defun +For cursors: -@defun glyph-baseline-instance glyph &optional domain default no-fallback -This function returns the instance of @var{glyph}'s baseline value in -the given @var{domain}, and is equivalent to calling -@code{glyph-property-instance} with a property of @code{baseline}. The -return value will be an integer or @code{nil}. +"normal", "ibeam", "wait", "cross", "up", "sizenwse", +"sizenesw", "sizewe", "sizens", "sizeall", and "no". -Normally @var{domain} will be a window or @code{nil} (meaning the -selected window), and an instance object describing the baseline value -appears in that particular window and buffer will be returned. -@end defun +For icons: -@defun glyph-face glyph -This function returns the face of @var{glyph}. (Remember, this is -not a specifier, but a simple property.) -@end defun +"sample", "hand", "ques", "bang", "note", and "winlogo". +@end table -@defun set-glyph-face glyph face -This function changes the face of @var{glyph} to @var{face}. -@end defun +@item subwindow +An embedded windowing system window. Can only be instanced as +@code{subwindow}. Not implemented. +@c #### Check status of subwindows ... I thought Andy implemented them. -@node Glyph Dimensions -@subsection Glyph Dimensions - -@defun glyph-width glyph &optional window -This function returns the width of @var{glyph} on @var{window}. This -may not be exact as it does not take into account all of the context -that redisplay will. -@end defun - -@defun glyph-ascent glyph &optional window -This function returns the ascent value of @var{glyph} on @var{window}. -This may not be exact as it does not take into account all of the -context that redisplay will. -@end defun - -@defun glyph-descent glyph &optional window -This function returns the descent value of @var{glyph} on @var{window}. -This may not be exact as it does not take into account all of the -context that redisplay will. -@end defun - -@defun glyph-height glyph &optional window -This function returns the height of @var{glyph} on @var{window}. (This -is equivalent to the sum of the ascent and descent values.) This may -not be exact as it does not take into account all of the context that -redisplay will. -@end defun - -@node Images -@section Images - -@menu -* Image Specifiers:: Specifying how an image will appear. -* Image Instantiator Conversion:: - Conversion is applied to image instantiators - at the time they are added to an - image specifier or at the time they - are passed to @code{make-image-instance}. -* Image Instances:: What an image specifier gets instanced as. -@end menu - -@node Image Specifiers -@subsection Image Specifiers -@cindex image specifiers - - An image specifier is used to describe the actual image of a glyph. -It works like other specifiers (@pxref{Specifiers}), in that it contains -a number of specifications describing how the image should appear in a -variety of circumstances. These specifications are called @dfn{image -instantiators}. When XEmacs wants to display the image, it instantiates -the image into an @dfn{image instance}. Image instances are their own -primitive object type (similar to font instances and color instances), -describing how the image appears in a particular domain. (On the other -hand, image instantiators, which are just descriptions of how the image -should appear, are represented using strings or vectors.) - -@defun image-specifier-p object -This function returns non-@code{nil} if @var{object} is an image specifier. -Usually, an image specifier results from calling @code{glyph-image} on -a glyph. -@end defun - -@defun make-image-specifier spec-list -This function creates a new image specifier object and initializes it -according to @var{spec-list}. @xref{Specifiers}. - -Note that, in practice, you rarely, if ever, need to actually create an -image specifier! (This function exists mainly for completeness.) Pretty -much the only use for image specifiers is to control how glyphs are -displayed, and the image specifier associated with a glyph (the -@code{image} property of a glyph) is created automatically when a glyph -is created and need not (and cannot, for that matter) ever be changed -(@pxref{Glyphs}). In fact, the design decision to create a separate -image specifier type, rather than make glyphs themselves be specifiers, -is debatable---the other properties of glyphs are rarely used and could -conceivably have been incorporated into the glyph's instantiator. The -rarely used glyph types (buffer, pointer, icon) could also have been -incorporated into the instantiator. -@end defun - - Image instantiators come in many formats: @code{xbm}, @code{xpm}, -@code{gif}, @code{jpeg}, etc. This describes the format of the data -describing the image. The resulting image instances also come in many -types---@code{mono-pixmap}, @code{color-pixmap}, @code{text}, -@code{pointer}, etc. This refers to the behavior of the image and the -sorts of places it can appear. (For example, a color-pixmap image has -fixed colors specified for it, while a mono-pixmap image comes in two -unspecified shades ``foreground'' and ``background'' that are determined -from the face of the glyph or surrounding text; a text image appears as -a string of text and has an unspecified foreground, background, and -font; a pointer image behaves like a mono-pixmap image but can only be -used as a mouse pointer [mono-pixmap images cannot be used as mouse -pointers]; etc.) It is important to keep the distinction between image -instantiator format and image instance type in mind. Typically, a given -image instantiator format can result in many different image instance -types (for example, @code{xpm} can be instanced as @code{color-pixmap}, -@code{mono-pixmap}, or @code{pointer}; whereas @code{cursor-font} can be -instanced only as @code{pointer}), and a particular image instance type -can be generated by many different image instantiator formats (e.g. -@code{color-pixmap} can be generated by @code{xpm}, @code{gif}, -@code{jpeg}, etc.). - - @xref{Image Instances}, for a more detailed discussion of image -instance types. - - An image instantiator should be a string or a vector of the form - -@example - @code{[@var{format} @var{:keyword} @var{value} ...]} -@end example - -i.e. a format symbol followed by zero or more alternating keyword-value -pairs. The @dfn{format} field should be a symbol, one of - -@table @code -@item nothing -Don't display anything; no keywords are valid for this. Can only be -instanced as @code{nothing}. -@item string -Display this image as a text string. Can only be instanced -as @code{text}, although support for instancing as @code{mono-pixmap} -should be added. -@item formatted-string -Display this image as a text string with replaceable fields, -similar to a modeline format string; not currently implemented. -@item xbm -An X bitmap; only if X support was compiled into this XEmacs. Can be -instanced as @code{mono-pixmap}, @code{color-pixmap}, or -@code{pointer}. -@item xpm -An XPM pixmap; only if XPM support was compiled into this XEmacs. Can -be instanced as @code{color-pixmap}, @code{mono-pixmap}, or -@code{pointer}. XPM is an add-on library for X that was designed to -rectify the shortcomings of the XBM format. Most implementations of X -include the XPM library as a standard part. If your vendor does not, it -is highly recommended that you download it and install it. You can get -it from the standard XEmacs FTP site, among other places. -@item xface -An X-Face bitmap, used to encode people's faces in e-mail messages; -only if X-Face support was compiled into this XEmacs. Can be instanced -as @code{mono-pixmap}, @code{color-pixmap}, or @code{pointer}. -@item gif -A GIF87 or GIF89 image; only if GIF support was compiled into this -XEmacs. Can be instanced as @code{color-pixmap}. Note that XEmacs -includes GIF decoding functions as a standard part of it, so if you have -X support, you will normally have GIF support, unless you explicitly -disable it at configure time. -@item jpeg -A JPEG-format image; only if JPEG support was compiled into this -XEmacs. Can be instanced as @code{color-pixmap}. If you have the JPEG -libraries present on your system when XEmacs is built, XEmacs will -automatically detect this and use them, unless you explicitly disable it -at configure time. -@item png -A PNG/GIF24 image; only if PNG support was compiled into this XEmacs. -Can be instanced as @code{color-pixmap}. -@item tiff -A TIFF-format image; only if TIFF support was compiled into this XEmacs. -@item cursor-font -One of the standard cursor-font names, such as @samp{watch} or -@samp{right_ptr} under X. Under X, this is, more specifically, any of -the standard cursor names from appendix B of the Xlib manual [also known -as the file @file{}] minus the @samp{XC_} prefix. On -other window systems, the valid names will be specific to the type of -window system. Can only be instanced as @code{pointer}. -@item font -A glyph from a font; i.e. the name of a font, and glyph index into it -of the form @samp{@var{font} fontname index [[mask-font] mask-index]}. -Only if X support was compiled into this XEmacs. Currently can only be -instanced as @code{pointer}, although this should probably be fixed. -@item mswindows-resource -An MS Windows pointer resource. Specifies a resource to retrieve -directly from the system (an OEM resource) or from a file, particularly -an executable file. If the resource is to be retrieved from a file, use -:file and optionally :resource-id. Otherwise use :resource-id. Always -specify :resource-type to specify the type (cursor, bitmap or icon) of -the resource. Possible values for :resource-id are listed below. Can -be instanced as @code{pointer} or @code{color-pixmap}. -@item subwindow -An embedded windowing system window. Can only be instanced as -@code{subwindow}. @item button A button widget; either a push button, radio button or toggle button. Can only be instanced as @code{widget}. + @item combo-box A drop list of selectable items in a widget, for editing text. Can only be instanced as @code{widget}. + @item edit-field A text editing widget. Can only be instanced as @code{widget}. + @item label A static, text-only, widget; for displaying text. Can only be instanced as @code{widget}. + @item layout A widget for controlling the positioning of children underneath it. Through the use of nested layouts, a widget hierarchy can be created @@ -742,20 +628,25 @@ which can have the appearance of any standard dialog box or similar arrangement; all of this is counted as one @dfn{glyph} and could appear in many of the places that expect a single glyph. Can only be instanced as @code{widget}. + @item native-layout -@c #### Document me better! The native version of a layout widget. Can only be instanced as @code{widget}. + @item progress-gauge A sliding widget, for showing progress. Can only be instanced as @code{widget}. + @item tab-control A tab widget; a series of user selectable tabs. Can only be instanced as @code{widget}. + @item tree-view A folding widget. Can only be instanced as @code{widget}. + @item scrollbar A scrollbar widget. Can only be instanced as @code{widget}. + @item autodetect XEmacs tries to guess what format the data is in. If X support exists, the data string will be checked to see if it names a filename. If so, @@ -766,135 +657,14 @@ is one of the allowable image-instance types and the string names a valid cursor-font name, the image will be created as a pointer. Otherwise, the image will be displayed as text. If no X support exists, the image will always be displayed as text. + @item inherit Inherit from the background-pixmap property of a face. Can only be instanced as @code{mono-pixmap}. @end table -The valid keywords are: - -@table @code -@item :data -Inline data. For most formats above, this should be a string. For -XBM images, this should be a list of three elements: width, height, and -a string of bit data. This keyword is not valid for instantiator -format @code{nothing}. - -@item :file -Data is contained in a file. The value is the name of this file. If -both @code{:data} and @code{:file} are specified, the image is created -from what is specified in @code{:data} and the string in @code{:file} -becomes the value of the @code{image-instance-file-name} function when -applied to the resulting image-instance. This keyword is not valid for -instantiator formats @code{nothing}, @code{string}, -@code{formatted-string}, @code{cursor-font}, @code{font}, and -@code{autodetect}. - -@item :foreground -@itemx :background -For @code{xbm}, @code{xface}, @code{cursor-font}, and @code{font}. -These keywords allow you to explicitly specify foreground and background -colors. The argument should be anything acceptable to -@code{make-color-instance}. This will cause what would be a -@code{mono-pixmap} to instead be colorized as a two-color color-pixmap, -and specifies the foreground and/or background colors for a pointer -instead of black and white. - -@item :mask-data -For @code{xbm} and @code{xface}. This specifies a mask to be used with the -bitmap. The format is a list of width, height, and bits, like for -@code{:data}. - -@item :mask-file -For @code{xbm} and @code{xface}. This specifies a file containing the -mask data. If neither a mask file nor inline mask data is given for an -XBM image, and the XBM image comes from a file, XEmacs will look for a -mask file with the same name as the image file but with @samp{Mask} or -@samp{msk} appended. For example, if you specify the XBM file -@file{left_ptr} [usually located in @file{/usr/include/X11/bitmaps}], -the associated mask file @file{left_ptrmsk} will automatically be picked -up. - -@item :hotspot-x -@itemx :hotspot-y -For @code{xbm} and @code{xface}. These keywords specify a hotspot if -the image is instantiated as a @code{pointer}. Note that if the XBM -image file specifies a hotspot, it will automatically be picked up if no -explicit hotspot is given. - -@item :color-symbols -Only for @code{xpm}. This specifies an alist that maps strings that -specify symbolic color names to the actual color to be used for that -symbolic color (in the form of a string or a color-specifier object). -If this is not specified, the contents of @code{xpm-color-symbols} are -used to generate the alist. -@item :resource-id -Only for @code{mswindows-resource}. This must be either an integer -(which directly specifies a resource number) or a string. Valid strings -are - -For bitmaps: - -"close", "uparrow", "dnarrow", "rgarrow", "lfarrow", -"reduce", "zoom", "restore", "reduced", "zoomd", -"restored", "uparrowd", "dnarrowd", "rgarrowd", "lfarrowd", -"mnarrow", "combo", "uparrowi", "dnarrowi", "rgarrowi", -"lfarrowi", "size", "btsize", "check", "checkboxes", and -"btncorners". - -For cursors: - -"normal", "ibeam", "wait", "cross", "up", "sizenwse", -"sizenesw", "sizewe", "sizens", "sizeall", and "no". - -For icons: - -"sample", "hand", "ques", "bang", "note", and "winlogo". -@item :resource-type -Only for @code{mswindows-resource}. This must be a symbol, either -@code{cursor}, @code{icon}, or @code{bitmap}, specifying the type of -resource to be retrieved. -@item :face -Only for @code{inherit}. This specifies the face to inherit from. For -widgets this also specifies the face to use for display. It defaults to -gui-element-face. -@end table - -Keywords accepted as menu item specs are also accepted by widgets. -These are @code{:selected}, @code{:active}, @code{:suffix}, -@code{:keys}, @code{:style}, @code{:filter}, @code{:config}, -@code{:included}, @code{:key-sequence}, @code{:accelerator}, -@code{:label} and @code{:callback}. - -If instead of a vector, the instantiator is a string, it will be -converted into a vector by looking it up according to the specs in the -@code{console-type-image-conversion-list} for the console type of -the domain (usually a window; sometimes a frame or device) over which -the image is being instantiated. - -If the instantiator specifies data from a file, the data will be read in -at the time that the instantiator is added to the image specifier (which -may be well before the image is actually displayed), and the -instantiator will be converted into one of the inline-data forms, with -the filename retained using a @code{:file} keyword. This implies that -the file must exist when the instantiator is added to the image, but -does not need to exist at any other time (e.g. it may safely be a -temporary file). - -@defun valid-image-instantiator-format-p format &optional locale -This function returns non-@code{nil} if @var{format} is a valid image -instantiator format. - -If @var{locale} is non-@code{nil} then the format is checked in that locale. -If @var{locale} is @code{nil} the current console is used. - -Note that the return value for many formats listed above depends on -whether XEmacs was compiled with support for that format. -@end defun - -@defun image-instantiator-format-list -This function return a list of valid image-instantiator formats. -@end defun +There are two convenience variables for use with the XBM and XPM image +formats. @defvar xpm-color-symbols This variable holds definitions of logical color-names used when reading @@ -919,293 +689,1280 @@ the environment variable @samp{XBMLANGPATH} is set, it is consulted first). @end defvar -@node Image Instantiator Conversion -@subsection Image Instantiator Conversion -@cindex image instantiator conversion -@cindex conversion of image instantiators -@defun set-console-type-image-conversion-list console-type list -This function sets the image-conversion-list for consoles of the given -@var{console-type}. The image-conversion-list specifies how image -instantiators that are strings should be interpreted. Each element of -the list should be a list of two elements (a regular expression string -and a vector) or a list of three elements (the preceding two plus an -integer index into the vector). The string is converted to the vector -associated with the first matching regular expression. If a vector -index is specified, the string itself is substituted into that position -in the vector. +@node Image Instances +@subsection Image Instances +@cindex image instances -Note: The conversion above is applied when the image instantiator is -added to an image specifier, not when the specifier is actually -instantiated. Therefore, changing the image-conversion-list only affects -newly-added instantiators. Existing instantiators in glyphs and image -specifiers will not be affected. + Image-instance objects encapsulate the way a particular image (pixmap, +etc.) is displayed on a particular device. + + In most circumstances, you do not need to directly create image +instances; use a glyph instead. However, it may occasionally be useful +to explicitly create image instances, if you want more control over the +instantiation process. + +@defun image-instance-p object +This function returns non-@code{nil} if @var{object} is an image instance. @end defun -@defun console-type-image-conversion-list console-type -This function returns the image-conversion-list for consoles of the given -@var{console-type}. -@end defun +@menu +* Image Instance Types:: Each image instances has a particular type. +* Image Instance Functions:: Functions for working with image instances. +@end menu + + +@node Image Instance Types +@subsubsection Image Instance Types +@cindex image instance types + + Image instances come in a number of different types. The type +of an image instance specifies the nature of the image: Whether +it is a text string, a mono pixmap, a color pixmap, etc. + + The valid image instance types are + +@table @code +@item nothing +Nothing is displayed. + +@item text +Displayed as text. The foreground and background colors and the +font of the text are specified independent of the pixmap. Typically +these attributes will come from the face of the surrounding text, +unless a face is specified for the glyph in which the image appears. + +@item mono-pixmap +Displayed as a mono pixmap (a pixmap with only two colors where the +foreground and background can be specified independent of the pixmap; +typically the pixmap assumes the foreground and background colors of +the text around it, unless a face is specified for the glyph in which +the image appears). +@item color-pixmap + +Displayed as a color pixmap. + +@item pointer +Used as the mouse pointer for a window. + +@item subwindow +A child window that is treated as an image. This allows (e.g.) +another program to be responsible for drawing into the window. +Not currently implemented. +@c #### Check status of subwindows ... I thought Andy implemented them. + +@item widget +An active GUI element implemented as a ``widget'' or ``control'' of the +underlying window system. +@end table + +The following functions are used to check whether an image instance type +is valid in the running XEmacs. + +@defun valid-image-instance-type-p type +This function returns non-@code{nil} if @var{type} is a valid image +instance type. +@end defun + +@defun image-instance-type-list +This function returns a list of the valid image instance types. +@end defun + +The following functions are used to determine the type of an image +instance. + +@defun image-instance-type image-instance +Return the type of the given image instance. The return +value will be one of @code{nothing}, @code{text}, @code{mono-pixmap}, +@code{color-pixmap}, @code{pointer}, @code{subwindow}, or @code{widget}. +@c #### Check status of subwindows ... I thought Andy implemented them. +@end defun + +@defun text-image-instance-p object +Return non-@code{nil} if @var{object} is an image instance of type +@code{text}. +@end defun + +@defun mono-pixmap-image-instance-p object +Return non-@code{nil} if @var{object} is an image instance of type +@code{mono-pixmap}. +@end defun + +@defun color-pixmap-image-instance-p object +Return non-@code{nil} if @var{object} is an image instance of type +@code{color-pixmap}. +@end defun + +@defun pointer-image-instance-p object +Return non-@code{nil} if @var{object} is an image instance of type +@code{pointer}. +@end defun + +@defun subwindow-image-instance-p object +Return non-@code{nil} if @var{object} is an image instance of type +@code{subwindow}. +@c #### Check status of subwindows ... I thought Andy implemented them. +@end defun + +@defun nothing-image-instance-p object +Return non-@code{nil} if @var{object} is an image instance of type +@code{nothing}. +@end defun + +@defun widget-image-instance-p object +Return non-@code{nil} if @var{object} is an image instance of type +@code{widget}. +@end defun + + +@node Image Instance Functions +@subsubsection Image Instance Functions + +@defun make-image-instance data &optional domain dest-types noerror +This function creates a new image-instance object. + +@var{data} is an image instantiator, which describes the image +(@pxref{Image Specifiers}). + +@var{dest-types} should be a list of allowed image instance types that +can be generated. The @var{dest-types} list is unordered. If multiple +destination types are possible for a given instantiator, the ``most +natural'' type for the instantiator's format is chosen. These are + +@table @code +@item XBM +@c #### check xface +@itemx xface +@code{mono-pixmap}, then @code{color-pixmap}, then @code{pointer}. + +@item XPM +@itemx GIF +@itemx JPEG +@itemx PNG +@itemx TIFF +@code{color-pixmap}, then @code{mono-pixmap}, then @code{pointer}. + +@item string +@itemx formatted-string formats +@code{text}, then @code{mono-pixmap} (not currently implemented), then +@code{color-pixmap} (not currently implemented). + +@item mswindows-resource +For pointer resources, @code{pointer}. + +For the others, @code{color-pixmap}. +@end table + +@c #### So what? This is a reference manual, list them, you lazy bastard! +The other formats can only be instantiated as one type. + +If you want to control more specifically the order of the types into +which an image is instantiated, call @code{make-image-instance} +repeatedly until it succeeds, passing less and less preferred +destination types each time. + +If @var{dest-types} is omitted, all possible types are allowed. + +@var{domain} specifies the domain to which the image instance will be +attached. This domain is termed the @dfn{governing domain}. The type +of the governing domain depends on the image instantiator format. +(Although, more correctly, it should probably depend on the image +instance type.) For example, pixmap image instances are specific to a +device, but widget image instances are specific to a particular XEmacs +window because in order to display such a widget when two windows onto +the same buffer want to display the widget, two separate underlying +widgets must be created. (That's because a widget is actually a child +window-system window, and all window-system windows have a unique +existence on the screen.) This means that the governing domain for a +pixmap image instance will be some device (most likely, the only +existing device), whereas the governing domain for a widget image +instance will be some XEmacs window. + +If you specify an overly general @var{domain} (e.g. a frame when a +window was wanted), an error is signaled. If you specify an overly +specific @var{domain} (e.g. a window when a device was wanted), the +corresponding general domain is fetched and used instead. For +@code{make-image-instance}, it makes no difference whether you specify +an overly specific domain or the properly general domain derived from +it. However, it does matter when creating an image instance by +instantiating a specifier or glyph (e.g. with +@code{glyph-image-instance}), because the more specific domain causes +spec lookup to start there and proceed to more general domains. (It +would also matter when creating an image instance with an instantiator +format of @code{inherit}, but we currently disallow this.) +@c #### We should fix that. + +If omitted, @var{domain} defaults to the selected window. + +@var{noerror} controls what happens when the image cannot be generated. +If @code{nil}, an error message is generated. If @code{t}, no messages +are generated and this function returns @code{nil}. If anything else, a +warning message is generated and this function returns @code{nil}. +@end defun + +@defun colorize-image-instance image-instance foreground background +This function makes the image instance be displayed in the given +colors. Image instances come in two varieties: bitmaps, which are 1 +bit deep which are rendered in the prevailing foreground and background +colors; and pixmaps, which are of arbitrary depth (including 1) and +which have the colors explicitly specified. This function converts a +bitmap to a pixmap. If the image instance was a pixmap already, +nothing is done (and @code{nil} is returned). Otherwise @code{t} is +returned. +@end defun + +The following functions are + +@defun image-instance-name image-instance +This function returns the name of the given image instance. The name is +typically taken from the @code{:file} property of the instantiator if +present, otherwise from the @code{:data} property. +@end defun + +@defun image-instance-domain image-instance +Return the governing domain of the given @var{image-instance}. The +governing domain of an image instance is the domain that the image +instance is specific to. It is @emph{NOT} necessarily the domain that +was given to the call to @code{specifier-instance} that resulted in the +creation of this image instance. See @code{make-image-instance} for +more information on governing domains. +@end defun + +@defun image-instance-string image-instance +This function returns the string of the given image instance. This will +only be non-@code{nil} for text image instances. +@end defun + +@defun image-instance-file-name image-instance +This function returns the file name from which @var{image-instance} was +read, if known. +@end defun + +@defun image-instance-mask-file-name image-instance +This function returns the file name from which @var{image-instance}'s +mask was read, if known. +@end defun + +Pixmaps are considered to be three-dimensional. The height and width of +the pixel array that is displayed, and the color depth of its pixels, +are accessed with these functions. + +@defun image-instance-depth image-instance +This function returns the depth of the image instance. This is 0 for a +mono pixmap, or a positive integer for a color pixmap. +@end defun + +@defun image-instance-height image-instance +This function returns the height of the image instance, in pixels. +@end defun + +@defun image-instance-width image-instance +This function returns the width of the image instance, in pixels. +@end defun + +The hotspot is a point relative to the origin of the pixmap. When +an image is used as a mouse pointer, the hotspot is the point on the +image that sits over the location that the pointer points to. This is, +for example, the tip of the arrow or the center of the crosshairs. + +These functions access the coordinates of the hotspot. They simply +return @code{nil} for a non-pointer image instance. + +@defun image-instance-hotspot-x image-instance +This function returns the X coordinate of the image instance's hotspot, +if known. +@end defun + +@defun image-instance-hotspot-y image-instance +This function returns the Y coordinate of the image instance's hotspot, +if known. +@end defun + +Mono pixmaps and pointers may have their foreground and background +colors set when instanced. Use these functions to access color +information. + +@defun image-instance-foreground image-instance +This function returns the foreground color of @var{image-instance}, if +applicable. This will be a color instance or @code{nil}. (It will only +be non-@code{nil} for colorized mono pixmaps and for pointers.) +@end defun + +@defun image-instance-background image-instance +This function returns the background color of @var{image-instance}, if +applicable. This will be a color instance or @code{nil}. (It will only +be non-@code{nil} for colorized mono pixmaps and for pointers.) +@end defun + + +@node Using Glyphs +@section Using Glyphs + +Glyph usage is unfortunately somewhat arcane. (For discussion of +rationale, @ref{Glyphs,,,Internals}.) Because they are not ``text,'' +they cannot be inserted directly into a buffer. Instead, they are +values of properties of extents attached to buffers or strings, values +of global variables such as mouse pointers, or as a component of a +complex data structure such as a toolbar initializer. Although these +uses could probably streamlined, each structure has its own +requirements. Since glyphs are very flexible, it is possible to create +applications like the @file{edit-toolbar} and @file{xpm-mode} libraries +which display glyphs in a buffer (for reference while editing) that are +normally used in a different context. + +Usage of glyphs can roughly be categorized as follows: + +@table @strong +@item Buffer glyphs +Glyphs that are inserted in a buffer may be used for their own sake (for +example, image display in @file{w3}), as an accurate representation of +text that can't be displayed in usual fonts (equation display in +@file{preview-latex}), or as annotations (such as a marginal indication +of a bookmark). Glyphs are attached to buffers via extents. + +@item Redisplay glyphs +Glyphs can be used to create XEmacs-specific ``fonts''. For example, +the character that indicates truncation of lines is implemented as the +@code{truncation-glyph}. It is also possible to have XEmacs display a +certain character using a custom glyph, via display tables. + +@item Frame glyphs +Glyphs are used to control the appearance of various other components of +the frame. They can be inserted in the modeline, like the favicons used +in Web browsers. They are used to specify the labels on toolbar +buttons. Finally, they can be inserted in the gutters. (The difference +between a glyph inserted in a gutter and a marginal annotation is that +the marginal annotation is tied to the text in the buffer. If the +buffer line scrolls out of view, the marginal annotation will, as well. +A gutter glyph does not move with the text.) + +Unfortunately, all these uses are special cases, and have their own +APIs, in contrast to glyphs in a buffer. + +@item External glyphs +External glyphs simply allow a consistent API for images. The images +are then passed to external software such as the window system itself +(mouse cursor shapes) and the window manager (icons to represent +minimized windows). XEmacs has no role in managing their use. + +@item Subwindow and widget glyphs +These do not constitute a context of use, but rather an important class of +glyph types. The difference between these and other glyphs is that +while their geometry is determined by XEmacs, their behavior is managed +separately, by internal mechanisms in the case of widgets, and +(possibly) by another process in the case of subwindows. +@c #### Check status of subwindows ... I thought Andy implemented them. +@end table + +Some simple concrete examples showing how to insert a glyph in a +buffer are presented later. @ref{Glyph Examples}. + +``Creating Glyphs'' explains how to create glyphs. Creating a glyph +using @code{make-glyph} does not specify @emph{where} the glyph will be +used, it only specifies @emph{what} the glyph will look like. The next +four sections explain how to embed glyphs in different display +contexts. Finally, the last two sections explain the special +considerations of using glyphs whose behavior is not determined by the +code creating them, but by the glyph itself (a ``widget'' in X11 or +``control'' in MS Windows or Aqua), or even by a separate process. + +@menu +* Creating Glyphs:: Creating new glyphs. +* Buffer Glyphs:: Annotations are glyphs that appear in a buffer. +* Redisplay Glyphs:: Glyphs controlling various redisplay functions. +* Frame Glyphs:: Displaying glyphs in GUI components of the frame. +* External Glyphs:: Icons and mouse pointers for the window system. +* Native GUI Widgets:: Complex active elements treated as a single glyph. +* Subwindows:: Externally-controlled subwindows in buffers. +@c #### Check status of subwindows ... I thought Andy implemented them. +@end menu + +@node Creating Glyphs +@subsection Creating Glyphs + +@defun make-glyph &optional spec-list type +This function creates a new glyph object of type @var{type}. + +The optional @var{spec-list} is used to initialize the glyph's image. +It can be any spec-list of @dfn{image instantiator} accepted by +@code{canonicalize-spec-list}, @ref{Adding Specifications}. An +individual image instantiator may be a string, which is converted to a +vector according to @code{console-type-image-conversion-list}, or a +vector. The vector's first element specifies the @emph{external} format +of the data, such as a string, a PNG file, or an MS Windows resource. +This is followed by properties (keyword-value pairs) specifying such +information as the name of a file containing an image, or pixmap data +directly. @xref{Image Specifiers}. + +The optional @var{type} specifies the type of the glyph. @var{type} +should be one of @code{buffer} (used for glyphs in an extent, the +modeline, the toolbar, or elsewhere in a frame), @code{pointer} (used +for the mouse-pointer), or @code{icon} (used for a frame's icon), and +defaults to @code{buffer}. +@end defun + +@var{spec-list} is the initializer for the glyph's @code{image} +property, which is an image specifier. (Note that @dfn{image} as used +in the context of a glyph's @code{image} property or in the terms +@dfn{image specifier}, @dfn{image instantiator}, or @dfn{image instance} +does not refer to what people normally think of as an image (which in +XEmacs is called a @dfn{pixmap}), but to any graphical element---a +pixmap, a widget, or even a block of text, when used in the places that +call for a glyph.) + +The most common form of @var{spec-list} is a single image instantiator. +(@strong{Compatibility note:} in GNU Emacs 21, a string used to +instantiate an image is interpreted as the name of an image file, which +is searched for and instantiated.) The conversion controlled by +@code{console-type-image-conversion-list} typically attempts to look up +the string as a file name in XEmacs's data directory path, and if this +fails, defaults to displaying the string as a text image instance +(@emph{i.e.}. the string itself. + +Fine control of a particular specification is provided by using a vector +as the image instantiator. More complicated instantiators allow lists +of instantiators to be specified (which are tried in order), or mappings +from locales to lists of instantiators, @emph{etc}. @xref{Specifiers}, +for more information about specification formats. + +As well as using @var{spec-list} to initialize the glyph, you can set +specifications using @code{set-glyph-image}. The glyph itself is not +actually a specifier, but rather is an object containing an image +specifier (as well as other properties seldom set by user code). +Therefore, you cannot set or access specifications for the glyph's image +by directly using @code{set-specifier}, @code{specifier-instance} or the +like on the glyph; instead use them on @code{(glyph-image @var{glyph})} +or use the convenience functions @code{set-glyph-image}, +@code{glyph-image-instance}, and @code{glyph-image}. + +Glyph types reflect the fact that glyphs are used in contexts like +pointers and window manager icons, which are defined by external +programs such as the window system or window manager. These require +somewhat different @emph{internal} format, which is opaque to the user. + +It is extremely rare that you will ever have to specify a value for +@var{type}, which should be one of @code{buffer} (used for glyphs in an +extent, the modeline, the toolbar, or elsewhere in a buffer), +@code{pointer} (used for the mouse-pointer), or @code{icon} (used for a +frame's icon), and defaults to @code{buffer}. The only cases where it +needs to be specified is when creating icon or pointer glyphs, and in +both cases the necessary glyphs have already been created at startup and +are accessed through the appropriate variables, +e.g. @code{text-pointer-glyph} (or in general, any +@samp{*-pointer-glyph}) and @code{frame-icon-glyph}. User code should +never need to create @code{pointer} or @code{icon} glyphs. @xref{Glyph +Types}. + +There are a few other glyph creation functions, normally used only +internally or at XEmacs initialization. + +@defun make-glyph-internal &optional type +This function creates a new, uninitialized glyph of type @var{type}. +@end defun + +@defun make-pointer-glyph &optional spec-list + +Return a new @code{pointer-glyph} object with the specification list +@var{spec-list}. This function is equivalent to calling +@code{make-glyph} with a @var{type} of @code{pointer}. +@end defun + +@code{make-pointer-glyph} is normally used only by XEmacs initialization +code. It is extremely unlikely that you will ever need to create a +pointer glyph. Instead, you probably want to be calling +@code{set-glyph-image} on an existing glyph, +e.g. @code{text-pointer-glyph}. + +@defun make-icon-glyph &optional spec-list + +Return a new @code{icon-glyph} object with the specification list +@var{spec-list}. This function is equivalent to calling +@code{make-glyph} with a @var{type} of @code{icon}. +@end defun + +@code{make-icon-glyph} is normally used only by XEmacs initialization +code. It is extremely unlikely that you will ever need to create a icon +glyph. Instead, you probably want to be calling @code{set-glyph-image} +on the existing glyph, @code{frame-icon-glyph}. + + +@node Buffer Glyphs +@subsection Buffer Glyphs + +Creating a glyph using @code{make-glyph} does not specify @emph{where} +the glyph will be used, it only specifies @emph{what} the glyph will +look like. Once you have created a glyph, you specify where it will be +used by attaching it to an extent as a @emph{begin-glyph} or +@emph{end-glyph}. + +@table @code +@item buffer text +To insert a glyph into a buffer, create an extent in the buffer and then +use @code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set +a glyph to be displayed at the corresponding edge of the extent. (It is +common to create zero-width extents for this purpose.) + +@item margins +To insert a glyph into the left or right margin of a buffer, first +make sure the margin is visible by setting a value for the specifiers +@code{left-margin-width} or @code{right-margin-width}. (Not strictly necessary +when using margin glyphs with layout policy @code{whitespace}.) Follow +the same procedure above for inserting a glyph in a buffer, then +set a non-default layout policy for the glyph using +@code{set-extent-begin-glyph-layout} or @code{set-extent-end-glyph-layout}. +Alternatively, use the high-level annotations API (see +@code{make-annotation}). (In fact, you can also use the annotations +API for glyphs in a buffer, by setting a layout policy of @code{text}.) + +@end table + + +@node Redisplay Glyphs +@subsection Redisplay Glyphs + +To use a glyph to control the shape of miscellaneous redisplay effects +such as the truncation and continuation markers, set the appropriate +existing glyph variables with @code{set-glyph-image}. See +@code{continuation-glyph}, @code{control-arrow-glyph}, +@code{hscroll-glyph}, @code{invisible-text-glyph}, +@code{octal-escape-glyph}, and @code{truncation-glyph}. See also +@code{overlay-arrow-string}, an odd redisplay leftover which can be set +to a glyph you created, and will cause the glyph to be displayed on top +of the text position specified in the marker stored in +@code{overlay-arrow-position}. + +To use a glyph in a display table (i.e. to control the appearance of any +individual character), create the appropriate character glyphs and then +set a specification for the specifier @code{current-display-table}, +which controls the appearance of characters. You can also set an +overriding display table for use with text displayed in a particular +face; see @code{set-face-display-table} and @code{make-display-table}. +#### Note: Display tables do not currently support general Mule +characters. They will be overhauled at some point to support this +and to provide other features required under Mule. @ref{Display Tables}. + +Glyphs are not actually used as the background pixmaps of faces, but the +API is similar. The +background pixmap of a face is actually an image specifier -- probably +the only place in XEmacs where an image specifier occurs outside of a +glyph. If you would like to use a glyph's image as a background pixmap, +you can extract it with @code{glyph-image}, and then add it to a face. +@xref{Face Convenience Functions}. + +@defvr Glyph truncation-glyph +This variable specifies what is displayed at the end of truncated lines. +@end defvr + +@defvr Glyph continuation-glyph +This variable specifies what is displayed at the end of wrapped lines. +@end defvr + +@defvr Glyph octal-escape-glyph +This variable specifies what to prefix character codes displayed in octal +with. +@end defvr + +@defvr Glyph hscroll-glyph +This variable specifies what to display at the beginning of horizontally +scrolled lines. +@end defvr + +@defvr Glyph invisible-text-glyph +This variable specifies what to use to indicate the presence of +invisible text. This is the glyph that is displayed when an ellipsis is +called for, according to @code{selective-display-ellipses} or +@code{buffer-invisibility-spec}). Normally this is three dots (``...''). +@end defvr + +@defvr Glyph control-arrow-glyph +This variable specifies what to use as an arrow for control characters. +@end defvr + + +@node Frame Glyphs +@subsection Frame Glyphs + +There are also a number of special objects whose appearance is specified +by a glyph. Most of these a global objects that you update with +@code{set-glyph-image}, such as mouse pointers. Frame icons, toolbar +button icons, and the modeline are the main non-text objects which +accept glyphs as elements. + +@table @code +@item modeline +A glyph may be displayed in the modeline by inserting the glyph as one +of the elements of the modeline format. (Unfortunately you can't +currently put a begin glyph or end glyph on one of the modeline +extents---they're ignored.) + +@item toolbar +To insert a glyph into a toolbar, specify it as the icon part of a toolbar +button, which in turn must be part of a toolbar instantiator (typically +set on the specifier @code{default-toolbar}). +See @code{default-toolbar} for more information. (As a convenience, you +may use a symbol in place of the glyph list in the toolbar button +instantiator; the symbol is evalled to get the glyph list. This +facilitates both creating the toolbar instantiator and modifying +individual glyphs in a toolbar later on. For example, you can change +the way that the Mail toolbar button looks by modifying the value of the +variable @code{toolbar-mail-icon} (in general, @code{toolbar-*-icon}) +and then calling @code{(set-specifier-dirty-flag default-toolbar)}. +(#### Unfortunately this doesn't quite work the way it should; the +change will appear in new frames, but not existing ones, because once an +image has been displayed the pixmap replaces the symbol for those domains.) + +@item gutter +To insert a glyph into a gutter, use +@code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set a +glyph to be displayed at the corresponding edge of extent in a string, +similar to the way you insert glyphs in a buffer. Then insert the +string into the gutter @ref{Specifying a Gutter}. Glyphs that are +frequently used in this way are @code{tab control} and @code{progress +bar} glyphs. + +@end table + + +@node External Glyphs +@subsection External Glyphs +@cindex frame icon +@cindex icon, frame +@cindex mouse cursor +@cindex cursor (mouse) +@cindex pointer (mouse) +@cindex mouse pointer + +There are two special kinds of glyph that are not displayed by XEmacs. +Instead, they are used to set the appearance of iconified frames and the +mouse pointer. Because these uses are constrained by the window system, +icons and pointers have their own special types @xref{Glyph Types}. + +You may use a glyph as the icon for a frame. Do not create a new glyph; +instead, change the specifications for the existing glyph +@code{frame-icon-glyph} with @code{set-glyph-image}. This is a unique, +predefined object. Although the natural usage is to set specifications +for the global locale or a frame locale, you can also arrange for a +special icon when a frame's selected window displays a particular buffer +by using a buffer locale. + +The shape of the mouse pointer when over a particular section of a frame +is controlled using various glyph variables. Since the image of a glyph +is a specifier, it can be controlled on a per-buffer, per-frame, per-window, +or per-device basis. + +To use a glyph as the mouse pointer, in general you do not create a new +glyph, but rather you change the specifications of various existing +glyphs, such as @code{text-pointer-glyph} for the pointer used over +text, @code{modeline-pointer-glyph} for the pointer used over the +modeline, etc. Do an apropos over @samp{pointer-glyph} to find all of +them. (Note also that you can temporarily set the mouse pointer to some +specific shape by using @code{set-frame-pointer}, which takes an image +instance, as obtained from calling @code{glyph-image-instance} on a glyph +of type @code{pointer} -- either one of the above-mentioned variables or +one you created yourself. (See below for what it means to create a +glyph of type @code{pointer}.) This pointer will last only until the +next mouse motion event is processed or certain other things happen, +such as creating or deleting a window. (In fact, the above-mentioned +pointer glyph variables are implemented as part of the default handler +for mouse motion events. If you want to customize this behavior, take a +look at @code{mode-motion-hook}, or @code{mouse-motion-handler} if you +really want to get low-level.) + +You should use @code{set-glyph-image} to set the following variables, +@emph{not} @code{setq}. + +@defvr Glyph text-pointer-glyph +This variable specifies the shape of the mouse pointer when over text. +@end defvr + +@defvr Glyph nontext-pointer-glyph +This variable specifies the shape of the mouse pointer when over a +buffer, but not over text. If unspecified in a particular domain, +@code{text-pointer-glyph} is used. +@end defvr + +@defvr Glyph modeline-pointer-glyph +This variable specifies the shape of the mouse pointer when over the modeline. +If unspecified in a particular domain, @code{nontext-pointer-glyph} is used. +@end defvr + +@defvr Glyph selection-pointer-glyph +This variable specifies the shape of the mouse pointer when over a +selectable text region. If unspecified in a particular domain, +@code{text-pointer-glyph} is used. +@end defvr + +@defvr Glyph gc-pointer-glyph +This variable specifies the shape of the mouse pointer when a garbage +collection is in progress. If the selected window is on a window system +and this glyph specifies a value (i.e. a pointer image instance) in the +domain of the selected window, the pointer will be changed as specified +during garbage collection. Otherwise, a message will be printed in the +echo area, as controlled by @code{gc-message}. +@end defvr + +@defvr Glyph busy-pointer-glyph +This variable specifies the shape of the mouse pointer when XEmacs is busy. +If unspecified in a particular domain, the pointer is not changed +when XEmacs is busy. +@end defvr + +@defvr Glyph menubar-pointer-glyph +This variable specifies the shape of the mouse pointer when over the +menubar. If unspecified in a particular domain, the +window-system-provided default pointer is used. +@end defvr + +@defvr Glyph scrollbar-pointer-glyph +This variable specifies the shape of the mouse pointer when over a +scrollbar. If unspecified in a particular domain, the +window-system-provided default pointer is used. +@end defvr + +@defvr Glyph toolbar-pointer-glyph +This variable specifies the shape of the mouse pointer when over a +toolbar. If unspecified in a particular domain, +@code{nontext-pointer-glyph} is used. +@end defvr + +Internally, these variables are implemented in +@code{default-mouse-motion-handler}, and thus only take effect when the +mouse moves. That function calls @code{set-frame-pointer}, which sets +the current mouse pointer for a frame. + +@defun set-frame-pointer frame image-instance +This function sets the mouse pointer of @var{frame} to the given pointer +image instance. You should not call this function directly. +(If you do, the pointer will change again the next time the mouse moves.) +@end defun + + +@node Native GUI Widgets +@subsection Native GUI Widgets +@cindex native widget + +A ``native widget'' is a primitive GUI object defined either by the host +GUI platform or an external toolkit, and accessed from Lisp as a +``glyph.'' + +@menu +* Introduction to Widgets:: Native widgets provide tight integration of + GUI features with the platform GUI. +* Lisp API to Native Widgets:: Native widgets are glyphs. +* Layouts:: Specifying composite widgets from Lisp. +* Primitive Widgets:: Catalogue of available native widgets. +@end menu + +@node Introduction to Widgets +@subsubsection Introduction to Native Widgets and Subwindow Glyphs + +Traditionally Emacsen have hidden the GUI apparatus from the Lisp +programmer, but in XEmacs 21.4 the ability to embed autonomous GUI +objects, called @dfn{native widgets}, in text was added to Lisp. They +are handled as @emph{glyphs}. Unlike traditional XEmacs +glyphs such images and strings, native widgets are opaque to XEmacs, and +must be able to redraw themselves because they are implemented as +subwindows, not as graphics drawn by XEmacs into the text window. + +Primitive widgets are coded in C using the underlying GUI toolkit, and +thus are beyond the scope of the @emph{XEmacs Lisp Reference Manual}. +However, composite widgets can be created in Lisp using ``layouts,'' +which are horizontal or vertical arrays of subwidgets. For example, the +search dialog is formatted using layouts. + +@node Lisp API to Native Widgets +@subsubsection Lisp API to Native Widgets + +Native widgets are manipulated as @emph{glyphs} (@pxref{Glyphs}). Thus +they are created using @code{make-glyph}, with a format of one of the +widget types and a @code{:data} property specific to the widget being +instanced. + +However, there is a technical difference between widgets and other kinds +of glyphs that is theoretically important. Because widgets +are active (that is, they can respond to user input events themselves), +it is possible for the user to become aware that two appearances of the +``same'' glyph are actually separate instances. For example, if a user +changes an image glyph from red to blue, and the buffer containing the +glyph appears in more than one window, the user will perceive all the +appearances to change from red to blue simultaneously. However, suppose +the glyph is a button glyph (@emph{e.g.}, as used in the Customize +buffer for the Set, Save, and Done buttons). Then if the Customize +buffer appears in several windows at the same time, and the user clicks +on the button, she will only perceive the button to be depressed in the +window where she clicked the button. + +It seems from this example that it is unlikely to be a problem in +practice. When the user is faced with an active widget, it seems likely +that attention will focus on the widget being manipulated, and having +other instances of the widget respond simultaneously might be more +disconcerting than the actual case. + +@node Layouts +@subsubsection Layouts + +An XEmacs @dfn{layout} is a one-dimensional array of glyphs. It is a +widget for controlling the positioning of children underneath it. +Through the use of nested layouts, a widget hierarchy can be created +which can have the appearance of any standard dialog box or similar +arrangement; all of this is counted as one "glyph" and could appear in +many of the places that expect a single glyph. +@c #### Fix me! +(There are also @dfn{native layouts}, but these are undocumented, as are +their uses.) + +A layout descriptor is an image instantiator, @emph{i.e.}, a vector of +the form @samp{[FORMAT KEY-1 VALUE-1 KEY-2 VALUE-2 ...]} with format +@code{layout}, and properties + +@c #### need defaults for these +@table @code +@item :orientation +Specifies the orientation of the contained array of glyphs. The value +must be one of the symbols @code{horizontal} or @code{vertical}. + +@item :horizontally-justify +Specifies the horizontal justification of the items in the array. The +value must be one of the symbols @code{:right}, @code{:center}, or +@code{:left}. + +@item :vertically-justify +Specifies the vertical justification of the items in the array. The +value must be one of the symbols @code{:top}, @code{:center}, or +@code{:bottom}. + +@item :justify +Specifies justification. #### not understood. + +@item :border +A glyph to place in the border. The value must be an image +instantiator. + +@item :items +The glyphs controlled by the layout. The value must be a list of image +instantiators. +@end table + +Here is the specification of the search dialog widget created by +@code{make-search-dialog} in the @file{dialog-items} library, which +makes use of recursive layouts. + +@example +(make-glyph + `[layout + :orientation horizontal + :vertically-justify top + :horizontally-justify center + :border [string :data "Search"] + :items + ([layout :orientation vertical + :justify top ; implies left also + :items + ([string :data "Search for:"] + [button :descriptor "Match Case" + :style toggle + :selected (not case-fold-search) + :callback (setq case-fold-search + (not case-fold-search))] + [button :descriptor "Regular Expression" + :style toggle + :selected search-dialog-regexp + :callback (setq search-dialog-regexp + (not search-dialog-regexp))] + [button :descriptor "Forwards" + :style radio + :selected search-dialog-direction + :callback (setq search-dialog-direction t)] + [button :descriptor "Backwards" + :style radio + :selected (not search-dialog-direction) + :callback (setq search-dialog-direction nil)] + )] + [layout :orientation vertical + :vertically-justify top + :horizontally-justify right + :items + ([edit-field :width 15 :descriptor "" :active t + :initial-focus t] + [button :width 10 :descriptor "Find Next" + :callback-ex + (lambda (image-instance event) + (search-dialog-callback ,parent + image-instance + event))] + [button :width 10 :descriptor "Cancel" + :callback-ex + (lambda (image-instance event) + (isearch-dehighlight) + (delete-frame + (event-channel event)))])])]) +@end example + +@node Primitive Widgets +@subsubsection Primitive Widgets + +@c #### the following table should be replaced with a menu of nodes +@table @code +@item button +A button widget; either a push button, radio button or toggle +button. + +@item combo-box +A drop list of selectable items in a widget, for editing text. + +@item edit-field +A text editing widget. + +@item label +A static, text-only, widget; for displaying text. + +@item progress-gauge +A sliding widget, for showing progress. + +@item tab-control +A tab widget; a series of user selectable tabs. -@node Image Instances -@subsection Image Instances -@cindex image instances +@item tree-view +A folding widget. - Image-instance objects encapsulate the way a particular image (pixmap, -etc.) is displayed on a particular device. +@item scrollbar +A scrollbar widget. (#### Probably not the same as the scrollbar +controlling an Emacs window.) +@end table - In most circumstances, you do not need to directly create image -instances; use a glyph instead. However, it may occasionally be useful -to explicitly create image instances, if you want more control over the -instantiation process. -@defun image-instance-p object -This function returns non-@code{nil} if @var{object} is an image instance. +@node Subwindows +@subsection Subwindows + +Subwindows are not currently implemented. +@c #### Check status of subwindows ... I thought Andy implemented them. + +@defun subwindowp object +This function returns non-@code{nil} if @var{object} is a subwindow. @end defun + +@node Manipulating Glyphs +@section Manipulating Glyphs + + Each glyphs has properties that may be accessed. Most of these can +also be set after the glyph is initialized, with the exception of the +glyph's type. This is not a real restriction, as it is almost never +useful to create glyphs of types other than @code{buffer}. + @menu -* Image Instance Types:: Each image instances has a particular type. -* Image Instance Functions:: Functions for working with image instances. +* Glyph Properties:: Accessing and modifying a glyph's properties. +* Glyph Convenience Functions:: Accessing particular properties of a glyph. +* Glyph Dimensions:: Determining the height, width, etc. of a glyph. +* Glyph Types:: Each glyph has a particular type. @end menu -@node Image Instance Types -@subsubsection Image Instance Types -@cindex image instance types - Image instances come in a number of different types. The type -of an image instance specifies the nature of the image: Whether -it is a text string, a mono pixmap, a color pixmap, etc. +@node Glyph Properties +@subsection Glyph Properties - The valid image instance types are +Each glyph has a list of properties, which control all of the aspects of +the glyph's appearance. The following symbols have predefined meanings: @table @code -@item nothing -Nothing is displayed. +@item image +The image used to display the glyph. -@item text -Displayed as text. The foreground and background colors and the -font of the text are specified independent of the pixmap. Typically -these attributes will come from the face of the surrounding text, -unless a face is specified for the glyph in which the image appears. +@item baseline +Percent above baseline that glyph is to be displayed. Only for glyphs +displayed inside of a buffer. -@item mono-pixmap -Displayed as a mono pixmap (a pixmap with only two colors where the -foreground and background can be specified independent of the pixmap; -typically the pixmap assumes the foreground and background colors of -the text around it, unless a face is specified for the glyph in which -the image appears). -@item color-pixmap +@item contrib-p +Whether the glyph contributes to the height of the line it's on. +Only for glyphs displayed inside of a buffer. -Displayed as a color pixmap. +@item face +Face of this glyph (@emph{not} a specifier). +@end table -@item pointer -Used as the mouse pointer for a window. +@defun set-glyph-property glyph property value &optional locale tag-set how-to-add +This function changes a property of a @var{glyph}. -@item subwindow -A child window that is treated as an image. This allows (e.g.) -another program to be responsible for drawing into the window. -Not currently implemented. -@end table +For built-in properties, the actual value of the property is a specifier +and you cannot change this; but you can change the specifications within +the specifier, and that is what this function will do. The glyph face +is an exception; it is a face name (a symbol) or a face object, not a +specifier. (The face properties themselves are typically specifiers.) +For user-defined properties, you can use this function to either change +the actual value of the property or, if this value is a specifier, +change the specifications within it. -@defun valid-image-instance-type-p type -This function returns non-@code{nil} if @var{type} is a valid image -instance type. -@end defun +If @var{property} is a built-in property, the specifications to be added +to this property can be supplied in many different ways: -@defun image-instance-type-list -This function returns a list of the valid image instance types. -@end defun +@itemize @bullet +@item +If @var{value} is a simple instantiator (e.g. a string naming a pixmap +filename) or a list of instantiators, then the instantiator(s) will be +added as a specification of the property for the given @var{locale} +(which defaults to @code{global} if omitted). -@defun image-instance-type image-instance -This function returns the type of the given image instance. The return -value will be one of @code{nothing}, @code{text}, @code{mono-pixmap}, -@code{color-pixmap}, @code{pointer}, or @code{subwindow}. -@end defun +@item +If @var{value} is a list of specifications (each of which is a cons of a +locale and a list of instantiators), then @var{locale} must be +@code{nil} (it does not make sense to explicitly specify a locale in +this case), and specifications will be added as given. -@defun text-image-instance-p object -This function returns non-@code{nil} if @var{object} is an image -instance of type @code{text}. -@end defun +@item +If @var{value} is a specifier (as would be returned by +@code{glyph-property} if no @var{locale} argument is given), then some +or all of the specifications in the specifier will be added to the +property. In this case, the function is really equivalent to +@code{copy-specifier} and @var{locale} has the same semantics (if it is +a particular locale, the specification for the locale will be copied; if +a locale type, specifications for all locales of that type will be +copied; if @code{nil} or @code{all}, then all specifications will be +copied). +@end itemize -@defun mono-pixmap-image-instance-p object -This function returns non-@code{nil} if @var{object} is an image -instance of type @code{mono-pixmap}. -@end defun +@var{how-to-add} should be either @code{nil} or one of the symbols +@code{prepend}, @code{append}, @code{remove-tag-set-prepend}, +@code{remove-tag-set-append}, @code{remove-locale}, +@code{remove-locale-type}, or @code{remove-all}. See +@code{copy-specifier} and @code{add-spec-to-specifier} for a description +of what each of these means. Most of the time, you do not need to worry +about this argument; the default behavior usually is fine. -@defun color-pixmap-image-instance-p object -This function returns non-@code{nil} if @var{object} is an image -instance of type @code{color-pixmap}. -@end defun +In general, it is OK to pass an instance object (e.g. as returned by +@code{glyph-property-instance}) as an instantiator in place of an actual +instantiator. In such a case, the instantiator used to create that +instance object will be used (for example, if you set a font-instance +object as the value of the @code{font} property, then the font name used +to create that object will be used instead). In some cases, however, +doing this conversion does not make sense, and this will be noted in the +documentation for particular types of instance objects. -@defun pointer-image-instance-p object -This function returns non-@code{nil} if @var{object} is an image -instance of type @code{pointer}. +If @var{property} is not a built-in property, then this function will +simply set its value if @var{locale} is @code{nil}. However, if +@var{locale} is given, then this function will attempt to add +@var{value} as the instantiator for the given @var{locale}, using +@code{add-spec-to-specifier}. If the value of the property is not a +specifier, it will automatically be converted into a @code{generic} +specifier. @end defun -@defun subwindow-image-instance-p object -This function returns non-@code{nil} if @var{object} is an image -instance of type @code{subwindow}. -@end defun +@defun glyph-property glyph property &optional locale +This function returns @var{glyph}'s value of the given @var{property}. -@defun nothing-image-instance-p object -This function returns non-@code{nil} if @var{object} is an image -instance of type @code{nothing}. -@end defun +If @var{locale} is omitted, the @var{glyph}'s actual value for +@var{property} will be returned. For built-in properties, this will be +a specifier object of a type appropriate to the property (e.g. a font or +color specifier). For other properties, this could be anything. -@defun widget-image-instance-p object -Return @code{t} if @var{object} is an image instance of type @code{widget}. +If @var{locale} is supplied, then instead of returning the actual value, +the specification(s) for the given locale or locale type will be +returned. This will only work if the actual value of @var{property} is +a specifier (this will always be the case for built-in properties, but +may or may not apply to user-defined properties). If the actual value +of @var{property} is not a specifier, this value will simply be returned +regardless of @var{locale}. + +The return value will be a list of instantiators (e.g. vectors +specifying pixmap data), or a list of specifications, each of which is a +cons of a locale and a list of instantiators. Specifically, if +@var{locale} is a particular locale (a buffer, window, frame, device, or +@code{global}), a list of instantiators for that locale will be +returned. Otherwise, if @var{locale} is a locale type (one of the +symbols @code{buffer}, @code{window}, @code{frame}, or @code{device}), +the specifications for all locales of that type will be returned. +Finally, if @var{locale} is @code{all}, the specifications for all +locales of all types will be returned. + +The specifications in a specifier determine what the value of +@var{property} will be in a particular @dfn{domain} or set of +circumstances, which is typically a particular Emacs window along with +the buffer it contains and the frame and device it lies within. The +value is derived from the instantiator associated with the most specific +locale (in the order buffer, window, frame, device, and @code{global}) +that matches the domain in question. In other words, given a domain +(i.e. an Emacs window, usually), the specifier for @var{property} will +first be searched for a specification whose locale is the buffer +contained within that window; then for a specification whose locale is +the window itself; then for a specification whose locale is the frame +that the window is contained within; etc. The first instantiator that +is valid for the domain (usually this means that the instantiator is +recognized by the device [i.e. the X server or TTY device] that the +domain is on). The function @code{glyph-property-instance} actually does +all this, and is used to determine how to display the glyph. @end defun -@node Image Instance Functions -@subsubsection Image Instance Functions +@defun glyph-property-instance glyph property &optional domain default no-fallback +This function returns the instance of @var{glyph}'s @var{property} in the +specified @var{domain}. -@defun make-image-instance data &optional domain dest-types noerror -This function creates a new image-instance object. +Under most circumstances, @var{domain} will be a particular window, and +the returned instance describes how the specified property actually is +displayed for that window and the particular buffer in it. Note that +this may not be the same as how the property appears when the buffer is +displayed in a different window or frame, or how the property appears in +the same window if you switch to another buffer in that window; and in +those cases, the returned instance would be different. -@var{data} is an image instantiator, which describes the image -(@pxref{Image Specifiers}). +The returned instance is an image-instance object, and you can query it +using the appropriate image instance functions. For example, you could use +@code{image-instance-depth} to find out the depth (number of color +planes) of a pixmap displayed in a particular window. The results might +be different from the results you would get for another window (perhaps +the user specified a different image for the frame that window is on; or +perhaps the same image was specified but the window is on a different X +server, and that X server has different color capabilities from this +one). -@var{dest-types} should be a list of allowed image instance types that -can be generated. The @var{dest-types} list is unordered. If multiple -destination types are possible for a given instantiator, the ``most -natural'' type for the instantiator's format is chosen. (For XBM, the -most natural types are @code{mono-pixmap}, followed by -@code{color-pixmap}, followed by @code{pointer}. For the other normal -image formats, the most natural types are @code{color-pixmap}, followed -by @code{mono-pixmap}, followed by @code{pointer}. For the string and -formatted-string formats, the most natural types are @code{text}, -followed by @code{mono-pixmap} (not currently implemented), followed by -@code{color-pixmap} (not currently implemented). For MS Windows -resources, the most natural type for pointer resources is -@code{pointer}, and for the others it's @code{color-pixmap}. The other -formats can only be instantiated as one type. (If you want to control -more specifically the order of the types into which an image is -instantiated, just call @code{make-image-instance} repeatedly until it -succeeds, passing less and less preferred destination types each time. +@var{domain} defaults to the selected window if omitted. -If @var{dest-types} is omitted, all possible types are allowed. +@var{domain} can be a frame or device, instead of a window. The value +returned for such a domain is used in special circumstances when a +more specific domain does not apply; for example, a frame value might be +used for coloring a toolbar, which is conceptually attached to a frame +rather than a particular window. The value is also useful in +determining what the value would be for a particular window within the +frame or device, if it is not overridden by a more specific +specification. -@var{domain} specifies the domain to which the image instance will be -attached. This domain is termed the @dfn{governing domain}. The type -of the governing domain depends on the image instantiator -format. (Although, more correctly, it should probably depend on the -image instance type.) For example, pixmap image instances are specific -to a device, but widget image instances are specific to a particular -XEmacs window because in order to display such a widget when two windows -onto the same buffer want to display the widget, two separate underlying -widgets must be created. (That's because a widget is actually a child -window-system window, and all window-system windows have a unique -existence on the screen.) This means that the governing domain for a -pixmap image instance will be some device (most likely, the only -existing device), whereas the governing domain for a widget image -instance will be some XEmacs window. +If @var{property} does not name a built-in property, its value will +simply be returned unless it is a specifier object, in which case it +will be instanced using @code{specifier-instance}. -If you specify an overly general @var{domain} (e.g. a frame when a -window was wanted), an error is signaled. If you specify an overly -specific @var{domain} (e.g. a window when a device was wanted), the -corresponding general domain is fetched and used instead. For -@code{make-image-instance}, it makes no difference whether you specify -an overly specific domain or the properly general domain derived from -it. However, it does matter when creating an image instance by -instantiating a specifier or glyph (e.g. with -@code{glyph-image-instance}), because the more specific domain causes -spec lookup to start there and proceed to more general domains. (It -would also matter when creating an image instance with an instantiator -format of @code{inherit}, but we currently disallow this. #### We should -fix this.) -n -If omitted, @var{domain} defaults to the selected window. +Optional arguments @var{default} and @var{no-fallback} are the same as +in @code{specifier-instance}. @xref{Specifiers}. +@end defun -@var{noerror} controls what happens when the image cannot be generated. -If @code{nil}, an error message is generated. If @code{t}, no messages -are generated and this function returns @code{nil}. If anything else, a -warning message is generated and this function returns @code{nil}. +@defun remove-glyph-property glyph property &optional locale tag-set exact-p +This function removes a property from a glyph. For built-in properties, +this is analogous to @code{remove-specifier}. @xref{Specifiers, +remove-specifier-p}, for the meaning of the @var{locale}, @var{tag-set}, +and @var{exact-p} arguments. @end defun -@defun colorize-image-instance image-instance foreground background -This function makes the image instance be displayed in the given -colors. Image instances come in two varieties: bitmaps, which are 1 -bit deep which are rendered in the prevailing foreground and background -colors; and pixmaps, which are of arbitrary depth (including 1) and -which have the colors explicitly specified. This function converts a -bitmap to a pixmap. If the image instance was a pixmap already, -nothing is done (and @code{nil} is returned). Otherwise @code{t} is -returned. + +@node Glyph Convenience Functions +@subsection Glyph Convenience Functions + + The following functions are provided for working with specific +properties of a glyph. Note that these are exactly like calling +the general functions described above and passing in the +appropriate value for @var{property}. + + Remember that if you want to determine the ``value'' of a +specific glyph property, you probably want to use the @code{*-instance} +functions. For example, to determine whether a glyph contributes +to its line height, use @code{glyph-contrib-p-instance}, not +@code{glyph-contrib-p}. (The latter will return a boolean specifier +or a list of specifications, and you probably aren't concerned with +these.) + +@defun glyph-image glyph &optional locale +This function is equivalent to calling @code{glyph-property} with +a property of @code{image}. The return value will be an image +specifier if @var{locale} is @code{nil} or omitted; otherwise, +it will be a specification or list of specifications. @end defun -@defun image-instance-name image-instance -This function returns the name of the given image instance. +@defun set-glyph-image glyph spec &optional locale tag-set how-to-add +This function is equivalent to calling @code{set-glyph-property} with +a property of @code{image}. @end defun -@defun image-instance-domain image-instance +@defun glyph-image-instance glyph &optional domain default no-fallback +This function returns the instance of @var{glyph}'s image in the given +@var{domain}, and is equivalent to calling +@code{glyph-property-instance} with a property of @code{image}. The +return value will be an image instance. -Return the governing domain of the given @var{image-instance}. The -governing domain of an image instance is the domain that the image -instance is specific to. It is @emph{NOT} necessarily the domain that -was given to the call to @code{specifier-instance} that resulted in the -creation of this image instance. See @code{make-image-instance} for -more information on governing domains. +Normally @var{domain} will be a window or @code{nil} (meaning the +selected window), and an instance object describing how the image +appears in that particular window and buffer will be returned. @end defun +@defun glyph-contrib-p glyph &optional locale +This function is equivalent to calling @code{glyph-property} with +a property of @code{contrib-p}. The return value will be a boolean +specifier if @var{locale} is @code{nil} or omitted; otherwise, +it will be a specification or list of specifications. +@end defun -@defun image-instance-string image-instance -This function returns the string of the given image instance. This will -only be non-@code{nil} for text image instances. +@defun set-glyph-contrib-p glyph spec &optional locale tag-set how-to-add +This function is equivalent to calling @code{set-glyph-property} with +a property of @code{contrib-p}. @end defun -@defun image-instance-file-name image-instance -This function returns the file name from which @var{image-instance} was -read, if known. +@defun glyph-contrib-p-instance glyph &optional domain default no-fallback +This function returns whether the glyph contributes to its line height +in the given @var{domain}, and is equivalent to calling +@code{glyph-property-instance} with a property of @code{contrib-p}. The +return value will be either @code{nil} or @code{t}. (Normally @var{domain} +will be a window or @code{nil}, meaning the selected window.) @end defun -@defun image-instance-mask-file-name image-instance -This function returns the file name from which @var{image-instance}'s -mask was read, if known. +@defun glyph-baseline glyph &optional locale +This function is equivalent to calling @code{glyph-property} with a +property of @code{baseline}. The return value will be a specifier if +@var{locale} is @code{nil} or omitted; otherwise, it will be a +specification or list of specifications. @end defun -@defun image-instance-depth image-instance -This function returns the depth of the image instance. This is 0 for a -mono pixmap, or a positive integer for a color pixmap. +@defun set-glyph-baseline glyph spec &optional locale tag-set how-to-add +This function is equivalent to calling @code{set-glyph-property} with +a property of @code{baseline}. @end defun -@defun image-instance-height image-instance -This function returns the height of the image instance, in pixels. +@defun glyph-baseline-instance glyph &optional domain default no-fallback +This function returns the instance of @var{glyph}'s baseline value in +the given @var{domain}, and is equivalent to calling +@code{glyph-property-instance} with a property of @code{baseline}. The +return value will be an integer or @code{nil}. + +Normally @var{domain} will be a window or @code{nil} (meaning the +selected window), and an instance object describing the baseline value +appears in that particular window and buffer will be returned. @end defun -@defun image-instance-width image-instance -This function returns the width of the image instance, in pixels. +@defun glyph-face glyph +This function returns the face of @var{glyph}. (Remember, this is +not a specifier, but a simple property.) @end defun -@defun image-instance-hotspot-x image-instance -This function returns the X coordinate of the image instance's hotspot, -if known. This is a point relative to the origin of the pixmap. When -an image is used as a mouse pointer, the hotspot is the point on the -image that sits over the location that the pointer points to. This is, -for example, the tip of the arrow or the center of the crosshairs. +@defun set-glyph-face glyph face +This function changes the face of @var{glyph} to @var{face}. +@end defun + + +@node Glyph Dimensions +@subsection Glyph Dimensions -This will always be @code{nil} for a non-pointer image instance. +@defun glyph-width glyph &optional window +This function returns the width of @var{glyph} on @var{window}. This +may not be exact as it does not take into account all of the context +that redisplay will. @end defun -@defun image-instance-hotspot-y image-instance -This function returns the Y coordinate of the image instance's hotspot, -if known. +@defun glyph-ascent glyph &optional window +This function returns the ascent value of @var{glyph} on @var{window}. +This may not be exact as it does not take into account all of the +context that redisplay will. @end defun -@defun image-instance-foreground image-instance -This function returns the foreground color of @var{image-instance}, if -applicable. This will be a color instance or @code{nil}. (It will only -be non-@code{nil} for colorized mono pixmaps and for pointers.) +@defun glyph-descent glyph &optional window +This function returns the descent value of @var{glyph} on @var{window}. +This may not be exact as it does not take into account all of the +context that redisplay will. @end defun -@defun image-instance-background image-instance -This function returns the background color of @var{image-instance}, if -applicable. This will be a color instance or @code{nil}. (It will only -be non-@code{nil} for colorized mono pixmaps and for pointers.) +@defun glyph-height glyph &optional window +This function returns the height of @var{glyph} on @var{window}. (This +is equivalent to the sum of the ascent and descent values.) This may +not be exact as it does not take into account all of the context that +redisplay will. @end defun @node Glyph Types -@section Glyph Types +@subsection Glyph Types Each glyph has a particular type, which controls how the glyph's image is generated. Each glyph type has a corresponding list of allowable @@ -1221,6 +1978,7 @@ for the glyph's type. extent, in the modeline, and in the toolbar. Their image can be instantiated as @code{nothing}, @code{mono-pixmap}, @code{color-pixmap}, @code{text}, and @code{subwindow}. +@c #### Check status of subwindows ... I thought Andy implemented them. @item @code{pointer} glyphs can be used to specify the mouse pointer. Their @@ -1261,126 +2019,6 @@ This function returns non-@code{nil} if @var{object} is a glyph of type @code{pointer}. @end defun -@node Mouse Pointer -@section Mouse Pointer -@cindex mouse cursor -@cindex cursor (mouse) -@cindex pointer (mouse) -@cindex mouse pointer - -The shape of the mouse pointer when over a particular section of a frame -is controlled using various glyph variables. Since the image of a glyph -is a specifier, it can be controlled on a per-buffer, per-frame, per-window, -or per-device basis. - -You should use @code{set-glyph-image} to set the following variables, -@emph{not} @code{setq}. - -@defvr Glyph text-pointer-glyph -This variable specifies the shape of the mouse pointer when over text. -@end defvr - -@defvr Glyph nontext-pointer-glyph -This variable specifies the shape of the mouse pointer when over a -buffer, but not over text. If unspecified in a particular domain, -@code{text-pointer-glyph} is used. -@end defvr - -@defvr Glyph modeline-pointer-glyph -This variable specifies the shape of the mouse pointer when over the modeline. -If unspecified in a particular domain, @code{nontext-pointer-glyph} is used. -@end defvr - -@defvr Glyph selection-pointer-glyph -This variable specifies the shape of the mouse pointer when over a -selectable text region. If unspecified in a particular domain, -@code{text-pointer-glyph} is used. -@end defvr - -@defvr Glyph gc-pointer-glyph -This variable specifies the shape of the mouse pointer when a garbage -collection is in progress. If the selected window is on a window system -and this glyph specifies a value (i.e. a pointer image instance) in the -domain of the selected window, the pointer will be changed as specified -during garbage collection. Otherwise, a message will be printed in the -echo area, as controlled by @code{gc-message}. -@end defvr - -@defvr Glyph busy-pointer-glyph -This variable specifies the shape of the mouse pointer when XEmacs is busy. -If unspecified in a particular domain, the pointer is not changed -when XEmacs is busy. -@end defvr - -@defvr Glyph menubar-pointer-glyph -This variable specifies the shape of the mouse pointer when over the -menubar. If unspecified in a particular domain, the -window-system-provided default pointer is used. -@end defvr - -@defvr Glyph scrollbar-pointer-glyph -This variable specifies the shape of the mouse pointer when over a -scrollbar. If unspecified in a particular domain, the -window-system-provided default pointer is used. -@end defvr - -@defvr Glyph toolbar-pointer-glyph -This variable specifies the shape of the mouse pointer when over a -toolbar. If unspecified in a particular domain, -@code{nontext-pointer-glyph} is used. -@end defvr - -Internally, these variables are implemented in -@code{default-mouse-motion-handler}, and thus only take effect when the -mouse moves. That function calls @code{set-frame-pointer}, which sets -the current mouse pointer for a frame. - -@defun set-frame-pointer frame image-instance -This function sets the mouse pointer of @var{frame} to the given pointer -image instance. You should not call this function directly. -(If you do, the pointer will change again the next time the mouse moves.) -@end defun - -@node Redisplay Glyphs -@section Redisplay Glyphs - -@defvr Glyph truncation-glyph -This variable specifies what is displayed at the end of truncated lines. -@end defvr - -@defvr Glyph continuation-glyph -This variable specifies what is displayed at the end of wrapped lines. -@end defvr - -@defvr Glyph octal-escape-glyph -This variable specifies what to prefix character codes displayed in octal -with. -@end defvr - -@defvr Glyph hscroll-glyph -This variable specifies what to display at the beginning of horizontally -scrolled lines. -@end defvr - -@defvr Glyph invisible-text-glyph -This variable specifies what to use to indicate the presence of -invisible text. This is the glyph that is displayed when an ellipsis is -called for, according to @code{selective-display-ellipses} or -@code{buffer-invisibility-spec}). Normally this is three dots (``...''). -@end defvr - -@defvr Glyph control-arrow-glyph -This variable specifies what to use as an arrow for control characters. -@end defvr - -@node Subwindows -@section Subwindows - -Subwindows are not currently implemented. - -@defun subwindowp object -This function returns non-@code{nil} if @var{object} is a subwindow. -@end defun @node Glyph Examples @section Glyph Examples @@ -1454,7 +2092,7 @@ Once you have a glyph, you can then insert it into a buffer. Example: ;; current buffer. Any existing glyph at this location is replaced. (defun insert-glyph (gl) "Insert a glyph at the left edge of point." - (let ( (prop 'myimage) ;; myimage is an arbitrary name, chosen + (let ( (prop 'myimage) ;; myimage is an arbitrary name, chosen ;; to (hopefully) not conflict with any ;; other properties. Change it if ;; necessary. diff --git a/man/lispref/lispref.texi b/man/lispref/lispref.texi index ed05c96..2ff7479 100644 --- a/man/lispref/lispref.texi +++ b/man/lispref/lispref.texi @@ -994,39 +994,57 @@ Colors Glyphs -* Glyph Functions:: Functions for working with glyphs. -* Images:: Graphical images displayed in a frame. -* Glyph Types:: Each glyph has a particular type. -* Mouse Pointer:: Controlling the mouse pointer. -* Redisplay Glyphs:: Glyphs controlling various redisplay functions. -* Subwindows:: Inserting an externally-controlled subwindow - into a buffer. -* Glyph Examples:: Examples of how to work with glyphs. +* Glyph Intro:: Glyphs are abstract image specifications. +* Images:: Specifying the appearance of glyphs. +* Using Glyphs:: Creating and displaying glyphs. +* Manipulating Glyphs:: Getting and setting glyph properties. +* Glyph Examples:: Examples of how to work with glyphs. -Glyph Functions +Images -* Creating Glyphs:: Creating new glyphs. -* Glyph Properties:: Accessing and modifying a glyph's properties. -* Glyph Convenience Functions:: - Convenience functions for accessing particular - properties of a glyph. -* Glyph Dimensions:: Determining the height, width, etc. of a glyph. +* Image Specifiers:: Specifying an image's appearance. +* Image Instantiator Conversion:: Lazy realization of graphics. +* Image Instantiator Formats:: A catalog of image descriptors. +* Image Instances:: Classes of graphical objects. -Images +Image Instances + +* Image Instance Types:: Each image instances has a particular type. +* Image Instance Functions:: Functions for working with image instances. + +Using Glyphs -* Image Specifiers:: Specifying how an image will appear. -* Image Instantiator Conversion:: - Conversion is applied to image instantiators - at the time they are added to an - image specifier or at the time they - are passed to @code{make-image-instance}. -* Image Instances:: What an image specifier gets instanced as. Image Instances * Image Instance Types:: Each image instances has a particular type. * Image Instance Functions:: Functions for working with image instances. +Using Glyphs + +* Creating Glyphs:: Creating new glyphs. +* Buffer Glyphs:: Annotations are glyphs that appear in a buffer. +* Redisplay Glyphs:: Glyphs controlling various redisplay functions. +* Frame Glyphs:: Displaying glyphs in GUI components of the frame. +* External Glyphs:: Icons and mouse pointers for the window system. +* Native GUI Widgets:: Complex active elements treated as a single glyph. +* Subwindows:: Externally-controlled subwindows in buffers. + +Native GUI Widgets + +* Introduction to Widgets:: Native widgets provide tight integration of + GUI features with the platform GUI. +* Lisp API to Native Widgets:: Native widgets are glyphs. +* Layouts:: Specifying composite widgets from Lisp. +* Primitive Widgets:: Catalogue of available native widgets. + +Manipulating Glyphs + +* Glyph Properties:: Accessing and modifying a glyph's properties. +* Glyph Convenience Functions:: Accessing particular properties of a glyph. +* Glyph Dimensions:: Determining the height, width, etc. of a glyph. +* Glyph Types:: Each glyph has a particular type. + Annotations * Annotation Basics:: Introduction to annotations. diff --git a/man/lispref/mule.texi b/man/lispref/mule.texi index a3b68bf..e01a2a1 100644 --- a/man/lispref/mule.texi +++ b/man/lispref/mule.texi @@ -1723,7 +1723,7 @@ depends on the keyword). * CCL Statements:: Semantics of CCL statements. * CCL Expressions:: Operators and expressions in CCL. * Calling CCL:: Running CCL programs. -* CCL Examples:: The encoding functions for Big5 and KOI-8. +* CCL Example:: A trivial program to transform the Web's URL encoding. @end menu @node CCL Syntax, CCL Statements, , CCL @@ -1942,7 +1942,7 @@ complicated transformation of the Japanese standard JIS encoding to Shift JIS. CCL_DECODE_SJIS is its inverse.) It is somewhat odd to represent the SJIS operations in infix form. -@node Calling CCL, CCL Examples, CCL Expressions, CCL +@node Calling CCL, CCL Example, CCL Expressions, CCL @comment Node, Next, Previous, Up @subsection Calling CCL @@ -2008,11 +2008,307 @@ value and 0. Resets the CCL interpreter's internal elapsed time registers. @end defun -@node CCL Examples, , Calling CCL, CCL +@node CCL Example, , Calling CCL, CCL @comment Node, Next, Previous, Up -@subsection CCL Examples +@subsection CCL Example + + In this section, we describe the implementation of a trivial coding +system to transform from the Web's URL encoding to XEmacs' internal +coding. Many people will have been first exposed to URL encoding when +they saw ``%20'' where they expected a space in a file's name on their +local hard disk; this can happen when a browser saves a file from the +web and doesn't encode the name, as passed from the server, properly. + + URL encoding itself is underspecified with regard to encodings beyond +ASCII. The relevant document, RFC 1738, explicitly doesn't give any +information on how to encode non-ASCII characters, and the ``obvious'' +way---use the %xx values for the octets of the eight bit MIME character +set in which the page was served---breaks when a user types a character +outside that character set. Best practice for web development is to +serve all pages as UTF-8 and treat incoming form data as using that +coding system. (Oh, and gamble that your clients won't ever want to +type anything outside Unicode. But that's not so much of a gamble with +today's client operating systems.) We don't treat non-ASCII in this +example, as dealing with @samp{(read-multibyte-character ...)} and +errors therewith would make it much harder to understand. + + Since CCL isn't a very rich language, we move much of the logic that +would ordinarily be computed from operations like @code{(member ..)}, +@code{(and ...)} and @code{(or ...)} into tables, from which register +values are read and written, and on which @code{if} statements are +predicated. Much more of the implementation of this coding system is +occupied with constructing these tables---in normal Emacs Lisp---than it +is with actual CCL code. + + All the @code{defvar} statements we deal with in the next few sections +are surrounded by a @code{(eval-and-compile ...)}, which means that the +logic which initializes these variables executes at compile time, and if +XEmacs loads the compiled version of the file, these variables are +initialized as constants. - This section is not yet written. +@menu +* Four bits to ASCII:: Two tables used for getting hex digits from ASCII. +* URI Encoding constants:: Useful predefined characters. +* Numeric to ASCII-hexadecimal conversion:: Trivial in Lisp, not so in CCL. +* Characters to be preserved:: No transformation needed for these characters. +* The program to decode to internal format:: . +* The program to encode from internal format:: . +* The actual coding system:: . +@end menu + +@node Four bits to ASCII, URI Encoding constants, , CCL Example +@subsubsection Four bits to ASCII + + The first @code{defvar} is for +@code{url-coding-high-order-nybble-as-ascii}, a 256-entry table that +maps from an octet's value to the ASCII encoding for the hex value of +its most significant four bits. That might sound complex, but it isn't; +for decimal 65, hex value @samp{#x41}, the entry in the table is the +ASCII encoding of `4'. For decimal 122, ASCII `z', hex value +@code{#x7a}, @code{(elt url-coding-high-order-nybble-as-ascii #x7a)} +after this file is loaded gives the ASCII encoding of 7. + +@example +(defvar url-coding-high-order-nybble-as-ascii + (let ((val (make-vector 256 0)) + (i 0)) + (while (< i (length val)) + (aset val i (char-to-int (aref (format "%02X" i) 0))) + (setq i (1+ i))) + val) + "Table to find an ASCII version of an octet's most significant 4 bits.") +@end example + + The next table, @code{url-coding-low-order-nybble-as-ascii} is almost +the same thing, but this time it has a map for the hex encoding of the +low-order four bits. So the sixty-fifth entry (offset @samp{#x41}) is +the ASCII encoding of `1', the hundred-and-twenty-second (offset +@samp{#x7a}) is the ASCII encoding of `A'. + +@example +(defvar url-coding-low-order-nybble-as-ascii + (let ((val (make-vector 256 0)) + (i 0)) + (while (< i (length val)) + (aset val i (char-to-int (aref (format "%02X" i) 1))) + (setq i (1+ i))) + val) + "Table to find an ASCII version of an octet's least significant 4 bits.") +@end example + +@node URI Encoding constants, Numeric to ASCII-hexadecimal conversion, Four bits to ASCII, CCL Example +@subsubsection URI Encoding constants + + Next, we have a couple of variables that make the CCL code more +readable. The first is the ASCII encoding of the percentage sign; this +character is used as an escape code, to start the encoding of a +non-printable character. For historical reasons, URL encoding allows +the space character to be encoded as a plus sign--it does make typing +URLs like @samp{http://google.com/search?q=XEmacs+home+page} easier--and +as such, we have to check when decoding for this value, and map it to +the space character. When doing this in CCL, we use the +@code{url-coding-escaped-space-code} variable. + +@example +(defvar url-coding-escape-character-code (char-to-int ?%) + "The code point for the percentage sign, in ASCII.") + +(defvar url-coding-escaped-space-code (char-to-int ?+) + "The URL-encoded value of the space character, that is, +.") +@end example + +@node Numeric to ASCII-hexadecimal conversion, Characters to be preserved, URI Encoding constants, CCL Example +@subsubsection Numeric to ASCII-hexadecimal conversion + + Now, we have a couple of utility tables that wouldn't be necessary in +a more expressive programming language than is CCL. The first is sixteen +in length, and maps a hexadecimal number to the ASCII encoding of that +number; so zero maps to ASCII `0', ten maps to ASCII `A.' The second +does the reverse; that is, it maps an ASCII character to its value when +interpreted as a hexadecimal digit. ('A' => 10, 'c' => 12, '2' => 2, as +a few examples.) + +@example +(defvar url-coding-hex-digit-table + (let ((i 0) + (val (make-vector 16 0))) + (while (< i 16) + (aset val i (char-to-int (aref (format "%X" i) 0))) + (setq i (1+ i))) + val) + "A map from a hexadecimal digit's numeric value to its encoding in ASCII.") + +(defvar url-coding-latin-1-as-hex-table + (let ((val (make-vector 256 0)) + (i 0)) + (while (< i (length val)) + ;; Get a hex val for this ASCII character. + (aset val i (string-to-int (format "%c" i) 16)) + (setq i (1+ i))) + val) + "A map from Latin 1 code points to their values as hexadecimal digits.") +@end example + +@node Characters to be preserved, The program to decode to internal format, Numeric to ASCII-hexadecimal conversion, CCL Example +@subsubsection Characters to be preserved + + And finally, the last of these tables. URL encoding says that +alphanumeric characters, the underscore, hyphen and the full stop +@footnote{That's what the standards call it, though my North American +readers will be more familiar with it as the period character.} retain +their ASCII encoding, and don't undergo transformation. +@code{url-coding-should-preserve-table} is an array in which the entries +are one if the corresponding ASCII character should be left as-is, and +zero if they should be transformed. So the entries for all the control +and most of the punctuation charcters are zero. Lisp programmers will +observe that this initialization is particularly inefficient, but +they'll also be aware that this is a long way from an inner loop where +every nanosecond counts. + +@example +(defvar url-coding-should-preserve-table + (let ((preserve + (list ?- ?_ ?. ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o + ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z ?A ?B ?C ?D ?E ?F ?G + ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y + ?Z ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)) + (i 0) + (res (make-vector 256 0))) + (while (< i 256) + (when (member (int-char i) preserve) + (aset res i 1)) + (setq i (1+ i))) + res) + "A 256-entry array of flags, indicating whether or not to preserve an +octet as its ASCII encoding.") +@end example + +@node The program to decode to internal format, The program to encode from internal format, Characters to be preserved, CCL Example +@subsubsection The program to decode to internal format + + After the almost interminable tables, we get to the CCL. The first +CCL program, @code{ccl-decode-urlcoding} decodes from the URL coding to +our internal format; since this version of CCL doesn't have support for +error checking on the input, we don't do any verification on it. + +The buffer magnification--approximate ratio of the size of the output +buffer to the size of the input buffer--is declared as one, because +fractional values aren't allowed. (Since all those %20's will map to +` ', the length of the output text will be less than that of the input +text.) + +So, first we read an octet from the input buffer into register +@samp{r0}, to set up the loop. Next, we start the loop, with a +@code{(loop ...)} statement, and we check if the value in @samp{r0} is a +percentage sign. (Note the comma before +@code{url-coding-escape-character-code}; since CCL is a Lisp macro +language, we can break out of the macro evaluation with a comman, and as +such, ``@code{,url-coding-escape-character-code}'' will be evaluated as a +literal `37.') + +If it is a percentage sign, we read the next two octets into @samp{r2} +and @samp{r3}, and convert them into their hexadecimal numeric values, +using the @code{url-coding-latin-1-as-hex-table} array declared above. +(But again, it'll be interpreted as a literal array.) We then left +shift the first by four bits, mask the two together, and write the +result to the output buffer. + +If it isn't a percentage sign, and it is a `+' sign, we write a +space--hexadecimal 20--to the output buffer. + +If none of those things are true, we pass the octet to the output buffer +untransformed. (This could be a place to put error checking, in a more +expressive language.) We then read one more octet from the input +buffer, and move to the next iteration of the loop. + +@example +(define-ccl-program ccl-decode-urlcoding + `(1 + ((read r0) + (loop + (if (r0 == ,url-coding-escape-character-code) + ((read r2 r3) + ;; Assign the value at offset r2 in the url-coding-hex-digit-table + ;; to r3. + (r2 = r2 ,url-coding-latin-1-as-hex-table) + (r3 = r3 ,url-coding-latin-1-as-hex-table) + (r2 <<= 4) + (r3 |= r2) + (write r3)) + (if (r0 == ,url-coding-escaped-space-code) + (write #x20) + (write r0))) + (read r0) + (repeat)))) + "CCL program to take URI-encoded ASCII text and transform it to our +internal encoding. ") +@end example + +@node The program to encode from internal format, The actual coding system, The program to decode to internal format, CCL Example +@subsubsection The program to encode from internal format + + Next, we see the CCL program to encode ASCII text as URL coded text. +Here, the buffer magnification is specified as three, to account for ` ' +mapping to %20, etc. As before, we read an octet from the input into +@samp{r0}, and move into the body of the loop. Next, we check if we +should preserve the value of this octet, by reading from offset +@samp{r0} in the @code{url-coding-should-preserve-table} into @samp{r1}. +Then we have an @samp{if} statement predicated on the value in +@samp{r1}; for the true branch, we write the input octet directly. For +the false branch, we write a percentage sign, the ASCII encoding of the +high four bits in hex, and then the ASCII encoding of the low four bits +in hex. + +We then read an octet from the input into @samp{r0}, and repeat the loop. + +@example +(define-ccl-program ccl-encode-urlcoding + `(3 + ((read r0) + (loop + (r1 = r0 ,url-coding-should-preserve-table) + ;; If we should preserve the value, just write the octet directly. + (if r1 + (write r0) + ;; else, write a percentage sign, and the hex value of the octet, in + ;; an ASCII-friendly format. + ((write ,url-coding-escape-character-code) + (write r0 ,url-coding-high-order-nybble-as-ascii) + (write r0 ,url-coding-low-order-nybble-as-ascii))) + (read r0) + (repeat)))) + "CCL program to encode octets (almost) according to RFC 1738") +@end example + +@node The actual coding system, , The program to encode from internal format, CCL Example +@subsubsection The actual coding system + +To actually create the coding system, we call +@samp{make-coding-system}. The first argument is the symbol that is to +be the name of the coding system, in our case @samp{url-coding}. The +second specifies that the coding system is to be of type +@samp{ccl}---there are several other coding system types available, +including, see the documentation for @samp{make-coding-system} for the +full list. Then there's a documentation string describing the wherefore +and caveats of the coding system, and the final argument is a property +list giving information about the CCL programs and the coding system's +mnemonic. + +@example +(make-coding-system + 'url-coding 'ccl + "The coding used by application/x-www-form-urlencoded HTTP applications. +This coding form doesn't specify anything about non-ASCII characters, so +make sure you've transformed to a seven-bit coding system first." + '(decode ccl-decode-urlcoding + encode ccl-encode-urlcoding + mnemonic "URLenc")) +@end example + +If you're lucky, the @samp{url-coding} coding system describe here +should be available in the XEmacs package system. Otherwise, downloading +it from @samp{http://www.parhasard.net/url-coding.el} should work for +the foreseeable future. @node Category Tables, , CCL, MULE @section Category Tables diff --git a/man/lispref/searching.texi b/man/lispref/searching.texi index fd8c292..4f82114 100644 --- a/man/lispref/searching.texi +++ b/man/lispref/searching.texi @@ -516,6 +516,19 @@ characters that stand for them. @item \S@var{code} @cindex @samp{\S} in regexp matches any character whose syntax is not @var{code}. + +@item \c@var{category} +@cindex @samp{\c} in regexp +matches any character in @var{category}. Only available under Mule, +categories, and category tables, are further described in @ref{Category +Tables}. They are a mechanism for constructing classes of characters +that can be local to a buffer, and that do not require complicated [] +expressions every time they are referenced. + +@item \C@var{category} +@cindex @samp{\C} in regexp +matches any character outside @var{category}. @xref{Category Tables}, +again, and note that this is only available under Mule. @end table The following regular expression constructs match the empty string---that is, diff --git a/netinstall/ChangeLog b/netinstall/ChangeLog index dcdfabf..f02e55e 100644 --- a/netinstall/ChangeLog +++ b/netinstall/ChangeLog @@ -1,3 +1,7 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/nt/ChangeLog b/nt/ChangeLog index e729b8a..1c44af6 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,7 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/src/ChangeLog b/src/ChangeLog index a59b580..e69420d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,95 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + +2005-11-27 Kean Johnston + + * redisplay-tty.c (set_tty_modes): + (reset_tty_modes): disable auto-margins if the terminal supports + them. + (init_tty_for_redisplay): fix cursor shape. + +2005-04-05 Aidan Kehoe + + * mule-ccl.c (ccl_driver): Calculate the charset and position code + for control-1 characters properly, both when reading multibyte + characters and writing them. + +2005-03-12 Aidan Kehoe + + * config.h.in: Make HAVE_XTREGISTERDRAWABLE available. + * select-x.c (x_reply_selection_request): Use it; fix the bug we + were seeing with incremental selection transfer failing. + +2005-11-26 Vin Shelton + + * callproc.c (Fold_call_process_internal): Create the buffer if it + does not already exist. The original patch came from Ben Wing in + http://list-archive.xemacs.org/xemacs-patches/200205/msg00117.html + +2002-05-13 Adrian Aichner + + * callproc.c: Process-related docstring improvements spurred by + Norbert Koch. + +2005-11-25 Vin Shelton + + * depend: Regenerated. + +2005-07-11 Malcolm Purvis + + * glyphs-gtk.c: Rename a local static variable because gcc 4.0 + says it clashes with a global with the same name. + +2005-07-11 Atanu Ghosh + + * sysdll.c (dll_open): Under MacOS X return NULL under the + filename is NULL. Fixes problems finding local symbols under 10.4 + (Tiger) + +2005-11-15 Dr. Volker Zell + + * config.h.in: New HAVE_U_INT*_T defines. + + * database.c: Only use u_int*_t typedefs if not already + defined. + +2005-04-07 15:08 Enrico Scholz + + * src/process-unix.c (unix_open_network_stream): moved + 'portbuf' buffer out of an inner block as it is used in the + entire function. With gcc4, the stack may get corrupted + after leaving this block. This patches adjusts the size of + the used buffer also; static '128' bytes are far too much + currently and might not suffice for future architectures + (e.g. for 512 bit ones ;)). Instead of, use only the really + required space (max octets * ln(256)/ln(10) chars + space + for '\0' and the sign) + +2005-04-08 Aidan Kehoe + + * callproc.c: Include sysdir.h, so any necessary Mule processing + is done on the current directory name before starting a new + process. + +2005-04-06 Stephen J. Turnbull + + * chartab.c (Fchar_table_p): + (Fget_range_char_table): + (Fput_char_table): + (Fmap_char_table): + Describe range representation and fix typo. + +2005-02-12 Vin Shelton + + * emacs.c (shut_down_emacs): Advise users to send email to the + xemacs-beta list instead of crashes@xemacs.org. + +2005-02-03 David Evers + + * process-unix.c (unix_send_process): Flush the last chunk, even + when the pipe is blocked. + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/src/callproc.c b/src/callproc.c index 9b39b48..04f31cb 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -48,6 +48,7 @@ Boston, MA 02111-1307, USA. */ #include "systime.h" #include "sysproc.h" #include "sysfile.h" /* Always include after sysproc.h */ +#include "sysdir.h" #include "syssignal.h" /* Always include before systty.h */ #include "systty.h" @@ -169,6 +170,8 @@ Arguments are The program's input comes from file INFILE (nil means `/dev/null'). Insert output in BUFFER before point; t means current buffer; nil for BUFFER means discard it; 0 means discard and don't wait. +If BUFFER is a string, then find or create a buffer with that name, +then insert the output in that buffer, before point. BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case, REAL-BUFFER says what to do with standard output, as above, while STDERR-FILE says what to do with standard error in the child. @@ -288,7 +291,7 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you || ZEROP (buffer))) { Lisp_Object spec_buffer = buffer; - buffer = Fget_buffer (buffer); + buffer = Fget_buffer_create (buffer); /* Mention the buffer name for a better error message. */ if (NILP (buffer)) CHECK_BUFFER (spec_buffer); diff --git a/src/chartab.c b/src/chartab.c index 53fa5fc..bf58ee4 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -457,15 +457,17 @@ once per character). When Mule support exists, the types of ranges that can be assigned values are --- all characters +-- all characters (represented by t) -- an entire charset --- a single row in a two-octet charset +-- a single row in a two-octet charset (represented by a vector of two + elements: a two-octet charset and a row number; the row must be an + integer, not a character) -- a single character When Mule support is not present, the types of ranges that can be assigned values are --- all characters +-- all characters (represented by t) -- a single character To create a char table, use `make-char-table'. @@ -853,8 +855,11 @@ Find value for CHARACTER in CHAR-TABLE. } DEFUN ("get-range-char-table", Fget_range_char_table, 2, 3, 0, /* -Find value for a range in CHAR-TABLE. +Find value for RANGE in CHAR-TABLE. If there is more than one value, return MULTI (defaults to nil). + +Valid values for RANGE are single characters, charsets, a row in a +two-octet charset, and all characters. See `put-char-table'. */ (range, char_table, multi)) { @@ -1142,8 +1147,9 @@ one of the following: -- t (all characters are affected) -- A charset (only allowed when Mule support is present) --- A vector of two elements: a two-octet charset and a row number - (only allowed when Mule support is present) +-- A vector of two elements: a two-octet charset and a row number; the row + must be an integer, not a character (only allowed when Mule support is + present) -- A single character VALUE must be a value appropriate for the type of CHAR-TABLE. @@ -1437,12 +1443,18 @@ slow_map_char_table_fun (struct chartab_range *range, } DEFUN ("map-char-table", Fmap_char_table, 2, 3, 0, /* -Map FUNCTION over entries in CHAR-TABLE, calling it with two args, -each key and value in the table. +Map FUNCTION over CHAR-TABLE until it returns non-nil; return that value. +FUNCTION is called with two arguments, each key and entry in the table. -RANGE specifies a subrange to map over and is in the same format as -the RANGE argument to `put-range-table'. If omitted or t, it defaults to +RANGE specifies a subrange to map over. If omitted or t, it defaults to the entire table. + +Both RANGE and the keys passed to FUNCTION are in the same format as the +RANGE argument to `put-char-table'. N.B. This function does NOT map over +all characters in RANGE, but over the subranges that have been assigned to. +Thus this function is most suitable for searching a char-table, or for +populating one char-table based on the contents of another. The current +implementation does not coalesce ranges all of whose values are the same. */ (function, char_table, range)) { diff --git a/src/config.h.in b/src/config.h.in index f32e890..5b8cefa 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -205,6 +205,7 @@ void *alloca (); #undef THIS_IS_X11R6 #undef HAVE_XCONVERTCASE +#undef HAVE_XTREGISTERDRAWABLE #undef HAVE_BALLOON_HELP @@ -422,6 +423,15 @@ void *alloca (); /* Compile in support for DBM databases? May require libgdbm or libdbm. */ #undef HAVE_DBM +/* Define to 1 if the system has the type `u_int8_t'. */ +#undef HAVE_U_INT8_T +/* Define to 1 if the system has the type `u_int16_t'. */ +#undef HAVE_U_INT16_T +/* Define to 1 if the system has the type `u_int32_t'. */ +#undef HAVE_U_INT32_T +/* Define to 1 if the system has the type `u_int64_t'. */ +#undef HAVE_U_INT64_T + /* Compile in support for Berkeley DB style databases? May require libdb. */ #undef HAVE_BERKELEY_DB /* Full #include file path for Berkeley DB's db.h */ diff --git a/src/console-tty.h b/src/console-tty.h index ba05621..cf9dd84 100644 --- a/src/console-tty.h +++ b/src/console-tty.h @@ -82,6 +82,8 @@ struct tty_console character info */ unsigned int flow_control :1; /* Nonzero means use ^S/^Q as cretinous flow control. */ + unsigned int auto_margins :1; /* Nonzero means terminal wraps when + writing to the last column */ int standout_width; /* # of spaces printed when change to standout mode */ int underline_width; /* # of spaces printed when @@ -175,6 +177,9 @@ struct tty_console const char *keypad_off; /* rmkx, ke */ const char *orig_pair; /* op, op */ + + const char *disable_auto_margins; /* rmam, RA */ + const char *enable_auto_margins; /* smam, SA */ } sd; /* costs of various operations */ diff --git a/src/database.c b/src/database.c index 2e07885..33a8615 100644 --- a/src/database.c +++ b/src/database.c @@ -46,13 +46,21 @@ Boston, MA 02111-1307, USA. */ #define __BIT_TYPES_DEFINED__ #include #ifndef __FreeBSD__ +#if !HAVE_U_INT8_T typedef uint8_t u_int8_t; +#endif +#if !HAVE_U_INT16_T typedef uint16_t u_int16_t; +#endif +#if !HAVE_U_INT32_T typedef uint32_t u_int32_t; +#endif #ifdef WE_DONT_NEED_QUADS +#if !HAVE_U_INT64_T typedef uint64_t u_int64_t; #endif #endif /* WE_DONT_NEED_QUADS */ +#endif /* !defined(__FreeBSD__) */ #endif /* HAVE_INTTYPES_H */ #endif /* !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1) */ /* Berkeley DB wants __STDC__ to be defined; else if does `#define const' */ diff --git a/src/depend b/src/depend index f6a7d10..1fb89da 100644 --- a/src/depend +++ b/src/depend @@ -91,7 +91,7 @@ blocktype.o: $(LISP_H) blocktype.h buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h opaque.h syntax.h callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h events.h insdel.h mule-charset.h redisplay.h scrollbar.h systime.h window.h winslots.h -callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h +callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h ndir.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h opaque.h chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syntax.h diff --git a/src/emacs.c b/src/emacs.c index 8d3485b..7ca2548 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -3070,7 +3070,7 @@ shut_down_emacs (int sig, Lisp_Object stuff, int no_auto_save) #else "Please report this bug by invoking M-x report-emacs-bug,\n" "or by selecting `Send Bug Report' from the Help menu. If necessary, send\n" - "ordinary email to `crashes@xemacs.org'. *MAKE SURE* to include the XEmacs\n" + "ordinary email to `xemacs-beta@xemacs.org'. *MAKE SURE* to include the XEmacs\n" "configuration from M-x describe-installation, or equivalently the file\n" "Installation in the top of the build tree.\n" #endif diff --git a/src/glyphs-gtk.c b/src/glyphs-gtk.c index d33e8d0..83fe167 100644 --- a/src/glyphs-gtk.c +++ b/src/glyphs-gtk.c @@ -2999,7 +2999,7 @@ complex_vars_of_glyphs_gtk (void) /* shared data for the image read/parse logic */ static short hexTable[256]; /* conversion value */ -static int initialized = FALSE; /* easier to fill in at run time */ +static int hexTable_initialized = FALSE; /* easier to fill in at run time */ /* * Table index for the hex values. Initialized once, first time. @@ -3032,7 +3032,7 @@ static void initHexTable() hexTable['}'] = -1; hexTable['\n'] = -1; hexTable['\t'] = -1; - initialized = TRUE; + hexTable_initialized = TRUE; } /* @@ -3089,7 +3089,7 @@ int read_bitmap_data (fstream, width, height, datap, x_hot, y_hot) #define Xmalloc(size) malloc(size) /* first time initialization */ - if (initialized == FALSE) initHexTable(); + if (hexTable_initialized == FALSE) initHexTable(); /* error cleanup and return macro */ #define RETURN(code) { if (data) free (data); return code; } diff --git a/src/mule-ccl.c b/src/mule-ccl.c index 947d64b..1091ef3 100644 --- a/src/mule-ccl.c +++ b/src/mule-ccl.c @@ -1303,6 +1303,13 @@ ccl_driver (struct ccl_program *ccl, reg[RRR] = i; reg[rrr] = (*src++ & 0x7F); } + else if (LEADING_BYTE_CONTROL_1 == i) + { + if (src >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = i; + reg[rrr] = (*src++ - 0xA0); + } else if (i <= MAX_LEADING_BYTE_OFFICIAL_2) { if ((src + 1) >= src_end) @@ -1350,7 +1357,7 @@ ccl_driver (struct ccl_program *ccl, case CCL_WriteMultibyteChar2: i = reg[RRR]; /* charset */ - if (i == LEADING_BYTE_ASCII) + if (i == LEADING_BYTE_ASCII || i == LEADING_BYTE_CONTROL_1) i = reg[rrr] & 0xFF; else if (XCHARSET_DIMENSION (CHARSET_BY_LEADING_BYTE (i)) == 1) i = (((i - FIELD2_TO_OFFICIAL_LEADING_BYTE) << 7) diff --git a/src/process-unix.c b/src/process-unix.c index 424246f..05b5046 100644 --- a/src/process-unix.c +++ b/src/process-unix.c @@ -1293,26 +1293,38 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream) Bufbyte chunkbuf[512]; Bytecount chunklen; - while (1) + do { Lstream_data_count writeret; chunklen = Lstream_read (lstream, chunkbuf, 512); - if (chunklen <= 0) - break; /* perhaps should ABORT() if < 0? - This should never happen. */ old_sigpipe = (SIGTYPE (*) (int)) signal (SIGPIPE, send_process_trap); - /* Lstream_write() will never successfully write less than - the amount sent in. In the worst case, it just buffers - the unwritten data. */ - writeret = Lstream_write (XLSTREAM (DATA_OUTSTREAM(p)), chunkbuf, - chunklen); - signal (SIGPIPE, old_sigpipe); - if (writeret < 0) - /* This is a real error. Blocking errors are handled - specially inside of the filedesc stream. */ - report_file_error ("writing to process", list1 (proc)); + if (chunklen > 0) + { + int save_errno; + + /* Lstream_write() will never successfully write less than + the amount sent in. In the worst case, it just buffers + the unwritten data. */ + writeret = Lstream_write (XLSTREAM (DATA_OUTSTREAM(p)), chunkbuf, + chunklen); + save_errno = errno; + signal (SIGPIPE, old_sigpipe); + errno = save_errno; + if (writeret < 0) + /* This is a real error. Blocking errors are handled + specially inside of the filedesc stream. */ + report_file_error ("writing to process", list1 (proc)); + } + else + { + /* Need to make sure that everything up to and including the + last chunk is flushed, even when the pipe is currently + blocked. */ + Lstream_flush (XLSTREAM (DATA_OUTSTREAM(p))); + signal (SIGPIPE, old_sigpipe); + } while (Lstream_was_blocked_p (XLSTREAM (p->pipe_outstream))) { /* Buffer is full. Wait, accepting input; @@ -1327,7 +1339,9 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream) Lstream_flush (XLSTREAM (p->pipe_outstream)); signal (SIGPIPE, old_sigpipe); } + /* Perhaps should abort() if < 0? This should never happen. */ } + while (chunklen > 0); } else { /* We got here from a longjmp() from the SIGPIPE handler */ @@ -1670,13 +1684,13 @@ unix_open_network_stream (Lisp_Object name, Lisp_Object host, Lisp_Object servic volatile int xerrno = 0; volatile int failed_connect = 0; char *ext_host; + char portbuf[sizeof(long)*3 + 2]; /* * Caution: service can either be a string or int. * Convert to a C string for later use by getaddrinfo. */ if (INTP (service)) { - char portbuf[128]; snprintf (portbuf, sizeof (portbuf), "%ld", (long) XINT (service)); portstring = portbuf; port = htons ((unsigned short) XINT (service)); diff --git a/src/redisplay-tty.c b/src/redisplay-tty.c index fe79a12..1970369 100644 --- a/src/redisplay-tty.c +++ b/src/redisplay-tty.c @@ -864,6 +864,9 @@ set_tty_modes (struct console *c) OUTPUT1_IF (c, TTY_SD (c).init_motion); OUTPUT1_IF (c, TTY_SD (c).cursor_visible); OUTPUT1_IF (c, TTY_SD (c).keypad_on); + + if (TTY_FLAGS (c).auto_margins) + OUTPUT1_IF (c, TTY_SD (c).disable_auto_margins); } /***************************************************************************** @@ -882,6 +885,9 @@ reset_tty_modes (struct console *c) OUTPUT1_IF (c, TTY_SD (c).cursor_normal); OUTPUT1_IF (c, TTY_SD (c).end_motion); + if (TTY_FLAGS (c).auto_margins) + OUTPUT1_IF (c, TTY_SD (c).enable_auto_margins); + { Lisp_Object frm = CONSOLE_SELECTED_FRAME (c); @@ -1185,12 +1191,14 @@ init_tty_for_redisplay (struct device *d, char *terminal_type) TTY_SD (c).audio_bell = "\07"; } - TTY_SD (c).cursor_visible = tgetstr ("ve", &bufptr); - TTY_SD (c).cursor_normal = tgetstr ("vs", &bufptr); + TTY_SD (c).cursor_visible = tgetstr ("vs", &bufptr); + TTY_SD (c).cursor_normal = tgetstr ("ve", &bufptr); TTY_SD (c).init_motion = tgetstr ("ti", &bufptr); TTY_SD (c).end_motion = tgetstr ("te", &bufptr); TTY_SD (c).keypad_on = tgetstr ("ks", &bufptr); TTY_SD (c).keypad_off = tgetstr ("ke", &bufptr); + TTY_SD (c).disable_auto_margins = tgetstr ("RA", &bufptr); + TTY_SD (c).enable_auto_margins = tgetstr ("SA", &bufptr); /* @@ -1203,6 +1211,7 @@ init_tty_for_redisplay (struct device *d, char *terminal_type) TTY_FLAGS (c).memory_below_frame = tgetflag ("db"); TTY_FLAGS (c).standout_width = tgetnum ("sg"); TTY_FLAGS (c).underline_width = tgetnum ("ug"); + TTY_FLAGS (c).auto_margins = tgetflag ("am"); if (TTY_FLAGS (c).standout_width == -1) TTY_FLAGS (c).standout_width = 0; diff --git a/src/select-x.c b/src/select-x.c index 21332fd..8a2cff3 100644 --- a/src/select-x.c +++ b/src/select-x.c @@ -509,14 +509,41 @@ x_reply_selection_request (XSelectionRequestEvent *event, int format, } else { +#ifndef HAVE_XTREGISTERDRAWABLE + invalid_operation("Copying that much data requires X11R6.", Qunbound); +#else /* Send an INCR selection. */ int prop_id; + Widget widget = FRAME_X_TEXT_WIDGET (XFRAME(DEVICE_SELECTED_FRAME(d))); if (x_window_to_frame (d, window)) /* #### debug */ error ("attempt to transfer an INCR to ourself!"); #if 0 stderr_out ("\nINCR %d\n", bytes_remaining); #endif + /* Tell Xt not to drop PropertyNotify events that arrive for the + target window, rather, pass them to us. This would be a hack, but + the Xt selection routines are broken for our purposes--we can't + pass them callbacks from Lisp, for example. Let's call it a + workaround. + + The call to wait_for_property_change means we can break out of that + function, switch to another frame on the same display (which will + be another Xt widget), select a huge amount of text, and have the + same (foreign) app ask for another incremental selection + transfer. Programming like X11 made sense, would mean that, in that + case, XtRegisterDrawable is called twice with different widgets. + + Since the results of calling XtRegisterDrawable when the drawable + is already registered with another widget are undefined, we want to + avoid that--so, only call it when XtWindowToWidget returns NULL, + which it will only do with a valid Window if it's not already + registered. */ + if (NULL == XtWindowToWidget(display, window)) + { + XtRegisterDrawable(display, (Drawable)window, widget); + } + prop_id = expect_property_change (display, window, reply.property, PropertyDelete); @@ -560,10 +587,14 @@ x_reply_selection_request (XSelectionRequestEvent *event, int format, stderr_out (" INCR done\n"); #endif if (! waiting_for_other_props_on_window (display, window)) - XSelectInput (display, window, 0L); + { + XSelectInput (display, window, 0L); + XtUnregisterDrawable(display, (Drawable)window); + } XChangeProperty (display, window, reply.property, type, format, PropModeReplace, data, 0); +#endif /* HAVE_XTREGISTERDRAWABLE */ } } diff --git a/src/sysdll.c b/src/sysdll.c index 679e515..c9e28c0 100644 --- a/src/sysdll.c +++ b/src/sysdll.c @@ -263,11 +263,23 @@ dll_handle dll_open (const char *fname) { NSObjectFileImage file; - NSObjectFileImageReturnCode ret = - NSCreateObjectFileImageFromFile(fname, &file); + NSObjectFileImageReturnCode ret; + + /* + * MacOS X dll support is for bundles, not the current executable, so return + * NULL is this case. However, dll_function() uses a special hack where a + * NULL handle can be used to find executable symbols. This satisfies the + * needs of ui-gtk.c but is not a general solution. + */ + if (fname == NULL) + return NULL; + + ret = NSCreateObjectFileImageFromFile(fname, &file); + if (ret != NSObjectFileImageSuccess) { return NULL; } + return (dll_handle)NSLinkModule(file, fname, NSLINKMODULE_OPTION_BINDNOW | NSLINKMODULE_OPTION_PRIVATE | diff --git a/src/unexelf.c b/src/unexelf.c index 9fdc974..6ac9844 100644 --- a/src/unexelf.c +++ b/src/unexelf.c @@ -475,7 +475,7 @@ typedef struct { # include #endif -#if defined(__FreeBSD__) && (defined(__alpha__) || defined(__amd64__)) +#if defined(__FreeBSD__) && (defined(__alpha__) || defined(_LP64)) # ifdef __STDC__ # define ElfW(type) Elf64_##type # else diff --git a/tests/ChangeLog b/tests/ChangeLog index dbaa581..50fc29b 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2005-12-03 Vin Shelton + + * XEmacs 21.4.18 is released + 2005-02-06 Vin Shelton * XEmacs 21.4.17 is released diff --git a/version.sh b/version.sh index 6833ad4..db4a72e 100644 --- a/version.sh +++ b/version.sh @@ -2,8 +2,8 @@ emacs_is_beta= emacs_major_version=21 emacs_minor_version=4 -emacs_beta_version=17 -xemacs_codename="Jumbo Shrimp" +emacs_beta_version=18 +xemacs_codename="Social Property" emacs_kit_version= infodock_major_version=4 infodock_minor_version=0