XEmacs 21.4.18 (Social Property).
authortomo <tomo>
Tue, 23 May 2006 15:02:25 +0000 (15:02 +0000)
committertomo <tomo>
Tue, 23 May 2006 15:02:25 +0000 (15:02 +0000)
55 files changed:
ChangeLog
configure
configure.in
etc/NEWS
etc/OXYMORONS
etc/PACKAGES
etc/TUTORIAL.cs [new file with mode: 0644]
etc/TUTORIAL.sl [new file with mode: 0644]
lib-src/ChangeLog
lib-src/installexe.sh
lisp/ChangeLog
lisp/about.el
lisp/auto-autoloads.el
lisp/buffer.el
lisp/cmdloop.el
lisp/code-process.el
lisp/derived.el
lisp/easymenu.el
lisp/finder.el
lisp/font.el
lisp/help.el
lisp/minibuf.el
lisp/package-get.el
lisp/package-ui.el
lisp/simple.el
lisp/window-xemacs.el
lwlib/ChangeLog
lwlib/lwlib-Xlw.c
man/ChangeLog
man/custom.texi
man/lispref/extents.texi
man/lispref/faces.texi
man/lispref/glyphs.texi
man/lispref/lispref.texi
man/lispref/mule.texi
man/lispref/searching.texi
netinstall/ChangeLog
nt/ChangeLog
src/ChangeLog
src/callproc.c
src/chartab.c
src/config.h.in
src/console-tty.h
src/database.c
src/depend
src/emacs.c
src/glyphs-gtk.c
src/mule-ccl.c
src/process-unix.c
src/redisplay-tty.c
src/select-x.c
src/sysdll.c
src/unexelf.c
tests/ChangeLog
version.sh

index 36309bb..e47efd0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,60 @@
+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
index e5e0e03..78bdaf8 100755 (executable)
--- a/configure
+++ b/configure
@@ -2986,7 +2986,6 @@ EOF
     *86*    ) dynodump_arch=i386  ;;
     powerpc ) dynodump_arch=ppc   ;;
   esac
-    test "$GCC" = "yes" && ld_switch_site="$ld_switch_site -fno-gnu-linker" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"-fno-gnu-linker\" to \$ld_switch_site"; fi
 fi
 
 
@@ -3003,12 +3002,12 @@ if test "$unexec" = "unexaix.o"; then
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:3007: checking for terminateAndUnload in -lC" >&5
+echo "configure:3006: checking for terminateAndUnload in -lC" >&5
 ac_lib_var=`echo C'_'terminateAndUnload | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lC "
 cat > conftest.$ac_ext <<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
@@ -3019,7 +3018,7 @@ int main() {
 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
@@ -3127,7 +3126,7 @@ fi
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:3131: checking "for runtime libraries flag"" >&5
+echo "configure:3130: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -3149,14 +3148,14 @@ if test "$GCC" = "yes"; then
   done
 fi
         cat > conftest.$ac_ext <<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
@@ -3257,10 +3256,10 @@ else
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:3261: checking for malloc_set_state" >&5
+echo "configure:3260: checking for malloc_set_state" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -3283,7 +3282,7 @@ malloc_set_state();
 
 ; 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
@@ -3303,16 +3302,16 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3307: checking whether __after_morecore_hook exists" >&5
+echo "configure:3306: checking whether __after_morecore_hook exists" >&5
 cat > conftest.$ac_ext <<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
@@ -3368,7 +3367,7 @@ fi
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3372: checking for $ac_word" >&5
+echo "configure:3371: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3423,7 +3422,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:3427: checking for a BSD compatible install" >&5
+echo "configure:3426: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
@@ -3477,7 +3476,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3481: checking for $ac_word" >&5
+echo "configure:3480: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3509,15 +3508,15 @@ for ac_hdr in   a.out.h   elf.h   cygwin/version.h   fcntl.h   inttypes.h   libg
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3513: checking for $ac_hdr" >&5
+echo "configure:3512: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -3547,10 +3546,10 @@ fi
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3551: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3550: checking for sys/wait.h that is POSIX.1 compatible" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3554 "configure"
+#line 3553 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3566,7 +3565,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3590,10 +3589,10 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3594: checking for ANSI C header files" >&5
+echo "configure:3593: checking for ANSI C header files" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3597 "configure"
+#line 3596 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3601,7 +3600,7 @@ cat > conftest.$ac_ext <<EOF
 #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*
@@ -3618,7 +3617,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3622 "configure"
+#line 3621 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3636,7 +3635,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3640 "configure"
+#line 3639 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3654,7 +3653,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
 cat > conftest.$ac_ext <<EOF
-#line 3658 "configure"
+#line 3657 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3665,7 +3664,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3691,10 +3690,10 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3695: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3694: checking whether time.h and sys/time.h may both be included" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3698 "configure"
+#line 3697 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3703,7 +3702,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3727,10 +3726,10 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3731: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3730: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3734 "configure"
+#line 3733 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3742,7 +3741,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3768,9 +3767,9 @@ fi
 
 
 echo $ac_n "checking for utime""... $ac_c" 1>&6
-echo "configure:3772: checking for utime" >&5
+echo "configure:3771: checking for utime" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3774 "configure"
+#line 3773 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utime.h>
@@ -3778,7 +3777,7 @@ int main() {
 struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x);
 ; return 0; }
 EOF
-if { (eval echo configure:3782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
@@ -3797,10 +3796,10 @@ else
       for ac_func in utimes
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3801: checking for $ac_func" >&5
+echo "configure:3800: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -3823,7 +3822,7 @@ $ac_func();
 
 ; 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
@@ -3855,10 +3854,10 @@ rm -f conftest*
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3859: checking return type of signal handlers" >&5
+echo "configure:3858: checking return type of signal handlers" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3862 "configure"
+#line 3861 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3875,7 +3874,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3878: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3897,10 +3896,10 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3901: checking for size_t" >&5
+echo "configure:3900: checking for size_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3904 "configure"
+#line 3903 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3931,10 +3930,10 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3935: checking for pid_t" >&5
+echo "configure:3934: checking for pid_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3938 "configure"
+#line 3937 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3965,10 +3964,10 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3969: checking for uid_t in sys/types.h" >&5
+echo "configure:3968: checking for uid_t in sys/types.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3972 "configure"
+#line 3971 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -4004,10 +4003,10 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:4008: checking for mode_t" >&5
+echo "configure:4007: checking for mode_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4011 "configure"
+#line 4010 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4038,10 +4037,10 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:4042: checking for off_t" >&5
+echo "configure:4041: checking for off_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4045 "configure"
+#line 4044 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4072,10 +4071,10 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:4076: checking for ssize_t" >&5
+echo "configure:4075: checking for ssize_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4079 "configure"
+#line 4078 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4107,9 +4106,9 @@ fi
 
 
 echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:4111: checking for socklen_t" >&5
+echo "configure:4110: checking for socklen_t" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4113 "configure"
+#line 4112 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -4119,7 +4118,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -4128,7 +4127,7 @@ else
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 4132 "configure"
+#line 4131 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -4138,7 +4137,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 echo "$ac_t""size_t" 1>&6
@@ -4170,9 +4169,9 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:4174: checking for struct timeval" >&5
+echo "configure:4173: checking for struct timeval" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4176 "configure"
+#line 4175 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -4188,7 +4187,7 @@ int main() {
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:4192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -4210,10 +4209,10 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:4214: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:4213: checking whether struct tm is in sys/time.h or time.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4217 "configure"
+#line 4216 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -4221,7 +4220,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:4225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -4245,10 +4244,10 @@ EOF
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:4249: checking for tm_zone in struct tm" >&5
+echo "configure:4248: checking for tm_zone in struct tm" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4252 "configure"
+#line 4251 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -4256,7 +4255,7 @@ int main() {
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:4260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -4279,10 +4278,10 @@ EOF
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:4283: checking for tzname" >&5
+echo "configure:4282: checking for tzname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4286 "configure"
+#line 4285 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -4292,7 +4291,7 @@ int main() {
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:4296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -4318,10 +4317,10 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4322: checking for working const" >&5
+echo "configure:4321: checking for working const" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4325 "configure"
+#line 4324 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4370,7 +4369,7 @@ ccp = (char const *const *) p;
 
 ; 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
@@ -4395,7 +4394,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4399: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4398: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4420,12 +4419,12 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4424: checking whether byte ordering is bigendian" >&5
+echo "configure:4423: checking whether byte ordering is bigendian" >&5
 
 ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 4429 "configure"
+#line 4428 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4436,11 +4435,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4440: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 4444 "configure"
+#line 4443 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4451,7 +4450,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4468,7 +4467,7 @@ fi
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4472 "configure"
+#line 4471 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4481,7 +4480,7 @@ main () {
   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
@@ -4508,10 +4507,10 @@ fi
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4512: checking size of short" >&5
+echo "configure:4511: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4515 "configure"
+#line 4514 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4522,7 +4521,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4550,10 +4549,10 @@ if test "$ac_cv_sizeof_short" = 0; then
   exit 1
 fi
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:4554: checking size of int" >&5
+echo "configure:4553: checking size of int" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4557 "configure"
+#line 4556 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4564,7 +4563,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4586,10 +4585,10 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4590: checking size of long" >&5
+echo "configure:4589: checking size of long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4593 "configure"
+#line 4592 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4600,7 +4599,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4622,10 +4621,10 @@ EOF
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4626: checking size of long long" >&5
+echo "configure:4625: checking size of long long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4629 "configure"
+#line 4628 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4636,7 +4635,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long_long=`cat conftestval`
 else
@@ -4658,10 +4657,10 @@ EOF
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4662: checking size of void *" >&5
+echo "configure:4661: checking size of void *" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4665 "configure"
+#line 4664 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4672,7 +4671,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_void_p=`cat conftestval`
 else
@@ -4696,7 +4695,7 @@ EOF
 
 case $opsys in
   cygwin* ) cat > conftest.$ac_ext <<EOF
-#line 4700 "configure"
+#line 4699 "configure"
 #include "confdefs.h"
 #include <cygwin/types.h>
 EOF
@@ -4721,7 +4720,7 @@ rm -f conftest*
 esac
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4725: checking for long file names" >&5
+echo "configure:4724: checking for long file names" >&5
 
 ac_cv_sys_long_file_names=yes
 # Test for long file names in all the places we know might matter:
@@ -4767,10 +4766,10 @@ fi
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4771: checking for sin" >&5
+echo "configure:4770: checking for sin" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -4793,7 +4792,7 @@ sin();
 
 ; 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
@@ -4811,12 +4810,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4815: checking for sin in -lm" >&5
+echo "configure:4814: checking for sin in -lm" >&5
 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lm "
 cat > conftest.$ac_ext <<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
@@ -4827,7 +4826,7 @@ int main() {
 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
@@ -4871,14 +4870,14 @@ EOF
 
 
 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
@@ -4895,14 +4894,14 @@ fi
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4899: checking type of mail spool file locking" >&5
+echo "configure:4898: checking type of mail spool file locking" >&5
 for ac_func in lockf flock
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4903: checking for $ac_func" >&5
+echo "configure:4902: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -4925,7 +4924,7 @@ $ac_func();
 
 ; 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
@@ -5007,12 +5006,12 @@ test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
 case "$opsys" in decosf*)
   
 echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6
-echo "configure:5011: checking for cma_open in -lpthreads" >&5
+echo "configure:5010: checking for cma_open in -lpthreads" >&5
 ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpthreads "
 cat > conftest.$ac_ext <<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
@@ -5023,7 +5022,7 @@ int main() {
 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
@@ -5060,7 +5059,7 @@ esac
 
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:5064: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:5063: checking whether the -xildoff compiler flag is required" >&5
 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
     then echo "$ac_t""no" 1>&6;
@@ -5072,7 +5071,7 @@ fi
 if test "$opsys" = "sol2"; then
   if test "$os_release" -ge 506; then
     echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:5076: checking for \"-z ignore\" linker flag" >&5
+echo "configure:5075: checking for \"-z ignore\" linker flag" >&5
     case "`ld -h 2>&1`" in
       *-z\ ignore\|record* ) echo "$ac_t""yes" 1>&6
         ld_switch_site="-z ignore $ld_switch_site" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-z ignore\" to \$ld_switch_site"; fi ;;
@@ -5083,7 +5082,7 @@ fi
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:5087: checking "for specified window system"" >&5
+echo "configure:5086: checking "for specified window system"" >&5
 
 
 GNOME_CONFIG=no
@@ -5091,7 +5090,7 @@ GTK_CONFIG=no
 
 if test "$with_gnome" != "no"; then
    echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6
-echo "configure:5095: checking for GNOME configuration script" >&5
+echo "configure:5094: checking for GNOME configuration script" >&5
    for possible in gnome-config
    do
       possible_version=`${possible} --version 2> /dev/null`
@@ -5122,7 +5121,7 @@ fi
 
 if test "$with_gtk" != "no";then
    echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6
-echo "configure:5126: checking for GTK configuration script" >&5
+echo "configure:5125: checking for GTK configuration script" >&5
    for possible in gtk12-config gtk14-config gtk-config
    do
       possible_version=`${possible} --version 2> /dev/null`
@@ -5144,18 +5143,18 @@ fi
 
 if test "${GTK_CONFIG}" != "no"; then
       echo $ac_n "checking gtk version""... $ac_c" 1>&6
-echo "configure:5148: checking gtk version" >&5
+echo "configure:5147: checking gtk version" >&5
       GTK_VERSION=`${GTK_CONFIG} --version`
       echo "$ac_t""${GTK_VERSION}" 1>&6
 
       echo $ac_n "checking gtk libs""... $ac_c" 1>&6
-echo "configure:5153: checking gtk libs" >&5
+echo "configure:5152: checking gtk libs" >&5
       GTK_LIBS=`${GTK_CONFIG} --libs`
       libs_gtk="$libs_gtk ${GTK_LIBS}" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"${GTK_LIBS}\" to \$libs_gtk"; fi
       echo "$ac_t""${GTK_LIBS}" 1>&6
 
       echo $ac_n "checking gtk cflags""... $ac_c" 1>&6
-echo "configure:5159: checking gtk cflags" >&5
+echo "configure:5158: checking gtk cflags" >&5
       GTK_CFLAGS=`${GTK_CONFIG} --cflags`
       if test "$GCC" = "yes"; then
        GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow"
@@ -5165,19 +5164,19 @@ echo "configure:5159: checking gtk cflags" >&5
 
       
 echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6
-echo "configure:5169: checking for main in -lgdk_imlib" >&5
+echo "configure:5168: checking for main in -lgdk_imlib" >&5
 ac_lib_var=`echo gdk_imlib'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdk_imlib "
 cat > conftest.$ac_ext <<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
@@ -5199,12 +5198,12 @@ fi
 
       
 echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6
-echo "configure:5203: checking for Imlib_init in -lImlib" >&5
+echo "configure:5202: checking for Imlib_init in -lImlib" >&5
 ac_lib_var=`echo Imlib'_'Imlib_init | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lImlib "
 cat > conftest.$ac_ext <<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
@@ -5215,7 +5214,7 @@ int main() {
 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
@@ -5238,10 +5237,10 @@ fi
       for ac_func in gdk_imlib_init
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5242: checking for $ac_func" >&5
+echo "configure:5241: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -5264,7 +5263,7 @@ $ac_func();
 
 ; 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
@@ -5343,15 +5342,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5347: checking for $ac_hdr" >&5
+echo "configure:5346: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -5382,19 +5381,19 @@ done
 
       
 echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6
-echo "configure:5386: checking for main in -lxml" >&5
+echo "configure:5385: checking for main in -lxml" >&5
 ac_lib_var=`echo xml'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lxml "
 cat > conftest.$ac_ext <<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
@@ -5416,19 +5415,19 @@ fi
 
       
 echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6
-echo "configure:5420: checking for main in -lglade" >&5
+echo "configure:5419: checking for main in -lglade" >&5
 ac_lib_var=`echo glade'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lglade "
 cat > conftest.$ac_ext <<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
@@ -5450,19 +5449,19 @@ fi
 
       
 echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6
-echo "configure:5454: checking for main in -lglade-gnome" >&5
+echo "configure:5453: checking for main in -lglade-gnome" >&5
 ac_lib_var=`echo glade-gnome'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lglade-gnome "
 cat > conftest.$ac_ext <<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
@@ -5483,7 +5482,7 @@ fi
 
 
       cat > conftest.$ac_ext <<EOF
-#line 5487 "configure"
+#line 5486 "configure"
 #include "confdefs.h"
 #include <glade/glade-xml.h>
 EOF
@@ -5542,7 +5541,7 @@ if test "$with_x11" != "no"; then
 # Uses ac_ vars as temps to allow command line to override cache and checks.
 # --without-x overrides everything else, but does not touch the cache.
 echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:5546: checking for X" >&5
+echo "configure:5545: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -5602,12 +5601,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -5676,14 +5675,14 @@ if test "$ac_x_libraries" = NO; then
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<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.
@@ -5792,17 +5791,17 @@ else
     case "`(uname -sr) 2>/dev/null`" in
     "SunOS 5"*)
       echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
-echo "configure:5796: checking whether -R must be followed by a space" >&5
+echo "configure:5795: checking whether -R must be followed by a space" >&5
       ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
       cat > conftest.$ac_ext <<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
@@ -5818,14 +5817,14 @@ rm -f conftest*
       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
@@ -5861,12 +5860,12 @@ ac_cv_lib_dnet_dnet_ntoa=no
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5865: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5864: checking for dnet_ntoa in -ldnet" >&5
 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldnet "
 cat > conftest.$ac_ext <<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
