+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
+2005-12-01 Vin Shelton <acs@xemacs.org>
+
+ * etc/TUTORIAL.cs: copied from 21.5.
+ * etc/TUTORIAL.sl: copied from 21.5.
+
+2005-11-29 Ilya Golubev <golubev@xemacs.org>
+
+ * 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 <kehoea@parhasard.net>
+
+ * configure.in (XE_COMPUTE_RUNPATH): Check XtRegisterDrawable
+ availability.
+
+2005-04-11 Norbert Koch <viteno@xemacs.org>
+
+ * etc/PACKAGES: etc/PACKAGES: Announce re-builder, xetla.
+
+2005-11-15 Dr. Volker Zell <Dr.Volker.Zell@oracle.com>
+
+ * configure.in: Avoid using Motif also for cygwin
+
+2005-11-15 Dr. Volker Zell <Dr.Volker.Zell@oracle.com>
+
+ * configure.in: Check for u_int*_t typedefs and use them in
+ Berkeley DB detection.
+
+2005-04-11 Norbert Koch <viteno@xemacs.org>
+
+ * etc/PACKAGES: etc/PACKAGES: Announce re-builder, xetla.
+
+2005-03-23 Vin Shelton <acs@xemacs.org>
+
+ * 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 <viteno@xemacs.org>
+
+ * etc/PACKAGES: Announce latin-euro-standards, update mule-base.
+
+2005-02-12 Vin Shelton <acs@xemacs.org>
+
+ * etc/OXYMORONS: New list.
+
2005-02-06 Vin Shelton <acs@xemacs.org>
* XEmacs 21.4.17 is released
*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
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 <<EOF
-#line 3012 "configure"
+#line 3011 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
terminateAndUnload()
; return 0; }
EOF
-if { (eval echo configure:3023: \"$ac_link\") 1>&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
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 " ;;
done
fi
cat > conftest.$ac_ext <<EOF
-#line 3153 "configure"
+#line 3152 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3160: \"$ac_link\") 1>&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
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 <<EOF
-#line 3264 "configure"
+#line 3263 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char malloc_set_state(); below. */
; return 0; }
EOF
-if { (eval echo configure:3287: \"$ac_link\") 1>&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
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 <<EOF
-#line 3309 "configure"
+#line 3308 "configure"
#include "confdefs.h"
extern void (* __after_morecore_hook)();
int main() {
__after_morecore_hook = 0
; return 0; }
EOF
-if { (eval echo configure:3316: \"$ac_link\") 1>&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
# 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.
# 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=":"
# 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.
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
-#line 3516 "configure"
+#line 3515 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 3554 "configure"
+#line 3553 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
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
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 <<EOF
-#line 3597 "configure"
+#line 3596 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <float.h>
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*
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
-#line 3622 "configure"
+#line 3621 "configure"
#include "confdefs.h"
#include <string.h>
EOF
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
-#line 3640 "configure"
+#line 3639 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
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 <<EOF
-#line 3658 "configure"
+#line 3657 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
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
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 <<EOF
-#line 3698 "configure"
+#line 3697 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
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
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 <<EOF
-#line 3734 "configure"
+#line 3733 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
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
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 <<EOF
-#line 3774 "configure"
+#line 3773 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utime.h>
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
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 <<EOF
-#line 3804 "configure"
+#line 3803 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:3827: \"$ac_link\") 1>&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
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 <<EOF
-#line 3862 "configure"
+#line 3861 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
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
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 <<EOF
-#line 3904 "configure"
+#line 3903 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
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 <<EOF
-#line 3938 "configure"
+#line 3937 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
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
-#line 3972 "configure"
+#line 3971 "configure"
#include "confdefs.h"
#include <sys/types.h>
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 <<EOF
-#line 4011 "configure"
+#line 4010 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
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 <<EOF
-#line 4045 "configure"
+#line 4044 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
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 <<EOF
-#line 4079 "configure"
+#line 4078 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
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 <<EOF
-#line 4113 "configure"
+#line 4112 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
; 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
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 4132 "configure"
+#line 4131 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
; 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
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 <<EOF
-#line 4176 "configure"
+#line 4175 "configure"
#include "confdefs.h"
#ifdef TIME_WITH_SYS_TIME
#include <sys/time.h>
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
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 <<EOF
-#line 4217 "configure"
+#line 4216 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <time.h>
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
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 <<EOF
-#line 4252 "configure"
+#line 4251 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_cv_struct_tm>
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
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 <<EOF
-#line 4286 "configure"
+#line 4285 "configure"
#include "confdefs.h"
#include <time.h>
#ifndef tzname /* For SGI. */
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
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 <<EOF
-#line 4325 "configure"
+#line 4324 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:4374: \"$ac_compile\") 1>&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
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
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 <<EOF
-#line 4429 "configure"
+#line 4428 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
#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 <<EOF
-#line 4444 "configure"
+#line 4443 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
#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
rm -f conftest*
if test $ac_cv_c_bigendian = unknown; then
cat > conftest.$ac_ext <<EOF
-#line 4472 "configure"
+#line 4471 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:4485: \"$ac_link\") 1>&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
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 <<EOF
-#line 4515 "configure"
+#line 4514 "configure"
#include "confdefs.h"
#include <stdio.h>
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
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 <<EOF
-#line 4557 "configure"
+#line 4556 "configure"
#include "confdefs.h"
#include <stdio.h>
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
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 <<EOF
-#line 4593 "configure"
+#line 4592 "configure"
#include "confdefs.h"
#include <stdio.h>
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
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 <<EOF
-#line 4629 "configure"
+#line 4628 "configure"
#include "confdefs.h"
#include <stdio.h>
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
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 <<EOF
-#line 4665 "configure"
+#line 4664 "configure"
#include "confdefs.h"
#include <stdio.h>
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
case $opsys in
cygwin* ) cat > conftest.$ac_ext <<EOF
-#line 4700 "configure"
+#line 4699 "configure"
#include "confdefs.h"
#include <cygwin/types.h>
EOF
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:
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 <<EOF
-#line 4774 "configure"
+#line 4773 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char sin(); below. */
; return 0; }
EOF
-if { (eval echo configure:4797: \"$ac_link\") 1>&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
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 <<EOF
-#line 4820 "configure"
+#line 4819 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
sin()
; return 0; }
EOF
-if { (eval echo configure:4831: \"$ac_link\") 1>&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
cat > conftest.$ac_ext <<EOF
-#line 4875 "configure"
+#line 4874 "configure"
#include "confdefs.h"
#include <math.h>
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
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 <<EOF
-#line 4906 "configure"
+#line 4905 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:4929: \"$ac_link\") 1>&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
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 <<EOF
-#line 5016 "configure"
+#line 5015 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
cma_open()
; return 0; }
EOF
-if { (eval echo configure:5027: \"$ac_link\") 1>&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
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;
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 ;;
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
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`
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`
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"
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 <<EOF
-#line 5174 "configure"
+#line 5173 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5181: \"$ac_link\") 1>&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
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 <<EOF
-#line 5208 "configure"
+#line 5207 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
Imlib_init()
; return 0; }
EOF
-if { (eval echo configure:5219: \"$ac_link\") 1>&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
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 <<EOF
-#line 5245 "configure"
+#line 5244 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:5268: \"$ac_link\") 1>&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
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
-#line 5350 "configure"
+#line 5349 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 5391 "configure"
+#line 5390 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5398: \"$ac_link\") 1>&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
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 <<EOF
-#line 5425 "configure"
+#line 5424 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5432: \"$ac_link\") 1>&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
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 <<EOF
-#line 5459 "configure"
+#line 5458 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5466: \"$ac_link\") 1>&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
cat > conftest.$ac_ext <<EOF
-#line 5487 "configure"
+#line 5486 "configure"
#include "confdefs.h"
#include <glade/glade-xml.h>
EOF
# 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
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 5606 "configure"
+#line 5605 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
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*
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5680 "configure"
+#line 5679 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:5687: \"$ac_link\") 1>&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.
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 <<EOF
-#line 5799 "configure"
+#line 5798 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:5806: \"$ac_link\") 1>&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
else
LIBS="$ac_xsave_LIBS -R $x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 5822 "configure"
+#line 5821 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:5829: \"$ac_link\") 1>&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
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 <<EOF
-#line 5870 "configure"
+#line 5869 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:5881: \"$ac_link\") 1>&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
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 <<EOF
-#line 5910 "configure"
+#line 5909 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:5921: \"$ac_link\") 1>&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
# 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 <<EOF
-#line 5953 "configure"
+#line 5952 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
; return 0; }
EOF
-if { (eval echo configure:5976: \"$ac_link\") 1>&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
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 <<EOF
-#line 6002 "configure"
+#line 6001 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:6013: \"$ac_link\") 1>&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
# -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 <<EOF
-#line 6046 "configure"
+#line 6045 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
; return 0; }
EOF
-if { (eval echo configure:6069: \"$ac_link\") 1>&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
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 <<EOF
-#line 6097 "configure"
+#line 6096 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
connect()
; return 0; }
EOF
-if { (eval echo configure:6108: \"$ac_link\") 1>&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
# 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 <<EOF
-#line 6135 "configure"
+#line 6134 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char remove(); below. */
; return 0; }
EOF
-if { (eval echo configure:6158: \"$ac_link\") 1>&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
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 <<EOF
-#line 6184 "configure"
+#line 6183 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
remove()
; return 0; }
EOF
-if { (eval echo configure:6195: \"$ac_link\") 1>&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
# 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 <<EOF
-#line 6222 "configure"
+#line 6221 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char shmat(); below. */
; return 0; }
EOF
-if { (eval echo configure:6245: \"$ac_link\") 1>&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
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 <<EOF
-#line 6271 "configure"
+#line 6270 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
shmat()
; return 0; }
EOF
-if { (eval echo configure:6282: \"$ac_link\") 1>&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
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 <<EOF
-#line 6323 "configure"
+#line 6322 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
IceConnectionNumber()
; return 0; }
EOF
-if { (eval echo configure:6334: \"$ac_link\") 1>&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
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
-#line 6383 "configure"
+#line 6382 "configure"
#include "confdefs.h"
#include <Xm/Xm.h>
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*
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 <<EOF
-#line 6410 "configure"
+#line 6409 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XmStringFree()
; return 0; }
EOF
-if { (eval echo configure:6421: \"$ac_link\") 1>&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
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
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
-#line 6625 "configure"
+#line 6624 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
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*
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 <<EOF
-#line 6659 "configure"
+#line 6658 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XOpenDisplay()
; return 0; }
EOF
-if { (eval echo configure:6670: \"$ac_link\") 1>&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
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 <<EOF
-#line 6700 "configure"
+#line 6699 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XGetFontProperty()
; return 0; }
EOF
-if { (eval echo configure:6711: \"$ac_link\") 1>&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
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 <<EOF
-#line 6743 "configure"
+#line 6742 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XShapeSelectInput()
; return 0; }
EOF
-if { (eval echo configure:6754: \"$ac_link\") 1>&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
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 <<EOF
-#line 6782 "configure"
+#line 6781 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XtOpenDisplay()
; return 0; }
EOF
-if { (eval echo configure:6793: \"$ac_link\") 1>&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
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 <<EOF
-#line 6818 "configure"
+#line 6817 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
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
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 <<EOF
-#line 6857 "configure"
+#line 6856 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:6880: \"$ac_link\") 1>&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
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
-#line 6915 "configure"
+#line 6914 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 6956 "configure"
+#line 6955 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:6979: \"$ac_link\") 1>&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
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 <<EOF
-#line 7009 "configure"
+#line 7008 "configure"
#include "confdefs.h"
#define NeedFunctionPrototypes 1
; return 0; }
EOF
-if { (eval echo configure:7021: \"$ac_compile\") 1>&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
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 <<EOF
-#line 7047 "configure"
+#line 7046 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XmuReadBitmapDataFromFile()
; return 0; }
EOF
-if { (eval echo configure:7058: \"$ac_link\") 1>&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
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 <<EOF
-#line 7102 "configure"
+#line 7101 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:7109: \"$ac_link\") 1>&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
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 ;;
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 <<EOF
-#line 7150 "configure"
+#line 7149 "configure"
#include "confdefs.h"
#include <stdio.h>
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
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 <<EOF
-#line 7198 "configure"
+#line 7197 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:7205: \"$ac_link\") 1>&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
fi
fi
cat > conftest.$ac_ext <<EOF
-#line 7278 "configure"
+#line 7277 "configure"
#include "confdefs.h"
#include <fcntl.h>
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
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
-#line 7350 "configure"
+#line 7349 "configure"
#include "confdefs.h"
#include <X11/extensions/shape.h>
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*
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
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
-#line 7425 "configure"
+#line 7424 "configure"
#include "confdefs.h"
#include <X11/Xauth.h>
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*
}
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 <<EOF
-#line 7458 "configure"
+#line 7457 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XauGetAuthByAddr()
; return 0; }
EOF
-if { (eval echo configure:7469: \"$ac_link\") 1>&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
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
-#line 7517 "configure"
+#line 7516 "configure"
#include "confdefs.h"
#include <${dir}tt_c.h>
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*
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 <<EOF
-#line 7563 "configure"
+#line 7562 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
tt_message_create()
; return 0; }
EOF
-if { (eval echo configure:7574: \"$ac_link\") 1>&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
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
-#line 7634 "configure"
+#line 7633 "configure"
#include "confdefs.h"
#include <Dt/Dt.h>
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*
}
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 <<EOF
-#line 7667 "configure"
+#line 7666 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
DtDndDragStart()
; return 0; }
EOF
-if { (eval echo configure:7678: \"$ac_link\") 1>&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
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
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
-#line 7777 "configure"
+#line 7776 "configure"
#include "confdefs.h"
#include <ldap.h>
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*
}
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
-#line 7808 "configure"
+#line 7807 "configure"
#include "confdefs.h"
#include <lber.h>
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*
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 <<EOF
+#line 7840 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char ldap_open(); below. */
+#include <assert.h>
+/* 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 <<EOF
-#line 7842 "configure"
+#line 7888 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char ldap_search();
+char ldap_open();
int main() {
-ldap_search()
+ldap_open()
; return 0; }
EOF
-if { (eval echo configure:7853: \"$ac_link\") 1>&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
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 <<EOF
-#line 7882 "configure"
+#line 7926 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
ldap_open()
; return 0; }
EOF
-if { (eval echo configure:7893: \"$ac_link\") 1>&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
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 <<EOF
-#line 7922 "configure"
+#line 7964 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
ldap_open()
; return 0; }
EOF
-if { (eval echo configure:7933: \"$ac_link\") 1>&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
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 <<EOF
-#line 7962 "configure"
+#line 8002 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
ldap_open()
; return 0; }
EOF
-if { (eval echo configure:7973: \"$ac_link\") 1>&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
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 <<EOF
-#line 8000 "configure"
+#line 8063 "configure"
#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char ldap_open(); below. */
+#include <assert.h>
/* 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
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 <<EOF
-#line 8060 "configure"
+#line 8129 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:8083: \"$ac_link\") 1>&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
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
-#line 8122 "configure"
+#line 8191 "configure"
#include "confdefs.h"
#include <${header_dir}libpq-fe.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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 <<EOF
-#line 8156 "configure"
+#line 8225 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
PQconnectdb()
; return 0; }
EOF
-if { (eval echo configure:8167: \"$ac_link\") 1>&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
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 <<EOF
-#line 8205 "configure"
+#line 8274 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
PQconnectStart()
; return 0; }
EOF
-if { (eval echo configure:8216: \"$ac_link\") 1>&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
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=
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 <<EOF
-#line 8293 "configure"
+#line 8362 "configure"
#include "confdefs.h"
#define XPM_NUMBERS
#include <X11/xpm.h>
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
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 <<EOF
-#line 8349 "configure"
+#line 8418 "configure"
#include "confdefs.h"
int main() {
XpmCreatePixmapFromData()
; return 0; }
EOF
-if { (eval echo configure:8356: \"$ac_link\") 1>&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
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
-#line 8385 "configure"
+#line 8454 "configure"
#include "confdefs.h"
#include <compface.h>
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*
}
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 <<EOF
-#line 8418 "configure"
+#line 8487 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
UnGenFace()
; return 0; }
EOF
-if { (eval echo configure:8429: \"$ac_link\") 1>&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
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 <<EOF
-#line 8486 "configure"
+#line 8555 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
inflate()
; return 0; }
EOF
-if { (eval echo configure:8497: \"$ac_link\") 1>&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
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 <<EOF
-#line 8521 "configure"
+#line 8590 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
inflate()
; return 0; }
EOF
-if { (eval echo configure:8532: \"$ac_link\") 1>&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
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 <<EOF
-#line 8556 "configure"
+#line 8625 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
inflate()
; return 0; }
EOF
-if { (eval echo configure:8567: \"$ac_link\") 1>&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
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
-#line 8600 "configure"
+#line 8669 "configure"
#include "confdefs.h"
#include <jpeglib.h>
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*
}
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 <<EOF
-#line 8633 "configure"
+#line 8702 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
jpeg_destroy_decompress()
; return 0; }
EOF
-if { (eval echo configure:8644: \"$ac_link\") 1>&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
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 <<EOF
-#line 8683 "configure"
+#line 8752 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char pow(); below. */
; return 0; }
EOF
-if { (eval echo configure:8706: \"$ac_link\") 1>&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
}
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
-#line 8730 "configure"
+#line 8799 "configure"
#include "confdefs.h"
#include <png.h>
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*
}
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 <<EOF
-#line 8763 "configure"
+#line 8832 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
png_read_image()
; return 0; }
EOF
-if { (eval echo configure:8774: \"$ac_link\") 1>&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
}
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 <<EOF
-#line 8800 "configure"
+#line 8869 "configure"
#include "confdefs.h"
#include <png.h>
int main(int c, char **v) {
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
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
-#line 8854 "configure"
+#line 8923 "configure"
#include "confdefs.h"
#include <tiffio.h>
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*
}
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 <<EOF
-#line 8887 "configure"
+#line 8956 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
TIFFClientOpen()
; return 0; }
EOF
-if { (eval echo configure:8898: \"$ac_link\") 1>&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
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
-#line 8940 "configure"
+#line 9009 "configure"
#include "confdefs.h"
#include <compface.h>
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*
}
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 <<EOF
-#line 8973 "configure"
+#line 9042 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
UnGenFace()
; return 0; }
EOF
-if { (eval echo configure:8984: \"$ac_link\") 1>&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
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 ;;
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 <<EOF
-#line 9049 "configure"
+#line 9118 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XawScrollbarSetThumb()
; return 0; }
EOF
-if { (eval echo configure:9060: \"$ac_link\") 1>&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
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 <<EOF
-#line 9081 "configure"
+#line 9150 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
$athena_3d_function()
; return 0; }
EOF
-if { (eval echo configure:9092: \"$ac_link\") 1>&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
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 <<EOF
-#line 9128 "configure"
+#line 9197 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
$athena_3d_function()
; return 0; }
EOF
-if { (eval echo configure:9139: \"$ac_link\") 1>&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
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 <<EOF
-#line 9162 "configure"
+#line 9231 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
$athena_3d_function()
; return 0; }
EOF
-if { (eval echo configure:9173: \"$ac_link\") 1>&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
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
-#line 9207 "configure"
+#line 9276 "configure"
#include "confdefs.h"
#include <X11/Xaw/ThreeD.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9235 "configure"
+#line 9304 "configure"
#include "confdefs.h"
#include <X11/Xaw/XawInit.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9269 "configure"
+#line 9338 "configure"
#include "confdefs.h"
#include <X11/$athena_variant/XawInit.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9294 "configure"
+#line 9363 "configure"
#include "confdefs.h"
#include <X11/$athena_variant/ThreeD.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9330 "configure"
+#line 9399 "configure"
#include "confdefs.h"
#include <$athena_variant/XawInit.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9355 "configure"
+#line 9424 "configure"
#include "confdefs.h"
#include <$athena_variant/ThreeD.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9392 "configure"
+#line 9461 "configure"
#include "confdefs.h"
#include <X11/Xaw3d/XawInit.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9417 "configure"
+#line 9486 "configure"
#include "confdefs.h"
#include <X11/Xaw3d/ThreeD.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9457 "configure"
+#line 9526 "configure"
#include "confdefs.h"
#include <Xaw3d/XawInit.h>
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*
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
-#line 9482 "configure"
+#line 9551 "configure"
#include "confdefs.h"
#include <Xaw3d/ThreeD.h>
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*
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
-#line 9522 "configure"
+#line 9591 "configure"
#include "confdefs.h"
#include <X11/Xaw/ThreeD.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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
-#line 9569 "configure"
+#line 9638 "configure"
#include "confdefs.h"
#include <Xm/Xm.h>
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*
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 <<EOF
-#line 9596 "configure"
+#line 9665 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XmStringFree()
; return 0; }
EOF
-if { (eval echo configure:9607: \"$ac_link\") 1>&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
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 <<EOF
-#line 9638 "configure"
+#line 9707 "configure"
#include "confdefs.h"
#include <Xm/Xm.h>
#ifdef LESSTIF_VERSION
fi
case "$opsys" in
- *linux* ) lucid_prefers_motif="no" ;;
+ *linux* | cygwin* ) lucid_prefers_motif="no" ;;
* ) lucid_prefers_motif="yes" ;;
esac
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
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
-#line 10112 "configure"
+#line 10181 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 10153 "configure"
+#line 10222 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
strerror()
; return 0; }
EOF
-if { (eval echo configure:10164: \"$ac_link\") 1>&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
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 <<EOF
-#line 10208 "configure"
+#line 10277 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XOpenIM()
; return 0; }
EOF
-if { (eval echo configure:10219: \"$ac_link\") 1>&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
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 <<EOF
-#line 10248 "configure"
+#line 10317 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XmImMbLookupString()
; return 0; }
EOF
-if { (eval echo configure:10259: \"$ac_link\") 1>&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
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 <<EOF
-#line 10287 "configure"
+#line 10356 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XmImMbLookupString()
; return 0; }
EOF
-if { (eval echo configure:10298: \"$ac_link\") 1>&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
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 <<EOF
-#line 10371 "configure"
+#line 10440 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XmbDrawString()
; return 0; }
EOF
-if { (eval echo configure:10382: \"$ac_link\") 1>&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
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
-#line 10425 "configure"
+#line 10494 "configure"
#include "confdefs.h"
#include <wnn/jllib.h>
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*
}
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
-#line 10456 "configure"
+#line 10525 "configure"
#include "confdefs.h"
#include <wnn/commonhd.h>
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*
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 <<EOF
-#line 10489 "configure"
+#line 10558 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:10512: \"$ac_link\") 1>&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
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 <<EOF
-#line 10546 "configure"
+#line 10615 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
crypt()
; return 0; }
EOF
-if { (eval echo configure:10557: \"$ac_link\") 1>&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
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 <<EOF
-#line 10597 "configure"
+#line 10666 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
jl_dic_list_e()
; return 0; }
EOF
-if { (eval echo configure:10608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
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 <<EOF
-#line 10631 "configure"
+#line 10700 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
jl_dic_list_e()
; return 0; }
EOF
-if { (eval echo configure:10642: \"$ac_link\") 1>&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
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 <<EOF
-#line 10665 "configure"
+#line 10734 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
jl_dic_list_e()
; return 0; }
EOF
-if { (eval echo configure:10676: \"$ac_link\") 1>&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
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 <<EOF
-#line 10699 "configure"
+#line 10768 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dic_list_e()
; return 0; }
EOF
-if { (eval echo configure:10710: \"$ac_link\") 1>&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
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 <<EOF
-#line 10763 "configure"
+#line 10832 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
jl_fi_dic_list()
; return 0; }
EOF
-if { (eval echo configure:10774: \"$ac_link\") 1>&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
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
-#line 10812 "configure"
+#line 10881 "configure"
#include "confdefs.h"
#include <canna/jrkanji.h>
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*
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
-#line 10847 "configure"
+#line 10916 "configure"
#include "confdefs.h"
#include <canna/jrkanji.h>
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*
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
-#line 10883 "configure"
+#line 10952 "configure"
#include "confdefs.h"
#include <canna/RK.h>
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*
}
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 <<EOF
-#line 10916 "configure"
+#line 10985 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
RkBgnBun()
; return 0; }
EOF
-if { (eval echo configure:10927: \"$ac_link\") 1>&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
}
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 <<EOF
-#line 10955 "configure"
+#line 11024 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
jrKanjiControl()
; return 0; }
EOF
-if { (eval echo configure:10966: \"$ac_link\") 1>&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
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 <<EOF
-#line 11020 "configure"
+#line 11089 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
layout_object_getvalue()
; return 0; }
EOF
-if { (eval echo configure:11031: \"$ac_link\") 1>&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
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 <<EOF
-#line 11121 "configure"
+#line 11190 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:11144: \"$ac_link\") 1>&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
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 <<EOF
-#line 11188 "configure"
+#line 11257 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:11211: \"$ac_link\") 1>&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
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 <<EOF
-#line 11243 "configure"
+#line 11312 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char openpty(); below. */
; return 0; }
EOF
-if { (eval echo configure:11266: \"$ac_link\") 1>&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
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 <<EOF
-#line 11290 "configure"
+#line 11359 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
openpty()
; return 0; }
EOF
-if { (eval echo configure:11301: \"$ac_link\") 1>&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
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
-#line 11339 "configure"
+#line 11408 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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
-#line 11383 "configure"
+#line 11452 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 11424 "configure"
+#line 11493 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:11447: \"$ac_link\") 1>&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
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
-#line 11481 "configure"
+#line 11550 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 11526 "configure"
+#line 11595 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:11549: \"$ac_link\") 1>&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
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
-#line 11585 "configure"
+#line 11654 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 11631 "configure"
+#line 11700 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
kstat_open()
; return 0; }
EOF
-if { (eval echo configure:11642: \"$ac_link\") 1>&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
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
-#line 11680 "configure"
+#line 11749 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 11722 "configure"
+#line 11791 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
kvm_read()
; return 0; }
EOF
-if { (eval echo configure:11733: \"$ac_link\") 1>&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
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 <<EOF
-#line 11769 "configure"
+#line 11838 "configure"
#include "confdefs.h"
#include <netdb.h>
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
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 <<EOF
-#line 11798 "configure"
+#line 11867 "configure"
#include "confdefs.h"
#include <setjmp.h>
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
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 <<EOF
-#line 11829 "configure"
+#line 11898 "configure"
#include "confdefs.h"
#include <time.h>
#if STDC_HEADERS
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
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 <<EOF
-#line 11896 "configure"
+#line 11965 "configure"
#include "confdefs.h"
#ifdef TIME_WITH_SYS_TIME
; return 0; }
EOF
-if { (eval echo configure:11917: \"$ac_link\") 1>&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
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 <<EOF
-#line 11944 "configure"
+#line 12013 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:11951: \"$ac_compile\") 1>&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
# 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 <<EOF
-#line 11995 "configure"
+#line 12064 "configure"
#include "confdefs.h"
#include <alloca.h>
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
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 <<EOF
-#line 12029 "configure"
+#line 12098 "configure"
#include "confdefs.h"
#ifdef __GNUC__
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:12057: \"$ac_link\") 1>&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
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 <<EOF
-#line 12099 "configure"
+#line 12168 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
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 <<EOF
-#line 12126 "configure"
+#line 12195 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:12149: \"$ac_link\") 1>&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
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 <<EOF
-#line 12182 "configure"
+#line 12251 "configure"
#include "confdefs.h"
find_stack_direction ()
{
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:12201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_c_stack_direction=1
else
ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:12231: checking for vfork.h" >&5
+echo "configure:12300: checking for vfork.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 12234 "configure"
+#line 12303 "configure"
#include "confdefs.h"
#include <vfork.h>
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*
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 <<EOF
-#line 12270 "configure"
+#line 12339 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
}
}
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
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 <<EOF
-#line 12394 "configure"
+#line 12463 "configure"
#include "confdefs.h"
#include <string.h>
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
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 <<EOF
-#line 12435 "configure"
+#line 12504 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:12458: \"$ac_link\") 1>&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
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 <<EOF
-#line 12489 "configure"
+#line 12558 "configure"
#include "confdefs.h"
/*
}
EOF
-if { (eval echo configure:12544: \"$ac_link\") 1>&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
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 <<EOF
-#line 12574 "configure"
+#line 12643 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <unistd.h>
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
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 <<EOF
-#line 12638 "configure"
+#line 12707 "configure"
#include "confdefs.h"
#include <malloc.h>
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
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
-#line 12678 "configure"
+#line 12747 "configure"
#include "confdefs.h"
#include <termios.h>
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*
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
-#line 12729 "configure"
+#line 12798 "configure"
#include "confdefs.h"
#include <termio.h>
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*
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 <<EOF
-#line 12769 "configure"
+#line 12838 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char socket(); below. */
; return 0; }
EOF
-if { (eval echo configure:12792: \"$ac_link\") 1>&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
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
-#line 12810 "configure"
+#line 12879 "configure"
#include "confdefs.h"
#include <netinet/in.h>
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*
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
-#line 12835 "configure"
+#line 12904 "configure"
#include "confdefs.h"
#include <arpa/inet.h>
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*
}
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 <<EOF
-#line 12867 "configure"
+#line 12936 "configure"
#include "confdefs.h"
#include <sys/types.h>
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
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 <<EOF
-#line 12898 "configure"
+#line 12967 "configure"
#include "confdefs.h"
#include <sys/types.h>
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
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 <<EOF
-#line 12942 "configure"
+#line 13011 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char msgget(); below. */
; return 0; }
EOF
-if { (eval echo configure:12965: \"$ac_link\") 1>&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
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
-#line 12983 "configure"
+#line 13052 "configure"
#include "confdefs.h"
#include <sys/ipc.h>
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*
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
-#line 13008 "configure"
+#line 13077 "configure"
#include "confdefs.h"
#include <sys/msg.h>
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*
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
-#line 13054 "configure"
+#line 13123 "configure"
#include "confdefs.h"
#include <dirent.h>
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*
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
-#line 13089 "configure"
+#line 13158 "configure"
#include "confdefs.h"
#include <sys/dir.h>
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*
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
-#line 13130 "configure"
+#line 13199 "configure"
#include "confdefs.h"
#include <nlist.h>
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*
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
-#line 13175 "configure"
+#line 13244 "configure"
#include "confdefs.h"
#include <multimedia/audio_device.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure: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*
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 <<EOF
-#line 13241 "configure"
+#line 13310 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
ALopenport()
; return 0; }
EOF
-if { (eval echo configure:13252: \"$ac_link\") 1>&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
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 <<EOF
-#line 13288 "configure"
+#line 13357 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
AOpenAudio()
; return 0; }
EOF
-if { (eval echo configure:13299: \"$ac_link\") 1>&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
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
-#line 13347 "configure"
+#line 13416 "configure"
#include "confdefs.h"
#include <${dir}/soundcard.h>
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*
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
-#line 13409 "configure"
+#line 13478 "configure"
#include "confdefs.h"
#include <audio/audiolib.h>
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*
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 <<EOF
-#line 13437 "configure"
+#line 13506 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
AuOpenServer()
; return 0; }
EOF
-if { (eval echo configure:13448: \"$ac_link\") 1>&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
fi
libs_x="-laudio $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-laudio\" to \$libs_x"; fi
cat > conftest.$ac_ext <<EOF
-#line 13487 "configure"
+#line 13556 "configure"
#include "confdefs.h"
#include <audio/Xtutil.h>
EOF
# 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.
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 <<EOF
-#line 13550 "configure"
+#line 13619 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char esd_play_stream(); below. */
; return 0; }
EOF
-if { (eval echo configure:13573: \"$ac_link\") 1>&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
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
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 <<EOF
-#line 13645 "configure"
+#line 13714 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
tgetent()
; return 0; }
EOF
-if { (eval echo configure:13656: \"$ac_link\") 1>&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
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
-#line 13692 "configure"
+#line 13761 "configure"
#include "confdefs.h"
#include <ncurses/curses.h>
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*
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
-#line 13722 "configure"
+#line 13791 "configure"
#include "confdefs.h"
#include <ncurses/term.h>
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*
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
-#line 13760 "configure"
+#line 13829 "configure"
#include "confdefs.h"
#include <ncurses/curses.h>
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*
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 <<EOF
-#line 13805 "configure"
+#line 13874 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
tgetent()
; return 0; }
EOF
-if { (eval echo configure:13816: \"$ac_link\") 1>&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
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 <<EOF
-#line 13846 "configure"
+#line 13915 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
tgoto()
; return 0; }
EOF
-if { (eval echo configure:13857: \"$ac_link\") 1>&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
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 <<EOF
-#line 13907 "configure"
+#line 13976 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
tgetent()
; return 0; }
EOF
-if { (eval echo configure:13918: \"$ac_link\") 1>&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
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 <<EOF
-#line 13941 "configure"
+#line 14010 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
tgetent()
; return 0; }
EOF
-if { (eval echo configure:13952: \"$ac_link\") 1>&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
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
-#line 14004 "configure"
+#line 14073 "configure"
#include "confdefs.h"
#include <gpm.h>
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*
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 <<EOF
-#line 14032 "configure"
+#line 14101 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
Gpm_Open()
; return 0; }
EOF
-if { (eval echo configure:14043: \"$ac_link\") 1>&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
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
-#line 14110 "configure"
+#line 14179 "configure"
#include "confdefs.h"
#include <ndbm.h>
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*
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 <<EOF
-#line 14150 "configure"
+#line 14219 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dbm_open()
; return 0; }
EOF
-if { (eval echo configure:14161: \"$ac_link\") 1>&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
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 <<EOF
-#line 14192 "configure"
+#line 14261 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char dbm_open(); below. */
; return 0; }
EOF
-if { (eval echo configure:14215: \"$ac_link\") 1>&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
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 <<EOF
-#line 14239 "configure"
+#line 14308 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dbm_open()
; return 0; }
EOF
-if { (eval echo configure:14250: \"$ac_link\") 1>&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
}
+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 <<EOF
+#line 14362 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#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 <<EOF
+#line 14406 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#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 <<EOF
+#line 14450 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#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 <<EOF
+#line 14494 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#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 <<EOF
-#line 14296 "configure"
+#line 14542 "configure"
#include "confdefs.h"
#include <stdlib.h>
; 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
;;
*)
cat > conftest.$ac_ext <<EOF
-#line 14323 "configure"
+#line 14569 "configure"
#include "confdefs.h"
#include <stdlib.h>
#ifdef HAVE_INTTYPES_H
#define __BIT_TYPES_DEFINED__
#include <inttypes.h>
+#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
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 <<EOF
-#line 14365 "configure"
+#line 14619 "configure"
#include "confdefs.h"
#include <$db_h_file>
#if DB_VERSION_MAJOR > 1
egrep "yes" >/dev/null 2>&1; then
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 14377 "configure"
+#line 14631 "configure"
#include "confdefs.h"
#include <$db_h_file>
#if DB_VERSION_MAJOR > 2
rm -f conftest*
echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:14404: checking for $dbfunc" >&5
+echo "configure:14658: checking for $dbfunc" >&5
cat > conftest.$ac_ext <<EOF
-#line 14407 "configure"
+#line 14661 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $dbfunc(); below. */
; return 0; }
EOF
-if { (eval echo configure:14430: \"$ac_link\") 1>&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
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 <<EOF
-#line 14454 "configure"
+#line 14708 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
$dbfunc()
; return 0; }
EOF
-if { (eval echo configure:14465: \"$ac_link\") 1>&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
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 <<EOF
-#line 14534 "configure"
+#line 14788 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
SOCKSinit()
; return 0; }
EOF
-if { (eval echo configure:14545: \"$ac_link\") 1>&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
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;
;;
*) 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
-#line 14619 "configure"
+#line 14873 "configure"
#include "confdefs.h"
#include <dlfcn.h>
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*
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 <<EOF
-#line 14643 "configure"
+#line 14897 "configure"
#include "confdefs.h"
#include <dlfcn.h>
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
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 <<EOF
-#line 14663 "configure"
+#line 14917 "configure"
#include "confdefs.h"
#include <dlfcn.h>
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
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 <<EOF
-#line 14704 "configure"
+#line 14958 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
shl_load()
; return 0; }
EOF
-if { (eval echo configure:14715: \"$ac_link\") 1>&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
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 <<EOF
-#line 14747 "configure"
+#line 15001 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dld_init()
; return 0; }
EOF
-if { (eval echo configure:14758: \"$ac_link\") 1>&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
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*) ;;
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 <<EOF
-#line 14835 "configure"
+#line 15089 "configure"
#include "confdefs.h"
#ifdef __GNUC__
fi
echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&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
# 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 <<EOF
-#line 14962 "configure"
+#line 15216 "configure"
#include "confdefs.h"
int main() {
int x=0;
; return 0; }
EOF
-if { (eval echo configure:14969: \"$ac_compile\") 1>&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
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"
xe_libs=
ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
cat > conftest.$ac_ext <<EOF
-#line 15051 "configure"
+#line 15305 "configure"
#include "confdefs.h"
int main() {
int x=0;
; return 0; }
EOF
-if { (eval echo configure:15058: \"$ac_link\") 1>&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
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.
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
# 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 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
xe_gnu_ld=yes
# 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
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 <<EOF
-#line 15389 "configure"
+#line 15643 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:15412: \"$ac_link\") 1>&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
fi
cat > conftest.$ac_ext <<EOF
-#line 15451 "configure"
+#line 15705 "configure"
#include "confdefs.h"
int main(int c,char *v[]){return 0;}
EOF
-if { (eval echo configure:15455: \"$ac_link\") 1>&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
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* )
;;
*-*-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
*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
esac
fi
- AC_CHECK_FUNCS(XConvertCase)
+ AC_CHECK_FUNCS(XConvertCase XtRegisterDrawable)
AC_CHECK_HEADERS(X11/Xlocale.h)
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
dnl Avoid using Motif :-(
case "$opsys" in
- *linux* ) lucid_prefers_motif="no" ;;
+ *linux* | cygwin* ) lucid_prefers_motif="no" ;;
* ) lucid_prefers_motif="yes" ;;
esac
"$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)
#ifdef HAVE_INTTYPES_H
#define __BIT_TYPES_DEFINED__
#include <inttypes.h>
+#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)
;;
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
;;
*-*-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
- 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.
.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).
+
\f
* Lisp and internal changes in XEmacs 21.4
==========================================
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
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.
*** python-modes
Python support.
+*** re-builder
+Interactive development tool for regular expressions.
+
*** reftex
Emacs support for LaTeX cross-references, citations.
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.
*** 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.
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.
--- /dev/null
+Copyright (c) 1985 Free Software Foundation, Inc; podmínky viz na konci.
+Do èe¹tiny pøelo¾il Milan Zamazal <pdm@zamazal.org>.
+
+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-<chr> znamená pøidr¾et klávesu CONTROL a stisknout znak <chr>.
+ Tedy C-f znamená: pøidr¾te klávesu CONTROL a stisknìte f.
+ M-<chr> znamená pøidr¾et klávesu META, EDIT nebo ALT a stisknout <chr>.
+ 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é <chr>. Klávesu ESC budeme
+ znaèit <ESC>.
+
+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:
+<<Blank lines inserted here by startup of help-with-tutorial>>
+>> 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 <ESC>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 <ESC>, 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 <ESC> : (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 <Return> (klávesu Enter).
+
+Poslední znak, který jste napsali, mù¾ete smazat stiskem <Delete>.
+<Delete> je klávesa, která mù¾e být na klávesnici oznaèena "Del".
+V nìkterých pøípadech jako <Delete> slou¾í klávesa "Backspace", av¹ak ne
+v¾dy!
+
+Obecnìji, <Delete> 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 <Delete>. 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 <Delete> 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 <Delete>. To tento
+ øádek spojí s øádkem pøedchozím.
+
+>> Stisknìte <Return> 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:
+
+ <Delete> Smazání znaku bezprostøednì pøed kurzorem
+ C-d Smazání znaku následujícího za kurzorem
+
+ M-<Delete> 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 <Delete> a C-d, resp. M-<Delete> a M-d, roz¹iøují
+paralelu zapoèatou C-f a M-f (pravda, <Delete> 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 <Return>.
+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 <Return>.
+ 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 <Return>, èí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<TAB>" a Emacs název doplní.
+Dokonèete zadávání jména pøíkazu pomocí <Return>.
+
+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í <Return>.
+
+>> Pøesuòte kurzor na prázdný øádek dva øádky pod tímto.
+ Pak napi¹te M-x repl s<Return>zmìnil<Return>modifikoval<Return>.
+
+ 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<return>.
+Na ¾ádost o potvrzení odpovìzte zadáním yes<return> 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<Return>.
+
+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<Return>.
+Je-li tento mód zapnut, mù¾ete jej vypnout provedením M-x
+auto-fill-mode<Return>. 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<Return>. 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. <RET> 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 <Delete> a pozorujte, jak se kurzor
+ pøesunuje.
+>> Stisknìte <RET> 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 <Delete>, 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 <Delete>. 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í <Return>. 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) <ESC>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<Return>.
+ 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<Return>.
+
+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 <Return> 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:
--- /dev/null
+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-<chr> pomeni, da moramo dr¾ati pritisnjeno tipko CONTROL, ko
+ vtipkamo znak <chr>. Oznaka C-f tako pomeni: dr¾imo
+ pritisnjeno tipko CONTROL in pritisnemo tipko f.
+ M-<chr> pomeni, da moramo dr¾ati pritisnjeno tipko META, EDIT ali ALT,
+ ko vtipkamo znak <chr>. Èe na tipkovnici ni tipk META, EDIT
+ ali ALT, pritisnemo tipko ESC, jo spustimo in zatem
+ pritisnemo tipko <chr>. Tipko ESC bomo oznaèevali z <ESC>.
+
+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:
+<<help-with-tutorial napolni preostanek s praznimi vrsticami>>
+>> 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 <ESC> 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 <ESC>, 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 <ESC> : (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 <Delete>. Na
+nekaterih tipkovnicah je oznaèena z <Del>. Ponekod (ne pa povsod!)
+slu¾i za brisanje tipka <Backspace>.
+
+Splo¹no <Delete> pobri¹e znak neposredno pred trenutnim polo¾ajem
+kazalèka.
+
+>> Vtipkajte zdaj nekaj znakov in jih zatem s tipko <Delete> 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 <Delete> 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 <Delete>. To
+ zdru¾i vrstico s prej¹njo.
+
+>> Pritisnite <Return>. 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:
+
+ <Delete> 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-<Delete> 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 <Delete> in C-d na eni, ter
+M-<Delete> in M-d na drugi strani nadaljujeta paralelo, ki sta jo zaèela
+C-f in M-f (<Delete> 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 <Return>. 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 <Return>. 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 <Return>.
+
+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<TAB>`` in Emacs bo dopolnil ime. Ukaz vnesete s
+pritiskom na <Return>.
+
+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 s<Return>zamenjala<Return>spremenila<Return>.
+
+ 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<Return>. Ko vas vpra¹a za potrditev, vtipkajte yes<Return>
+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<Return>.
+
+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<return>. Ko je
+vklopljen, ga lahko izklopite z istim ukazom, M-x
+auto fill mode<return>. 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. <Return> 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 <Delete> in opazujte, kako se premika kazalèek.
+>> Konèajte iskanje s tipko <Return>.
+
+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 <Delete>, 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 <Delete>, 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 <Return>. 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 <Return>.)
+
+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, <Esc>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<Return>.
+ 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<Return>.
+
+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:
+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
+2005-09-18 Mike Alexander <mta@arbortext.com>
+
+ * installexe.sh: Don't add an exe extention to a file that already
+ has one. Patch from Rick Rankin.
+
2005-02-06 Vin Shelton <acs@xemacs.org>
* XEmacs 21.4.17 is released
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 "
+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
+2005-10-28 Adrian Aichner <adrian@xemacs.org>
+
+ * 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 <jas@extundo.com>
+
+ * 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 <angeli@iwi.uni-sb.de>
+
+ * 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 <angeli@iwi.uni-sb.de>
+
+ * font.el (font-spatial-to-canonical): Correct calculation of
+ return value for pixel-based input value.
+
+2002-05-13 Adrian Aichner <adrian@xemacs.org>
+
+ * 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 <adrian@xemacs.org>
+
+ * finder.el (finder-find-library): Return filename actually
+ searched for.
+
+2005-10-10 Steve Youngs <steve@sxemacs.org>
+
+ * 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 <adrian@xemacs.org>
+
+ * package-get.el (package-get-init-package):
+ package-get-init-package buglet (21.4.17) by Jeff Mincy
+ <mincy@rcn.com> fixing false temporary load-path shadows reported
+ after package installation and simplifying code.
+
+2005-10-18 Ville Skyttä <scop@xemacs.org>
+
+ * 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 <stephen@xemacs.org>
+
+ * 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 <adrian@xemacs.org>
+
+ * 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 <viteno@xemacs.org>
+
+ * 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 <kehoea@parhasard.net>
+
+ * 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 <acs@xemacs.org>
* XEmacs 21.4.17 is released
;;; 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
(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")
(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'.
(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/")
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
(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
(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)
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.
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
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.
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.
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.
;; 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,
"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
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)))
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
(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"))
(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."
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
("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")
("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")
("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).
(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"
"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"
"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
(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)
(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)
`\\[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.
"))
(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))
((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
;; 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.
[ ... ... :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;
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")
+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
+2005-03-07 Stephen J. Turnbull <stephen@xemacs.org>
+
+ * 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 <acs@xemacs.org>
* XEmacs 21.4.17 is released
#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)
{
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);
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;
}
+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
+2005-12-03 Adrian Aichner <adrian@xemacs.org>
+
+ * custom.texi (Declaring Variables): Typo fixes.
+
+2005-01-19 Aidan Kehoe <kehoea@parhasard.net>
+
+ * 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 <kehoea@parhasard.net>
+
+ * 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 <kehoea@parhasard.net>
+
+ * 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 <stephen@xemacs.org>
+
+ * 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 <acs@xemacs.org>
* XEmacs 21.4.17 is released
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
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
@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.
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
@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
@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{<X11/cursorfont.h>} 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{<X11/cursorfont.h>}] 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
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,
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
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
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
@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
;; 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.
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.
* 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
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
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
@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,
+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
2005-02-06 Vin Shelton <acs@xemacs.org>
* XEmacs 21.4.17 is released
+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
2005-02-06 Vin Shelton <acs@xemacs.org>
* XEmacs 21.4.17 is released
+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
+2005-11-27 Kean Johnston <kean@armory.com>
+
+ * 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 <kehoea@parhasard.net>
+
+ * 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 <kehoea@parhasard.net>
+
+ * 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 <acs@xemacs.org>
+
+ * 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 <adrian@xemacs.org>
+
+ * callproc.c: Process-related docstring improvements spurred by
+ Norbert Koch.
+
+2005-11-25 Vin Shelton <acs@xemacs.org>
+
+ * depend: Regenerated.
+
+2005-07-11 Malcolm Purvis <malcolmp@xemacs.org>
+
+ * 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 <atanu@icsi.berkeley.edu>
+
+ * 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 <Dr.Volker.Zell@oracle.com>
+
+ * 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 <enrico.scholz@informatik.tu-chemnitz.de>
+
+ * 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 <kehoea@parhasard.net>
+
+ * 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 <stephen@xemacs.org>
+
+ * 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 <acs@xemacs.org>
+
+ * 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 <extsw@appliedgenerics.com>
+
+ * process-unix.c (unix_send_process): Flush the last chunk, even
+ when the pipe is blocked.
+
2005-02-06 Vin Shelton <acs@xemacs.org>
* XEmacs 21.4.17 is released
#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"
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.
|| 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);
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'.
}
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))
{
-- 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.
}
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))
{
#undef THIS_IS_X11R6
#undef HAVE_XCONVERTCASE
+#undef HAVE_XTREGISTERDRAWABLE
#undef HAVE_BALLOON_HELP
/* 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 */
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
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 */
#define __BIT_TYPES_DEFINED__
#include <inttypes.h>
#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' */
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
#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
/* 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.
hexTable['}'] = -1; hexTable['\n'] = -1;
hexTable['\t'] = -1;
- initialized = TRUE;
+ hexTable_initialized = TRUE;
}
/*
#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; }
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)
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)
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;
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 */
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));
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);
}
/*****************************************************************************
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);
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);
/*
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;
}
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);
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 */
}
}
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 |
# include <sys/exec_elf.h>
#endif
-#if defined(__FreeBSD__) && (defined(__alpha__) || defined(__amd64__))
+#if defined(__FreeBSD__) && (defined(__alpha__) || defined(_LP64))
# ifdef __STDC__
# define ElfW(type) Elf64_##type
# else
+2005-12-03 Vin Shelton <acs@xemacs.org>
+
+ * XEmacs 21.4.18 is released
+
2005-02-06 Vin Shelton <acs@xemacs.org>
* XEmacs 21.4.17 is released
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