@@ -5877,7 +5876,7 @@ int main() {
 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
@@ -5901,12 +5900,12 @@ fi
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
       
 echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
-echo "configure:5905: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5904: checking for dnet_ntoa in -ldnet_stub" >&5
 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldnet_stub "
 cat > conftest.$ac_ext <<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
@@ -5917,7 +5916,7 @@ int main() {
 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
@@ -5946,10 +5945,10 @@ fi
     # The nsl library prevents programs from opening the X display
     # on Irix 5.2, according to dickey@clark.net.
     echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:5950: checking for gethostbyname" >&5
+echo "configure:5949: checking for gethostbyname" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -5972,7 +5971,7 @@ gethostbyname();
 
 ; 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
@@ -5993,12 +5992,12 @@ fi
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5997: checking for gethostbyname in -lnsl" >&5
+echo "configure:5996: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lnsl "
 cat > conftest.$ac_ext <<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
@@ -6009,7 +6008,7 @@ int main() {
 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
@@ -6039,10 +6038,10 @@ fi
     # -lsocket must be given before -lnsl if both are needed.
     # We assume that if connect needs -lnsl, so does gethostbyname.
     echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:6043: checking for connect" >&5
+echo "configure:6042: checking for connect" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -6065,7 +6064,7 @@ connect();
 
 ; 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
@@ -6088,12 +6087,12 @@ fi
 xe_msg_checking="for connect in -lsocket"
 test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6092: checking "$xe_msg_checking"" >&5
+echo "configure:6091: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lsocket $X_EXTRA_LIBS"
 cat > conftest.$ac_ext <<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
@@ -6104,7 +6103,7 @@ int main() {
 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
@@ -6128,10 +6127,10 @@ fi
 
     # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
     echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:6132: checking for remove" >&5
+echo "configure:6131: checking for remove" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -6154,7 +6153,7 @@ remove();
 
 ; 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
@@ -6175,12 +6174,12 @@ fi
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:6179: checking for remove in -lposix" >&5
+echo "configure:6178: checking for remove in -lposix" >&5
 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lposix "
 cat > conftest.$ac_ext <<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
@@ -6191,7 +6190,7 @@ int main() {
 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
@@ -6215,10 +6214,10 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:6219: checking for shmat" >&5
+echo "configure:6218: checking for shmat" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -6241,7 +6240,7 @@ shmat();
 
 ; 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
@@ -6262,12 +6261,12 @@ fi
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:6266: checking for shmat in -lipc" >&5
+echo "configure:6265: checking for shmat in -lipc" >&5
 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lipc "
 cat > conftest.$ac_ext <<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
@@ -6278,7 +6277,7 @@ int main() {
 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
@@ -6314,12 +6313,12 @@ fi
 xe_msg_checking="for IceConnectionNumber in -lICE"
 test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6318: checking "$xe_msg_checking"" >&5
+echo "configure:6317: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lICE $X_EXTRA_LIBS"
 cat > conftest.$ac_ext <<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
@@ -6330,7 +6329,7 @@ int main() {
 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
@@ -6376,15 +6375,15 @@ EOF
 
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:6380: checking for Xm/Xm.h" >&5
+echo "configure:6379: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -6401,12 +6400,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6
-echo "configure:6405: checking for XmStringFree in -lXm" >&5
+echo "configure:6404: checking for XmStringFree in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<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
@@ -6417,7 +6416,7 @@ int main() {
 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
@@ -6569,7 +6568,7 @@ EOF
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:6573: checking for X defines extracted by xmkmf" >&5
+echo "configure:6572: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -6618,15 +6617,15 @@ EOF
 
     ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6
-echo "configure:6622: checking for X11/Intrinsic.h" >&5
+echo "configure:6621: checking for X11/Intrinsic.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -6650,12 +6649,12 @@ fi
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:6654: checking for XOpenDisplay in -lX11" >&5
+echo "configure:6653: checking for XOpenDisplay in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<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
@@ -6666,7 +6665,7 @@ int main() {
 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
@@ -6691,12 +6690,12 @@ fi
 xe_msg_checking="for XGetFontProperty in -lX11"
 test -n "-b i486-linuxaout" && xe_msg_checking="$xe_msg_checking using extra libs -b i486-linuxaout"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6695: checking "$xe_msg_checking"" >&5
+echo "configure:6694: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 -b i486-linuxaout"
 cat > conftest.$ac_ext <<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
@@ -6707,7 +6706,7 @@ int main() {
 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
@@ -6734,12 +6733,12 @@ fi
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:6738: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:6737: checking for XShapeSelectInput in -lXext" >&5
 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXext "
 cat > conftest.$ac_ext <<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
@@ -6750,7 +6749,7 @@ int main() {
 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
@@ -6773,12 +6772,12 @@ fi
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:6777: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:6776: checking for XtOpenDisplay in -lXt" >&5
 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXt "
 cat > conftest.$ac_ext <<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
@@ -6789,7 +6788,7 @@ int main() {
 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
@@ -6812,14 +6811,14 @@ fi
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:6816: checking the version of X11 being used" >&5
+echo "configure:6815: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<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
@@ -6847,13 +6846,13 @@ EOF
     esac
   fi
 
-  for ac_func in XConvertCase
+  for ac_func in XConvertCase XtRegisterDrawable
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6854: checking for $ac_func" >&5
+echo "configure:6853: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -6876,7 +6875,7 @@ $ac_func();
 
 ; 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
@@ -6908,15 +6907,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6912: checking for $ac_hdr" >&5
+echo "configure:6911: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -6949,10 +6948,10 @@ done
     for ac_func in XRegisterIMInstantiateCallback
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6953: checking for $ac_func" >&5
+echo "configure:6952: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -6975,7 +6974,7 @@ $ac_func();
 
 ; 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
@@ -7003,9 +7002,9 @@ fi
 done
 
   echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6
-echo "configure:7007: checking for standard XRegisterIMInstantiateCallback prototype" >&5
+echo "configure:7006: checking for standard XRegisterIMInstantiateCallback prototype" >&5
   cat > conftest.$ac_ext <<EOF
-#line 7009 "configure"
+#line 7008 "configure"
 #include "confdefs.h"
 
 #define NeedFunctionPrototypes 1
@@ -7017,7 +7016,7 @@ int main() {
 
 ; 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
@@ -7038,12 +7037,12 @@ rm -f conftest*
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:7042: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:7041: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXmu "
 cat > conftest.$ac_ext <<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
@@ -7054,7 +7053,7 @@ int main() {
 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
@@ -7093,19 +7092,19 @@ EOF
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:7097: checking for main in -lXbsd" >&5
+echo "configure:7096: checking for main in -lXbsd" >&5
 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXbsd "
 cat > conftest.$ac_ext <<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
@@ -7129,7 +7128,7 @@ fi
     if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
         if test "$GCC" = "yes"; then
                   echo $ac_n "checking for name of AIX gcc threads option""... $ac_c" 1>&6
-echo "configure:7133: checking for name of AIX gcc threads option" >&5
+echo "configure:7132: checking for name of AIX gcc threads option" >&5
       case `$CC -v --help 2>&1` in
         *-mthreads*) aix_threads=-mthreads ;;
                   *) aix_threads=-pthread  ;;
@@ -7143,10 +7142,10 @@ echo "configure:7133: checking for name of AIX gcc threads option" >&5
          xe_save_CC="$CC"
          CC="${CC}_r"
          echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:7147: checking size of short" >&5
+echo "configure:7146: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7150 "configure"
+#line 7149 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -7157,7 +7156,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:7161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -7186,22 +7185,22 @@ EOF
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:7190: checking for MS-Windows" >&5
+echo "configure:7189: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:7193: checking for main in -lgdi32" >&5
+echo "configure:7192: checking for main in -lgdi32" >&5
 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdi32 "
 cat > conftest.$ac_ext <<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
@@ -7274,12 +7273,12 @@ EOF
  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
@@ -7343,15 +7342,15 @@ fi
 if test "$with_x11" = "yes"; then
   ac_safe=`echo "X11/extensions/shape.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/shape.h""... $ac_c" 1>&6
-echo "configure:7347: checking for X11/extensions/shape.h" >&5
+echo "configure:7346: checking for X11/extensions/shape.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -7403,7 +7402,7 @@ case "$x_libraries" in *X11R4* )
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:7407: checking for WM_COMMAND option" >&5;
+echo "configure:7406: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -7418,15 +7417,15 @@ fi
 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
 test -z "$with_xauth" && { ac_safe=`echo "X11/Xauth.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xauth.h""... $ac_c" 1>&6
-echo "configure:7422: checking for X11/Xauth.h" >&5
+echo "configure:7421: checking for X11/Xauth.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -7449,12 +7448,12 @@ fi
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:7453: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:7452: checking for XauGetAuthByAddr in -lXau" >&5
 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXau "
 cat > conftest.$ac_ext <<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
@@ -7465,7 +7464,7 @@ int main() {
 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
@@ -7510,15 +7509,15 @@ if test "$with_tooltalk" != "no" ; then
       for dir in "" "Tt/" "desktop/" ; do
     ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6
-echo "configure:7514: checking for ${dir}tt_c.h" >&5
+echo "configure:7513: checking for ${dir}tt_c.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -7554,12 +7553,12 @@ if test "$with_tooltalk" != "no" ; then
 xe_msg_checking="for tt_message_create in -ltt"
 test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:7558: checking "$xe_msg_checking"" >&5
+echo "configure:7557: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltt $extra_libs"
 cat > conftest.$ac_ext <<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
@@ -7570,7 +7569,7 @@ int main() {
 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
@@ -7627,15 +7626,15 @@ fi
 
 test -z "$with_cde" && { ac_safe=`echo "Dt/Dt.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Dt/Dt.h""... $ac_c" 1>&6
-echo "configure:7631: checking for Dt/Dt.h" >&5
+echo "configure:7630: checking for Dt/Dt.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -7658,12 +7657,12 @@ fi
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:7662: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:7661: checking for DtDndDragStart in -lDtSvc" >&5
 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lDtSvc "
 cat > conftest.$ac_ext <<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
@@ -7674,7 +7673,7 @@ int main() {
 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
@@ -7747,7 +7746,7 @@ fi
 
 if test "$with_dragndrop" != "no" ; then
   echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:7751: checking if drag and drop API is needed" >&5
+echo "configure:7750: checking if drag and drop API is needed" >&5
   if test -n "$dragndrop_proto" ; then
     with_dragndrop=yes
     echo "$ac_t""yes (${dragndrop_proto} )" 1>&6
@@ -7767,18 +7766,18 @@ EOF
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:7771: checking for LDAP" >&5
+echo "configure:7770: checking for LDAP" >&5
 test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ldap.h""... $ac_c" 1>&6
-echo "configure:7774: checking for ldap.h" >&5
+echo "configure:7773: checking for ldap.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -7801,15 +7800,15 @@ fi
  }
 test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for lber.h""... $ac_c" 1>&6
-echo "configure:7805: checking for lber.h" >&5
+echo "configure:7804: checking for lber.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -7830,26 +7829,73 @@ else
 with_ldap=no
 fi
  }
-if test "$with_ldap" != "no"; then
-  
-echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:7837: checking for ldap_search in -lldap" >&5
-ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'`
+if test no != "$with_ldap";then
+  if test . != "${ldap_libs+.}";then
+    ldap_libs=
+    echo $ac_n "checking for ldap_open""... $ac_c" 1>&6
+echo "configure:7837: checking for ldap_open" >&5
+
+cat > conftest.$ac_ext <<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
@@ -7866,19 +7912,17 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   with_ldap=yes
 else
   echo "$ac_t""no" 1>&6
-fi
-
-
-    test "$with_ldap" != "yes" && { 
+ldap_needs_lber=yes ldap_other_libs=-llber
+       
 xe_msg_checking="for ldap_open in -lldap"
-test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber"
+test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:7877: checking "$xe_msg_checking"" >&5
+echo "configure:7921: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
-xe_check_libs=" -lldap -llber"
+xe_check_libs=" -lldap $ldap_other_libs"
 cat > conftest.$ac_ext <<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
@@ -7889,7 +7933,7 @@ int main() {
 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
@@ -7903,22 +7947,20 @@ xe_check_libs=""
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  with_ldap=yes with_ldap_lber=yes
+  with_ldap=yes
 else
   echo "$ac_t""no" 1>&6
-fi
-
- }
-  test "$with_ldap" != "yes" && { 
+ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb"
+         
 xe_msg_checking="for ldap_open in -lldap"
-test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb"
+test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:7917: checking "$xe_msg_checking"" >&5
+echo "configure:7959: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
-xe_check_libs=" -lldap -llber -lkrb"
+xe_check_libs=" -lldap $ldap_other_libs"
 cat > conftest.$ac_ext <<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
@@ -7929,7 +7971,7 @@ int main() {
 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
@@ -7943,22 +7985,20 @@ xe_check_libs=""
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes
+  with_ldap=yes
 else
   echo "$ac_t""no" 1>&6
-fi
-
- }
-  test "$with_ldap" != "yes" && { 
+ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes"
+           
 xe_msg_checking="for ldap_open in -lldap"
-test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes"
+test -n "$ldap_other_libs" && xe_msg_checking="$xe_msg_checking using extra libs $ldap_other_libs"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:7957: checking "$xe_msg_checking"" >&5
+echo "configure:7997: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
-xe_check_libs=" -lldap -llber -lkrb -ldes"
+xe_check_libs=" -lldap $ldap_other_libs"
 cat > conftest.$ac_ext <<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
@@ -7969,7 +8009,7 @@ int main() {
 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
@@ -7983,50 +8023,88 @@ xe_check_libs=""
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes with_ldap_des=yes
+  with_ldap=yes
 else
   echo "$ac_t""no" 1>&6
+with_ldap=no
 fi
 
- }
-              test "$with_ldap_lber" != "yes" && { 
-echo $ac_n "checking for ber_pvt_opt_on in -llber""... $ac_c" 1>&6
-echo "configure:7995: checking for ber_pvt_opt_on in -llber" >&5
-ac_lib_var=`echo lber'_'ber_pvt_opt_on | sed 'y%./+-%__p_%'`
 
-xe_check_libs=" -llber "
+fi
+
+
+fi
+
+
+fi
+
+
+      if test yes = "$with_ldap";then
+       if test yes = "$ldap_needs_des";then
+         ldap_libs="-ldes $ldap_libs" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-ldes\" to \$ldap_libs"; fi
+       fi
+       if test yes = "$ldap_needs_krb";then
+         ldap_libs="-lkrb $ldap_libs" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lkrb\" to \$ldap_libs"; fi
+       fi
+       if test yes = "$ldap_needs_lber";then
+         ldap_libs="-llber $ldap_libs" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-llber\" to \$ldap_libs"; fi
+       fi
+       ldap_libs="-lldap $ldap_libs" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lldap\" to \$ldap_libs"; fi
+      fi
+fi
+
+  else
+    save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS"
+    echo $ac_n "checking for ldap_open""... $ac_c" 1>&6
+echo "configure:8060: checking for ldap_open" >&5
+
 cat > conftest.$ac_ext <<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
@@ -8040,23 +8118,14 @@ EOF
   extra_objs="$extra_objs eldap.o" &&  if test "$extra_verbose" = "yes"; then
    echo "    xemacs will be linked with \"eldap.o\""
  fi
-  if test "$with_ldap_des" = "yes" ; then
-    LIBS="-ldes $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-ldes\" to \$LIBS"; fi
-  fi
-  if test "$with_ldap_krb" = "yes" ; then
-    LIBS="-lkrb $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lkrb\" to \$LIBS"; fi
-  fi
-  if test "$with_ldap_lber" = "yes" ; then
-    LIBS="-llber $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-llber\" to \$LIBS"; fi
-  fi
-  LIBS="-lldap $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lldap\" to \$LIBS"; fi
+  LIBS="$ldap_libs $LIBS"
   for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8057: checking for $ac_func" >&5
+echo "configure:8126: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -8079,7 +8148,7 @@ $ac_func();
 
 ; 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
@@ -8110,20 +8179,20 @@ fi
 
 if test "$with_postgresql" != "no"; then
   echo "checking for PostgreSQL" 1>&6
-echo "configure:8114: checking for PostgreSQL" >&5
+echo "configure:8183: checking for PostgreSQL" >&5
 
   for header_dir in "" "pgsql/" "postgresql/"; do
     ac_safe=`echo "${header_dir}libpq-fe.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${header_dir}libpq-fe.h""... $ac_c" 1>&6
-echo "configure:8119: checking for ${header_dir}libpq-fe.h" >&5
+echo "configure:8188: checking for ${header_dir}libpq-fe.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -8147,12 +8216,12 @@ fi
 
   test -n "$libpq_fe_h_file" && { 
 echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6
-echo "configure:8151: checking for PQconnectdb in -lpq" >&5
+echo "configure:8220: checking for PQconnectdb in -lpq" >&5
 ac_lib_var=`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpq "
 cat > conftest.$ac_ext <<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
@@ -8163,7 +8232,7 @@ int main() {
 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
@@ -8196,12 +8265,12 @@ EOF
 
     
 echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6
-echo "configure:8200: checking for PQconnectStart in -lpq" >&5
+echo "configure:8269: checking for PQconnectStart in -lpq" >&5
 ac_lib_var=`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpq "
 cat > conftest.$ac_ext <<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
@@ -8212,7 +8281,7 @@ int main() {
 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
@@ -8260,7 +8329,7 @@ fi
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:8264: checking for graphics libraries" >&5
+echo "configure:8333: checking for graphics libraries" >&5
 
       libpath_xpm=
   incpath_xpm=
@@ -8286,10 +8355,10 @@ echo "configure:8264: checking for graphics libraries" >&5
     CFLAGS=""$incpath_xpm" $CFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi
     LDFLAGS=""$libpath_xpm" $LDFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi
     echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6
-echo "configure:8290: checking for Xpm - no older than 3.4f" >&5
+echo "configure:8359: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 8293 "configure"
+#line 8362 "configure"
 #include "confdefs.h"
 #define XPM_NUMBERS
 #include <X11/xpm.h>
@@ -8298,7 +8367,7 @@ echo "configure:8290: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:8302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest dummy_arg; xpm_status=$?;
       if test "$xpm_status" = "0"; then
@@ -8342,17 +8411,17 @@ EOF
     libs_x="-lXpm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXpm\" to \$libs_x"; fi
     CFLAGS=""$incpath_xpm" $CFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi
     echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6
-echo "configure:8346: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:8415: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<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
@@ -8378,15 +8447,15 @@ EOF
 
     test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for compface.h""... $ac_c" 1>&6
-echo "configure:8382: checking for compface.h" >&5
+echo "configure:8451: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -8409,12 +8478,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:8413: checking for UnGenFace in -lcompface" >&5
+echo "configure:8482: checking for UnGenFace in -lcompface" >&5
 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcompface "
 cat > conftest.$ac_ext <<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
@@ -8425,7 +8494,7 @@ int main() {
 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
@@ -8477,12 +8546,12 @@ EOF
       if test "$with_png $with_tiff" != "no no"; then
     
 echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6
-echo "configure:8481: checking for inflate in -lc" >&5
+echo "configure:8550: checking for inflate in -lc" >&5
 ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<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
@@ -8493,7 +8562,7 @@ int main() {
 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
@@ -8512,12 +8581,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:8516: checking for inflate in -lz" >&5
+echo "configure:8585: checking for inflate in -lz" >&5
 ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lz "
 cat > conftest.$ac_ext <<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
@@ -8528,7 +8597,7 @@ int main() {
 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
@@ -8547,12 +8616,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:8551: checking for inflate in -lgz" >&5
+echo "configure:8620: checking for inflate in -lgz" >&5
 ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgz "
 cat > conftest.$ac_ext <<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
@@ -8563,7 +8632,7 @@ int main() {
 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
@@ -8593,15 +8662,15 @@ fi
 
     test -z "$with_jpeg" && { ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6
-echo "configure:8597: checking for jpeglib.h" >&5
+echo "configure:8666: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -8624,12 +8693,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:8628: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:8697: checking for jpeg_destroy_decompress in -ljpeg" >&5
 ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ljpeg "
 cat > conftest.$ac_ext <<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
@@ -8640,7 +8709,7 @@ int main() {
 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
@@ -8676,10 +8745,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:8680: checking for pow" >&5
+echo "configure:8749: checking for pow" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -8702,7 +8771,7 @@ pow();
 
 ; 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
@@ -8723,15 +8792,15 @@ fi
  }
   test -z "$with_png" && { ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for png.h""... $ac_c" 1>&6
-echo "configure:8727: checking for png.h" >&5
+echo "configure:8796: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -8754,12 +8823,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:8758: checking for png_read_image in -lpng" >&5
+echo "configure:8827: checking for png_read_image in -lpng" >&5
 ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpng "
 cat > conftest.$ac_ext <<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
@@ -8770,7 +8839,7 @@ int main() {
 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
@@ -8793,10 +8862,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:8797: checking for workable png version information" >&5
+echo "configure:8866: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 8800 "configure"
+#line 8869 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -8804,7 +8873,7 @@ echo "configure:8797: checking for workable png version information" >&5
     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}
 EOF
-if { (eval echo configure:8808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest dummy_arg; png_status=$?;
       if test "$png_status" = "0"; then
@@ -8847,15 +8916,15 @@ EOF
 
     test -z "$with_tiff" && { ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6
-echo "configure:8851: checking for tiffio.h" >&5
+echo "configure:8920: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -8878,12 +8947,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:8882: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:8951: checking for TIFFClientOpen in -ltiff" >&5
 ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltiff "
 cat > conftest.$ac_ext <<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
@@ -8894,7 +8963,7 @@ int main() {
 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
@@ -8933,15 +9002,15 @@ fi
 if test "$with_gtk" = "yes"; then
     test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for compface.h""... $ac_c" 1>&6
-echo "configure:8937: checking for compface.h" >&5
+echo "configure:9006: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -8964,12 +9033,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:8968: checking for UnGenFace in -lcompface" >&5
+echo "configure:9037: checking for UnGenFace in -lcompface" >&5
 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcompface "
 cat > conftest.$ac_ext <<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
@@ -8980,7 +9049,7 @@ int main() {
 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
@@ -9019,12 +9088,12 @@ fi
 
 if test "$with_x11" = "yes"; then
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:9023: checking for X11 graphics libraries" >&5
+echo "configure:9092: checking for X11 graphics libraries" >&5
 fi
 
 if test "$with_x11" = "yes"; then
   echo "checking for the Athena widgets" 1>&6
-echo "configure:9028: checking for the Athena widgets" >&5
+echo "configure:9097: checking for the Athena widgets" >&5
 
     case "$with_athena" in
         "xaw" | "")    athena_variant=Xaw      athena_3d=no  ;;
@@ -9040,12 +9109,12 @@ echo "configure:9028: checking for the Athena widgets" >&5
     if test "$athena_3d" = "no"; then
     
 echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9044: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+echo "configure:9113: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<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
@@ -9056,7 +9125,7 @@ int main() {
 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
@@ -9072,12 +9141,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
           
 echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9076: checking for $athena_3d_function in -l$athena_variant" >&5
+echo "configure:9145: checking for $athena_3d_function in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<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
@@ -9088,7 +9157,7 @@ int main() {
 $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
@@ -9119,12 +9188,12 @@ fi
   else
         
 echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9123: checking for $athena_3d_function in -l$athena_variant" >&5
+echo "configure:9192: checking for $athena_3d_function in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<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
@@ -9135,7 +9204,7 @@ int main() {
 $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
@@ -9153,12 +9222,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for $athena_3d_function in -lXaw""... $ac_c" 1>&6
-echo "configure:9157: checking for $athena_3d_function in -lXaw" >&5
+echo "configure:9226: checking for $athena_3d_function in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<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
@@ -9169,7 +9238,7 @@ int main() {
 $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
@@ -9200,15 +9269,15 @@ fi
     if test "$athena_3d" = "no"; then
     ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9204: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9273: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9228,15 +9297,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6
-echo "configure:9232: checking for X11/Xaw/XawInit.h" >&5
+echo "configure:9301: checking for X11/Xaw/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9262,15 +9331,15 @@ fi
   else
             ac_safe=`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6
-echo "configure:9266: checking for X11/$athena_variant/XawInit.h" >&5
+echo "configure:9335: checking for X11/$athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9287,15 +9356,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9291: checking for X11/$athena_variant/ThreeD.h" >&5
+echo "configure:9360: checking for X11/$athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9323,15 +9392,15 @@ fi
         if test -z "$athena_h_path"; then
       ac_safe=`echo "$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $athena_variant/XawInit.h""... $ac_c" 1>&6
-echo "configure:9327: checking for $athena_variant/XawInit.h" >&5
+echo "configure:9396: checking for $athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9348,15 +9417,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $athena_variant/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9352: checking for $athena_variant/ThreeD.h" >&5
+echo "configure:9421: checking for $athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9385,15 +9454,15 @@ fi
         if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
       ac_safe=`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6
-echo "configure:9389: checking for X11/Xaw3d/XawInit.h" >&5
+echo "configure:9458: checking for X11/Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9410,15 +9479,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9414: checking for X11/Xaw3d/ThreeD.h" >&5
+echo "configure:9483: checking for X11/Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9450,15 +9519,15 @@ fi
         if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
       ac_safe=`echo "Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xaw3d/XawInit.h""... $ac_c" 1>&6
-echo "configure:9454: checking for Xaw3d/XawInit.h" >&5
+echo "configure:9523: checking for Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9475,15 +9544,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xaw3d/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9479: checking for Xaw3d/ThreeD.h" >&5
+echo "configure:9548: checking for Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9515,15 +9584,15 @@ fi
             if test -z "$athena_h_path"; then
       ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
-echo "configure:9519: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9588: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9562,15 +9631,15 @@ fi
 if test "$with_x11" = "yes"; then
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:9566: checking for Xm/Xm.h" >&5
+echo "configure:9635: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -9587,12 +9656,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6
-echo "configure:9591: checking for XmStringFree in -lXm" >&5
+echo "configure:9660: checking for XmStringFree in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<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
@@ -9603,7 +9672,7 @@ int main() {
 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
@@ -9632,9 +9701,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:9636: checking for Lesstif" >&5
+echo "configure:9705: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 9638 "configure"
+#line 9707 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -9658,7 +9727,7 @@ rm -f conftest*
 fi 
 
 case "$opsys" in
-  *linux* )  lucid_prefers_motif="no"  ;;
+  *linux* | cygwin* )  lucid_prefers_motif="no"  ;;
   * )        lucid_prefers_motif="yes" ;;
 esac
 
@@ -10080,7 +10149,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:10084: checking for Mule-related features" >&5
+echo "configure:10153: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -10105,15 +10174,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10109: checking for $ac_hdr" >&5
+echo "configure:10178: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -10144,12 +10213,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:10148: checking for strerror in -lintl" >&5
+echo "configure:10217: checking for strerror in -lintl" >&5
 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lintl "
 cat > conftest.$ac_ext <<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
@@ -10160,7 +10229,7 @@ int main() {
 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
@@ -10215,7 +10284,7 @@ int main() {
 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
@@ -10255,7 +10324,7 @@ int main() {
 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
@@ -10294,7 +10363,7 @@ int main() {
 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
@@ -10359,15 +10428,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:10363: checking for XFontSet" >&5
+echo "configure:10432: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:10366: checking for XmbDrawString in -lX11" >&5
+echo "configure:10435: checking for XmbDrawString in -lX11" >&5
 ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<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
@@ -10378,7 +10447,7 @@ int main() {
 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
@@ -10418,15 +10487,15 @@ EOF
     test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
   test -z "$with_wnn" && { ac_safe=`echo "wnn/jllib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for wnn/jllib.h""... $ac_c" 1>&6
-echo "configure:10422: checking for wnn/jllib.h" >&5
+echo "configure:10491: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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.  */
@@ -10508,7 +10577,7 @@ $ac_func();
 
 ; 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
@@ -10537,12 +10606,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:10541: checking for crypt in -lcrypt" >&5
+echo "configure:10610: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcrypt "
 cat > conftest.$ac_ext <<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
@@ -10553,7 +10622,7 @@ int main() {
 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
@@ -10604,7 +10673,7 @@ int main() {
 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
@@ -10622,12 +10691,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6
-echo "configure:10626: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:10695: checking for jl_dic_list_e in -lwnn4" >&5
 ac_lib_var=`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn4 "
 cat > conftest.$ac_ext <<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
@@ -10638,7 +10707,7 @@ int main() {
 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
@@ -10656,12 +10725,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6
-echo "configure:10660: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:10729: checking for jl_dic_list_e in -lwnn6" >&5
 ac_lib_var=`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6 "
 cat > conftest.$ac_ext <<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
@@ -10672,7 +10741,7 @@ int main() {
 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
@@ -10690,12 +10759,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6
-echo "configure:10694: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:10763: checking for dic_list_e in -lwnn6_fromsrc" >&5
 ac_lib_var=`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6_fromsrc "
 cat > conftest.$ac_ext <<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
@@ -10706,7 +10775,7 @@ int main() {
 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
@@ -10754,12 +10823,12 @@ EOF
     if test "$with_wnn6" != "no"; then
       
 echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6
-echo "configure:10758: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:10827: checking for jl_fi_dic_list in -l$libwnn" >&5
 ac_lib_var=`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$libwnn "
 cat > conftest.$ac_ext <<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
@@ -10770,7 +10839,7 @@ int main() {
 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
@@ -10805,15 +10874,15 @@ EOF
   if test "$with_canna" != "no"; then
     ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
-echo "configure:10809: checking for canna/jrkanji.h" >&5
+echo "configure:10878: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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
@@ -10923,7 +10992,7 @@ int main() {
 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
@@ -10962,7 +11031,7 @@ int main() {
 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
@@ -11011,12 +11080,12 @@ if test "$need_motif" = "yes" ; then
   libs_x="-lXm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXm\" to \$libs_x"; fi
     
 echo $ac_n "checking for layout_object_getvalue in -li18n""... $ac_c" 1>&6
-echo "configure:11015: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:11084: checking for layout_object_getvalue in -li18n" >&5
 ac_lib_var=`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -li18n "
 cat > conftest.$ac_ext <<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
@@ -11027,7 +11096,7 @@ int main() {
 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.  */
@@ -11140,7 +11209,7 @@ $ac_func();
 
 ; 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.  */
@@ -11207,7 +11276,7 @@ $ac_func();
 
 ; 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
@@ -11236,10 +11305,10 @@ done
 
 
 echo $ac_n "checking for openpty""... $ac_c" 1>&6
-echo "configure:11240: checking for openpty" >&5
+echo "configure:11309: checking for openpty" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -11262,7 +11331,7 @@ openpty();
 
 ; 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
@@ -11281,12 +11350,12 @@ else
 
   
 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6
-echo "configure:11285: checking for openpty in -lutil" >&5
+echo "configure:11354: checking for openpty in -lutil" >&5
 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lutil "
 cat > conftest.$ac_ext <<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
@@ -11297,7 +11366,7 @@ int main() {
 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
@@ -11332,15 +11401,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11336: checking for $ac_hdr" >&5
+echo "configure:11405: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -11376,15 +11445,15 @@ for ac_hdr in stropts.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11380: checking for $ac_hdr" >&5
+echo "configure:11449: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -11417,10 +11486,10 @@ if test "$ac_cv_header_stropts_h" = "yes"; then
   for ac_func in isastream
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11421: checking for $ac_func" >&5
+echo "configure:11490: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -11443,7 +11512,7 @@ $ac_func();
 
 ; 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
@@ -11474,15 +11543,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11478: checking for $ac_hdr" >&5
+echo "configure:11547: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -11519,10 +11588,10 @@ extra_objs="$extra_objs realpath.o" &&  if test "$extra_verbose" = "yes"; then
 for ac_func in getloadavg
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11523: checking for $ac_func" >&5
+echo "configure:11592: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -11545,7 +11614,7 @@ $ac_func();
 
 ; 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
@@ -11578,15 +11647,15 @@ if test "$ac_cv_func_getloadavg" = "yes"; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11582: checking for $ac_hdr" >&5
+echo "configure:11651: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -11622,12 +11691,12 @@ else
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:11626: checking for kstat_open in -lkstat" >&5
+echo "configure:11695: checking for kstat_open in -lkstat" >&5
 ac_lib_var=`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkstat "
 cat > conftest.$ac_ext <<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
@@ -11638,7 +11707,7 @@ int main() {
 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*
@@ -11713,12 +11782,12 @@ done
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:11717: checking for kvm_read in -lkvm" >&5
+echo "configure:11786: checking for kvm_read in -lkvm" >&5
 ac_lib_var=`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkvm "
 cat > conftest.$ac_ext <<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
@@ -11729,7 +11798,7 @@ int main() {
 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
@@ -11860,7 +11929,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:11864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:11933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -11890,9 +11959,9 @@ fi
 
 if test "$HAVE_TIMEVAL" = "yes"; then
 echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6
-echo "configure:11894: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:11963: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11896 "configure"
+#line 11965 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -11913,7 +11982,7 @@ int main() {
 
 ; 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
@@ -11988,17 +12057,17 @@ if test "$__DECC" != "yes"; then
   # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:11992: checking for working alloca.h" >&5
+echo "configure:12061: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<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
@@ -12022,10 +12091,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:12026: checking for alloca" >&5
+echo "configure:12095: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12029 "configure"
+#line 12098 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -12053,7 +12122,7 @@ int main() {
 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
@@ -12092,10 +12161,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:12096: checking whether alloca needs Cray hooks" >&5
+echo "configure:12165: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12099 "configure"
+#line 12168 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -12119,10 +12188,10 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12123: checking for $ac_func" >&5
+echo "configure:12192: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -12145,7 +12214,7 @@ $ac_func();
 
 ; 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
@@ -12175,10 +12244,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:12179: checking stack direction for C alloca" >&5
+echo "configure:12248: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12182 "configure"
+#line 12251 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -12197,7 +12266,7 @@ main ()
   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*
@@ -12263,10 +12332,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:12267: checking for working vfork" >&5
+echo "configure:12336: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12270 "configure"
+#line 12339 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -12361,7 +12430,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:12365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
 
 
 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 ()
@@ -12400,7 +12469,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:12404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
 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.  */
@@ -12454,7 +12523,7 @@ $ac_func();
 
 ; 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"
 
 /*
@@ -12540,7 +12609,7 @@ main()
 }
 
 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>
@@ -12603,7 +12672,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:12607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -12632,9 +12701,9 @@ test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
 if test "$rel_alloc $have_mmap" = "default yes"; then
   if test "$doug_lea_malloc" = "yes"; then
         echo $ac_n "checking for M_MMAP_THRESHOLD""... $ac_c" 1>&6
-echo "configure:12636: checking for M_MMAP_THRESHOLD" >&5
+echo "configure:12705: checking for M_MMAP_THRESHOLD" >&5
     cat > conftest.$ac_ext <<EOF
-#line 12638 "configure"
+#line 12707 "configure"
 #include "confdefs.h"
 #include <malloc.h>
 int main() {
@@ -12646,7 +12715,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   rel_alloc=no; echo "$ac_t""yes" 1>&6;
 else
@@ -12671,15 +12740,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:12675: checking for termios.h" >&5
+echo "configure:12744: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -12722,15 +12791,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "termio.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termio.h""... $ac_c" 1>&6
-echo "configure:12726: checking for termio.h" >&5
+echo "configure:12795: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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.  */
@@ -12788,7 +12857,7 @@ socket();
 
 ; 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
@@ -12803,15 +12872,15 @@ if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "netinet/in.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for netinet/in.h""... $ac_c" 1>&6
-echo "configure:12807: checking for netinet/in.h" >&5
+echo "configure:12876: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -12828,15 +12897,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "arpa/inet.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for arpa/inet.h""... $ac_c" 1>&6
-echo "configure:12832: checking for arpa/inet.h" >&5
+echo "configure:12901: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -12861,9 +12930,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:12865: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:12934: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12867 "configure"
+#line 12936 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12874,7 +12943,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:12878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_SOCKADDR_SUN_LEN
@@ -12892,9 +12961,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:12896: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:12965: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12898 "configure"
+#line 12967 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12904,7 +12973,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:12908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MULTICAST
 
 
 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.  */
@@ -12961,7 +13030,7 @@ msgget();
 
 ; 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
@@ -12976,15 +13045,15 @@ if eval "test \"`echo '$ac_cv_func_'msgget`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6
-echo "configure:12980: checking for sys/ipc.h" >&5
+echo "configure:13049: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -13001,15 +13070,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "sys/msg.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/msg.h""... $ac_c" 1>&6
-echo "configure:13005: checking for sys/msg.h" >&5
+echo "configure:13074: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -13082,15 +13151,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "sys/dir.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/dir.h""... $ac_c" 1>&6
-echo "configure:13086: checking for sys/dir.h" >&5
+echo "configure:13155: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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
@@ -13248,7 +13317,7 @@ int main() {
 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
@@ -13295,7 +13364,7 @@ int main() {
 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*
@@ -13428,12 +13497,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     
 echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6
-echo "configure:13432: checking for AuOpenServer in -laudio" >&5
+echo "configure:13501: checking for AuOpenServer in -laudio" >&5
 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<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
@@ -13444,7 +13513,7 @@ int main() {
 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
@@ -13483,7 +13552,7 @@ EOF
  fi
     libs_x="-laudio $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-laudio\" to \$libs_x"; fi
             cat > conftest.$ac_ext <<EOF
-#line 13487 "configure"
+#line 13556 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -13514,7 +13583,7 @@ if test "$with_esd_sound" != "no"; then
   # Extract the first word of "esd-config", so it can be a program name with args.
 set dummy esd-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:13518: checking for $ac_word" >&5
+echo "configure:13587: checking for $ac_word" >&5
 
 if test -n "$have_esd_config"; then
   ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test.
     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.  */
@@ -13569,7 +13638,7 @@ esd_play_stream();
 
 ; 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
@@ -13620,7 +13689,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:13624: checking for TTY-related features" >&5
+echo "configure:13693: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -13636,12 +13705,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:13640: checking for tgetent in -lncurses" >&5
+echo "configure:13709: checking for tgetent in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lncurses "
 cat > conftest.$ac_ext <<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
@@ -13652,7 +13721,7 @@ int main() {
 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
@@ -13685,15 +13754,15 @@ EOF
 
     ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:13689: checking for ncurses/curses.h" >&5
+echo "configure:13758: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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
@@ -13812,7 +13881,7 @@ int main() {
 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
@@ -13853,7 +13922,7 @@ int main() {
 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
@@ -13914,7 +13983,7 @@ int main() {
 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
@@ -13932,12 +14001,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:13936: checking for tgetent in -ltermcap" >&5
+echo "configure:14005: checking for tgetent in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltermcap "
 cat > conftest.$ac_ext <<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
@@ -13948,7 +14017,7 @@ int main() {
 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
@@ -13997,15 +14066,15 @@ EOF
     if test "$with_gpm" != "no"; then
     ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for gpm.h""... $ac_c" 1>&6
-echo "configure:14001: checking for gpm.h" >&5
+echo "configure:14070: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -14023,12 +14092,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
       
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:14027: checking for Gpm_Open in -lgpm" >&5
+echo "configure:14096: checking for Gpm_Open in -lgpm" >&5
 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgpm "
 cat > conftest.$ac_ext <<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
@@ -14039,7 +14108,7 @@ int main() {
 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
@@ -14098,20 +14167,20 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" -o "$need_event_unixoid" = "yes"
 
 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
   != "no no no" && echo "checking for database support" 1>&6
-echo "configure:14102: checking for database support" >&5
+echo "configure:14171: checking for database support" >&5
 
 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
   ac_safe=`echo "ndbm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6
-echo "configure:14107: checking for ndbm.h" >&5
+echo "configure:14176: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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
@@ -14157,7 +14226,7 @@ int main() {
 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.  */
@@ -14211,7 +14280,7 @@ dbm_open();
 
 ; 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
@@ -14230,12 +14299,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:14234: checking for dbm_open in -ldbm" >&5
+echo "configure:14303: checking for dbm_open in -ldbm" >&5
 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldbm "
 cat > conftest.$ac_ext <<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
@@ -14246,7 +14315,7 @@ int main() {
 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>
@@ -14308,7 +14554,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_file="$header"; break
 else
@@ -14319,7 +14565,7 @@ rm -f conftest*
         ;;
         *)
     cat > conftest.$ac_ext <<EOF
-#line 14323 "configure"
+#line 14569 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -14327,21 +14573,29 @@ rm -f conftest*
 #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
@@ -14359,9 +14613,9 @@ rm -f conftest*
 
   if test "$with_database_berkdb" != "no"; then
     echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6
-echo "configure:14363: checking for Berkeley DB version" >&5
+echo "configure:14617: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 14365 "configure"
+#line 14619 "configure"
 #include "confdefs.h"
 #include <$db_h_file>
 #if DB_VERSION_MAJOR > 1
@@ -14373,7 +14627,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   egrep "yes" >/dev/null 2>&1; then
   rm -rf conftest*
   cat > conftest.$ac_ext <<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.  */
@@ -14426,7 +14680,7 @@ $dbfunc();
 
 ; 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
@@ -14445,12 +14699,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:14449: checking for $dbfunc in -ldb" >&5
+echo "configure:14703: checking for $dbfunc in -ldb" >&5
 ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldb "
 cat > conftest.$ac_ext <<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
@@ -14461,7 +14715,7 @@ int main() {
 $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
@@ -14541,7 +14795,7 @@ int main() {
 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
@@ -14596,7 +14850,7 @@ fi
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:14600: checking for module support" >&5
+echo "configure:14854: checking for module support" >&5
 
     if test "$with_msw" = "yes"; then
     have_dl=yes;
@@ -14612,15 +14866,15 @@ EOF
  ;;
       *)          ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:14616: checking for dlfcn.h" >&5
+echo "configure:14870: checking for dlfcn.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#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*
@@ -14637,16 +14891,16 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
            echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:14641: checking for dlopen in -lc" >&5
+echo "configure:14895: checking for dlopen in -lc" >&5
            cat > conftest.$ac_ext <<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
@@ -14655,18 +14909,18 @@ else
   rm -rf conftest*
   
                echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:14659: checking for dlopen in -ldl" >&5
+echo "configure:14913: checking for dlopen in -ldl" >&5
                ac_save_LIBS="$LIBS"
                LIBS="-ldl $LIBS"
                cat > conftest.$ac_ext <<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
@@ -14695,12 +14949,12 @@ EOF
         else
            
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:14699: checking for shl_load in -ldld" >&5
+echo "configure:14953: checking for shl_load in -ldld" >&5
 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<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
@@ -14711,7 +14965,7 @@ int main() {
 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
@@ -14738,12 +14992,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:14742: checking for dld_init in -ldld" >&5
+echo "configure:14996: checking for dld_init in -ldld" >&5
 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<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
@@ -14754,7 +15008,7 @@ int main() {
 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
@@ -14801,7 +15055,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:14805: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:15059: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -14829,9 +15083,9 @@ if test "$GCC" = "yes"; then
   XEGCC=yes
 else
   echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:14833: checking checking whether we are using GNU C" >&5
+echo "configure:15087: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 14835 "configure"
+#line 15089 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -14853,7 +15107,7 @@ rm -f conftest*
 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
@@ -14954,18 +15208,18 @@ if test -n "$dll_cflags"; then
 
   # Check to make sure the dll_cflags actually works.
   echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6
-echo "configure:14958: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:15212: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<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
@@ -14996,7 +15250,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:15000: checking if C compiler can produce shared libraries" >&5
+echo "configure:15254: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes -o "$__ICC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -15047,14 +15301,14 @@ if test -n "$xcldf"; then
   xe_libs=
   ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
   cat > conftest.$ac_ext <<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
@@ -15079,7 +15333,7 @@ if test -z "$LTLD"; then
   if test "$XEGCC" = yes; then
     # Check if gcc -print-prog-name=ld gives a path.
     echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:15083: checking for ld used by GCC" >&5
+echo "configure:15337: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -15105,7 +15359,7 @@ echo "configure:15083: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:15109: checking for GNU ld" >&5
+echo "configure:15363: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -15143,7 +15397,7 @@ ld_dynamic_link_flags=
 
 # Check to see if it really is or isn't GNU ld.
 echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6
-echo "configure:15147: checking if the linker is GNU ld" >&5
+echo "configure:15401: checking if the linker is GNU ld" >&5
 # I'd rather use --version here, but apparently some GNU ld's only accept -v.
 if $LTLD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
   xe_gnu_ld=yes
@@ -15171,7 +15425,7 @@ else
   # OK - only NOW do we futz about with ld.
   # See if the linker supports building shared libraries.
   echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6
-echo "configure:15175: checking whether the linker supports shared libraries" >&5
+echo "configure:15429: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -15382,10 +15636,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15386: checking for $ac_func" >&5
+echo "configure:15640: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<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.  */
@@ -15408,7 +15662,7 @@ $ac_func();
 
 ; 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
@@ -15447,11 +15701,11 @@ done
 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
@@ -16092,8 +16346,8 @@ fi
 
 echo "  Compiler:                          $CC $CFLAGS"
 case "$CC" in
-  gcc*)        echo "  Compiler version:                  `$CC --version | head -1`"
-        echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | head -1`"
+  gcc*)        echo "  Compiler version:                  `$CC --version | sed 1q`"
+        echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | sed 1q`"
        ;;
   *) case "$canonical" in
        *-*-aix*   ) 
@@ -16120,7 +16374,7 @@ case "$CC" in
        ;;
        
        *-*-solaris*)
-         ccvers=`$CC -V 2>&1 | head -1`
+         ccvers=`$CC -V 2>&1 | sed 1q`
          if test ! -z "$ccvers" ; then
            echo "  Compiler version:                  $ccvers"
          fi
index 449f47c..0e645ae 100644 (file)
@@ -2090,8 +2090,6 @@ else
     *86*    ) dynodump_arch=i386  ;;
     powerpc ) dynodump_arch=ppc   ;;
   esac
-  dnl Dynodump requires the system linker
-  test "$GCC" = "yes" && XE_APPEND(-fno-gnu-linker, ld_switch_site)
 fi
 
 dnl Feed s&m crud to src/Makefile
@@ -2913,7 +2911,7 @@ dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
     esac
   fi
 
-  AC_CHECK_FUNCS(XConvertCase)
+  AC_CHECK_FUNCS(XConvertCase XtRegisterDrawable)
 
   AC_CHECK_HEADERS(X11/Xlocale.h)
 
@@ -3208,33 +3206,63 @@ dnl Autodetect LDAP
 AC_CHECKING(for LDAP)
 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
-if test "$with_ldap" != "no"; then
-  AC_CHECK_LIB(ldap, ldap_search, with_ldap=yes)
-  dnl Check for other libraries we need to link with to get the main routines.
-  test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes], , -llber) }
-  test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes], , -llber -lkrb) }
-  test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes with_ldap_des=yes], , -llber -lkrb -ldes) }
-  dnl Recently, we need -lber even though the main routines are elsewhere,
-  dnl because otherwise be get link errors w.r.t. ber_pvt_opt_on.  So just
-  dnl check for that (it's a variable not a fun but that doesn't seem to
-  dnl matter in these checks)  and stick in -lber if so.  Can't hurt (even to
-  dnl stick it in always shouldn't hurt, I don't think) ... #### Someone who
-  dnl #### understands LDAP needs to fix this properly.
-  test "$with_ldap_lber" != "yes" && { AC_CHECK_LIB(lber, ber_pvt_opt_on, with_ldap_lber=yes) }
+if test no != "$with_ldap";then
+  if test . != "${ldap_libs+.}";then
+    ldap_libs=
+    AC_CHECK_FUNC(ldap_open,dnl Allow it to be in generic "$LIBS"
+      [with_ldap=yes
+      test yes = "$extra_verbose" &&
+       echo "Setting ldap_libs to $ldap_libs"],dnl
+      [AC_CHECK_LIB(ldap, ldap_open,dnl
+       [with_ldap=yes],dnl
+       [ldap_needs_lber=yes ldap_other_libs=-llber
+dnl This requires `AC_CACHE_VAL' (which is called by `AC_CHECK_LIB')
+dnl to be redefined to ignore cached (shell variable) value, as it is
+dnl done above, because the same variable is used in all
+dnl `AC_CHECK_LIB' expansions in macro invocation below.  Worse, if it
+dnl is not done, there is no portable way to compensate for this
+dnl locally since `unset' command is not supported by all shells.  The
+dnl other solution would be changing `AC_CHECK_LIB' so that cache
+dnl variable name depends on the macro OTHER-LIBRARIES argument.
+       AC_CHECK_LIB(ldap, ldap_open,dnl
+         [with_ldap=yes],dnl
+         [ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb"
+         AC_CHECK_LIB(ldap, ldap_open,dnl
+           [with_ldap=yes],dnl
+           [ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes"
+           AC_CHECK_LIB(ldap, ldap_open,dnl
+             [with_ldap=yes],dnl
+             [with_ldap=no],dnl
+             $ldap_other_libs)],dnl
+           $ldap_other_libs)],dnl
+         $ldap_other_libs)])
+      if test yes = "$with_ldap";then
+       if test yes = "$ldap_needs_des";then
+         XE_PREPEND(-ldes, ldap_libs)
+       fi
+       if test yes = "$ldap_needs_krb";then
+         XE_PREPEND(-lkrb, ldap_libs)
+       fi
+       if test yes = "$ldap_needs_lber";then
+         XE_PREPEND(-llber, ldap_libs)
+       fi
+       XE_PREPEND(-lldap, ldap_libs)
+      fi])
+  else
+dnl Allow builder to override "$ldap_libs".
+    save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS"
+    AC_CHECK_FUNC(ldap_open,dnl
+      [with_ldap=yes
+      test yes = "$extra_verbose" &&
+       echo "Setting ldap_libs to $ldap_libs"],dnl
+      [with_ldap=no])
+    LIBS="$save_LIBS"
+  fi
 fi
 if test "$with_ldap" = "yes"; then
   AC_DEFINE(HAVE_LDAP)
   XE_ADD_OBJS(eldap.o)
-  if test "$with_ldap_des" = "yes" ; then
-    XE_PREPEND(-ldes, LIBS)
-  fi
-  if test "$with_ldap_krb" = "yes" ; then
-    XE_PREPEND(-lkrb, LIBS)
-  fi
-  if test "$with_ldap_lber" = "yes" ; then
-    XE_PREPEND(-llber, LIBS)
-  fi
-  XE_PREPEND(-lldap, LIBS)
+  LIBS="$ldap_libs $LIBS"
   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
 fi
 
@@ -3594,7 +3622,7 @@ dnl Not all toolkits support all widgets
 
 dnl Avoid using Motif :-(
 case "$opsys" in
-  *linux* )  lucid_prefers_motif="no"  ;;
+  *linux* | cygwin* )  lucid_prefers_motif="no"  ;;
   * )        lucid_prefers_motif="yes" ;;
 esac
 
@@ -4456,6 +4484,24 @@ test "$with_database_gdbm" = "yes" -o \
      "$with_database_dbm"  = "yes" && \
   AC_DEFINE(HAVE_DBM)
 
+dnl Check for u_int*_t typedefs.
+AC_CHECK_TYPE(u_int8_t, uint8_t)
+if test $ac_cv_type_u_int8_t = yes; then
+AC_DEFINE(HAVE_U_INT8_T,1)
+fi
+AC_CHECK_TYPE(u_int16_t, uint16_t)
+if test $ac_cv_type_u_int16_t = yes; then
+AC_DEFINE(HAVE_U_INT16_T,1)
+fi
+AC_CHECK_TYPE(u_int32_t, uint32_t)
+if test $ac_cv_type_u_int32_t = yes; then
+AC_DEFINE(HAVE_U_INT32_T,1)
+fi
+AC_CHECK_TYPE(u_int64_t, uint64_t)
+if test $ac_cv_type_u_int64_t = yes; then
+AC_DEFINE(HAVE_U_INT64_T,1)
+fi
+
 dnl Check for Berkeley DB.
 if test "$with_database_berkdb" != "no"; then
   AC_MSG_CHECKING(for Berkeley db.h)
@@ -4480,14 +4526,22 @@ if test "$with_database_berkdb" != "no"; then
 #ifdef HAVE_INTTYPES_H
 #define __BIT_TYPES_DEFINED__
 #include <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)
         ;;
@@ -5031,8 +5085,8 @@ echo "  Compiler:                          $CC $CFLAGS"
 dnl Let's save some helpful-for-debugging info like compiler and libc versions..
 dnl First, see if it's gcc - the same check works everyplace...
 case "$CC" in
-  gcc*)        echo "  Compiler version:                  `$CC --version | head -1`"
-        echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | head -1`"
+  gcc*)        echo "  Compiler version:                  `$CC --version | sed 1q`"
+        echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | sed 1q`"
        ;;
 dnl non-gcc machine-specific magic - contributions welcome
   *) case "$canonical" in
@@ -5063,7 +5117,7 @@ dnl non-gcc machine-specific magic - contributions welcome
        ;;
        
        *-*-solaris*)
-         ccvers=`$CC -V 2>&1 | head -1`
+         ccvers=`$CC -V 2>&1 | sed 1q`
          if test ! -z "$ccvers" ; then
            echo "  Compiler version:                  $ccvers"
          fi
index 99800a4..87866eb 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -117,6 +117,7 @@ consulted for a more detailed list of changes.
     - In Perl, the --globals option tags global variables.
     - Python now supported.
     - New file extensions recognized: .ss, .pdb, .psw.
+  -- Fixed ldap libraries configuration.
 
 ** The delete key now deletes forward by default.
 
@@ -599,6 +600,11 @@ def and class at the beginning of a line are tags.
 .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is
 for PSWrap.
 
+** Fixed ldap libraries configuration.
+
+It used to fail when `-lldap' requires `-llber'.  Introduced in
+upstream `configure.in' revision 1.151.2.31 (2005/01/31 02:54:47 +0).
+
 \f
 * Lisp and internal changes in XEmacs 21.4
 ==========================================
index 6005b5c..1e92bb5 100644 (file)
@@ -14,11 +14,6 @@ two months, and for the success of the GTK merge.  Without the
 prospect of such a big win, I could not have justified trying to
 coordinate a release myself.
 
-The rest of the codenames are in alphabetical order.
-
-N.B. I expect that the Stable Release Maintainer will choose a new
-theme for the releases following the promotion of 21.4 from "gamma" to
-"stable".  So 15 or so should be enough....
 
 21.4.0: Solid Vapor
 21.4.1: Copyleft
@@ -38,14 +33,14 @@ theme for the releases following the promotion of 21.4 from "gamma" to
 21.4.15: Security Through Obscurity
 21.4.16: Corporate Culture
 21.4.17: Jumbo Shrimp
-21.4.18: Social Property
-21.4.19: Stable Release Maintainer
-21.4.20: Standard C
-21.4.21: Successful IPO
-21.4.22: Sufficiently Smart Compiler
-21.4.23: The Gift Economy
+21.4.18: Constant Variable
+21.4.19: Double Solitaire
+21.4.20: Educational Television
+21.4.21: Instant Classic
+21.4.22: Moral Majority
+21.4.23: Standard C
 21.4.24: Too Much Mozart
-21.4.25: UTF-8 BOM
+21.4.25: Working Vacation
+
 
-N.B.  Only incredibly redeeming suggestions can be accepted now.
 
index e1720e1..f6b687d 100644 (file)
@@ -234,6 +234,9 @@ Deprecated collection of DTDs for psgml.
 *** python-modes
 Python support.
 
+*** re-builder
+Interactive development tool for regular expressions.
+
 *** reftex
 Emacs support for LaTeX cross-references, citations.
 
@@ -341,6 +344,9 @@ XEmacs Lisp developer support.  This package contains utilities for
 supporting Lisp development.  It is a single-file package so it may be 
 tailored.
 
+*** xetla
+(setq mm-coding-system-priorities '(iso-8859-1 iso-8859-15 utf-8))
+
 *** xlib
 Emacs interface to X server.
 
@@ -370,6 +376,9 @@ MULE: Lisp Interface to EDICT, Kanji Dictionary.
 *** egg-its
 MULE: Wnn (4.2 and 6) support.  SJ3 support.
 
+*** latin-euro-standards
+MULE: Support for the Latin{7,8,9,10} character sets & coding systems.
+
 *** latin-unity
 MULE: find single ISO 8859 character set to encode a buffer.
 
@@ -383,7 +392,7 @@ MULE: Localized menubars and localized splash screens.
 MULE: Dictionary support.
 
 *** mule-base
-MULE: Basic Mule support, required for building with Mule.
+MULE: Basic Mule support.
 
 *** mule-ucs
 MULE: Extended coding systems (including Unicode) for XEmacs.
diff --git a/etc/TUTORIAL.cs b/etc/TUTORIAL.cs
new file mode 100644 (file)
index 0000000..163c3e5
--- /dev/null
@@ -0,0 +1,1043 @@
+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:
diff --git a/etc/TUTORIAL.sl b/etc/TUTORIAL.sl
new file mode 100644 (file)
index 0000000..8d41225
--- /dev/null
@@ -0,0 +1,1031 @@
+Copyright (c) 1985,96,97 Free Software Foundation, Inc;  See end for conditions.
+Emacs. Prvo berilo.
+
+Ukazi v Emacsu v splo¹nem vkljuèujejo tipki CONTROL (vèasih oznaèeni
+CTRL ali CTL) in META (vèasih oznaèena EDIT ali ALT). Namesto, da bi ju
+vedno izpisali s celim imenom, bomo uporabili naslednji okraj¹avi:
+
+ C-<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:
index bd5d443..cf05781 100644 (file)
@@ -1,3 +1,12 @@
+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
index d971b09..1698125 100644 (file)
@@ -5,11 +5,16 @@ shift
 
 tstr=""
 
-while [ $# -gt 0 ]
+while [[ $# -gt 0 ]]
 do
-  if [ -f $1.exe ]
+  if [[ -f $1.exe ]]
   then
-    tstr="$tstr$1.exe $2.exe"
+    if [[ "$2" == *.exe ]]
+    then
+      tstr="$tstr$1 $2"
+    else
+      tstr="$tstr$1.exe $2.exe"
+    fi
     shift 2
   else
     tstr="$tstr$1 "
index 170a5d5..f913b9e 100644 (file)
@@ -1,3 +1,91 @@
+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
index 3d1d5af..e6e7d58 100644 (file)
@@ -1,6 +1,6 @@
 ;;; about.el --- the About The Authors page (shameless self promotion).
 
-;; Copyright (c) 1997 Free Software Foundation, Inc.
+;; Copyright (c) 1997, 2005 Free Software Foundation, Inc.
 ;; Copyright (C) 2001 Ben Wing.
 
 ;; Keywords: extensions
     (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/")
@@ -1059,6 +1061,25 @@ portable, implements a language, includes a non-trivial bit of
 graphics and a garbage collector, but is multithreaded to boot!
 Unfortunately his XEmacs time is directly limited by the amount of
 traffic on the M40.\n"))
+    (jas
+     (widget-insert "\
+
+Simon lives in Stockholm where he has discovered that computers
+can be a powerful procrastinating tool.  Combined with a
+frustrating desire to see computers simply work, he spends most
+of his time complaining.  Occasionally he rises up to the task
+and produces something that others may complain about, which
+brings him increased satisfaction with every bug report.  Today
+he is pretending to be a network security guy, with a preference
+for standardization issues, while secretly longing to start a
+cafe or becoming a theoretical computer scientist.  His personal
+interest is literature, and to some extent traveling, but will
+try anything for fun, such as juggling, skiing, wine, and
+long-distance biking.
+
+See: ")
+     (about-url-link 'jas nil "Visit Simon's homepage")
+     (widget-insert ".\n"))
     (jareth
      (widget-insert "\
 Jareth Hein is a mountain boy who abandoned his home state of Colorado
@@ -1609,6 +1630,14 @@ of the XEmacs custom subsystem and gnuserv.\n"))
      (widget-insert "\
 Owner of cvs.xemacs.org, the machine that holds the XEmacs CVS
 repository, and author of some of the graphics code in XEmacs.\n"))
+    (jas
+     (widget-insert "\
+Wrote and/or integrated several packages for Gnus, such as
+support for IMAP, Sieve, format=flowed, GnuTLS, S/MIME, and PGP.
+Irregularly synchronizes lisp code between Emacs and XEmacs.  He
+maintains the mail-lib, sieve, sasl, pgg and ecrypto XEmacs
+packages.  Operates the secondary DNS and mail server for
+xemacs.org.\n"))
     (jason
      (widget-insert "\
 Beta tester, manager of the various XEmacs mailing lists and binary
index 670a8c8..88caef1 100644 (file)
@@ -1506,9 +1506,9 @@ one version of a package available.")
 
 (defcustom package-get-install-to-user-init-directory nil "*If non-nil install packages under `user-init-directory'." :type 'boolean :group 'package-get)
 
-(defcustom package-get-download-sites '(("US (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/packages") ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/packages") ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/packages") ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/packages") ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/packages") ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages") ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages") ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") ("Canada (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/packages") ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages") ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages") ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("France (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/packages") ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages") ("Germany (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages") ("Slovakia (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages") ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ("US (ibiblio.org)" "ibiblio.org" "pub/packages/editors/xemacs/packages") ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages") ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages") ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
+(defcustom package-get-download-sites '(("US (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/packages") ("Argentina (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/packages") ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/packages") ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/packages") ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/packages") ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/packages") ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages") ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages") ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") ("Canada (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/packages") ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages") ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages") ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("France (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/packages") ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages") ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/packages") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") ("Taiwan (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/packages") ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ("US (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/packages") ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages") ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
 
-(defcustom package-get-pre-release-download-sites '(("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Austria Pre-Releases (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/beta/experimentsl/packages") ("Brazil Pre-Releases (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/xemacs-21.5/experimental/packages") ("Canada Pre-Releases (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/beta/experimental/packages") ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") ("Canada Pre-Releases (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/beta/experimental/packages") ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages") ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Finland Pre-Releases (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/beta/experimental/packages") ("France Pre-Releases (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/beta/experimental/packages") ("France Pre-Releases (mirror.cict.fr)" "mirror.cict.fr" "xemacs/beta/experimental/packages") ("France Pre-Releases (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/beta/experimental/packages") ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages") ("Germany Pre-Releases (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/beta/experimental/packages") ("Japan Pre-Releases (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Saudi Arabia Pre-Releases (sa.xemacs.org)" "ftp.sa.xemacs.org" "pub/mirrors/ftp.xemacs.org/xemacs/xemacs-21.5/experimental/packages") ("Slovakia Pre-Releases (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/beta/experimental/packages") ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/beta/experimental/packages") ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/beta/experimental/packages") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (ibiblio.org)" "ibiblio.org" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/beta/experimental/packages") ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/beta/experimental/packages")) "*List of remote sites available for downloading \"Pre-Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Pre-Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
+(defcustom package-get-pre-release-download-sites '(("US Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Argentina Pre-Releases (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/beta/experimental/packages") ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Austria Pre-Releases (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/beta/experimental/packages") ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/beta/experimental/packages") ("Brazil Pre-Releases (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/xemacs-21.5/experimental/packages") ("Canada Pre-Releases (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/beta/experimental/packages") ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") ("Canada Pre-Releases (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages") ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Finland Pre-Releases (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/beta/experimental/packages") ("France Pre-Releases (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/beta/experimental/packages") ("France Pre-Releases (mirror.cict.fr)" "mirror.cict.fr" "xemacs/beta/experimental/packages") ("France Pre-Releases (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/beta/experimental/packages") ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages") ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/beta/experimental/packages") ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/beta/experimental/packages") ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/beta/experimental/packages") ("Taiwan Pre-Releases (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/beta/experimental/packages") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/beta/experimental/packages") ("US Pre-Releases (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/beta/experimental/packages")) "*List of remote sites available for downloading \"Pre-Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Pre-Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
 
 (defcustom package-get-site-release-download-sites nil "*List of remote sites available for downloading \"Site Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Site Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
 
index 983a55e..057583b 100644 (file)
@@ -71,7 +71,12 @@ If optional second arg NOT-THIS-WINDOW-P is non-nil, insist on finding
 another window even if BUFNAME is already visible in the selected window.
 If optional third arg is non-nil, it is the frame to pop to this
 buffer on.
-If `focus-follows-mouse' is non-nil, keyboard focus is left unchanged."
+If `focus-follows-mouse' is non-nil, keyboard focus is left unchanged.
+
+Buffers with names that are members of the `same-window-buffer-names'
+list, or that match an element of the `same-window-regexps' list are
+treated specially by this function--they are always selected in the
+same window rather than in a different one."
   ;; #ifdef I18N3
   ;; #### Doc string should indicate that the buffer name will get
   ;; translated.
index 9e9a56a..6d972de 100644 (file)
@@ -70,8 +70,7 @@ If this character is typed at top-level, this simply beeps.
 If `zmacs-regions' is true, and the zmacs region is active in this buffer,
 then this key deactivates the region without beeping or signalling."
   (interactive)
-  (if (and (region-active-p)
-          (eq (current-buffer) (zmacs-region-buffer)))
+  (if (region-active-p)
       ;; pseudo-zmacs compatibility: don't beep if this ^G is simply
       ;; deactivating the region.  If it is inactive, beep.
       nil
index 1b493d5..1d9208a 100644 (file)
@@ -50,6 +50,8 @@ or a cons of coding systems which are used as above.")
 The program's input comes from file INFILE (nil means `/dev/null').
 Insert output in BUFFER before point; t means current buffer;
  nil for BUFFER means discard it; 0 means discard and don't wait.
+If BUFFER is a string, then find or create a buffer with that name,
+then insert the output in that buffer, before point.
 BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
 REAL-BUFFER says what to do with standard output, as above,
 while STDERR-FILE says what to do with standard error in the child.
@@ -100,6 +102,8 @@ Delete the text if fourth arg DELETEP is non-nil.
 
 Insert output in BUFFER before point; t means current buffer;
  nil for BUFFER means discard it; 0 means discard and don't wait.
+If BUFFER is a string, then find or create a buffer with that name,
+then insert the output in that buffer, before point.
 BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
 REAL-BUFFER says what to do with standard output, as above,
 while STDERR-FILE says what to do with standard error in the child.
@@ -158,10 +162,10 @@ found, they default to `nil' for both input and output."
 Args are NAME BUFFER PROGRAM &rest PROGRAM-ARGS
 NAME is name for process.  It is modified if necessary to make it unique.
 BUFFER is the buffer or (buffer-name) to associate with the process.
- Process output goes at end of that buffer, unless you specify
- an output stream or filter function to handle the output.
- BUFFER may be also nil, meaning that this process is not associated
- with any buffer
+Process output goes at end of that buffer, unless you specify
+an output stream or filter function to handle the output.
+BUFFER may also be nil, meaning that this process is not associated
+with any buffer.
 Third arg is program file name.  It is searched for as in the shell.
 Remaining arguments are strings to give program as arguments.
 
index 9f3dfc7..3ca8e03 100644 (file)
@@ -421,20 +421,12 @@ Where the new table already has an entry, nothing is copied from the old one."
   ;; check for inheritance.
   (map-char-table
    #'(lambda (key value)
-       (let ((newval (get-range-char-table key new 'multi)))
-        (cond ((eq newval 'multi)      ; OK, dive into the class hierarchy
-               (map-char-table
-                #'(lambda (key1 value1)
-                    (when (eq ?@ (char-syntax-from-code
-                                  (get-range-char-table key new ?@)))
-                      (put-char-table key1 value new))
-                    nil)
-                new
-                key))
-              ((eq ?@ (char-syntax-from-code newval)) ;; class at once
-               (put-char-table key value new))))
-       nil)
-   old))
+       (if (eq ?@ (char-syntax-from-code value))
+          (map-char-table #'(lambda (key1 value1)
+                              (put-char-table key1 value1 new))
+                          old
+                          key)))
+   new))
 
 ;; Merge an old abbrev table into a new one.
 ;; This function requires internal knowledge of how abbrev tables work,
index 6673789..93c9d58 100644 (file)
@@ -203,7 +203,7 @@ is a list of menu items, as above."
   "Remove MENU from the current menu bar."
   (when (featurep 'menubar)
     (setq easy-menu-all-popups (delq menu easy-menu-all-popups)
-         mode-popup-menu (if (< (length easy-menu-all-popups) 1)
+         mode-popup-menu (if (> (length easy-menu-all-popups) 1)
                              (cons (easy-menu-title)
                                    (reverse easy-menu-all-popups))
                            (let ((same-as-menu
index cbed603..6124ce8 100644 (file)
@@ -287,7 +287,7 @@ arguments compiles from `load-path'."
          found)
       (while (and dirs (not found))
        (if (file-exists-p (expand-file-name (concat file ".el") (car dirs)))
-           (setq found (expand-file-name file (car dirs)))
+           (setq found (expand-file-name (concat file ".el") (car dirs)))
          (if (file-exists-p (expand-file-name file (car dirs)))
              (setq found (expand-file-name file (car dirs)))))
        (setq dirs (cdr dirs)))
index 6b27b64..02bfd9c 100644 (file)
@@ -310,8 +310,8 @@ Canonical sizes are in points.  If SPEC is null, nil is returned.  If SPEC is
 a number, it is interpreted as the desired point size and returned unchanged.
 Otherwise SPEC must be a string consisting of a number and an optional type.
 The type may be the strings \"px\", \"pix\", or \"pixel\" (pixels), \"pt\" or
-\"point\" (points), \"pa\" or \"pica\" (picas), \"in\" or \"inch\" (inches), \"cm\"
-(centimeters), or \"mm\" (millimeters).
+\"point\" (points), \"pa\" or \"pica\" (picas), \"in\" or \"inch\" (inches),
+\"cm\" (centimeters), or \"mm\" (millimeters).
 
 1 in = 2.54 cm = 6 pa = 25.4 mm = 72 pt.  Pixel size is device-dependent."
   (cond
@@ -350,7 +350,7 @@ The type may be the strings \"px\", \"pix\", or \"pixel\" (pixels), \"pt\" or
       (setq num (string-to-number spec))
       (cond
        ((member type '("pixel" "px" "pix"))
-       (setq retval (* num (/ pix-width mm-width) (/ 25.4 72.0))))
+       (setq retval (* num (/ mm-width pix-width) (/ 72.0 25.4))))
        ((member type '("point" "pt"))
        (setq retval num))
        ((member type '("pica" "pa"))
index 2ef37f9..1ac1780 100644 (file)
@@ -736,7 +736,7 @@ of the key sequence that ran this command."
 (defun view-emacs-news ()
   "Display info on recent changes to XEmacs."
   (interactive)
-  (Help-find-file (locate-data-file "NEWS")))
+  (Help-find-file (expand-file-name "NEWS" data-directory)))
 
 (defun xemacs-www-page ()
   "Go to the XEmacs World Wide Web page."
index d6dc4c4..7e4c7c9 100644 (file)
@@ -271,8 +271,7 @@ in `substitute-in-file-name'."
 If `zmacs-regions' is true, and the zmacs region is active in this buffer,
 then this key deactivates the region without beeping."
   (interactive)
-  (if (and (region-active-p)
-          (eq (current-buffer) (zmacs-region-buffer)))
+  (if (region-active-p)
       ;; pseudo-zmacs compatibility: don't beep if this ^G is simply
       ;; deactivating the region.  If it is inactive, beep.
       nil
index c0d29a4..4580677 100644 (file)
@@ -204,6 +204,7 @@ directory."
     ("US (Main XEmacs Site)"
      "ftp.xemacs.org" "pub/xemacs/packages")
     ;; In alphabetical order of Country, our mirrors...
+    ("Argentina (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/packages")
     ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/packages")
     ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/packages")
     ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/packages")
@@ -211,7 +212,7 @@ directory."
     ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages")
     ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages")
     ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages")
-    ("Canada (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/packages")
+    ("Canada (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/packages")
     ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages")
     ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages")
     ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages")
@@ -219,31 +220,32 @@ directory."
     ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages")
     ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages")
     ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages")
-    ("Germany (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages")
+    ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages")
     ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages")
+    ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/packages")
     ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages")
     ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages")
     ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages")
     ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages")
-    ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages")
-    ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages")
-    ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages")
+;   ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages")
+;   ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages")
+;   ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages")
     ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages")
     ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages")
     ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages")
     ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages")
     ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages")
-    ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages")
-    ("Slovakia (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages")
-    ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages")
+    ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/packages")
+;   ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages")
     ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages")
     ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages")
+    ("Taiwan (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEmacs/packages")
     ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages")
-    ("US (ibiblio.org)" "ibiblio.org" "pub/packages/editors/xemacs/packages")
+    ("US (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/packages")
     ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages")
     ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages")
     ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages")
-    ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages")
+;   ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages")
     )
   "*List of remote sites available for downloading packages.
 List format is '(site-description site-name directory-on-site).
@@ -260,23 +262,27 @@ variable actually used to specify package download sites."
 (defcustom package-get-pre-release-download-sites
   '(
     ;; Main XEmacs Site (ftp.xemacs.org)
-    ("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org"
+    ("US Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org"
      "pub/xemacs/beta/experimental/packages")
     ;; In alphabetical order of Country, our mirrors...
+    ("Argentina Pre-Releases (xmundo.net)" "xemacs.xmundo.net"
+     "pub/mirrors/xemacs/beta/experimental/packages")
     ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au"
      "pub/xemacs/beta/experimental/packages")
     ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org"
      "pub/xemacs/beta/experimental/packages")
     ("Austria Pre-Releases (at.xemacs.org)" "ftp.at.xemacs.org"
-     "editors/xemacs/beta/experimentsl/packages")
+     "editors/xemacs/beta/experimental/packages")
+    ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org"
+     "xemacs/beta/experimental/packages")
     ("Brazil Pre-Releases (br.xemacs.org)" "ftp.br.xemacs.org"
      "pub/xemacs/xemacs-21.5/experimental/packages")
     ("Canada Pre-Releases (ca.xemacs.org)" "ftp.ca.xemacs.org"
      "pub/Mirror/xemacs/beta/experimental/packages")
     ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca"
      "pub/packages/editors/xemacs/beta/experimental/packages")
-    ("Canada Pre-Releases (ualberta.ca)" "sunsite.ualberta.ca"
-     "pub/Mirror/xemacs/beta/experimental/packages")
+    ("Canada Pre-Releases (nrc.ca)" "ftp.nrc.ca"
+     "pub/packages/editors/xemacs/beta/experimental/packages")
     ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org"
      "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages")
     ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org"
@@ -291,10 +297,12 @@ variable actually used to specify package download sites."
      "pub/computing/xemacs/beta/experimental/packages")
     ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org"
      "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages")
-    ("Germany Pre-Releases (tu-darmstadt.de)" "ftp.tu-darmstadt.de"
-     "pub/editors/xemacs/beta/experimental/packages")
+    ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org"
+     "pub/xemacs/beta/experimental/packages")
     ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org"
      "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages")
+    ("Ireland Pre-Releases (heanet.ie)" "ftp.heanet.ie"
+     "mirrors/ftp.xemacs.org/beta/experimental/packages")
     ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org"
      "unix/packages/XEMACS/beta/experimental/packages")
     ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp"
@@ -303,41 +311,43 @@ variable actually used to specify package download sites."
      "pub/text/xemacs/beta/experimental/packages")
     ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp"
      "pub/unix/editor/xemacs/beta/experimental/packages")
-    ("Japan Pre-Releases (jaist.ac.jp)" "ftp.jaist.ac.jp"
-     "pub/GNU/xemacs/beta/experimental/packages")
-    ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org"
-     "pub/GNU/xemacs/beta/experimental/packages")
+;   ("Japan Pre-Releases (jaist.ac.jp)" "ftp.jaist.ac.jp"
+;    "pub/GNU/xemacs/beta/experimental/packages")
+;   ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org"
+;    "pub/GNU/xemacs/beta/experimental/packages")
     ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp"
      "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages")
-    ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages")
+    ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org"
+     "pub/tools/emacs/xemacs/beta/experimental/packages")
+    ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org"
+     "mirror/ftp.xemacs.org/packages")
     ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org"
      "pub/xemacs/beta/experimental/packages")
     ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org"
      "pub/unix/editors/xemacs/beta/experimental/packages")
     ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org"
-     "pub/xemacs/beta/experimental/packages")
-    ("Saudi Arabia Pre-Releases (sa.xemacs.org)" "ftp.sa.xemacs.org"
-     "pub/mirrors/ftp.xemacs.org/xemacs/xemacs-21.5/experimental/packages")
-    ("Slovakia Pre-Releases (sk.xemacs.org)" "ftp.sk.xemacs.org"
-     "pub/mirrors/xemacs/beta/experimental/packages")
-    ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org"
-     "mirrorsites/ftp.xemacs.org/beta/experimental/packages")
+     "pub/emacs/xemacs/beta/experimental/packages")
+;   ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org"
+;    "mirrorsites/ftp.xemacs.org/beta/experimental/packages")
     ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org"
      "pub/gnu/xemacs/beta/experimental/packages")
     ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org"
      "mirror/xemacs/beta/experimental/packages")
+    ("Taiwan Pre-Releases (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org"
+     "Unix/Editors/XEmacs/beta/experimental/packages")
     ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org"
      "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages")
-    ("US Pre-Releases (ibiblio.org)" "ibiblio.org"
-     "pub/packages/editors/xemacs/beta/experimental/packages")
+    ("US Pre-Releases (ibiblio.org)" "mirrors.ibiblio.org"
+     "pub/mirrors/xemacs/beta/experimental/packages")
     ("US Pre-Releases (stealth.net)" "ftp.stealth.net"
      "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages")
     ("US Pre-Releases (unc.edu)" "metalab.unc.edu"
      "pub/packages/editors/xemacs/beta/experimental/packages")
     ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org"
      "pub/xemacs/beta/experimental/packages")
-    ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu"
-     "pub/xemacs/beta/experimental/packages"))
+;   ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu"
+;    "pub/xemacs/beta/experimental/packages")
+)
   "*List of remote sites available for downloading \"Pre-Release\" packages.
 List format is '(site-description site-name directory-on-site).
 SITE-DESCRIPTION is a textual description of the site.  SITE-NAME
@@ -844,14 +854,7 @@ Return `t' upon complete success, `nil' if any errors occurred."
        (progn
          ;; Add lispdir to load-path if it doesn't already exist.
          ;; NOTE: this does not take symlinks, etc., into account.
-         (if (let ((dirs load-path))
-               (catch 'done
-                 (while dirs
-                   (if (string-equal (car dirs) lispdir)
-                       (throw 'done nil))
-                   (setq dirs (cdr dirs)))
-                 t))
-             (setq load-path (cons lispdir load-path)))
+          (add-to-list 'load-path (file-name-as-directory lispdir))
          (if (not (package-get-load-package-file lispdir "auto-autoloads"))
              (package-get-load-package-file lispdir "_pkg"))
          t)
index 9e4eee4..f8ed19a 100644 (file)
@@ -509,14 +509,15 @@ Designed to be called interactively (from a keypress)."
 (defun pui-display-maintainer (&optional no-error event)
   "Display a package's maintainer in the minibuffer."
   (interactive)
-  (let (extent pkg-sym info maintainer)
+  (let (extent ;pkg-sym
+       info maintainer)
     (save-excursion
       (beginning-of-line)
       (if (setq extent         (extent-at (point) (current-buffer) 'pui))
          (progn
-           (setq pkg-sym (extent-property extent 'pui-package)
-                 info (extent-property extent 'pui-info)
-                 maintainer (package-get-info-prop info 'maintainer))
+           (setq ;pkg-sym (extent-property extent 'pui-package)
+            info (extent-property extent 'pui-info)
+            maintainer (package-get-info-prop info 'maintainer))
            (message (format "Maintainer: %s" maintainer)))
        (if no-error
            (clear-message nil)
@@ -564,7 +565,7 @@ Useful keys:
   `\\[pui-toggle-package-delete-key]' to select/unselect the current package for removal.
   `\\[pui-add-required-packages]' to add any packages required by those selected.
   `\\[pui-install-selected-packages]' to install/delete selected packages.
-  `\\[pui-display-info]' to display additional information about the package in the modeline.
+  `\\[pui-display-info]' to display additional information about the package in the minibuffer.
   `\\[pui-display-maintainer]' to display the package's maintainer in the minibuffer
   `\\[pui-list-packages]' to refresh the package list.
   `\\[pui-toggle-verbosity-redisplay]' to toggle between a verbose and non-verbose display.
@@ -606,11 +607,11 @@ Warning: No download sites specified.  Package index may be out of date.
 "))
     
     (if pui-list-verbose
-       (insert "                 Latest Installed
-  Package name   Vers.  Vers.   Description
+       (insert "                       Latest Installed
+  Package name         Vers.  Vers.   Description
 ")
-      (insert "                 Latest
-  Package name   Vers.  Description
+      (insert "                       Latest
+  Package name         Vers.  Description
 "))
     (insert sep-string)
     (setq start (point))
@@ -639,13 +640,13 @@ Warning: No download sites specified.  Package index may be out of date.
                  ((numberp current-vers)
                   (setq current-vers (format "%.2f" current-vers))))
                 (insert
-                 (format "%s %-15s %-5.2f  %-5s  %s\n"
+                 (format "%s %-20s %-5.2f  %-5s  %s\n"
                          (car disp) pkg-sym 
                          (if (stringp version)
                              (string-to-number version)
                            version)
                          current-vers desc)))
-            (insert (format "%s %-15s %-5s %s\n"
+            (insert (format "%s %-20s %-5s %s\n"
                             (car disp)
                             pkg-sym version desc)))
           (save-excursion
index c20c4f8..b0666a1 100644 (file)
@@ -3898,7 +3898,7 @@ This correctly caters to the user's setting of `zmacs-regions'."
 
 ;; XEmacs
 (defun region-active-p ()
-  "Return non-nil if the region is active.
+  "Return non-nil if the region is active in the current buffer.
 If `zmacs-regions' is true, this is equivalent to `region-exists-p'.
 Otherwise, this function always returns false.
 
@@ -3908,7 +3908,8 @@ want grayed out when the region is not active.  Instead, use this:
   [ ... ... :active (region-exists-p)]
 
 Which correctly caters to the user's setting of `zmacs-regions'."
-  (and zmacs-regions zmacs-region-extent))
+  (and zmacs-regions zmacs-region-extent
+       (eq (current-buffer) (zmacs-region-buffer))))
 
 (defvar zmacs-activate-region-hook nil
   "Function or functions called when the region becomes active;
index 502c6dc..4af7720 100644 (file)
@@ -376,6 +376,10 @@ OVERRIDE-FRAME was specified.
 
 If `pop-up-frames' is non-nil, make a new frame if no window shows BUFFER.
 
+If the buffer name is a member of the `same-window-buffer-names' list,
+or matches one of the `same-window-regexps' expressions, display the
+buffer in the currently selected window.
+
 Returns the window displaying BUFFER."
   (interactive "BDisplay buffer:\nP")
 
index 0e8b92c..9fa21ce 100644 (file)
@@ -1,3 +1,13 @@
+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
index 150e168..1e909b6 100644 (file)
@@ -324,13 +324,21 @@ xlw_update_scrollbar (widget_instance *instance, Widget widget,
 #ifdef LWLIB_TABS_LUCID
 /* tab control
    
-   lwlib is such an incredible hairy crock. I just cannot believe
+   [[ lwlib is such an incredible hairy crock. I just cannot believe
    it! There are random dependencies between functions, there is a
    total lack of genericity, even though it initially appears to be
    generic. It should all be junked and begun again. Building tabs are
    an example - in theory we should be able to reuse a lot of the
    general stuff because we want to put labels of whatever toolkit we
-   are using in the tab. Instead we have to hack it by hand. */
+   are using in the tab. Instead we have to hack it by hand. ]]
+   While lwlib is a hairy crock, whoever wrote that seems to misunderstand
+   Falk's tab control widget.  The tab control widget has *two* kinds of
+   children: *widgets*, which all occupy a *single* pane below the row of
+   tabs---this is where the labels created in build_tabs_in_widget go, and
+   *gadgets*, the tabs themselves, which do *not* draw themselves, but
+   rather are drawn by the control.  In fact, in XEmacs the true widget
+   children are *never* visible!  So this case is not a problem in the
+   design of lwlib, but rather of Falk's widget. -- sjt */
 static void
 xlw_tab_control_callback (Widget w, XtPointer client_data, XtPointer call_data)
 {
@@ -380,9 +388,8 @@ xlw_create_tab_control (widget_instance *instance)
   widget_value* val = instance->info->val;
 
   XtSetArg (al [ac], XtNsensitive, val->enabled);              ac++;
-  XtSetArg (al [ac], XtNmappedWhenManaged, FALSE);     ac++;
+  XtSetArg (al [ac], XtNmappedWhenManaged, False);             ac++;
   XtSetArg (al [ac], XtNorientation, XtorientHorizontal);      ac++;
-  XtSetArg (al [ac], XtNresizable, False);                     ac++;
 
   /* add any args the user supplied for creation time */
   lw_add_value_args_to_args (val, al, &ac);
@@ -401,15 +408,22 @@ static void build_tabs_in_widget (widget_instance* instance, Widget widget,
                                  widget_value* val)
 {
   widget_value* cur = val;
+  Arg al[1];
+
+  /* Children are always invisible, don't permit resizing. */
+  XtSetArg (al[0], XtNresizable, False);
+
   for (cur = val; cur; cur = cur->next)
     {
       if (cur->value)
        {
+         Widget w;
 #ifdef LWLIB_WIDGETS_MOTIF
-         xm_create_label (widget, cur);
+         w = xm_create_label (widget, cur);
 #else
-         xaw_create_label (widget, cur);
+         w = xaw_create_label (widget, cur);
 #endif
+         XtSetValues (w, al, 1);
        }
       cur->change = NO_CHANGE;
     }
index 481b609..bafcc7b 100644 (file)
@@ -1,3 +1,41 @@
+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
index a3960a8..fc3a9e4 100644 (file)
@@ -165,13 +165,13 @@ specified default value, @code{saved-value} for a value saved by the
 user, and @code{variable-documentation} for the documentation string.
 
 Use @code{custom-add-option} to specify that a specific function is
-useful as an member of a hook.
+useful as a member of a hook.
 
 @defun custom-add-option symbol option
 To the variable @var{symbol} add @var{option}.
 
 If @var{symbol} is a hook variable, @var{option} should be a hook
-member.  For other types variables, the effect is undefined."
+member.  For other types of variables, the effect is undefined."
 @end defun
 
 @node Declaring Faces, Usage for Package Authors, Declaring Variables, Top
index ac56b6a..968b835 100644 (file)
@@ -555,7 +555,7 @@ priority over faces later in the list.  @xref{Extents and Events}.
 the extent.  This takes precedence over the @code{text-pointer-glyph}
 and @code{nontext-pointer-glyph} variables.  If for any reason this
 glyph is an invalid pointer, the standard glyphs will be used as
-fallbacks.  @xref{Mouse Pointer}.
+fallbacks.  @xref{External Glyphs}.
 
 @item detachable
 (Boolean) Whether this extent becomes detached when all of the text it
index 4837ae7..f6d3faa 100644 (file)
@@ -164,7 +164,7 @@ The display table of the face.
 
 @item background-pixmap
 The pixmap displayed in the background of the face.  Only used by faces
-on X devices.
+on GUI devices, currently X11, GTK, and Microsoft Windows.
 
 @item underline
 Underline all text covered by this face.
@@ -373,6 +373,14 @@ returned by @code{make-glyph} (@pxref{Glyphs}).  The argument may also
 be a list of the form @code{(@var{width} @var{height} @var{data})} where
 @var{width} and @var{height} are the size in pixels, and @var{data} is a
 string, containing the raw bits of the bitmap.
+
+Similarly to how the glyph's image specifier works @xref{Creating
+Glyphs}, you don't create your own image specifier, but rather add
+specifications to the existing one.  Note that the image instance that is
+generated in order to actually display the background pixmap is of type
+@code{mono-pixmap}, meaning that it's a two-color image and the
+foreground and background of the image get filled in with the
+corresponding colors from the face.  (#### Is this still true?)
 @end deffn
 
 @deffn Command set-face-font face font &optional locale tag-set how-to-add
@@ -393,7 +401,7 @@ specifier of face @var{face}.
 @end defun
 
 @defun face-background-pixmap face &optional locale tag-set exact-p
-This function return the background-pixmap glyph object of face
+This function returns the background-pixmap image specifier of face
 @var{face}.
 @end defun
 
index 79575a8..b0b4855 100644 (file)
 @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
@@ -742,20 +628,25 @@ which can have the appearance of any standard dialog box or similar
 arrangement; all of this is counted as one @dfn{glyph} and could appear
 in many of the places that expect a single glyph.  Can only be instanced
 as @code{widget}.
+
 @item native-layout
-@c   #### Document me better!
 The native version of a layout widget.
 Can only be instanced as @code{widget}.
+
 @item progress-gauge
 A sliding widget, for showing progress.  Can only be instanced as
 @code{widget}.
+
 @item tab-control
 A tab widget; a series of user selectable tabs.  Can only be instanced
 as @code{widget}.
+
 @item tree-view
 A folding widget.  Can only be instanced as @code{widget}.
+
 @item scrollbar
 A scrollbar widget.  Can only be instanced as @code{widget}.
+
 @item autodetect
 XEmacs tries to guess what format the data is in.  If X support exists,
 the data string will be checked to see if it names a filename.  If so,
@@ -766,135 +657,14 @@ is one of the allowable image-instance types and the string names a
 valid cursor-font name, the image will be created as a pointer.
 Otherwise, the image will be displayed as text.  If no X support exists,
 the image will always be displayed as text.
+
 @item inherit
 Inherit from the background-pixmap property of a face.  Can only be
 instanced as @code{mono-pixmap}.
 @end table
 
-The valid keywords are:
-
-@table @code
-@item :data
-Inline data.  For most formats above, this should be a string.  For
-XBM images, this should be a list of three elements: width, height, and
-a string of bit data.  This keyword is not valid for instantiator
-format @code{nothing}.
-
-@item :file
-Data is contained in a file.  The value is the name of this file.  If
-both @code{:data} and @code{:file} are specified, the image is created
-from what is specified in @code{:data} and the string in @code{:file}
-becomes the value of the @code{image-instance-file-name} function when
-applied to the resulting image-instance.  This keyword is not valid for
-instantiator formats @code{nothing}, @code{string},
-@code{formatted-string}, @code{cursor-font}, @code{font}, and
-@code{autodetect}.
-
-@item :foreground
-@itemx :background
-For @code{xbm}, @code{xface}, @code{cursor-font}, and @code{font}.
-These keywords allow you to explicitly specify foreground and background
-colors.  The argument should be anything acceptable to
-@code{make-color-instance}.  This will cause what would be a
-@code{mono-pixmap} to instead be colorized as a two-color color-pixmap,
-and specifies the foreground and/or background colors for a pointer
-instead of black and white.
-
-@item :mask-data
-For @code{xbm} and @code{xface}.  This specifies a mask to be used with the
-bitmap.  The format is a list of width, height, and bits, like for
-@code{:data}.
-
-@item :mask-file
-For @code{xbm} and @code{xface}.  This specifies a file containing the
-mask data.  If neither a mask file nor inline mask data is given for an
-XBM image, and the XBM image comes from a file, XEmacs will look for a
-mask file with the same name as the image file but with @samp{Mask} or
-@samp{msk} appended.  For example, if you specify the XBM file
-@file{left_ptr} [usually located in @file{/usr/include/X11/bitmaps}],
-the associated mask file @file{left_ptrmsk} will automatically be picked
-up.
-
-@item :hotspot-x
-@itemx :hotspot-y
-For @code{xbm} and @code{xface}.  These keywords specify a hotspot if
-the image is instantiated as a @code{pointer}.  Note that if the XBM
-image file specifies a hotspot, it will automatically be picked up if no
-explicit hotspot is given.
-
-@item :color-symbols
-Only for @code{xpm}.  This specifies an alist that maps strings that
-specify symbolic color names to the actual color to be used for that
-symbolic color (in the form of a string or a color-specifier object).
-If this is not specified, the contents of @code{xpm-color-symbols} are
-used to generate the alist.
-@item :resource-id
-Only for @code{mswindows-resource}.  This must be either an integer
-(which directly specifies a resource number) or a string.  Valid strings
-are
-
-For bitmaps:
-
-"close", "uparrow", "dnarrow", "rgarrow", "lfarrow",
-"reduce", "zoom", "restore", "reduced", "zoomd",
-"restored", "uparrowd", "dnarrowd", "rgarrowd", "lfarrowd",
-"mnarrow", "combo", "uparrowi", "dnarrowi", "rgarrowi",
-"lfarrowi", "size", "btsize", "check", "checkboxes", and
-"btncorners".
-
-For cursors:
-
-"normal", "ibeam", "wait", "cross", "up", "sizenwse",
-"sizenesw", "sizewe", "sizens", "sizeall", and "no".
-
-For icons:
-
-"sample", "hand", "ques", "bang", "note", and "winlogo".
-@item :resource-type
-Only for @code{mswindows-resource}.  This must be a symbol, either
-@code{cursor}, @code{icon}, or @code{bitmap}, specifying the type of
-resource to be retrieved.
-@item :face
-Only for @code{inherit}.  This specifies the face to inherit from.  For
-widgets this also specifies the face to use for display. It defaults to
-gui-element-face.
-@end table
-
-Keywords accepted as menu item specs are also accepted by widgets.
-These are @code{:selected}, @code{:active}, @code{:suffix},
-@code{:keys}, @code{:style}, @code{:filter}, @code{:config},
-@code{:included}, @code{:key-sequence}, @code{:accelerator},
-@code{:label} and @code{:callback}.
-
-If instead of a vector, the instantiator is a string, it will be
-converted into a vector by looking it up according to the specs in the
-@code{console-type-image-conversion-list} for the console type of
-the domain (usually a window; sometimes a frame or device) over which
-the image is being instantiated.
-
-If the instantiator specifies data from a file, the data will be read in
-at the time that the instantiator is added to the image specifier (which
-may be well before the image is actually displayed), and the
-instantiator will be converted into one of the inline-data forms, with
-the filename retained using a @code{:file} keyword.  This implies that
-the file must exist when the instantiator is added to the image, but
-does not need to exist at any other time (e.g. it may safely be a
-temporary file).
-
-@defun valid-image-instantiator-format-p format &optional locale
-This function returns non-@code{nil} if @var{format} is a valid image
-instantiator format.
-
-If @var{locale} is non-@code{nil} then the format is checked in that locale.
-If @var{locale} is @code{nil} the current console is used.
-
-Note that the return value for many formats listed above depends on
-whether XEmacs was compiled with support for that format.
-@end defun
-
-@defun image-instantiator-format-list
-This function return a list of valid image-instantiator formats.
-@end defun
+There are two convenience variables for use with the XBM and XPM image
+formats.
 
 @defvar xpm-color-symbols
 This variable holds definitions of logical color-names used when reading
@@ -919,293 +689,1280 @@ the environment variable @samp{XBMLANGPATH} is set, it is consulted
 first).
 @end defvar
 
-@node Image Instantiator Conversion
-@subsection Image Instantiator Conversion
-@cindex image instantiator conversion
-@cindex conversion of image instantiators
 
-@defun set-console-type-image-conversion-list console-type list
-This function sets the image-conversion-list for consoles of the given
-@var{console-type}.  The image-conversion-list specifies how image
-instantiators that are strings should be interpreted.  Each element of
-the list should be a list of two elements (a regular expression string
-and a vector) or a list of three elements (the preceding two plus an
-integer index into the vector).  The string is converted to the vector
-associated with the first matching regular expression.  If a vector
-index is specified, the string itself is substituted into that position
-in the vector.
+@node Image Instances
+@subsection Image Instances
+@cindex image instances
 
-Note: The conversion above is applied when the image instantiator is
-added to an image specifier, not when the specifier is actually
-instantiated.  Therefore, changing the image-conversion-list only affects
-newly-added instantiators.  Existing instantiators in glyphs and image
-specifiers will not be affected.
+  Image-instance objects encapsulate the way a particular image (pixmap,
+etc.) is displayed on a particular device.
+
+  In most circumstances, you do not need to directly create image
+instances; use a glyph instead.  However, it may occasionally be useful
+to explicitly create image instances, if you want more control over the
+instantiation process.
+
+@defun image-instance-p object
+This function returns non-@code{nil} if @var{object} is an image instance.
 @end defun
 
-@defun console-type-image-conversion-list console-type
-This function returns the image-conversion-list for consoles of the given
-@var{console-type}.
-@end defun
+@menu
+* Image Instance Types::         Each image instances has a particular type.
+* Image Instance Functions::    Functions for working with image instances.
+@end menu
+
+
+@node Image Instance Types
+@subsubsection Image Instance Types
+@cindex image instance types
+
+  Image instances come in a number of different types.  The type
+of an image instance specifies the nature of the image: Whether
+it is a text string, a mono pixmap, a color pixmap, etc.
+
+  The valid image instance types are
+
+@table @code
+@item nothing
+Nothing is displayed.
+
+@item text
+Displayed as text.  The foreground and background colors and the
+font of the text are specified independent of the pixmap.  Typically
+these attributes will come from the face of the surrounding text,
+unless a face is specified for the glyph in which the image appears.
+
+@item mono-pixmap
+Displayed as a mono pixmap (a pixmap with only two colors where the
+foreground and background can be specified independent of the pixmap;
+typically the pixmap assumes the foreground and background colors of
+the text around it, unless a face is specified for the glyph in which
+the image appears).
+@item color-pixmap
+
+Displayed as a color pixmap.
+
+@item pointer
+Used as the mouse pointer for a window.
+
+@item subwindow
+A child window that is treated as an image.  This allows (e.g.)
+another program to be responsible for drawing into the window.
+Not currently implemented.
+@c #### Check status of subwindows ... I thought Andy implemented them.
+
+@item widget
+An active GUI element implemented as a ``widget'' or ``control'' of the
+underlying window system.
+@end table
+
+The following functions are used to check whether an image instance type
+is valid in the running XEmacs.
+
+@defun valid-image-instance-type-p type
+This function returns non-@code{nil} if @var{type} is a valid image
+instance type.
+@end defun
+
+@defun image-instance-type-list
+This function returns a list of the valid image instance types.
+@end defun
+
+The following functions are used to determine the type of an image
+instance.
+
+@defun image-instance-type image-instance
+Return the type of the given image instance.  The return
+value will be one of @code{nothing}, @code{text}, @code{mono-pixmap},
+@code{color-pixmap}, @code{pointer}, @code{subwindow}, or @code{widget}.
+@c #### Check status of subwindows ... I thought Andy implemented them.
+@end defun
+
+@defun text-image-instance-p object
+Return non-@code{nil} if @var{object} is an image instance of type
+@code{text}.
+@end defun
+
+@defun mono-pixmap-image-instance-p object
+Return non-@code{nil} if @var{object} is an image instance of type
+@code{mono-pixmap}.
+@end defun
+
+@defun color-pixmap-image-instance-p object
+Return non-@code{nil} if @var{object} is an image instance of type
+@code{color-pixmap}.
+@end defun
+
+@defun pointer-image-instance-p object
+Return non-@code{nil} if @var{object} is an image instance of type
+@code{pointer}.
+@end defun
+
+@defun subwindow-image-instance-p object
+Return non-@code{nil} if @var{object} is an image instance of type
+@code{subwindow}.
+@c #### Check status of subwindows ... I thought Andy implemented them.
+@end defun
+
+@defun nothing-image-instance-p object
+Return non-@code{nil} if @var{object} is an image instance of type
+@code{nothing}.
+@end defun
+
+@defun widget-image-instance-p object
+Return non-@code{nil} if @var{object} is an image instance of type
+@code{widget}.
+@end defun
+
+
+@node Image Instance Functions
+@subsubsection Image Instance Functions
+
+@defun make-image-instance data &optional domain dest-types noerror
+This function creates a new image-instance object.
+
+@var{data} is an image instantiator, which describes the image
+(@pxref{Image Specifiers}).
+
+@var{dest-types} should be a list of allowed image instance types that
+can be generated.  The @var{dest-types} list is unordered.  If multiple
+destination types are possible for a given instantiator, the ``most
+natural'' type for the instantiator's format is chosen.  These are
+
+@table @code
+@item XBM
+@c #### check xface
+@itemx xface
+@code{mono-pixmap}, then @code{color-pixmap}, then @code{pointer}.
+
+@item XPM
+@itemx GIF
+@itemx JPEG
+@itemx PNG
+@itemx TIFF
+@code{color-pixmap}, then @code{mono-pixmap}, then @code{pointer}.
+
+@item string
+@itemx formatted-string formats
+@code{text}, then @code{mono-pixmap} (not currently implemented), then
+@code{color-pixmap} (not currently implemented).
+
+@item mswindows-resource
+For pointer resources, @code{pointer}.
+
+For the others, @code{color-pixmap}.
+@end table
+
+@c #### So what?  This is a reference manual, list them, you lazy bastard!
+The other formats can only be instantiated as one type.
+
+If you want to control more specifically the order of the types into
+which an image is instantiated, call @code{make-image-instance}
+repeatedly until it succeeds, passing less and less preferred
+destination types each time.
+
+If @var{dest-types} is omitted, all possible types are allowed.
+
+@var{domain} specifies the domain to which the image instance will be
+attached.  This domain is termed the @dfn{governing domain}.  The type
+of the governing domain depends on the image instantiator format.
+(Although, more correctly, it should probably depend on the image
+instance type.)  For example, pixmap image instances are specific to a
+device, but widget image instances are specific to a particular XEmacs
+window because in order to display such a widget when two windows onto
+the same buffer want to display the widget, two separate underlying
+widgets must be created.  (That's because a widget is actually a child
+window-system window, and all window-system windows have a unique
+existence on the screen.)  This means that the governing domain for a
+pixmap image instance will be some device (most likely, the only
+existing device), whereas the governing domain for a widget image
+instance will be some XEmacs window.
+
+If you specify an overly general @var{domain} (e.g. a frame when a
+window was wanted), an error is signaled.  If you specify an overly
+specific @var{domain} (e.g. a window when a device was wanted), the
+corresponding general domain is fetched and used instead.  For
+@code{make-image-instance}, it makes no difference whether you specify
+an overly specific domain or the properly general domain derived from
+it.  However, it does matter when creating an image instance by
+instantiating a specifier or glyph (e.g. with
+@code{glyph-image-instance}), because the more specific domain causes
+spec lookup to start there and proceed to more general domains.  (It
+would also matter when creating an image instance with an instantiator
+format of @code{inherit}, but we currently disallow this.)
+@c #### We should fix that.
+
+If omitted, @var{domain} defaults to the selected window.
+
+@var{noerror} controls what happens when the image cannot be generated.
+If @code{nil}, an error message is generated.  If @code{t}, no messages
+are generated and this function returns @code{nil}.  If anything else, a
+warning message is generated and this function returns @code{nil}.
+@end defun
+
+@defun colorize-image-instance image-instance foreground background
+This function makes the image instance be displayed in the given
+colors.  Image instances come in two varieties: bitmaps, which are 1
+bit deep which are rendered in the prevailing foreground and background
+colors; and pixmaps, which are of arbitrary depth (including 1) and
+which have the colors explicitly specified.  This function converts a
+bitmap to a pixmap.  If the image instance was a pixmap already,
+nothing is done (and @code{nil} is returned).  Otherwise @code{t} is
+returned.
+@end defun
+
+The following functions are 
+
+@defun image-instance-name image-instance
+This function returns the name of the given image instance.  The name is
+typically taken from the @code{:file} property of the instantiator if
+present, otherwise from the @code{:data} property.
+@end defun
+
+@defun image-instance-domain image-instance
+Return the governing domain of the given @var{image-instance}.  The
+governing domain of an image instance is the domain that the image
+instance is specific to.  It is @emph{NOT} necessarily the domain that
+was given to the call to @code{specifier-instance} that resulted in the
+creation of this image instance.  See @code{make-image-instance} for
+more information on governing domains.
+@end defun
+
+@defun image-instance-string image-instance
+This function returns the string of the given image instance.  This will
+only be non-@code{nil} for text image instances.
+@end defun
+
+@defun image-instance-file-name image-instance
+This function returns the file name from which @var{image-instance} was
+read, if known.
+@end defun
+
+@defun image-instance-mask-file-name image-instance
+This function returns the file name from which @var{image-instance}'s
+mask was read, if known.
+@end defun
+
+Pixmaps are considered to be three-dimensional.  The height and width of
+the pixel array that is displayed, and the color depth of its pixels,
+are accessed with these functions.
+
+@defun image-instance-depth image-instance
+This function returns the depth of the image instance.  This is 0 for a
+mono pixmap, or a positive integer for a color pixmap.
+@end defun
+
+@defun image-instance-height image-instance
+This function returns the height of the image instance, in pixels.
+@end defun
+
+@defun image-instance-width image-instance
+This function returns the width of the image instance, in pixels.
+@end defun
+
+The hotspot is a point relative to the origin of the pixmap.  When
+an image is used as a mouse pointer, the hotspot is the point on the
+image that sits over the location that the pointer points to.  This is,
+for example, the tip of the arrow or the center of the crosshairs.
+
+These functions access the coordinates of the hotspot.  They simply
+return @code{nil} for a non-pointer image instance.
+
+@defun image-instance-hotspot-x image-instance
+This function returns the X coordinate of the image instance's hotspot,
+if known.
+@end defun
+
+@defun image-instance-hotspot-y image-instance
+This function returns the Y coordinate of the image instance's hotspot,
+if known.
+@end defun
+
+Mono pixmaps and pointers may have their foreground and background
+colors set when instanced.  Use these functions to access color
+information.
+
+@defun image-instance-foreground image-instance
+This function returns the foreground color of @var{image-instance}, if
+applicable.  This will be a color instance or @code{nil}.  (It will only
+be non-@code{nil} for colorized mono pixmaps and for pointers.)
+@end defun
+
+@defun image-instance-background image-instance
+This function returns the background color of @var{image-instance}, if
+applicable.  This will be a color instance or @code{nil}.  (It will only
+be non-@code{nil} for colorized mono pixmaps and for pointers.)
+@end defun
+
+
+@node Using Glyphs
+@section Using Glyphs
+
+Glyph usage is unfortunately somewhat arcane.  (For discussion of
+rationale, @ref{Glyphs,,,Internals}.)  Because they are not ``text,''
+they cannot be inserted directly into a buffer.  Instead, they are
+values of properties of extents attached to buffers or strings, values
+of global variables such as mouse pointers, or as a component of a
+complex data structure such as a toolbar initializer.  Although these
+uses could probably streamlined, each structure has its own
+requirements.  Since glyphs are very flexible, it is possible to create
+applications like the @file{edit-toolbar} and @file{xpm-mode} libraries
+which display glyphs in a buffer (for reference while editing) that are
+normally used in a different context.
+
+Usage of glyphs can roughly be categorized as follows:
+
+@table @strong
+@item Buffer glyphs
+Glyphs that are inserted in a buffer may be used for their own sake (for
+example, image display in @file{w3}), as an accurate representation of
+text that can't be displayed in usual fonts (equation display in
+@file{preview-latex}), or as annotations (such as a marginal indication
+of a bookmark).  Glyphs are attached to buffers via extents.
+
+@item Redisplay glyphs
+Glyphs can be used to create XEmacs-specific ``fonts''.  For example,
+the character that indicates truncation of lines is implemented as the
+@code{truncation-glyph}.  It is also possible to have XEmacs display a
+certain character using a custom glyph, via display tables.
+
+@item Frame glyphs
+Glyphs are used to control the appearance of various other components of
+the frame.  They can be inserted in the modeline, like the favicons used
+in Web browsers.  They are used to specify the labels on toolbar
+buttons.  Finally, they can be inserted in the gutters.  (The difference
+between a glyph inserted in a gutter and a marginal annotation is that
+the marginal annotation is tied to the text in the buffer.  If the
+buffer line scrolls out of view, the marginal annotation will, as well.
+A gutter glyph does not move with the text.)
+
+Unfortunately, all these uses are special cases, and have their own
+APIs, in contrast to glyphs in a buffer.
+
+@item External glyphs
+External glyphs simply allow a consistent API for images.  The images
+are then passed to external software such as the window system itself
+(mouse cursor shapes) and the window manager (icons to represent
+minimized windows).  XEmacs has no role in managing their use.
+
+@item Subwindow and widget glyphs
+These do not constitute a context of use, but rather an important class of
+glyph types.  The difference between these and other glyphs is that
+while their geometry is determined by XEmacs, their behavior is managed
+separately, by internal mechanisms in the case of widgets, and
+(possibly) by another process in the case of subwindows.
+@c #### Check status of subwindows ... I thought Andy implemented them.
+@end table
+
+Some simple concrete examples showing how to insert a glyph in a
+buffer are presented later.  @ref{Glyph Examples}.
+
+``Creating Glyphs'' explains how to create glyphs.  Creating a glyph
+using @code{make-glyph} does not specify @emph{where} the glyph will be
+used, it only specifies @emph{what} the glyph will look like.  The next
+four sections explain how to embed glyphs in different display
+contexts.  Finally, the last two sections explain the special
+considerations of using glyphs whose behavior is not determined by the
+code creating them, but by the glyph itself (a ``widget'' in X11 or
+``control'' in MS Windows or Aqua), or even by a separate process.
+
+@menu
+* Creating Glyphs::    Creating new glyphs.
+* Buffer Glyphs::      Annotations are glyphs that appear in a buffer.
+* Redisplay Glyphs::   Glyphs controlling various redisplay functions.
+* Frame Glyphs::       Displaying glyphs in GUI components of the frame.
+* External Glyphs::    Icons and mouse pointers for the window system.
+* Native GUI Widgets:: Complex active elements treated as a single glyph.
+* Subwindows::         Externally-controlled subwindows in buffers.
+@c #### Check status of subwindows ... I thought Andy implemented them.
+@end menu
+
+@node Creating Glyphs
+@subsection Creating Glyphs
+
+@defun make-glyph &optional spec-list type
+This function creates a new glyph object of type @var{type}.
+
+The optional @var{spec-list} is used to initialize the glyph's image.
+It can be any spec-list of @dfn{image instantiator} accepted by
+@code{canonicalize-spec-list}, @ref{Adding Specifications}.  An
+individual image instantiator may be a string, which is converted to a
+vector according to @code{console-type-image-conversion-list}, or a
+vector.  The vector's first element specifies the @emph{external} format
+of the data, such as a string, a PNG file, or an MS Windows resource.
+This is followed by properties (keyword-value pairs) specifying such
+information as the name of a file containing an image, or pixmap data
+directly.  @xref{Image Specifiers}.
+
+The optional @var{type} specifies the type of the glyph.  @var{type}
+should be one of @code{buffer} (used for glyphs in an extent, the
+modeline, the toolbar, or elsewhere in a frame), @code{pointer} (used
+for the mouse-pointer), or @code{icon} (used for a frame's icon), and
+defaults to @code{buffer}.
+@end defun
+
+@var{spec-list} is the initializer for the glyph's @code{image}
+property, which is an image specifier.  (Note that @dfn{image} as used
+in the context of a glyph's @code{image} property or in the terms
+@dfn{image specifier}, @dfn{image instantiator}, or @dfn{image instance}
+does not refer to what people normally think of as an image (which in
+XEmacs is called a @dfn{pixmap}), but to any graphical element---a
+pixmap, a widget, or even a block of text, when used in the places that
+call for a glyph.)
+
+The most common form of @var{spec-list} is a single image instantiator.
+(@strong{Compatibility note:} in GNU Emacs 21, a string used to
+instantiate an image is interpreted as the name of an image file, which
+is searched for and instantiated.)  The conversion controlled by
+@code{console-type-image-conversion-list} typically attempts to look up
+the string as a file name in XEmacs's data directory path, and if this
+fails, defaults to displaying the string as a text image instance
+(@emph{i.e.}. the string itself.
+
+Fine control of a particular specification is provided by using a vector
+as the image instantiator.  More complicated instantiators allow lists
+of instantiators to be specified (which are tried in order), or mappings
+from locales to lists of instantiators, @emph{etc}.  @xref{Specifiers},
+for more information about specification formats.
+
+As well as using @var{spec-list} to initialize the glyph, you can set
+specifications using @code{set-glyph-image}.  The glyph itself is not
+actually a specifier, but rather is an object containing an image
+specifier (as well as other properties seldom set by user code).
+Therefore, you cannot set or access specifications for the glyph's image
+by directly using @code{set-specifier}, @code{specifier-instance} or the
+like on the glyph; instead use them on @code{(glyph-image @var{glyph})}
+or use the convenience functions @code{set-glyph-image},
+@code{glyph-image-instance}, and @code{glyph-image}.
+
+Glyph types reflect the fact that glyphs are used in contexts like
+pointers and window manager icons, which are defined by external
+programs such as the window system or window manager.  These require
+somewhat different @emph{internal} format, which is opaque to the user.
+
+It is extremely rare that you will ever have to specify a value for
+@var{type}, which should be one of @code{buffer} (used for glyphs in an
+extent, the modeline, the toolbar, or elsewhere in a buffer),
+@code{pointer} (used for the mouse-pointer), or @code{icon} (used for a
+frame's icon), and defaults to @code{buffer}.  The only cases where it
+needs to be specified is when creating icon or pointer glyphs, and in
+both cases the necessary glyphs have already been created at startup and
+are accessed through the appropriate variables,
+e.g. @code{text-pointer-glyph} (or in general, any
+@samp{*-pointer-glyph}) and @code{frame-icon-glyph}.  User code should
+never need to create @code{pointer} or @code{icon} glyphs.  @xref{Glyph
+Types}.
+
+There are a few other glyph creation functions, normally used only
+internally or at XEmacs initialization.
+
+@defun make-glyph-internal &optional type
+This function creates a new, uninitialized glyph of type @var{type}.
+@end defun
+
+@defun make-pointer-glyph &optional spec-list
+
+Return a new @code{pointer-glyph} object with the specification list
+@var{spec-list}.  This function is equivalent to calling
+@code{make-glyph} with a @var{type} of @code{pointer}.
+@end defun
+
+@code{make-pointer-glyph} is normally used only by XEmacs initialization
+code.  It is extremely unlikely that you will ever need to create a
+pointer glyph.  Instead, you probably want to be calling
+@code{set-glyph-image} on an existing glyph,
+e.g. @code{text-pointer-glyph}.
+
+@defun make-icon-glyph &optional spec-list
+
+Return a new @code{icon-glyph} object with the specification list
+@var{spec-list}.  This function is equivalent to calling
+@code{make-glyph} with a @var{type} of @code{icon}.
+@end defun
+
+@code{make-icon-glyph} is normally used only by XEmacs initialization
+code.  It is extremely unlikely that you will ever need to create a icon
+glyph.  Instead, you probably want to be calling @code{set-glyph-image}
+on the existing glyph, @code{frame-icon-glyph}.
+
+
+@node Buffer Glyphs
+@subsection Buffer Glyphs
+
+Creating a glyph using @code{make-glyph} does not specify @emph{where}
+the glyph will be used, it only specifies @emph{what} the glyph will
+look like.  Once you have created a glyph, you specify where it will be
+used by attaching it to an extent as a @emph{begin-glyph} or
+@emph{end-glyph}.
+
+@table @code
+@item buffer text
+To insert a glyph into a buffer, create an extent in the buffer and then
+use @code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set
+a glyph to be displayed at the corresponding edge of the extent.  (It is
+common to create zero-width extents for this purpose.)
+
+@item margins
+To insert a glyph into the left or right margin of a buffer, first
+make sure the margin is visible by setting a value for the specifiers
+@code{left-margin-width} or @code{right-margin-width}.  (Not strictly necessary
+when using margin glyphs with layout policy @code{whitespace}.)  Follow
+the same procedure above for inserting a glyph in a buffer, then
+set a non-default layout policy for the glyph using
+@code{set-extent-begin-glyph-layout} or @code{set-extent-end-glyph-layout}.
+Alternatively, use the high-level annotations API (see
+@code{make-annotation}).  (In fact, you can also use the annotations
+API for glyphs in a buffer, by setting a layout policy of @code{text}.)
+
+@end table
+
+
+@node Redisplay Glyphs
+@subsection Redisplay Glyphs
+
+To use a glyph to control the shape of miscellaneous redisplay effects
+such as the truncation and continuation markers, set the appropriate
+existing glyph variables with @code{set-glyph-image}.  See
+@code{continuation-glyph}, @code{control-arrow-glyph},
+@code{hscroll-glyph}, @code{invisible-text-glyph},
+@code{octal-escape-glyph}, and @code{truncation-glyph}.  See also
+@code{overlay-arrow-string}, an odd redisplay leftover which can be set
+to a glyph you created, and will cause the glyph to be displayed on top
+of the text position specified in the marker stored in
+@code{overlay-arrow-position}.
+
+To use a glyph in a display table (i.e. to control the appearance of any
+individual character), create the appropriate character glyphs and then
+set a specification for the specifier @code{current-display-table},
+which controls the appearance of characters.  You can also set an
+overriding display table for use with text displayed in a particular
+face; see @code{set-face-display-table} and @code{make-display-table}.
+#### Note: Display tables do not currently support general Mule
+characters.  They will be overhauled at some point to support this
+and to provide other features required under Mule.  @ref{Display Tables}.
+
+Glyphs are not actually used as the background pixmaps of faces, but the
+API is similar.  The
+background pixmap of a face is actually an image specifier -- probably
+the only place in XEmacs where an image specifier occurs outside of a
+glyph.  If you would like to use a glyph's image as a background pixmap,
+you can extract it with @code{glyph-image}, and then add it to a face.
+@xref{Face Convenience Functions}.
+
+@defvr Glyph truncation-glyph
+This variable specifies what is displayed at the end of truncated lines.
+@end defvr
+
+@defvr Glyph continuation-glyph
+This variable specifies what is displayed at the end of wrapped lines.
+@end defvr
+
+@defvr Glyph octal-escape-glyph
+This variable specifies what to prefix character codes displayed in octal
+with.
+@end defvr
+
+@defvr Glyph hscroll-glyph
+This variable specifies what to display at the beginning of horizontally
+scrolled lines.
+@end defvr
+
+@defvr Glyph invisible-text-glyph
+This variable specifies what to use to indicate the presence of
+invisible text.  This is the glyph that is displayed when an ellipsis is
+called for, according to @code{selective-display-ellipses} or
+@code{buffer-invisibility-spec}).  Normally this is three dots (``...'').
+@end defvr
+
+@defvr Glyph control-arrow-glyph
+This variable specifies what to use as an arrow for control characters.
+@end defvr
+
+
+@node Frame Glyphs
+@subsection Frame Glyphs
+
+There are also a number of special objects whose appearance is specified
+by a glyph.  Most of these a global objects that you update with
+@code{set-glyph-image}, such as mouse pointers.  Frame icons, toolbar
+button icons, and the modeline are the main non-text objects which
+accept glyphs as elements.
+
+@table @code
+@item modeline
+A glyph may be displayed in the modeline by inserting the glyph as one
+of the elements of the modeline format.  (Unfortunately you can't
+currently put a begin glyph or end glyph on one of the modeline
+extents---they're ignored.)
+
+@item toolbar
+To insert a glyph into a toolbar, specify it as the icon part of a toolbar
+button, which in turn must be part of a toolbar instantiator (typically
+set on the specifier @code{default-toolbar}).
+See @code{default-toolbar} for more information. (As a convenience, you
+may use a symbol in place of the glyph list in the toolbar button
+instantiator; the symbol is evalled to get the glyph list.  This
+facilitates both creating the toolbar instantiator and modifying
+individual glyphs in a toolbar later on.  For example, you can change
+the way that the Mail toolbar button looks by modifying the value of the
+variable @code{toolbar-mail-icon} (in general, @code{toolbar-*-icon})
+and then calling @code{(set-specifier-dirty-flag default-toolbar)}.
+(#### Unfortunately this doesn't quite work the way it should; the
+change will appear in new frames, but not existing ones, because once an
+image has been displayed the pixmap replaces the symbol for those domains.)
+
+@item gutter
+To insert a glyph into a gutter, use
+@code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set a
+glyph to be displayed at the corresponding edge of extent in a string,
+similar to the way you insert glyphs in a buffer.  Then insert the
+string into the gutter @ref{Specifying a Gutter}.  Glyphs that are
+frequently used in this way are @code{tab control} and @code{progress
+bar} glyphs.
+
+@end table
+
+
+@node External Glyphs
+@subsection External Glyphs
+@cindex frame icon
+@cindex icon, frame
+@cindex mouse cursor
+@cindex cursor (mouse)
+@cindex pointer (mouse)
+@cindex mouse pointer
+
+There are two special kinds of glyph that are not displayed by XEmacs.
+Instead, they are used to set the appearance of iconified frames and the
+mouse pointer.  Because these uses are constrained by the window system,
+icons and pointers have their own special types @xref{Glyph Types}.
+
+You may use a glyph as the icon for a frame.  Do not create a new glyph;
+instead, change the specifications for the existing glyph
+@code{frame-icon-glyph} with @code{set-glyph-image}.  This is a unique,
+predefined object.  Although the natural usage is to set specifications
+for the global locale or a frame locale, you can also arrange for a
+special icon when a frame's selected window displays a particular buffer
+by using a buffer locale.
+
+The shape of the mouse pointer when over a particular section of a frame
+is controlled using various glyph variables.  Since the image of a glyph
+is a specifier, it can be controlled on a per-buffer, per-frame, per-window,
+or per-device basis.
+
+To use a glyph as the mouse pointer, in general you do not create a new
+glyph, but rather you change the specifications of various existing
+glyphs, such as @code{text-pointer-glyph} for the pointer used over
+text, @code{modeline-pointer-glyph} for the pointer used over the
+modeline, etc.  Do an apropos over @samp{pointer-glyph} to find all of
+them.  (Note also that you can temporarily set the mouse pointer to some
+specific shape by using @code{set-frame-pointer}, which takes an image
+instance, as obtained from calling @code{glyph-image-instance} on a glyph
+of type @code{pointer} -- either one of the above-mentioned variables or
+one you created yourself.  (See below for what it means to create a
+glyph of type @code{pointer}.)  This pointer will last only until the
+next mouse motion event is processed or certain other things happen,
+such as creating or deleting a window. (In fact, the above-mentioned
+pointer glyph variables are implemented as part of the default handler
+for mouse motion events.  If you want to customize this behavior, take a
+look at @code{mode-motion-hook}, or @code{mouse-motion-handler} if you
+really want to get low-level.)
+
+You should use @code{set-glyph-image} to set the following variables,
+@emph{not} @code{setq}.
+
+@defvr Glyph text-pointer-glyph
+This variable specifies the shape of the mouse pointer when over text.
+@end defvr
+
+@defvr Glyph nontext-pointer-glyph
+This variable specifies the shape of the mouse pointer when over a
+buffer, but not over text.  If unspecified in a particular domain,
+@code{text-pointer-glyph} is used.
+@end defvr
+
+@defvr Glyph modeline-pointer-glyph
+This variable specifies the shape of the mouse pointer when over the modeline.
+If unspecified in a particular domain, @code{nontext-pointer-glyph} is used.
+@end defvr
+
+@defvr Glyph selection-pointer-glyph
+This variable specifies the shape of the mouse pointer when over a
+selectable text region.  If unspecified in a particular domain,
+@code{text-pointer-glyph} is used.
+@end defvr
+
+@defvr Glyph gc-pointer-glyph
+This variable specifies the shape of the mouse pointer when a garbage
+collection is in progress.  If the selected window is on a window system
+and this glyph specifies a value (i.e. a pointer image instance) in the
+domain of the selected window, the pointer will be changed as specified
+during garbage collection.  Otherwise, a message will be printed in the
+echo area, as controlled by @code{gc-message}.
+@end defvr
+
+@defvr Glyph busy-pointer-glyph
+This variable specifies the shape of the mouse pointer when XEmacs is busy.
+If unspecified in a particular domain, the pointer is not changed
+when XEmacs is busy.
+@end defvr
+
+@defvr Glyph menubar-pointer-glyph
+This variable specifies the shape of the mouse pointer when over the
+menubar.  If unspecified in a particular domain, the
+window-system-provided default pointer is used.
+@end defvr
+
+@defvr Glyph scrollbar-pointer-glyph
+This variable specifies the shape of the mouse pointer when over a
+scrollbar.  If unspecified in a particular domain, the
+window-system-provided default pointer is used.
+@end defvr
+
+@defvr Glyph toolbar-pointer-glyph
+This variable specifies the shape of the mouse pointer when over a
+toolbar.  If unspecified in a particular domain,
+@code{nontext-pointer-glyph} is used.
+@end defvr
+
+Internally, these variables are implemented in
+@code{default-mouse-motion-handler}, and thus only take effect when the
+mouse moves.  That function calls @code{set-frame-pointer}, which sets
+the current mouse pointer for a frame.
+
+@defun set-frame-pointer frame image-instance
+This function sets the mouse pointer of @var{frame} to the given pointer
+image instance.  You should not call this function directly.
+(If you do, the pointer will change again the next time the mouse moves.)
+@end defun
+
+
+@node Native GUI Widgets
+@subsection Native GUI Widgets
+@cindex native widget
+
+A ``native widget'' is a primitive GUI object defined either by the host
+GUI platform or an external toolkit, and accessed from Lisp as a
+``glyph.''
+
+@menu
+* Introduction to Widgets::     Native widgets provide tight integration of
+                                GUI features with the platform GUI.
+* Lisp API to Native Widgets::  Native widgets are glyphs.
+* Layouts::                     Specifying composite widgets from Lisp.
+* Primitive Widgets::           Catalogue of available native widgets.
+@end menu
+
+@node Introduction to Widgets
+@subsubsection Introduction to Native Widgets and Subwindow Glyphs
+
+Traditionally Emacsen have hidden the GUI apparatus from the Lisp
+programmer, but in XEmacs 21.4 the ability to embed autonomous GUI
+objects, called @dfn{native widgets}, in text was added to Lisp.  They
+are handled as @emph{glyphs}.  Unlike traditional XEmacs
+glyphs such images and strings, native widgets are opaque to XEmacs, and
+must be able to redraw themselves because they are implemented as
+subwindows, not as graphics drawn by XEmacs into the text window.
+
+Primitive widgets are coded in C using the underlying GUI toolkit, and
+thus are beyond the scope of the @emph{XEmacs Lisp Reference Manual}.
+However, composite widgets can be created in Lisp using ``layouts,''
+which are horizontal or vertical arrays of subwidgets.  For example, the
+search dialog is formatted using layouts.
+
+@node Lisp API to Native Widgets
+@subsubsection Lisp API to Native Widgets
+
+Native widgets are manipulated as @emph{glyphs} (@pxref{Glyphs}).  Thus
+they are created using @code{make-glyph}, with a format of one of the
+widget types and a @code{:data} property specific to the widget being
+instanced.
+
+However, there is a technical difference between widgets and other kinds
+of glyphs that is theoretically important.  Because widgets
+are active (that is, they can respond to user input events themselves),
+it is possible for the user to become aware that two appearances of the
+``same'' glyph are actually separate instances.  For example, if a user
+changes an image glyph from red to blue, and the buffer containing the
+glyph appears in more than one window, the user will perceive all the
+appearances to change from red to blue simultaneously.  However, suppose
+the glyph is a button glyph (@emph{e.g.}, as used in the Customize
+buffer for the Set, Save, and Done buttons).  Then if the Customize
+buffer appears in several windows at the same time, and the user clicks
+on the button, she will only perceive the button to be depressed in the
+window where she clicked the button.
+
+It seems from this example that it is unlikely to be a problem in
+practice.  When the user is faced with an active widget, it seems likely
+that attention will focus on the widget being manipulated, and having
+other instances of the widget respond simultaneously might be more
+disconcerting than the actual case.
+
+@node Layouts
+@subsubsection Layouts
+
+An XEmacs @dfn{layout} is a one-dimensional array of glyphs.  It is a
+widget for controlling the positioning of children underneath it.
+Through the use of nested layouts, a widget hierarchy can be created
+which can have the appearance of any standard dialog box or similar
+arrangement; all of this is counted as one "glyph" and could appear in
+many of the places that expect a single glyph.
+@c #### Fix me!
+(There are also @dfn{native layouts}, but these are undocumented, as are
+their uses.)
+
+A layout descriptor is an image instantiator, @emph{i.e.}, a vector of
+the form @samp{[FORMAT KEY-1 VALUE-1 KEY-2 VALUE-2 ...]} with format
+@code{layout}, and properties
+
+@c #### need defaults for these
+@table @code
+@item :orientation
+Specifies the orientation of the contained array of glyphs.  The value
+must be one of the symbols @code{horizontal} or @code{vertical}.
+
+@item :horizontally-justify
+Specifies the horizontal justification of the items in the array.  The
+value must be one of the symbols @code{:right}, @code{:center}, or
+@code{:left}.
+
+@item :vertically-justify
+Specifies the vertical justification of the items in the array.  The
+value must be one of the symbols @code{:top}, @code{:center}, or
+@code{:bottom}.
+
+@item :justify
+Specifies justification.  #### not understood.
+
+@item :border
+A glyph to place in the border.  The value must be an image
+instantiator.
+
+@item :items
+The glyphs controlled by the layout.  The value must be a list of image
+instantiators.
+@end table
+
+Here is the specification of the search dialog widget created by
+@code{make-search-dialog} in the @file{dialog-items} library, which
+makes use of recursive layouts.
+
+@example
+(make-glyph
+ `[layout 
+   :orientation horizontal 
+   :vertically-justify top 
+   :horizontally-justify center 
+   :border [string :data "Search"]
+   :items 
+   ([layout :orientation vertical 
+            :justify top       ; implies left also
+            :items 
+            ([string :data "Search for:"]
+       [button :descriptor "Match Case"
+               :style toggle
+               :selected (not case-fold-search)
+               :callback (setq case-fold-search
+                               (not case-fold-search))]
+       [button :descriptor "Regular Expression"
+               :style toggle
+               :selected search-dialog-regexp
+               :callback (setq search-dialog-regexp
+                               (not search-dialog-regexp))]
+       [button :descriptor "Forwards"
+               :style radio
+               :selected search-dialog-direction
+               :callback (setq search-dialog-direction t)]
+       [button :descriptor "Backwards"
+               :style radio
+               :selected (not search-dialog-direction)
+               :callback (setq search-dialog-direction nil)]
+       )]
+    [layout :orientation vertical
+            :vertically-justify top
+            :horizontally-justify right
+            :items
+            ([edit-field :width 15 :descriptor "" :active t
+                   :initial-focus t]
+       [button :width 10 :descriptor "Find Next"
+               :callback-ex
+               (lambda (image-instance event)
+                 (search-dialog-callback ,parent
+                                         image-instance
+                                         event))]
+       [button :width 10 :descriptor "Cancel"
+               :callback-ex
+               (lambda (image-instance event)
+                 (isearch-dehighlight)
+                 (delete-frame 
+                  (event-channel event)))])])])
+@end example
+
+@node Primitive Widgets
+@subsubsection Primitive Widgets
+
+@c #### the following table should be replaced with a menu of nodes
+@table @code
+@item button
+A button widget; either a push button, radio button or toggle
+button.
+
+@item combo-box
+A drop list of selectable items in a widget, for editing text.
+
+@item edit-field
+A text editing widget.
+
+@item label
+A static, text-only, widget; for displaying text.
+
+@item progress-gauge
+A sliding widget, for showing progress.
+
+@item tab-control
+A tab widget; a series of user selectable tabs.
 
-@node Image Instances
-@subsection Image Instances
-@cindex image instances
+@item tree-view
+A folding widget.
 
-  Image-instance objects encapsulate the way a particular image (pixmap,
-etc.) is displayed on a particular device.
+@item scrollbar
+A scrollbar widget.  (#### Probably not the same as the scrollbar
+controlling an Emacs window.)
+@end table
 
-  In most circumstances, you do not need to directly create image
-instances; use a glyph instead.  However, it may occasionally be useful
-to explicitly create image instances, if you want more control over the
-instantiation process.
 
-@defun image-instance-p object
-This function returns non-@code{nil} if @var{object} is an image instance.
+@node Subwindows
+@subsection Subwindows
+
+Subwindows are not currently implemented.
+@c #### Check status of subwindows ... I thought Andy implemented them.
+
+@defun subwindowp object
+This function returns non-@code{nil} if @var{object} is a subwindow.
 @end defun
 
+
+@node Manipulating Glyphs
+@section Manipulating Glyphs
+
+  Each glyphs has properties that may be accessed.  Most of these can
+also be set after the glyph is initialized, with the exception of the
+glyph's type.  This is not a real restriction, as it is almost never
+useful to create glyphs of types other than @code{buffer}.
+
 @menu
-* Image Instance Types::         Each image instances has a particular type.
-* Image Instance Functions::    Functions for working with image instances.
+* Glyph Properties::   Accessing and modifying a glyph's properties.
+* Glyph Convenience Functions::  Accessing particular properties of a glyph.
+* Glyph Dimensions::   Determining the height, width, etc. of a glyph.
+* Glyph Types::                Each glyph has a particular type.
 @end menu
 
-@node Image Instance Types
-@subsubsection Image Instance Types
-@cindex image instance types
 
-  Image instances come in a number of different types.  The type
-of an image instance specifies the nature of the image: Whether
-it is a text string, a mono pixmap, a color pixmap, etc.
+@node Glyph Properties
+@subsection Glyph Properties
 
-  The valid image instance types are
+Each glyph has a list of properties, which control all of the aspects of
+the glyph's appearance.  The following symbols have predefined meanings:
 
 @table @code
-@item nothing
-Nothing is displayed.
+@item image
+The image used to display the glyph.
 
-@item text
-Displayed as text.  The foreground and background colors and the
-font of the text are specified independent of the pixmap.  Typically
-these attributes will come from the face of the surrounding text,
-unless a face is specified for the glyph in which the image appears.
+@item baseline
+Percent above baseline that glyph is to be displayed.  Only for glyphs
+displayed inside of a buffer.
 
-@item mono-pixmap
-Displayed as a mono pixmap (a pixmap with only two colors where the
-foreground and background can be specified independent of the pixmap;
-typically the pixmap assumes the foreground and background colors of
-the text around it, unless a face is specified for the glyph in which
-the image appears).
-@item color-pixmap
+@item contrib-p
+Whether the glyph contributes to the height of the line it's on.
+Only for glyphs displayed inside of a buffer.
 
-Displayed as a color pixmap.
+@item face
+Face of this glyph (@emph{not} a specifier).
+@end table
 
-@item pointer
-Used as the mouse pointer for a window.
+@defun set-glyph-property glyph property value &optional locale tag-set how-to-add
+This function changes a property of a @var{glyph}.
 
-@item subwindow
-A child window that is treated as an image.  This allows (e.g.)
-another program to be responsible for drawing into the window.
-Not currently implemented.
-@end table
+For built-in properties, the actual value of the property is a specifier
+and you cannot change this; but you can change the specifications within
+the specifier, and that is what this function will do.  The glyph face
+is an exception; it is a face name (a symbol) or a face object, not a
+specifier.  (The face properties themselves are typically specifiers.)
+For user-defined properties, you can use this function to either change
+the actual value of the property or, if this value is a specifier,
+change the specifications within it.
 
-@defun valid-image-instance-type-p type
-This function returns non-@code{nil} if @var{type} is a valid image
-instance type.
-@end defun
+If @var{property} is a built-in property, the specifications to be added
+to this property can be supplied in many different ways:
 
-@defun image-instance-type-list
-This function returns a list of the valid image instance types.
-@end defun
+@itemize @bullet
+@item
+If @var{value} is a simple instantiator (e.g. a string naming a pixmap
+filename) or a list of instantiators, then the instantiator(s) will be
+added as a specification of the property for the given @var{locale}
+(which defaults to @code{global} if omitted).
 
-@defun image-instance-type image-instance
-This function returns the type of the given image instance.  The return
-value will be one of @code{nothing}, @code{text}, @code{mono-pixmap},
-@code{color-pixmap}, @code{pointer}, or @code{subwindow}.
-@end defun
+@item
+If @var{value} is a list of specifications (each of which is a cons of a
+locale and a list of instantiators), then @var{locale} must be
+@code{nil} (it does not make sense to explicitly specify a locale in
+this case), and specifications will be added as given.
 
-@defun text-image-instance-p object
-This function returns non-@code{nil} if @var{object} is an image
-instance of type @code{text}.
-@end defun
+@item
+If @var{value} is a specifier (as would be returned by
+@code{glyph-property} if no @var{locale} argument is given), then some
+or all of the specifications in the specifier will be added to the
+property.  In this case, the function is really equivalent to
+@code{copy-specifier} and @var{locale} has the same semantics (if it is
+a particular locale, the specification for the locale will be copied; if
+a locale type, specifications for all locales of that type will be
+copied; if @code{nil} or @code{all}, then all specifications will be
+copied).
+@end itemize
 
-@defun mono-pixmap-image-instance-p object
-This function returns non-@code{nil} if @var{object} is an image
-instance of type @code{mono-pixmap}.
-@end defun
+@var{how-to-add} should be either @code{nil} or one of the symbols
+@code{prepend}, @code{append}, @code{remove-tag-set-prepend},
+@code{remove-tag-set-append}, @code{remove-locale},
+@code{remove-locale-type}, or @code{remove-all}.  See
+@code{copy-specifier} and @code{add-spec-to-specifier} for a description
+of what each of these means.  Most of the time, you do not need to worry
+about this argument; the default behavior usually is fine.
 
-@defun color-pixmap-image-instance-p object
-This function returns non-@code{nil} if @var{object} is an image
-instance of type @code{color-pixmap}.
-@end defun
+In general, it is OK to pass an instance object (e.g. as returned by
+@code{glyph-property-instance}) as an instantiator in place of an actual
+instantiator.  In such a case, the instantiator used to create that
+instance object will be used (for example, if you set a font-instance
+object as the value of the @code{font} property, then the font name used
+to create that object will be used instead).  In some cases, however,
+doing this conversion does not make sense, and this will be noted in the
+documentation for particular types of instance objects.
 
-@defun pointer-image-instance-p object
-This function returns non-@code{nil} if @var{object} is an image
-instance of type @code{pointer}.
+If @var{property} is not a built-in property, then this function will
+simply set its value if @var{locale} is @code{nil}.  However, if
+@var{locale} is given, then this function will attempt to add
+@var{value} as the instantiator for the given @var{locale}, using
+@code{add-spec-to-specifier}.  If the value of the property is not a
+specifier, it will automatically be converted into a @code{generic}
+specifier.
 @end defun
 
-@defun subwindow-image-instance-p object
-This function returns non-@code{nil} if @var{object} is an image
-instance of type @code{subwindow}.
-@end defun
+@defun glyph-property glyph property &optional locale
+This function returns @var{glyph}'s value of the given @var{property}.
 
-@defun nothing-image-instance-p object
-This function returns non-@code{nil} if @var{object} is an image
-instance of type @code{nothing}.
-@end defun
+If @var{locale} is omitted, the @var{glyph}'s actual value for
+@var{property} will be returned.  For built-in properties, this will be
+a specifier object of a type appropriate to the property (e.g. a font or
+color specifier).  For other properties, this could be anything.
 
-@defun widget-image-instance-p object
-Return @code{t} if @var{object} is an image instance of type @code{widget}.
+If @var{locale} is supplied, then instead of returning the actual value,
+the specification(s) for the given locale or locale type will be
+returned.  This will only work if the actual value of @var{property} is
+a specifier (this will always be the case for built-in properties, but
+may or may not apply to user-defined properties).  If the actual value
+of @var{property} is not a specifier, this value will simply be returned
+regardless of @var{locale}.
+
+The return value will be a list of instantiators (e.g. vectors
+specifying pixmap data), or a list of specifications, each of which is a
+cons of a locale and a list of instantiators.  Specifically, if
+@var{locale} is a particular locale (a buffer, window, frame, device, or
+@code{global}), a list of instantiators for that locale will be
+returned.  Otherwise, if @var{locale} is a locale type (one of the
+symbols @code{buffer}, @code{window}, @code{frame}, or @code{device}),
+the specifications for all locales of that type will be returned.
+Finally, if @var{locale} is @code{all}, the specifications for all
+locales of all types will be returned.
+
+The specifications in a specifier determine what the value of
+@var{property} will be in a particular @dfn{domain} or set of
+circumstances, which is typically a particular Emacs window along with
+the buffer it contains and the frame and device it lies within.  The
+value is derived from the instantiator associated with the most specific
+locale (in the order buffer, window, frame, device, and @code{global})
+that matches the domain in question.  In other words, given a domain
+(i.e. an Emacs window, usually), the specifier for @var{property} will
+first be searched for a specification whose locale is the buffer
+contained within that window; then for a specification whose locale is
+the window itself; then for a specification whose locale is the frame
+that the window is contained within; etc.  The first instantiator that
+is valid for the domain (usually this means that the instantiator is
+recognized by the device [i.e. the X server or TTY device] that the
+domain is on).  The function @code{glyph-property-instance} actually does
+all this, and is used to determine how to display the glyph.
 @end defun
 
-@node Image Instance Functions
-@subsubsection Image Instance Functions
+@defun glyph-property-instance glyph property &optional domain default no-fallback
+This function returns the instance of @var{glyph}'s @var{property} in the
+specified @var{domain}.
 
-@defun make-image-instance data &optional domain dest-types noerror
-This function creates a new image-instance object.
+Under most circumstances, @var{domain} will be a particular window, and
+the returned instance describes how the specified property actually is
+displayed for that window and the particular buffer in it.  Note that
+this may not be the same as how the property appears when the buffer is
+displayed in a different window or frame, or how the property appears in
+the same window if you switch to another buffer in that window; and in
+those cases, the returned instance would be different.
 
-@var{data} is an image instantiator, which describes the image
-(@pxref{Image Specifiers}).
+The returned instance is an image-instance object, and you can query it
+using the appropriate image instance functions.  For example, you could use
+@code{image-instance-depth} to find out the depth (number of color
+planes) of a pixmap displayed in a particular window.  The results might
+be different from the results you would get for another window (perhaps
+the user specified a different image for the frame that window is on; or
+perhaps the same image was specified but the window is on a different X
+server, and that X server has different color capabilities from this
+one).
 
-@var{dest-types} should be a list of allowed image instance types that
-can be generated.  The @var{dest-types} list is unordered.  If multiple
-destination types are possible for a given instantiator, the ``most
-natural'' type for the instantiator's format is chosen. (For XBM, the
-most natural types are @code{mono-pixmap}, followed by
-@code{color-pixmap}, followed by @code{pointer}.  For the other normal
-image formats, the most natural types are @code{color-pixmap}, followed
-by @code{mono-pixmap}, followed by @code{pointer}.  For the string and
-formatted-string formats, the most natural types are @code{text},
-followed by @code{mono-pixmap} (not currently implemented), followed by
-@code{color-pixmap} (not currently implemented).  For MS Windows
-resources, the most natural type for pointer resources is
-@code{pointer}, and for the others it's @code{color-pixmap}.  The other
-formats can only be instantiated as one type. (If you want to control
-more specifically the order of the types into which an image is
-instantiated, just call @code{make-image-instance} repeatedly until it
-succeeds, passing less and less preferred destination types each time.
+@var{domain} defaults to the selected window if omitted.
 
-If @var{dest-types} is omitted, all possible types are allowed.
+@var{domain} can be a frame or device, instead of a window.  The value
+returned for such a domain is used in special circumstances when a
+more specific domain does not apply; for example, a frame value might be
+used for coloring a toolbar, which is conceptually attached to a frame
+rather than a particular window.  The value is also useful in
+determining what the value would be for a particular window within the
+frame or device, if it is not overridden by a more specific
+specification.
 
-@var{domain} specifies the domain to which the image instance will be
-attached.  This domain is termed the @dfn{governing domain}.  The type
-of the governing domain depends on the image instantiator
-format. (Although, more correctly, it should probably depend on the
-image instance type.) For example, pixmap image instances are specific
-to a device, but widget image instances are specific to a particular
-XEmacs window because in order to display such a widget when two windows
-onto the same buffer want to display the widget, two separate underlying
-widgets must be created. (That's because a widget is actually a child
-window-system window, and all window-system windows have a unique
-existence on the screen.) This means that the governing domain for a
-pixmap image instance will be some device (most likely, the only
-existing device), whereas the governing domain for a widget image
-instance will be some XEmacs window.
+If @var{property} does not name a built-in property, its value will
+simply be returned unless it is a specifier object, in which case it
+will be instanced using @code{specifier-instance}.
 
-If you specify an overly general @var{domain} (e.g. a frame when a
-window was wanted), an error is signaled.  If you specify an overly
-specific @var{domain} (e.g. a window when a device was wanted), the
-corresponding general domain is fetched and used instead.  For
-@code{make-image-instance}, it makes no difference whether you specify
-an overly specific domain or the properly general domain derived from
-it.  However, it does matter when creating an image instance by
-instantiating a specifier or glyph (e.g. with
-@code{glyph-image-instance}), because the more specific domain causes
-spec lookup to start there and proceed to more general domains. (It
-would also matter when creating an image instance with an instantiator
-format of @code{inherit}, but we currently disallow this. #### We should
-fix this.)
-n
-If omitted, @var{domain} defaults to the selected window.
+Optional arguments @var{default} and @var{no-fallback} are the same as
+in @code{specifier-instance}.  @xref{Specifiers}.
+@end defun
 
-@var{noerror} controls what happens when the image cannot be generated.
-If @code{nil}, an error message is generated.  If @code{t}, no messages
-are generated and this function returns @code{nil}.  If anything else, a
-warning message is generated and this function returns @code{nil}.
+@defun remove-glyph-property glyph property &optional locale tag-set exact-p
+This function removes a property from a glyph.  For built-in properties,
+this is analogous to @code{remove-specifier}.  @xref{Specifiers,
+remove-specifier-p}, for the meaning of the @var{locale}, @var{tag-set},
+and @var{exact-p} arguments.
 @end defun
 
-@defun colorize-image-instance image-instance foreground background
-This function makes the image instance be displayed in the given
-colors.  Image instances come in two varieties: bitmaps, which are 1
-bit deep which are rendered in the prevailing foreground and background
-colors; and pixmaps, which are of arbitrary depth (including 1) and
-which have the colors explicitly specified.  This function converts a
-bitmap to a pixmap.  If the image instance was a pixmap already,
-nothing is done (and @code{nil} is returned).  Otherwise @code{t} is
-returned.
+
+@node Glyph Convenience Functions
+@subsection Glyph Convenience Functions
+
+  The following functions are provided for working with specific
+properties of a glyph.  Note that these are exactly like calling
+the general functions described above and passing in the
+appropriate value for @var{property}.
+
+  Remember that if you want to determine the ``value'' of a
+specific glyph property, you probably want to use the @code{*-instance}
+functions.  For example, to determine whether a glyph contributes
+to its line height, use @code{glyph-contrib-p-instance}, not
+@code{glyph-contrib-p}. (The latter will return a boolean specifier
+or a list of specifications, and you probably aren't concerned with
+these.)
+
+@defun glyph-image glyph &optional locale
+This function is equivalent to calling @code{glyph-property} with
+a property of @code{image}.  The return value will be an image
+specifier if @var{locale} is @code{nil} or omitted; otherwise,
+it will be a specification or list of specifications.
 @end defun
 
-@defun image-instance-name image-instance
-This function returns the name of the given image instance.
+@defun set-glyph-image glyph spec &optional locale tag-set how-to-add
+This function is equivalent to calling @code{set-glyph-property} with
+a property of @code{image}.
 @end defun
 
-@defun image-instance-domain image-instance
+@defun glyph-image-instance glyph &optional domain default no-fallback
+This function returns the instance of @var{glyph}'s image in the given
+@var{domain}, and is equivalent to calling
+@code{glyph-property-instance} with a property of @code{image}.  The
+return value will be an image instance.
 
-Return the governing domain of the given @var{image-instance}.  The
-governing domain of an image instance is the domain that the image
-instance is specific to.  It is @emph{NOT} necessarily the domain that
-was given to the call to @code{specifier-instance} that resulted in the
-creation of this image instance.  See @code{make-image-instance} for
-more information on governing domains.
+Normally @var{domain} will be a window or @code{nil} (meaning the
+selected window), and an instance object describing how the image
+appears in that particular window and buffer will be returned.
 @end defun
 
+@defun glyph-contrib-p glyph &optional locale
+This function is equivalent to calling @code{glyph-property} with
+a property of @code{contrib-p}.  The return value will be a boolean
+specifier if @var{locale} is @code{nil} or omitted; otherwise,
+it will be a specification or list of specifications.
+@end defun
 
-@defun image-instance-string image-instance
-This function returns the string of the given image instance.  This will
-only be non-@code{nil} for text image instances.
+@defun set-glyph-contrib-p glyph spec &optional locale tag-set how-to-add
+This function is equivalent to calling @code{set-glyph-property} with
+a property of @code{contrib-p}.
 @end defun
 
-@defun image-instance-file-name image-instance
-This function returns the file name from which @var{image-instance} was
-read, if known.
+@defun glyph-contrib-p-instance glyph &optional domain default no-fallback
+This function returns whether the glyph contributes to its line height
+in the given @var{domain}, and is equivalent to calling
+@code{glyph-property-instance} with a property of @code{contrib-p}.  The
+return value will be either @code{nil} or @code{t}. (Normally @var{domain}
+will be a window or @code{nil}, meaning the selected window.)
 @end defun
 
-@defun image-instance-mask-file-name image-instance
-This function returns the file name from which @var{image-instance}'s
-mask was read, if known.
+@defun glyph-baseline glyph &optional locale
+This function is equivalent to calling @code{glyph-property} with a
+property of @code{baseline}.  The return value will be a specifier if
+@var{locale} is @code{nil} or omitted; otherwise, it will be a
+specification or list of specifications.
 @end defun
 
-@defun image-instance-depth image-instance
-This function returns the depth of the image instance.  This is 0 for a
-mono pixmap, or a positive integer for a color pixmap.
+@defun set-glyph-baseline glyph spec &optional locale tag-set how-to-add
+This function is equivalent to calling @code{set-glyph-property} with
+a property of @code{baseline}.
 @end defun
 
-@defun image-instance-height image-instance
-This function returns the height of the image instance, in pixels.
+@defun glyph-baseline-instance glyph &optional domain default no-fallback
+This function returns the instance of @var{glyph}'s baseline value in
+the given @var{domain}, and is equivalent to calling
+@code{glyph-property-instance} with a property of @code{baseline}.  The
+return value will be an integer or @code{nil}.
+
+Normally @var{domain} will be a window or @code{nil} (meaning the
+selected window), and an instance object describing the baseline value
+appears in that particular window and buffer will be returned.
 @end defun
 
-@defun image-instance-width image-instance
-This function returns the width of the image instance, in pixels.
+@defun glyph-face glyph
+This function returns the face of @var{glyph}. (Remember, this is
+not a specifier, but a simple property.)
 @end defun
 
-@defun image-instance-hotspot-x image-instance
-This function returns the X coordinate of the image instance's hotspot,
-if known.  This is a point relative to the origin of the pixmap.  When
-an image is used as a mouse pointer, the hotspot is the point on the
-image that sits over the location that the pointer points to.  This is,
-for example, the tip of the arrow or the center of the crosshairs.
+@defun set-glyph-face glyph face
+This function changes the face of @var{glyph} to @var{face}.
+@end defun
+
+
+@node Glyph Dimensions
+@subsection Glyph Dimensions
 
-This will always be @code{nil} for a non-pointer image instance.
+@defun glyph-width glyph &optional window
+This function returns the width of @var{glyph} on @var{window}.  This
+may not be exact as it does not take into account all of the context
+that redisplay will.
 @end defun
 
-@defun image-instance-hotspot-y image-instance
-This function returns the Y coordinate of the image instance's hotspot,
-if known.
+@defun glyph-ascent glyph &optional window
+This function returns the ascent value of @var{glyph} on @var{window}.
+This may not be exact as it does not take into account all of the
+context that redisplay will.
 @end defun
 
-@defun image-instance-foreground image-instance
-This function returns the foreground color of @var{image-instance}, if
-applicable.  This will be a color instance or @code{nil}. (It will only
-be non-@code{nil} for colorized mono pixmaps and for pointers.)
+@defun glyph-descent glyph &optional window
+This function returns the descent value of @var{glyph} on @var{window}.
+This may not be exact as it does not take into account all of the
+context that redisplay will.
 @end defun
 
-@defun image-instance-background image-instance
-This function returns the background color of @var{image-instance}, if
-applicable.  This will be a color instance or @code{nil}. (It will only
-be non-@code{nil} for colorized mono pixmaps and for pointers.)
+@defun glyph-height glyph &optional window
+This function returns the height of @var{glyph} on @var{window}.  (This
+is equivalent to the sum of the ascent and descent values.)  This may
+not be exact as it does not take into account all of the context that
+redisplay will.
 @end defun
 
 
 @node Glyph Types
-@section Glyph Types
+@subsection Glyph Types
 
   Each glyph has a particular type, which controls how the glyph's image
 is generated.  Each glyph type has a corresponding list of allowable
@@ -1221,6 +1978,7 @@ for the glyph's type.
 extent, in the modeline, and in the toolbar.  Their image can be
 instantiated as @code{nothing}, @code{mono-pixmap}, @code{color-pixmap},
 @code{text}, and @code{subwindow}.
+@c #### Check status of subwindows ... I thought Andy implemented them.
 
 @item
 @code{pointer} glyphs can be used to specify the mouse pointer.  Their
@@ -1261,126 +2019,6 @@ This function returns non-@code{nil} if @var{object} is a glyph of type
 @code{pointer}.
 @end defun
 
-@node Mouse Pointer
-@section Mouse Pointer
-@cindex mouse cursor
-@cindex cursor (mouse)
-@cindex pointer (mouse)
-@cindex mouse pointer
-
-The shape of the mouse pointer when over a particular section of a frame
-is controlled using various glyph variables.  Since the image of a glyph
-is a specifier, it can be controlled on a per-buffer, per-frame, per-window,
-or per-device basis.
-
-You should use @code{set-glyph-image} to set the following variables,
-@emph{not} @code{setq}.
-
-@defvr Glyph text-pointer-glyph
-This variable specifies the shape of the mouse pointer when over text.
-@end defvr
-
-@defvr Glyph nontext-pointer-glyph
-This variable specifies the shape of the mouse pointer when over a
-buffer, but not over text.  If unspecified in a particular domain,
-@code{text-pointer-glyph} is used.
-@end defvr
-
-@defvr Glyph modeline-pointer-glyph
-This variable specifies the shape of the mouse pointer when over the modeline.
-If unspecified in a particular domain, @code{nontext-pointer-glyph} is used.
-@end defvr
-
-@defvr Glyph selection-pointer-glyph
-This variable specifies the shape of the mouse pointer when over a
-selectable text region.  If unspecified in a particular domain,
-@code{text-pointer-glyph} is used.
-@end defvr
-
-@defvr Glyph gc-pointer-glyph
-This variable specifies the shape of the mouse pointer when a garbage
-collection is in progress.  If the selected window is on a window system
-and this glyph specifies a value (i.e. a pointer image instance) in the
-domain of the selected window, the pointer will be changed as specified
-during garbage collection.  Otherwise, a message will be printed in the
-echo area, as controlled by @code{gc-message}.
-@end defvr
-
-@defvr Glyph busy-pointer-glyph
-This variable specifies the shape of the mouse pointer when XEmacs is busy.
-If unspecified in a particular domain, the pointer is not changed
-when XEmacs is busy.
-@end defvr
-
-@defvr Glyph menubar-pointer-glyph
-This variable specifies the shape of the mouse pointer when over the
-menubar.  If unspecified in a particular domain, the
-window-system-provided default pointer is used.
-@end defvr
-
-@defvr Glyph scrollbar-pointer-glyph
-This variable specifies the shape of the mouse pointer when over a
-scrollbar.  If unspecified in a particular domain, the
-window-system-provided default pointer is used.
-@end defvr
-
-@defvr Glyph toolbar-pointer-glyph
-This variable specifies the shape of the mouse pointer when over a
-toolbar.  If unspecified in a particular domain,
-@code{nontext-pointer-glyph} is used.
-@end defvr
-
-Internally, these variables are implemented in
-@code{default-mouse-motion-handler}, and thus only take effect when the
-mouse moves.  That function calls @code{set-frame-pointer}, which sets
-the current mouse pointer for a frame.
-
-@defun set-frame-pointer frame image-instance
-This function sets the mouse pointer of @var{frame} to the given pointer
-image instance.  You should not call this function directly.
-(If you do, the pointer will change again the next time the mouse moves.)
-@end defun
-
-@node Redisplay Glyphs
-@section Redisplay Glyphs
-
-@defvr Glyph truncation-glyph
-This variable specifies what is displayed at the end of truncated lines.
-@end defvr
-
-@defvr Glyph continuation-glyph
-This variable specifies what is displayed at the end of wrapped lines.
-@end defvr
-
-@defvr Glyph octal-escape-glyph
-This variable specifies what to prefix character codes displayed in octal
-with.
-@end defvr
-
-@defvr Glyph hscroll-glyph
-This variable specifies what to display at the beginning of horizontally
-scrolled lines.
-@end defvr
-
-@defvr Glyph invisible-text-glyph
-This variable specifies what to use to indicate the presence of
-invisible text.  This is the glyph that is displayed when an ellipsis is
-called for, according to @code{selective-display-ellipses} or
-@code{buffer-invisibility-spec}).  Normally this is three dots (``...'').
-@end defvr
-
-@defvr Glyph control-arrow-glyph
-This variable specifies what to use as an arrow for control characters.
-@end defvr
-
-@node Subwindows
-@section Subwindows
-
-Subwindows are not currently implemented.
-
-@defun subwindowp object
-This function returns non-@code{nil} if @var{object} is a subwindow.
-@end defun
 
 @node Glyph Examples
 @section Glyph Examples
@@ -1454,7 +2092,7 @@ Once you have a glyph, you can then insert it into a buffer.  Example:
 ;; current buffer.  Any existing glyph at this location is replaced.
 (defun insert-glyph (gl)
   "Insert a glyph at the left edge of point."
-  (let ( (prop 'myimage)        ;; myimage is an arbitrary name, chosen 
+  (let ( (prop 'myimage)        ;; myimage is an arbitrary name, chosen
                                 ;; to (hopefully) not conflict with any
                                 ;; other properties.  Change it if
                                 ;; necessary.
index ed05c96..2ff7479 100644 (file)
@@ -994,39 +994,57 @@ Colors
 
 Glyphs
 
-* Glyph Functions::    Functions for working with glyphs.
-* Images::             Graphical images displayed in a frame.
-* Glyph Types::         Each glyph has a particular type.
-* Mouse Pointer::      Controlling the mouse pointer.
-* Redisplay Glyphs::    Glyphs controlling various redisplay functions.
-* Subwindows::          Inserting an externally-controlled subwindow
-                          into a buffer.
-* Glyph Examples::      Examples of how to work with glyphs.
+* Glyph Intro::                Glyphs are abstract image specifications.
+* Images::             Specifying the appearance of glyphs.
+* Using Glyphs::       Creating and displaying glyphs.
+* Manipulating Glyphs::        Getting and setting glyph properties.
+* Glyph Examples::     Examples of how to work with glyphs.
 
-Glyph Functions
+Images
 
-* Creating Glyphs::    Creating new glyphs.
-* Glyph Properties::   Accessing and modifying a glyph's properties.
-* Glyph Convenience Functions::
-                       Convenience functions for accessing particular
-                         properties of a glyph.
-* Glyph Dimensions::    Determining the height, width, etc. of a glyph.
+* Image Specifiers::                   Specifying an image's appearance.
+* Image Instantiator Conversion::      Lazy realization of graphics.
+* Image Instantiator Formats::         A catalog of image descriptors.
+* Image Instances::                    Classes of graphical objects.
 
-Images
+Image Instances
+
+* Image Instance Types::         Each image instances has a particular type.
+* Image Instance Functions::    Functions for working with image instances.
+
+Using Glyphs
 
-* Image Specifiers::           Specifying how an image will appear.
-* Image Instantiator Conversion::
-                               Conversion is applied to image instantiators
-                                 at the time they are added to an
-                                 image specifier or at the time they
-                                 are passed to @code{make-image-instance}.
-* Image Instances::            What an image specifier gets instanced as.
 
 Image Instances
 
 * Image Instance Types::         Each image instances has a particular type.
 * Image Instance Functions::    Functions for working with image instances.
 
+Using Glyphs
+
+* Creating Glyphs::    Creating new glyphs.
+* Buffer Glyphs::      Annotations are glyphs that appear in a buffer.
+* Redisplay Glyphs::   Glyphs controlling various redisplay functions.
+* Frame Glyphs::       Displaying glyphs in GUI components of the frame.
+* External Glyphs::    Icons and mouse pointers for the window system.
+* Native GUI Widgets:: Complex active elements treated as a single glyph.
+* Subwindows::         Externally-controlled subwindows in buffers.
+
+Native GUI Widgets
+
+* Introduction to Widgets::     Native widgets provide tight integration of
+                                GUI features with the platform GUI.
+* Lisp API to Native Widgets::  Native widgets are glyphs.
+* Layouts::                     Specifying composite widgets from Lisp.
+* Primitive Widgets::           Catalogue of available native widgets.
+
+Manipulating Glyphs
+
+* Glyph Properties::   Accessing and modifying a glyph's properties.
+* Glyph Convenience Functions::  Accessing particular properties of a glyph.
+* Glyph Dimensions::   Determining the height, width, etc. of a glyph.
+* Glyph Types::                Each glyph has a particular type.
+
 Annotations
 
 * Annotation Basics::          Introduction to annotations.
index a3b68bf..e01a2a1 100644 (file)
@@ -1723,7 +1723,7 @@ depends on the keyword).
 * CCL Statements::      Semantics of CCL statements.
 * CCL Expressions::     Operators and expressions in CCL.
 * Calling CCL::         Running CCL programs.
-* CCL Examples::        The encoding functions for Big5 and KOI-8.
+* CCL Example::         A trivial program to transform the Web's URL encoding.
 @end menu
 
 @node    CCL Syntax, CCL Statements, , CCL
@@ -1942,7 +1942,7 @@ complicated transformation of the Japanese standard JIS encoding to
 Shift JIS.  CCL_DECODE_SJIS is its inverse.)  It is somewhat odd to
 represent the SJIS operations in infix form.
 
-@node    Calling CCL, CCL Examples, CCL Expressions, CCL
+@node    Calling CCL, CCL Example, CCL Expressions, CCL
 @comment Node,        Next,          Previous,        Up
 @subsection Calling CCL
 
@@ -2008,11 +2008,307 @@ value and 0.
 Resets the CCL interpreter's internal elapsed time registers.
 @end defun
 
-@node    CCL Examples, ,  Calling CCL, CCL
+@node    CCL Example, ,  Calling CCL, CCL
 @comment Node,         Next, Previous,    Up
-@subsection CCL Examples
+@subsection CCL Example
+
+  In this section, we describe the implementation of a trivial coding
+system to transform from the Web's URL encoding to XEmacs' internal
+coding.  Many people will have been first exposed to URL encoding when
+they saw ``%20'' where they expected a space in a file's name on their
+local hard disk; this can happen when a browser saves a file from the
+web and doesn't encode the name, as passed from the server, properly.
+
+  URL encoding itself is underspecified with regard to encodings beyond
+ASCII.  The relevant document, RFC 1738, explicitly doesn't give any
+information on how to encode non-ASCII characters, and the ``obvious''
+way---use the %xx values for the octets of the eight bit MIME character
+set in which the page was served---breaks when a user types a character
+outside that character set.  Best practice for web development is to
+serve all pages as UTF-8 and treat incoming form data as using that
+coding system.  (Oh, and gamble that your clients won't ever want to
+type anything outside Unicode.  But that's not so much of a gamble with
+today's client operating systems.)  We don't treat non-ASCII in this
+example, as dealing with @samp{(read-multibyte-character ...)} and
+errors therewith would make it much harder to understand.
+
+  Since CCL isn't a very rich language, we move much of the logic that
+would ordinarily be computed from operations like @code{(member ..)},
+@code{(and ...)} and @code{(or ...)} into tables, from which register
+values are read and written, and on which @code{if} statements are
+predicated.  Much more of the implementation of this coding system is
+occupied with constructing these tables---in normal Emacs Lisp---than it
+is with actual CCL code.
+
+  All the @code{defvar} statements we deal with in the next few sections
+are surrounded by a @code{(eval-and-compile ...)}, which means that the
+logic which initializes these variables executes at compile time, and if
+XEmacs loads the compiled version of the file, these variables are
+initialized as constants.
 
-  This section is not yet written.
+@menu
+* Four bits to ASCII::  Two tables used for getting hex digits from ASCII.
+* URI Encoding constants::  Useful predefined characters. 
+* Numeric to ASCII-hexadecimal conversion:: Trivial in Lisp, not so in CCL.
+* Characters to be preserved:: No transformation needed for these characters.
+* The program to decode to internal format:: .
+* The program to encode from internal format:: . 
+* The actual coding system:: .
+@end menu
+
+@node Four bits to ASCII, URI Encoding constants, , CCL Example
+@subsubsection Four bits to ASCII
+
+  The first @code{defvar} is for
+@code{url-coding-high-order-nybble-as-ascii}, a 256-entry table that
+maps from an octet's value to the ASCII encoding for the hex value of
+its most significant four bits.  That might sound complex, but it isn't;
+for decimal 65, hex value @samp{#x41}, the entry in the table is the
+ASCII encoding of `4'.  For decimal 122, ASCII `z', hex value
+@code{#x7a}, @code{(elt url-coding-high-order-nybble-as-ascii #x7a)}
+after this file is loaded gives the ASCII encoding of 7.
+
+@example
+(defvar url-coding-high-order-nybble-as-ascii
+  (let ((val (make-vector 256 0))
+       (i 0))
+    (while (< i (length val))
+      (aset val i (char-to-int (aref (format "%02X" i) 0)))
+      (setq i (1+ i)))
+    val)
+  "Table to find an ASCII version of an octet's most significant 4 bits.")
+@end example
+
+  The next table, @code{url-coding-low-order-nybble-as-ascii} is almost
+the same thing, but this time it has a map for the hex encoding of the
+low-order four bits.  So the sixty-fifth entry (offset @samp{#x41}) is
+the ASCII encoding of `1', the hundred-and-twenty-second (offset
+@samp{#x7a}) is the ASCII encoding of `A'.
+
+@example
+(defvar url-coding-low-order-nybble-as-ascii 
+  (let ((val (make-vector 256 0))
+       (i 0))
+    (while (< i (length val))
+      (aset val i (char-to-int (aref (format "%02X" i) 1)))
+      (setq i (1+ i)))
+    val)
+  "Table to find an ASCII version of an octet's least significant 4 bits.")
+@end example
+
+@node URI Encoding constants, Numeric to ASCII-hexadecimal conversion, Four bits to ASCII, CCL Example
+@subsubsection URI Encoding constants
+
+  Next, we have a couple of variables that make the CCL code more
+readable.  The first is the ASCII encoding of the percentage sign; this
+character is used as an escape code, to start the encoding of a
+non-printable character.  For historical reasons, URL encoding allows
+the space character to be encoded as a plus sign--it does make typing
+URLs like @samp{http://google.com/search?q=XEmacs+home+page} easier--and
+as such, we have to check when decoding for this value, and map it to
+the space character.  When doing this in CCL, we use the
+@code{url-coding-escaped-space-code} variable. 
+  
+@example
+(defvar url-coding-escape-character-code (char-to-int ?%)
+  "The code point for the percentage sign, in ASCII.")
+
+(defvar url-coding-escaped-space-code (char-to-int ?+)
+  "The URL-encoded value of the space character, that is, +.")
+@end example
+
+@node Numeric to ASCII-hexadecimal conversion, Characters to be preserved, URI Encoding constants, CCL Example
+@subsubsection Numeric to ASCII-hexadecimal conversion
+
+  Now, we have a couple of utility tables that wouldn't be necessary in
+a more expressive programming language than is CCL. The first is sixteen
+in length, and maps a hexadecimal number to the ASCII encoding of that
+number; so zero maps to ASCII `0', ten maps to ASCII `A.' The second
+does the reverse; that is, it maps an ASCII character to its value when
+interpreted as a hexadecimal digit. ('A' => 10, 'c' => 12, '2' => 2, as
+a few examples.)
+
+@example
+(defvar url-coding-hex-digit-table 
+  (let ((i 0)
+       (val (make-vector 16 0)))
+    (while (< i 16)
+      (aset val i (char-to-int (aref (format "%X" i) 0)))
+      (setq i (1+ i)))
+    val)
+  "A map from a hexadecimal digit's numeric value to its encoding in ASCII.")
+
+(defvar url-coding-latin-1-as-hex-table
+  (let ((val (make-vector 256 0))
+       (i 0))
+    (while (< i (length val))
+      ;; Get a hex val for this ASCII character.
+      (aset val i (string-to-int (format "%c" i) 16))
+      (setq i (1+ i)))
+    val)
+  "A map from Latin 1 code points to their values as hexadecimal digits.")
+@end example
+
+@node Characters to be preserved, The program to decode to internal format, Numeric to ASCII-hexadecimal conversion, CCL Example
+@subsubsection Characters to be preserved
+
+  And finally, the last of these tables.  URL encoding says that
+alphanumeric characters, the underscore, hyphen and the full stop
+@footnote{That's what the standards call it, though my North American
+readers will be more familiar with it as the period character.} retain
+their ASCII encoding, and don't undergo transformation.
+@code{url-coding-should-preserve-table} is an array in which the entries
+are one if the corresponding ASCII character should be left as-is, and
+zero if they should be transformed.  So the entries for all the control
+and most of the punctuation charcters are zero.  Lisp programmers will
+observe that this initialization is particularly inefficient, but
+they'll also be aware that this is a long way from an inner loop where
+every nanosecond counts.
+
+@example
+(defvar url-coding-should-preserve-table 
+  (let ((preserve 
+        (list ?- ?_ ?. ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o 
+              ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z ?A ?B ?C ?D ?E ?F ?G
+              ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y
+              ?Z ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
+       (i 0)
+       (res (make-vector 256 0)))
+    (while (< i 256)
+      (when (member (int-char i) preserve)
+       (aset res i 1))
+      (setq i (1+ i)))
+    res)
+  "A 256-entry array of flags, indicating whether or not to preserve an
+octet as its ASCII encoding.")
+@end example
+
+@node The program to decode to internal format, The program to encode from internal format, Characters to be preserved, CCL Example
+@subsubsection The program to decode to internal format
+
+  After the almost interminable tables, we get to the CCL.  The first
+CCL program, @code{ccl-decode-urlcoding} decodes from the URL coding to
+our internal format; since this version of CCL doesn't have support for
+error checking on the input, we don't do any verification on it.
+
+The buffer magnification--approximate ratio of the size of the output
+buffer to the size of the input buffer--is declared as one, because
+fractional values aren't allowed. (Since all those %20's will map to 
+` ', the length of the output text will be less than that of the input
+text.)  
+
+So, first we read an octet from the input buffer into register
+@samp{r0}, to set up the loop.  Next, we start the loop, with a
+@code{(loop ...)} statement, and we check if the value in @samp{r0} is a
+percentage sign.  (Note the comma before
+@code{url-coding-escape-character-code}; since CCL is a Lisp macro
+language, we can break out of the macro evaluation with a comman, and as
+such, ``@code{,url-coding-escape-character-code}'' will be evaluated as a
+literal `37.')  
+
+If it is a percentage sign, we read the next two octets into @samp{r2}
+and @samp{r3}, and convert them into their hexadecimal numeric values,
+using the @code{url-coding-latin-1-as-hex-table} array declared above.
+(But again, it'll be interpreted as a literal array.)  We then left
+shift the first by four bits, mask the two together, and write the
+result to the output buffer.
+
+If it isn't a percentage sign, and it is a `+' sign, we write a
+space--hexadecimal 20--to the output buffer. 
+
+If none of those things are true, we pass the octet to the output buffer
+untransformed.  (This could be a place to put error checking, in a more
+expressive language.)  We then read one more octet from the input
+buffer, and move to the next iteration of the loop. 
+
+@example
+(define-ccl-program ccl-decode-urlcoding
+  `(1  
+    ((read r0)
+     (loop
+       (if (r0 == ,url-coding-escape-character-code)
+          ((read r2 r3)
+           ;; Assign the value at offset r2 in the url-coding-hex-digit-table
+           ;; to r3.
+           (r2 = r2 ,url-coding-latin-1-as-hex-table)
+           (r3 = r3 ,url-coding-latin-1-as-hex-table)
+           (r2 <<= 4)
+           (r3 |= r2)
+           (write r3))
+        (if (r0 == ,url-coding-escaped-space-code)
+            (write #x20)
+          (write r0)))
+       (read r0)
+       (repeat))))
+  "CCL program to take URI-encoded ASCII text and transform it to our
+internal encoding. ")
+@end example
+
+@node The program to encode from internal format, The actual coding system, The program to decode to internal format, CCL Example
+@subsubsection The program to encode from internal format
+
+  Next, we see the CCL program to encode ASCII text as URL coded text.
+Here, the buffer magnification is specified as three, to account for ` '
+mapping to %20, etc.  As before, we read an octet from the input into
+@samp{r0}, and move into the body of the loop.  Next, we check if we
+should preserve the value of this octet, by reading from offset
+@samp{r0} in the @code{url-coding-should-preserve-table} into @samp{r1}.
+Then we have an @samp{if} statement predicated on the value in
+@samp{r1}; for the true branch, we write the input octet directly.  For
+the false branch, we write a percentage sign, the ASCII encoding of the
+high four bits in hex, and then the ASCII encoding of the low four bits
+in hex. 
+
+We then read an octet from the input into @samp{r0}, and repeat the loop.
+
+@example
+(define-ccl-program ccl-encode-urlcoding
+  `(3
+    ((read r0)
+     (loop
+       (r1 = r0 ,url-coding-should-preserve-table)
+       ;; If we should preserve the value, just write the octet directly.
+       (if r1
+          (write r0)
+        ;; else, write a percentage sign, and the hex value of the octet, in
+        ;; an ASCII-friendly format.
+        ((write ,url-coding-escape-character-code)
+         (write r0 ,url-coding-high-order-nybble-as-ascii)
+         (write r0 ,url-coding-low-order-nybble-as-ascii)))
+       (read r0)
+       (repeat))))
+  "CCL program to encode octets (almost) according to RFC 1738")
+@end example
+
+@node The actual coding system, , The program to encode from internal format, CCL Example
+@subsubsection The actual coding system
+
+To actually create the coding system, we call
+@samp{make-coding-system}.  The first argument is the symbol that is to
+be the name of the coding system, in our case @samp{url-coding}. The
+second specifies that the coding system is to be of type
+@samp{ccl}---there are several other coding system types available,
+including, see the documentation for @samp{make-coding-system} for the
+full list. Then there's a documentation string describing the wherefore
+and caveats of the coding system, and the final argument is a property
+list giving information about the CCL programs and the coding system's
+mnemonic. 
+
+@example
+(make-coding-system 
+ 'url-coding 'ccl 
+ "The coding used by application/x-www-form-urlencoded HTTP applications.
+This coding form doesn't specify anything about non-ASCII characters, so
+make sure you've transformed to a seven-bit coding system first."
+ '(decode ccl-decode-urlcoding
+   encode ccl-encode-urlcoding
+   mnemonic "URLenc"))
+@end example
+
+If you're lucky, the @samp{url-coding} coding system describe here
+should be available in the XEmacs package system. Otherwise, downloading
+it from @samp{http://www.parhasard.net/url-coding.el} should work for
+the foreseeable future. 
 
 @node Category Tables, , CCL, MULE
 @section Category Tables
index fd8c292..4f82114 100644 (file)
@@ -516,6 +516,19 @@ characters that stand for them.
 @item \S@var{code}
 @cindex @samp{\S} in regexp
 matches any character whose syntax is not @var{code}.
+
+@item \c@var{category}
+@cindex @samp{\c} in regexp
+matches any character in @var{category}. Only available under Mule,
+categories, and category tables, are further described in @ref{Category
+Tables}. They are a mechanism for constructing classes of characters
+that can be local to a buffer, and that do not require complicated []
+expressions every time they are referenced.
+
+@item \C@var{category}
+@cindex @samp{\C} in regexp
+matches any character outside @var{category}. @xref{Category Tables},
+again, and note that this is only available under Mule. 
 @end table
 
   The following regular expression constructs match the empty string---that is,
index dcdfabf..f02e55e 100644 (file)
@@ -1,3 +1,7 @@
+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
index e729b8a..1c44af6 100644 (file)
@@ -1,3 +1,7 @@
+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
index a59b580..e69420d 100644 (file)
@@ -1,3 +1,95 @@
+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
index 9b39b48..04f31cb 100644 (file)
@@ -48,6 +48,7 @@ Boston, MA 02111-1307, USA.  */
 #include "systime.h"
 #include "sysproc.h"
 #include "sysfile.h" /* Always include after sysproc.h */
+#include "sysdir.h"
 #include "syssignal.h" /* Always include before systty.h */
 #include "systty.h"
 
@@ -169,6 +170,8 @@ Arguments are
 The program's input comes from file INFILE (nil means `/dev/null').
 Insert output in BUFFER before point; t means current buffer;
  nil for BUFFER means discard it; 0 means discard and don't wait.
+If BUFFER is a string, then find or create a buffer with that name,
+then insert the output in that buffer, before point.
 BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
 REAL-BUFFER says what to do with standard output, as above,
 while STDERR-FILE says what to do with standard error in the child.
@@ -288,7 +291,7 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
            || ZEROP (buffer)))
        {
          Lisp_Object spec_buffer = buffer;
-         buffer = Fget_buffer (buffer);
+         buffer = Fget_buffer_create (buffer);
          /* Mention the buffer name for a better error message.  */
          if (NILP (buffer))
            CHECK_BUFFER (spec_buffer);
index 53fa5fc..bf58ee4 100644 (file)
@@ -457,15 +457,17 @@ once per character).
 When Mule support exists, the types of ranges that can be assigned
 values are
 
--- all characters
+-- all characters (represented by t)
 -- an entire charset
--- a single row in a two-octet charset
+-- a single row in a two-octet charset (represented by a vector of two
+   elements: a two-octet charset and a row number; the row must be an
+   integer, not a character)
 -- a single character
 
 When Mule support is not present, the types of ranges that can be
 assigned values are
 
--- all characters
+-- all characters (represented by t)
 -- a single character
 
 To create a char table, use `make-char-table'.
@@ -853,8 +855,11 @@ Find value for CHARACTER in CHAR-TABLE.
 }
 
 DEFUN ("get-range-char-table", Fget_range_char_table, 2, 3, 0, /*
-Find value for a range in CHAR-TABLE.
+Find value for RANGE in CHAR-TABLE.
 If there is more than one value, return MULTI (defaults to nil).
+
+Valid values for RANGE are single characters, charsets, a row in a
+two-octet charset, and all characters.  See `put-char-table'.
 */
        (range, char_table, multi))
 {
@@ -1142,8 +1147,9 @@ one of the following:
 
 -- t (all characters are affected)
 -- A charset (only allowed when Mule support is present)
--- A vector of two elements: a two-octet charset and a row number
-   (only allowed when Mule support is present)
+-- A vector of two elements: a two-octet charset and a row number; the row
+   must be an integer, not a character (only allowed when Mule support is
+   present)
 -- A single character
 
 VALUE must be a value appropriate for the type of CHAR-TABLE.
@@ -1437,12 +1443,18 @@ slow_map_char_table_fun (struct chartab_range *range,
 }
 
 DEFUN ("map-char-table", Fmap_char_table, 2, 3, 0, /*
-Map FUNCTION over entries in CHAR-TABLE, calling it with two args,
-each key and value in the table.
+Map FUNCTION over CHAR-TABLE until it returns non-nil; return that value.
+FUNCTION is called with two arguments, each key and entry in the table.
 
-RANGE specifies a subrange to map over and is in the same format as
-the RANGE argument to `put-range-table'.  If omitted or t, it defaults to
+RANGE specifies a subrange to map over.  If omitted or t, it defaults to
 the entire table.
+
+Both RANGE and the keys passed to FUNCTION are in the same format as the
+RANGE argument to `put-char-table'.  N.B. This function does NOT map over
+all characters in RANGE, but over the subranges that have been assigned to.
+Thus this function is most suitable for searching a char-table, or for
+populating one char-table based on the contents of another.  The current
+implementation does not coalesce ranges all of whose values are the same.
 */
        (function, char_table, range))
 {
index f32e890..5b8cefa 100644 (file)
@@ -205,6 +205,7 @@ void *alloca ();
 #undef THIS_IS_X11R6
 
 #undef HAVE_XCONVERTCASE
+#undef HAVE_XTREGISTERDRAWABLE
 
 #undef HAVE_BALLOON_HELP
 
@@ -422,6 +423,15 @@ void *alloca ();
 /* Compile in support for DBM databases?  May require libgdbm or libdbm. */
 #undef HAVE_DBM
 
+/* Define to 1 if the system has the type `u_int8_t'. */
+#undef HAVE_U_INT8_T
+/* Define to 1 if the system has the type `u_int16_t'. */
+#undef HAVE_U_INT16_T
+/* Define to 1 if the system has the type `u_int32_t'. */
+#undef HAVE_U_INT32_T
+/* Define to 1 if the system has the type `u_int64_t'. */
+#undef HAVE_U_INT64_T
+
 /* Compile in support for Berkeley DB style databases?  May require libdb. */
 #undef HAVE_BERKELEY_DB
 /* Full #include file path for Berkeley DB's db.h */
index ba05621..cf9dd84 100644 (file)
@@ -82,6 +82,8 @@ struct tty_console
                                           character info */
     unsigned int flow_control :1;      /* Nonzero means use ^S/^Q as
                                           cretinous flow control.  */
+    unsigned int auto_margins :1;      /* Nonzero means terminal wraps when
+                                          writing to the last column */
     int standout_width;                        /* # of spaces printed when
                                           change to standout mode */
     int underline_width;               /* # of spaces printed when
@@ -175,6 +177,9 @@ struct tty_console
     const char *keypad_off;            /* rmkx, ke */
 
     const char *orig_pair;             /* op, op */
+
+    const char *disable_auto_margins;  /* rmam, RA */
+    const char *enable_auto_margins;   /* smam, SA */
   } sd;
 
   /* costs of various operations */
index 2e07885..33a8615 100644 (file)
@@ -46,13 +46,21 @@ Boston, MA 02111-1307, USA.  */
 #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' */
index f6a7d10..1fb89da 100644 (file)
@@ -91,7 +91,7 @@ blocktype.o: $(LISP_H) blocktype.h
 buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
 bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h opaque.h syntax.h
 callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h events.h insdel.h mule-charset.h redisplay.h scrollbar.h systime.h window.h winslots.h
-callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h
+callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h ndir.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h
 casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
 casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h opaque.h
 chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syntax.h
index 8d3485b..7ca2548 100644 (file)
@@ -3070,7 +3070,7 @@ shut_down_emacs (int sig, Lisp_Object stuff, int no_auto_save)
 #else
         "Please report this bug by invoking M-x report-emacs-bug,\n"
         "or by selecting `Send Bug Report' from the Help menu.  If necessary, send\n"
-        "ordinary email to `crashes@xemacs.org'.  *MAKE SURE* to include the XEmacs\n"
+        "ordinary email to `xemacs-beta@xemacs.org'.  *MAKE SURE* to include the XEmacs\n"
         "configuration from M-x describe-installation, or equivalently the file\n"
         "Installation in the top of the build tree.\n"
 #endif
index d33e8d0..83fe167 100644 (file)
@@ -2999,7 +2999,7 @@ complex_vars_of_glyphs_gtk (void)
 
 /* shared data for the image read/parse logic */
 static short hexTable[256];            /* conversion value */
-static int initialized = FALSE;        /* easier to fill in at run time */
+static int hexTable_initialized = FALSE;       /* easier to fill in at run time */
 
 /*
  *     Table index for the hex values. Initialized once, first time.
@@ -3032,7 +3032,7 @@ static void initHexTable()
     hexTable['}'] = -1;        hexTable['\n'] = -1;
     hexTable['\t'] = -1;
        
-    initialized = TRUE;
+    hexTable_initialized = TRUE;
 }
 
 /*
@@ -3089,7 +3089,7 @@ int read_bitmap_data (fstream, width, height, datap, x_hot, y_hot)
 #define Xmalloc(size) malloc(size)
 
     /* first time initialization */
-    if (initialized == FALSE) initHexTable();
+    if (hexTable_initialized == FALSE) initHexTable();
 
     /* error cleanup and return macro  */
 #define        RETURN(code) { if (data) free (data); return code; }
index 947d64b..1091ef3 100644 (file)
@@ -1303,6 +1303,13 @@ ccl_driver (struct ccl_program *ccl,
                    reg[RRR] = i;
                    reg[rrr] = (*src++ & 0x7F);
                  }
+               else if (LEADING_BYTE_CONTROL_1 == i)
+                 {
+                   if (src >= src_end)
+                     goto ccl_read_multibyte_character_suspend;
+                   reg[RRR] = i;
+                   reg[rrr] = (*src++ - 0xA0);
+                 }
                else if (i <= MAX_LEADING_BYTE_OFFICIAL_2)
                  {
                    if ((src + 1) >= src_end)
@@ -1350,7 +1357,7 @@ ccl_driver (struct ccl_program *ccl,
 
            case CCL_WriteMultibyteChar2:
              i = reg[RRR]; /* charset */
-             if (i == LEADING_BYTE_ASCII)
+             if (i == LEADING_BYTE_ASCII || i == LEADING_BYTE_CONTROL_1)
                i = reg[rrr] & 0xFF;
              else if (XCHARSET_DIMENSION (CHARSET_BY_LEADING_BYTE (i)) == 1)
                i = (((i - FIELD2_TO_OFFICIAL_LEADING_BYTE) << 7)
index 424246f..05b5046 100644 (file)
@@ -1293,26 +1293,38 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream)
       Bufbyte chunkbuf[512];
       Bytecount chunklen;
 
-      while (1)
+      do
        {
          Lstream_data_count writeret;
 
          chunklen = Lstream_read (lstream, chunkbuf, 512);
-         if (chunklen <= 0)
-           break; /* perhaps should ABORT() if < 0?
-                     This should never happen. */
          old_sigpipe =
            (SIGTYPE (*) (int)) signal (SIGPIPE, send_process_trap);
-         /* Lstream_write() will never successfully write less than
-            the amount sent in.  In the worst case, it just buffers
-            the unwritten data. */
-         writeret = Lstream_write (XLSTREAM (DATA_OUTSTREAM(p)), chunkbuf,
-                                   chunklen);
-         signal (SIGPIPE, old_sigpipe);
-         if (writeret < 0)
-           /* This is a real error.  Blocking errors are handled
-              specially inside of the filedesc stream. */
-           report_file_error ("writing to process", list1 (proc));
+         if (chunklen > 0)
+           {
+             int save_errno;
+
+             /* Lstream_write() will never successfully write less than
+                the amount sent in.  In the worst case, it just buffers
+                the unwritten data. */
+             writeret = Lstream_write (XLSTREAM (DATA_OUTSTREAM(p)), chunkbuf,
+                                       chunklen);
+             save_errno = errno;
+             signal (SIGPIPE, old_sigpipe);
+             errno = save_errno;
+             if (writeret < 0)
+               /* This is a real error.  Blocking errors are handled
+                  specially inside of the filedesc stream. */
+               report_file_error ("writing to process", list1 (proc));
+           }
+         else
+           {
+             /* Need to make sure that everything up to and including the
+                last chunk is flushed, even when the pipe is currently
+                blocked. */
+             Lstream_flush (XLSTREAM (DATA_OUTSTREAM(p)));
+             signal (SIGPIPE, old_sigpipe);
+           }
          while (Lstream_was_blocked_p (XLSTREAM (p->pipe_outstream)))
            {
              /* Buffer is full.  Wait, accepting input;
@@ -1327,7 +1339,9 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream)
              Lstream_flush (XLSTREAM (p->pipe_outstream));
              signal (SIGPIPE, old_sigpipe);
            }
+         /* Perhaps should abort() if < 0?  This should never happen. */
        }
+      while (chunklen > 0);
     }
   else
     { /* We got here from a longjmp() from the SIGPIPE handler */
@@ -1670,13 +1684,13 @@ unix_open_network_stream (Lisp_Object name, Lisp_Object host, Lisp_Object servic
     volatile int xerrno = 0;
     volatile int failed_connect = 0;
     char *ext_host;
+    char portbuf[sizeof(long)*3 + 2];
     /*
      * Caution: service can either be a string or int.
      * Convert to a C string for later use by getaddrinfo.
      */
     if (INTP (service))
       {
-       char portbuf[128];
        snprintf (portbuf, sizeof (portbuf), "%ld", (long) XINT (service));
        portstring = portbuf;
        port = htons ((unsigned short) XINT (service));
index fe79a12..1970369 100644 (file)
@@ -864,6 +864,9 @@ set_tty_modes (struct console *c)
   OUTPUT1_IF (c, TTY_SD (c).init_motion);
   OUTPUT1_IF (c, TTY_SD (c).cursor_visible);
   OUTPUT1_IF (c, TTY_SD (c).keypad_on);
+
+  if (TTY_FLAGS (c).auto_margins)
+    OUTPUT1_IF (c, TTY_SD (c).disable_auto_margins);
 }
 
 /*****************************************************************************
@@ -882,6 +885,9 @@ reset_tty_modes (struct console *c)
   OUTPUT1_IF (c, TTY_SD (c).cursor_normal);
   OUTPUT1_IF (c, TTY_SD (c).end_motion);
 
+  if (TTY_FLAGS (c).auto_margins)
+    OUTPUT1_IF (c, TTY_SD (c).enable_auto_margins);
+
   {
     Lisp_Object frm = CONSOLE_SELECTED_FRAME (c);
 
@@ -1185,12 +1191,14 @@ init_tty_for_redisplay (struct device *d, char *terminal_type)
       TTY_SD (c).audio_bell = "\07";
     }
 
-  TTY_SD (c).cursor_visible = tgetstr ("ve", &bufptr);
-  TTY_SD (c).cursor_normal = tgetstr ("vs", &bufptr);
+  TTY_SD (c).cursor_visible = tgetstr ("vs", &bufptr);
+  TTY_SD (c).cursor_normal = tgetstr ("ve", &bufptr);
   TTY_SD (c).init_motion = tgetstr ("ti", &bufptr);
   TTY_SD (c).end_motion = tgetstr ("te", &bufptr);
   TTY_SD (c).keypad_on = tgetstr ("ks", &bufptr);
   TTY_SD (c).keypad_off = tgetstr ("ke", &bufptr);
+  TTY_SD (c).disable_auto_margins = tgetstr ("RA", &bufptr);
+  TTY_SD (c).enable_auto_margins = tgetstr ("SA", &bufptr);
 
 
   /*
@@ -1203,6 +1211,7 @@ init_tty_for_redisplay (struct device *d, char *terminal_type)
   TTY_FLAGS (c).memory_below_frame = tgetflag ("db");
   TTY_FLAGS (c).standout_width = tgetnum ("sg");
   TTY_FLAGS (c).underline_width = tgetnum ("ug");
+  TTY_FLAGS (c).auto_margins = tgetflag ("am");
 
   if (TTY_FLAGS (c).standout_width == -1)
     TTY_FLAGS (c).standout_width = 0;
index 21332fd..8a2cff3 100644 (file)
@@ -509,14 +509,41 @@ x_reply_selection_request (XSelectionRequestEvent *event, int format,
     }
   else
     {
+#ifndef HAVE_XTREGISTERDRAWABLE
+      invalid_operation("Copying that much data requires X11R6.", Qunbound);
+#else
       /* Send an INCR selection. */
       int prop_id;
+      Widget widget = FRAME_X_TEXT_WIDGET (XFRAME(DEVICE_SELECTED_FRAME(d)));
 
       if (x_window_to_frame (d, window)) /* #### debug */
        error ("attempt to transfer an INCR to ourself!");
 #if 0
       stderr_out ("\nINCR %d\n", bytes_remaining);
 #endif
+      /* Tell Xt not to drop PropertyNotify events that arrive for the
+        target window, rather, pass them to us. This would be a hack, but
+        the Xt selection routines are broken for our purposes--we can't
+        pass them callbacks from Lisp, for example. Let's call it a
+        workaround.
+        The call to wait_for_property_change means we can break out of that
+        function, switch to another frame on the same display (which will
+        be another Xt widget), select a huge amount of text, and have the
+        same (foreign) app ask for another incremental selection
+        transfer. Programming like X11 made sense, would mean that, in that
+        case, XtRegisterDrawable is called twice with different widgets.
+        Since the results of calling XtRegisterDrawable when the drawable
+        is already registered with another widget are undefined, we want to
+        avoid that--so, only call it when XtWindowToWidget returns NULL,
+        which it will only do with a valid Window if it's not already
+        registered. */
+      if (NULL == XtWindowToWidget(display, window))
+      {
+       XtRegisterDrawable(display, (Drawable)window, widget);
+      }
+      
       prop_id = expect_property_change (display, window, reply.property,
                                        PropertyDelete);
 
@@ -560,10 +587,14 @@ x_reply_selection_request (XSelectionRequestEvent *event, int format,
       stderr_out ("  INCR done\n");
 #endif
       if (! waiting_for_other_props_on_window (display, window))
-       XSelectInput (display, window, 0L);
+      {
+        XSelectInput (display, window, 0L);
+        XtUnregisterDrawable(display, (Drawable)window);
+      }
 
       XChangeProperty (display, window, reply.property, type, format,
                       PropModeReplace, data, 0);
+#endif /* HAVE_XTREGISTERDRAWABLE */
     }
 }
 
index 679e515..c9e28c0 100644 (file)
@@ -263,11 +263,23 @@ dll_handle
 dll_open (const char *fname)
 {
   NSObjectFileImage file;
-  NSObjectFileImageReturnCode ret = 
-    NSCreateObjectFileImageFromFile(fname, &file);
+  NSObjectFileImageReturnCode ret;
+
+  /*
+   * MacOS X dll support is for bundles, not the current executable, so return
+   * NULL is this case.  However, dll_function() uses a special hack where a
+   * NULL handle can be used to find executable symbols.  This satisfies the
+   * needs of ui-gtk.c but is not a general solution.
+   */
+  if (fname == NULL)
+    return NULL;
+
+  ret = NSCreateObjectFileImageFromFile(fname, &file);
+
   if (ret != NSObjectFileImageSuccess) {
     return NULL;
   }
+
   return (dll_handle)NSLinkModule(file, fname, 
                                  NSLINKMODULE_OPTION_BINDNOW |
                                  NSLINKMODULE_OPTION_PRIVATE |
index 9fdc974..6ac9844 100644 (file)
@@ -475,7 +475,7 @@ typedef struct {
 # 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
index dbaa581..50fc29b 100644 (file)
@@ -1,3 +1,7 @@
+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
index 6833ad4..db4a72e 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=
 emacs_major_version=21
 emacs_minor_version=4
-emacs_beta_version=17
-xemacs_codename="Jumbo Shrimp"
+emacs_beta_version=18
+xemacs_codename="Social Property"
 emacs_kit_version=
 infodock_major_version=4
 infodock_minor_version=0